From aeb0abf80a9d4aed54a4400108a675449e644838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Tue, 17 Oct 2023 14:18:45 +0300 Subject: [PATCH 001/223] params: begin v1.13.5 release cycle --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index 0736259b59..bcab461a43 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 4 // Patch version component of the current release - VersionMeta = "stable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 5 // Patch version component of the current release + VersionMeta = "unstable" // Version metadata to append to the version string ) // Version holds the textual version string. From 1b1611b8d003007eed45d36f3f30c0596ffa16a4 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Tue, 17 Oct 2023 20:09:25 +0800 Subject: [PATCH 002/223] core, trie, eth: refactor stacktrie constructor (#28350) This change enhances the stacktrie constructor by introducing an option struct. It also simplifies the `Hash` and `Commit` operations, getting rid of the special handling round root node. --- core/state/snapshot/conversion.go | 16 +-- core/state/statedb.go | 4 +- eth/protocols/snap/sync.go | 51 ++++++---- tests/fuzzers/stacktrie/trie_fuzzer.go | 11 +- trie/stacktrie.go | 135 ++++++++++++------------- trie/trie_test.go | 20 ++-- 6 files changed, 119 insertions(+), 118 deletions(-) diff --git a/core/state/snapshot/conversion.go b/core/state/snapshot/conversion.go index 321bfbc6a2..681be7ebc0 100644 --- a/core/state/snapshot/conversion.go +++ b/core/state/snapshot/conversion.go @@ -362,21 +362,15 @@ func generateTrieRoot(db ethdb.KeyValueWriter, scheme string, it Iterator, accou } func stackTrieGenerate(db ethdb.KeyValueWriter, scheme string, owner common.Hash, in chan trieKV, out chan common.Hash) { - var nodeWriter trie.NodeWriteFunc + options := trie.NewStackTrieOptions() if db != nil { - nodeWriter = func(path []byte, hash common.Hash, blob []byte) { + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(db, owner, path, hash, blob, scheme) - } + }) } - t := trie.NewStackTrie(nodeWriter) + t := trie.NewStackTrie(options) for leaf := range in { t.Update(leaf.key[:], leaf.value) } - var root common.Hash - if db == nil { - root = t.Hash() - } else { - root, _ = t.Commit() - } - out <- root + out <- t.Commit() } diff --git a/core/state/statedb.go b/core/state/statedb.go index d28cd29b30..195e463c28 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -964,10 +964,12 @@ func (s *StateDB) fastDeleteStorage(addrHash common.Hash, root common.Hash) (boo nodes = trienode.NewNodeSet(addrHash) slots = make(map[common.Hash][]byte) ) - stack := trie.NewStackTrie(func(path []byte, hash common.Hash, blob []byte) { + options := trie.NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { nodes.AddNode(path, trienode.NewDeleted()) size += common.StorageSize(len(path)) }) + stack := trie.NewStackTrie(options) for iter.Next() { if size > storageDeleteLimit { return true, size, nil, nil, nil diff --git a/eth/protocols/snap/sync.go b/eth/protocols/snap/sync.go index 22638d0473..041bf32b99 100644 --- a/eth/protocols/snap/sync.go +++ b/eth/protocols/snap/sync.go @@ -738,9 +738,11 @@ func (s *Syncer) loadSyncStatus() { s.accountBytes += common.StorageSize(len(key) + len(value)) }, } - task.genTrie = trie.NewStackTrie(func(path []byte, hash common.Hash, val []byte) { - rawdb.WriteTrieNode(task.genBatch, common.Hash{}, path, hash, val, s.scheme) + options := trie.NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { + rawdb.WriteTrieNode(task.genBatch, common.Hash{}, path, hash, blob, s.scheme) }) + task.genTrie = trie.NewStackTrie(options) for accountHash, subtasks := range task.SubTasks { for _, subtask := range subtasks { subtask := subtask // closure for subtask.genBatch in the stacktrie writer callback @@ -752,9 +754,11 @@ func (s *Syncer) loadSyncStatus() { }, } owner := accountHash // local assignment for stacktrie writer closure - subtask.genTrie = trie.NewStackTrie(func(path []byte, hash common.Hash, val []byte) { - rawdb.WriteTrieNode(subtask.genBatch, owner, path, hash, val, s.scheme) + options := trie.NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { + rawdb.WriteTrieNode(subtask.genBatch, owner, path, hash, blob, s.scheme) }) + subtask.genTrie = trie.NewStackTrie(options) } } } @@ -806,14 +810,16 @@ func (s *Syncer) loadSyncStatus() { s.accountBytes += common.StorageSize(len(key) + len(value)) }, } + options := trie.NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { + rawdb.WriteTrieNode(batch, common.Hash{}, path, hash, blob, s.scheme) + }) s.tasks = append(s.tasks, &accountTask{ Next: next, Last: last, SubTasks: make(map[common.Hash][]*storageTask), genBatch: batch, - genTrie: trie.NewStackTrie(func(path []byte, hash common.Hash, val []byte) { - rawdb.WriteTrieNode(batch, common.Hash{}, path, hash, val, s.scheme) - }), + genTrie: trie.NewStackTrie(options), }) log.Debug("Created account sync task", "from", next, "last", last) next = common.BigToHash(new(big.Int).Add(last.Big(), common.Big1)) @@ -2006,14 +2012,16 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { }, } owner := account // local assignment for stacktrie writer closure + options := trie.NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { + rawdb.WriteTrieNode(batch, owner, path, hash, blob, s.scheme) + }) tasks = append(tasks, &storageTask{ Next: common.Hash{}, Last: r.End(), root: acc.Root, genBatch: batch, - genTrie: trie.NewStackTrie(func(path []byte, hash common.Hash, val []byte) { - rawdb.WriteTrieNode(batch, owner, path, hash, val, s.scheme) - }), + genTrie: trie.NewStackTrie(options), }) for r.Next() { batch := ethdb.HookedBatch{ @@ -2022,14 +2030,16 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { s.storageBytes += common.StorageSize(len(key) + len(value)) }, } + options := trie.NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { + rawdb.WriteTrieNode(batch, owner, path, hash, blob, s.scheme) + }) tasks = append(tasks, &storageTask{ Next: r.Start(), Last: r.End(), root: acc.Root, genBatch: batch, - genTrie: trie.NewStackTrie(func(path []byte, hash common.Hash, val []byte) { - rawdb.WriteTrieNode(batch, owner, path, hash, val, s.scheme) - }), + genTrie: trie.NewStackTrie(options), }) } for _, task := range tasks { @@ -2075,9 +2085,11 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { if i < len(res.hashes)-1 || res.subTask == nil { // no need to make local reassignment of account: this closure does not outlive the loop - tr := trie.NewStackTrie(func(path []byte, hash common.Hash, val []byte) { - rawdb.WriteTrieNode(batch, account, path, hash, val, s.scheme) + options := trie.NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { + rawdb.WriteTrieNode(batch, account, path, hash, blob, s.scheme) }) + tr := trie.NewStackTrie(options) for j := 0; j < len(res.hashes[i]); j++ { tr.Update(res.hashes[i][j][:], res.slots[i][j]) } @@ -2099,9 +2111,8 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { // Large contracts could have generated new trie nodes, flush them to disk if res.subTask != nil { if res.subTask.done { - if root, err := res.subTask.genTrie.Commit(); err != nil { - log.Error("Failed to commit stack slots", "err", err) - } else if root == res.subTask.root { + root := res.subTask.genTrie.Commit() + if root == res.subTask.root { // If the chunk's root is an overflown but full delivery, clear the heal request for i, account := range res.mainTask.res.hashes { if account == res.accounts[len(res.accounts)-1] { @@ -2317,9 +2328,7 @@ func (s *Syncer) forwardAccountTask(task *accountTask) { // flush after finalizing task.done. It's fine even if we crash and lose this // write as it will only cause more data to be downloaded during heal. if task.done { - if _, err := task.genTrie.Commit(); err != nil { - log.Error("Failed to commit stack account", "err", err) - } + task.genTrie.Commit() } if task.genBatch.ValueSize() > ethdb.IdealBatchSize || task.done { if err := task.genBatch.Write(); err != nil { diff --git a/tests/fuzzers/stacktrie/trie_fuzzer.go b/tests/fuzzers/stacktrie/trie_fuzzer.go index 20b8ca24b3..b818f2ec3c 100644 --- a/tests/fuzzers/stacktrie/trie_fuzzer.go +++ b/tests/fuzzers/stacktrie/trie_fuzzer.go @@ -140,9 +140,11 @@ func (f *fuzzer) fuzz() int { trieA = trie.NewEmpty(dbA) spongeB = &spongeDb{sponge: sha3.NewLegacyKeccak256()} dbB = trie.NewDatabase(rawdb.NewDatabase(spongeB), nil) - trieB = trie.NewStackTrie(func(path []byte, hash common.Hash, blob []byte) { + + options = trie.NewStackTrieOptions().WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(spongeB, common.Hash{}, path, hash, blob, dbB.Scheme()) }) + trieB = trie.NewStackTrie(options) vals []kv useful bool maxElements = 10000 @@ -204,19 +206,20 @@ func (f *fuzzer) fuzz() int { // Ensure all the nodes are persisted correctly var ( - nodeset = make(map[string][]byte) // path -> blob - trieC = trie.NewStackTrie(func(path []byte, hash common.Hash, blob []byte) { + nodeset = make(map[string][]byte) // path -> blob + optionsC = trie.NewStackTrieOptions().WithWriter(func(path []byte, hash common.Hash, blob []byte) { if crypto.Keccak256Hash(blob) != hash { panic("invalid node blob") } nodeset[string(path)] = common.CopyBytes(blob) }) + trieC = trie.NewStackTrie(optionsC) checked int ) for _, kv := range vals { trieC.MustUpdate(kv.k, kv.v) } - rootC, _ := trieC.Commit() + rootC := trieC.Commit() if rootA != rootC { panic(fmt.Sprintf("roots differ: (trie) %x != %x (stacktrie)", rootA, rootC)) } diff --git a/trie/stacktrie.go b/trie/stacktrie.go index 35208e1cb3..09c3402663 100644 --- a/trie/stacktrie.go +++ b/trie/stacktrie.go @@ -17,7 +17,6 @@ package trie import ( - "errors" "sync" "github.com/ethereum/go-ethereum/common" @@ -26,28 +25,40 @@ import ( ) var ( - ErrCommitDisabled = errors.New("no database for committing") - stPool = sync.Pool{New: func() any { return new(stNode) }} - _ = types.TrieHasher((*StackTrie)(nil)) + stPool = sync.Pool{New: func() any { return new(stNode) }} + _ = types.TrieHasher((*StackTrie)(nil)) ) -// NodeWriteFunc is used to provide all information of a dirty node for committing -// so that callers can flush nodes into database with desired scheme. -type NodeWriteFunc = func(path []byte, hash common.Hash, blob []byte) +// StackTrieOptions contains the configured options for manipulating the stackTrie. +type StackTrieOptions struct { + Writer func(path []byte, hash common.Hash, blob []byte) // The function to commit the dirty nodes +} + +// NewStackTrieOptions initializes an empty options for stackTrie. +func NewStackTrieOptions() *StackTrieOptions { return &StackTrieOptions{} } + +// WithWriter configures trie node writer within the options. +func (o *StackTrieOptions) WithWriter(writer func(path []byte, hash common.Hash, blob []byte)) *StackTrieOptions { + o.Writer = writer + return o +} // StackTrie is a trie implementation that expects keys to be inserted // in order. Once it determines that a subtree will no longer be inserted // into, it will hash it and free up the memory it uses. type StackTrie struct { - writeFn NodeWriteFunc // function for committing nodes, can be nil + options *StackTrieOptions root *stNode h *hasher } // NewStackTrie allocates and initializes an empty trie. -func NewStackTrie(writeFn NodeWriteFunc) *StackTrie { +func NewStackTrie(options *StackTrieOptions) *StackTrie { + if options == nil { + options = NewStackTrieOptions() + } return &StackTrie{ - writeFn: writeFn, + options: options, root: stPool.Get().(*stNode), h: newHasher(false), } @@ -59,7 +70,9 @@ func (t *StackTrie) Update(key, value []byte) error { if len(value) == 0 { panic("deletion not supported") } - t.insert(t.root, k[:len(k)-1], value, nil) + k = k[:len(k)-1] // chop the termination flag + + t.insert(t.root, k, value, nil) return nil } @@ -71,8 +84,9 @@ func (t *StackTrie) MustUpdate(key, value []byte) { } } +// Reset resets the stack trie object to empty state. func (t *StackTrie) Reset() { - t.writeFn = nil + t.options = NewStackTrieOptions() t.root = stPool.Get().(*stNode) } @@ -138,7 +152,7 @@ func (n *stNode) getDiffIndex(key []byte) int { // Helper function to that inserts a (key, value) pair into // the trie. -func (t *StackTrie) insert(st *stNode, key, value []byte, prefix []byte) { +func (t *StackTrie) insert(st *stNode, key, value []byte, path []byte) { switch st.typ { case branchNode: /* Branch */ idx := int(key[0]) @@ -147,7 +161,7 @@ func (t *StackTrie) insert(st *stNode, key, value []byte, prefix []byte) { for i := idx - 1; i >= 0; i-- { if st.children[i] != nil { if st.children[i].typ != hashedNode { - t.hash(st.children[i], append(prefix, byte(i))) + t.hash(st.children[i], append(path, byte(i))) } break } @@ -157,7 +171,7 @@ func (t *StackTrie) insert(st *stNode, key, value []byte, prefix []byte) { if st.children[idx] == nil { st.children[idx] = newLeaf(key[1:], value) } else { - t.insert(st.children[idx], key[1:], value, append(prefix, key[0])) + t.insert(st.children[idx], key[1:], value, append(path, key[0])) } case extNode: /* Ext */ @@ -172,7 +186,7 @@ func (t *StackTrie) insert(st *stNode, key, value []byte, prefix []byte) { if diffidx == len(st.key) { // Ext key and key segment are identical, recurse into // the child node. - t.insert(st.children[0], key[diffidx:], value, append(prefix, key[:diffidx]...)) + t.insert(st.children[0], key[diffidx:], value, append(path, key[:diffidx]...)) return } // Save the original part. Depending if the break is @@ -185,14 +199,14 @@ func (t *StackTrie) insert(st *stNode, key, value []byte, prefix []byte) { // extension. The path prefix of the newly-inserted // extension should also contain the different byte. n = newExt(st.key[diffidx+1:], st.children[0]) - t.hash(n, append(prefix, st.key[:diffidx+1]...)) + t.hash(n, append(path, st.key[:diffidx+1]...)) } else { // Break on the last byte, no need to insert // an extension node: reuse the current node. // The path prefix of the original part should // still be same. n = st.children[0] - t.hash(n, append(prefix, st.key...)) + t.hash(n, append(path, st.key...)) } var p *stNode if diffidx == 0 { @@ -257,7 +271,7 @@ func (t *StackTrie) insert(st *stNode, key, value []byte, prefix []byte) { // is hashed directly in order to free up some memory. origIdx := st.key[diffidx] p.children[origIdx] = newLeaf(st.key[diffidx+1:], st.val) - t.hash(p.children[origIdx], append(prefix, st.key[:diffidx+1]...)) + t.hash(p.children[origIdx], append(path, st.key[:diffidx+1]...)) newIdx := key[diffidx] p.children[newIdx] = newLeaf(key[diffidx+1:], value) @@ -292,8 +306,7 @@ func (t *StackTrie) insert(st *stNode, key, value []byte, prefix []byte) { // // This method also sets 'st.type' to hashedNode, and clears 'st.key'. func (t *StackTrie) hash(st *stNode, path []byte) { - // The switch below sets this to the RLP-encoding of this node. - var encodedNode []byte + var blob []byte // RLP-encoded node blob switch st.typ { case hashedNode: @@ -323,11 +336,13 @@ func (t *StackTrie) hash(st *stNode, path []byte) { stPool.Put(child.reset()) // Release child back to pool. } nodes.encode(t.h.encbuf) - encodedNode = t.h.encodedBytes() + blob = t.h.encodedBytes() case extNode: + // recursively hash and commit child as the first step t.hash(st.children[0], append(path, st.key...)) + // encode the extension node n := shortNode{Key: hexToCompactInPlace(st.key)} if len(st.children[0].val) < 32 { n.Val = rawNode(st.children[0].val) @@ -335,7 +350,7 @@ func (t *StackTrie) hash(st *stNode, path []byte) { n.Val = hashNode(st.children[0].val) } n.encode(t.h.encbuf) - encodedNode = t.h.encodedBytes() + blob = t.h.encodedBytes() stPool.Put(st.children[0].reset()) // Release child back to pool. st.children[0] = nil @@ -345,7 +360,7 @@ func (t *StackTrie) hash(st *stNode, path []byte) { n := shortNode{Key: hexToCompactInPlace(st.key), Val: valueNode(st.val)} n.encode(t.h.encbuf) - encodedNode = t.h.encodedBytes() + blob = t.h.encodedBytes() default: panic("invalid node type") @@ -353,60 +368,38 @@ func (t *StackTrie) hash(st *stNode, path []byte) { st.typ = hashedNode st.key = st.key[:0] - if len(encodedNode) < 32 { - st.val = common.CopyBytes(encodedNode) + + // Skip committing the non-root node if the size is smaller than 32 bytes. + if len(blob) < 32 && len(path) > 0 { + st.val = common.CopyBytes(blob) return } - // Write the hash to the 'val'. We allocate a new val here to not mutate - // input values - st.val = t.h.hashData(encodedNode) - if t.writeFn != nil { - t.writeFn(path, common.BytesToHash(st.val), encodedNode) + // input values. + st.val = t.h.hashData(blob) + + // Commit the trie node if the writer is configured. + if t.options.Writer != nil { + t.options.Writer(path, common.BytesToHash(st.val), blob) } } -// Hash returns the hash of the current node. -func (t *StackTrie) Hash() (h common.Hash) { - st := t.root - t.hash(st, nil) - if len(st.val) == 32 { - copy(h[:], st.val) - return h - } - // If the node's RLP isn't 32 bytes long, the node will not - // be hashed, and instead contain the rlp-encoding of the - // node. For the top level node, we need to force the hashing. - t.h.sha.Reset() - t.h.sha.Write(st.val) - t.h.sha.Read(h[:]) - return h +// Hash will firstly hash the entire trie if it's still not hashed and then commit +// all nodes to the associated database. Actually most of the trie nodes have been +// committed already. The main purpose here is to commit the nodes on right boundary. +// +// For stack trie, Hash and Commit are functionally identical. +func (t *StackTrie) Hash() common.Hash { + n := t.root + t.hash(n, nil) + return common.BytesToHash(n.val) } -// Commit will firstly hash the entire trie if it's still not hashed -// and then commit all nodes to the associated database. Actually most -// of the trie nodes MAY have been committed already. The main purpose -// here is to commit the root node. +// Commit will firstly hash the entire trie if it's still not hashed and then commit +// all nodes to the associated database. Actually most of the trie nodes have been +// committed already. The main purpose here is to commit the nodes on right boundary. // -// The associated database is expected, otherwise the whole commit -// functionality should be disabled. -func (t *StackTrie) Commit() (h common.Hash, err error) { - if t.writeFn == nil { - return common.Hash{}, ErrCommitDisabled - } - st := t.root - t.hash(st, nil) - if len(st.val) == 32 { - copy(h[:], st.val) - return h, nil - } - // If the node's RLP isn't 32 bytes long, the node will not - // be hashed (and committed), and instead contain the rlp-encoding of the - // node. For the top level node, we need to force the hashing+commit. - t.h.sha.Reset() - t.h.sha.Write(st.val) - t.h.sha.Read(h[:]) - - t.writeFn(nil, h, st.val) - return h, nil +// For stack trie, Hash and Commit are functionally identical. +func (t *StackTrie) Commit() common.Hash { + return t.Hash() } diff --git a/trie/trie_test.go b/trie/trie_test.go index 2dfe81ef81..4315753548 100644 --- a/trie/trie_test.go +++ b/trie/trie_test.go @@ -912,9 +912,12 @@ func TestCommitSequenceStackTrie(t *testing.T) { trie := NewEmpty(db) // Another sponge is used for the stacktrie commits stackTrieSponge := &spongeDb{sponge: sha3.NewLegacyKeccak256(), id: "b"} - stTrie := NewStackTrie(func(path []byte, hash common.Hash, blob []byte) { + + options := NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(stackTrieSponge, common.Hash{}, path, hash, blob, db.Scheme()) }) + stTrie := NewStackTrie(options) // Fill the trie with elements for i := 0; i < count; i++ { // For the stack trie, we need to do inserts in proper order @@ -937,10 +940,7 @@ func TestCommitSequenceStackTrie(t *testing.T) { db.Update(root, types.EmptyRootHash, 0, trienode.NewWithNodeSet(nodes), nil) db.Commit(root, false) // And flush stacktrie -> disk - stRoot, err := stTrie.Commit() - if err != nil { - t.Fatalf("Failed to commit stack trie %v", err) - } + stRoot := stTrie.Commit() if stRoot != root { t.Fatalf("root wrong, got %x exp %x", stRoot, root) } @@ -971,9 +971,12 @@ func TestCommitSequenceSmallRoot(t *testing.T) { trie := NewEmpty(db) // Another sponge is used for the stacktrie commits stackTrieSponge := &spongeDb{sponge: sha3.NewLegacyKeccak256(), id: "b"} - stTrie := NewStackTrie(func(path []byte, hash common.Hash, blob []byte) { + + options := NewStackTrieOptions() + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(stackTrieSponge, common.Hash{}, path, hash, blob, db.Scheme()) }) + stTrie := NewStackTrie(options) // Add a single small-element to the trie(s) key := make([]byte, 5) key[0] = 1 @@ -985,10 +988,7 @@ func TestCommitSequenceSmallRoot(t *testing.T) { db.Update(root, types.EmptyRootHash, 0, trienode.NewWithNodeSet(nodes), nil) db.Commit(root, false) // And flush stacktrie -> disk - stRoot, err := stTrie.Commit() - if err != nil { - t.Fatalf("Failed to commit stack trie %v", err) - } + stRoot := stTrie.Commit() if stRoot != root { t.Fatalf("root wrong, got %x exp %x", stRoot, root) } From 1f11d2d3402730fca32b37e1f3c012cd5bf7fc55 Mon Sep 17 00:00:00 2001 From: Kero Date: Tue, 17 Oct 2023 20:09:48 +0800 Subject: [PATCH 003/223] ethclient: ensure the close of canceled context (#28349) --- ethclient/ethclient_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index d2f3710936..beaa4240a0 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -393,6 +393,7 @@ func testTransactionInBlockInterrupted(t *testing.T, client *rpc.Client) { // Test tx in block interrupted. ctx, cancel := context.WithCancel(context.Background()) cancel() + <-ctx.Done() // Ensure the close of the Done channel tx, err := ec.TransactionInBlock(ctx, block.Hash(), 0) if tx != nil { t.Fatal("transaction should be nil") @@ -666,6 +667,7 @@ func testTransactionSender(t *testing.T, client *rpc.Client) { // TransactionSender. Ensure the server is not asked by canceling the context here. canceledCtx, cancel := context.WithCancel(context.Background()) cancel() + <-canceledCtx.Done() // Ensure the close of the Done channel sender1, err := ec.TransactionSender(canceledCtx, tx1, block2.Hash(), 0) if err != nil { t.Fatal(err) From f62502e1232d8d1f340cf141c19650a60927674b Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Tue, 17 Oct 2023 20:11:04 +0800 Subject: [PATCH 004/223] internal/ethapi, accounts/abi/bind: use `errors.Is` for error comparison (#28348) Co-authored-by: lightclient --- accounts/abi/bind/backends/simulated.go | 2 +- internal/ethapi/api.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 8549976480..6892668cbe 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -586,7 +586,7 @@ func (b *SimulatedBackend) EstimateGas(ctx context.Context, call ethereum.CallMs return 0, err } if failed { - if result != nil && result.Err != vm.ErrOutOfGas { + if result != nil && !errors.Is(result.Err, vm.ErrOutOfGas) { if len(result.Revert()) > 0 { return 0, newRevertError(result) } diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 640693132e..38a7924124 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -1271,7 +1271,7 @@ func DoEstimateGas(ctx context.Context, b Backend, args TransactionArgs, blockNr return 0, err } if failed { - if result != nil && result.Err != vm.ErrOutOfGas { + if result != nil && !errors.Is(result.Err, vm.ErrOutOfGas) { if len(result.Revert()) > 0 { return 0, newRevertError(result) } From b85c86022e130a76eeb588a5b36e97149b342188 Mon Sep 17 00:00:00 2001 From: Adrian Sutton Date: Tue, 17 Oct 2023 22:34:01 +1000 Subject: [PATCH 005/223] api/bind: add CallOpts.BlockHash to allow calling contracts at a specific block hash (#28084) * api/bind: Add CallOpts.BlockHash to allow calling contracts at a specific block hash. * ethclient: Add BalanceAtHash, NonceAtHash and StorageAtHash functions --- accounts/abi/bind/backend.go | 15 +++++ accounts/abi/bind/backends/simulated.go | 39 ++++++++++++ accounts/abi/bind/backends/simulated_test.go | 56 ++++++++++++++++- accounts/abi/bind/base.go | 18 ++++++ accounts/abi/bind/base_test.go | 65 ++++++++++++++++++++ ethclient/ethclient.go | 28 +++++++++ ethclient/ethclient_test.go | 33 ++++++++++ 7 files changed, 253 insertions(+), 1 deletion(-) diff --git a/accounts/abi/bind/backend.go b/accounts/abi/bind/backend.go index 34530a6455..d13b919641 100644 --- a/accounts/abi/bind/backend.go +++ b/accounts/abi/bind/backend.go @@ -36,6 +36,10 @@ var ( // on a backend that doesn't implement PendingContractCaller. ErrNoPendingState = errors.New("backend does not support pending state") + // ErrNoBlockHashState is raised when attempting to perform a block hash action + // on a backend that doesn't implement BlockHashContractCaller. + ErrNoBlockHashState = errors.New("backend does not support block hash state") + // ErrNoCodeAfterDeploy is returned by WaitDeployed if contract creation leaves // an empty contract behind. ErrNoCodeAfterDeploy = errors.New("no contract code after deployment") @@ -64,6 +68,17 @@ type PendingContractCaller interface { PendingCallContract(ctx context.Context, call ethereum.CallMsg) ([]byte, error) } +// BlockHashContractCaller defines methods to perform contract calls on a specific block hash. +// Call will try to discover this interface when access to a block by hash is requested. +// If the backend does not support the block hash state, Call returns ErrNoBlockHashState. +type BlockHashContractCaller interface { + // CodeAtHash returns the code of the given account in the state at the specified block hash. + CodeAtHash(ctx context.Context, contract common.Address, blockHash common.Hash) ([]byte, error) + + // CallContractAtHash executes an Ethereum contract all against the state at the specified block hash. + CallContractAtHash(ctx context.Context, call ethereum.CallMsg, blockHash common.Hash) ([]byte, error) +} + // ContractTransactor defines the methods needed to allow operating with a contract // on a write only basis. Besides the transacting method, the remainder are helpers // used when the user does not provide some needed values, but rather leaves it up diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 6892668cbe..a26ee12e0a 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -50,6 +50,7 @@ var _ bind.ContractBackend = (*SimulatedBackend)(nil) var ( errBlockNumberUnsupported = errors.New("simulatedBackend cannot access blocks other than the latest block") + errBlockHashUnsupported = errors.New("simulatedBackend cannot access blocks by hash other than the latest block") errBlockDoesNotExist = errors.New("block does not exist in blockchain") errTransactionDoesNotExist = errors.New("transaction does not exist") ) @@ -202,6 +203,24 @@ func (b *SimulatedBackend) CodeAt(ctx context.Context, contract common.Address, return stateDB.GetCode(contract), nil } +// CodeAtHash returns the code associated with a certain account in the blockchain. +func (b *SimulatedBackend) CodeAtHash(ctx context.Context, contract common.Address, blockHash common.Hash) ([]byte, error) { + b.mu.Lock() + defer b.mu.Unlock() + + header, err := b.headerByHash(blockHash) + if err != nil { + return nil, err + } + + stateDB, err := b.blockchain.StateAt(header.Root) + if err != nil { + return nil, err + } + + return stateDB.GetCode(contract), nil +} + // BalanceAt returns the wei balance of a certain account in the blockchain. func (b *SimulatedBackend) BalanceAt(ctx context.Context, contract common.Address, blockNumber *big.Int) (*big.Int, error) { b.mu.Lock() @@ -320,7 +339,11 @@ func (b *SimulatedBackend) blockByNumber(ctx context.Context, number *big.Int) ( func (b *SimulatedBackend) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) { b.mu.Lock() defer b.mu.Unlock() + return b.headerByHash(hash) +} +// headerByHash retrieves a header from the database by hash without Lock. +func (b *SimulatedBackend) headerByHash(hash common.Hash) (*types.Header, error) { if hash == b.pendingBlock.Hash() { return b.pendingBlock.Header(), nil } @@ -436,6 +459,22 @@ func (b *SimulatedBackend) CallContract(ctx context.Context, call ethereum.CallM if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number) != 0 { return nil, errBlockNumberUnsupported } + return b.callContractAtHead(ctx, call) +} + +// CallContractAtHash executes a contract call on a specific block hash. +func (b *SimulatedBackend) CallContractAtHash(ctx context.Context, call ethereum.CallMsg, blockHash common.Hash) ([]byte, error) { + b.mu.Lock() + defer b.mu.Unlock() + + if blockHash != b.blockchain.CurrentBlock().Hash() { + return nil, errBlockHashUnsupported + } + return b.callContractAtHead(ctx, call) +} + +// callContractAtHead executes a contract call against the latest block state. +func (b *SimulatedBackend) callContractAtHead(ctx context.Context, call ethereum.CallMsg) ([]byte, error) { stateDB, err := b.blockchain.State() if err != nil { return nil, err diff --git a/accounts/abi/bind/backends/simulated_test.go b/accounts/abi/bind/backends/simulated_test.go index 11900a6cf5..a41d168411 100644 --- a/accounts/abi/bind/backends/simulated_test.go +++ b/accounts/abi/bind/backends/simulated_test.go @@ -996,6 +996,43 @@ func TestCodeAt(t *testing.T) { } } +func TestCodeAtHash(t *testing.T) { + testAddr := crypto.PubkeyToAddress(testKey.PublicKey) + sim := simTestBackend(testAddr) + defer sim.Close() + bgCtx := context.Background() + code, err := sim.CodeAtHash(bgCtx, testAddr, sim.Blockchain().CurrentHeader().Hash()) + if err != nil { + t.Errorf("could not get code at test addr: %v", err) + } + if len(code) != 0 { + t.Errorf("got code for account that does not have contract code") + } + + parsed, err := abi.JSON(strings.NewReader(abiJSON)) + if err != nil { + t.Errorf("could not get code at test addr: %v", err) + } + auth, _ := bind.NewKeyedTransactorWithChainID(testKey, big.NewInt(1337)) + contractAddr, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(abiBin), sim) + if err != nil { + t.Errorf("could not deploy contract: %v tx: %v contract: %v", err, tx, contract) + } + + blockHash := sim.Commit() + code, err = sim.CodeAtHash(bgCtx, contractAddr, blockHash) + if err != nil { + t.Errorf("could not get code at test addr: %v", err) + } + if len(code) == 0 { + t.Errorf("did not get code for account that has contract code") + } + // ensure code received equals code deployed + if !bytes.Equal(code, common.FromHex(deployedCode)) { + t.Errorf("code received did not match expected deployed code:\n expected %v\n actual %v", common.FromHex(deployedCode), code) + } +} + // When receive("X") is called with sender 0x00... and value 1, it produces this tx receipt: // // receipt{status=1 cgas=23949 bloom=00000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000040200000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 logs=[log: b6818c8064f645cd82d99b59a1a267d6d61117ef [75fd880d39c1daf53b6547ab6cb59451fc6452d27caa90e5b6649dd8293b9eed] 000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158 9ae378b6d4409eada347a5dc0c180f186cb62dc68fcc0f043425eb917335aa28 0 95d429d309bb9d753954195fe2d69bd140b4ae731b9b5b605c34323de162cf00 0]} @@ -1038,7 +1075,7 @@ func TestPendingAndCallContract(t *testing.T) { t.Errorf("response from calling contract was expected to be 'hello world' instead received %v", string(res)) } - sim.Commit() + blockHash := sim.Commit() // make sure you can call the contract res, err = sim.CallContract(bgCtx, ethereum.CallMsg{ @@ -1056,6 +1093,23 @@ func TestPendingAndCallContract(t *testing.T) { if !bytes.Equal(res, expectedReturn) || !strings.Contains(string(res), "hello world") { t.Errorf("response from calling contract was expected to be 'hello world' instead received %v", string(res)) } + + // make sure you can call the contract by hash + res, err = sim.CallContractAtHash(bgCtx, ethereum.CallMsg{ + From: testAddr, + To: &addr, + Data: input, + }, blockHash) + if err != nil { + t.Errorf("could not call receive method on contract: %v", err) + } + if len(res) == 0 { + t.Errorf("result of contract call was empty: %v", res) + } + + if !bytes.Equal(res, expectedReturn) || !strings.Contains(string(res), "hello world") { + t.Errorf("response from calling contract was expected to be 'hello world' instead received %v", string(res)) + } } // This test is based on the following contract: diff --git a/accounts/abi/bind/base.go b/accounts/abi/bind/base.go index b03f431f77..6da15f147c 100644 --- a/accounts/abi/bind/base.go +++ b/accounts/abi/bind/base.go @@ -48,6 +48,7 @@ type CallOpts struct { Pending bool // Whether to operate on the pending state or the last known one From common.Address // Optional the sender address, otherwise the first account is used BlockNumber *big.Int // Optional the block number on which the call should be performed + BlockHash common.Hash // Optional the block hash on which the call should be performed Context context.Context // Network context to support cancellation and timeouts (nil = no timeout) } @@ -189,6 +190,23 @@ func (c *BoundContract) Call(opts *CallOpts, results *[]interface{}, method stri return ErrNoCode } } + } else if opts.BlockHash != (common.Hash{}) { + bh, ok := c.caller.(BlockHashContractCaller) + if !ok { + return ErrNoBlockHashState + } + output, err = bh.CallContractAtHash(ctx, msg, opts.BlockHash) + if err != nil { + return err + } + if len(output) == 0 { + // Make sure we have a contract to operate on, and bail out otherwise. + if code, err = bh.CodeAtHash(ctx, c.address, opts.BlockHash); err != nil { + return err + } else if len(code) == 0 { + return ErrNoCode + } + } } else { output, err = c.caller.CallContract(ctx, msg, opts.BlockNumber) if err != nil { diff --git a/accounts/abi/bind/base_test.go b/accounts/abi/bind/base_test.go index ca0128148f..44552ab121 100644 --- a/accounts/abi/bind/base_test.go +++ b/accounts/abi/bind/base_test.go @@ -114,6 +114,26 @@ func (mc *mockPendingCaller) PendingCallContract(ctx context.Context, call ether return mc.pendingCallContractBytes, mc.pendingCallContractErr } +type mockBlockHashCaller struct { + *mockCaller + codeAtHashBytes []byte + codeAtHashErr error + codeAtHashCalled bool + callContractAtHashCalled bool + callContractAtHashBytes []byte + callContractAtHashErr error +} + +func (mc *mockBlockHashCaller) CodeAtHash(ctx context.Context, contract common.Address, hash common.Hash) ([]byte, error) { + mc.codeAtHashCalled = true + return mc.codeAtHashBytes, mc.codeAtHashErr +} + +func (mc *mockBlockHashCaller) CallContractAtHash(ctx context.Context, call ethereum.CallMsg, hash common.Hash) ([]byte, error) { + mc.callContractAtHashCalled = true + return mc.callContractAtHashBytes, mc.callContractAtHashErr +} + func TestPassingBlockNumber(t *testing.T) { mc := &mockPendingCaller{ mockCaller: &mockCaller{ @@ -400,6 +420,15 @@ func TestCall(t *testing.T) { Pending: true, }, method: method, + }, { + name: "ok hash", + mc: &mockBlockHashCaller{ + codeAtHashBytes: []byte{0}, + }, + opts: &bind.CallOpts{ + BlockHash: common.Hash{0xaa}, + }, + method: method, }, { name: "pack error, no method", mc: new(mockCaller), @@ -413,6 +442,14 @@ func TestCall(t *testing.T) { }, method: method, wantErrExact: bind.ErrNoPendingState, + }, { + name: "interface error, blockHash but not a BlockHashContractCaller", + mc: new(mockCaller), + opts: &bind.CallOpts{ + BlockHash: common.Hash{0xaa}, + }, + method: method, + wantErrExact: bind.ErrNoBlockHashState, }, { name: "pending call canceled", mc: &mockPendingCaller{ @@ -460,6 +497,34 @@ func TestCall(t *testing.T) { mc: new(mockCaller), method: method, wantErrExact: bind.ErrNoCode, + }, { + name: "call contract at hash error", + mc: &mockBlockHashCaller{ + callContractAtHashErr: context.DeadlineExceeded, + }, + opts: &bind.CallOpts{ + BlockHash: common.Hash{0xaa}, + }, + method: method, + wantErrExact: context.DeadlineExceeded, + }, { + name: "code at error", + mc: &mockBlockHashCaller{ + codeAtHashErr: errors.New(""), + }, + opts: &bind.CallOpts{ + BlockHash: common.Hash{0xaa}, + }, + method: method, + wantErr: true, + }, { + name: "no code at hash", + mc: new(mockBlockHashCaller), + opts: &bind.CallOpts{ + BlockHash: common.Hash{0xaa}, + }, + method: method, + wantErrExact: bind.ErrNoCode, }, { name: "unpack error missing arg", mc: &mockCaller{ diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go index af373b9938..83c89a2fd4 100644 --- a/ethclient/ethclient.go +++ b/ethclient/ethclient.go @@ -370,6 +370,13 @@ func (ec *Client) BalanceAt(ctx context.Context, account common.Address, blockNu return (*big.Int)(&result), err } +// BalanceAtHash returns the wei balance of the given account. +func (ec *Client) BalanceAtHash(ctx context.Context, account common.Address, blockHash common.Hash) (*big.Int, error) { + var result hexutil.Big + err := ec.c.CallContext(ctx, &result, "eth_getBalance", account, rpc.BlockNumberOrHashWithHash(blockHash, false)) + return (*big.Int)(&result), err +} + // StorageAt returns the value of key in the contract storage of the given account. // The block number can be nil, in which case the value is taken from the latest known block. func (ec *Client) StorageAt(ctx context.Context, account common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error) { @@ -378,6 +385,13 @@ func (ec *Client) StorageAt(ctx context.Context, account common.Address, key com return result, err } +// StorageAtHash returns the value of key in the contract storage of the given account. +func (ec *Client) StorageAtHash(ctx context.Context, account common.Address, key common.Hash, blockHash common.Hash) ([]byte, error) { + var result hexutil.Bytes + err := ec.c.CallContext(ctx, &result, "eth_getStorageAt", account, key, rpc.BlockNumberOrHashWithHash(blockHash, false)) + return result, err +} + // CodeAt returns the contract code of the given account. // The block number can be nil, in which case the code is taken from the latest known block. func (ec *Client) CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error) { @@ -386,6 +400,13 @@ func (ec *Client) CodeAt(ctx context.Context, account common.Address, blockNumbe return result, err } +// CodeAtHash returns the contract code of the given account. +func (ec *Client) CodeAtHash(ctx context.Context, account common.Address, blockHash common.Hash) ([]byte, error) { + var result hexutil.Bytes + err := ec.c.CallContext(ctx, &result, "eth_getCode", account, rpc.BlockNumberOrHashWithHash(blockHash, false)) + return result, err +} + // NonceAt returns the account nonce of the given account. // The block number can be nil, in which case the nonce is taken from the latest known block. func (ec *Client) NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (uint64, error) { @@ -394,6 +415,13 @@ func (ec *Client) NonceAt(ctx context.Context, account common.Address, blockNumb return uint64(result), err } +// NonceAtHash returns the account nonce of the given account. +func (ec *Client) NonceAtHash(ctx context.Context, account common.Address, blockHash common.Hash) (uint64, error) { + var result hexutil.Uint64 + err := ec.c.CallContext(ctx, &result, "eth_getTransactionCount", account, rpc.BlockNumberOrHashWithHash(blockHash, false)) + return uint64(result), err +} + // Filters // FilterLogs executes a filter query. diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index beaa4240a0..4aa25759fb 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -584,6 +584,11 @@ func testCallContract(t *testing.T, client *rpc.Client) { func testAtFunctions(t *testing.T, client *rpc.Client) { ec := NewClient(client) + block, err := ec.HeaderByNumber(context.Background(), big.NewInt(1)) + if err != nil { + t.Fatalf("BlockByNumber error: %v", err) + } + // send a transaction for some interesting pending status sendTransaction(ec) time.Sleep(100 * time.Millisecond) @@ -601,6 +606,13 @@ func testAtFunctions(t *testing.T, client *rpc.Client) { if err != nil { t.Fatalf("unexpected error: %v", err) } + hashBalance, err := ec.BalanceAtHash(context.Background(), testAddr, block.Hash()) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if balance.Cmp(hashBalance) == 0 { + t.Fatalf("unexpected balance at hash: %v %v", balance, hashBalance) + } penBalance, err := ec.PendingBalanceAt(context.Background(), testAddr) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -613,6 +625,13 @@ func testAtFunctions(t *testing.T, client *rpc.Client) { if err != nil { t.Fatalf("unexpected error: %v", err) } + hashNonce, err := ec.NonceAtHash(context.Background(), testAddr, block.Hash()) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if hashNonce == nonce { + t.Fatalf("unexpected nonce at hash: %v %v", nonce, hashNonce) + } penNonce, err := ec.PendingNonceAt(context.Background(), testAddr) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -625,6 +644,13 @@ func testAtFunctions(t *testing.T, client *rpc.Client) { if err != nil { t.Fatalf("unexpected error: %v", err) } + hashStorage, err := ec.StorageAtHash(context.Background(), testAddr, common.Hash{}, block.Hash()) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if !bytes.Equal(storage, hashStorage) { + t.Fatalf("unexpected storage at hash: %v %v", storage, hashStorage) + } penStorage, err := ec.PendingStorageAt(context.Background(), testAddr, common.Hash{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -637,6 +663,13 @@ func testAtFunctions(t *testing.T, client *rpc.Client) { if err != nil { t.Fatalf("unexpected error: %v", err) } + hashCode, err := ec.CodeAtHash(context.Background(), common.Address{}, block.Hash()) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if !bytes.Equal(code, hashCode) { + t.Fatalf("unexpected code at hash: %v %v", code, hashCode) + } penCode, err := ec.PendingCodeAt(context.Background(), testAddr) if err != nil { t.Fatalf("unexpected error: %v", err) From 20d5256e4063372845d23b2e82d242659a0aaeec Mon Sep 17 00:00:00 2001 From: lightclient <14004106+lightclient@users.noreply.github.com> Date: Tue, 17 Oct 2023 06:43:46 -0600 Subject: [PATCH 006/223] core/chain_makers: add SetParentBeaconRoot(..) to chain makers (#28252) --- core/chain_makers.go | 11 +++++++++++ core/chain_makers_test.go | 26 +++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/core/chain_makers.go b/core/chain_makers.go index 3608329a13..0f445ab3f0 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -88,6 +88,17 @@ func (b *BlockGen) SetPoS() { b.header.Difficulty = new(big.Int) } +// SetParentBeaconRoot sets the parent beacon root field of the generated +// block. +func (b *BlockGen) SetParentBeaconRoot(root common.Hash) { + b.header.ParentBeaconRoot = &root + var ( + blockContext = NewEVMBlockContext(b.header, nil, &b.header.Coinbase) + vmenv = vm.NewEVM(blockContext, vm.TxContext{}, b.statedb, b.config, vm.Config{}) + ) + ProcessBeaconBlockRoot(root, vmenv, b.statedb) +} + // addTx adds a transaction to the generated block. If no coinbase has // been set, the block's coinbase is set to the zero address. // diff --git a/core/chain_makers_test.go b/core/chain_makers_test.go index db220cf24a..018151cb0c 100644 --- a/core/chain_makers_test.go +++ b/core/chain_makers_test.go @@ -32,7 +32,7 @@ import ( "github.com/ethereum/go-ethereum/trie" ) -func TestGenerateWithdrawalChain(t *testing.T) { +func TestGeneratePOSChain(t *testing.T) { var ( keyHex = "9c647b8b7c4e7c3490668fb6c11473619db80c93704c70893d3813af4090c39c" key, _ = crypto.HexToECDSA(keyHex) @@ -41,9 +41,13 @@ func TestGenerateWithdrawalChain(t *testing.T) { bb = common.Address{0xbb} funds = big.NewInt(0).Mul(big.NewInt(1337), big.NewInt(params.Ether)) config = *params.AllEthashProtocolChanges + asm4788 = common.Hex2Bytes("3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500") gspec = &Genesis{ - Config: &config, - Alloc: GenesisAlloc{address: {Balance: funds}}, + Config: &config, + Alloc: GenesisAlloc{ + address: {Balance: funds}, + params.BeaconRootsStorageAddress: {Balance: common.Big0, Code: asm4788}, + }, BaseFee: big.NewInt(params.InitialBaseFee), Difficulty: common.Big1, GasLimit: 5_000_000, @@ -56,6 +60,7 @@ func TestGenerateWithdrawalChain(t *testing.T) { config.TerminalTotalDifficultyPassed = true config.TerminalTotalDifficulty = common.Big0 config.ShanghaiTime = u64(0) + config.CancunTime = u64(0) // init 0xaa with some storage elements storage := make(map[common.Hash]common.Hash) @@ -78,6 +83,7 @@ func TestGenerateWithdrawalChain(t *testing.T) { genesis := gspec.MustCommit(gendb, trie.NewDatabase(gendb, trie.HashDefaults)) chain, _ := GenerateChain(gspec.Config, genesis, beacon.NewFaker(), gendb, 4, func(i int, gen *BlockGen) { + gen.SetParentBeaconRoot(common.Hash{byte(i + 1)}) tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(address), address, big.NewInt(1000), params.TxGas, new(big.Int).Add(gen.BaseFee(), common.Big1), nil), signer, key) gen.AddTx(tx) if i == 1 { @@ -125,6 +131,8 @@ func TestGenerateWithdrawalChain(t *testing.T) { if block == nil { t.Fatalf("block %d not found", i) } + + // Verify withdrawals. if len(block.Withdrawals()) == 0 { continue } @@ -134,6 +142,18 @@ func TestGenerateWithdrawalChain(t *testing.T) { } withdrawalIndex += 1 } + + // Verify parent beacon root. + want := common.Hash{byte(i)} + if got := block.BeaconRoot(); *got != want { + t.Fatalf("block %d, wrong parent beacon root: got %s, want %s", i, got, want) + } + state, _ := blockchain.State() + idx := block.Time()%8191 + 8191 + got := state.GetState(params.BeaconRootsStorageAddress, common.BigToHash(new(big.Int).SetUint64(idx))) + if got != want { + t.Fatalf("block %d, wrong parent beacon root in state: got %s, want %s", i, got, want) + } } } From d782dc2341004233d7809c40e37509f06fbc2c1c Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 17 Oct 2023 15:20:22 +0200 Subject: [PATCH 007/223] tests/fuzzers/les: fix crash in fuzzer (#28362) --- tests/fuzzers/les/les-fuzzer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fuzzers/les/les-fuzzer.go b/tests/fuzzers/les/les-fuzzer.go index c29bb2ef12..240a0d9412 100644 --- a/tests/fuzzers/les/les-fuzzer.go +++ b/tests/fuzzers/les/les-fuzzer.go @@ -70,7 +70,7 @@ func makechain() (bc *core.BlockChain, addresses []common.Address, txHashes []co ) nonce := uint64(i) if i%4 == 0 { - tx, _ = types.SignTx(types.NewContractCreation(nonce, big.NewInt(0), 200000, big.NewInt(0), testContractCode), signer, bankKey) + tx, _ = types.SignTx(types.NewContractCreation(nonce, big.NewInt(0), 200000, big.NewInt(params.GWei), testContractCode), signer, bankKey) addr = crypto.CreateAddress(bankAddr, nonce) } else { addr = common.BigToAddress(big.NewInt(int64(i))) From da55b23d21fb297fd01cfc1bebb13a3e8fe7f726 Mon Sep 17 00:00:00 2001 From: lightclient <14004106+lightclient@users.noreply.github.com> Date: Tue, 17 Oct 2023 10:52:53 -0600 Subject: [PATCH 008/223] eth/fetcher: downgrade stale txs log from warn to debug (#28364) --- eth/fetcher/tx_fetcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/fetcher/tx_fetcher.go b/eth/fetcher/tx_fetcher.go index 60b07a2b4b..ea7892d8d8 100644 --- a/eth/fetcher/tx_fetcher.go +++ b/eth/fetcher/tx_fetcher.go @@ -363,7 +363,7 @@ func (f *TxFetcher) Enqueue(peer string, txs []*types.Transaction, direct bool) // If 'other reject' is >25% of the deliveries in any batch, sleep a bit. if otherreject > 128/4 { time.Sleep(200 * time.Millisecond) - log.Warn("Peer delivering stale transactions", "peer", peer, "rejected", otherreject) + log.Debug("Peer delivering stale transactions", "peer", peer, "rejected", otherreject) } } select { From d10a2f6ab727f79a0acff29c8147d54c5e4689ec Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Wed, 18 Oct 2023 15:01:16 +0200 Subject: [PATCH 009/223] tests/fuzzers: update fuzzers to be based on go-native fuzzing (#28352) This change modifies the fuzzers to use the native golang fuzzing framework instead of go-fuzz --- crypto/blake2b/blake2b_f_fuzz.go | 58 ------ crypto/blake2b/blake2b_f_test.go | 58 ++++++ oss-fuzz.sh | 56 +++--- tests/fuzzers/abi/abifuzzer.go | 170 ------------------ tests/fuzzers/abi/abifuzzer_test.go | 164 +++++++++++++++-- .../{compress_fuzz.go => compress_test.go} | 30 ++-- tests/fuzzers/bls12381/bls12381_fuzz.go | 11 +- tests/fuzzers/bls12381/bls12381_test.go | 97 ++++++++++ tests/fuzzers/bls12381/precompile_fuzzer.go | 10 -- tests/fuzzers/bn256/bn256_fuzz.go | 13 +- .../debug/main.go => bn256/bn256_test.go} | 37 ++-- tests/fuzzers/difficulty/difficulty-fuzz.go | 2 +- .../main.go => difficulty/difficulty_test.go} | 27 +-- ...0176eaf52ed014ec5c91cf4afa070dd3fd469077-1 | 1 - tests/fuzzers/keystore/keystore-fuzzer.go | 2 +- .../main.go => keystore/keystore_test.go} | 27 +-- tests/fuzzers/les/debug/main.go | 40 ----- tests/fuzzers/les/les-fuzzer.go | 2 +- tests/fuzzers/les/les_test.go | 25 +++ tests/fuzzers/rangeproof/debug/main.go | 40 ----- tests/fuzzers/rangeproof/rangeproof-fuzzer.go | 2 +- tests/fuzzers/rangeproof/rangeproof_test.go | 25 +++ tests/fuzzers/rlp/rlp_fuzzer.go | 2 +- tests/fuzzers/rlp/rlp_test.go | 25 +++ .../{runtime_fuzz.go => runtime_test.go} | 21 +-- tests/fuzzers/secp256k1/secp_fuzzer.go | 50 ------ tests/fuzzers/secp256k1/secp_test.go | 36 +++- tests/fuzzers/snap/fuzz_handler.go | 17 -- .../debug/main.go => snap/fuzz_test.go} | 46 ++--- tests/fuzzers/stacktrie/trie_fuzzer.go | 2 +- tests/fuzzers/stacktrie/trie_test.go | 25 +++ tests/fuzzers/trie/corpus/data | 1 - tests/fuzzers/trie/trie-fuzzer.go | 2 +- tests/fuzzers/trie/trie_test.go | 25 +++ tests/fuzzers/txfetcher/txfetcher_fuzzer.go | 2 +- tests/fuzzers/txfetcher/txfetcher_test.go | 25 +++ tests/fuzzers/vflux/clientpool-fuzzer.go | 2 +- tests/fuzzers/vflux/clientpool_test.go | 25 +++ 38 files changed, 641 insertions(+), 562 deletions(-) delete mode 100644 crypto/blake2b/blake2b_f_fuzz.go delete mode 100644 tests/fuzzers/abi/abifuzzer.go rename tests/fuzzers/bitutil/{compress_fuzz.go => compress_test.go} (82%) create mode 100644 tests/fuzzers/bls12381/bls12381_test.go rename tests/fuzzers/{snap/debug/main.go => bn256/bn256_test.go} (64%) rename tests/fuzzers/{stacktrie/debug/main.go => difficulty/difficulty_test.go} (63%) delete mode 100644 tests/fuzzers/keystore/corpus/0176eaf52ed014ec5c91cf4afa070dd3fd469077-1 rename tests/fuzzers/{difficulty/debug/main.go => keystore/keystore_test.go} (63%) delete mode 100644 tests/fuzzers/les/debug/main.go create mode 100644 tests/fuzzers/les/les_test.go delete mode 100644 tests/fuzzers/rangeproof/debug/main.go create mode 100644 tests/fuzzers/rangeproof/rangeproof_test.go create mode 100644 tests/fuzzers/rlp/rlp_test.go rename tests/fuzzers/runtime/{runtime_fuzz.go => runtime_test.go} (67%) delete mode 100644 tests/fuzzers/secp256k1/secp_fuzzer.go rename tests/fuzzers/{vflux/debug/main.go => snap/fuzz_test.go} (51%) create mode 100644 tests/fuzzers/stacktrie/trie_test.go delete mode 100644 tests/fuzzers/trie/corpus/data create mode 100644 tests/fuzzers/trie/trie_test.go create mode 100644 tests/fuzzers/txfetcher/txfetcher_test.go create mode 100644 tests/fuzzers/vflux/clientpool_test.go diff --git a/crypto/blake2b/blake2b_f_fuzz.go b/crypto/blake2b/blake2b_f_fuzz.go deleted file mode 100644 index b2f4057074..0000000000 --- a/crypto/blake2b/blake2b_f_fuzz.go +++ /dev/null @@ -1,58 +0,0 @@ -//go:build gofuzz -// +build gofuzz - -package blake2b - -import ( - "encoding/binary" -) - -func Fuzz(data []byte) int { - // Make sure the data confirms to the input model - if len(data) != 211 { - return 0 - } - // Parse everything and call all the implementations - var ( - rounds = binary.BigEndian.Uint16(data[0:2]) - - h [8]uint64 - m [16]uint64 - t [2]uint64 - f uint64 - ) - for i := 0; i < 8; i++ { - offset := 2 + i*8 - h[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) - } - for i := 0; i < 16; i++ { - offset := 66 + i*8 - m[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) - } - t[0] = binary.LittleEndian.Uint64(data[194:202]) - t[1] = binary.LittleEndian.Uint64(data[202:210]) - - if data[210]%2 == 1 { // Avoid spinning the fuzzer to hit 0/1 - f = 0xFFFFFFFFFFFFFFFF - } - // Run the blake2b compression on all instruction sets and cross reference - want := h - fGeneric(&want, &m, t[0], t[1], f, uint64(rounds)) - - have := h - fSSE4(&have, &m, t[0], t[1], f, uint64(rounds)) - if have != want { - panic("SSE4 mismatches generic algo") - } - have = h - fAVX(&have, &m, t[0], t[1], f, uint64(rounds)) - if have != want { - panic("AVX mismatches generic algo") - } - have = h - fAVX2(&have, &m, t[0], t[1], f, uint64(rounds)) - if have != want { - panic("AVX2 mismatches generic algo") - } - return 1 -} diff --git a/crypto/blake2b/blake2b_f_test.go b/crypto/blake2b/blake2b_f_test.go index 4e07d131cd..983c65a749 100644 --- a/crypto/blake2b/blake2b_f_test.go +++ b/crypto/blake2b/blake2b_f_test.go @@ -1,6 +1,7 @@ package blake2b import ( + "encoding/binary" "fmt" "reflect" "testing" @@ -57,3 +58,60 @@ var testVectorsF = []testVector{ }, }, } + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} + +func fuzz(data []byte) { + // Make sure the data confirms to the input model + if len(data) != 211 { + return + } + // Parse everything and call all the implementations + var ( + rounds = binary.BigEndian.Uint16(data[0:2]) + + h [8]uint64 + m [16]uint64 + t [2]uint64 + f uint64 + ) + + for i := 0; i < 8; i++ { + offset := 2 + i*8 + h[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) + } + for i := 0; i < 16; i++ { + offset := 66 + i*8 + m[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) + } + t[0] = binary.LittleEndian.Uint64(data[194:202]) + t[1] = binary.LittleEndian.Uint64(data[202:210]) + + if data[210]%2 == 1 { // Avoid spinning the fuzzer to hit 0/1 + f = 0xFFFFFFFFFFFFFFFF + } + + // Run the blake2b compression on all instruction sets and cross reference + want := h + fGeneric(&want, &m, t[0], t[1], f, uint64(rounds)) + + have := h + fSSE4(&have, &m, t[0], t[1], f, uint64(rounds)) + if have != want { + panic("SSE4 mismatches generic algo") + } + have = h + fAVX(&have, &m, t[0], t[1], f, uint64(rounds)) + if have != want { + panic("AVX mismatches generic algo") + } + have = h + fAVX2(&have, &m, t[0], t[1], f, uint64(rounds)) + if have != want { + panic("AVX2 mismatches generic algo") + } +} diff --git a/oss-fuzz.sh b/oss-fuzz.sh index 745a5ba7c7..55660d08e3 100644 --- a/oss-fuzz.sh +++ b/oss-fuzz.sh @@ -1,5 +1,5 @@ -#/bin/bash -eu -# Copyright 2020 Google Inc. +#!/bin/bash -eu +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,17 +15,6 @@ # ################################################################################ -# This file is for integration with Google OSS-Fuzz. -# The following ENV variables are available when executing on OSS-fuzz: -# -# /out/ $OUT Directory to store build artifacts (fuzz targets, dictionaries, options files, seed corpus archives). -# /src/ $SRC Directory to checkout source files. -# /work/ $WORK Directory to store intermediate files. -# -# $CC, $CXX, $CCC The C and C++ compiler binaries. -# $CFLAGS, $CXXFLAGS C and C++ compiler flags. -# $LIB_FUZZING_ENGINE C++ compiler argument to link fuzz target against the prebuilt engine library (e.g. libFuzzer). - # This sets the -coverpgk for the coverage report when the corpus is executed through go test coverpkg="github.com/ethereum/go-ethereum/..." @@ -59,25 +48,38 @@ DOG cd - } -function compile_fuzzer { - # Inputs: - # $1: The package to fuzz, within go-ethereum - # $2: The name of the fuzzing function - # $3: The name to give to the final fuzzing-binary +function build_native_go_fuzzer() { + fuzzer=$1 + function=$2 + path=$3 + tags="-tags gofuzz" + + if [[ $SANITIZER == *coverage* ]]; then + coverbuild $path $function $fuzzer $coverpkg + else + go-118-fuzz-build $tags -o $fuzzer.a -func $function $path + $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -o $OUT/$fuzzer + fi +} +function compile_fuzzer() { path=$GOPATH/src/github.com/ethereum/go-ethereum/$1 - func=$2 + function=$2 fuzzer=$3 echo "Building $fuzzer" + cd $path + + # Install build dependencies + go install github.com/AdamKorcz/go-118-fuzz-build@latest + go get github.com/AdamKorcz/go-118-fuzz-build/testing - # Do a coverage-build or a regular build - if [[ $SANITIZER = *coverage* ]]; then - coverbuild $path $func $fuzzer $coverpkg + # Test if file contains a line with "func $function(" and "testing.F". + if [ $(grep -r "func $function(" $path | grep "testing.F" | wc -l) -eq 1 ] + then + build_native_go_fuzzer $fuzzer $function $path else - (cd $path && \ - go-fuzz -func $func -o $WORK/$fuzzer.a . && \ - $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $WORK/$fuzzer.a -o $OUT/$fuzzer) + echo "Could not find the function: func ${function}(f *testing.F)" fi ## Check if there exists a seed corpus file @@ -87,9 +89,11 @@ function compile_fuzzer { cp $corpusfile $OUT/ echo "Found seed corpus: $corpusfile" fi + cd - } -compile_fuzzer tests/fuzzers/bitutil Fuzz fuzzBitutilCompress +compile_fuzzer tests/fuzzers/bitutil FuzzEncoder fuzzBitutilEncoder +compile_fuzzer tests/fuzzers/bitutil FuzzDecoder fuzzBitutilDecoder compile_fuzzer tests/fuzzers/bn256 FuzzAdd fuzzBn256Add compile_fuzzer tests/fuzzers/bn256 FuzzMul fuzzBn256Mul compile_fuzzer tests/fuzzers/bn256 FuzzPair fuzzBn256Pair diff --git a/tests/fuzzers/abi/abifuzzer.go b/tests/fuzzers/abi/abifuzzer.go deleted file mode 100644 index 60233d158a..0000000000 --- a/tests/fuzzers/abi/abifuzzer.go +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package abi - -import ( - "fmt" - "reflect" - "strings" - - "github.com/ethereum/go-ethereum/accounts/abi" - fuzz "github.com/google/gofuzz" -) - -var ( - names = []string{"_name", "name", "NAME", "name_", "__", "_name_", "n"} - stateMut = []string{"", "pure", "view", "payable"} - stateMutabilites = []*string{&stateMut[0], &stateMut[1], &stateMut[2], &stateMut[3]} - pays = []string{"", "true", "false"} - payables = []*string{&pays[0], &pays[1]} - vNames = []string{"a", "b", "c", "d", "e", "f", "g"} - varNames = append(vNames, names...) - varTypes = []string{"bool", "address", "bytes", "string", - "uint8", "int8", "uint8", "int8", "uint16", "int16", - "uint24", "int24", "uint32", "int32", "uint40", "int40", "uint48", "int48", "uint56", "int56", - "uint64", "int64", "uint72", "int72", "uint80", "int80", "uint88", "int88", "uint96", "int96", - "uint104", "int104", "uint112", "int112", "uint120", "int120", "uint128", "int128", "uint136", "int136", - "uint144", "int144", "uint152", "int152", "uint160", "int160", "uint168", "int168", "uint176", "int176", - "uint184", "int184", "uint192", "int192", "uint200", "int200", "uint208", "int208", "uint216", "int216", - "uint224", "int224", "uint232", "int232", "uint240", "int240", "uint248", "int248", "uint256", "int256", - "bytes1", "bytes2", "bytes3", "bytes4", "bytes5", "bytes6", "bytes7", "bytes8", "bytes9", "bytes10", "bytes11", - "bytes12", "bytes13", "bytes14", "bytes15", "bytes16", "bytes17", "bytes18", "bytes19", "bytes20", "bytes21", - "bytes22", "bytes23", "bytes24", "bytes25", "bytes26", "bytes27", "bytes28", "bytes29", "bytes30", "bytes31", - "bytes32", "bytes"} -) - -func unpackPack(abi abi.ABI, method string, input []byte) ([]interface{}, bool) { - if out, err := abi.Unpack(method, input); err == nil { - _, err := abi.Pack(method, out...) - if err != nil { - // We have some false positives as we can unpack these type successfully, but not pack them - if err.Error() == "abi: cannot use []uint8 as type [0]int8 as argument" || - err.Error() == "abi: cannot use uint8 as type int8 as argument" { - return out, false - } - panic(err) - } - return out, true - } - return nil, false -} - -func packUnpack(abi abi.ABI, method string, input *[]interface{}) bool { - if packed, err := abi.Pack(method, input); err == nil { - outptr := reflect.New(reflect.TypeOf(input)) - err := abi.UnpackIntoInterface(outptr.Interface(), method, packed) - if err != nil { - panic(err) - } - out := outptr.Elem().Interface() - if !reflect.DeepEqual(input, out) { - panic(fmt.Sprintf("unpackPack is not equal, \ninput : %x\noutput: %x", input, out)) - } - return true - } - return false -} - -type args struct { - name string - typ string -} - -func createABI(name string, stateMutability, payable *string, inputs []args) (abi.ABI, error) { - sig := fmt.Sprintf(`[{ "type" : "function", "name" : "%v" `, name) - if stateMutability != nil { - sig += fmt.Sprintf(`, "stateMutability": "%v" `, *stateMutability) - } - if payable != nil { - sig += fmt.Sprintf(`, "payable": %v `, *payable) - } - if len(inputs) > 0 { - sig += `, "inputs" : [ {` - for i, inp := range inputs { - sig += fmt.Sprintf(`"name" : "%v", "type" : "%v" `, inp.name, inp.typ) - if i+1 < len(inputs) { - sig += "," - } - } - sig += "} ]" - sig += `, "outputs" : [ {` - for i, inp := range inputs { - sig += fmt.Sprintf(`"name" : "%v", "type" : "%v" `, inp.name, inp.typ) - if i+1 < len(inputs) { - sig += "," - } - } - sig += "} ]" - } - sig += `}]` - - return abi.JSON(strings.NewReader(sig)) -} - -func runFuzzer(input []byte) int { - good := false - fuzzer := fuzz.NewFromGoFuzz(input) - - name := names[getUInt(fuzzer)%len(names)] - stateM := stateMutabilites[getUInt(fuzzer)%len(stateMutabilites)] - payable := payables[getUInt(fuzzer)%len(payables)] - maxLen := 5 - for k := 1; k < maxLen; k++ { - var arg []args - for i := k; i > 0; i-- { - argName := varNames[i] - argTyp := varTypes[getUInt(fuzzer)%len(varTypes)] - if getUInt(fuzzer)%10 == 0 { - argTyp += "[]" - } else if getUInt(fuzzer)%10 == 0 { - arrayArgs := getUInt(fuzzer)%30 + 1 - argTyp += fmt.Sprintf("[%d]", arrayArgs) - } - arg = append(arg, args{ - name: argName, - typ: argTyp, - }) - } - abi, err := createABI(name, stateM, payable, arg) - if err != nil { - continue - } - structs, b := unpackPack(abi, name, input) - c := packUnpack(abi, name, &structs) - good = good || b || c - } - if good { - return 1 - } - return 0 -} - -func Fuzz(input []byte) int { - return runFuzzer(input) -} - -func getUInt(fuzzer *fuzz.Fuzzer) int { - var i int - fuzzer.Fuzz(&i) - if i < 0 { - i = -i - if i < 0 { - return 0 - } - } - return i -} diff --git a/tests/fuzzers/abi/abifuzzer_test.go b/tests/fuzzers/abi/abifuzzer_test.go index c66399e1b7..a206beaf91 100644 --- a/tests/fuzzers/abi/abifuzzer_test.go +++ b/tests/fuzzers/abi/abifuzzer_test.go @@ -17,7 +17,13 @@ package abi import ( + "fmt" + "reflect" + "strings" "testing" + + "github.com/ethereum/go-ethereum/accounts/abi" + fuzz "github.com/google/gofuzz" ) // TestReplicate can be used to replicate crashers from the fuzzing tests. @@ -25,19 +31,151 @@ import ( func TestReplicate(t *testing.T) { testString := "\x20\x20\x20\x20\x20\x20\x20\x20\x80\x00\x00\x00\x20\x20\x20\x20\x00" data := []byte(testString) - runFuzzer(data) -} - -// TestGenerateCorpus can be used to add corpus for the fuzzer. -// Just replace corpusHex with the hexEncoded output you want to add to the fuzzer. -func TestGenerateCorpus(t *testing.T) { - /* - corpusHex := "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" - data := common.FromHex(corpusHex) - checksum := sha1.Sum(data) - outf := fmt.Sprintf("corpus/%x", checksum) - if err := os.WriteFile(outf, data, 0777); err != nil { + fuzzAbi(data) +} + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzAbi(data) + }) +} + +var ( + names = []string{"_name", "name", "NAME", "name_", "__", "_name_", "n"} + stateMut = []string{"", "pure", "view", "payable"} + stateMutabilites = []*string{&stateMut[0], &stateMut[1], &stateMut[2], &stateMut[3]} + pays = []string{"", "true", "false"} + payables = []*string{&pays[0], &pays[1]} + vNames = []string{"a", "b", "c", "d", "e", "f", "g"} + varNames = append(vNames, names...) + varTypes = []string{"bool", "address", "bytes", "string", + "uint8", "int8", "uint8", "int8", "uint16", "int16", + "uint24", "int24", "uint32", "int32", "uint40", "int40", "uint48", "int48", "uint56", "int56", + "uint64", "int64", "uint72", "int72", "uint80", "int80", "uint88", "int88", "uint96", "int96", + "uint104", "int104", "uint112", "int112", "uint120", "int120", "uint128", "int128", "uint136", "int136", + "uint144", "int144", "uint152", "int152", "uint160", "int160", "uint168", "int168", "uint176", "int176", + "uint184", "int184", "uint192", "int192", "uint200", "int200", "uint208", "int208", "uint216", "int216", + "uint224", "int224", "uint232", "int232", "uint240", "int240", "uint248", "int248", "uint256", "int256", + "bytes1", "bytes2", "bytes3", "bytes4", "bytes5", "bytes6", "bytes7", "bytes8", "bytes9", "bytes10", "bytes11", + "bytes12", "bytes13", "bytes14", "bytes15", "bytes16", "bytes17", "bytes18", "bytes19", "bytes20", "bytes21", + "bytes22", "bytes23", "bytes24", "bytes25", "bytes26", "bytes27", "bytes28", "bytes29", "bytes30", "bytes31", + "bytes32", "bytes"} +) + +func unpackPack(abi abi.ABI, method string, input []byte) ([]interface{}, bool) { + if out, err := abi.Unpack(method, input); err == nil { + _, err := abi.Pack(method, out...) + if err != nil { + // We have some false positives as we can unpack these type successfully, but not pack them + if err.Error() == "abi: cannot use []uint8 as type [0]int8 as argument" || + err.Error() == "abi: cannot use uint8 as type int8 as argument" { + return out, false + } panic(err) } - */ + return out, true + } + return nil, false +} + +func packUnpack(abi abi.ABI, method string, input *[]interface{}) bool { + if packed, err := abi.Pack(method, input); err == nil { + outptr := reflect.New(reflect.TypeOf(input)) + err := abi.UnpackIntoInterface(outptr.Interface(), method, packed) + if err != nil { + panic(err) + } + out := outptr.Elem().Interface() + if !reflect.DeepEqual(input, out) { + panic(fmt.Sprintf("unpackPack is not equal, \ninput : %x\noutput: %x", input, out)) + } + return true + } + return false +} + +type args struct { + name string + typ string +} + +func createABI(name string, stateMutability, payable *string, inputs []args) (abi.ABI, error) { + sig := fmt.Sprintf(`[{ "type" : "function", "name" : "%v" `, name) + if stateMutability != nil { + sig += fmt.Sprintf(`, "stateMutability": "%v" `, *stateMutability) + } + if payable != nil { + sig += fmt.Sprintf(`, "payable": %v `, *payable) + } + if len(inputs) > 0 { + sig += `, "inputs" : [ {` + for i, inp := range inputs { + sig += fmt.Sprintf(`"name" : "%v", "type" : "%v" `, inp.name, inp.typ) + if i+1 < len(inputs) { + sig += "," + } + } + sig += "} ]" + sig += `, "outputs" : [ {` + for i, inp := range inputs { + sig += fmt.Sprintf(`"name" : "%v", "type" : "%v" `, inp.name, inp.typ) + if i+1 < len(inputs) { + sig += "," + } + } + sig += "} ]" + } + sig += `}]` + + return abi.JSON(strings.NewReader(sig)) +} + +func fuzzAbi(input []byte) int { + good := false + fuzzer := fuzz.NewFromGoFuzz(input) + + name := names[getUInt(fuzzer)%len(names)] + stateM := stateMutabilites[getUInt(fuzzer)%len(stateMutabilites)] + payable := payables[getUInt(fuzzer)%len(payables)] + maxLen := 5 + for k := 1; k < maxLen; k++ { + var arg []args + for i := k; i > 0; i-- { + argName := varNames[i] + argTyp := varTypes[getUInt(fuzzer)%len(varTypes)] + if getUInt(fuzzer)%10 == 0 { + argTyp += "[]" + } else if getUInt(fuzzer)%10 == 0 { + arrayArgs := getUInt(fuzzer)%30 + 1 + argTyp += fmt.Sprintf("[%d]", arrayArgs) + } + arg = append(arg, args{ + name: argName, + typ: argTyp, + }) + } + abi, err := createABI(name, stateM, payable, arg) + if err != nil { + continue + } + structs, b := unpackPack(abi, name, input) + c := packUnpack(abi, name, &structs) + good = good || b || c + } + if good { + return 1 + } + return 0 +} + +func getUInt(fuzzer *fuzz.Fuzzer) int { + var i int + fuzzer.Fuzz(&i) + if i < 0 { + i = -i + if i < 0 { + return 0 + } + } + return i } diff --git a/tests/fuzzers/bitutil/compress_fuzz.go b/tests/fuzzers/bitutil/compress_test.go similarity index 82% rename from tests/fuzzers/bitutil/compress_fuzz.go rename to tests/fuzzers/bitutil/compress_test.go index 5903cf2f93..ed9d27eb30 100644 --- a/tests/fuzzers/bitutil/compress_fuzz.go +++ b/tests/fuzzers/bitutil/compress_test.go @@ -1,4 +1,4 @@ -// Copyright 2017 The go-ethereum Authors +// Copyright 2023 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -18,38 +18,37 @@ package bitutil import ( "bytes" + "testing" "github.com/ethereum/go-ethereum/common/bitutil" ) -// Fuzz implements a go-fuzz fuzzer method to test various encoding method -// invocations. -func Fuzz(data []byte) int { - if len(data) == 0 { - return 0 - } - if data[0]%2 == 0 { - return fuzzEncode(data[1:]) - } - return fuzzDecode(data[1:]) +func FuzzEncoder(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzEncode(data) + }) +} +func FuzzDecoder(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzDecode(data) + }) } // fuzzEncode implements a go-fuzz fuzzer method to test the bitset encoding and // decoding algorithm. -func fuzzEncode(data []byte) int { +func fuzzEncode(data []byte) { proc, _ := bitutil.DecompressBytes(bitutil.CompressBytes(data), len(data)) if !bytes.Equal(data, proc) { panic("content mismatch") } - return 1 } // fuzzDecode implements a go-fuzz fuzzer method to test the bit decoding and // reencoding algorithm. -func fuzzDecode(data []byte) int { +func fuzzDecode(data []byte) { blob, err := bitutil.DecompressBytes(data, 1024) if err != nil { - return 0 + return } // re-compress it (it's OK if the re-compressed differs from the // original - the first input may not have been compressed at all) @@ -66,5 +65,4 @@ func fuzzDecode(data []byte) int { if !bytes.Equal(decomp, blob) { panic("content mismatch") } - return 1 } diff --git a/tests/fuzzers/bls12381/bls12381_fuzz.go b/tests/fuzzers/bls12381/bls12381_fuzz.go index ced87dd41a..f04524f76a 100644 --- a/tests/fuzzers/bls12381/bls12381_fuzz.go +++ b/tests/fuzzers/bls12381/bls12381_fuzz.go @@ -14,9 +14,6 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -//go:build gofuzz -// +build gofuzz - package bls import ( @@ -35,7 +32,7 @@ import ( blst "github.com/supranational/blst/bindings/go" ) -func FuzzCrossPairing(data []byte) int { +func fuzzCrossPairing(data []byte) int { input := bytes.NewReader(data) // get random G1 points @@ -101,7 +98,7 @@ func massageBLST(in []byte) []byte { return out } -func FuzzCrossG1Add(data []byte) int { +func fuzzCrossG1Add(data []byte) int { input := bytes.NewReader(data) // get random G1 points @@ -139,7 +136,7 @@ func FuzzCrossG1Add(data []byte) int { return 1 } -func FuzzCrossG2Add(data []byte) int { +func fuzzCrossG2Add(data []byte) int { input := bytes.NewReader(data) // get random G2 points @@ -177,7 +174,7 @@ func FuzzCrossG2Add(data []byte) int { return 1 } -func FuzzCrossG1MultiExp(data []byte) int { +func fuzzCrossG1MultiExp(data []byte) int { var ( input = bytes.NewReader(data) gethScalars []*big.Int diff --git a/tests/fuzzers/bls12381/bls12381_test.go b/tests/fuzzers/bls12381/bls12381_test.go new file mode 100644 index 0000000000..59e4db31d5 --- /dev/null +++ b/tests/fuzzers/bls12381/bls12381_test.go @@ -0,0 +1,97 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package bls + +import "testing" + +func FuzzCrossPairing(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzCrossPairing(data) + }) +} + +func FuzzCrossG1Add(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzCrossG1Add(data) + }) +} + +func FuzzCrossG2Add(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzCrossG2Add(data) + }) +} + +func FuzzCrossG1MultiExp(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzCrossG1MultiExp(data) + }) +} + +func FuzzG1Add(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsG1Add, data) + }) +} + +func FuzzG1Mul(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsG1Mul, data) + }) +} + +func FuzzG1MultiExp(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsG1MultiExp, data) + }) +} + +func FuzzG2Add(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsG2Add, data) + }) +} + +func FuzzG2Mul(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsG2Mul, data) + }) +} + +func FuzzG2MultiExp(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsG2MultiExp, data) + }) +} + +func FuzzPairing(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsPairing, data) + }) +} + +func FuzzMapG1(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsMapG1, data) + }) +} + +func FuzzMapG2(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(blsMapG2, data) + }) +} diff --git a/tests/fuzzers/bls12381/precompile_fuzzer.go b/tests/fuzzers/bls12381/precompile_fuzzer.go index cab2bcba38..763ed56e9f 100644 --- a/tests/fuzzers/bls12381/precompile_fuzzer.go +++ b/tests/fuzzers/bls12381/precompile_fuzzer.go @@ -36,16 +36,6 @@ const ( blsMapG2 = byte(18) ) -func FuzzG1Add(data []byte) int { return fuzz(blsG1Add, data) } -func FuzzG1Mul(data []byte) int { return fuzz(blsG1Mul, data) } -func FuzzG1MultiExp(data []byte) int { return fuzz(blsG1MultiExp, data) } -func FuzzG2Add(data []byte) int { return fuzz(blsG2Add, data) } -func FuzzG2Mul(data []byte) int { return fuzz(blsG2Mul, data) } -func FuzzG2MultiExp(data []byte) int { return fuzz(blsG2MultiExp, data) } -func FuzzPairing(data []byte) int { return fuzz(blsPairing, data) } -func FuzzMapG1(data []byte) int { return fuzz(blsMapG1, data) } -func FuzzMapG2(data []byte) int { return fuzz(blsMapG2, data) } - func checkInput(id byte, inputLen int) bool { switch id { case blsG1Add: diff --git a/tests/fuzzers/bn256/bn256_fuzz.go b/tests/fuzzers/bn256/bn256_fuzz.go index abf1b88615..75f7d59dee 100644 --- a/tests/fuzzers/bn256/bn256_fuzz.go +++ b/tests/fuzzers/bn256/bn256_fuzz.go @@ -14,9 +14,6 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -//go:build gofuzz -// +build gofuzz - package bn256 import ( @@ -64,8 +61,8 @@ func getG2Points(input io.Reader) (*cloudflare.G2, *google.G2, *bn254.G2Affine) return xc, xg, xs } -// FuzzAdd fuzzez bn256 addition between the Google and Cloudflare libraries. -func FuzzAdd(data []byte) int { +// fuzzAdd fuzzez bn256 addition between the Google and Cloudflare libraries. +func fuzzAdd(data []byte) int { input := bytes.NewReader(data) xc, xg, xs := getG1Points(input) if xc == nil { @@ -97,9 +94,9 @@ func FuzzAdd(data []byte) int { return 1 } -// FuzzMul fuzzez bn256 scalar multiplication between the Google and Cloudflare +// fuzzMul fuzzez bn256 scalar multiplication between the Google and Cloudflare // libraries. -func FuzzMul(data []byte) int { +func fuzzMul(data []byte) int { input := bytes.NewReader(data) pc, pg, ps := getG1Points(input) if pc == nil { @@ -139,7 +136,7 @@ func FuzzMul(data []byte) int { return 1 } -func FuzzPair(data []byte) int { +func fuzzPair(data []byte) int { input := bytes.NewReader(data) pc, pg, ps := getG1Points(input) if pc == nil { diff --git a/tests/fuzzers/snap/debug/main.go b/tests/fuzzers/bn256/bn256_test.go similarity index 64% rename from tests/fuzzers/snap/debug/main.go rename to tests/fuzzers/bn256/bn256_test.go index df46bb1e22..8b2f962284 100644 --- a/tests/fuzzers/snap/debug/main.go +++ b/tests/fuzzers/bn256/bn256_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 The go-ethereum Authors +// Copyright 2023 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -14,25 +14,24 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package main +package bn256 -import ( - "fmt" - "os" +import "testing" - "github.com/ethereum/go-ethereum/tests/fuzzers/snap" -) +func FuzzAdd(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzAdd(data) + }) +} + +func FuzzMul(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzMul(data) + }) +} -func main() { - if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "Usage: debug \n") - os.Exit(1) - } - crasher := os.Args[1] - data, err := os.ReadFile(crasher) - if err != nil { - fmt.Fprintf(os.Stderr, "error loading crasher %v: %v", crasher, err) - os.Exit(1) - } - snap.FuzzTrieNodes(data) +func FuzzPair(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzPair(data) + }) } diff --git a/tests/fuzzers/difficulty/difficulty-fuzz.go b/tests/fuzzers/difficulty/difficulty-fuzz.go index e8753bb623..fbbd7f6876 100644 --- a/tests/fuzzers/difficulty/difficulty-fuzz.go +++ b/tests/fuzzers/difficulty/difficulty-fuzz.go @@ -75,7 +75,7 @@ func (f *fuzzer) readBool() bool { // - 0 otherwise // // other values are reserved for future use. -func Fuzz(data []byte) int { +func fuzz(data []byte) int { f := fuzzer{ input: bytes.NewReader(data), exhausted: false, diff --git a/tests/fuzzers/stacktrie/debug/main.go b/tests/fuzzers/difficulty/difficulty_test.go similarity index 63% rename from tests/fuzzers/stacktrie/debug/main.go rename to tests/fuzzers/difficulty/difficulty_test.go index 6b634f05c2..49beedb486 100644 --- a/tests/fuzzers/stacktrie/debug/main.go +++ b/tests/fuzzers/difficulty/difficulty_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 The go-ethereum Authors +// Copyright 2023 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -14,25 +14,12 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package main +package difficulty -import ( - "fmt" - "os" +import "testing" - "github.com/ethereum/go-ethereum/tests/fuzzers/stacktrie" -) - -func main() { - if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "Usage: debug ") - os.Exit(1) - } - crasher := os.Args[1] - data, err := os.ReadFile(crasher) - if err != nil { - fmt.Fprintf(os.Stderr, "error loading crasher %v: %v", crasher, err) - os.Exit(1) - } - stacktrie.Debug(data) +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) } diff --git a/tests/fuzzers/keystore/corpus/0176eaf52ed014ec5c91cf4afa070dd3fd469077-1 b/tests/fuzzers/keystore/corpus/0176eaf52ed014ec5c91cf4afa070dd3fd469077-1 deleted file mode 100644 index 1c0ecf5250..0000000000 --- a/tests/fuzzers/keystore/corpus/0176eaf52ed014ec5c91cf4afa070dd3fd469077-1 +++ /dev/null @@ -1 +0,0 @@ -ns©›,²Ô \ No newline at end of file diff --git a/tests/fuzzers/keystore/keystore-fuzzer.go b/tests/fuzzers/keystore/keystore-fuzzer.go index e3bcae92e1..07a85d77b5 100644 --- a/tests/fuzzers/keystore/keystore-fuzzer.go +++ b/tests/fuzzers/keystore/keystore-fuzzer.go @@ -22,7 +22,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/keystore" ) -func Fuzz(input []byte) int { +func fuzz(input []byte) int { ks := keystore.NewKeyStore("/tmp/ks", keystore.LightScryptN, keystore.LightScryptP) a, err := ks.NewAccount(string(input)) diff --git a/tests/fuzzers/difficulty/debug/main.go b/tests/fuzzers/keystore/keystore_test.go similarity index 63% rename from tests/fuzzers/difficulty/debug/main.go rename to tests/fuzzers/keystore/keystore_test.go index 70cf092568..167ff6c471 100644 --- a/tests/fuzzers/difficulty/debug/main.go +++ b/tests/fuzzers/keystore/keystore_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 The go-ethereum Authors +// Copyright 2023 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -14,25 +14,12 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package main +package keystore -import ( - "fmt" - "os" +import "testing" - "github.com/ethereum/go-ethereum/tests/fuzzers/difficulty" -) - -func main() { - if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "Usage: debug ") - os.Exit(1) - } - crasher := os.Args[1] - data, err := os.ReadFile(crasher) - if err != nil { - fmt.Fprintf(os.Stderr, "error loading crasher %v: %v", crasher, err) - os.Exit(1) - } - difficulty.Fuzz(data) +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) } diff --git a/tests/fuzzers/les/debug/main.go b/tests/fuzzers/les/debug/main.go deleted file mode 100644 index 77a6127030..0000000000 --- a/tests/fuzzers/les/debug/main.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package main - -import ( - "fmt" - "os" - - "github.com/ethereum/go-ethereum/tests/fuzzers/les" -) - -func main() { - if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "Usage: debug \n") - fmt.Fprintf(os.Stderr, "Example\n") - fmt.Fprintf(os.Stderr, " $ debug ../crashers/4bbef6857c733a87ecf6fd8b9e7238f65eb9862a\n") - os.Exit(1) - } - crasher := os.Args[1] - data, err := os.ReadFile(crasher) - if err != nil { - fmt.Fprintf(os.Stderr, "error loading crasher %v: %v", crasher, err) - os.Exit(1) - } - les.Fuzz(data) -} diff --git a/tests/fuzzers/les/les-fuzzer.go b/tests/fuzzers/les/les-fuzzer.go index 240a0d9412..209dda0bb9 100644 --- a/tests/fuzzers/les/les-fuzzer.go +++ b/tests/fuzzers/les/les-fuzzer.go @@ -279,7 +279,7 @@ func (f *fuzzer) doFuzz(msgCode uint64, packet interface{}) { fn(f, peer, func() bool { return true }) } -func Fuzz(input []byte) int { +func fuzz(input []byte) int { // We expect some large inputs if len(input) < 100 { return -1 diff --git a/tests/fuzzers/les/les_test.go b/tests/fuzzers/les/les_test.go new file mode 100644 index 0000000000..53af45ceb4 --- /dev/null +++ b/tests/fuzzers/les/les_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package les + +import "testing" + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} diff --git a/tests/fuzzers/rangeproof/debug/main.go b/tests/fuzzers/rangeproof/debug/main.go deleted file mode 100644 index d4cab8ec46..0000000000 --- a/tests/fuzzers/rangeproof/debug/main.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package main - -import ( - "fmt" - "os" - - "github.com/ethereum/go-ethereum/tests/fuzzers/rangeproof" -) - -func main() { - if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "Usage: debug \n") - fmt.Fprintf(os.Stderr, "Example\n") - fmt.Fprintf(os.Stderr, " $ debug ../crashers/4bbef6857c733a87ecf6fd8b9e7238f65eb9862a\n") - os.Exit(1) - } - crasher := os.Args[1] - data, err := os.ReadFile(crasher) - if err != nil { - fmt.Fprintf(os.Stderr, "error loading crasher %v: %v", crasher, err) - os.Exit(1) - } - rangeproof.Fuzz(data) -} diff --git a/tests/fuzzers/rangeproof/rangeproof-fuzzer.go b/tests/fuzzers/rangeproof/rangeproof-fuzzer.go index c9d7815536..6b5ca90880 100644 --- a/tests/fuzzers/rangeproof/rangeproof-fuzzer.go +++ b/tests/fuzzers/rangeproof/rangeproof-fuzzer.go @@ -185,7 +185,7 @@ func (f *fuzzer) fuzz() int { // - 0 otherwise // // other values are reserved for future use. -func Fuzz(input []byte) int { +func fuzz(input []byte) int { if len(input) < 100 { return 0 } diff --git a/tests/fuzzers/rangeproof/rangeproof_test.go b/tests/fuzzers/rangeproof/rangeproof_test.go new file mode 100644 index 0000000000..bc7badc5b3 --- /dev/null +++ b/tests/fuzzers/rangeproof/rangeproof_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rangeproof + +import "testing" + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} diff --git a/tests/fuzzers/rlp/rlp_fuzzer.go b/tests/fuzzers/rlp/rlp_fuzzer.go index 9fcdb57769..0da8ccdd77 100644 --- a/tests/fuzzers/rlp/rlp_fuzzer.go +++ b/tests/fuzzers/rlp/rlp_fuzzer.go @@ -38,7 +38,7 @@ func decodeEncode(input []byte, val interface{}, i int) { } } -func Fuzz(input []byte) int { +func fuzz(input []byte) int { if len(input) == 0 { return 0 } diff --git a/tests/fuzzers/rlp/rlp_test.go b/tests/fuzzers/rlp/rlp_test.go new file mode 100644 index 0000000000..377b3961bf --- /dev/null +++ b/tests/fuzzers/rlp/rlp_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rlp + +import "testing" + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} diff --git a/tests/fuzzers/runtime/runtime_fuzz.go b/tests/fuzzers/runtime/runtime_test.go similarity index 67% rename from tests/fuzzers/runtime/runtime_fuzz.go rename to tests/fuzzers/runtime/runtime_test.go index b30e9243d8..2d73a56ca1 100644 --- a/tests/fuzzers/runtime/runtime_fuzz.go +++ b/tests/fuzzers/runtime/runtime_test.go @@ -1,4 +1,4 @@ -// Copyright 2017 The go-ethereum Authors +// Copyright 2023 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -17,20 +17,15 @@ package runtime import ( + "testing" + "github.com/ethereum/go-ethereum/core/vm/runtime" ) -// Fuzz is the basic entry point for the go-fuzz tool -// -// This returns 1 for valid parse:able/runnable code, 0 -// for invalid opcode. -func Fuzz(input []byte) int { - _, _, err := runtime.Execute(input, input, &runtime.Config{ - GasLimit: 12000000, +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, code, input []byte) { + runtime.Execute(code, input, &runtime.Config{ + GasLimit: 12000000, + }) }) - // invalid opcode - if err != nil && len(err.Error()) > 6 && err.Error()[:7] == "invalid" { - return 0 - } - return 1 } diff --git a/tests/fuzzers/secp256k1/secp_fuzzer.go b/tests/fuzzers/secp256k1/secp_fuzzer.go deleted file mode 100644 index 47083d5fe3..0000000000 --- a/tests/fuzzers/secp256k1/secp_fuzzer.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -// build +gofuzz - -package secp256k1 - -import ( - "fmt" - - "github.com/btcsuite/btcd/btcec/v2" - "github.com/ethereum/go-ethereum/crypto/secp256k1" - fuzz "github.com/google/gofuzz" -) - -func Fuzz(input []byte) int { - var ( - fuzzer = fuzz.NewFromGoFuzz(input) - curveA = secp256k1.S256() - curveB = btcec.S256() - dataP1 []byte - dataP2 []byte - ) - // first point - fuzzer.Fuzz(&dataP1) - x1, y1 := curveB.ScalarBaseMult(dataP1) - // second point - fuzzer.Fuzz(&dataP2) - x2, y2 := curveB.ScalarBaseMult(dataP2) - resAX, resAY := curveA.Add(x1, y1, x2, y2) - resBX, resBY := curveB.Add(x1, y1, x2, y2) - if resAX.Cmp(resBX) != 0 || resAY.Cmp(resBY) != 0 { - fmt.Printf("%s %s %s %s\n", x1, y1, x2, y2) - panic(fmt.Sprintf("Addition failed: geth: %s %s btcd: %s %s", resAX, resAY, resBX, resBY)) - } - return 0 -} diff --git a/tests/fuzzers/secp256k1/secp_test.go b/tests/fuzzers/secp256k1/secp_test.go index 0ca16cb9bf..fbdd8e6ac2 100644 --- a/tests/fuzzers/secp256k1/secp_test.go +++ b/tests/fuzzers/secp256k1/secp_test.go @@ -16,9 +16,39 @@ package secp256k1 -import "testing" +import ( + "fmt" + "testing" + + "github.com/btcsuite/btcd/btcec/v2" + "github.com/ethereum/go-ethereum/crypto/secp256k1" +) func TestFuzzer(t *testing.T) { - test := "00000000N0000000/R00000000000000000U0000S0000000mkhP000000000000000U" - Fuzz([]byte(test)) + a, b := "00000000N0000000/R0000000000000000", "0U0000S0000000mkhP000000000000000U" + fuzz([]byte(a), []byte(b)) +} + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, a, b []byte) { + fuzz(a, b) + }) +} + +func fuzz(dataP1, dataP2 []byte) int { + var ( + curveA = secp256k1.S256() + curveB = btcec.S256() + ) + // first point + x1, y1 := curveB.ScalarBaseMult(dataP1) + // second points + x2, y2 := curveB.ScalarBaseMult(dataP2) + resAX, resAY := curveA.Add(x1, y1, x2, y2) + resBX, resBY := curveB.Add(x1, y1, x2, y2) + if resAX.Cmp(resBX) != 0 || resAY.Cmp(resBY) != 0 { + fmt.Printf("%s %s %s %s\n", x1, y1, x2, y2) + panic(fmt.Sprintf("Addition failed: geth: %s %s btcd: %s %s", resAX, resAY, resBX, resBY)) + } + return 0 } diff --git a/tests/fuzzers/snap/fuzz_handler.go b/tests/fuzzers/snap/fuzz_handler.go index 784b526dc0..20521bb92a 100644 --- a/tests/fuzzers/snap/fuzz_handler.go +++ b/tests/fuzzers/snap/fuzz_handler.go @@ -141,20 +141,3 @@ func doFuzz(input []byte, obj interface{}, code int) int { } return 1 } - -// To run a fuzzer, do -// $ CGO_ENABLED=0 go-fuzz-build -func FuzzTrieNodes -// $ go-fuzz - -func FuzzARange(input []byte) int { - return doFuzz(input, &snap.GetAccountRangePacket{}, snap.GetAccountRangeMsg) -} -func FuzzSRange(input []byte) int { - return doFuzz(input, &snap.GetStorageRangesPacket{}, snap.GetStorageRangesMsg) -} -func FuzzByteCodes(input []byte) int { - return doFuzz(input, &snap.GetByteCodesPacket{}, snap.GetByteCodesMsg) -} -func FuzzTrieNodes(input []byte) int { - return doFuzz(input, &snap.GetTrieNodesPacket{}, snap.GetTrieNodesMsg) -} diff --git a/tests/fuzzers/vflux/debug/main.go b/tests/fuzzers/snap/fuzz_test.go similarity index 51% rename from tests/fuzzers/vflux/debug/main.go rename to tests/fuzzers/snap/fuzz_test.go index e6cec04606..1c39f2bb50 100644 --- a/tests/fuzzers/vflux/debug/main.go +++ b/tests/fuzzers/snap/fuzz_test.go @@ -1,4 +1,4 @@ -// Copyright 2020 The go-ethereum Authors +// Copyright 2023 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -14,30 +14,34 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package main +package snap import ( - "fmt" - "os" + "testing" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/tests/fuzzers/vflux" + "github.com/ethereum/go-ethereum/eth/protocols/snap" ) -func main() { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) +func FuzzARange(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &snap.GetAccountRangePacket{}, snap.GetAccountRangeMsg) + }) +} + +func FuzzSRange(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &snap.GetStorageRangesPacket{}, snap.GetStorageRangesMsg) + }) +} + +func FuzzByteCodes(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &snap.GetByteCodesPacket{}, snap.GetByteCodesMsg) + }) +} - if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "Usage: debug \n") - fmt.Fprintf(os.Stderr, "Example\n") - fmt.Fprintf(os.Stderr, " $ debug ../crashers/4bbef6857c733a87ecf6fd8b9e7238f65eb9862a\n") - os.Exit(1) - } - crasher := os.Args[1] - data, err := os.ReadFile(crasher) - if err != nil { - fmt.Fprintf(os.Stderr, "error loading crasher %v: %v", crasher, err) - os.Exit(1) - } - vflux.FuzzClientPool(data) +func FuzzTrieNodes(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &snap.GetTrieNodesPacket{}, snap.GetTrieNodesMsg) + }) } diff --git a/tests/fuzzers/stacktrie/trie_fuzzer.go b/tests/fuzzers/stacktrie/trie_fuzzer.go index b818f2ec3c..9e02176e3e 100644 --- a/tests/fuzzers/stacktrie/trie_fuzzer.go +++ b/tests/fuzzers/stacktrie/trie_fuzzer.go @@ -115,7 +115,7 @@ type kv struct { // - 0 otherwise // // other values are reserved for future use. -func Fuzz(data []byte) int { +func fuzz(data []byte) int { f := fuzzer{ input: bytes.NewReader(data), exhausted: false, diff --git a/tests/fuzzers/stacktrie/trie_test.go b/tests/fuzzers/stacktrie/trie_test.go new file mode 100644 index 0000000000..f6f755f76a --- /dev/null +++ b/tests/fuzzers/stacktrie/trie_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package stacktrie + +import "testing" + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} diff --git a/tests/fuzzers/trie/corpus/data b/tests/fuzzers/trie/corpus/data deleted file mode 100644 index c4a4839cb8..0000000000 --- a/tests/fuzzers/trie/corpus/data +++ /dev/null @@ -1 +0,0 @@ -asdlfkjasf23oiejfasdfadkfqlkjfasdlkfjalwk4jfalsdkfjawlefkjsadlfkjasldkfjwalefkjasdlfkjM \ No newline at end of file diff --git a/tests/fuzzers/trie/trie-fuzzer.go b/tests/fuzzers/trie/trie-fuzzer.go index 687f5efb1c..a505fa78a0 100644 --- a/tests/fuzzers/trie/trie-fuzzer.go +++ b/tests/fuzzers/trie/trie-fuzzer.go @@ -130,7 +130,7 @@ func Generate(input []byte) randTest { // - 0 otherwise // // other values are reserved for future use. -func Fuzz(input []byte) int { +func fuzz(input []byte) int { program := Generate(input) if len(program) == 0 { return 0 diff --git a/tests/fuzzers/trie/trie_test.go b/tests/fuzzers/trie/trie_test.go new file mode 100644 index 0000000000..a7d28a806e --- /dev/null +++ b/tests/fuzzers/trie/trie_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package trie + +import "testing" + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} diff --git a/tests/fuzzers/txfetcher/txfetcher_fuzzer.go b/tests/fuzzers/txfetcher/txfetcher_fuzzer.go index 8b501645b6..51f2fc3b4d 100644 --- a/tests/fuzzers/txfetcher/txfetcher_fuzzer.go +++ b/tests/fuzzers/txfetcher/txfetcher_fuzzer.go @@ -48,7 +48,7 @@ func init() { } } -func Fuzz(input []byte) int { +func fuzz(input []byte) int { // Don't generate insanely large test cases, not much value in them if len(input) > 16*1024 { return 0 diff --git a/tests/fuzzers/txfetcher/txfetcher_test.go b/tests/fuzzers/txfetcher/txfetcher_test.go new file mode 100644 index 0000000000..ac2e6b1c67 --- /dev/null +++ b/tests/fuzzers/txfetcher/txfetcher_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package txfetcher + +import "testing" + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} diff --git a/tests/fuzzers/vflux/clientpool-fuzzer.go b/tests/fuzzers/vflux/clientpool-fuzzer.go index b3b523cc82..de694a7b3f 100644 --- a/tests/fuzzers/vflux/clientpool-fuzzer.go +++ b/tests/fuzzers/vflux/clientpool-fuzzer.go @@ -214,7 +214,7 @@ func (f *fuzzer) atomicBalanceOp(balance vfs.AtomicBalanceOperator, id enode.ID) } } -func FuzzClientPool(input []byte) int { +func fuzzClientPool(input []byte) int { if len(input) > 10000 { return -1 } diff --git a/tests/fuzzers/vflux/clientpool_test.go b/tests/fuzzers/vflux/clientpool_test.go new file mode 100644 index 0000000000..40c5f22905 --- /dev/null +++ b/tests/fuzzers/vflux/clientpool_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package vflux + +import "testing" + +func FuzzClientPool(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzClientPool(data) + }) +} From ec1a0502bfab017fe8fa28dd0c6d40e725f17d92 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Thu, 19 Oct 2023 16:08:36 +0800 Subject: [PATCH 010/223] rpc: increase timeout in TestClientWebsocketPing (#28371) --- rpc/websocket_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpc/websocket_test.go b/rpc/websocket_test.go index e4ac5c3fad..d3e15d94c9 100644 --- a/rpc/websocket_test.go +++ b/rpc/websocket_test.go @@ -215,7 +215,7 @@ func TestClientWebsocketPing(t *testing.T) { var ( sendPing = make(chan struct{}) server = wsPingTestServer(t, sendPing) - ctx, cancel = context.WithTimeout(context.Background(), 1*time.Second) + ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second) ) defer cancel() defer server.Shutdown(ctx) From 4d3c0d41f40fa05c44fd198ca9167d3d7300c471 Mon Sep 17 00:00:00 2001 From: Sina Mahmoodi <1591639+s1na@users.noreply.github.com> Date: Thu, 19 Oct 2023 10:30:55 +0200 Subject: [PATCH 011/223] eth/filters: fix flaky test TestPendingTxFilterDeadlock (#28376) --- eth/filters/filter_system_test.go | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/eth/filters/filter_system_test.go b/eth/filters/filter_system_test.go index b5d716ae59..f7e5327c56 100644 --- a/eth/filters/filter_system_test.go +++ b/eth/filters/filter_system_test.go @@ -915,10 +915,14 @@ func TestPendingTxFilterDeadlock(t *testing.T) { // Create a bunch of filters that will // timeout either in 100ms or 200ms - fids := make([]rpc.ID, 20) - for i := 0; i < len(fids); i++ { + subs := make([]*Subscription, 20) + for i := 0; i < len(subs); i++ { fid := api.NewPendingTransactionFilter(nil) - fids[i] = fid + f, ok := api.filters[fid] + if !ok { + t.Fatalf("Filter %s should exist", fid) + } + subs[i] = f.s // Wait for at least one tx to arrive in filter for { hashes, err := api.GetFilterChanges(fid) @@ -932,21 +936,13 @@ func TestPendingTxFilterDeadlock(t *testing.T) { } } - // Wait until filters have timed out - time.Sleep(3 * timeout) - - // If tx loop doesn't consume `done` after a second - // it's hanging. - select { - case done <- struct{}{}: - // Check that all filters have been uninstalled - for _, fid := range fids { - if _, err := api.GetFilterChanges(fid); err == nil { - t.Errorf("Filter %s should have been uninstalled\n", fid) - } + // Wait until filters have timed out and have been uninstalled. + for _, sub := range subs { + select { + case <-sub.Err(): + case <-time.After(1 * time.Second): + t.Fatalf("Filter timeout is hanging") } - case <-time.After(1 * time.Second): - t.Error("Tx sending loop hangs") } } From cd2953567268777507b1ec29269315324fb5aa9c Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Thu, 19 Oct 2023 14:04:26 +0200 Subject: [PATCH 012/223] crypto/blake2b: put architecture-dependent features behind build-tag (#28381) This change to fixes a compilation-flaw on master, by putting architecture-specific functions behind corresponding build tags. --- crypto/blake2b/blake2b_f_fuzz_test.go | 75 +++++++++++++++++++++++++++ crypto/blake2b/blake2b_f_test.go | 58 --------------------- 2 files changed, 75 insertions(+), 58 deletions(-) create mode 100644 crypto/blake2b/blake2b_f_fuzz_test.go diff --git a/crypto/blake2b/blake2b_f_fuzz_test.go b/crypto/blake2b/blake2b_f_fuzz_test.go new file mode 100644 index 0000000000..1de9a62de9 --- /dev/null +++ b/crypto/blake2b/blake2b_f_fuzz_test.go @@ -0,0 +1,75 @@ +// Only enable fuzzer on platforms with AVX enabled +//go:build go1.7 && amd64 && !gccgo && !appengine +// +build go1.7,amd64,!gccgo,!appengine + +package blake2b + +import ( + "encoding/binary" + "testing" +) + +func Fuzz(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data) + }) +} + +func fuzz(data []byte) { + // Make sure the data confirms to the input model + if len(data) != 211 { + return + } + // Parse everything and call all the implementations + var ( + rounds = binary.BigEndian.Uint16(data[0:2]) + + h [8]uint64 + m [16]uint64 + t [2]uint64 + f uint64 + ) + + for i := 0; i < 8; i++ { + offset := 2 + i*8 + h[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) + } + for i := 0; i < 16; i++ { + offset := 66 + i*8 + m[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) + } + t[0] = binary.LittleEndian.Uint64(data[194:202]) + t[1] = binary.LittleEndian.Uint64(data[202:210]) + + if data[210]%2 == 1 { // Avoid spinning the fuzzer to hit 0/1 + f = 0xFFFFFFFFFFFFFFFF + } + + // Run the blake2b compression on all instruction sets and cross reference + want := h + fGeneric(&want, &m, t[0], t[1], f, uint64(rounds)) + + have := h + if useSSE4 { + fSSE4(&have, &m, t[0], t[1], f, uint64(rounds)) + if have != want { + panic("SSE4 mismatches generic algo") + } + } + + if useAVX { + have = h + fAVX(&have, &m, t[0], t[1], f, uint64(rounds)) + if have != want { + panic("AVX mismatches generic algo") + } + } + + if useAVX2 { + have = h + fAVX2(&have, &m, t[0], t[1], f, uint64(rounds)) + if have != want { + panic("AVX2 mismatches generic algo") + } + } +} diff --git a/crypto/blake2b/blake2b_f_test.go b/crypto/blake2b/blake2b_f_test.go index 983c65a749..4e07d131cd 100644 --- a/crypto/blake2b/blake2b_f_test.go +++ b/crypto/blake2b/blake2b_f_test.go @@ -1,7 +1,6 @@ package blake2b import ( - "encoding/binary" "fmt" "reflect" "testing" @@ -58,60 +57,3 @@ var testVectorsF = []testVector{ }, }, } - -func Fuzz(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzz(data) - }) -} - -func fuzz(data []byte) { - // Make sure the data confirms to the input model - if len(data) != 211 { - return - } - // Parse everything and call all the implementations - var ( - rounds = binary.BigEndian.Uint16(data[0:2]) - - h [8]uint64 - m [16]uint64 - t [2]uint64 - f uint64 - ) - - for i := 0; i < 8; i++ { - offset := 2 + i*8 - h[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) - } - for i := 0; i < 16; i++ { - offset := 66 + i*8 - m[i] = binary.LittleEndian.Uint64(data[offset : offset+8]) - } - t[0] = binary.LittleEndian.Uint64(data[194:202]) - t[1] = binary.LittleEndian.Uint64(data[202:210]) - - if data[210]%2 == 1 { // Avoid spinning the fuzzer to hit 0/1 - f = 0xFFFFFFFFFFFFFFFF - } - - // Run the blake2b compression on all instruction sets and cross reference - want := h - fGeneric(&want, &m, t[0], t[1], f, uint64(rounds)) - - have := h - fSSE4(&have, &m, t[0], t[1], f, uint64(rounds)) - if have != want { - panic("SSE4 mismatches generic algo") - } - have = h - fAVX(&have, &m, t[0], t[1], f, uint64(rounds)) - if have != want { - panic("AVX mismatches generic algo") - } - have = h - fAVX2(&have, &m, t[0], t[1], f, uint64(rounds)) - if have != want { - panic("AVX2 mismatches generic algo") - } -} From c1d5a012ea4b824e902db14e47bf147d727c2657 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Fri, 20 Oct 2023 13:35:49 +0200 Subject: [PATCH 013/223] core/state, tests: fix memory leak via fastcache (#28387) This change fixes a memory leak, when running either state-tests or blockchain-tests, we allocate a `1MB` fastcache during snapshot generation. `fastcache` is a bit special, and requires a `Reset()` (it has it's own memory allocator). The `1MB` was hidden [here](https://github.com/ethereum/go-ethereum/blob/master/tests/state_test_util.go#L333) and [here](https://github.com/ethereum/go-ethereum/blob/master/tests/block_test_util.go#L146) respectively. --- appveyor.yml | 2 +- build/ci.go | 4 ++++ core/blockchain.go | 1 + core/state/snapshot/disklayer.go | 10 ++++++++++ core/state/snapshot/snapshot.go | 7 +++++++ tests/state_test_util.go | 3 +++ 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 114aec644b..4a8c4b737a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -54,4 +54,4 @@ for: - go run build/ci.go archive -arch %GETH_ARCH% -type zip -signer WINDOWS_SIGNING_KEY -upload gethstore/builds - go run build/ci.go nsis -arch %GETH_ARCH% -signer WINDOWS_SIGNING_KEY -upload gethstore/builds test_script: - - go run build/ci.go test -dlgo -arch %GETH_ARCH% -cc %GETH_CC% + - go run build/ci.go test -dlgo -arch %GETH_ARCH% -cc %GETH_CC% -short diff --git a/build/ci.go b/build/ci.go index 1ff3fb5bf8..46f1ac2812 100644 --- a/build/ci.go +++ b/build/ci.go @@ -285,6 +285,7 @@ func doTest(cmdline []string) { coverage = flag.Bool("coverage", false, "Whether to record code coverage") verbose = flag.Bool("v", false, "Whether to log verbosely") race = flag.Bool("race", false, "Execute the race detector") + short = flag.Bool("short", false, "Pass the 'short'-flag to go test") cachedir = flag.String("cachedir", "./build/cache", "directory for caching downloads") ) flag.CommandLine.Parse(cmdline) @@ -318,6 +319,9 @@ func doTest(cmdline []string) { if *race { gotest.Args = append(gotest.Args, "-race") } + if *short { + gotest.Args = append(gotest.Args, "-short") + } packages := []string{"./..."} if len(flag.CommandLine.Args()) > 0 { diff --git a/core/blockchain.go b/core/blockchain.go index baf2f9f82f..fc5c249ce2 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -989,6 +989,7 @@ func (bc *BlockChain) Stop() { if snapBase, err = bc.snaps.Journal(bc.CurrentBlock().Root); err != nil { log.Error("Failed to journal state snapshot", "err", err) } + bc.snaps.Release() } if bc.triedb.Scheme() == rawdb.PathScheme { // Ensure that the in-memory trie nodes are journaled to disk properly. diff --git a/core/state/snapshot/disklayer.go b/core/state/snapshot/disklayer.go index 513f0f5aba..d563b67ca4 100644 --- a/core/state/snapshot/disklayer.go +++ b/core/state/snapshot/disklayer.go @@ -45,6 +45,16 @@ type diskLayer struct { lock sync.RWMutex } +// Release releases underlying resources; specifically the fastcache requires +// Reset() in order to not leak memory. +// OBS: It does not invoke Close on the diskdb +func (dl *diskLayer) Release() error { + if dl.cache != nil { + dl.cache.Reset() + } + return nil +} + // Root returns root hash for which this snapshot was made. func (dl *diskLayer) Root() common.Hash { return dl.root diff --git a/core/state/snapshot/snapshot.go b/core/state/snapshot/snapshot.go index e30a0005cc..6389842382 100644 --- a/core/state/snapshot/snapshot.go +++ b/core/state/snapshot/snapshot.go @@ -656,6 +656,13 @@ func diffToDisk(bottom *diffLayer) *diskLayer { return res } +// Release releases resources +func (t *Tree) Release() { + if dl := t.disklayer(); dl != nil { + dl.Release() + } +} + // Journal commits an entire diff hierarchy to disk into a single journal entry. // This is meant to be used during shutdown to persist the snapshot without // flattening everything down (bad for reorgs). diff --git a/tests/state_test_util.go b/tests/state_test_util.go index 8c255c1b5b..745a3c6b28 100644 --- a/tests/state_test_util.go +++ b/tests/state_test_util.go @@ -200,6 +200,9 @@ func (t *StateTest) Run(subtest StateSubtest, vmconfig vm.Config, snapshotter bo if triedb != nil { triedb.Close() } + if snaps != nil { + snaps.Release() + } }() checkedErr := t.checkError(subtest, err) if checkedErr != nil { From a6a0ae45b69a95b38b7cb2d085e7833c88b72164 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Sun, 22 Oct 2023 15:05:04 +0100 Subject: [PATCH 014/223] crypto/kzg4844: use the new trusted setup file and format (#28383) Changes the trusted_setup to the one created during the kzg-ceremony. The trusted setup file can be found in the consensus specs: https://github.com/ethereum/consensus-specs/blob/dev/presets/mainnet/trusted_setups/trusted_setup_4096.json --------- Co-authored-by: Marius van der Wijden --- build/checksums.txt | 6 +- .../testdata/precompiles/pointEvaluation.json | 2 +- crypto/kzg4844/trusted_setup.json | 12422 ++++++---------- go.mod | 4 +- go.sum | 8 +- 5 files changed, 4172 insertions(+), 8270 deletions(-) diff --git a/build/checksums.txt b/build/checksums.txt index c752fb8ccd..dd8a9cdbf0 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -1,9 +1,9 @@ # This file contains sha256 checksums of optional build dependencies. -# version:spec-tests 1.0.5 +# version:spec-tests 1.0.6 # https://github.com/ethereum/execution-spec-tests/releases -# https://github.com/ethereum/execution-spec-tests/releases/download/v1.0.5/ -d4fd06a0e5f94beb970f3c68374b38ef9de82d4be77517d326bcf739c3cbf3a2 fixtures_develop.tar.gz +# https://github.com/ethereum/execution-spec-tests/releases/download/v1.0.6/ +485af7b66cf41eb3a8c1bd46632913b8eb95995df867cf665617bbc9b4beedd1 fixtures_develop.tar.gz # version:golang 1.21.3 # https://go.dev/dl/ diff --git a/core/vm/testdata/precompiles/pointEvaluation.json b/core/vm/testdata/precompiles/pointEvaluation.json index 93fc66d836..dfb2cad2e3 100644 --- a/core/vm/testdata/precompiles/pointEvaluation.json +++ b/core/vm/testdata/precompiles/pointEvaluation.json @@ -1,6 +1,6 @@ [ { - "Input": "01d18459b334ffe8e2226eef1db874fda6db2bdd9357268b39220af2d59464fb564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d3630624d25032e67a7e6a4910df5834b8fe70e6bcfeeac0352434196bdf4b2485d5a1978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806942307f266e636553e94006d11423f2688945ff3bdf515859eba1005c1a7708d620a94d91a1c0c285f9584e75ec2f82a", + "Input": "01e798154708fe7789429634053cbf9f99b619f9f084048927333fce637f549b564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d3630624d25032e67a7e6a4910df5834b8fe70e6bcfeeac0352434196bdf4b2485d5a18f59a8d2a1a625a17f3fea0fe5eb8c896db3764f3185481bc22f91b4aaffcca25f26936857bc3a7c2539ea8ec3a952b7873033e038326e87ed3e1276fd140253fa08e9fc25fb2d9a98527fc22a2c9612fbeafdad446cbc7bcdbdcd780af2c16a", "Expected": "000000000000000000000000000000000000000000000000000000000000100073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", "Name": "pointEvaluation1", "Gas": 50000, diff --git a/crypto/kzg4844/trusted_setup.json b/crypto/kzg4844/trusted_setup.json index 37108fee3e..c6d724efaf 100644 --- a/crypto/kzg4844/trusted_setup.json +++ b/crypto/kzg4844/trusted_setup.json @@ -1,8265 +1,4167 @@ { - "setup_G1": [ - "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "0x854262641262cb9e056a8512808ea6864d903dbcad713fd6da8dddfa5ce40d85612c912063ace060ed8c4bf005bab839", - "0x86f708eee5ae0cf40be36993e760d9cb3b2371f22db3209947c5d21ea68e55186b30871c50bf11ef29e5248bf42d5678", - "0x94f9c0bafb23cbbf34a93a64243e3e0f934b57593651f3464de7dc174468123d9698f1b9dfa22bb5b6eb96eae002f29f", - "0x82b8775b874067bdd4479ac237f8d56036a742c17901354caaf38bf8c70e696650fbec76f0cd941ed8c658f44ea359ff", - "0xa7ce299c79c7d7e4f1adecd754c5aff8a720728ab27f5737b7b399f72724407ac54965088596375b8c876665ed8e4ff1", - "0x81ca4c808a76a6f217f8b0540ff400199295da69b2587b7be6aeb56447fa4fac08d154a27c4aa6082bc40660078d36e9", - "0xa70bad5311c97f1f3fea5d3375da1a11ba948aca41609ea28666dd343e07af766834e1256dc685ac1dcd915073250864", - "0xa91c2911a658ba79f56abe30716a3398387630e785b351b07344022a04b2f5c90de5573bd6e8048fe8878dde19336c5b", - "0xa8c560283fce9813bcbaddfb78cff93efcbc39b33025cfad94ebd40942a9fa605d2a947dc3a1f03c2e454075892e96bf", - "0xaa14f07fbd2c1ce7bd995e335c69b5f675ea573517c1834e787b30ab4fa10aecc62ecc5e617ac8a539af1aff114dc9ec", - "0x87f03429aff126b7c5a918423da278e17b5f48a4cdd6d34dba77a75f4f99e26a417e65d6a8579bcb2eaaf1d4d8c64dce", - "0xb1ac81ba91ede78315f712d524e9d821a152203f04141ba77f4e481ad5881473dff14a71788ce941f0905b429e7ee5b2", - "0x8f5c2af611ddfa3edf7e442d00e56a24d615bac848c05070c908c741ba18b67eb2e82e6651c9b3c70fb8edbf051810c4", - "0xaa4115b19221e4d17cc335d4f9b0aad22df566231f2286d550e97ff2875cbc419edfa189c4ecb24001123b95c6aaa2da", - "0xb363ba913969df0debd4e2712ae6e9177ce82e169ce7e0ff1d7616ef8e352aff3efb40fffbf7bff1b21cb8a33e19b455", - "0xb1013d778727d20466778cea47e1bf56a77168a8ce1b33bb1265f66438ab2bf4a7df4f4142b8681f2993ea9baf798d17", - "0x83b7250ee17d8529207db97b73c1c4a92ac076951a577ce2fe3a2cd633b461c1820c139ab36a895a5962e143c6198386", - "0x86d180bd2f0a4919764e6f4e846ec0d5ebe44060ec1e529ed15101d7e531bf1b8f9412916ea5aeb93b37b2d7c6bfb408", - "0x827451462c79d74b504c01bda199481b3c70416f66a95b2216686ca4d48da48932b0d323d0cd630a1e86e8033e832e5f", - "0xb789d217cb12c334fedff0ae01f85b96e968fb98761755d1ba3ee17934e8fbd83172225df7c0c6cb99432a30a0ef8c24", - "0xb730e5412dfbd646b0d2fe084a1a32eb5596c3fe8a5bc0f430151804f9e67f05f70b522e9aef08082b0afdc652a1d213", - "0x9987653bacd9bc1659b17f6964aec06ea63b787813d4601bee0479706aed5595ac82c87ed4f96f0cd30c19e1d9510a91", - "0x9506a9ba38f1d26c35a17c7e2554e28eb347a19cef523846a2559fb80fb40306b2f85bdc2c9fb98c2267df21c1ee3589", - "0x98dda58de74c0cdaef97b2826b4a9d53c9e9ea592dc0a755ccf5b3fbc1264979578563f5979aaa246e679918053c5f83", - "0xb00aaa16841ab53883af481e2f925050f5f7bf7d8088bc696f55f30593bdbbaf434f5d2b46095ed097b6cdb96c8fbc3b", - "0xb463d656480f89335d3a840a7b9398877003985388871b148ba708c60f9857c7585ef17c8b2ae67fbb191c04ad61e692", - "0x80af54f3d0584126e23635276d650292baf7e3e12bb06468708107bcd80937d36575721ee7472c5f085ffa71dbf438ad", - "0x94ccb8ade84e834685110c96908b42e10d2184208f434d7f98d96cc158e0c0c95135979600e5e9f465d5846b0bb3c787", - "0x8e13674b00c633d7cceb4f6ecd61e4f99420d6cccf9db5e81f8c90f6c661bc76e10939b83b56c225fce8565f525d4fa4", - "0xa46a15b2e671c1a1df2490768dec1093caf537e1a21fbc11ff8ba8b21b9f2be8d50257027d9357df20d9fbb1307d7249", - "0xb8ed532d48b0533a3084d7a5eea7b401255c5825e9a1b80ed81fd530cd69e347d152b1ad8a899acff7d68e0103bbfbde", - "0xad6b7df980ebaa24177d830c4aa522d6179a9a489257f60ee6604cccc2cbe90fb1f72aa9d5bee0d3a88f73b179485f56", - "0xa56855e9fcf62ceef3043991a93ec24f8f6b5667ef5fb7ad1771249ece68a73580ec3cf3e58a009ca4650c01241ad172", - "0xab2f25517d4b0b33d317eb78d091d3c3f98dc352b8a3e4650f7005f9327129e23d95f38eaeda5e9b51c50a31d20a4c20", - "0xa2d4071385b8a421da86f39739eaadcdea5685466feb6ac083cba0ea4c71dbbdf655032097276d703f9a77a4ca6fab03", - "0xa8681d7c258984f01e92e92c95738692b7bbd59c3a802adf4dda8d34add69590b080391c09e98e3b75c085c9f191e5e5", - "0x97685643da6c07b5e5fe91393122813ba11c8ef3dbd43a03b3a22a7a1603201fd516c1929418eafb14039270694c239a", - "0xa7bb3b85d6101e4fb0bcf540f52041cdb3e819d517465e342b832f0e91346a9a18bdb38845ea4d2b71ab87ef3bf59f96", - "0x8afc90b7d35336fdcf8f81cd024e921e244520ecfcb5a3994f2bbd595366b68bfa792a8dceb11e1e889b11432c9dad6b", - "0x94d9db7bd04f962d8d6caa3b7aa0f19acbd58a09d35ae187158d77e537d2fc65215f51f1afd62d4ba378e7d176a680f9", - "0xad62d7c01b14b6f97e6084ec9f9d084f106a7ff3d603032e6e34c027cdce4b0fe3c20ac7931f1209439a59c9fede4815", - "0xa5b44a87bd0ada7498e011e495a2818a8694746c4e7dc9d24c0c1096f54be6439e08c1b11c10d7c4bf68fe392000e971", - "0x828626c6609acc599f1bf216e9a4310fc3cb227e0d2e47bfe3360239427c8b0cc300cddf92456a5c36620596a6d37027", - "0x8380f91baac6447dd39886455ec5d99b874ac114a3c6a6ded18fc4ef69c2208ec19732428d8329d200a69f31792b852e", - "0x85a8389b522b0a686234450165514127006baaa3907f6eb29c976522591a542ffb681b3b88c4886814fd7ba3cc8110f7", - "0xb8ae7949ddafad37c0bc4d48325a7cbcd3096fb92c04a027c650a03cc609c7eac250d6a7ba341616bc36f64f1b4c8be4", - "0x8f9b9d2c2ab5c85abe946ed9986e0f304281b277d4d48c7760ea2331b55a9e9a1c4d53a6bdd83fa6294f421ca7431e29", - "0x9464b906ea8bc994b31e03c5f2af2be0724a43293fd42cbd2263b2de75a2ec04832d1100ce62ac2c0708f05fb6bb3ce6", - "0x93d923f6805e7cf972d8387b352d77215724a3e1f5489c4114fcf0b25fc2231963eda872387a1369a02b2e8b888d6427", - "0xaba4af392884eb7283fc5611ddc1cebfecf9477462e951bdae650e311606e129b4424452a3a14717146f954a7fa1cfc3", - "0xa8d0bab694d116e4f21fa19ff8fa4c6fe4061dbb54cbceda8235a7e05159737f87e008beccb90df0bac9c7d572281903", - "0x85743e3ecbac7ae04a81a09c2961397aa4bd20401533cd24d5fc0693cbfbdd2b37bbee6dec2ae5d0a66250d1fcba6944", - "0x80ae913447d7d3f6c54f9cb584aa1603308146daeb3024c8e06ede66ddc97821df09f9591453e9b617b828a02d54c719", - "0x803c2a64bb1c68890b5f1909be3aa180830ee3ef316d3aac38bfd909e2b19d890525e18e8fc2f405ee70ac14f5569b3f", - "0x964d2968724eb790f2f42263fcaaa1869c373b57b3eeee904f8b36f13169f07d5e29cb2b03c74d3a7adb772e91d5a59a", - "0x98a72ce71a57262aa058643a5cd39af64cc9eee88bef7edb003143983f29d87c7f9658b1ec89712f79f6f79dc24a6a45", - "0x91f3479c5d7c76acd2d51883961179efc975c714720187cc9c0aa7aeff71ca1b3e2db5b0a90fd3ff6abf880ebc49fe36", - "0x84312757edd09f111420bfede10ed3c1fa39d1723ddb9bd4d0004c829f0c1eb060e9648fd75f2e5427a67a5b37945a9f", - "0x95edd726cf4042a082d786262304c51d8d5e6a89b1b58e825a11febe5f861d5ce076bdcb2fc0a5dfa95eb2e5b0ffc32e", - "0x96500da38f942871d78fcc46cda1e72944c7888b538b82e2a979f149e5061a20c7602860f82b76510d02efdf3a911f5a", - "0x8ac62eda98bef8864df243696b53651a02a391b898535d2d76ac5a8e9322e0178a290c83f5afe72ffe80ad56183469e3", - "0x8ab2d4427fb6d3da5cf6c59835bdb39fb0c2de82c213b5de77edae3304458ea505511bd98fda95bdbbb9058bd5e92c34", - "0xab67c4344a5080930029ca3b803883ad05ca004ddefb48d5164e71a1c6dd96b27aaec70f62b39bb126ce1a57bbff1453", - "0x86c6bf91686bff714a873a78b0fe449db5317a5172a0a14eb3a96b2997b888d5d3f440de8baa32a6966fe44c3625b014", - "0x81d4f1e9d9e550125290d993a4886d46aac8cb29dbbba1e608aefc3432569c5faf14d8b49fcb485d9b75b649ad6b2fa5", - "0x8594140f253ced6fa98dd90ab4f38899916bcc6f1052572f182e46c00752f3053c390512338a0bc8f8c27a91916b855f", - "0x911284d4fad4999bb37590206d582b9e62ffbb815f414fd829f5b2843e6f0e1a132cd64464c131d5a0f476469a37daa1", - "0x8631a6a4987410982db9c0ba632023a5b613f553b6b8ffd3cfd501b2417523ba8cf06741c62f24b405554bd93e39e626", - "0x906ac35d22794a10a7273fdbca499fd921799b1ce9414643779dce9e1ec37920a5aa2caceb4b70a0eaf56c6032ef1b43", - "0x87374cdb8b7a1ce3c182b31eec465d435e35df782fe3a11f421462b48cf56c6fef2a9cb8ee4fe89672ba7804156d9e3a", - "0xa1f825e0246eee506c8ce40f849a17f75e8a0d6fc3f68b6a4dd431173b4fe997d30dca53005829e4e2422a4077ce35c7", - "0x875ad0379abd9873f6634692e33e9b36353e1a0d15b13d3215eb591244e1f236eb2f8f75274ca7f096179d1714fa68b7", - "0xb87b4e1acc09c5701fd9d75375ab896f178c1b3648fb9a2e2c6e1478778156decc32cd390766f3e80b36beb1e3a6bdec", - "0x836ca80949269eb52395776ac5ceb35b7df717a981c5cbbbb627f73c274aa8164e973a7b01012fa72a02404e878a9918", - "0xa770b13a8f07f74e5a75842b18f2520f6d0be42c865a29dd81bfe485e69a83c40ad10ce229afce276ccc9cb46c54b912", - "0xb4b919322bba2866baeed38bf0e2389d4fe6ab6166597e87dbfee75acac7c2f5ad3bef55293b56957c103d5825051bb5", - "0xb6171f1bbeedb3ee1af368c9c9f327d1dc3e55aeaffbe15f14db8038cd72540b62fe65f44ad0b5486dcf4023f0e91af8", - "0x8e42d0c1e8e8c2ccaf06edcc3c686aed56b8c987f9d68f20937fc088120a410cb92fb0ab45bba5db70b86876015a6b72", - "0x937bcff1af9685fd0d1f6616acf91d97ac9fcb1eb96d49d1c880c9945c1fcf1414f63d59fb78348d08a8546f6e83e407", - "0xa6eeb4873c0531fbcd407c2e702c68e4980fa77c9c032b9913b89031702cfa56f335fc413576c37ac4d523357a841203", - "0xb3962b5eed69cfa27fb94edba74b6cedd7569352ea71861494dd579da96d9743655b6308e54f8a42ee6d7e805c1bc0f9", - "0x8eea944dce7202b033ce734c9e88e82dd760c916e00b217cf1f00bf6ec5f20e21885d5fe95d6138871d167de4c46359e", - "0x81e6c7b356e2703ee333a9dfeb2b54260636422b9bda118e0523a20ce83b30fefc2f019e8291a8db05d207f0fa7332fb", - "0x83817f6164dc9e8e2506252511cb9871a8c9b595dde45f67e75ce3505f947b3fb3b804c18c054ad13b1518a98f59f008", - "0xa9ab4dbe7699e7982cd750d7effe031f273fab6b2e024a0b4f8beccb5c280903bcd3f2400b9cac7e8c94e157b4658ab6", - "0x84d2e3bc66fc6b59a1ee98b8981ebca0901d846c40d207e5bb5004ec9339d28956d16f054af52453f6a7ff3fc66c346b", - "0xb24bf0f69c3e86f610b6d27885ac5f4556fbb14e8286681538ddbb0b4921aa0d5604fedef0daf4a514ae15268a640174", - "0xa4be967f7f31995562669bf9587f5463bd1d9873fe9169687790e75961efa5ce2252fd21276d022f580de23527282838", - "0xa3f3c4e673b302bdb91fa3cbdec88499752e6ffe37e2215d69b8a426f4da98c3a10e4c659e77c656172e4e8b1b1a41bb", - "0xb704ffbb3434563bbbce69ca7e812a8bd30757b1e90630bf3261735f9ea221524b36f97dec324ffd209bef45bdf6f2b4", - "0x959dde49f15c663a2de000195e182a11d8c396c1380f98322cbe5521b697bc3bec3223ca9e94ee2734c4ffdfb6a19e8c", - "0xa469685143cd82b78d7b1854c350da63819d9d86670e9b35a72381d0362cf5c3f1d24e22ef2ea6a12176c9dad39fd51c", - "0xadb97ef4463e5e13d91b75a3086d72a841a60be278e9651d9ac5f76c9537bac5eac33424a1ea00522b3357fcefea0738", - "0xa4597b2ced7566576e71b4f105b5ee48aa4ffca93901e9b626f7059824f53be3e8f3560e6861285f3d97fe88054fee83", - "0xa18d9b1b81564447f798ce5966bf10c823aedb14b143972eb4dbbba9312fc79f46635aa016cd20c53be90f170f06fb84", - "0xac4724069177d3c6ac1b72ea2a7d6bc5ac3d4b2a4dbad124152fbd170c9c1038cdcf255d162a25c14ae8df11a3849945", - "0x892683f64179ba84f6a447c5c7489e3cdf02474d2837dd7bf3b82a4dd05a6461ce94fff28d65b9539cacaf47dddedbc1", - "0xa68ad797bbc1b2909e216a0b3f39aa6c3e4dfc7a49f81a206b530ec0c6ba30f871e4a0053625aeb99448026ae2e0a6eb", - "0x964ff8badf35b6b93be6d97209d87f4ac8847be1c2ac4bcafa1db5c3f604f61834c85b3dcf58af50d09bd03ff8d78f27", - "0xb76dc9ec64b1fab7be269097a18a77144623d37bc656934fa1562817c922485e69b18ef40413ee309e100fde645fa7b2", - "0xb2a812be6e69f284580ebdec5ae2cdffd587bc7eae10989e9d2f290498b1eaa934b148ec7783edec300be5d7a9b34af0", - "0x85ffcabc623f8ffc58c5f640f857e27b7c105359315a3969f346e1366acb2af88f4acc025b299b9c324a8535c380a2c5", - "0x8d0140f79fb8ef02d13b1d51c4ba1af5b5ffb19322f88912215d4198f9a592f7ec6800c8a3ca853a3b68f9bf0353a13a", - "0xb3174deb53c1ebb6a1e16c915cac287573b70fe4e0036e8e971e8e807a77362ede632f6e3f29cb87a80a318213946ff1", - "0x8c58d603f6420e3f55522ec2853065125af4e7773a909e28296552f7f8ec4691ada9211d834dca38e118f432b6cfe03b", - "0xaa7ac268e155ff074bfc197844e21fc2a9f9aec9b50d9cda63f50d3c4fbbf9221e6fac3a6ba0f7e4cde71fecd493a15d", - "0xa191337721bc9fd2d3ec2ca6f6f97ca2462ef5e207464bf9e746a650a67d69abb5f578a8238521cee3f704b275845e47", - "0x93521abea8f38c103ebed3313a3af8f27f03c9a54681847f4201bf9f72f1f63064b18175986fca64f80b4380905e894c", - "0xa1b9d063d6538885f9826b84944123d7d6027dd030aef29fd6229f4cf5d32404f7dd0e899a0c8f4b6bdf4649e8a8966f", - "0xa15d5497f0fd2fd0b2c2e5df58a25a72a9d99df8215951ea58c15569d312c6f096f78034f6a8502f808e649f6cb9283a", - "0xb3c275306852612362e1073d0f4da3ce598dc5fac3f3eefa22ccee35dd57a4caae347b43342cd1f6a6e068d3ea9fd30c", - "0x94eb678e0700bf39caf428c65bbf2fbf7f601c39e382570a4df9186ff1dd5a958d78e051a5fd084e4f75536a14b7690b", - "0x97b13995bbcb8e824bec28488994a830a9c1f34ae4c1a16d5528d57f09e4c8b5d81677ea9f979f0acb8cac629ee09c85", - "0x817c99ad48bc05bd4fd29f952dbdc5ef56bb02f3442c18e3b91cb6d72ac2d2a5df901c099165ded1bee62c3ed13c41e8", - "0xa884acf980f6470e11cff347692d8a7cb7860d4822112f7bfeb02efb05948ea98c837d5d98dd7a104aa36eb8f016a0f4", - "0x95debd2ed23a23a16a393f59f666cfc864f63751238b73981faec4a85b4c04cfa11520c9e4cbe4e23fe80e86c260093a", - "0x937b4691c59453bc6cf6468ed5b17dbb25496bfa3817798562cd5fd86ab5ee35745991afea2fe271ce0fbe5a990c41c7", - "0xb4da98c879e6b475c540ff2c5501299f0e3e97b7b93beb45faef1253f7de96968898505e672cfc4a3ee7e20c1f72c256", - "0x8ec9d806f344d0c675bb5ecd47c54defb5f059a5233dfb2d459632b9b22edd6c4b8c47fd7899ab13e35f37ede9b124f8", - "0xaab4408410abb4d2cd98694f71b5452e6fab2690daa3066b3f9747e7dc40b57259d52e6fddeaeeca227b733d049b9694", - "0xb85a12f39808961c331038159255140a61dedc56050345a2eb13b1f7d140ae07b353d68d22f2cf60925fe66e598213e9", - "0xb61bc3bd68bffdbe9731f48fcd523491da04dab83add49fde390070513b9ad87a489010f1ccfe6f54e9a48edaf88b5f9", - "0x8f50f6d8235824cf25031f09e4b139bd89c1090269dae95a5aa0dacaf5f9b59c329a5a3cdddf9efe6c77cd61f481dcbc", - "0x91a543b85e18f34361d7df5ece8504d456627fbce65abff437007e9109359538a03996e35393a40f0586f962921eccaf", - "0xb7557bc52931324dd4c58d0e63c89a8dbdd2d00d0baf79d81d7a062aedd2de9dd743ea30fb031b18c806ba03175d7e1d", - "0x8e056b842a9af7aeb6c0d113a3acc8bfb5c6a8980fa81869747f75abef76b7fd20cb67694e70016e3de6e7821cde030b", - "0x966c00fd6472bb13ffa531d8eedc145ffb7733114e0f4a6a9fddb34ab7601f6cfb056460f757636230b692453d8b31d6", - "0xa25d85947c6939547fbee088e0131988053c5bb23aa2bd48ca764f4ef2b29235a817b8918d1de6865695977a95711e9d", - "0x958567f217ce7a6d74861777801663d7175eeeca8ff62e240582fb603ac91dc402331034fb4855632352df2328fe0233", - "0x85e53f3802a7d32dec2db84fad7f8c8fc856037cc0cd4ef9a8988e97ab580d4b929023f1fcde7633828b5e8bcdab08c7", - "0x878d1fbbedee7f7ff72eaa3848d7f6bc3cd13b40149278b3afe5e3621e6d1f0386f8ede32971d3f33be189c927bef6f7", - "0xb041e880e4ecb254f6f8d92635a1ef3be3d5d885c751f247bec2d8a016aada6a7fd2f7c599f458ee466886abe721bba9", - "0x920747dac9f35ba0b2670f82c762a71ee9bfb9e490825fb7ed613bf2548ef4ea00bc01e9d2c952dd9c56f3586a3ffb49", - "0x800005cefda1ddb860fd8974342fe315d227902dcb5f3736f8b9ad1fa2f8fbeff8c8ba0eb3f0c21a6706f288ef4bb13b", - "0x91f2b822b728fc5d1f15b69a303985bab14c08df5e929decbfa5aa5689f3cd93ccfe19ab10499d31df9d38c84039e492", - "0x957a909486abd85b1e627a4739c7d212cd03f2b62952045b704c415acdf2e6c0cc627af93f382836603f33d1a716ac7d", - "0x9733ec7a30ed833cc1e7e0ada4badddb1cd1908bcbd3d4e4694576421c94090a9297aacd7f42d9d305b87d711828304a", - "0xac2785a0dadfd246fe12b63f759e9f021006cff4f06b2b5a9986f0b02a40f29513feb1c9044af6e27d1c5029b1e1db35", - "0x948b22bddf55f4b4bc26892e83f70b882a0458582ed87fbbc81bbd037c946d833c19162327354240c42e05cfef55394b", - "0xa49c5d81544028d56f4caf8699477bcda589c65f6754dd40a487ef88d93925008dc7fefa6d458619d51a54b3edb5e5c4", - "0xac57b8ca2d0623f5c4137cada67afd6935fb75fd82567f2c57cb22e89a0562d3c0716d5e903fc06694a8c2edbc9a6f1c", - "0xad52af6a0cf838bbca5a97aec5d87fee1aec4fcf5e802b8bbad1b110c31ed777de0b0ebf74384bae68289af20e351bb3", - "0xb0c7c48d734e5a1b37674465eb07a629dbdf8f9080c44a578f3dd687261d9d1cc5cbdc084488c745c9114fd998bfefb2", - "0x8a2b2ccd4c52d15bf7aa4a8847b8015bd53f58ee484589339b4510ef08a27db56178c15b4d79a9c6eba1ac0b641eaa61", - "0x98f659a37bffd7a9b7759bb111412ea9e9eec483645511590f683064eaf15e1b101b5eac3b98f79ea38662b1956a06d2", - "0xaf6cda3fb2479b6f2d959f2d03e52b49afd12bdccd7a65a1bf6b91e345387924d5e355363f79bbe32a4624287cf4c1ac", - "0xa24d325d8c2dbf9d2e346e3504154018937efb74246ee0658e68d148d9ad0f4bfe348ea9bdca77d4467ea1b3dc2fae5f", - "0x81a729dad3798121027c29e9310d56e36a48c1c479cffe674cbf9131c562f541d7e6c52c2718025d3470b05b67cdd321", - "0x95bd5cd6d9895c775e58cd4296ebefa51ab9e324418208c3c4d073be59410497a4d0daddba6c1e7373abc08e13d32b89", - "0x809fa97a229b056def6b548902d8d90c873e496db6cb1b2d448709b9ae08d9b9762559666cd96b6bba396eebbab4ea4e", - "0x8bcae63cc680494606e44037a3bf6dc7bae2e723e5ec3ac0451550b8ca7914ee1d4bed0f40adc3dfa45f8f80a36c11a5", - "0xb3474711a0f933cf269e97e4e1e98762ddbbf49dd72e468f1e8a2f89514c1c35cb8db32d08dff50f93e50db43bed54f2", - "0x9788a37c3d95310627deec58ba6d9e0324618469275276632a3fa7841fb127c8fefc1b7392064f2eecb508056bd346c7", - "0x8d031fdb156023e185fe5fcac67b966baf9c098fddead4a6f1a3cef54d8e912d0de2d1e1d3f3f05da538eac4af5b6973", - "0xa5efe72b86a714dbbae40fa69fbccf41042e0647d177cd60275700257aa583708130a64b2f9dcacde4fb636b5cbd5aac", - "0x824092ea32eb7a8c619182d926f292cedce7ac3d3fc64f60d00fcd767649e1d6cffc20dd9c1d1c8ef6f64be315d1e2b3", - "0x900ad22d3b63376b1ac80c7343a58df23c03c4e7d6e5740dc10d8cdee793be07fec09cfbdf29e1d1c6484d3077630d6a", - "0x826815005550844ac5a6e831de0e25fadc49aff808cd601d70743d4873a341e3f0cd40d490422c87df3f3c40921fa723", - "0xb39d189aea740c52b03660c0abc8e796cab72193ed44a4b1f59fd1ec0e283ef7d5e157ed23741eaf289cf968597c0900", - "0x968ed61662d1e656e039900912ab61173b49d2e24aa6b7d3af07c3b04a2c89c4516540934aa543bb48ee14153780d10a", - "0xa433b8b689007ecae7f1df15d442b0570664a2db6318de66c6e5fd68884615778d296bd260ab7d07469bfb5f6d8c94ca", - "0xa69ed4a0f39920d1a62a01214daec143fb7596212e2439583df9ba508784ef4d2fe86334f0f9a6b7a3342ec0a72ef15f", - "0x96f260d9cd88757e7c45201d57bd816f1cfd37587ba17a64997bf7716ca1c2cfe16a7119c36acf1754231f303058a9cf", - "0xa51f2bb09d30028eeb0860e2de38094623e5b5514fd5d591a7d4a9731cd4b9c4c12c5dd6ef409e009dafb10d185d5346", - "0x8abe821036140ccb3ff9063dcb5e8b8724cff1cf0784b8f44486c8380fc51715cf55b443cc20870f426c4874be93caeb", - "0xacd73facb964d9012ad12405dc866beb52d8de3ef81fe966cfdb14d22a19bbd2e7ad3a29cf029617b9d6510ed323c6a2", - "0x8f18f6883c8e4741cd6c52e0d3335dd71b5571446ee28e8c27cb0625f77a9f5bd0720d960e5e8970257907f503d58a9a", - "0xb66457a91e7ddcf56c8ce4936a209c69ee53d71236b72ea386f7719c8b8c9b4ba4ea19039a8de17a0a869da427da42e7", - "0x80b1de58bb3ac5f264e0273061f485e49413de604b5ade73ef81bc249f5e89ce97dbec7d99b088b5a2ff65c0bb93fa76", - "0x8bdf276c88f80371ef0ef7e1224929681629aaebc8cba3c0db0b258be3c26cd17268f56369832f564b1679be33e98c69", - "0x943cf6fc88678816da42e4f337c730eb2dd59f8d738ea638a799e8b77214ad7e74723056bae96b100f9a972155885d26", - "0x91c8c1a8a61f47119005869c11edf0b69d0bcf40534b82e46aa96bb6107f940e582b6733f855144accb8dc21d79acc39", - "0x96ba98bd291faa0904ca0398d6c50eb5bc2ab5a389c359ca42b8909f41f4fc37dcedc370ece777d5035074a597da503e", - "0xb4598e6f889d319713a9896161a6c9bd8575ca30c21d3fdd37cff15dc0141ce28dc536f73957e6fc8f6185fc0adb731d", - "0xaf1ed593a0547c26ff729c159ef14bd0818f25e7c1c6c51ce8ce5425bd2526086eff9fa3341279daf82e480bfe431230", - "0x8c02b9ad3aebf156c80fec9b012241f3794d736adfbe4a272faf505ab818cb121ad2ad7c2eb1716e252d0a2e7ee6b246", - "0x8d2a8a31784c446eff4c2ed7b004009f08b86c87a4786a0b7be3df36ca9130a0ec42a58d09dfede1279a4a6d3d37b501", - "0xa78b61be13005b1718a3aa3deba103ce71e1ff73163c76815f9cbcc101d993f119ca128a25c51a12fa52f46550c4b609", - "0xb990d81d7aec9fc50d798eb8c38b40b162004f78730e9ed4a103faeea0995bb654893e557e5eee9b74046ddcaa70617b", - "0xad56d68777d0ed53d3331b0cfd44503b27435278416ac2268965d8ef711fdd819c16ef5499d8d7fddadd229c3d0d4bd6", - "0xb5110140b9ee542ec03c945cd6180ab1af205537704fd408fc4490d799d87a3f3aa0f1f0ae9c8daa55c1757f7bb53cbd", - "0xb7d8a4080c5eeb00be4540a00e65e744f4c7792b518c9fd2dbdd25abd0dd89e76563618cdb92e4cda0fe3ba4597508dd", - "0xa880b33af98cc0bd1065767a2600145e6e326c3cee25602dd22d531c26c4b8543f846fadf679e26749c929310779d858", - "0x941f124078990e03310cacd79e4a38667f4dac4dda4dfa3173a03c14aafbf538fdaa01b940fd5be770c1cde0a84bfefd", - "0xb234e9d0f04da6efc5aa5c77bf71cb05001cd193178fdd546e4ec81875830113d3d4f1512e7405b16d0b3aead285999d", - "0xb857bf6f62c4b19ca9441f700ea6676ffa3b0c7138299533ede59a9b9cf9b94295046e7eafcf1d4ecaf0341898ed6b15", - "0xa2b0d74f17d3387566bb4f17dfef214cdc6b61dc50698fbbe298a7e2f4a82d20aefd719c5e82bbf4ba4fee0e2e35b4c6", - "0xb5ffae433aafad3fd51ac137976e2c22661d8a286b221e0107baf19f5c8f2f6c7eac1e785f145bf7c16a497310fbf51d", - "0xa69e9dfb14f8c6cda716166cb69f06879718656c9f46730d94f194e2888fec371a11c9701071bf8690e57996fa91d213", - "0xa1f51ecd5c5d73155013dcf02b327cdbae9f9c2fbc62f73959050cd3a0bd66192213d1f4bb56a85cd21343722ff3f57c", - "0xab3e54b8f4829f1115694a4be7d16e8214c94387ae783263cfe145f965705d51943176191c706f6211c8be2699dc79a9", - "0x8cd6a64c5d30149ca4dae4fb7e8974dce1200aba9be9c8cf9af5d43e40098746ecff7bcde7ff84a0072138dcd04c2771", - "0xa52f6fe24305bcff685f2d047c9a8d9a1f70c2b416cfe55fc137c6b5b185029f3644890418873665712dba4886e3fc07", - "0xb2e8e3d2ba2d64815bafb678dfc1180534186eca415bd8cd32b303bbac6cfb637b17200aa7cacb953e656ad19dd5c9b4", - "0xb5412d1073b3b80bf0d18f791a6d02727cd9c40a86ab0f13ccfd847bf4e767b8b79aba3935194398da2c9cf17c6bfc8a", - "0x8bbaee84aca9089585d5ff385dc2ee6e653d0fcb9088f98bc5fb1c6c83db026d9a73d77c33c6cae3268be90805d862fa", - "0x9691343d1a8b7fcebefe2584b28ab5808764ed79d8f28168a65ca90b0094e7920fa43e56b960331209f4b8465cb8a5bd", - "0x8ea475e12088d558f5cf6dea2da71837791093a622d5cbee608a95b4c8a61296255c1545d454562e371ea0e2cb2e0b1f", - "0x951d6b404667ccca099d01328562790d1e8446231d7d22bc2b1c4c6b15785bf59f2099accc58817a06d24d59ff4e6a2f", - "0xa5d012687f341eb9c783c1c2040388eb7ad662cfb2b84cd94d270bcc99116939aea80440d7ab726f9abcad22fcd90274", - "0x818fb57b7a8cc59f06af054ce09dfef812f8f115eb2473d06c8f20fc50cf17423331aae1f843bcae57fe4e2926ad5aaa", - "0xaad27bde8eaa2e7fb1a9a5ab531eb41f475afdc89b7f02085f7289f8f84d172fe516d0104560a40c89e97db7e5e836ee", - "0xb8cd923efac1b09d9c6b1d97a0c1bce9fe4eba1d872eaa3c0df34dcff2e7ea2354f1b31b69c6b266944ec8cae2a16865", - "0xaf628e772d609224aa7cd3eddbbfe965fdae6a05cf6d14959c5c26c4806043afd5fef803091bec710c6854ec095ba18e", - "0xb662e1d32704d96919f5dbefc3cc40e7d41d4124c5865b46408c2ee5c40926eed71fa3df71fa7ad349d476d9a525d7fc", - "0xae4c5512396f9c26381394ff8e22b1d6267e3d3a5d3fe48457450694520c5e173716572b68fc1dc352761991abd262b4", - "0x86b530978a7e549e6ca014168fa4aeda9438bcd3a29f7edb1f4e9c712c16faa58b81b028c25a8e90b421b61a1766d7d7", - "0x97b32f1371f76dac7a449295365780d1bd03f290a041b3d19db3f14bee6365a614ca356e7cbd6f966260420b451f6117", - "0x8be97569ea08d0b6c4d46e9565ae14f79d1990f192a26ec935a865cedd6bb5f69f608b069f7d645877c5081fb4a68c54", - "0x9733488f48de05f57f623752b80b37c91f6c9afc0f9b4df4cf400f3f82b137bdf06fee82190f2a4ad4aad20e964cc214", - "0xa794f6dbf155666056529748a792be13011bee6ca10e0d55c82c3e84c5dfa1f370c8e8abf2971a75c73a4ddef3da3319", - "0x95ff5d16c0d9bd679738257a1f7f309f257c20469f2fa41bcfadc671ad65acb249793defab591f515bb3d8072e2e05f3", - "0x8d849150bf8dc3452839256ec4eb65cc9ef87aa0f90dfea4d1d486f16ee855d6c480a8fa4b6cf8d536e435f9fb7bf507", - "0xb61c29121dca2bbc6024ad2f487bb57b926786ae60a9e7a721440787752432ba9c7e1df86ef0d74c2592d23f0e89326e", - "0x819630a678e4a5e6adbde9b292f5c8f2b6e3f2ecc9bcec60ba0f8502e503f697b0ded4f0f7157b60ddc976ded66713aa", - "0xb3525b071e26babf669ae2b98319b3516c083e797d74bd5b9b0e1f67792a2e8ab2c60921812690b5928de66290ff7b86", - "0xa344c6670718b9824ae62b309813bd31984eefb5efee38052cd06812308edcc39fdee165f8164629267bc0e98fb50ba6", - "0x81d78d54738817dadee7bf70a468a51728de0e9775f8779fea5d0d95e55b2004377b4e2db595d420f017af18a384d9aa", - "0x848c97b9413ba6ede751ece925ba57b8f8ae27168c5d46347d39e0232a5eb42069a85f1ee2d30d8b94fde574642be5d1", - "0xb020048c5a5a2d186df628550c6f61a204f16e6eb991283e975de520c4f916badc999b3b7e9402ccc39db5c0b510e2d4", - "0x9298c1aec9664ab3fe328f532428e9b037efe8412ccfdd15e33c9c82dc3631e49f84e0d2d75dced85e3a4e0fd0f3f2dc", - "0x8c4a78841f51e2f8b91defb0a3844933999f9884e2b324bd89a01e482756758b1b5a278289163409947c73106bf934f7", - "0xb328a9db915c4bea1783218c7668e2bd7a8fa62e52d3a005a43590041d34ff388c0555b044ec5ff85368352a3643b7eb", - "0x8a395d89469d374c1ec472c4d571ae670849549d05124907faae5a086519686683c1773d22d290ebdcfb8dab926d10b5", - "0xaec52b8a883f4ff68fa5f418cc91c8e9d08ef324544356b0ac56a7f0980fab6b376b8f567e357ba96b408652b8e568ed", - "0xaf80f0c5d50ab23d8ad99c7fba504f2f02b7307b5ae5ff529142bead28d69c3d55f4e2226c44549548fdf761ce30cff2", - "0xaf73700803caf7b06f5453a620253731de33a458da01f5790106e9418fb59e7aecf6fc1d1b650e1c7b3456f7a55d4301", - "0x8be3ee3caa86cbe21ce9998fe1c0de73ba6481125ef28e312002377676317b5ac4c27180086fb83794efbf86438ad27e", - "0xa0439d051d06a7fbd5ab83f32f0f95364bc043d9d934ac64df7031223e731d7992206879d567e77f35badcb7623f03fc", - "0xb99de1a16670fbbe3ec26ccd37399e2a23c96813c26428deda4f74dd3afdbd28cbe47e074379f6094b85176f8ab349fc", - "0x8a943a039aa33f38d3887de4e77566d446e87225bb8333e3ea991466c15c6487077c6decb9cc10e5de6af03e6b81a10f", - "0x80b109fb49ab810121fd411e4cb85773a1004af2d257e85ab5b4c99aad8d66e5803a8ca7b95587197e88abaaef0b8d42", - "0x892148bd190b042fe9b7914b8aab073c0d19001158087077a5946690dd60d99a1ef372ac01e372a434d00b0568a75fd7", - "0xa266dcc9ccbda054e396e1605eabde6cf79a028b697898090e9f34a4a4e0b771c121b8d470b14130a79cebc19f8d6e58", - "0xb1ab30b97c76392712b173460c227247cac50597c036f674361c63c3638a4c03420fa5b7efdacd0496a9b83956cf5d06", - "0x8a33c46084f669455ba089b369b9c8493a97c131f09c66f9347873504f35d6b94a09483b2775656ab32a12c7b9766ab1", - "0xb77a7c1402edd9ae448b7a606ba2eed192a9bb8f852b647b6ed689b0a3ccb81a4632edbca4c113750f62643a0626e2a2", - "0x8586e85e3bb07b07a39ecbd822d2adbfbf1fc66cf2377fbe6b1bc38369f86292c6cfdb5b405a0bc4d584c0600178321f", - "0x80cfe5b1b032d5a28662d13772fe112e9b73c997f8ef0fc796576bb39e02189c3ec0228d192c981061dcccb9dd3c4f39", - "0x873c085029b900d1fcbe93f8789d635e3a8fa558766701ba9fee76dcf05abb6cef518f2b56c4ca5e26f3847cf23bfd72", - "0xae8075937a23505f51a1a26f7f54e35caadff44ffc43465368daa9c330b553cb4548adbdb04e24c3977e35a08841c36a", - "0xb1c7076afec527912f7648bedef633ea0e3b02e5fc3fc495779b93e8a9f64eb503f46a1372c8dcd8fc2572c198112da2", - "0xb5233c4545bae360b07c4411776218a1d9040bad1e788e099f90149c58258ecdf01dbf246ddea48ac8fc2dcde6f34f20", - "0xb62655a8376ce1ca225dba04cb29f1a95d09e1a20b58f0330c478c6acf931ae52268779d6cab87d9074a362b9e82b205", - "0x9684e676088b409052773bb740bd3577bf0dc15d0392ea792393a158e643b165f8cbdd91cf355d5425682c77f2a91f34", - "0xa892744cc0c428c97bc929913ada86c36f280f49bd1603e21bf6b6abf8ed195cb05b22e586f0c841ee02f234731985cd", - "0xa62c089a73c6dcf3f7d957719c7d452962ee851d6ed8c4b57ade8a1e57156762c348fe5f20adf6d6ce47b4e98f93d60d", - "0x91b29be6022d43937df9c597d19e23cbb83cb6f5b764e1f7db6cf60dd9b3e9c79f1f617c3101c60fe6c7af9b5719fd5d", - "0x91d13fe99d7dd7b4744fa2fde41bb51f4edbefb2189ef3ca5d337ee84ca3f728e300aec19b96dee18aec090669c85400", - "0xb17a5328808ca929b794dbf0bf3a3fc318f8df144a892ec0ac2163a0f7c3a4614d7ec433b66bc491c05a286fe986d986", - "0x84a9e84bbecfc2aaf8bd623d79bd4240c630b81ecd55a50198de21758255207238179a345700e65d9bc6eec1a1a1985a", - "0x8d428be451efbe630740449ab3677ce6f69d94d75c5a9d91d14b2493a838260d6418be3d4658fd15218eabe3adfe455d", - "0xaf11126224f6ff0e88a09dbc0de6db3c70e3db3f6e154deb448d044100f989ea41c6c0259a8ecefdcf531f892a957d82", - "0xa51716b900a00277aa932bb03fb61eab3bd8e74edfad6153a06f85aece6f832af710f1477d883dd8e48931deca12bae9", - "0x9542a82039c2d3c538f15da884f090622c5af556c16370d21bdd6544208cb17e0a30e511b0af4a618e8ef70d0c43af07", - "0xaf76f93250bd7bda2b5e30e6f88416ef6fc8ce0cb614515a1f8d81dec717077209493cb47b79e8b1a62e09e394038338", - "0x8fa8d657f1d584b06d5bf41a52bc2c73853e4092290789df04eb8952c6eb236df601a1c6cc81de420a424d8e748dfc38", - "0xa6e93e27421b9e32b170d240b4cf2710c97b49dabfc0ea25759c5f61937eb3da8d45a6400f8bcfbb42bc9a7ae9b66ef1", - "0x81848c8d66d34d274b21dfc10bb36fb9497a1b152aad64a8f7c874e58d31d5dd5f39e30e6000b6d7b444e573da1e043f", - "0xb85692a84154f87869d97cb5f16c81fb0559e097fc37473bb11dc9cbd311ab91a46b01aa9debcada590992c2473ef0fe", - "0xb565371692ab0f0d899d8139d3eaacd213e7d23d6f5df6ac3409c961aca019ce861fb4ca8317f462be01e8c1dc7af154", - "0x82ae2bda0228d36343f6153fbc41fc5c79fafbc03c99a7926c624dfa28ed0a1d215e11ab83cfd438fe5d85d7fee50363", - "0x923f38a2f839e165fd197e1711ad52673deed9774e0590ff63ff9a9985f99612aabe003b9a98db2407c2878abc6d9b0a", - "0xaf8d5e1048de3b813308544705eeb0facbd604a0ed03e66c1d221be64cad35d71748d2a55d1ff3049e1e5053c7b1f712", - "0xa90a4b3b9d3b7c87c34f85c7643fd67dc771caa940c9e2ea81294ce6c072eaed698368a0e8056d7b819ce3d73de4424e", - "0x93a106e914d2c6892fee866602edfbf8d03dea1918d82d511e528b99c8423c260c0d103bfaf9992e0e24638b913af737", - "0x864cb44b1adf5a59ce7baeda0ddec3a0ecedd42923205dfabf30dcdb216a7b760d8895dedab52ee09bb09e999486b521", - "0xacb5f2bc1257c49c7df89837502e699bcb9652567c1716513f258f021755092954f2dc65b9766ffd9a10584bba424c7c", - "0x86653b3a479bf6e10e781e316e61437af1abc988f59399bed8fb4ff128f5f6d53f50a293da58774acd42b8d342e52429", - "0x926b7b90eb7d81fdad2a8a59e13b1573970e15c10515954b7c232c37955755b6758178314439ee6c3b0c881d4092c838", - "0xac05f011011a354f0e16fbbfb7e9dff03b3cf403dcc449eb5c71067128e314badf4d4dc5dca4b8616994ecdb15909c93", - "0x8e063c6601e553f33abc64f9553db5a19ea794a1f254d5a5f7b8ff2db4ed9d180f68ec919a0f83142c5710813baef4a7", - "0xb6e891dd4d44fd54120b7b8716292c27d4bc8744d96253a841433cf4b07895606db4a3cc5872c480616b863073bf77e1", - "0x8dc623d7928234bfbb8cd0b4fce5c8d9a9db848ab0af967ba9c49daffdf719cf8b55e1dad0b7e421571b8770cdfe9df0", - "0xb5b53f7d6b5d1af75e5a1720281feefb8c9039ef7f1e1969d83bed5a2f73cfbca91dbf4fb8179d9b0d3bd06d1207089b", - "0xa5dbce9e6db637e053b4b4d3df07b724b50d11eacd3327ddfc5aa8f37b9a5bf628cc9b428328e16cacc552c1dba505c9", - "0xacb82d6c9af9af0dd426a07b1aec81b388b61042bd601546cde248730ef85a09016bdc66dd014447fbb56fdcc23011a7", - "0xa41692e96f1d775b3a9378b3634495a8350dcfa52b4b2b7773b39d36f7d349fd5ee9a2b3e72769ca98f2319319890216", - "0xa0b4bd6a68ac5735539cbbdd78ee4faaef7d6488eb7a11e091d94e315cfcc49a90f204f636dd8033857378ddd67cc153", - "0xac3dab32427b0583159482f73f94236980d69f9f8f781b93f44aeb43dbeaa740c77898c38c57677b42c248b9bbb1d673", - "0xa6cd1090b97826486f59a056ed90cde29f2ed821211391f2f16e66f1e8914398348cf6f0df6d3acaadab31f0382bb5bb", - "0xabd1252b722aa56010e3bd4119f2a28a852e9ac1a8ce68c96b6da9d00fac0c9fa70e67cd4afd45e0a8042a810b8e0a91", - "0x9194b629ca80b3bfefc0144553017343d0915aab59faa3d0e2bb3720dd3c8fe07804be6e582c6d57c764be96cd40f2c9", - "0xb6bece03ae1c5935eb38b14f0f64d9d0b4410c02ac309e085a233c74bc3e67ce63edea56ea37f4532e8b864aecacadd0", - "0xb753eb9184f5b30e77bcb5d3487323e0f1178f1ab3e15130953381272209a97c3e8084e810dcebf1ea7b22f0a90b9c77", - "0x87dd4a76955bc98326823cffd653fb7b7eda5df1a971b72ec2a4d25fb3958b9d6092369539361069e7e4f1dc9343d929", - "0xb0f1e8b25a2687d98cc037272473b4e3f33cc8d49a3c83a335d48b8a0d3ca5f84e8e2bde304ade6f7d50e5f3539d639b", - "0xafce1c0205adad1ce52fcca71a99cd6df9da5b748209c2ed1013b5b7d484b937bfbb26db9e9f8e77c081e0a0384114b4", - "0xb363d31209c075b94441d1a8ddcc6bcf9eaee78f8adbf0992d5c7e7d638a02d58e19203247443c35d700fc8ac8a1b7ef", - "0xa0aac7dbb08a10f6cc2c6a4d37aea6bc3dc034d933f49de3dcc79bc0b7a011b1e27df7cb882d155287436b72092a1da7", - "0x86dde01fb7090c80fb404afdc9ec64ac40909b64c4e16460a4c862c3a3f857ebfc0c3122250306c266cb1e9f9f245934", - "0x8b3ebbbb0ccc466c72afb4c27ad99d2d4e98b5aee9c05bc283ea3332e5f67a3d9263b71d16b20db31ad4d8f48174b0d7", - "0x8610c492ce130e76c06b7e0204617087ebd8f285cc3f007897c253a0e1af50f80a825ea7fa3167f882e146402fd342b7", - "0xb17f04a257d3142005b8517dfb57d28661604eea9050ce39c60ba9a05d23897114c59c55af199ed186034e456e111cb2", - "0xa04cd806847686ffe023db1721fffbc26160582c239d5bdef08f4730e2fbb64c341fbabf1fd831af6eb84a113ad7e2f7", - "0x879018340deed1fc762e1b8f3a8b78a40539d6f917215621b725c0a3aa347eeff60765e5ad6f4a36bbea51ab77f88726", - "0xb421e65891dd0c6641e8ddf479b065163897a418d723fc6dce19046501e01c616bd19c9d5fd6b395e65abe0ef956d53b", - "0x89350af1d432a8c209b69f937d2aa20a24d5eb95c5b4cec097ca3dbbb3ea9efcde2a8c56c58f8d7901b96a627c45df9e", - "0xa32d6b31cc9efbad4bcffd8b0ffa46b8fa97ddf3453ed151d7de1d03a02cf233f07415584893155d2d7e14b9534921d1", - "0x8efad47caa32277eb04137c92def618e0715c1e77b5053b0cdd60fa03256fa1c9fba9aa86fdf1c04cda9c5450863d58f", - "0x8dff9d309f7294ba750158e70474c978d1dd98739df654945f5f29fedc607caa06b2866c93a0c7b830ff9b26955833a6", - "0x84bb00fbaa4358a2563abf96d2434e4a26acda87b189cd8d2aabde1323dc1eb2eefcdaba3b90e9ad1215ee469745b72e", - "0xb75acb924159ecdcf49df587d5ac1b1b04291600a4f530fb7cb6231e7fd1029f8cfc957c891a59182518480c2947f472", - "0x8d2c671ad0d442664a0cf267b39be742b1d3760935137e4c50195695bdb99254c4a4d5830634059d96dfb2b4e214b067", - "0xac27b31843caa8140e729a01e7d0229d7c221feccc89ffc173c11a419af3db0f8a47a41cac358e15ef41f679a3f0b96b", - "0xb0b3e33c590bc00faeb83f4b160748fea4fad3e21dfa324bc14a138ee8c5e18743b6bb27cd0ad7c7c28c2b3e92040b0e", - "0xb0d2882c5a0a21fe05b522f2e8a4f43a402bfc961874deec962a1e3d039e411d43bd3d95a26d930c2509aec8ed69e2e0", - "0xaded1e47b3ea6ea7276736fbd1896297b9ead21dc634d68ee56c20fae3da90170f30ad0642be10929ecfe7de5ad8ce5e", - "0xaefe525c0dd24d6c0a66b43ebc6403ac75bfc322d1a22f76340948cf3536d2ae87290ca80acd3e55d2df9aaf0fe6bfcf", - "0x979d1510d3271ff1f06d9cefe30badaece436fae8de70b01ac843850f678aa5f48821dea48ce1c363fa35eec37283f3e", - "0xb8e8d10692f1bad943052fc366291c134a0fc7ca4696feb216aed46eb32de7333a9ba4f553389e7e58c8fa96ba023f58", - "0x913353bc585c0248a54d4705b5e29cc778f304472446eb4baaf30bafa30f2ad0643aaf21196a6c4d177b11eb4e2ad5b2", - "0xb25a0e3b9f983c47b8faaae8549fa7d00d12d7145e1b232d1813ff94058ed603957a340beff25711075cefacde767661", - "0x8515151729ce9a7984af3b94f74880a2402ff853b99f924d581fd3935d8ecfc80e2a1185918a5b1c4902106bd1561ff8", - "0x88e4282ded5e2163874f6464236d5bdcc3c484a0fef8ed0da8d0177973e8175432b75afcde2a4d7d6aefeaed52fbeaa7", - "0x81c31113f2a5ff37250f395d6722a43cebe2a267a0ee40ac06faccaffd7d6eb522103f0431a325aa46a54e606b14de84", - "0x9302ade30ccd62a803b9610a397661298941a644b1ee9d293c63a6c3368fa3557dcf6bfd0c9b44c5c2a6be06d1baf663", - "0xb4ff9f1f6a2a64c50b0a16980ca7cdcc297c6f93e11c580019de52f58381fd0f60a66d3e010fa7ab56bdd250e7b2df2b", - "0x8e57eb61ed3c919dfa0f0cbca2cf559cbede5bbb1e89ae4849b380339cb1c567c98fc2c671211fff4df1a058d46a42bc", - "0xb3d5b45b4096eb088523d16bda1c6aacda01473533314961e6a8de36ccfb35d4b717eeb1ee1bce47ad3b80e9e5084d4e", - "0xb933ff4d3c5a77cd7cd32926266d4f05198178ce350f7215e512e71b07177ac1ff89ba183e424138e1fbf088ecf86c24", - "0x8cf430a6e4eafd23bcb5ec8ca3d711bb56ae719c8621ecee964ef3bae7c53044f7ab3d5d0b911e09c7543e56c1e82e11", - "0x8b3c34f5321c9ed48024196e1e941fb7a5975a045a5a9de88d7f200fc7ffaa0b3e500ab7b535e02bc5c35fbe420e2c3a", - "0xb3c235b65fbdd5c4c2aa45271b9e51674f9a0383a8ac383b0de53125a67c87261540a95b8f81ffe67ecdbf3955b13814", - "0xaaa93ce79ed6e7084fe906c9a1002435ed6829ee3d1380681b902d35dc9e5a23a214ae12dd4fb76691b0016f28d43651", - "0xb4c9533e50ec58f75ea82e2aa7f735c4257bdc1ecd0da0b6521d1442fa61f19e4f73cc90972b47a762f5cd9af591d957", - "0xae0255dd70befe7eb979d41f9a7407040937e7a879daa64353c66d524d3d3cf1d5e854886a6c32c142f4673c56a4df1d", - "0x805fc5ea840d1c2e6b35ce586309698530f056b41de7a403d9e7d81efc2d7068976e8e23bc0b9ee256f39b15bc4f7ecd", - "0xa8de5055b6d2310b6ccb211a397077b211683b05c7e68e55ff05b546c5c81522e6097a3c3b4b4c21fe06667071beaa4c", - "0xa4014d39b23c13efb4326956c5ee476b1d474663950c9e3e45aa1345037be862cfa14aa1d03bb388085bdb4ba9d70a59", - "0xaebe9a9ba34d6cd3692a8bc0b0aff5648e16b36d6c123e636e9260386642e29d52ba71ef7778481c1b1cfeca7fe6acba", - "0xb59706380c9271918ee16a04e84e91046caf99623a0120aeb37a7a98d4c954d3d880960086de6cb180c8b922ca1d7405", - "0x8dc0713371808850f2137a89c33fd55ec2df6a028e22b2679e09f7084d5c471451187f6488fbd9b5100b84593540e5f3", - "0xb492c55e470c35c7a7efa536f3e7c1e586b623c6669ba6eceeebaa1f81fe3b8b927c2e522fb12e603ae246d9566e4d23", - "0xa5148eadcedab9ae08f5db6265326fa415aef46d0b24155910210338500be6d77bc9fa6f6e284a4c2552dac09167e450", - "0xa0af7b66c8a1319ffbe7a0180795b442cffde153f9a871046d6bdef959378c3068813c516e280371825af06ef2320b15", - "0x95479ffc4903f252fe58632e833d63d963469e89744d5c91315d38eca21b98f1ad6fb3ca77d620a6f97d9ca3aefa1f7e", - "0x84861bdb5880f663a5d9b5e89b59a940611a233d82a9895a330464f7e9b7a6965c2420704f3adc61f876584d06771f03", - "0x933c374f176381a3a63fa98d238d3b7d337aa745528e271168f5b550fb703664c3128097b927b5922b4ae8fad30d5e40", - "0xa3ed2c5080c52ad1235fd93c9bbf128b48ba8abe364247104bbf298582930bf3faaa4f4b6103062a4696e68c44f79555", - "0x94668bae91eccfa8ad459588f927bd1a169af834a76132b2f2d5cda26a91094cb94661e3c59f7547b290f827eb43125f", - "0xb704404a487a7dce87ea8207dd5d813378a345375e8e2c07de349c1448a39af8672bb4436779b3485adc46df2212f409", - "0x9347dacaf6dd678574a4f1a95df79369e3f5543c565b1580f907ecfd17b5d6e1ee3322d83601cbbc6d6ffe0bd2833a83", - "0x92841abd813bd9934bfe945e428193e33ae6d4dd235a16edfecd6e4184abefb8a1f85015ee83caf9532dda380fd678b6", - "0x95c14a1d3a1e1ea18f8a61f34b85ee8a794c95d3b4b0ce6ffc89013c9a80291a9a2487b00bb3de51ca2e4290fead7482", - "0x962fb52a2134123ca31d91027fe9fb62dff4e0542c66b55899a163e50f6ff2c4c4b9c1f5b5b3d6c6dbda40e757c0bd3a", - "0x8aa06ae95b0ff361dea2792e465436d810b86f803ba6121ff93fddd9ba60ce47e846eb2d248b28f2c47bccc9457c1ece", - "0x81adde02ddc49b6cc89561716a839fdee2879c78d1ea0fc0418a6cd4a2a8189a2bc245bf2d1e535dde07e93b8a5e18c0", - "0xa7a5713055455728d6d982a6650d1edf1a3b4612c9072ee8ee0bdaa3992963a6fe91ca242fe36f839595d09f6a47aaa5", - "0x93900cefff6f918dfb12ccbb256adec89fb8da019324b811398eea03f6fd34f28a6eac2ce5580904cdb289879bd4b4d1", - "0x820262cbf7864213e768b5a38f39d27dcfa7baa5abca557ab575b07c33917f7b0f06f0a6abd81222fe8a5a69d95d774f", - "0xa33114d4cc3cc84258fdf252e754c8bb1feb6a130785d35a78b4b05d0f782424a5ce0f34be3c1a14e3bb1bc0246bf0b6", - "0xb966ca0a11f0361e611ab2a8907f78a3d639980cae405d380f3a080125c734059acb08431a42ef3a60ae9331a07e6a5b", - "0x9305d107311654ee727182a1683f322a78fc637bc214eae311f8778773e5bc52063bb0a902a5a962a4a26fa0cba3b06c", - "0xb3dc808231c75e681aa2bc4358c41f01e371bfa5bd504e7bd2282e35e72a2889a51747cc008dd4d8b2a070c8e4c2d7a5", - "0x8f05cc76848367abf2020461b6bcc1ecc412ae9f114d44715875f25f34d8cd26b84b01fd6c0640648676b8d2d5120814", - "0x8798c23f0ca8a7b23152ce17086f31e2a80533067f15ab4a7b43c127a5d8af3297115a3cd7978ace811fcc38805abccb", - "0x99a917f54253059a45103e15e92e1bbdb03e80584a85b658f231aa5947b29388f5b04588de1ed6de998741d360015313", - "0x8b0ce3f6afb5aa83ff229ae1ee0f986ec4d31b113070c7ef3c1ca3613d74e3f23cc1cc81957bddc709a5c5bd85cc64f1", - "0x9035b71e4cbdc7c410fc03a85543aed34a1c0a98e07ddc933e64886f1796416ff3a0f7754b5246ec93d617aad0f53d5d", - "0x87478f69c45394f94c67b7196f60aca42823ad92ea86a427d705576fa6a9bead40b1a4106767b8a20411e757f8762b68", - "0xb36901adf577f159b4263821a48fc5888e7bbd6c9f3857968a9cd02e1a1a788c08a566b7bd5bb6be294fa5ab92b4ff6f", - "0x8a738b1392aecb35a5a1f12920522997c9016a0455354e41d2e1b81d8ec9b30a90f71492c7bc122505b2ecb0654545ec", - "0xa5a422515f17f2bf4b9b6c4b5b94df27ce80826cc3ad2a8579eb6666c67a96355e60bf227b36e1f082d749ade7a38a92", - "0xb6d0e36a98e0518b14728bfd79db76c408f58220111e8c4dbf5bcfbd7a85bc68022456196f07b9f40158037a3c3eb90b", - "0x82ad91b812d08bfa815a93b47bd3656b493853bad52656450eb408fc915e430192ae123fb9daf4aeef4608800e818b74", - "0xb8ae5b30118dda7b972464e14a96853147c4b362e9cde22130250447575c0d8d05053202db4c650467dc16330cb54b36", - "0x835d913a3d15ff205497b98107eca77058beebe1aa35ffc20241bbc2a9b4d2019ba41fa3c9b43fe2265a1110b5c2fbe7", - "0xa283d88acbddb50983356f2aed99c2f153b6a8f489b0597d8db08ff7e3b04392609e01aceb37fe985f59773327258195", - "0xb6927dc3318931eac59c6e21def3ca79154beeaa4c57e11ec1f3362aeb33445366dae770e533aaf33c273eaa4f54275e", - "0xa6033a62119e077b438e0170f27835597e21c1d6e4acbd53fec7df69bd1372148f90966732fc5c004857cdd44b8a03c2", - "0xacc764a116e31d63f534b3e0e42a3f899d817d3ec32fb4504045bce7ba3a952ddc81a33d48c5b0499eacbef4268bd5ae", - "0xaf5d1f6a67dc6361e19f222a24163be388033a3fd0d33ad204f4411302668436f933c4a91c6472fd4262397417e3c588", - "0xa2b1fe93eb481d4fec6fccbd64945a12cfeca85aa8b8bbadc4e4ecab2f3ef65616294dc168d6c955744b7c6acd712012", - "0xacb6d3e123572ec20d0ecceaf4916401874f0298218b36a0ce089acef90329204611968c7397c2a518c0a78d02a9285e", - "0x88e4457b1c9b56957b76a08e98c569fb588b081e0e420a0d859b70296f648a8d64ff35ca61a39d1b8ac3613ea5fdc2eb", - "0xa7d1643b3bbef49b2f9fff326061cc27a7f65228e40929562de73e1c66a9d164d42bfcc3dae9103b2acf27606f18b031", - "0xa66e3b97efb7ce4e81534453d3d41ecd4b5b6e9bb829b07b5afbf11fc6ea30382a0059c33c97afd906656ec19432830d", - "0xae9a17d0044abbf3e6aa2e388a986754d6b0fa35d115e410f69ad4aa114db1af5dd0389222b838cfd859d436aded1b5c", - "0xa4a66a163365528b08333f15c6673ca48d7a9b6d17822f1e5390fecad122bcf7ec5656eed2f22fbc6ccb6dd96ee260f3", - "0xb7dd42c938c2ec50c3b3fde92ff629a571e46f8ce128fde7c2d8f18796ba1b1d7eaf7337212f55cf5cfc540c7d2dbf31", - "0xa36bcad22f3408b3bfd45d272f3387cdfbff57e014226dcd1db54bf3f8d1d896fc4fd16640b5d1484c9567ab9322a37d", - "0x8c9831fd5f74ffac203aa6b6ce03acfde8a2fd939b79236a01931d28b424fd8f6b6e44522d28e086aa12f0b110e5688c", - "0xb48bc95abd331d901610335299580ecec02a263d2b03bb0579cae3aa87ebf5e93dd110e7fa4306d31974099fe6e8f58b", - "0xa15e27a87bcd8ba69ebfb6228c3c48e19d79b22978d3a63af553b3083ad13e48dca496896cec195e63b8a4e2c40cae7e", - "0x96f3de6fa492dd2d653888311bc918ab832d6342dc7af9155bc7070004e89ca940b7672dce0a1b4976a7c3018f13e49b", - "0x81a022bee3593997f556ea53e2ee484188cfba0be4b831ccc048ae4b5a6df9e3b4d57c436caae5cba92486abb71813b0", - "0xb9d8e46df67e481c84d5520a9613aa92750c8e8a1e8f376b8ad7b71a3ebd95d2d191ce538e6f7fde3ac5943f70c670a9", - "0x8f0b52365d944f59d2ed445b6ecc4f88c687fd281c1913912c8e6075c3a59667060b42f2c1589a5955e9f3791e23aa02", - "0xad07429bab813045fd909b928ba4eaf262b6ea40b353aa43157e1e683b2752c5bf19eea7ab6ebb8daa8ee91241fbe84f", - "0xb90a99ec1f31c43060ef649e047bf24f2fa7fa9daf904136c6a5846d9479966b54090ded7093e481c52d872c6377eb65", - "0x8cb05fab3ee23db24c9bac109db52895b200dd115209bfa41fde510b29d9871907d44f689fa0f5474d12314a711f6fa4", - "0xb00d8f280ee21866b01ba3de3bf943a7d0825ed67db03d13a0b69f54a4ab389df1cb10909e831ec0af8f1675fa7dc399", - "0xb383d14fdc47df80be46390420603e7f505052b1a44ebf595354726f2b487f7f18d4243709d347e1e584c28167a0e988", - "0xaa951f60d1e069304222a8eb0338a94c8b3b4515d7cee833864b6c222ad76f6c48e0346c5603c35a3b52edb6f9381911", - "0xb887070ecae2884109eed80ff9341f5fc514d59158f5dc755ea46ba396f6783b8a86ffd2fae4419cec2ed57f4dfd4327", - "0xb1a6f1e4d25f4aade76714e52bc426beaa7592b975f07d0a6b372a3f94e7a3ab0e8829575bccc953195ba0c9bf46e68c", - "0xaa64bc4e0d9502d294f0d3e6a1400dc38f28e87c85d3429ab3575c821e1229f1dc8e2c13f03080006bc897e8fc3555c8", - "0x8f215476d94bc2af7d2e0eb68783292e314c9a4f812f3065cf064f427aae165990dc9665011af502f5713f3664317989", - "0xa578c8991e9e29bf3ad7be44bce3817e1c4af3e4a8ba3d82643378da78538787f581b9caea7602b87619e5f8cfb337fc", - "0xabe5453b650106cf65bf2b7faf8ff973b7b3be0e6f42983daaa5359dd4ca225edb7228bcca3d71bcb8d77241b320fa90", - "0xb7ed1d027dfa91d0ca5d797295e359bdb1b0221b1f5eabd2ef76ea3bf456f9aa9788dd00ea24fe0add9e3d9b09ae2428", - "0x96ba0f0c5ac0eae3f0031f8b7a87543ac369c22122681cade0ea33a6ca370cafd360ea6b80758476ab94cb07ad6820e6", - "0x966f6191951b998202b8a63e3b10ece69616b989e9695cda84a450cb953acaf9c4f902200b7492eb66cb9ae0cdc8ecf0", - "0x8d7bf21f76ca0e3b3758c293e66e977f83533d918dc445a09f4f38975ccf7220855627de6460d318290daa03a5f5c68f", - "0xb10dcd91d6602852783bb76b0a286523a0942e8eaaca4e0ee5bc76cf19d33bc631f6d0fda1c1ca51bb3d5d5c7dd43728", - "0x884d502d934e2b045357e981506900849e6eb051ca3ecf3079b485b348372496db97da384f8d2b5a52216b4d223c90ea", - "0xb074162e5d33171477ed48f2f185b1c83e8fc2e7906681f96ed97da8ee86be7476d65e61648383c2766ad9853ead35b5", - "0x90bd3d8b475da20c6e32324e30bab475f2059cd81fa67840a6c831026cf3d5806496a3a25192128da4b819c1b7cd6bd8", - "0x8da4889258cd6ffdf1608af8325230f74abe6a2a511872c2dd10123b491cb09407fb979d80fb1185ebedf421ba22d0fc", - "0x96fe1d9137c24fba18b1ac431ccffc01ef1792623bc334ec362751b7bac73c4d4f7e9bdc2d595ad4731c71808adea15e", - "0xac816ee0b9103f0bbdb50cc05f9c5c8f7ff2f14bb827541c51ae5d788f979c00fe4796b86eb9e3ba5d810925c1f34a17", - "0xb231e98ecb3a534dfda5b40916fd4fda270e316399c9d514dd510f0602cbc29e51c5ed60107b73e3c9721f7ada779f91", - "0x80115e104f22ff2653ba7c4e1cc417dc054663d488f861a9bbec4b9e907dedbb985e6e78f31dc16defa3aaf4f88dabe8", - "0xa0dbc25dde933e6114f2ec22445f1e209836585997b14100f3f8b7e62f5fdc6aa2a85ba5ec39a5197c9d4dabc9a5c452", - "0x8d2deffdeb1f0abed8ba62187f5e1cc06a1e2bc49b3e15f73c3d8e574dfba7efdfb762ab512cce53d7db790a7354c56b", - "0xb73f4897e221927feedbbf209e3d5b9c08f52bb732dc0d710822576abb7ba5ef0e728d2d95c802a00eba925ce99d734a", - "0x970761c7ee891b3ed08253d2c0d28478145d0776e2429c85b4734e5eb7a6416d197d0b1ad3392b37ce8d86fcaf9de7ec", - "0xb4c9e2acb4c05236357be37609abc437612244bb4421d69486050e390d5ddb52887a1b3e1bfe968a90f1695d892ba8cd", - "0x87caac2c93e192c34b5dabc36abe26a844a33bf63e9b01a668c90b70701360a0417ae3248173450c64034685d913f4f1", - "0xa16ac64cd1a7ad46cde1c93024fdeff724afe228818b72bb66176c7daa090acf58e7fc0aabc582ad22486e46f0b96c5c", - "0x936bdd6d67d666274c29765690f4ad9c4b9203e9bc9dd5af558a8d908dfe8d6d4346f6fbbfa69158cdaccb0058ed0193", - "0xb39af8d43ce9d120497888fba0dc95ceeabdd3d84421c1a30fea226e03b78cadca0eee57db524f6ccf1f6235fadd1470", - "0x847da75509ca07fde2277aac9e7622c5874256903a92f7a56382ad3f79d1b3b0cc0b06b2a6b2bd1749ed567e68816d31", - "0x969407bab3f8106a49be63f17ddd603e185afc1c9fc0ca0e90ac415f53923e3c6a69fe488d33403521231c5008bc11e4", - "0x82e25ef35abbd9b98c55a45e7a71791925639afd92780e64a154ad8a94e9807f2643854250f30bff1c5e8806632778f7", - "0x8e6da5cb8cd80d6b8e2321ba3f034ece1813a7b6ee3afac73371a51434a3e66221188162cd9b9ec035326e7e04e74b25", - "0x9868bc3e60478fd0ce37d35e0e4f7695f1ffb7cf2e05842b3a09e832af33c7ba48448935d425196fdaea9c3e8a5122e7", - "0xac7733adfeba1da388eee6540a127d0eadcbd23770f2deec39edc0bfb1002beacb9a8c7106baedb22e664f37771c1410", - "0x912581c23e3ad0d7eb886cfc22633fc704e530b6b4977086f68f1d9f839bbca3bf0162acede87c853e8ad8137b5cf345", - "0xa0315fee6285a33d4ec60f6c1557ebe4473e8990ade0feff7e008d3be1a709f5f486abe784398734d9ea1193929697e8", - "0xa44a08d6fe0a22849a8f518ed9b30b78367de205c3301fc8159ea273076488299b35c362530436dbb7e21b6b9f36835c", - "0xa591ea6ef83f2ec78a402a86ae5b82e330998e18ce66126a89046f169dee58634dfc531b1286277eed49f571df5202a8", - "0xa60d86619b41f59b48c800a302775656266725b44ff8318014fb668f331bec82b3b543ca848a7d40b2718f29e5ce6cd1", - "0x9420d0219d407583fff43c560964e1da06b105043187ea156771b1e4dfb5d5851d06fcfd819c7d8bb6568fa1bdacd916", - "0x97ba0b6731c78eed331530be7cc374a7f4a7cb2144ac73b7c000ca36036f68754d4edccf73ce373dd6c6be55177d89d0", - "0xb4e07b5c1376900fa2dfef8fd1a5a4b6152df7b805d5efc29057d1df2343f8bc841284ed23d2bab5cd1431fb95f71b60", - "0x8017de31e62a24bed74460dbdde1717f3a9cc17e2e2ca9848d77c3b5c364e7e1d58ac0eabb3daa2b7336edcc8a418b01", - "0xab6e409231b778bbc1ab74c3062a376c5287c0cbd7d19d4ac1d5da1a8d0571864d0723944da72581783cd7b6b0d529a6", - "0xb5f2fd4ef29a2ac847358abf2b3e7a3567b8653a4b9ed8da70809f2affc6ab44c65cd17f255db0cd8315e4801bb1a408", - "0x91b61d5d047e9c672d7312f563b8da90d9c2c1c1268913656f061028748a351e116f524593b1be7117a46f168b3e829a", - "0xb6c10b09ecfb92168906191756cb824694caa32c6f2f9b19c51658d44dc330dcd344e7b04333392a8a93c73346a3845b", - "0x9431d01a121e6ffa15c32e724dadcebff65f806c11717b050c106c0c80e43e622130f41224533d13be4a8d14a66ae1e7", - "0xa1248085c85855b4df6eb5a02df0dbd5de5a8a82656e1a5f61214885fcb75428647c8545a848960701d61c3002840647", - "0x9867caba8f4be9483df9b48e2bfa024e79e6797adc2198f2b5115d7283931fe4cefc382323edfa1e850c3970bd1a2d53", - "0x89e88c50c43d7e966e60d49b3afea792429563c93550b10584c91e4a827a3617971eb286c39205e2af4e7dfbc523fd8e", - "0x8ed261502f95814410fb081e7348eb09f3a3df22cc3ca82a2f071abca0190e9f041e8714b811418caf7e1753cf284e9e", - "0x87ac65370073b6bb85a945e138e4d0a5d71ed88739f72b9ba747d2a03b5d4877e8e526026348d2578c752bc4102055ed", - "0xb07de38d07906dc2838be840c291f467d9b695c62175c5afa46d80f34674d061107d6fec6847ba5f17f2d8729f31f5f5", - "0x899348bd385a7c3d38f9d740001c9a543dd8496b58807a6a73180c94f3aa5c15a56cbb85cd7124458e2ae44a454a8a58", - "0x91b70c3543b8e21cbcc8a40cbe00cf2ee0372ba9ddc7f610b711a070110508159e6a52e8778b20f0194ca09b109881bb", - "0x8ab84d75831ec1e708ec74eb6d6de2b13bf97e2d2262ece39e5ba5a4a3049c8303023e40fce5e87b237bb1dabfff5246", - "0x914ac70dd91ccb6d7b83a5ed0a9250c66e77a815aca17416f1796fc0e1c26bee7acec5de11e65061a44d2d9c35f5d19a", - "0x8867260f8024f533fcb75d9c3f2ab113d349504b40f650a2c92bb46aebae3a55de6a113cb6387bf00eeb2bd4719d87ea", - "0x9976dd4e56b16fe11533dce2734e2903a3ec986dca6540bd9ca8b758a59a1e45b1e69c0b8f094d42cf7e015363ce37ff", - "0xb48c840786653a0f3ed6b07f8f980284c5eb2dd22e9ecd5a0566754a1534300e129b39a8a6d4fc48bd403b351e714f05", - "0xb1633aae7c5e5c51a82aa4e4bf9f92c0cd30cc1067b03364825ecc492fa43391ea075195f2f73b99a11dc49f670c0e89", - "0x8769a592f503bf8ab03d767524d9ec2223c502ebf15b69eb4b3d53325ab366888afbb668bcb380230b5bd74b32d90a44", - "0x87439671fda66bf5989fe1fa2aa32519ef908aa6ab3eb34eb5b7d908e9a7db2d679170cf3fa0e0a388a355b8c51d306c", - "0xae1ca219832c90554a91a7258ca5598f8bcaaa7059c574803b2688d8026df9083985c2f8f4ad3aa9b122efe64e0b2481", - "0x94916e6dca309d9c7afb9aa4c0bc89a3de875a8537cae1fd32258b34782994e5be5c4987577d697ddc86b8d68dbbcbaa", - "0x8c5361b85176adf77ab1949d34edd562d8c16979e33b59d09548ad372b8c913ef385166bae53c8fef814a529fceafaef", - "0xb968172a6a831c6ae53e876dc4ef8686879cdadff0aef4147c4dc3ccbc173f89748b840a30ad393eaab69e422363bb86", - "0x8fabda060f8bb2bfcd675803ff0a3f834e2356152f88bc79c23f58fbfa6b0c82850f281f7b8fd2a5e16230aeb4077320", - "0x8e5c887c318335c5561e63fd3c3f64edc669c0b03b217e3ae40ea29245885442864dde15751d7c6ab177a91fdc1f7235", - "0xb2f67f9d64650c6b51b88e7ee6d6a796b453131c93a7791cdb2d0a4922d3c913a4ac988bac5b4b9bfe61469886e1e7a4", - "0x96b836824dc2a12ffecc6a053f7549b7faad9808e98bf20f3c9146fab05098df56fc2833a6002eb39c935fd8757d4716", - "0xa4aa33fa77b62605f751bcad91333659e9345967845226371e5f38d5a7f72405d0e30777b485b730e6c62d8216790cba", - "0xa041bf3467320df4bb7baee569cd685a65c9d0e431824b7de93ee47ab8b3ab20298d60746fea7fefb5bc82d3f7e25dd6", - "0xa85842f11f490bda22e9f73409de0909a2e61efc6d8be0c3f561d881988b4d2e6924ffaf0a4c40843481892b272943cc", - "0x94de0ecf58ef27228f5afb12496c53b075bb347f900b2df98f47ceda8675bc2941aec04d1c8ca0dec0233430f2759824", - "0xb1795a70651be509c0955b07d58a1b8655a2e6c292b939b6c156f0c0983abd7e416cb0cf14afac6ceec85f2c46b83a28", - "0xb6beb936ea1f1639ae59eaf53015dc1855ca0f798d9ed72607edbc6c119741e10af5354c29571af8befd83b8255a8f58", - "0x9424188ceb15c1b470c4bb17c71a37af56c87625e7b7fa752099802673c3a5a99d16e7d6dd8f8b680e89b75cbe7920f9", - "0xb9e22b5df8318bc0ff81003e8208ff3217ba1a84edf6a0b326b7180208d3a9144c6fa54c57ce6d6071ccb1a40eaf4509", - "0x8e5fb55da49feb7a9152528ad6a6766af75cce249eadaaf4806c6d4162f65f3c7311bcf8da72b96f6636cc019546c05e", - "0xa55f751de82aed5842f94d1ba1e29976c3d0146267b11eacaa4fc765da8d2acf617d3a65a2a74aa983130851f8c57d05", - "0x9647758fc596b78fb52db58f2ec31cea186d9d4f68692f56e474961b277396af4a51781b0a358a6a6aa8138e46443a43", - "0x9461f6dc72988b44c662865cdc01c0f970f078637859cbe6314fb17d2cfb3451b222cfb93a5c6eecafd1ddb36de075ef", - "0x93b30bbf4fa0926cc5483ba9803c8b001aa80322addcc866bc514f2a10aa43bbd86008e4671ea26d8e0d2ffd4bb8f2f1", - "0xb44020d0f062a001bd6dca2bc3ce61b17efc7a121a9035709f01a8c34708ed0c1c85cfe98c534189e0669eea719c88fb", - "0xafabce43f35e0d3201b60226c72c30177c4c5d75bac654fd2b58b3ce9de7d83ef01be60514817f1e7bdb525c910b8bca", - "0xa97bbab394253ebb02ba47ad391db3aec1b4d03e88ab3e7505730640558c11fbfce42d53b7f85787cb564208d3dc826f", - "0x805a34cb0c8c7ade28c69dfdde46b7a283e539977602aab165316e973c62bc65396b6fe2c96750ba028c550de03100ea", - "0xa0be38fdba281e0c248933ed73f1119f90e34d5b4435bb704a5fb7c20805e195518a2a424bb483f16500d74f440d4a53", - "0xabbabc7db0a20030c6e687b89162e704720a010d7ac53b9766a9ccb7e02d4ea1926792f5263d715cb97d67f2010288c2", - "0xb9e471a7a433a678090fe4324739dffe238ed7e9a867159e0b43fa80c9c0798cac6b58bc09a389223f94f22fec43e18b", - "0x9818e9a42ebf415c6d970c87261645f876d709751c8629d1ffbcba4abc8e3a2a1db8c4c6a6324dbf433c43fff62803d1", - "0x8290ed53eecdb61157cc458dd081b9e890bed5e4cfb643d11b549b2c65fe68fb981d4311473510781945b0ee763a84aa", - "0xae730a7c69866f22d8f9b0d8e17d7564c25763cc77a5eb718d5651b9c5198b2b9d3eed1c066f4985b2f6d7edb0a109d2", - "0x88325e421a1be440175293efd498cd167dcd0914c8827ebf64ad86788f1fdeb3c16d3de7a681f958b0f49046c54fd804", - "0xa8f592d6ba7fc3ab8ce8260f13f9c4886191530cb1d7505d0beae54d4c97d09712930b8f34ad74f1ac5ebedcea25dc8b", - "0x81c0853b0310a96674a92a144a14c48fcee0d72a772451ed046c284f16fd6447f67389ff7841d752a025da172d62e73e", - "0xb9f50526ce4bee12fc3fd8f3582f3829b90840f6eba06f37b53febc1d0987bbf58107d73fe4373d79e53827270bcd817", - "0xa2ca28f619d4821f450b9431bdcdb129d4f35dbc2a4976e4d416dbd14e378d4d60a517457aa0343f7a5e60a7e246e22f", - "0xb9576225cf7e13374d3975703b3850251d53ccafc6feeedd07be2b0bdea63b899139a1fb446dcf76f62f3c03beea0486", - "0xa88df9f6e95df995345c6265af546158499fc0d89447d3b387e7708fa037f95ac9c4e20ed35b749b8d8a7471dedeea87", - "0xa853ec333af8f35d51ddd6c4d45972b68fb36219e34278efa6cce02bf8193d72c6014ba6961f8448785b0a43a31a688d", - "0xa1ead9282496e590bb43908dc64341595cd22b844624e02f2daf597f708ab0d336bcacb5862bce3ce23d1a9616fc6179", - "0xb97398d8ebb52535a1ce3a10b2255d358142ff653def823ad9e9ce4ca5f372c6e7c9301588ae5d914b2b921a0fac7442", - "0x8d0d292c7e9122b8d001b3a3323f9d37dca61de5a595f9402ab0e53e941c83f80237a853abe4aaf012a35cf59df48c68", - "0x830535a5a8268d5ce4e7462fca4f809348908ae7ee117312244e0a9c30b09d91b6f798654d8064091078400346614e04", - "0xa44a90d3d307ee3a3c3838ce43a873311789a9b9292c62a01622bb813a02f6defd21b0889cb6dda6d7225009cc6d2641", - "0xa219afe00a9327f2c937afabdf5f10bca0687f48d8f7a2a046a52e6924af613f38cf82454df4f412f5991ba20b7db74e", - "0xb448ed4b15ced4de098781793a6e850ea1547d514646fb8f1c137c86e14231ac4340b308bf07813fb813cd02e47c015e", - "0x905fb68b8f5bc14834a06d61f3da686bee77b3b590a33c640c82f34e68ab993f8c4897df463973d6d9f0d53f9ac5cf5e", - "0x991cb6857dd0b3ee6597aa2fb1f4ccc962cb038228615466964680795587240e6ccf7861ec220a53ede1e2e9752e1cb7", - "0xb823dc0249ae72e2de91108cd4ae6d6af3e464f12a53a46ca583727c7351a67f2d12c911534e234ee187389fcbf1f621", - "0x981ba6bda1816036e75a864f635629a141905a4805c706260e7a5e12b82dfa9de4f4058143065b10a1012adca6b7d083", - "0x8bd8ec0e77a6867057e5393d82132474eba9fcc4bbe025544bab0ada4ebad3d296ceffa3788acfea0a44406e2ab637bc", - "0x93eaca3a7f9a0dc809eb9f604905b0cab18750a9bfa42d98d99728a6de6e0f1e05b6e98bb3b0d9862a69eb57ee2e18f3", - "0x90b077d7b7b1651ac0d723978b3e408191c2b8b08247fe2a7fd69afe0615dec09e43771cd845c2cd064b56295e53f634", - "0x847e8f607332129e95eb1f3e00003b087e92ebf1ac9477304b0d54ea38419fe8581122d21bef8d034f788a9c92f4ec00", - "0xb0301becb003dc7cd56ea7d830bf0fb4b85bdb33606d8d9ab2b70c6415ab5c8f4934bb7079ced16081b8f6d16b77c0c0", - "0x9068fbbfcc95fff7ef79ab64063dd9bff0c40b4855eedb39bfced9250cc351b5b3b1bc6c2d038cb6d59a12a41b3db664", - "0x84857e081fa1c6c08bf7b0bcfe7c6d74b57cbad1b67676e99686bcca0b17715ede19f826517dce3f84cfa014e11909b0", - "0x98fbfd6a94ac3e4b53b811e4d275b865486a52884352ff514889313c7a15b07822f76d428533a0f8d3cb42f1e6f72356", - "0xb4faa1b1245aa6339b5bb987f3423d187f6e7e5d4b4b341de87ebdea53b124932cd0e586470cf4a3b1060a126e4ce7e1", - "0x973e88d073071c2cf5ed643d770a45f6be7b230896caf72a2cef10e56ff0a4e032d6ae1ff4c19bba2cc29f29ba70cc19", - "0x8d40b3285879fb9ac0b6c9d92199afaf4716fe21edcd56b1a1fcb6ed298b5ec5b3b64222eb6f0cd1086d41872911068a", - "0xb5e338a02076ad851778d590ada4af1c217d035c2505b891163689a554e5a957219410bbb435bbb38c8a1515146f8789", - "0xb1d3e990d027a38fc8a38579e39e199d9984dc6d857bf51e2ed5fae061c8723fed3c74662405378c29342bc4f1fff7ca", - "0x8679f10f866804b19dd0b14b24068c1d32908a52149d33ab03394990cc60c0f388eef02bc0db819f92f8197b1fc60c17", - "0xaee5157db1cb7ca8013b0c19201ea1e7af32e4117896b3f8ec0ef0b2a4ded6a5e7c893281865cdae7deff4532a6a3fe0", - "0x950315818b710d3903b679dd0de0619059bea7dac3bf4edc8fd4a6dba81b7aff9bca7cf1972940b789458f287609439b", - "0xade345a6171b8e8afce7a455cb98024d0d91dfa347632e1a5a40721868bfed1c1959300f1e1e39a551d99a4e1abb563a", - "0xadde1719c13b3ec224bdb6b44dc2c5f2daad54e7ee736209653a0198a769180019d87fe6bdc37ec1b48f0212ea5a8927", - "0xa3397eba3ed2ea491e8d0328333689f66b2bbed0e1892d7b14b2aa45460a12e4d592d78a5d0ac20bd6d34c88b8f1f7a3", - "0x8613160aca85f0154e170b1b3f1052ba984f5c422c4c25e0771a53469c274130a31f875a0ba9650f77fabd910cb10467", - "0xa91ae4d048c56d5b2383a9d8f6396837543b609d8b0be139ebd5fd31fe4a90071656442ca7f14136cb8205734d929b5b", - "0x8e42732269c77887f105d1c326488025f9938cbade678bc6b39941311360408ea6baf274bbf5ffff996756cd2390bf1d", - "0xb96e1ca66d51a186237fef402bc4e14f8f96a138db377b7e2c3243954b6f47ca75cf4fb5dd081aaee634b5e2efe2a065", - "0x81d1c20d76ed054923c17b362b50205050f185137ea10559e35ee7e191bd89383b68179c0aa4531eb61abdc239ae6891", - "0xa350b5778e26ee808466619f73900e09bd387849d072c0c014517d16adb4e3394673238c4f4e705d30b4ec2edfe5a695", - "0xa13657433e39c0241d48075ae8ab1efe3680c96d078685c5dc0ac3c49d468db98f2094dd4204f44e8e90bf54059b5807", - "0xa96255abe489be9d42ce6fa76ee90e4bb6a36421fb78068432cc935632ea5b5bb2ab70790ef79422f93d35d1034568b0", - "0xb745d643480edb577b1f92ded38a522236fa1be2944ad8102ca64c3d55f6297b7e0aa1beb082261af1cc334f5a723614", - "0xb235ccbf94e2bbd3c794bcaf84266141c0e04ecdcd7d2def83a7eeb86a2ff4dd3ddbd8245296b27344770f3d5d332f90", - "0x935f3e4e9dceb4f58404ba1a489985001827e96bf6be227a8ac4e2eb8a950d4a446320ce3a245d09d2d74776c7033a3e", - "0x99cb7f3d6256ee8918f40642f5cb788f0047a04c482146e70687c3298629bf082dd98d4a4c222fbfea3afa3d7d806f00", - "0xad6abd2fcc67af691e76792432b83b8cd9b0a9e5e73de21f89ab54081ea002ffd904d77ab8efb6906790987e29c53ff9", - "0xb6de4c3a45ed7898abc037a47507f46f7327c057a911529d3a671286f98e79a421f4586a7ff3235f1892d0cbbd0e7bff", - "0x9120311b071d38214e39f4b48ce6299ae9297c7b76ab364353d3816669cba56592fe4c7f1f93507bec7ddc1df471f0f1", - "0xa6daf71681485d01ae7fd4bb81a326d3d2764bbed5d3be45efcbc04aed190163ce8f9d04a84bacf25ec151790f8fe917", - "0x9534da45c2a497607f7440f61943f4c16878a18f0bbce00dd644de88383470705b489225f5be4428d1f988256b70c926", - "0xb2d1b633b4832dab1a530a1d85415e7fa3e4a1fd383ddb898a79c7ad028f2dd8fbd56b83600cf481eb14a073cd65431a", - "0x8c43dc994dfeb5f22df9560518df32deb1af43f254acb8e6f93eec3fb3ac80081b39610800d0822246e130e8c5f7a067", - "0xa18174ffb85d13b7edde5822f22872ece12383d79fbbdb8c02bcc9f654cea904ed8c03b8709d70736dd4b308ecc1607c", - "0xa54e4bb27d6d561261a3fc48705781399f337448c0afa68c074918d2c14ea7d51263199b01070b7161c3db8b9949717d", - "0xa7457cba2c5b455584980ab6d0bb5253dbf2cafea4efe5bd769020b970dc35fba4109d002f5934610b8b4a158252ebdc", - "0x877d4111f50f77463b60e07843b4521b2c44629a7deff20dbabd412206a4fe03f976de1a3897b9df7eed16217f03e2c2", - "0x84d1ab99732fed1470f69fdb499dd3de795b055354e89d522c6a7df4d6a5375052c8befa4dc7615d29b3d92ce7df2f24", - "0x93bd139c343d8b83403e04547072c3e546c67445220afd06c119f7119730288629439640302d0628e74fa596e305c0e0", - "0x8157b5ab48d026684f6b51b802b4d8e7f85ef82583d1e8dfeca042b47a0e0f58e30cfdf4738e6d51394b260a4ca7e19f", - "0x8f03d5c1720540c29a1dee44ef5c7f8b209094ba8376d8e5eb9b52537d9843912b68562eff742f0a7a07f5faf6abd1ba", - "0xa15e4999a0028b8b083c2afbf4968a1f0397c26cda8dd7f6c134c6a860e740ac4bf1a1936849a4f2080e0cc9f8e44387", - "0x8b71fb85363158c7afc3c41422e9a32ecb2d1f9d3c01fff00b77e0ec6a8661e95b552a7f05f4acebee751448ed750684", - "0xb34125432d0704c0638090fc4566780d2d8038d803f96e19ff748325f8b5579cb8867e12491921feaf3c0df949f36aab", - "0x968196e10bcdc6cba28331a229acd54b59edaa83cad0f8d14f39d787467bd5ea725a3dc3d50accc334e74c81fd762cff", - "0x968abfa40af365986e68c47b4eb3562a72793fbd66a7d1b3804a5bac8137f0a3cbbf5cd306097cbf1a3b95c3414fb061", - "0x85395fa84223dcc16b7e620a7ef6f902f7b29dce7760f57baafb37d985755e65623768b8bd745c8de7d00e2035aba7ab", - "0xb57ad86ab3f5cb00ca0855088921865893b6e539edbbd504238df2f9b2fa7c7bdbf2d6eec6ba8e2a70a4c4fa3f459a97", - "0xa2f203ed1f07cca3f8c0d35ccf7a63216ab98c9e71557e829dea45e2c723583bfbaa7a83d66521b08a0718c63973a6b2", - "0x99a3522974525f4ed10623bae83dddace6f9495687cb9cf4ef52c8530b05672c2b226d3fc5058c56462ab3737a068baf", - "0xa4a50d127ad06067f1eac2d61c0a1e813fceba2e5e895467b5e6045c9b7308d3678bed9212b98e44c19a1783e0f57bef", - "0xa62d103ecc1d5e1d5cb98a0bbf9682ad65774d63f67f95bcbfb0cdb5e2437f2279043e4426d490f534961a2487782cce", - "0xb12fdaa5ca77456e6e96eccf97a303ee2d73f547916ed67378835402136c2aa03e63912edf5a67785f7ac1636f6ddb51", - "0x91315750043c4e08c7e4359b9cba25309eedc9c85672851f05a0651dd9b9329bef00a79cfe73ddc308d97cf548486b47", - "0x947115aa6cb3c635bda7f3c5fc3dd0e4881500d74db4c0579e4b9039b75b131eb5db54174b1bb970064740551e6cd1c7", - "0xaff091a9c7e86c80646cfffbf154ecbcfeb66877c5b773b6e8759649ada1094270e57970cbf2b0a4bcde9bbfa9689b1c", - "0x81e3cb9116f81e583b7579f9af06931a5337fae0d57d9ef777003f32e0eb619b75b74137385f9e30dfe0e10c2120b02e", - "0x81ab49647db2a5a6f47ec757d8427325fe721142377a287c547fbe04ea280acb32d71f3dedf7ec0f67b43ffc5d748342", - "0x84b0e16d8478b798694503ac4a87ff31affe0ef6d2bad47abe0fcb3a2571fc8e4e9c966276a5f4968b2675827a115818", - "0x9567b2edd65974393cf2181d235f877f5827a6d5ca16e77165ef35f6c66370f0c55a2dca5387c02ae73a66b81f01798c", - "0xaf19f841026271e284548b2cfe9fe7d6f9acdb4759ca76fc566de7a8d835408f86627185fe32e705f94e6a719e463cd3", - "0x83883e1c9d215c90948d066d2210528552093a726f0a27b8342b611e4b8639f6d2a5f95bef8cfea4312c1f2203f34986", - "0xa48019b2da37a232b7999f6b668e2758f82132e15ea93608bb2350d3188297c8ff8c791977f2a083ad9773570bb560db", - "0xa1fcc29974eb065a350cdcb4283b2a813f02421b872eb3c15056ef96e2d5ffe2fba0e10ba19a4d271937cf08838e4106", - "0x86f9ec59a1f5a5796e498247c0ef1457ea7ab098247f363329a336a1ee57afb31cc18d35e008a5263e7c401fad5719eb", - "0xa903f95675c14cc618b02f7a0401ab67170b4a143925979791d76aacc90ad1faab828fe904f13d155425b2ffd79c008e", - "0x8f652c4982220b8e9868a621a91eee85279b13b0c2974472fbba11775e6bb1d8d53309f500fbdacdd432170bc76c93a8", - "0xa9b02cfa052b5808c1c9ee65ade446a6ce20174bd2e9d9c7388a1973b0290debbb6fe82697f09afee6ed01c9dd99b905", - "0x8b4c700fdbcb13854c7b1d257a781fb7449a9e3236b962871f11b31b1f2e69ecfa6039e2d168ebdf2f142f93b91f5882", - "0xa9ba2295980603515f80f0130993f1be434281fd4442ce7e68b2fee12b24e440bc0282df67707e460bc67a4706bdf8b8", - "0xa382b85dd64b70296a2d16d1d15d6de80687dec9cc074445fac8de7bad616a95972ec399bda7c2cffa4247bd04413b76", - "0xb6adb37da1c6cba5ddfaafa3718aa66fe2821b43923ec371cd4eb9e974ebf3d0e94dff1ffc1347cee5c9e19af7c76be9", - "0xb5b531ea7f93c4756e5799118654ebc478a3ab57ea51125fd31c012053c759c8a52c8830b53208f74215e437d059eda6", - "0x89c88a5ecee1931dc027d1553b5aa82dbc5fed2a4bed329809467f79f2712fa5529c0f80ce6891817927d0b66d356db6", - "0xb4ad1964f73d3b7bc338909df2ab8889c4faad9b3b8a5959ea81f44c6c4bec95f0fb6e8fea1fb7e09789c690423e2b85", - "0xb573bcbd8f484e350db04eb263187ae4e99ecd03494058e68221aad8d044db82957f4bf23f71a9634b2ef9612a78ecc8", - "0x93c3dd86f7c3105fe482f62b0a56fe43338aef50f0d10f237ca774f834151273aa653e17bf919e54aeb35343ed790c0e", - "0x9069c429e7c6507a755871b301b31c3b4233006c51bb66ea2c9051c6caa52e933ad81a8e879129e0c1b099a124bcb295", - "0xa22203e5bb65593bd22cd5bc6e95a2f5c9a9aac1e14d948a7e0aebce4f009a56623026e0980bd194a633b42f15822ad5", - "0xb1585de69b3014634da2ba76218321ff4ce8476b653ea985a7330290b1bb1445db3e1f3c510f9ae7c22940157e2df36f", - "0x802a70ea7fa057a03d12538c3ad6b348a8e694bc6b483cd62c97af8809627a161223557f1d5196e23f13eddce15c814f", - "0xafe8b0e94d8d9b44652602c5ad15bb0140456d90c95af4ba58cff528e2834e0036572af867488f27cb2d27d81cf02e30", - "0x93bb332d924bcacc41b4b9bf726647d7cbb642847fee5ee7dbf3d2a0489d71802d959a3e905a80ab1f34097328632f00", - "0x8caad1d29fe712bf09d505ccfc724574c8edaf5fc743953b2771cdae006ad9792a889e0c8136409b8f92e2cab5ba09f9", - "0x8678be67412da4d43d74660df98744c54365cf10aa59e522c59afc3836d115380416cb1ae497ba4b50ad31a23ece8b92", - "0xa48e64a5447ebeb5f6b0e0fea29fd5845b378e83f6b06b79b604081e5e723930a0d4c6025627382f6baba8d47425cd27", - "0xb8914eefa2f5613dfe99f11212912dd53d678ed349fe871781074d5b6eed1fc7f2e5bbfad3356a685c52a3c8a26e7963", - "0x836ba66155facd2a1839f603644aa5520cecaad130fcd5cf379139056d3e163bf35f172a4a1f015924b89137f83d366a", - "0x835b70cc340b57a09b1fecac678be381ffa4c4951f6742322c2751cf1c748ffc2b9bee8f155c007d88ca69c12bd9db20", - "0x8e98b4ae7c68941a48a70f703c3d5bc9a4cf6c20c61eb4c1338095920c4f23aa9eeb474a0430dc28d355b15dc6e83b22", - "0xb24be8171a105f203c5bf2ab0797dca8ce61ee07307e1d82fd26fcc064bd8a8a5b6bcae8dd611f8ab650176e694da677", - "0xb057bec8ca008dbfd4982ce4516a4925a61bd68e7a36b182575c6a4044c7a413ecd1dffa66ae3cfe2213763dd0f55a01", - "0x8d270924c541120a18d587cee51711486f09a39444182800355c4193a76789614c6925e6a448f46c1891106f866f08db", - "0xa0ebf85c44453153764bfc817364493166833b0f84b7a7c505a955cf3a7d4c1b4d2dd00145220d8a3207758a82dd8e4c", - "0xa56fbc83a3f1034337ca0d5aa89a0a18f900c3654d171d47ee86b0720c6a965c09c9b06678e3f25b151b115d129ff7bb", - "0x833618f5d13b7919206c8e9666997ef26c04a74844f57150e7268bea540e30b93eb785803535566765bdc899d4f10667", - "0x987daa13c00dcacdfb1f0eb13c38ddf773e7e8e19af125604ede42c6d0907f9ed1e4b8b8c9118b14f9449026802a6200", - "0x99b6e669cd7532b435d01b20dfed29211042beea6de58acd68b6eba26baa1687d80aadff901b5607a2553df047ac51d0", - "0x82c81899cb76ae21838558a1946425c719cf68d07950b0f106b859048107c13e4e83b0f2762ac8590cdd044c3e731f6f", - "0x8f1c5f634e38f47cc6967f2a80a449f5bf69585622c333d784263e3f6f027bccf8910da76435a84155a6fbe9a8adc4cc", - "0x92d3b5515744115dd20742be1a72a455c6d481855f4366a0e960104665db4ecae8925182f32d4e1d9dd7fb9aa246726c", - "0xac86e14775cc4ef22cafa8ac3298bff27fbefa9b7004ccb16d2937128492a2c1319641062f609d27b9314aa225301d14", - "0xa07e1ac19f4c374d68084415fa4a8068c0be540c8b9d81c0837347fe096547d8318bbd804b7642820e43c284af663258", - "0x839266a2fe6dddc446d4b515eb538a27b5a3a5e1a8246f6df77c2de8267e172bb7522aa7985e0503c68db9cf93399b95", - "0x8a381fa29e553fb57e3780f915a86048aa82a8a09059c80154df9490271aa6b99baf6bb217df43c8ea1265e85f07adfc", - "0x8d8806db0093161d7f83aaa2cbf0bfb8cabf823cb54bec094f886da6461397f41d54c39f216d7ff4a8262d12aa8ebfc7", - "0x90aff3f98394674791e194b57c3f4e6e019471df1a74dc47bed725d4c47399e91c88a955612be47e89002f451ebacb55", - "0x8bce2d60f3e82042ba94cddd02543b46cebb8770e9b7833b4e79289d4c491df7f4da0ab69778cef92dd81e5a6f0eb71d", - "0x8246fc9424b5d5ae0a3344acd7d6962fba6b68cde09332c262d7b3f379cac2c650d80cb5ed4baeea16a5557efb6878d9", - "0x92ea8547fedbf440517522c687f1d652ae4637cd072147ef31338a40e11017bfdeac42a32808d33522a71136cc3bf26b", - "0x84f6a64600184c54d3d5c320498282947b8a8166f09ccfdfd6d285cff374312da57087fec3838a49eac5b93315f03b80", - "0x86dfa1485e343c861286c057109119ce8e20abc646a4411696a3bf4718ce03d37fe14b6ea1600d8a7b172fcca6d08ea1", - "0x8dd3404facfe49c2f096d2e74641c474c9c54cd6121771061db3c1757cdb1cd6813d3ffd79e3b839b348d34b7b4f1ba4", - "0x8870cf255b342ffbaa2dcff41910a37afb29ca6a721774953dec182d95b426a481eac7bc107c4c2ef3df9f70e04e0b88", - "0xb0b843ccc630209b9ab35a69f3aad58c76b2cd3cbe94579b5757350460633217246b342fd098e365fb3ae88d5b7d13f0", - "0x804fe307b2d477085f8d9800c8a11c2dbf6f662d684d6a0d2fd415cbe4a09255e47535a08796a805188e1bad779ce121", - "0x93d91029bce430ecc5f41a460c02cefd3fdcb8c3e761ba26a020e108e06520cbe2eb0c04139aad0c0fe58ed34d8b2215", - "0x830867ec984210b314e7f23dc5b10e6d9ca53789cc447e29ebca229f4c79c9120618a540a9d21e4ba2ed8a811d6c456b", - "0x8d7a89ae9d7318d6578c1fa75b3babfa7c9df7099eefc2a9983ffa96627f4e7fc99dfde21b92fef5e0034dfaee35e97b", - "0x8eb68f5875dac63cdbbeb5df2fad7c1426939ecb6e3b6a48f737bbac1179ed4cf5a1e6919529878169d6d8552fa5ad56", - "0x861e26c9a31d21839735cca8a384b981f7346b026cab7d60fa95a7ad7a4a370cfb409812ca285090c3f1c3a95e5194b0", - "0xa02ab98589d48b2240209f54b0be78edb56b614b1aa02095ab5a9cec6a04faf065eb7b81bfe45aead551b1f774c60161", - "0x88124374273a2425bd5932a6b446986756379c7eb93d3ba0c5d7cbc3477e6267d9c67e5e956cf6df841bb263d1a8e224", - "0x91a766128a4c718a45db571606867bfe6e1b1049f0ccf71a01138d5443014c9758000a8be4dae0caca56321e3f992e99", - "0x8dbfc433e2477b9d86f221e9c49fb8db67c85438fd54b670ce44b68b62d4c0a9cd56c37a2127fb2adef22c07643fdd3d", - "0x880cb650f01191db0dbfe63215d208f70f924380fa22baa0e5bcab60f61ece3c6d4cca0e4363291f6a10aca9649da69d", - "0x8532214650619e201bd330865a3228e9ffaf1f64ddd33d206be5616c691b1965814f8bc507fc8a695c8291c2f8713dae", - "0x90e81d5a9d8fc976a3bf6ee6d3022107d3a9441ff212305cbc7c35bc9163321cadb352632181ccdc1450f91f51872b00", - "0x94d656836edd68384df1fe61239d40a36a0fadd59abead673e4a2ae58de5e2a6bcc4b980dd9b517e7212726b8ac94ee7", - "0xafa70edfed2d81326f26f111982aafad55f510de95555a4d05d9916a600f3ca6c1e3f66d6b092c91c1fce6c407e022a8", - "0x95cfbd616c2a59acde8152578737d3ed329aa82a950dcbb9378bebc3ec8beef9be2759a937381ed5aec1a46d486d1afc", - "0xa0a1ae94bcd07ba44c30bf50cbe0ddca2fdb5db82ae73e53c2efe9446c2464fea8e5de31da4afb99c6405798f0f9a59c", - "0x848e10f6c12a6adcf711ae3af8382178c46b90b9ff9970350f14b1a1b565a7efd91eb96871277b86040d26561acee099", - "0x815e749e4a56c3b982b50ef5ed249c4defee558647a5c6062022c3ef42b5ebb219ba770f0de74869bea14a98eec02360", - "0xa4d88794689a0f2e194988114ab96d28f77a29cfff606228ebe030a62eb4fba25cefd59d3d5f2fb66acaeda866f5c24c", - "0xad59a8541eb9641c3045d5cea6e3930b35886da4c96906f701ed3ef90cf74431df3c444174d9071a1657efc8cebdc739", - "0x97ae83289d535707039e9df8ebc73262f881ee8e288f73b9f0d6fd209385d3e2b761fb87ca852e10cc4818384ee155de", - "0xb47983e11702462a23e26c8d6407b01b67ad532bce3f1e0626fe3164886603bbc803c688729a64a69d119b15235389bd", - "0xb447011409a07a2d9074e08502e882098799f3b649e947de44c79ecf86a63045a19985857ec500638a3baa2b228a79c7", - "0x870f506356aa4f8df7d61449a7c7a8689705388b8b81dfe08fd79e8a734c998a7ba71f1f6e9df085b8aa5813a4ec4adc", - "0xa07abf6abcacd7612338b455c1461ff484dccda7430d4e9c5f9b4e5c1cb65055f4be650e6d67179b2c62709cd52a9b07", - "0x988b73c2a71f3b1d6b4734d231c089ad6cb07f7ea6f4b8fcfdd34aa33f09feab6cda91232c06b47e90ae9930ea46beeb", - "0x886443bb8d7d6c7634f55da1c5695f1691750fbf9ad2d63621589f91a0205ed4adbd4b905c62effaab235e740a172040", - "0xb66caf1ac38a8a66c43767e8597ddb66fbefd888989ca1ed56abb96ab9fb41937927a792ce422577c68286e53bb4856b", - "0xa84be3b37007cc932429ba2b4064ab7fabbd0b77400bbeaff09f8c6b818b5cd127ff8497e131dd8bf4323e092c690219", - "0xa99e9898b6f9b7b1b9ef6f28f60fe2ea71e961b64b262cceae41003f6aaa16fa3dc1c2ab63bf63534718ad812e882a35", - "0xa1cea8f3f5605a5c60144fed53943d3f259e3e33545eb0dfeb211a9dad8d99cb3cd3b2cf5031b85778ef6520700eac4f", - "0x8b979026924097a06b3827ad28f3efd7f0e5aaf7920ebe5347fabc61b000631f0ee973b61b7468fcc60ba6e4381ee478", - "0xb5dd7393dcff33d6d337328167ceaa7a04a98e0acf1dcbaf454247e85793fcc9a7d280ab14693cf2cee01afdf44506d4", - "0x8580c90d72c0c83c6c003dcc340553ea547eca5989780493c2551ea9f04225d77ea76acc1bde20fef1a0bb7ec01685c4", - "0x8c77db66f09e76ebf7ac14fe2fadabd41291f7ec5971060580b317f6af0daabe099f9db2c3d09c4c6edfa41211da0c4a", - "0xb6dec051200c25f150d3b9a7802f5b7c361b074528c79dccefa77d26ea2f67562a6d9fb8246369c6a60f832fec6b7636", - "0x8620173e19eac12fdc7796df12bd3648c66f78fb83a8e6f6c9077c34027a3acd0884ef2e3455a3de0fbfd4ca130ed545", - "0xb44e3ae4047f917fe1af378cacae2813f8774307c20d54c565b674de197fdf90e1a6da0733e948c3218353c613d23fbc", - "0xb330af874ac5d749a4ce1a23f4fbfa67f71e8fd16f6da07c714218be431b2a30cc4ad2594994a7a35f5aa06bf87ea3ff", - "0xa5be67aad05a965685aadfe03d66ea1136e6979cef00605e92912fe8f84be7351a6acf6b73c567a20ce6045a703cf557", - "0xa1672ed63df30aabe34e8eb81209ff31f4e5eee620b58074d92d9cf2687e40217169df59be8af7374aa5a9107c5f51c1", - "0xac01de17b74e2dacfe3db539910b6c370de94e646b6f2dd2a828a381b04f2979f8a62bac473659fe7b6e126f15ed7aed", - "0xb978099cd3aec49300ef9ce5561aa30da4d37cb5c697e0b5cbc3c42ccf2f96e53e948fc579cbd24605101176a353a962", - "0x8c8c439d9da3627e9f74da784bab8191552b945bb5bf9abb673659c939a60903e11f37300dddcbc8a495adf5c038234c", - "0x8b4570ac55ea349560a4e7043fa17f264dbaae15a2f3dbc5ef8a6579e1f9b5a440aeda94122982fe564f78b615de3e1f", - "0xa76bbb163db2ba26f5dcae8267d1a890815a76196af10444d3a04c1debeaa3c7cd51102fd0bff8944710c743f5393745", - "0x8d3ba2494b612f93b4ebab77e6f207b636e2d09a3e4a9666d4ddd5859fdbb9747a88eddb7749356b141a071584677ec5", - "0xa8bfd973dee352ae653f7c7bc7df2b32d790653a3f1f2b239d71677992938cabe941fa609e915e607809b5fa954c9073", - "0xaeb4c1ccee15753d4fbba545ec4ebb05c7428427f087fdc0852a18439b19b1669a3c744a0ae2e7f74c46905f520c3231", - "0x8fffac3ff9de863257a836aff3cdb705fe7f4bf604c2cbe10180d81c0956f723b69438bb8a3aa094fc755e386234dbf9", - "0xa583153b241d31223ebec9a95e11ebc4a657b14056b8ca052aebdd9866140dc4669bef4f02b5ffdf667ddc9a87e0bac4", - "0x93177005082ccf2143f24c063d20068fda393948bfac34af57ca58cfbcd0bf9a0de46f8f41312e83a502b7ad69b8f2ce", - "0xa79b0967599894340ef2408b48f42e6ba4f406e5ccaff13b46414ee38e5329ffc145f6c34d8e8acc6aba41c23e57e7f8", - "0x809a356a76d54a05e5006f2cddf0decf73e5392b57ead32ab56bea9fe13c1ad090cd69a8e297fa6e017b39361906360f", - "0xb051226cb44ab1bf94a9cc0e4f246751d68f32ffd12f1d077d3318de642f3997fbfb0f2ae1dd103264542c2bd0293e57", - "0x8cac28256b1a82d0be373d884d00e9ff2e384d5afbeedda706f942b1d222694f126ad44f9453fc8a985cf69fe11ad70d", - "0xa13b073290de7a2f01a65e429e1adb78cd37eb23c24d6fd5a1632cce2275496179e3c22e0b7f59fb51d526402c0f3f7a", - "0x92dab68d1dbf07e5b058120422ae610806809ddecd2aeb9d11d8fcac738c72eca584b88ff52c95817b79b9e0369e3ba6", - "0xb24267fbee28883cc8649c243b13905874e5d97a285b9c6abec749a53e106db0a6fd6fd8671d5b7c9a1851da75a4ac5a", - "0x99cdf977dbfc10084b698c81cffb431a9eabb55b1323e1b15baed5984a1ed212ec5f6c58372f965fe18de0100292e26c", - "0xb021c697c56989bc8c06636cd623c3672e8885598fd2014f5e560fa2f721f9487cfdbcf4adfa34c178ac84771fbb77a1", - "0x8fd7e3ad3330d4eb1a0bd42801d95ce40a82b43c366abc823e25311aa1ed882446d60b6309e1a1e201e725326736257a", - "0xb1b3c641ef4cbd5e9c69955217f53373cbd104916e04d012eb40a24d798e76bf05ed0a218862ce02619ef694c42be170", - "0xa376d0296c0105789e9fe539a5d22bf62ee36a2de4c9aa0f5e57210ae49e2cfc5209fe0f467ed19dc95b9746595255e0", - "0x8a0ec125a145e373929ae33efb978bdaf16041eba684ada612c244bc3e28c7027886e6308373a5ea53c9c3d8e868ce1b", - "0x93fde45cbf04cc386507b03eeb93c885da12bfe519df9fbdac5ada735934ea6e1a6cce066d033be66163b078e96e2100", - "0x80c1839ee1d2ddcae1fed77d5f8091ae3074409461e04153db801e05b44a7658c6ccadd33ad682e51e211dd9e3c80f72", - "0x87112961553b4a243875ac8d46bb6e274325699ccbdc40d7d9b7f7e58d3fd164f86b0b1df5df5f980785cb3918dc9b33", - "0xa011463964a319c1ea11c7c55c607bffe0116fc834b8a1d3684df33f77f6e51dbe16a891307c9f51d5b4d205c4530072", - "0xb316c4be33abd10400a4925f9d20ba02ab1feb50af39b6f6120d6dbcf1bde0a8dff7e08c64bd1f5c43543b013e242483", - "0x9555b696d428c4b74806a7d08b9ff17c8512a86cbb13040360ce248de241facc42c042d3779c28fe98dc3ca96a47b2fa", - "0x819f54bcfc58a7b793d185d8ffe411bde6207b77cf22b0d5e1b3d9843e4638009c907fdec1966b485f95870da57f131a", - "0x82c3f9623bfb8a8ff3573197497c175fcb314addafadd025528f805b7a63c87b0e54b48d46c0322110b0043f7f77153c", - "0xabc023b35318fd97ec81933ce55799d8c36c3d55cf59b9efb302b276a76a37c517d5c690287f216ffc5d1fc082e116c3", - "0xa6579226d602a7ceec06d402d38f217b836c8804e9da202bfaf1f3f4f15c24762ad6a2414ac022d8de68fb76ba8a725f", - "0xb701d6d60387d4e2308a77cebd210e868eaec10d86532ea18c0c6393475b3976a3eddd79e469458bae4f496da7398fcc", - "0xab202a2acd4ff874cfc147ad1b02d4515ace254f8b828f619df2537698f4e1b2687e004c70a152d605a73ab1ae40fb3c", - "0xa7e09ef6c86ec7475eb3ed69e57e0cbe86114ca5c0748069d00b6e3a1e2ed74e4366adfcb4d938023560fd91d0f64612", - "0xa9fc42b05ceaff4312d5dacd78fd2394dfb8dc87d52efb0529595877727747827c1c7e3a3da81255356033fce1f97513", - "0xb0150a1dadde09cd60ec3686256b4378f47dc6a55c092c60a3a3f0bbf586013dc37ed53ba7a91c72791c0d52e4c49c2e", - "0xac88e91b48f031df297c29fbb2cd0d2bcc767be5e0a7db87acc87fcc0f4300cce6deffc0b1cb6fc7e51c6ab13ec2ea24", - "0xa8fb1542a956fdb1dcf90da2672d40c90a4aaa2f1232318b4112816bab660657eb97e3d0fee9f327793f6ba9bf8df2cd", - "0xb78191d1ec4615b03b21d7730d48fd9643c78c31feea19866429073f4cbb0d1a67f7d7ed210ab62b760c679515b20acb", - "0x967c20d53d46011f59ae675a26aaadbb7512d9f7fe87b7a20c3a84c76569d23920121063235e37cee2692bca3af69039", - "0x9766abf0251cefbcfbf85ab1322f62267c22e6556b7fb909413a7819f635e3ac1670da6f5f72d3bb4b739e12eae5ccc6", - "0xb0e9c5c327fba5347474366eed1ff60b986a41aabab00abe18a91dec69aa54197d3f5680603057f05d5efa0a48dbc92b", - "0xae2f5defdbd14e2c7eaf595b017b4a97edf521f561ca649b6bc2e66382478b5323aaf84f0b90f0147e20ad078d185248", - "0xb841bb6e04d2409a419dff4bf97dd3d4f06f6fa4e5e23e4c85f23533b7f25fe3da9285ba033c6eae7e5e447e35329c0c", - "0x85e26db850536cb6d3de259f662a88d23577fd56d1f99b3113ef1bb166456324d3f141a7ff63dbccc639cff68e7ae5a5", - "0x8cc36d89424da80bcc2b9d9969bbd75bab038c0cf836f561080e14bb691e8e0c17306fd6d42522030d4640a01d5c0704", - "0x817e72d50f68dfbdfc9d5611eef7c6b490ef1509559801fe1ff916050429a5f79c8d03c60d2bcb02e72310b3c4c9d068", - "0xa15ed72881c49b545413102975fc69649fd5417f5b7ea9091f8209974024785496fa0682352c879953cd1e9edb3fbee7", - "0xadafd20b962921334f4be2188f9ced4a5914389d0afcdbb485096d3848db85152e2881aed0fdfca11f9c8a9858a745eb", - "0x8d8aaea706815f1ec45d9ee470698ff199c40b1ff2d75bb54afd4a29250b094335538dd41637eb862e822c4cf0e2bebf", - "0xb8480d2a79cb6ada254435dd19d793598adda44f44a386ccb1a90d32cd13fe129a8d66d8babd67044de375ee59d8db51", - "0x97c17d6594ccefd8f17944fb760fd32cc41a9b046f87893bb7ab2260090de291e8260ffc63e774a4b6b1dfe0e5107ef8", - "0xb5b7e1d4d9683de7193120be850395762ac9a5669cded9226f5ca2a3de13eb13b2900af083645ec35345894de349433f", - "0x9405d473872cc9f9b9c57bb9976d3ec6892ea429cbd1b12f22962b74d88448d4ccdfcc6d5c6ffa068d560d7bdc3208a1", - "0xb99cca139a3733b365f4718beb4ff4a5fd6aada0173471156640d8be2cc69f2a70d959b57688f927bca2329c3b30477a", - "0x94872ec872f19279fd26abfb132b4a7fd8c485fbdf04515c7b416fc564e61a7b0fc5da9f1a380d2b3db989f1832ac1b4", - "0x92aba716538bd66e35a7bb877cd364c1b8dc3055a9cba2da23c7d9c0a010209ba8afab455da99747fb4bcc8fd3144cd8", - "0x95ec4c205be3dd5df181220c96bba3f4e3b526fe5369035edfcf706c1eca43f29a4c95cfcf94cecfc974e01547e55125", - "0xb48c719d7cbda1e79b3f7ee9c17c13bbac197bb015b344f79bc6785b28a1e9484e2349178178a2fe94c46132c54983c3", - "0x908c495c355a0555544ec6f0b8e0dd0926ef2c5c640fcb89049e6178697625b85492722d42bb5c966aee2cee9981607e", - "0x98ded9cdfa92bc8e3664ae90af87f88759503715f6eaccfc983e3ab53f7b3af6802999da93caa7eb3530402ec4d8901e", - "0x993266bb366ba46d532973391af7204aab46a3189c83ce7cfd2713bc11e99066b1a5a012bead2fedb09274e7b362e8be", - "0x88d462a3a17f84326b1e4177799d6e9c5f4ef57152cb83ffff4353a8382ac8be7d50381723aeca77d33d8f07fccf69f7", - "0x80438d9eadea15c90008ccf4758d4e3fd5a7bd02809eed5b683f2c96a15d24524ffe75683b7167d42a47161c65d533a2", - "0xb9e7dbbd3d3d0d86e347831cf99657fb269930087920637ac6cdf185d5eded3f09cf3eb27759ce3f4b46f41411e2fdce", - "0x8f0215f23b4945470f74b99607c12c36eca41aaaf99747f522d8531244b668d6ab8c1096b9b5697208c3931e1fefaed4", - "0xb2c8d8515ff16beae04c855b4365e450e0ebfb423acf5da2501fea76259f862bf29738a858a4093b98c2a444396249f6", - "0xb27364a7258c30a59d1f13d358eb49dcef298a92bfa699b3b91817d2f324be8fff91c0b71cabf26747802a92582e7dea", - "0xaee7d6f71fd674cdd8dd1f22195981e7160990c16647c871835d988e881a3d4c52345e74f7a54768fd97a65fdbd84567", - "0x91356cb2024f7703ccd662f50baee33409c28ff13bb5eb92fa93f303913e9bf31bf83b0babff4b5e3649003ae95492e6", - "0xb744e4754043d3ed85c3bf6ccda60e665568dd087548ac70670b90328509d0d5013cbdd07bf603949067e54d8094fc2a", - "0x8146cbea5899401a80676850d0b43b02d376b4b8f02ed63a7d92532d13689e2c02846df79cffa0f33ff81c3bf492339a", - "0x94bba8a1508c6296d3dd5d2e609d6d732ab2541849deea5436a4a9034e1e6f1c8d26f6b781fa34dcdae7cbf8899d006b", - "0x80260b321d932e1179667de4916428c1b77ee1ea537a569dc64a12da5ddc85d09896939718ce08ea7e0fe8f8b115c408", - "0x89d4640cbbca5d105dd67250f3bbfaa96d7ce19a89f8d6e188353f3a9b8737f2db1707c506f8ffe1d3144dd1da371920", - "0x92f5962946ef7190fbb7bd3935427157ffc815a52ef44397ead3aaddddc82e5f85b1edcca1e9082a500960e19b492614", - "0x8b89240c9b7257cbbfcd6e415fd035ce33bb46c773569d217c82ecee5dc2d66eedc9333e0b043616b0cbf21744909b60", - "0xa3d23484916d2c0ad1b81fc7df70c97d711040799cab076223e0ee02a45a0fe9ab564faf7a225982468f3e62e32424d0", - "0xb31751386bcd471b5858d001fee15d566215e34d2d62556c51ddc60a834d3f1acf18c415c23a36b581cdf4791f461ce1", - "0x860a99003b841221dc5ea2bd7e226e5aad72db8a5959d5d4dae8a86114d30b9e8915b2314ef867e9c2a477d9424a2d94", - "0xac925b330cafddc7d95d115a9e62b2c135acd22b5e35a4aa789f4318f03aabef818805845f2532e9504bb19f69171809", - "0x95d8180cae0815d33bf8854f4590be652f95f72fc29f0c519ca9bf3f490ba4a724b23d9054e08e3d31bd61d609a8f0dc", - "0x994f223740ff95764fb88de1ad6dd90c9c58c0dfbf8482e1dd9bafc20c099a6772acf40569c54143f6697fab72772296", - "0x971d93cb1e7aec5defa52815bf202b11de6a2ac9c5d4c0eb236cf2c4941460731e12b718f4a5b980ec6f4c54c3d17deb", - "0xa341095fe5adb96dec2be367f09804ef4fe77d553102ddf7d643b7277992708e84be9a7748a97a56f065002a97dd7cbe", - "0x843709280fba29d446779b1ac6e31bc3ec8ab8082e8b063ef8d2f3733ee77a4191b55772302964bf867fe1044dbfad65", - "0xb7ccc71fd0d0c9642c32d292ae88ca369d1fb5cabb97b1745c621aee41da8f94bb580c1ab23664c1baee65e97b21f0b0", - "0xa9b41f31be84f8ba061570633bd9e5f4d8af6fcc5276c25d9ab67b2b88c1f8c2a87eb19280cd4fe7b4c04da8b2d02d7e", - "0x93eb14ce0632cd325429e1c23340da9655d3d7c2b42a4594bfd5a4e07815afc9eb1ac737228771492020f6528c0b7c61", - "0x959aedea532471b9610150657b895c5f51ca950aaca910df137dbda2d17184173cf2638a2a0efea3f61d82b6ef8a7c3e", - "0x8ebfb50bd48fbf9a6f782454ea900acf0c7143164de9b5b46c1cd072c69b76143ac4c99bd43139b5e55f847841fa6a1c", - "0x851499b3a1eae6da530a47d3e8bc068e6e7144b744d5eca5394f96253df65094e5f3c34abfaf7c7d78c4d5a5d4863da4", - "0xa8d68bf15b900cc47197739856557b43a5eb233b6c095f21a14a90ac8c36caaa1a54690c95840f0a4d2e2ffad0874a2d", - "0x81a6ff8fb1dc4d4042089d4cfc10cf826e39083aa5983e53f4866f8f4c10cf06cd8608c4cb1b785f8d309bdb9b2dda63", - "0x82f658bd1a95fac0b65d337efc95d856aa65541d49aa993b094d70e527e7d478970eeb3daa2904a1309d755e1d677691", - "0xb46ba4f3d8f287eb92390e5d930df4f1a40abe500c9aebf62e2eeeb2e5ecfe5296b09fa22d6c9cfdae28d431fd10a00a", - "0xb5b38508befa4623166f6213cfd160782fae5b7c3c7ec279b42a83d43a7adcfaa6c5b34cedbf98bba357fa663eec896c", - "0x89b8a0fb37a0c45eb1f234ae9c7be65c8a708f08d431728572169b33f8288b1e17b7d4b18de9fb76afc37ae609290623", - "0xa7d1f5779c043900f3ddf29b6b7ae4301699c0ee9e70314fcd3bb2643f912fb1225a0164f45c47419ab762420bf8e5ad", - "0x89d2a69fc014068aa6d0b79784b8953f3519f563b5c9f774f4b148334d822aa645b662d5efe7dc6f9cccc2f67268c3fa", - "0xa698d3f0b1b6b72b72358d5fd5e49e928cfde69bfda10e163b9b43bb9604362b32af1909d28da5e0364abcf5e96cc226", - "0x91c12dc25c48aee56484172de8c6aba0d9f5eae8db848a7b53d76001c292d115ec57d816c2cf10bb9e901b2707dcb71d", - "0xb0740219e084d56db4829daa30b2812115b2e95ae85ee96a140b7c4012860e8017e19b482e981547e50e25bd4ba76716", - "0x8c84d4fa255e2de7cd23b0bbd110687edc47ed7fa87bd42658fbaf3831c6d68cde3ef403ed6c585f8654d0cd32074bad", - "0xa530d3272aa1740a73e15cb9b31c5e2e54c404db72274b0840c19b164642389acdab4514b9b2bf9688ce51392d8b6793", - "0xa601f52bf7b3226fcab93c67dccd95c1d6673270671c4a099b867bd5578d5711fe9acc9b935b867ca780ba4a394279ef", - "0x8a238082dc8ae33314fe1257e7bec69e905c194ded6f894267bce97443166fb443628490755e1d453545f389b5beaa2f", - "0x88a9737f3e9ded874681fb6cc8abe0f6e1ce18a05ab599b2f855f73e6fe5bf804de5c5dddeb11057aeca6613bba72c8c", - "0x8a5cf70293eb99ad3c34992c47299646c8702d1035b75e4784cbec67b28cd4c88eb8c721f4cb8982d3c6a42d1b9f7fae", - "0x8a62228b84fa7463a6a8392a7af767b661382175633c5e00b36979d816a53b388f31afedfc47a5d8cbcb645e8d5928b7", - "0x92836b5a41900a1c1ceec83cf4f15c6177dc20f95eed23a203810116ede2a072a8d6c96532ef32c93ee21acfb14448b9", - "0xb4e538d7bf40c263dd1ede65c81883dd31f9237a0fc8d134a2b480a1a681dd89cd2edb19e63070ee69e96cd12069ce3f", - "0x913eceddd4c9939cf82c7e9ca5ac300cd79dc5a72b8458cd69e9f8929168eb19e5f21eac12a3b09eb8d3998e28e3801f", - "0x81f4a3e7195661b174aa2059796dd88d3206bedeb7d7cfbb7e61aee335a01ac50bb8edeb258a68949492d4ac6215d95f", - "0x913a393eba8eb88d1076effa8d2a30258d83635ccb346f1bfe099fb5fcc69d0457ce5a79363a618f9e8b43f53728433b", - "0xb11d721b08be428254665bd64a8864d78c5112e252feccca113631b2818fb729129fcff1e739178507ece41b807ffafd", - "0x92603fb7d50d11b59fe376720aa57412b866fcd5da90195a5a401e6222201b30c29f8797dcc1b41ee2cbc6349bd5ee1d", - "0xa466c5d41cd4a8d1f47a650ca67b529ad3873ba3fd3a36db27f7a5869b74b42381788bb1a1c100ed184118839b9879e5", - "0x85c50607a86d4f76826220286784fa9b6ccbaadccb661fb3489fd35a3a8917d6999ac891190f2297afac3c37abba2967", - "0x966320c2762b266cf7eac7aae39221599df4fd608036f6101cb8c68192fcbfd5f61c7f93172aa2be0934486fdf4816f6", - "0xab69525f1c77b6706592cdd5b98f840184b49efc6fc2687d6dad3b014f6a12c4d5cbcb5120d8869246da010823534d8b", - "0xaa2c9df15c06b58d7b9bdf617df8bcda83ccaaf6ddeb8074db931f7f03dc06a7914e322777e297226ee51dc8268e80af", - "0x97035b62f8db4df6e787cc2c940f2298c7d26c2127c7a76e4660d132a14f43c8bac8dd4e261605611b2e9c08929f2bac", - "0x8ace33e696953806f594427f137e84ea6b22ca9b48c3bdf3830b3e951e5a463d4a7067c68d2033eff452295a741fa1cb", - "0xb621fe49b12580bc8ec68fa39d5133875da23524a5ebc793c35040fa3436350d0f3e4bb4e53eaa23d312a7847e2eb2d6", - "0xab7d6ccc0de9c7ddea145e83fb423a535cf26d470af3326d1d6a9a579592b32ededb078bae4613028557877a9fe71642", - "0x97528eef76389dd77d33ee7daebbb290814911beb725ef1326c3160b9003c3043be09bf3f84e4818bc2a7960ce1acef5", - "0xa408eaf5c675b50dc1c655f83b9595dabed68e74e6d2eca5a4948252667413cfffb46358400df5d35f92657811ae56e2", - "0xb36537726b26b474e184dce0ad868a66f0944b4105ff6d35a2cae0f3a520fd14a66630388aeba178d400b5fe104e521b", - "0xb2b88518d10bdcb111c82a261076367e34718f1d0a1a06b421891b4eca1e3c1f904b66e65dc914ff1ea5991f6a638a02", - "0xaa3172531879a5c8f594ce96277b2c8c8d4a2d0f4bbe567ae40d5b36fa6108e00f0b1dc94b81f36c9eb6d1e9ee1896ca", - "0xa53975587f10667a9474ae2756faefe43e7f81bf9e051049de175a8ec085530fdee3d5e3db15d4be874ecacf49f31691", - "0xa1abdc58bff4fad0f6562338daeacdac8e37f9f3212aa252b17389bd9c54db58706129a63bd0695d299d043b5ef0e2d3", - "0xb8588fa1090597fe0f6275e5779da11a4d128c52fb8954e475c4940f1a3e10fc23ce1f61e9aabe8a75e82824f718a94c", - "0x8a1981c536747d4cc06315c794f1536db7ab3c9dfa024a0df854b948d93bee72083b6c9c4c4a7ce999c98b904813a659", - "0x95b2b1ed525d629eed454bd6bd059b01869423c3463a56689a7c39cffbd3453c962426a1126ed631b25ae8cd7538302c", - "0x8032c60f083477693f533c2d8ae391d62ea754b8eb41ce9cd59bc469b980dd959a8ac840ccac54b404a9d08a6f9e4b98", - "0xa72ccc14eeed758d3d43c51d68341fd7e98880c3687e122238d77dac8d987c8edb3067bb63baf13a0e57fe02334545c7", - "0xaac3eb536a5061a8ec788ce131582dea691957ce8b9c6af5ab7224bdf0fd15c77bc6bc63ad037bd83e0ae52fda738361", - "0x97dfa193800e57e6b19d1b7fbab40da6dd1463f043eeec34b316ba6bee21b6bb633ec0c4fe107c9dab6e06e07e0acdce", - "0x966ee3cf2f54777968fbc34f08c8de121ae7c1d6b2cdf1f1f9c675828d22ccb909bfdffa2e3f2ce51b0cc85bb29f8504", - "0xa9df6dfd12f8c43c28b929280355cb23ab0ddd2cc2e4fe76603a2e5dc2ef5d1aca2edf89b304a27345cbb1f24a86cad6", - "0xabbceef80c744e5a1194313f7b84b5dee1c9861cd4bd3d0d12c433e5f2e8c6ef6f10b860abf3b788aa04896f708426bf", - "0xb1dffdd81711e9782c992c4b14583ad9d6c39ef88974682a72e717e21923da6892490d7efd121423fdc638467e62e064", - "0x817f30dd799c422da33e13ac2bada8cce3930233ddad495f714a1c789b7aa8f41ff6e688bbffc5f2e8dfc72e5243b645", - "0x96760a79e4414ff1d19fee65b6e65b2dd6665323981ce8b4ee93d0a9c410b018ac086c08fcbc7a71720e1e3a676f2b3f", - "0x95445cabb75909262975a5b06381af2bff5c4c6cf51cc84adbc0b7f2a985117f35c014e33672cd5216a9737d3f37e067", - "0xa279c905fd9d49482d213f5eb98256d020c2b90bebac45004d6f152ee4ddcfc72a7e6b188ce3b6c93ebb9ba9b8be587f", - "0x8591e8379a78af8860e6a0e002be5b25aa4b93c5e556f5ae2e40400f828dfa19d93a4910823e230a51e2c1ea5464d437", - "0xa6fde17d41fd9f03605ab6ddfc992e36535a23b2c39608d30cd6d72588f1ec6afb9db193e88eb609e104e73ddde779a7", - "0x93e2cb6352a5eec063151e5c9a822f6fd475a072dfde2464af4afaf6a730a6af1fd74c424c09727328a7f23505b91407", - "0xa7b1e4f703386fdd16f5fc9b59ef1dd682bfe5a23bd42b3c4b1385bff894e758ab09674dd6d0ded5b32a0a0526aa6d98", - "0xaa7f01c450e619c4bb42d6cb1a90a94dfe132a641728a642997b71e2c3b02d09a7695b544712b2e14416e7de0252fb11", - "0xae840b870a938668d0d4404b76f5d4d252d8ae1e3619661df0890ccbab900e3d8dbd5dc9f96013413e3f1e30dc541db3", - "0xab7552930ab07b0f5d50edea3a2e5ea3ac1a05cc985246ca066fc3350bc58949dfb99d4f6a6408d1bba64d3de47a3c2b", - "0x8053634d4c730b5e90d68c2830a73e93f1c9e522ae0e00a04e2ba15a1b7b4fffb8b25516ceea61719f886c7763d46219", - "0x880c39ca4cafa622bc767d3127d62143434d0a1d7de8dce1a2f94cdcaa023a7096641a46e6b97e1b1ce9c233c873a519", - "0xab9d46e46cb2f382ee7d21b6da01578b786b7998e0fc2b5d5a4e1a0d93aaab997b5c481c2d9a741865d6460ceef57a5b", - "0x857a5957adc3a888cf93f144aa809c70a211932742a258978af5e657f4f57fcb6d9e39dbe8d3128fac6c592dd5bc4ddb", - "0x8c98656861fb8c8a03d491db45077f1d136a759177842ecf6c1ca36923088237e928558433d5b631590f395db56f96c1", - "0xabddacadd7d536e91d36609fd0047f5db113be0f4d84abc7631ffc5c00df919c085c049c013a05131150b0043d51f892", - "0xa8b14af12cfdd0e11c8487334efbfdd22c8b4fe6bf350333d42ac8c704efe54f50a4bb51d9d802e5185ce72e4b21aa58", - "0xa8badc2bb3cad0143db1bb3cc81751f9974ff3f0e2ee35921d04985409def84ac2803a657571699eba34767b773666e5", - "0xa6739a05d270efdab18462e8536f43dad577158e1c1655fa130da97e469adce9bb7cda6f9ac26f4a9ba3f9b22329b066", - "0x842ed6efb4395603e7fef0bf92326c0c63992da4ce7912f850c4960f7a19e0b2ecc720d9510f15ba6f73a2c5ada8ea71", - "0x8502ede859944047898d533e1923ef90e1b5c17d985c9fb4c6aa39d50636de4c5a4df278f2f62cfd3ad08bba4c5ca6cb", - "0x8c738573226dd5617b3ca1dec8780000a77f3fa8de241cac99b0d9b1b6c90cbb8aa2009668005f2c5c7abb09c0ab3f99", - "0xb101335c403d769313bd05c755a9196769465f7068fd6f9e00937f3cc843d48f013f5931f999bb5c0082d4315134f5d5", - "0x925ace190259b321981fcf8bcf52c6852b206099f25c0f278439ef6edc4320d6f926cd6fccf1b4cd224bc52e5c681612", - "0x95f5855ad1bf14224e51f7d5e0d229683c0d38fa324b1abe9d595685d3497955e30289618c4775f6083bbf923ff3a37d", - "0xa3d3c7100962c8b60c40b830af834ddc48858e7eba5ebe2874ebf74e505c25cf52e661b49d7619f2f2a039e1df02f5c8", - "0xaf7e66c1d5dca63e6be117b210c616efd533e77199d67d8f694e4278841963e0a46e4e44f0416e69bce6a7156e1872ca", - "0xab796760166d1e1fceb20f9bf19b1b7cfcd327650cc7cc35c161ddbb3cd4846e9a971b541f303cf62fdc0124688fbd41", - "0xb920211c5b440b3567942dedf62a65ffbcad1e3516f58d14d8f8dbe86f45c4b9745fbce43f5219b7052b27a3a04df12b", - "0xab6d5d25b9fc46b0824df1628993e44535febd7c62185b6795550388185035ae12bab60fa34848f465fb4f4a8add3544", - "0xa6539b67dfd6f3976cb6b304f4d152532b3f08c02bb97730c03c746da0f7b38ba65536faa43953d46e5e7687a86c356e", - "0x95bb225586b1c82d894ababea7e5dfa8468bc0e10a2ef34e5f736fd1611114cddaf1a5c58bc9d664b667adef68b5c25c", - "0xa16eefa4e6161a8e7bac63cffb2dd5cefcae57144e63b3fded581abf7ce32016a654aaa582fc25bfa51c83f352e09372", - "0x8b742428f6af81261a47a0df061e480ef9176694d361ecb57967bea67e11cd44df686e38e35b7d4a6ee02ebd520aa1c0", - "0xa2a4f2307f646384a0238a711c2dcf7000b4747b8df1d46c5da962fdb106c5339790b48682e8ec2532b8d319ccafae5f", - "0x81910c1d72f6731d27d3a4059ccb0316faf51fa58e0fb3d1287b798ea8f9b00bbbde31fac03f93c7e9a1cdbc9502d5df", - "0xb846b933c2acd71e9f9845f1013cea14d35cd4b8f7a371b9be9bec9d4b3c37a2d0da315ba766c3a126f8e2893f10af4b", - "0x8ffad59284b41b75064c277ab01c5b4b3a4f3c4b355bf9128160b1a55ed6b0d91366f7804006b4e6991525d3435d5235", - "0x82ff36a72533fd5d6745d0c3a346fce4f62b6aca0b8eccd11399b482f91cdf6a5a4135c627043008cb137ef4ccd935d0", - "0xa11c27f6eefe54cf32fd86333d9ccb59477a655bb0c35dcd028eea58d4cc40ef9a26cf3432fad4e9d058a27b419b8f04", - "0x96642ce0eea3c2c0fd155a75bec3b5cd573d41e8081632c56528464cd69a1141be3180c457213128bcd37f5fae47f7f2", - "0x8349a9e390e05150bbab2351b77a3674f1af000b6eb6752927ef838b6f0a1200e6fd7201dad8565e3caf3802f204246c", - "0xb8ae7fea6275ea61935d3047d8156e8fbc4a95c9fefd1c36439b2111b9ebeb7ccc306e0f8c875fa772f7b433cff848aa", - "0xb366f056e23905bae10ef7ce1728b317b83f504d128f5bd34701ecb0d25ec08491969625e23d5a2fcf0048af610664df", - "0xa3d88d506ba46b73bf07729aafe9698e788fd688647a6b4145761275257d262cc450c7889b8a40d698455baca55e3da4", - "0x891ebaac7a7a408aee4ba61605f44f9ca5a6d5e046eebfd8f5108b6dc4479482806dd01686045b4c7760051f22bce468", - "0xa6ddb74e3e3725e6f2d9025532ee3f357ee35289e1cb38dcd5b2ea8ebc0bb697416fb3aa73e1eba632d593d40fdb030c", - "0xa7dc097f440ebd31ec1a005648468c702bb77073ac8cfa32b050e90a9e1cf388f138abdd18f07951c752f7e19f706af1", - "0xa200f25299f9a0542c196adc2e00289f453411066b88b125d3f0e6b17e98efe9da8096312a2f1841e01837da90a65440", - "0x97cd3a9d4185d77d4c7bd4ee80928def7b660d8b949b0face798c62a7cadce1000997af29504d28ccf9070fc3016dc56", - "0xb9ebaba1a15eecae6b1998ae6d08233d05610dc0933b16922076b2dc4418cbeb4e5cbe099bbded3139d8a47f2b2eae10", - "0x86f5fe8fb36b419fe6fece1c5c4b9d64468b4aa0154bb5dca466a243b6fb1227c3b8bdaf7ce5c2d4fd05c061979f87df", - "0x8050e011011e7918ebc25825d9863c91046fc3756703bdedf936dec2815cbd10c2403ce6f4a0b4f576cdfa1347efdb85", - "0xac22132a482d2950be9442167be214ed9d24519073bf5ef1c8e3e6f4a77065da198a851950330fe4d62b2a1272835015", - "0x819e2e8e3ac43b6ae4885899346f3b558bd7658ef7d380070588154694957596695a925a001a9fec7cf3655326c50c2c", - "0xb00f40c084d2eafa36811e0d822ffef874a0d4bebd4817690408a737624be05c920a08307cfa0c1195505c5e7a5fd878", - "0x8355768c09515a593c8fc8289baa3b6cf7fc10d302abc93f72090ad99a70a1ef1107eccf839be722132259500a565d68", - "0x8bf0615d2cd11b03546ab7a0c90c0c938776aca8a8b989a709c367f0f5eea7b0a7cdd78f96050cdd5d0a123d01b99c53", - "0x827c2cce458464fdc716a2198fc67b3cf2ed7802a1f53f7a2793b2314789998b13ea61343c723da8863cb63def6a285c", - "0xb609cfe6acfccd632759700bbb0a06fc7903a6c0c5875c2c3bd85c65bfae7b29b03e77092f29d565a6a89b85012396fc", - "0xb73ddbc330e872363bed36578b245b666d42923393a1341816769ce0af24b700c19ea0f579e4f9aff1c3ff369e63da8b", - "0x976d658085e5978807e13b150c7aa539b44ab8855a386bb58a52d9ec9b5e21ddaf89a18b043394d6cf47bd589d04b240", - "0xa213897312aa28cbb2c572e643d3aed003c84bc2ca571dc5fbea8a0b642313be94db0047e293078d975fbc6800751a87", - "0xb54f2914f6a7508b6686280d3cc955730458ff035978be29645fba161ed54ef3d4086f956e68d2a48c49afe904edff5a", - "0xaf99e470055062390904673e18d04427c16afeb7b9f13ad83bc2599e9a92314bd91d6f1f81b55419a4d668bd889ec8c5", - "0x946ff0cff4030b73a1342a9173fe697ab20cc5e43ea6158573f2def601e12a174da431f8170bd31ceed4be48c90b4f6b", - "0xabc51f8bb5f74cee819ee383cbab739026c453bb55336fdf423af2c2ac6712ba90006d62dd72d8cc1b2ff6cac900c8b6", - "0xb43623a56c5fd1bf28bc356fb4a875d72dd4cbb00c9c863646a3376937088f9932a4a0aa26afe2ad69840b06242ec76c", - "0xb0f371952f99eabf7ed368a142ee07d06bf2b7ec1ff852fd948b8c53eaa52300753fb9ff6765201e35873b5167583f3a", - "0xb3906488172c09e148c571ef0712f88bc9f1ecae0db95380f61901660fc1aa090d0740378d5b9b76883507bed100093c", - "0x945373b5e6ffce11d39a722df7b24eb929b14a967d211be3b969f48fe1ad3dd4280317d1ca772a69b033f3bf26c02c4f", - "0xb2ad3490389fe5bfdd5ac7eb5bd61facff8d57a8f9969f4938ea56f4a85eaa2c1179a2e5b4f87d9e6409925c75b61828", - "0xa4d61547e405319cbc20cad16a2bfd9e6d093a064522c332dd22134ab05e893bc84786b21b4c71a6265bbd06da2ef4b1", - "0x86749c26715d22b185e1b25dd34818e96aad319d7add22a98486ef9f9808b5e4b938c6320d391dc4e0fb5d57bd41778c", - "0xacc554d5b866693a453a9ec46d422c8b410458fe8397384b927a62bf5f2b1fb9706c8c21af9845050fea8a91786e3577", - "0x8eb7e763d297cd93a7a54dbe4654c39c0ebfd73fcc34d3f1338de0c347676f445d32f270664fcb7b33347bd377c9f867", - "0xa1b469e3f9dabd36b13149c83aa5b7b5987eb0ecc1ce6b68c72acb39ed503a11ab4451e658576a92df4aa51d1bc709f6", - "0xb1ef105cd0259486be8f265a73ea089d5b7fab7bd7547932134539963467fb917b2206aa72446e2fed5a8185b04d345d", - "0xb3e211c1a14925f6de451271728a3c1e555ebebecd4bae29bf666927868039d4ec99d9f9aa98d835da7845a5c863dfaf", - "0xa416632a50500f29b6bb471bf00b37558975ac91e5c5b5004b67e130be1acc954a8ebaee7efcaf6883187ee9173d1ccb", - "0x8c655a85f66b5f28ab8760c94b6cf01cdc36fedd19a09c261e432fa7eda7928c3c88355384e689f1d2715d419fd8d898", - "0xb1fa9f82c9866d4f296755bef5b7c39fadd09374f38ef9954aa57b1431a1ea4cc17a9750da844fa1f5848f0ab7ca295c", - "0xb45cdf1a9eaaf85c0b07bfe239da618ee649ce90b417d90b08eb518b1fd88c0d25cd29fa7a0d8058d6616627a3dda306", - "0xa2be1552d3c4142755e0371a9543032ee82ad669d7edd24c4e2941bde3b78c5c6df427228fc45812a55943b3663cdbda", - "0xa28feb053e86dd9e2f9ccbb7c38467e2425fd580ba0f63190036fb47d01eb198ba8590b5cf68d1c0f47638e9dbdaec74", - "0xae06b849e080efcdba86fa03a0c9dacb38a15ba911aaec624d15787c3e11ada6909b1e33a2e3de928a23818d833eade4", - "0xb4888445d86bcf4d1f6a9c2d253f277596795084c3d45a4591b307b7ae4ba177d6ce871c2cacdcf9457f9c132f244722", - "0x87a568aa2f5471214f63932b0d48e589898e82a1f4c1055a9e73120763430537c233e9a3cb6cc178df53768e4c58c993", - "0x81e0ec97cdf91ae66d065234492a1119198c396e2db204b7edf192c88eb4238e0a45bf7e245f3714bd864244cba0ebed", - "0xa954a3785588d4bb3cfd7cb27df45c82e6958051f916594d76cdb35bb07e4f88e2831a5cda35fe1f3c99f32a275f0668", - "0xa9c9f4d54339d414342e87b03679baf29c219d28b6548f01891cf94d0313a64d3384658d82373d6e838d886235ac446d", - "0x8ef46cb24432b419b4cc803e60b3ef5872db8ea614dc37643e4592fbb2891cdff61f6b2a10653d9e99e6c7359ca4c590", - "0xb23eeb458c05ffa5d58be21cd0699974694dc61a9a928fb1eb509954a3dfe7d8a71620a2d4046a448de0fb213be7e97d", - "0xad631be8e17285f6310fb72ba913c564fc66d14460c4e8c4b0c68c572a5c2a45b088ef60eaa9d317403bacf534d57a23", - "0xb7130f5607f236374f5e023fd43cc6dee38286ca47d504c9e75c6504957ac2bb9134fd59d8bb1010d545c56ad9c71c4b", - "0xb83cb511757d80781e26b5e9b3e0597c4cf9a976a3fb60c84efeab2b6793e46282612da45b1bb8b45af4b7f39877feb2", - "0xa0c5f8b0027ee11cd5f86515698f689ad514cfa890ac4ead5502b5ede9d7d7ad12285f5806c9c85ab58f89bd9f188938", - "0xaa8e8f9335c6e34bca3472b5f412ce93ab1ed5f9e51c3affdf986a5badd2ba3ca1ee69eae53ba8144927f082371b4cf3", - "0xb2a4f775a10cd9caa776123771f08e928ecdb22dcb91efc440c69e37c6b467acfa6112c2776d4a530bfd6df3b04fd50d", - "0xa0c553d5d2a9b0525f71a5a0a539d579d937275df9220a0c3c322d6c0ac7fbd2fc55335a1a283e687856e2b30398e4b6", - "0x8ab800ab4c810e8f6a9d42d2dae9be89841bc7328bab06b88bbe1256f720ca99c056fbe4e1378d7cf805586ae18dcc55", - "0xb9a8766f4f4bf796e2517a8a7a05bafaa6d3ec601a85c466d33b8a7e0498fa1dd4e2a9e42161fe2362c81d4c8ee1fbf3", - "0x8cb7d054162e9f41245b0914e7dcf6108ec11456b39b473ecf6c40e56b172fe5be4e7b0753a3685667436796a977b977", - "0x9131d0395897f5591ad56b62ef83a3ed9e7b3951080b33ea606a15742f78a283f924373e813b877f32762dd69884658e", - "0x8d784d7f0884cce988305d314896dc6dac2d2934cf5d650904e1397f9b9dca397eb7f3accad60ab5e34cb2e494bb640b", - "0x8819629608ca1535bfc156c1e17f8fce5821d81e6661bca75a1754a5919d0404e31e65bd509387383a4111535e949f5a", - "0x820a6f46e251a1e6d92784aee18fb0d265d7e2f0a5b7e0b15180273eabdefb34f1d575e1d8e93dfc2be1114d10abf31c", - "0x8d10d0e0557beb8db344c2d8bcada724e720823fc37ee7c51b322c3269559ae932bb2ea07e50d7ada88ede788839dc8f", - "0x911a333e2f7578a0ff6533284176cf235036047a11534acb649a0043a326723662bccddaf1970b7c37b5146977277b88", - "0xa4be2104cc5d6fce4a46de5de8d210559a6b743b6347b8d9990315bb56cbf80695ff936afadfdcc415d88b23ce6863ce", - "0x87ec5877ea8f1123371c49263dd9fedfbde41846a23e12073ef80f7afddf5a0ddab298cc02e861a90188ef1282139ecf", - "0xa3f1dae70745b8284b1353aa6902ebe3cf5580e24e02490d42b2f509ffec7e8e777fdce4f1a92d83bbb23cbaeaddac57", - "0x8ed5a0733b42482d88da7c24e85a841ece65f6066dec060bb267a8d1f1ec165ad5f7964c2908d3fbdc2999c580eb8990", - "0xb124a1db23f4875e0caff1c7f4b9a411564b93a9ec3ad8143bc7a70b8305d380b934c194de8201f7e3699e905a1f0115", - "0x8af58886d4ac5578a29c2e309a68f19a62edef5285d0757c42f0ec2550c633c0e991c4cd7a60df4523cdde40c3909345", - "0xa63fbdbde883f54667c6cacb356db1fb976bad147b790064ff25ae72be53bb6f4d74b22ca803996e0d95d216caa3fa81", - "0xb99fc9012ad938b36246a4471d29f0a2b37b2a3be6fbfae7ec9fdccbfd14d48fdbede0d88ef3b6cc273f2488f4cab55f", - "0xacb6cd4e1672eabf530d38f50ae651db8bc4025c2557c59ac4f1a278b4741f1e2cda978e5d1337f9e5aae77c95ccb872", - "0x8f8f6964534e4a9294c61c76206674d836d4d56970e9c14ad6835adc6b0d256402742d8a4879764569d9082ea6a750cb", - "0x969607ac6ca9bbef4fbc2fac22b12714a31f5d6103dfb998c3b6f2776283ebc7346e81a22da168af40752f28ff60d97b", - "0xb633f60cf6eb8ed588c545c04972ff156cee767edf31720c9715be3cda8c8de0290b623b22cb8fadb1690bf3665a7be6", - "0x8235bc2e818e4d259bf2c9fcc9646ccf83b7e238044e26be417d1d0dd5283d7b38c86e8c88a5447645be191516e2993c", - "0xb503052246ea840a4083bb4a8978029af3e242e831518bcca015f2c2df504e98a48c9002b6b9fbb97e861a0a3c5b4b5c", - "0xa145ac57d7c028c3cbd2a2bfea25caa35a9b5d69cb491b13eaadc2b0d927a590decb7c4995541f8f29089a2cbde6429a", - "0x80b4c0938058fa5d03c948777f13c70f46fc025d4d6c2f2051915b476eb0c0bef902374d784df57ac368c01e1fd51c00", - "0x92eb253e3b1770b36c4b2869a944caeed7b5c8a5b8356b25dcd4102df79fab8dd2c9d01e3253070f1206d149c43f64e2", - "0xb7979ad6187f7921e725787b0a99050f4c98762c63fa64a467f7f110932f6d07556453a95e3a2c0162bf1c9c41424c90", - "0x8808ae4c7cb38202c8c8bca0321e827580155197a700fa54b6a15b0f14b001327d4c9a0923168bb5afdd1b45d6a78367", - "0xb16a4ceee9de5f49a99430e18aefc192f3c1ffdc4b41392069f690893bccdca760e6dadf4127539a763e4f60aef37dde", - "0x8ac113da7ca59ca97d6bf7d6e03f1e9570867bed27230515475f965ce9ce0b424c85810e18a584ae5a3d5c2c80c6d4a0", - "0x847ae1b0ef5cb11be37320f3ab5e30f59d7910ba3d7cbf8265c74df25f4b8f56f1ac96cf49fd166c3b6985d1e8091e6f", - "0xaaa9b04f50ed6778e2481842cda30c7dbc7d462b40c7602a438ca9f2c1599e83fe6423f30d7789fd240d2e3166836f5d", - "0x8c18492569faa8cfa1c2a05a0edeea3f63d003e38d9ce23c4a5b31cde993a4ec88c9db83011ae15b578e0d0f6b72ddb8", - "0x838b400217af9241755032c21a3ac4610f77f3ad76abc43f0c59a59f9bd52f2251e46fcf1552b6ee0220f4f2902e54e5", - "0x8675f8de084c6c05644deeed1ff45090096c72c0db6bb2ceaf1c0d070bd10ff1e83b2dcd89b6f99bf132d3e131ef6d0f", - "0x89611bc63c83d56131bc2a8653278b234b4635aa7a05033d71a8377a5d188ffed7506a50a5c37a33d199a42b9e55fea4", - "0x90c290c17f1687a87023fadf74b1e10ad0c0414cf08629b2a313347f0f6913bbe511e5d18d1c3264b47f65dee7887d4a", - "0xa590bcb6391506035466dea82617f11dd9417c9f379d32b4c3bbf723840e1a3124d2327deb28849aacac278470d7ae20", - "0x97c55f459ebdf94ade7bc3bb18b329bbe2bccea345f0b4dc38cfff2839749b8f9365e8a1cf31722649c165e265344c35", - "0x8159d02fd03c1d0b3c928658b3df1a27a57699ed8a573e0c3a179e97f50b6c1a6467b7055e42f9f9c6c858459eed517f", - "0x84d4f009c052f3bf76b2b972b3d8f7a4b2d78605a566478670c33016aab06828a1737a36d3c9173583e7bed0aee84fcc", - "0xb99d7558944ac2d61f5a800c24ee47fca719e69f7284956be94596623cf434a214c042aa46d54019de3556540ea53236", - "0x8d1efbad46f69b80efc5776d8afe95dc0a8182d57318b9f2d6fb5b7d5c48e7181e6bd61a8446a553c58f7899ea7a7c78", - "0x84a9cf6a9d64cee7e7d8f0b678d3606c9080ab3ecf62fe0d6f994a681de68b30534ded61db1445a257b2c5427e97b36c", - "0xb6a5d2c55a23841a4263b10cdf784be6fdfe1b25350a4af510ca294949716711363ca19f9c44ab1c347aa3fcd60f0573", - "0xb1b5b6dbe6945db539fe7e2de07d222c88d7b91753118593ad9890c55c4c3d83b4194f886ea7f66ccbb348f5a23a2a22", - "0xa8a58169edd3e58f87fe8529f5cf7da7679807467ec707ab96faedf75085185a78f2ef912d9180a5e820adfad32ae4ae", - "0x874c1f416f866756ae3e93360342848afdea0048a575f977fb1f8a57325e50da122d3e9f423e308f0acb1b28fd47a6eb", - "0x95cbe8b47ec42a5c72ef7b1f91e3de0b1f648ae8069416c48d5529c9cffb104ba4dcbe87cc06e4e798a1b23bf1595f9a", - "0xa1b6e9c5d63ab1262559727872d1140b74a4f01c12366ed2d401c64007faf7917ec591b631c6bb4dd44b39aa43c7f965", - "0x89e6f4a05679c95d45b54e760056378a5eeacc72624eec8b5f19aecf8ef0d8acfb2d807d3b88c6b1206827203f219905", - "0xb7f7b30cdea6377d5f16d200b987e3b4a6f28387faa701dc579cf7b3c6887d74ca43609c5bc36414a6dfd0317ec75448", - "0x83474b58135f3e2c5e8355e31ae44a77721db71cb2919c3f3403f44903622d4116e812ea9ee9ca073938dee780f4aa22", - "0xa3e4cbbec770630c5e2f3b67059a55b1217435bb70ba5b5010244e241ad6a3e6b8d9261d8a0765c4b42bf795fa4e96d4", - "0x87d3ebf0fc03ad67299f3b9cf9c9ff0890b1d0d2d1a0ca2a62147444922d207663329e49898d79bd8e09ee48a1560fa5", - "0xa1d33282cb17c7a4c5cfeab4dee8875d324aca8d0513567c4e5eae180d1e8ac98b2ef16b31afa7c3f2ec25cf3e8bbd11", - "0xb10b6cfe3ba563b41ae0d66813105948416ce0848ba3b34b8e96547e8842086b632a52904e56eb61d93e0cbdd402d305", - "0x84c4feb35c8d3583ca17245e6f7e73cb488aed515c2ef671b09a04d8eebe6b7579e5b1fc8634fcd4c3bf8100d2cb98de", - "0x918d8fa2f52a9b3957ba412c24cc579dbd1f0b0834b909a6ac0da5dc602ceec17046f61b3d4a2658f724757ca8041fb9", - "0x87296e4775fb887bb00dd3265f202f31a8fdeae5c6ad8ec63508476cc57d330827d0d241c68091bb724a2ba921694a7a", - "0xa8908019d96c506b314c84b22c475157daa36016a9b94feecc4571e869918e4e5a9e39fb7c9ae0f73f9f868bdc50e2af", - "0xabedfabf75a93e7521eb339ce2e22e0e887f94ea28d3adfa42d1e0523686c6cbee4c96b2bbab3b8393feda1099b24d4b", - "0xa464d6bb17386cb431520cdbb3818beb3951b0255d72f58c300fd780aea1fe4dbce5532f5321e80e16db2f9b9bfe8a1b", - "0x8cb8fe0df930e1e19446ff0183c7034e35e33442da346df8a802160120a5f4d8abac236763114a650dcb1a1d38bafb37", - "0x975c47ea6412bfa97db9cf12c2b4c07ebbda436716aaa7253b2343138b36de6c897386833849f539bad7659d9319abce", - "0x8cf94457a5a708cc91bca9615e599b0c0afa92a7f2d9c83704e05a3dba56a90c4eedebb6d2d25b3080786e16c27194c6", - "0x950d02a5e41c8f704184c7c59715fdf3b48d86b53b04dff7c21738c7c38c9f4f75349ac1e70ca18a0744b01fb8b13504", - "0x9458faad893db4458b330ee283d6a90f68346332c99cbe8e121c890bfca908f0c91168072aa221c3c078d7fd5e4b44d9", - "0xb0262948c113fa2a122dc6208250b62ff35b12d3aa1e5735e95198424cf16a4829e9211c9edad83989c537572c5b41ad", - "0xabed7125de7dc52b0b42cd34fb350d4c6c45016319ab776b52289bc8c2b341a15d48165c0eb09511a1a5a5ed7ff39e4e", - "0xb4c352b4a127afb5b0833d210dc2c216bea666e7c5a940a3372988c0b02dfd236e4ac7c124664bcbf353132d6f061f3f", - "0xa334c5919909dadca50f3124de06400df660082b527f1f32b386b9216d021d38685f1839bafbaa7950eea6c1cb14bf53", - "0xa52f4534e9de29f91039af3fce055f2f6726fd9b10595a43ae41f7b466cc4ea6314487081e867ff4b5e35cd622fb428a", - "0xa68c6ba9673896bf49ed145935773fa50d95ec0103f97a6f1ed698d93b4dd78111325f797e47fe153fb3852f4590ee89", - "0xa5c456d516a557aaca80441705cda63d081181199097e83b22e9cf7b9947a8bb78cc476642f04a5ca3b13032319591eb", - "0x8a359a3dacc7b45da2b826dc27700178553f6a52e9705451f24c6d6026a0c597328acaa10b3b5a883b6353eee4eca594", - "0x807217b435d73c1374bca84d2d3e069db756176220a01607b81438a70f69232b82099c676fff361dd909271be8d5d555", - "0x965d0f46eb0804f19dd700d8721349287335c70e992efdfe89058ec424b87acccb3fbb18d84b727ff5ccb6f6783e9065", - "0xaeb5f2a0bff1e6115bc2fa73093019f8c679efec91d03398e24651be187265f7ca80369a1dfa61e8701385dc0ce9a0a8", - "0x85732f872228dd5d691f1507ba00cc94e054baa59a764565401e9e9b3287d2d0cd0f2af290b28b5e3c80da9cf23ded63", - "0x8e9a315c5b40e7cdb866b8a7e6ec01eeb27a52a76a88d5956ac3e66fd9ade3ec954acce816227b57fea6ae9244f1303c", - "0x80436457879607efd008f959cfd7507fbe22e417c701f59b5a36e878a04e51e87eb38c48c0992333656b24a4e671bfb3", - "0xa012f6d166cd1d98098544bcddfbdfa956ce60011694b640b012da3a0a22ac8a054a9e205aa9fae4df764ad60c65a6f2", - "0xb8225afd6e4d45520678e243d97bf48f87c2b8d2cbc24b43f94bf6e7f60b7768d4c3b30d28a490e7c8a1c3a104ac8317", - "0x8437fc2ab6d90716419f544a1d16c607173fae5bdc242d8224d7714c115cc54f2246d1062ecd77d5a9cd3ebed3a8adc9", - "0xb113c6c63125930882c18f548c1baa69a26f9f3dcfbedf5be41aecd61adb896ff9622ce038f0ed27a5ac602b6020740e", - "0xb893aee6291a3962fe17ea41322de7edbea6ebd51d2c564fe23ba8a4cf4b6270b7ac72c87f2cbca209be1ba607ecab75", - "0x92e6a7494114cb4dcf2b86ba61f57f6db7e4d52895ba6c896433139eb2ec9c9604f3e9100c690e1949e32f5b7e29de93", - "0x881a323e772a639553cbb401e2b6a255094412addcece2c99ec9e1346aea2f4e9eb247552435eab74799ee4c7a927b6b", - "0x8d5d3ec378922311374fcb998fe5a42176448b629a6475abe494fa56abd5faa5835af37624c138beeba649f7803a4855", - "0xb1a082ba449e93cc15fb4dc5114351437599fbd4d28eb6b4746d1bd242172518f94b2ca8b1f76c08d9f6ef260d9cfbb2", - "0x8fd2b7728a3c61cd8e0c607cf40e935dc45d52d040ef1259f62e3eeb30bd3a6cd030fcf407fa0b21423b23a795a02b90", - "0x9214aee5787f4666c3e2aff70949dd679d4203a2c3e7b6f88c548b80a3e52d7763f2bc2b7df714eef053f60eda4db331", - "0xb15df25b62c6f4ac9edc414ecacfe8eec055bb07a1220e327bf35c5e452da7620df03416a449197bfc8d948445c5f734", - "0xb41ff69731e7f4308fa18ad286d3ecd7be21afef3d32f5133a0bae877a347f8773c6e9d9b3b850d054236a6f186e6913", - "0x8d9d13d1b7d9df41cf5d30dd62b9d1d2c4933d62b6cf8d1830bd1ae4dd5fa3de36bfa1fc4d57681ae13996f85ad2551e", - "0x8011a7fd7534b248db40050edd9752c960ffd89b0300a91520759ad51da1698454affb4aa8907946605a02ca09a7f340", - "0x9159054fbc10164fa19f68736c2a683d374681e6e9d5e56f7496aeebb0969b8eb1a91e377b3a2928879147a7fb60b3e2", - "0xafd4980aa4661fe05bf9040f6551d980af562da69ec5072104d8ea34a8ebd28baa0b70e0fe3c11f631005693fb99213e", - "0xa92879cac7940c6d363ab3d0ba7f7f24bad0b16142c78969a737c27ebb09a62071540bec1822ae6224d943d02804da50", - "0x89338d27ba29343279dd83827ae17a53e7d634bc77bbd848f3b6a352fe92f6021dc1c81ea6693b3cbcb1f24188edc757", - "0xa2490a856c273b6eb5242672f817e60a157a1dfdf25b1d32e0f4836a9c2371fae72c93b94d78267b3cb142b4f4d7148b", - "0x8efcf5d06107554f896084e32e8dc95c49fc5da3f8c4be4ef6f2ed89914233eaacfea886040bfff14759ce28a1eeaf3b", - "0xa3516280b169a6832e997a4a45daf46aeaec1d8953387f493cacc2835a5791d4dcb24a0c0ad5de79988d76f843d79994", - "0x95eb7531a46bdc51acacf7fd9e7210bf6d5ca59b0efe58f79422394447adcca6f4ea991600e8558da8e19e029701c5d7", - "0xb1fcb4177f16187c76b421c29f715f1551ff365bdce9fe17b74425f76dd90fb4ebe828ffff3d20f75ac620abeb9381a8", - "0x886246027be4062258b232926cc82b6a51591138561ddd0173ec6e4b7ff750e15d9ba175f569c266148c653ac905d498", - "0x952c089dd09dbe531f2fd4137c971622fc1d85a78ff07de634f63853f62110dbae3646564addef8f2a070f5a16396ef4", - "0x812ed85f4559fb28732d17c8fd7c6b09a70da454a2318a0276949df0a5dd2714b14096656b7b5b6398f54c74eb9ca49a", - "0x9340db62e43e43144e1afb1da748e81a1b00f7b0600e8eed117e92ffcf801b9d89b494ffb003b4ebd5bb4e0eb96c9374", - "0x9287c0745b4bbe24b56784ac28bec43ed2abb6bb15bf11ba2b18b01801da7d162aef88e967d2f10fb9f52f6645d7702e", - "0x9615bc232ba6053fe86c6328eead899bd62c4f975273f72595407fe36ea43e30eeac7524bc17dbe78b4692d42ae81c04", - "0xa387899b521b1a89e860756bd0986b302f3c06271ece653425d6c697e0b330a3ed7789efe0e5a1b32e60257a12fa0147", - "0xb4c99909fbb92b1f39e9b2fabe05abf58af834b6c15ab0f62304ccfc5047f187a3ce35388ef293d2857b777f9938bd55", - "0x97dcb90d2dd9291366b557936931550d665cd05bb1b19a7a53a31c2a39d264789477a47ae14f6bdeb171e78941a9d9e2", - "0x81417b4a3e61ab9b48e0ff1afa8b523bf63ef95a6d6980092408b61f4293fb202395b10a5d12dcc54961370c134d5b0d", - "0x9135da893ef0a9d45a719207659cad4a0590218303d0e02016bcc5d14f54de5fb8de642efc7826b3b3212f714114600e", - "0xa00d0f8e2ea06b13f5a75a6dbd1f2ba7ce3f3bb3e62cd3b53f8b6ab39431fd2ce156a1aa4a1988613d4a2b6d91550147", - "0xa3f8f17dfdda07166a7e5503366dbef45ea6b6eaa1dbe02b8051dff58453f1ac24762c82f6db6de4370869f9b25d6d51", - "0x847c2b79076f9284d9a866a72f74f62fd73cccbe2df18c0fe34a35416d4825d364e24f95f728bc0e6a5215b08b6f0d2a", - "0x9816284cd6b8b35e1f5409d3a5899af5f4524a4826470fd164fcfe863994ee3aac77cbc16831f0866b9f0ae561903d61", - "0x8ab1f9feaa8ba2e1691acbfbd5460a4bab531344ce4accbabdbe5ba8cedb5d5fc0967def4365d755ecb62d83b7ffa4bc", - "0xb0cb477aee9bd113959ff7b7675f81ef251b76cccbb67cf68ba571fc08561736e32c18aae93fc8d1912e7eb2fc0ecca2", - "0x8cc41304caf0357d13a25ecf66336bece67d5d319bc5a50328a96199d7ca4fad05dbd7b5edda58be73141bb06e269c8e", - "0xa7b4d91a884abad5337925c34d7fd5f2aea5a09ff3c027cac98c646b5058f7fe2cbf47208930509e2a4eef1468f64c89", - "0x97d942e97efe46594e8fc86828ad3ed1c9133a8067f9b11bc0f4ee3815affbc0c7c46a91c40f989d50f1d8df96982ada", - "0x95a7d369f3ce7f7ad7ddf85bc994667ca25a0c2f11b9312d06654599410d5325ca3ea74f33f21b5aeedfb582a9e40c62", - "0xb0a05b564a754b46fc7aa4f5289f02bd9f19708b5ecb9db5c36bb7505c8b56ec22b53fedefc1df289c0f636c97e8ec47", - "0xab6e2801ea8bc600f9159d05a3b39e8b0973fb9c2696b3f2685424757a6953a9f8ddf5e29c97399c4821b8d7fd9f1bc4", - "0xa6fbbad2ad3ce8e4f9b939080e9e7049eba9f76b8ffb57f7cac2aa46793a064743239ce287e156d49cf4936517632290", - "0xa606632b62194aec737403ce5a9b6316178c1d27baffdac83981baab63e75d51caa414ea92465ef37d6d687b4fd90141", - "0xa5a99b7bf8f4c109af04c31af9b5f3148370319c8483796cbb5ef555ee1d4858b2c1acb82ab5e26180254399fd7a0625", - "0xab2b00f64355ad294436339636e7764403b821d4dd4fd74a6bbdc2aae450f14d7dbe8423336e793a393f4580f1b9e35b", - "0xa6c98a6ad7f36f16633fc216c12ca34e596b292524753ca1067eb75ab52facd28ed3a7c55e0a0cf1d3c9115a2a0d6524", - "0x84acda31e618eaf0424a37cb3c386585a3870b2c24020550a16134ad8802d427c918e2854c98e5def58a2363a8e1a314", - "0x9911ec15af39af1a18003ae120da8d909ad4bd43ff03078091d54de71de70e19786b2aaebaa5d55d9b2877004da2c271", - "0x8cb5a148f065e36b67a219bdb347a625a7a4be8f20dfb1cffbb38fd4d843c2b1b1886c1f015793bbcb02af04ed91b170", - "0x815d9adf22a36533fd4a3efae3c4326213ba2aad48724ef958cdd6f0dd5059b519e12d91ed5d92f1418a07b62b108bfe", - "0xae5c244f309467ada13e2fcd8942886f563bd996a5c65aee73a364c2ecab49be3ba6bc8a387f3baad44776f4f1042eb8", - "0xa47d93b35f57ad890239a6f2f69ef8760268adbe614d5877802db4b6cc75cc093baf101f75be0f7b4d71ad8724dbb9f7", - "0xa0d089701b965df9fea938e337016ab20e0e567e736e6652955f1a93760b4a9f128be5a594e71df8e7db47c3f88c2fa7", - "0xa9d9a7170a860e2860f785edbe18ad909ecfa489cd3a2abc580869c7eb8e9a2db93c1c473a5f1474ec0d51dfdedf95e1", - "0xb665abdd084abd292548c336e3e6fa1c5ed1a53d2e61a10ad6a4c66487d8a9e101632ff468b012506135907f0896156e", - "0xa10ccb363b26beb9622e1d91021d08a3bf02bec96a059ead01961ad51610992ef03558c5f77e074442836c9d2ff44e0a", - "0x96d6476066264eb3090ba3544dbfec7c8a0d90985a1697985db0d04773f6d37d5899a9d4fb5a3207c320ca78c37492e6", - "0xb4290ff9213e2ecd30d303b2b4ecc66c2614b8df246e70ece4e55bea9a1f5a0bae9df6dcbd8efdcf8c4b0f2f4cb44d48", - "0x8ef10b2e53e6770a36b6403678ffb86f5d85e3e87bb1b3ce9f1f0cb0cf32f1fe991c565595389ad83d8c8d54a47dcc82", - "0x91f950ef60014e3dd28f7661e6275ab6f085c803988b7d6dbb2cab25f10b0372e271267245761e1af97da6f48c230205", - "0x97c626e7114396daa337ada4f08da5129464d8e8c68a407c8798949817337578733fbcabf454a22b57926485c28d9d62", - "0xb596984b609a9858b1adefd15a546d4b8a417c8b54504efadffcc805caf8935b9c7f55d9e6b34592241195f513453572", - "0xa3fdd36f3eefffe0cd2a9e6cbfc4eb9c3a499eec25230df8786b23f5eb71efddde062940ac23d5b2885081da48d3c1c1", - "0xaa1822db9ee136d0a51910f0a59bf0d2af6819e4ec0b859b790e01bb08c1def87e9613b355525d4ab7d088b520a6a3dc", - "0xa9089edfa96fdb7204a68c4ffcb7e0a875106886a0c589dbc57a6709e7822747affb07035b99d056baf11d0852720489", - "0x85664ab9d32ab0cc2d2e61901b2682f88a7259c2da4ae6263b917ae8afc232614b4ee56539a868a24940eab74142198f", - "0xb90e06a1a117659b52b364359e2265daaa8981954e9a9c37e3256cbabf133dd4900974a895dde6ec6b394fb36b5bc1c8", - "0xb414aefaa4833283dce85add23d1cfd776567735f2ba9018cd791d652bab55bb0cc0cb38b88fe47e3b4b877e63edbd75", - "0xae579eae9c0b09c906cc2824eeebe5b4ea031547055c8ad635194f3e864c7a184dc21a3eca9c43c01d9a2f272cb2ce81", - "0xa7b1d13997c283c13f770d5203cb09b5d3ca7d45324ec89c069928e1ed1a17c57510e0ebaaf54a21d27b0f9f057bccec", - "0xb15d4555520565b76ec21d87e094ece2e04c7c4bbbf560264da37604f1a484ecc3ce8143b04759fe716411293876d0a6", - "0x810bb0773c06caae8cc06ffc92303d51eadca1e1b0acd57ed23f5feda70378e180619f68b8db98e61d792568f49a8316", - "0x87dee32807e2e5f2c884822b31098e5be2a4d950ae728e3281a39e661937c4b7e9fc025b50f437f01d69e5c33dd751a0", - "0xb46810bd73d077a6b73757d22b5939c02a3632e81287073b00ebee30cdd402e89c318e0b03d01fa331193842f3a1ae53", - "0x95a136a7bdca77f764d2c2d4795a8fc9e5b9097d73bb3956b7a45b42185a99c949db8ac5627ca263206cab9cbecbc31c", - "0x967eee3c3afc138a482bd120050dcb9b45a9fe258e5e4b678b1d67b4691f4c5d89cd260210fb50f9cf2d3e2e2802968b", - "0xb2d59a9ed0448b88f8eb26d8017a129ebaf27f11e0a031130266796e5f777bce93cf2c7e0fba8f8ccc997315db9aeb9a", - "0xaec708d3093b12caf29efbd8afe3ace1de24496cee72270223aeaefe4f0ba3a7acea7f2f5f85c1f274aaf5188616133f", - "0x8563ec52704c1c7ab515451a8f89f87201d30a12c95812ac95fde2af033e5019615a07f28b540a92781ed35786b5614b", - "0xb1c8f819a4ceb17d35ab997c14f81ae2af9d4510caffc61d4a19e9129e0bf7264482a10f329054908f99909999b6f538", - "0x8a65668637ba24358800076d8edc90979d6e614e6a683dff7859ce7d686014e6de85298f523ab060c9a9a4c4b8862cfd", - "0xb4df02dd6f4d3908142654a42af60fef034379b1526c12be66afcfc4f1177991811646495aa85702f3461060732cce80", - "0x8991bef253f0bb9b86e68e81f78116c51097004b0309e199025e45ac7ea55f8f6b2bdc58886899d275424ebd405ffac0", - "0xa74f1048548fb41e57f679d632280fd2e4cc6ab88c81675c59fe143b74dc7ccf050db53dac5611ed6b45b6a0b1b7f3dc", - "0x92011c668bff7ea995a71e4774e3fb5d521ee2552bdc33d9a65afd9677572c2a303a940751ffea470af898b01b9285ad", - "0x881a0e6042771492633b46b6101f96a48a93aa3860533dc207cdc90783fbe52b4a9ade1eea9117cea004bae802cd3fbd", - "0xb3e578bfd77a3a13368ecf8139b69f729cc720aab25853cc9e2f505c2e03e75cb779d685698af8cc4aba8d1c17f5ec29", - "0xa025b6e8dbeb68e7ac4a595b34089fed0d24eb29a7be235048205e35a97634d6015ab24c21a017b5012c3175677fd0bb", - "0xb751acd86ead936ed0f22d770872cdb5aeca3b1ec75a5a1e65748b665f8d1c859b5620d761d5f0a2a86331188e82b2a7", - "0xa05faf0bdb81caada6c662ed2fd145eff5db5c423258d6609bfd4c467edf3ddba6480ab95ac9f4dbc932f4887b070c82", - "0x8fd1faccaa7cf1d59be37bad69b7a99b7641cbfe930d778e0f712ae1fe9e78d53f37d7d5d3aafde48452eaeb65d980b8", - "0x86042bc710953f0042940625d8b69ef57c615f9631fc49aae169ca595446e9d55e149c92994d4bce7b544877d7b6f22a", - "0xb396047f716c5fa8ca9234c7026f1772d83f41be03410b4a32a376e5a038d252b8f36cb813bc3684f1b50326994c31cb", - "0xa2eece2d76db005f5d95f5f480bb3353ec67a9c27896fe54a2cd5cc7f802507d8d518596601bb3d2798842b96fc03df2", - "0xb738c1264d094f7b7edd27b0ddd8e29716c73bcf7b450ad7715fd21e1052998675873ccbec486fe45a8f72d9b006f239", - "0x826c4c5fea1596e353f6c15d91a9bbacd9ea592aba4d22e735263062eac44f073e5defb794f8ae4afb7d4dbcd1ace959", - "0xa8f1d170f63ae3b05ca9996347a1b3987136e7bafd02774698829986d48da3d421d269d31743bfd3e7917c5ace7ce729", - "0xae6871a8278f24d816657889ccdef509df0fb941fe6c5839cbfb704e81b942ea2a324fe0ac9881b385bc97410fd94b0f", - "0x8aa6bb564b6a0354be89c4ac10309f941162fb3a546259c5d789d4608cc628f69ecf814b59bb8bce364162f7552e628e", - "0x8ed85481cdc58fc540384213dd1b86f80af8908683d7d2c63ef5f8c4ac2e90f0e5f4e07b1b841eaecaab1f7e091423bf", - "0x88741d9c9d875e2c1ee5b95bafa4d8a22d72a728260297d048e4f0cd1c5f1eaa94fc233be3fa15a69163f218d62ab17a", - "0x8a99655974ad5c0f27b49d88a9c52a5375e16b9ac4f22b1e1bde53ce0a21589022c0ea926a4c2d7c432a53656ccffa37", - "0x8e2628878858764824471fd613cf40d1bbb3fa84ed081a762da0d6d491d54688723273d87a587ed1d3067976ab74fe1b", - "0x8f1a6162bd6cbd2353265bb348311073bcfca5a86f41cd0c63ab91b14aabbeffade5ae8a94f8e91faa386223fc2bf849", - "0xaabe8cd92f0193d12b032a9bab4bf4f02ebc0b24d1ac09f8ca8906621d6c7d4bb436b2dd879a1a1cca2b44ebb5642995", - "0x91cd27988ae8100d48ace10ac9cac4cf1cc8539bb492521a8a6489f8575a737f2a1d37fcdbe88dd651179145a59af920", - "0x8baefbda554bc0a0b425f2e132c7de061fdd120ebd452ecff0d78cc5bc5b15401997231727a37e9bc4abf1a553a4cbd8", - "0x971b12e25b989511477c04602f48f584485a0a0773b46643190263c0288c2434969bdddb1e55dc1f5b1b028c1c53eb32", - "0xa0e47f42444a16e51323af6f519c0dd2271a85746882818d02373ba33c2e2f7bd6a1c321497377e4781f72427fa34224", - "0xb52bc02de867d7b20cd247cbf496e03d940be2d7ca5755145e9a0168889db345fa9ab17c41635ab275a459fc9d02ff16", - "0xb01db7077e9f01e675c62f5095400cdc68a059e1a5005027033ac535a0505f45f89faae4fb9831f7ff9cbad3b55db02d", - "0x81ae065f1d55f4643a2ee120bc1245b9730455ad9e5402df8d6fcbb1bec71e40f1bfe7b8e67f96fff76d1478cd3973ca", - "0xa1be3723920044be80f398279e2f8432aaed45a36cc4fc71c87f5dbfd52225379e94600793f40aedaac2391caa57d155", - "0xb682f74fe46d4b647196b7c14804dc0b35e36cdff59671d7164ece874107964ff9f76c29b23c190796a9a3aa2df822fb", - "0xb8152e458970ab53f6b5bf6101008c5c31d2f58993474eed6bccda074555f7ad2351810d78676b62612e7eba2d86247d", - "0x9132a8fab2010360ca80adcc08b3a01658dc8ba8f60bbc45e1144c1219f69b985436c36c65cd7910a8aebd91ea1d3d38", - "0x805cd373a0919de801b6bb7a6ebf55530037fa41a1993c159e90213c492165c42b5642dda5fe7283ac4e3ade6e63a155", - "0x91f20d77fb7a8276174989faed41fa6da841d35b074c4a756c2b4730a7efb9b124ea6c7d5eb150a8b1126636cdb2ff0b", - "0x8cda3ffbd0ab6846dbee6cb8c0360842837a65f83b6ba17085161a7371a4466172354e494a8614cf2f1f4726d0a7262b", - "0xadc603e61dc36ee605dd7f2761ed568bf91b9dd3d40903eb7d77b11d10e4f762694fbbbcece72a7ec26976054139c768", - "0xa6accdb3df5029f19273a39bc30cb622f87522ca5a63372dfe61d993dd783ca5e918218b5c519d25e535d8b8238339a2", - "0xa188897269053f2494bd0de8cf098e41010fdd01f5a49d7ddd7b294ea748f1139e0d92fa7841dda9f8dc923ed6f02615", - "0xb26ad5dde632259293d91109fad4f742ab74de91f68ed2416ff53c060d1ea4377a875b2ce960cb7962c37a5fd47e85c8", - "0x82cfa86a17b27f375172d66b389df727734480a224b91585fb4782401d6c49d4dd347b8d1e8df6b9c0c1d2f8ae658de6", - "0x82911748e1471bf5d7fe3ff111ac06dcaf5b8a43c76f6583ca491e0aa845b61cdd443613c5728863c163952d86bfd482", - "0xb7b0d4ff87df02b5481183066f6ac0d1636718fbddc19889e92a71a168fbe338ffe780a792ec5642aaa4024d0964db69", - "0x8ec21f08594ad38e9ac365e5246aa5c2c8e34ae66382ac483b47771c33390ccace4d906695b1ac0f1c9204c46576946b", - "0xb9617d746596b26b84f2709a03b64fe77e9a10d0c85535d92d28dae9de3bbf6455a247f775dd9f67061792cb924e3925", - "0xabb2ff3f16309fcfe0a3b1bc928ca5cf618706cad3645b029bd54e5305682754e6ca47e364ff21b1750f45041eeeb358", - "0x867abcb8029b35a54552c57346024ae7eea38e9ae4bdbd68bb3c1de3935126880f237d9aa95d6644dba8ddce67e343e7", - "0x86eb4283147a9e595d639f29a967310acbed9ff09d9043868fd18f0b735d8619eb4ee0250764f35a51e00b58543bcc66", - "0xaf1779d2115ca7021533bcf55a100b4d3ff4e45f8ce6a6d98df22881526a429d97818fa1867ede09918a438957a03534", - "0xb10b36d0b69b0dbecb6f7efb6c612b0462c346079109970a26541a21aa2b5b81c1e121ed0d5c81af00ea8eb709a83dfd", - "0x911f81ed75fed55f1fabc5f86f9f38490e006820e5380963a739ebc0f87a1dd3b7da8c69dff1e580c5ad2246bc08e2cc", - "0x8379449499da9159cac2c09c61777955e61c63378d051bd28b59c78409ee5d09c43e7a6c246572bf34233a314511bbdf", - "0x84b48ec8895049bd03dc3256bd0d63f6e9abb178221f7d47703b447c709fc5fda47b19a3439f30f10d2670194f390915", - "0xab3bb5afe824d8aa20f97ead4c40aaa93350f33d980b5783cf56c8552a4298c989b7b188d023711a2eb79631f3a8c317", - "0xababba2722186a3b2272feebaf2ff46c93883b7265a6a4fba039d5fc0e7fe81b7d4dc2cef7738406f156f693ba3a55eb", - "0xad50302a51eeebe63085d3c1705eee9142bf8717d07c5d87e0e4ef5a12207dd5432994c72b9493f9ceb558a20929c9f6", - "0x8bcc3d83a6b8998e1a1066347c647ab122eac80c9c505d5cfbc370f466349671d8da4d500201226c15c1f62162efc62f", - "0xaad6946b5d5df34ee6f7422fbefc6de33dcf4461868ed7ee7f47fe9b8eb2f7a89759c73b7a029d422b02afd0f550e722", - "0xb0fe1d9a30759d83084b4c567b586e5a8f5a080bfa93b4a3feba59edaec33b6a2ebc98ccd82aa9d8cf0bd254d5f03baa", - "0xb993c4c2b77fcfbdb213bfd5f8d655d1d41a52583de63b432e2732df2f9d88c4c6779f314848417c06a089fcb970c0f2", - "0x842ea3aa645e5852695405b6ff2184e55bdfcf50be2319761e717b7b52d904ec47ad3abf986850c643003442e302ef30", - "0x8093b0ef1f6c84a8253d086a6fda6be8376f925f416a9d1f44ea72489f60fbd8b53cee616cc5ece43e2a202653c0640d", - "0x8c75f10b6aa848d84baa4120e75d3edb7f8471473851326cbd9ed7b29b22c5403028f49430bfe4320c3f4227827e667c", - "0xb4fde4f20ab98f76f55afd533f1b09ee4ffbac9486399714514fd694fecd0ad1fdafe13b2b80721829c7a59e4c951a76", - "0x843b2ed867cd8edc2eee84497dbd49f3dc481e7ece69310d06225325ef032a4e72907e16e7b6215ca775f88983d55e5c", - "0x9881e5caa9706e4d7ba6ab81525090e29ecdf1808931f3f2b11ff9ff5cc97f83f3e14fcf18abf18159c3fcf4cbc27042", - "0xb6c4acc868c05c955eb36a24652314be37004bfc14283600523729d466c56018c99a45a41ec0389449fcc3f8aa745638", - "0xb6820864d07715dcf4a9ece336464aeef9ce381ca7dba25acd48f60af056a3405c22792cdc57c641e782896c0ea05b25", - "0xa1bb482e35f71772486675cb4ee0fa5709b757083d18a29d4f4344e6ce901b2edb2889b7eac92c498b90c7d3844c450c", - "0x8cd8d8d47de859d0c68bdbe1834a1c9a34e92636600fc592a08f96d66426c5f41f388138f42c9b8ad72c596f4bf85496", - "0x801cc0631310656864b25d980c9e99a98fec2316414819afeaf182d3e7ff93b32a989e2ce63f5ea9301745080854188c", - "0x8fcc6b2b656f7960d9ad48c091c1ea71b6f0f61553f7695049c770afd509ee58ca8e1dcb403aa2c5acfbbba58676bd44", - "0xb997b9a6b994e3eb2de8723ec485d8181fd674de19ac9c2f50704785d9f5a28fe3ad194eb052b5ce122ab5e6e6968a70", - "0xa909e7002b82b371952ca9d0832f531db15882180e97c12c56da649fd65334904fbbc3f097b6a954469221d181e718bf", - "0xacfc712e1a61504814e37b3aad0d7a5cafce5901ffa43c13bc5f70507800ff03ed261367ccd09db7429cc5dbb892a7e6", - "0x8d634a07b69ad87e41d941aca08550ae9cd72fe31f3075511d030c364fd6578a36f3f0f3785d19305a1e772486ca097a", - "0x9746ce2d890248002c1bfb755e06f4f4570cefa7636e10319bf491c654b83608766e95fe9c77f1a6a630f5add77b71f8", - "0xa9dfa56bf82297f709f1b4bdbe4bc194bf22c0424815bafa6c1a536f2d15f35bfdebe0867ff20781a49274075622861e", - "0xa723af2702c6b473caa4a64142464f201bd1e2f765454fb0236082fe3ad77f22b4353e5981e6bc37e974c7ef797f875e", - "0xa42a1a0c50befa6864fa35c25a17f5309684c53257376f8111fe96c84a5e09376fad9c8545e1946f360e16e1e4c941e3", - "0x84231f6bc3038320dc13f3ac014977326dd13e5b2ba112c084d366b5255729b2abe665aca8a41d7aa6645412765887ca", - "0xa64e21d651bed6dce8dcfcb4caa60791b9345cd7b6a100f5bb78f7423fba5ea0d0cb3668f3415c27af29ac35e5dab0ae", - "0xb8eeb2128ea14d81fec5b1103d8511a3dfdab925212363c75c5cc01515fd94be8db2335bb84e221654380e58e9f2be67", - "0xa92e9cb287981b33a5e697eb1e757bd44f45efdda1759122fb27dd4bd4ce3694f1b6b2082ce4e6e3919d9d7a0b7c8a12", - "0x88f22b83fd9dad63e800b0bef709759f380c6dd9af7058100413e7b09c7517eba258d6367e0cb1a41b7762b86b2ef137", - "0x8353d45a2096fb4bde82ca22381bd2ed93fb58b236b16e68bb37df3024672067c4378d7f04a4da4d116e7d57a2211f7d", - "0x9076205bf231de091fcba7f5a4fe1d4a359f07236efa39f5715f206e5cb7eb3d9adb56af8181f63a9d3e965dc909556c", - "0x93ab7f56e8d37b47d3a8cbd222f2dab4bdbf94a1152302752f0a731294f4dc214fdba17977f11aaff2eea9517fdd5789", - "0x96d9883ee108c88342befc358325356dfe5d72c521d71e4b3a58d6773ea3d1a1de1a20572aa96ca0e8483eba62466504", - "0x950e0d61ce4e76fe0cdc3d59c5bf23d8e1cfa9d6ee13b9fe41e6ddc0fd52081bb16bcdd973d319c20709ec517fe15626", - "0x88809c1e272b552d46137165e5396917d107547b65059fa646b742489e8892acebeccbb3eb8f2d676e3836c985cb1756", - "0x945f13ff081b74403a19dbb04173780f04766f7624ac6b77f46464df5f4f3b547c459f41fb1842164d8f1c126ad6be65", - "0xabfbadc599bcab1c2b7cf1fc5aac7798d9f617d6afa0469ee23230c0d004fcd3de0ea645feddc74e676ecab1fcdcd8a2", - "0x83ea1571b064d05e1b7f4527b20ada121024a4b2dd8f7d551945488ccfddd671ed2ed3895578afcb3cf958f9a2c75c29", - "0x8fa75050bda001409f2bc0a275d8dc0fefaa47b3a0ae132758bd711eaed0851d6bf3e4b7f355377a93fb8eb02b3ac6f5", - "0xb2fff49083bb30e2661e2d8978149e0d0588dc972222f46d5d120d01dc5c9978830c442827c8fa295f6b8e6d8c786198", - "0xa352c2dbe4f18b311bf0690d77fbc9439a1b8088c806a9d89071b3ea04ff387325cdc04a091d2bde5fd087bcd0f4f482", - "0x948ea89408826ded81549cce823dfd7605ffc2279ca7d0964b1ab3d5f35f4b174e81575291edeb9eaa4baad3610ba3a4", - "0x998073b618140b04ec394ffe4af02df044d923a5cbc8f06f26c9eb4ece17abedd4f72e10c9738bd16863327c0f6ee20b", - "0xb3bfdda0d6960af897ab508bd9312d9c166157f78b45157b46fd2e38ab2e430e8a19335d8a611366cf74642bda77bc78", - "0xb8dae3e2ec5eb97ce3b5e9be719bb747e6e8f28dfb1a6b7bf5063822b502a5422cd586bacd87ef83c0af081ea4d30a57", - "0x859713ddf0ae843ba690fd8177ce6c08e2fe5fc1c8893d829d39a199e04758719bd3046034926de40973a992ecbfeda2", - "0x866f150d4b6a015b03ce8ad93a70644b55ca1818a0f50d24795698c62f3abe59d3b8abe4c11ffcbef20127d3b7afb970", - "0x9145367ce9e2a5a6140db58cb097767b5a6e19eb36d1c03acadef612af95eba80048f2b02c6fb46eaf38c75288e3e4eb", - "0x8c298aee778f4af13329975754e9b428e127680f26be139307d43268dc63892ac98284d78ced0ecd384301e26d5b63e2", - "0xb4c2cc9256fc33ed09531abd7c3e34f8f24830a8a2cf2d684cdde46155f43ff2715c94e7dfc7377765ec0cdefb21cd2d", - "0xb9193113b81bba4ebfe40e97be436515254bc67a94939220e5e69a197765bba40dac3369e5cde115d1bbb65e1c826038", - "0x8474d72b7cb52768c484ff92d014d7733003b511c0c915649f65dfceced47ecd933ce876eae254cdf2f6357ea865580e", - "0x808e9a59f947b2b39af51deab4c164878e02d95773dddf1123091e27de87cfffc07aecd7c9cf3e08c0b9f525bd87fff8", - "0xa8e0049eec8eb70c12446596ba5c8a29823704be3753312c34cb271000b6c154b1022812dd02d1352cd263b655437d6d", - "0xab7894a75e40d888a4d0539582cfd6b458da009a5017e561c14d312335a75745ce134b57466fd30c250ca07e0529c8a4", - "0xb30c5c0abfd35ded7a3da8f9c95e3e1c320857be1af317f6ff5e35101d3f31de3735ff8741f6460ae1e63cee543081fc", - "0xb15557ec268b4eba9628ccec0a5f3c947e624b61edc876e2ad8c36ada061fda76f69c8afb95270b85f4672171678d078", - "0xb7ec103d6695fa64107f66622148902019ff3acbff7b77ad80993bdf209b73990b0fef92dddc5fb66aed77cdb59af9d3", - "0xb3d002f0a35808e3785d58d0074be620416ee9381bdbdc889805ec2acfd169e1ccb60045d87cae3e90d5da94cd58bf80", - "0xa17c44ade6eca0942742edd237661ed406a129a968fdab28a58d19308d207a1e7853099a4a3c1c181695fcf265107a55", - "0x91fe5c0d672fce368e229e735eef43868e31265502e2876e54aa44470a257d1c126ed73d6df860f42d8e1dd425d8987c", - "0x8434fa331278fcdff2c8c07596a051847425fd7cf09af31bb235d208ef6e282cae173d6ffb73c0475307453d6133ae7e", - "0x940188d6c20924edf1d9343ea85ef9e08d9d87d2a188f8b69514a22cae10aa2d3ea8e662d43d60b8b77183b3c6e8cb1e", - "0xa89f57a730437fc511e1873830b300df7a417493a468afeed2f837f31641cba04924effe11be92d3bfabbad0bbb7d04c", - "0xa561550cb347fc9178c875ebd8dbf5d14c0afbefa79f7b93b893a25ca8fcdeb0293de5a350ef63413aa70745cbce9a5e", - "0x89fe7dcaa6a10cdbeee9d0d3bc8dfeacd47e1490a6c3b591f66d3a64ed668e6034381e0ea9f5f04fd2a5d9ad5044b8b4", - "0xaac54b334514d41665b80b2cf18285391f47be820446e2272d69edce022f6d7689c8e137e2e9579d0846bf5440d768c8", - "0xa231a04b942d471b32cdd12eac3eba00b8910fca0812c9470802246c479050d6c860f64bcdc6b6e39ed0e9609df9239c", - "0xa6bf6eca52b5f3ffd89b79be6edc4f517fe9c9bc67051179157734689fd63649e321d1fabda916a9c4666b64ed60bb4c", - "0xa7c4f791a1d77cfcdf34c3b73ec7a43aa1c8ec81c39ce81d12c51973ddb0bfacc79e1a128ce17afc5838982f66cede6a", - "0xa1644b337c4398f00e9ebfed20d9b2c900ccb667be036abba0c4d372939f881df2bdb5d40b64354f65c8f2ad9ffcd656", - "0x84f6e86481d3322de791ad01d8c1556e5480534e52970fa601b295a40270882476779301d78bc2ebc323323ad0b62253", - "0xb32eb2beaaeab27e190c9d381b9f3446038391da552db5ded0f5b58d070694f07c737315a465175da29e2a236c539e9b", - "0x857029d97cb9fcbb67e194d9aeadf5b25cf8184b3b704ff5da424fb4b39abdf3f7f317b3f79c762605bd9bdd5823e7aa", - "0x883926170997ba84cf45691c117912f6be5c691abab77fd18fe114577e6dcba18f8c0a6641ef59affcba1b2c92e093cf", - "0x945be3febcff77b4238500054a053c983add7a96ef43cd91921dad908c20d4ae08857fb93a5bb588e9b441aa9a536567", - "0xb9efb8be322722302d1c06640f772596fc362586d8f2e49c41810f4bd2b59e8e9abf3d5369b2421e1ce6949c067f07be", - "0x920ad6d5cacbdb46af424141391817da2fe3d463bab8db760026f98e50bb51aa4f3668520c133ccf9622d66eb8a60e86", - "0xa1a9ca07d8d3a44fe372aceda194f15a2dc3d29267aedcfc3fdbadff0bab1c4397da1049bc0feb9097afdcf1cd1ab603", - "0x935eb5fe97d580c10766bfc2fbff71d8584e00e1a321018540c25f6b04791b63a0d6992257fe110b0d17712f334c9b49", - "0x9530bde6dc33e48e05d98b77844766afc0d5581922e382a2fc1c183adf998c8137df29e56b868c7892b2c1af56edeeac", - "0xa8cd3698276c2bb8d39ebf7fb5fec139580755adbf81bf362e1cc19f4a8be750707bdf4e1fde3064873495cce5cf5171", - "0xac5a83c82004728b34677bc6b1fa507687992b5b78745e5820de08f3fd99e35c905608936ccab62ae39f0408334b3c6c", - "0x927b0077386a5055b499cb5a597ec3c9934767343fd91214fbbb5487faa4339837eab52c75a627d7addc5cda5ee35108", - "0xa8acc2ea4a548d9a2fc2738abcf75cc0efa189b92a99296c0635d53f2c0d7ee40ccc8ae410d2779f95ac6f2027c81d06", - "0xa74c24b8c695920b12a86ed6da6ecff72f8e19fb06fdfee9cd1c1e8e5f1c202d26fbf2fbedc9a5deaeb2d986425477ce", - "0x871251e8d69de5c3117f364bb95d876fb89974428bc167666088d5ff1b83328b675ac2efa2d0e215831e69ee254623fa", - "0x946f7a6d3d6700f65088c817636ed3c1349e4f5122fbc22723d131d8ccd055931dec977cd0cb8dd888c6abc51a5f4194", - "0x82f7c1dc3f133725570c7b64e31b0397fc3a82cb4966948803de210182b9716ccd19e59c0e0382c0c970d05c5e13509e", - "0x8bc45b43102e0df4767156b1e8ec635cc07fd629793d289be1f2470297e8a084bc9af0d76566cc485a8ac898c0493fc5", - "0x85000f8c8130abca642ae94b4feb3448390745decb1f443c34fd06575f1d0de35bbe649b46251df0a4bdc7a8bc133b2b", - "0xad1ef07d34c59afa37fd5147646c24c03622ae4884c163b80d45ebfb5fa994699ad9166ce1ef727c22be3c28e0838cbf", - "0x8d1dd5500229f463f94c611bb2674640d20f2d34dd40b28c4d2a21d3e64ba7355fae55228f1c70095d1b288828a1950e", - "0x834cf56a4f2c2eb04b89383213b84bc6ba554a4715c3c1547278e5501102f6ff2af27cce0f876a2aa2da57b5ac6f3b3f", - "0xa468d06083d770bb4e484718d1c147b49770757b5b296fc6d6035ecb3c2f5c4155176f12ccbe6616184789350403f387", - "0x8abe730d80ea895705bf67ac4f6b6a36fef7403702d8458a383d04e4859b4c8c7a75598721cc75793d29276afea27ccc", - "0xa3890145fa43e6b5c7b8aa0a73a62c39d623c9a75d17c5a05bdddec08d114ab5b0a865c9edb2be6ef31c3dc9544119ea", - "0xb2b7c1cd0aed6b776515a12a0f3a86353fa3d3a3b6027422bf7f2c21e6917dab543e189e860c8fd3aab65484b77efbe5", - "0x95215b7d3d504ff83ae2bff789feb6b5919287d354d567141bae68a0f0d27b3e898edd8a9be5a51c04dd28ce9d4ab937", - "0xa93a3da0e101797c690c38a5bf5bc14e10842e48a18c9888807b2233809ea8a34a76d20a8ece0b682d36c086853cee40", - "0x849a7fee901a9279dcc36fe8f276ea6dfc37c30f75b679ddca2cae9c283de19c4df56790e6ae12c4bde33e837fcbc324", - "0xb5c1587d84b0826e64438d8ee7c103119b164bede8d243a0256b5b798240259dd63281b81bfc613a4874a6732d05e143", - "0x97600c536388c942e0a72ba3bc33b3af48045994a3ad0948fe0741391c1eb99693d072d1efdb644abcb08e10474b7885", - "0x94c2120a5b4743496e7ab9bb2e474580ed27d7cf5b6fb132efcdd7bf934434d2be8d6f0af009c637b31727b3ad5d2280", - "0x8a5ff1e7f552fa8b34b22a220eb1cb018c9c9430f0f14a634121923497cdb4a69fbb8b60eb33e5fdf9b0feb3e9f5afe6", - "0x8b4c9032f25181e6fb9f60eb07e3d6cfa2b14ffdd6a0fc1b309b078f8290901e229a5a6ed96dda74e1a9a894224ff588", - "0xa5e04e164ffc46da1dfe026ffdcd99332874a110cd168c44762c461a5560b5c098ec71673d509fc053f6d9064d4ba255", - "0x97d21cf8327a81385fd3915c7e8efac7662f4b39a9785b4a936fe1b581d630678f42a3e9ea7e02bb4413da7ca9a6f35f", - "0x806d8462bbf148eb4cff812cab11b3d819669ef5f0d76b228fa166b83727c92fdac98ff3afe946855685b050d9d4c6aa", - "0x8a9899b0ddbcf4ba3f16bb006218022efca867a5b32e1de9c7efe1d7039c8e200a406bfd09ebb8921bf1997185e9266c", - "0x8fad2d8629c546c5de443b36927b068cfa333c8c4c1328e1221a1f6af7be5363ab8981fee54307532f239eda7656e6f2", - "0x930146a1f6c3decf40198955059f70c98de7c5bb1b25bdc97fc72de3a84db1b121430cf7a7456a692d8bbb6b325b6001", - "0x82987887016fdb90f79f045c16629c5b2b17b1b4702cd89d06b70086e5922cd10c5763cba6f3d30a2c33bc84be36c6f5", - "0xa6fd7e4834f7f29da41170c13d29acbba86c74d5924cd361588cdda26a3ea7f11ec34c31869537ff7ee0b57a24555e9c", - "0x97b2474cbfb632148869a6b911c2ab91e4af9eff6c181566a1eb34a05d2ef3fa9da4fdf14e8fd8746a7c3123e20d572e", - "0x99ea177bb7d98dce25d300b09bf6ce08a7061360c4ed9a54e30c1aa5a467be6225737b62ae921e91547b5b9d39b800d9", - "0xb9dae836e37d51c9611e6522aa6aa8bccf2644f23113584c74c963d79af0a7ae533af823215fdcbbd8df62f00ec1505a", - "0xb1a7165aa1ac480b4eb1f0b3d4284c69907d1b5056a343a2da84b3863c9a2ec4d757493f5daf9ef252a253bb3b2b6745", - "0xa1322eec41b38b8bf3f4566bd12f9c230dd04d085e0526218489e986d59895d471bd8bb08351edf40021efab1d29b2d7", - "0x96d559df46015e62d8876f4d8679f9a9867dff31eb151238cd75b3a10bbb2ab0f51c804a2f5adec1decbfa355042a6c6", - "0xab55e38cd273bffaa94400bf4913ce0ec1c1c848e8c53be1808d4ce5338ec92b4a4160b8faf0d1d8ee8b71ae751d0ae7", - "0xb61c2987e2b402a52670abe305f8a9976efa9720ad0d7c5c1d0d6d9ec6f1569f51621b6edae84d9bb3fef32bae31a088", - "0xb5234aa19fd9e714c7a9f3ea33d39a5c49f42e7a8edabd8f306083669df4898711d4b50b049dfb91815588ca60052673", - "0x8e98a7b90baa4693c6a1e1c2e556d018c3408bbbb5dcf2c32d120f797fd8ed1373f1f112dbca114863801ec6efc1a5d0", - "0xa7e1e77cbd6274f8c74b37a607cc20596bb7fc35ff1ab4358de15b07952aea397e409b30188c8516676cdd05d4919f3b", - "0xa5f2336ed9338772b71e490b1b3916d33df8b013e4d38dd57185b7314ec9aedaa34eda2733c38e06e656a8cec74080ab", - "0xb5de079ec867af3a3910fe47628c7d793c7d70b79e25a9a436e0a75405e2c58b740c1b86e1b073842d475e0b717d0bd9", - "0xabcadb7a09173f1eda179ab7e3a5722f020402eaeafb9d604641645c21f1e009b758f2a6fd262f115d80e23f8baf7328", - "0x8694ad59d4cc328b064884d147f66095605d9bf339d09e45652d68de765f2b09d45558d45daf9b4b36dcf881df8d4fb8", - "0xa2cc7b2e812041f17b450b5fa7429cf62e2da06a7bb3c08a63d6f802ddf13e8b73d2056bcd6407476dd322fa35b9b065", - "0xa97b0e7e22214f329fc57b6d7ba882ca563f863c06f1afcb60c0bbc81ef08ec866d39c81a80a7843889fc957d532cc0e", - "0xa8a809392dbf35911df8566dc20e2373e2fb3272bd9eaf9f474588a9132f06b5a1433ba9f36a738c6cd3fee403188fca", - "0xa3fb0038f83116eef1d6b023e2e17ba2795f7f90ed7c857d9f04337cb4e0c2e7d691bcea54aa72ac5e4383125b74b755", - "0xa80ada835fede8d121162aabfc8c349f685775406693d599e3c288364097b02d96c10ddc20e72fd308fc882e5b70c064", - "0xb6e6c4b24731a2895b7513ad97c0928efeeb0c645dac9fc8cbb0a6419221807073f6996f2b778e1dcdde63acc3a6b2cd", - "0x880a2e8fc2eb57f44b08cf4db5cf1751bf9f4aa688708039007d2a198f4e7f0f808aa566b36b15b971e804835102400c", - "0x8b3baeb4e1c1d7493bd885dde7873afdc235b58e45b515cf51ebcd02a9b81911c5ca182a9e340575585186c99e71d2bd", - "0xa6248e1bef3c6c6ddc155dfe95631a3f00308fa77b1c1779935e76401e750f151b7377f9376c08e8273680e924382af1", - "0x800133df4ea65de3935d98b0249e335a918c44167a34a16c0a4adaa4654f458c376eaa76ef088672d39aec4c7d951833", - "0x8317a6e0667fb524f35672e070f047db29450b06348604319765e4db09f966ad995098cf38acd30346c7fef5dd62528a", - "0x81fc2ef2ee0e6f21f406c51f02b9b7be8d99d30a054df918cf89c708d64c34d8b0dd060dff4383de858c0dbff25d71d3", - "0xa28611f96138fe6974e3e1925b582cba76166259c32b39e95702fa0c4957ef2ca32d575b1c08cc8dbe96ddc0eb56a9f2", - "0x86c6773f4e0261413d6d3944e0f7e498a6dae518120e3940d2f45054a912e706b3b615fd160e6143a7e54942406f9af5", - "0xae91e3db099d165b198d80b6d9af894203949d87cb980f4db97dd43ee55fbe1a45df156b72e3c3e9306975f9e5e62d77", - "0xad00ceaea52dcef616be9f9815548f8e9b800bc9c1a8832a4d8acca6c8779317d1951e5700e54db070a23db41266c934", - "0x94426f78470aea2d82eded320b45bea09b7cbdf02a3d7c2af4ae4567a3493b352b36f43c3669237879910dcefcc82fe0", - "0x8aad924eb1a30d2844654c9829d82c65fefe964d815572b6c9f902c6a826c247257a7d0d4967e2bae331d52fb3b7c0ed", - "0xac9489ec928e4f43f8d194b8f3ab83382b66b045f18efdfcb05c1d4e67af7b3745ffbb7f52cab4b8895550d10132e2a8", - "0xaf8f390c7cc40a08c0143b467634c10e8046ce40466006a4b4297c76a6c16309b50f41a4a022fc838738c4c72edfb34e", - "0x923b0384e87a2ddfb7a2c47f628172e8dee76fe812c44a756c67cb20527d8e9029a561bd4ef446a013d4be7db7259f6b", - "0x856316b53f09a90af770bafb5c9ea7deb921687fdfcf512840e96fb83df08820c42263c9ccf51465da33f1b03db04d09", - "0x92e8823b523f90ab75ac6e30869dcb257d232b55a3e167769ab5b54cbb83be94cf5d84eed4b1653db17f3f1350ab5e53", - "0x8d0d05fac92079a3df86a72fa399e606fec7e56f81d3443cdf0cd373b3330235b76890197ae61f24d17de39dd1aadd06", - "0x8a801fc71b9b6988a829044060679a7cc3d40630fba81f72bcd15c0e5728867f4bfe938066e68cbb54b042a39600fde2", - "0xb40a6a786ca1a21159b72990b4d3ae8729722cdace4e8124f8cbcc3fa96005563535d28e9d92cda02e91d979d27f8f97", - "0x914f30250d79829919c8ed184c2e471c0d9835f2348e628164dbfe39a51dcdc3f8bf99c945b1f413e65fc5424014e5c2", - "0x8ab8b347b7846fbc7ffe69c89ff67dafd522bec708b7ffea312b3a7eac47fb9d6006cb9038962a07dd89d4688ee6a18b", - "0x8e755f8cde0750700252e41f6d16b825e7f02748a13744c004a52b19e52d58c42d1ac32cd5ed1d6ad14cee5174b4ddf4", - "0x88d6192d72e1fefbbc9ab400e5b0018bd300839cf604cfc1034657f62fe8fcfc52acd86c207dad0fa6383361d338b2bc", - "0x971fa2ab593578b341076d98c49c71dc7d9eb4ca706efe252441499037cc86fea49af681d8a4d324d302526b2a3e5c18", - "0xb2deac648501d7e284a85c19f514f8744c48d2b5516c993c2111128a9fa042aed34dc371a0cc3f00e918531dbf16c0fb", - "0xb63fab8600fa531d7f48f8d207298544d2e03d4da23cfb43d99b0612f1a20441526de63b7609f5969429e763147ee5e2", - "0xa8f30d9b4ac3675d61199e8e624f88b9dc52658a2ba26a2bda5f9cd3780f0b1e32b56c825d9dbc3a059d6c61fd37e261", - "0x8a6f8e963dccbf1db9c839c21a4e832c7a218b00fc31400346b5379fdb8394142bf8f8b981fca3f4d3c43d4e34dd3e31", - "0xb4883e6a4213c799abb2a9b6998ebd4c89aeadfbabbe4c363b22beaff46939dfbe4dd20d113688a293a41daf5cd82c8d", - "0xaedb55058fb467ee9556a3b601af86962f99fc06f7eaf837b4deda030b1899f565da07ddc7108e9f5e7024e11c723ed0", - "0xa8185aafdbd22a2df2ea0f0cf67fc88c4c3f8e64040da08cfa9e8075b792406c20d3155d6ea6fdcbe9f5502c44125545", - "0xb2b27ff20d24cff756e8edbd6f8686d202d687016c561e56dcffebc78f404ff544c4d3ae8802b91bed0487792d6dfd05", - "0xb6fba06a70d8b1000555b8c6d791b1db3fb7f57a0f8b1fa8dd00b2ee14242877e1e836cef89be3f9e0565e61a6b4c275", - "0x92b3dd6e18600ab856c276bc787429d42b8c02abf5243f7919625aa1f4e8cc3eca61cbe106b81d0e4909393a5efc021a", - "0xa508e1a1d4375f5130c95a169fd1d4df51cecd84822dc28b18e464c2189d464e6dc6a5855e0cbb94500d041319749ef7", - "0x84b3e9a6b5d1a7bc7df44ce760b5b686fba006945f6e1f3f67ea2c90dfa6ed70bc1f021828a0461fe158ece87deb1e30", - "0xadd83e686118fc5eb56d79199d33cf0c90fb2a5996c6f453fcd9b9eb3a273a466776adba1cccd6be62a4ea154480fe17", - "0xa1fb58d9a323dcd7862ad4bc6359ab2bae35a608276a3053d40bb3abdaf3e8827027284d964e51ae7b61dbf299f2bea3", - "0xac901ece7cf087c782f75f1c61371f77ba061bb752ad680c9b1012768e5ebb6241b492bafd9e016e989cea1ff51aaf5c", - "0x961b9ef616b7faa3befd807772893c7c66ab6990a9405cf4345ec29cf13d75dbb6da41ec87af5b5c4bddc8787b88b480", - "0xb386f7ba0b94ced118691d883549d70ecd28d1c0d1b718cb82a92a246e61de4ba80b6a76d6039c261e342f9ac136941c", - "0xb6415848092dd93da62b5a5307d356d968bd7c935d3626f40e9446573e5794f37a23ca072fe8af2a9355a4b04ad35e58", - "0x843b3e3221bb08122a1e649e81759297d985c7f393c36cc3bc707a7aaf2f53b9cdd449e7a4384981c5976fb3955871d4", - "0x94083ab99a73dc5cd463b5259a0f4e99847bf32ae03739a440f8f48e12f078602c76b3fe4e7ecd31d52a7aa31168c5ee", - "0xb6f994b5482aabe833e388b24b9445c01e47fd6e354c3684094237189001290aa77a327181e7e7e756682a04b8b3c56a", - "0x8366f418a3fb2dbc9ffb5b798adb968aab991fa689ec24a4c4bde6f046989b1815e1bce5e846f3554028e16799e17281", - "0xb8e5680915eb37153daa9a3a977b47c88b4f30fd358901888a1056e07d2a7070d28a47acac7aa7856ede16bd0c93ff2a", - "0x871cc7a122cd7b9ae2199801e6a0974ba8cea64e5866a5130ee0ec926adda24f91b3ff2785932cb55537030bb5ad811e", - "0x9370ff1ba27d33080efb22836147f766c60f0a8ca250ac6b2a82bb464ffa543da056284b712dc3cac53dfd1680a4cf87", - "0x8614d8029df5058f5a072716489f734131b228972ea9b2b952ab1150bc50b6637543aec1c35763f8dc578275f7c9df3d", - "0xb8efd01dd0016a27a0e2df65b571d405be4dc8e0df5dc0d8354fb187b96589e95847ba0c2856613924125d21193753ca", - "0xa86e524431247115ee497c07ca2a73387eb820d293e8bb74e1ef1ae7ffdb21a9dd8ef1a6e3f391e6f02ee0b51fae2a06", - "0x9151e2dcc0b928573421ffbe43b1761b6ccefa4ecd58be7fbc8ea8e975e18d52c264f682104480d590e6f8c0b8b9f63d", - "0x85ac8cb79fb8916f7eb5431b7e81606b38afba15895909873f85d9577c87ed2c1d0fd489fe058362f20ac05626681346", - "0xa076dd75ed807bb7afcae8bb9821ed46758c1a8d00e7f3d3c91a18e6b95dff3958ed70441a1f4691ac3268d95e243614", - "0x89d8dbe170b9804de3fff5b6512d04643ea0041c3f9bedd7432b171ced1577b0c0a7bb911852c6bafe154ba36cd30320", - "0x809a63ba788e618a281804ef97a75df39c7115900078a6bdb203bd79d3df87e863c631e934dcee62e28a16cb8735acfd", - "0x9727e6720f8b73b6ccad519d8ca1d4f90c2db33ab536f399e2c4ce269be15d99e22504ef153aa26c40d4cfbc450f25f6", - "0x83e77918ba6e28ee01ba6b8dbdd84c53faf65446a90bcef46f262f341dace2e237b1ff8f8d566fdfefc6973deafde716", - "0xb5a4d3fff76905bbb229d579b8433e76f2f070108230f20a30e4f974f12f29ed017aa66e9b298a4de0fd535a0e1a44dd", - "0x876d3a0bb439e7da26539b98abd0f7e0b7e8035eafed08df623a77fdac30ac85ab4d58984396319a88e072dd7a5149a9", - "0x98923e83be5b2877ac18415f9391ea792933db718b29b6970001682cc8434ae9fc640427c0a27f6d62af5f78f3901bcc", - "0x805c675a34443a14c0098613d11b4c015264e038a8d1adf083844f2e3e3f2414689788423dd0ff77c02130331d511068", - "0x8d8cd51d4146bfa48492e9d3f3e4b845d4ad1442ce6bbd95979f9778ffeb108c641c9ffc2ebbba532f922237e5849222", - "0x839862454707a99eef931335e5c5ed80805ba06bab0337c5301fe9fb92fd59c9ff6620e66de7369352b079dc52bf2113", - "0xb3cf3bd867f60b345a0b91314b34ce1c02e64dfbaabd70782614208d32fcb5d4448102bd54728fb05d1ed18a750e88e1", - "0x8207a421d010e1c5854b8e41460c6a13035ee77f7add0df83c5c31bb00d7acdbb676478a7dfc738b9aef5c29d345ab63", - "0xad2b14f87281ad6e1d2b713e6e8303f1a45cefe097820d6a1bdf4652364e70d28ca92193e2bc3d0a1e69da5a51c90ff2", - "0x98025be2d7e59ffd3f6c3c2b28b27ec42206968c0f96d09330598fe17a207baa6574aa22cc26555139766cc284224fe7", - "0x8e80fe898b7fee849f7dc8e5eac668c76f1fe18d159c51eaf4ddd8d4d600c852dbf6c2abcb878c64f37db7fba3d56968", - "0x871c0e2dd929ba4e157ed606741a6301aef759e10a3f919166faab23e599d3409b232240e3afe9c0e1622a11cd453c1a", - "0x919f7e465b399e2819ec17aacc199421d267ff2979ea8dc8962542ddbae51e2bbdf6cac92f8a35e05e4d95a4a8315cd4", - "0xa6e6667e6127ee4f0224a9a94be3c22831a1ab3b16f57462562b11473c425e7112b33bbbb6af860c81bd6e84bdbd3b86", - "0x87eaa9e3515f2d94acf113d77dc085609d06cb038f5e8e90ed29bd04bd4814e95ed0d6db5a1d65572dfaf73ab2e50ba9", - "0x90b30c66ebc16f767f3f0bc1d8bb17ca1951a616292297ca8dd06d54cc53e5fb5fd6321ce158c04cb4c91a04c01f7fbb", - "0xb5fda3715566188630f96207c4253315a9cd166ef96651afa0ae1d6f0aa8856e7642e2f8ef3b1fb1eb2c14a7331f6592", - "0xa54143f662a6946da901ddaa9e514a0e96bd6397020cf5d88084a1e1edc092b94facc150b1c029a508fb3995acee50b7", - "0x8dfdb813296bd105d5813657c98337a24c8bea19bf0d119efca052c018ff5c88f31e05e110fa12f306ae4b0a8498f113", - "0x8b7429599915ffec755060d9cfc2c445df9184ba6bf298bfff5b54c2ec8747a9b65bdc6c73746a94a54b0a62d93b6a28", - "0x8a1d1108174d383465a57ab4b1a6811ab86dc007de4f342d37f4cd311650382e0352d3664ef09cf1626c0b74e2f21ace", - "0x98cb860aee0b7251da2d114b2253daf977badf82027a018c956fd59c6c93b716bfe69a132a4778ee4b7168fbfe390ad2", - "0x94d5a0d33a0aa590fe76c71e80b21246dd9bd8c2f5ecc647e47a423c2dddd743010484cf2fa363ea73bb217247429066", - "0xa082b7a109fad08e2c01dd7322625c18f47497b32269ae4e529b1681aeeb3c4a813cc6088ebb4427b486320fbc4b7872", - "0x86c23e2d3b23244c7763c123ad67a41a2dad8e4556cac23696906d1acf5f4cd7f661281b8ab2027d268405b08eee6771", - "0x801522a5c211e49eb96294a9113022d86c84bb8741e44fa7328122836a39ba7e11e27d0d6773550b234531400ba1e7eb", - "0x9683d154b18ed641867fe67b2dc70e8b8afba79f73fdeafdf9015d85aa0c74d270b290952683c3667c0202a83626687e", - "0x994febc16f8d216a20774955523262966e955cf964950b4b2831a3483f818c20ee6f51cd24f499dda0d3191910a9fd35", - "0xaaa8f12184525e89ce980468fd24e1a9af846246297546655763ecabf0b5b5047394543f1791ba1c70e21637cd815877", - "0x9193a37d5692ff1bacb0265bd7825c479624d2adf33a419b0a71c8a744ca1b0c9828127831302ffea4fcceb1a53ccd54", - "0xb9f3213d5d588ad73b86365cbcf0fabcec5c30cddad418281ff2408dc140e3f6a25afcb6bb569605191665706c675e35", - "0x96aa280b2f0ae5c3ac51edaea4435ecff8ecf8f2536a3400d8c4c9b12c64d16418838dd7ffc1b815656109ca63261050", - "0x8486373d67804e9832bddca04a0084d1976d324d85c22a52ce2bcf7518f014ad00e4795e61c71e0dcad1f23316288dcc", - "0xb4f2e7f7e2ed7917e7c5036681e1ceff18b688c1abbd203c2bda0731ab56701a847cef4f753f68119110680913c2dd4c", - "0x87dc2336d88edd81b94ef78e7bcb6d3876257c326d28b3f4484465d6c65faa6c17aa7a2f85c6b94ddece39f6736751aa", - "0xb4b3502ebe175820f53da8e3fa28160579c4150d79d932923739aab545af537b3301d5b21f5138ab4100e737fb61a084", - "0x88063af42d5845267d979df07be0735cbb42d9b57d3625eb5d0aa7e4ee90ca88fa52aed480a4d60eaf0ab8dbc4f444fe", - "0x85cb81247c09e21de6deec42e668b72f513c7b105f60ed478b08b85fdc8a886a97bb7e39eca0cab09b294e4b1490b0c1", - "0x9920fcfcf836faafd211fa1ca78302aa6feffcda98aadb6302300c250fe8621b60d9c214ea92087c44996ae0999eae78", - "0xa1f91af5b378d61ea277e5dac81cb71d71a4ac35322aaf42b3a8aab1641fd51d8da1783bae0e8ccb66d73db8e1003478", - "0x87507b427d381ce3906e372a12f4e61514ad7a102334826266df14542adcbc8bb7c8450a1fe110069d9dc2e9bf0687c7", - "0xb7581b0cb549d71201583e0987e9e9bc6cd36585c96664f836e1b7326e5375ce8d0a450343fe0b106dcc581b77de88f9", - "0xb26504a6a7a64c44d7f97d0402bf752740934ea4c6e101ec131666deaf574d55fd7f96c8807473722b6629dbda2ca3b5", - "0xb90accb5c6b78322ef88d017fee2ae1cf87194f4b3f6f4ba6510c0adf4c11b20870043cdaf45372844f5e801464bb682", - "0xa904dfa6e1f813b4aa0b242f3eaaf893da7ea854efe514487a237a01fe244721482476b81ed75ef1a951fc54802b29a1", - "0xa00373aa8d98f4dedf9cec4d227b5fab00f3af2a7bb4c8b0dcedecb5a04244321d5f25a81d57ed0ddcf293c701d290f5", - "0x91bedcb316698e73f43e9dbe0229772c856f34901fa4c1e018e96eb898e4ae02b19d900e87d01501099163be56db57ae", - "0xb84dd6b9a61cfc0817da422380b0dcc5221deb600b4b6a6f6c5ad934110a3b66c59f7407ad68bf8642b2bcb5427e8050", - "0x8507c172e499856675ba69fc1b0389a08e58f8e5658c9268172b926dabb4a67b7c836a44d865f736e8fcb14aa2809529", - "0x86609a1d82d90a971786da9ad342035ae4865136e513559069b6dc8ba82ec0bd1ac695fe8afa5f61f85c2310194014ed", - "0x94914f127a645594ed372855550ec0817663224208c127a08bff3d5c4f463b7939cf13a45dee68586b678ae453c6d60d", - "0x80b55565972213814afd6ad9b1884a4d8143ae90c148ba730ca77b0937c2faabb23a6f985dd0bbbe05705fada4cb1a00", - "0x930f5fe58dabae91c26c6fcbb61c3e336678dcc35d028e5c958d2ee7d50b80e1693c0693b82d719dfd9fbe2c03b52c10", - "0xa45053c493da932896d95d5fb158869c1051e1bf99658b183c9cf4415fc8d4fa1b6a8752b8bb26e8b706a03a57fc05d2", - "0xaf7434b48d2ebe639c8082be09060422f662317bdc136d534b76ee3e3aba5ea8f234cd4936aa2b928f6eafdbe5165a6b", - "0xa57a073bbbb3020a92497f0ce854666997a182f2b437e7b06c9888db8acb2fd2128e3959f45c391f0548a3de49e37e76", - "0xa0ea8131b2d8cfb799e806d8cb92cb02d32de37869cf2ac3c82f7c5d9a963d562755b16d25c4b60f4ca214e323790a9c", - "0x82f920aed42eb630281919b9c1fa4acc02b05ef34020cad3583a29375bdaee167a47ca3366ef065cd8e658301942dbfd", - "0x8415ef32a93820618abb91329224bc46d478ee8749ef42e372ae4ea29b6c05a65d5ef515ffc7d720b2f41ccbc040f176", - "0xa0fbbb0113daceaa05478163fa835b070be5898dd9bbfa9abc582409a7b671c0e41a5070de4cb6dd2072888b11825acf", - "0xadfc99221d7f044b57ed40f4ef8a9e47e57265ef8eac654043cf5e777950af6fbdc2c2d5a5b916048fab1c19acd69dbb", - "0xb3d8e85fccf623fb3848e4886d580469bd41ec0533975298bfbedc7a1a9b4e554714991ec4238d8ff976a83cab6383b7", - "0x8b09702f3789ae1f7799ce58a0ffc2327b3ebf2b56cd870f2be66c0d6781cc1f34c2d721d0de63e0fe9db85bee842fbe", - "0xa935864851b73676cb49f509a198caab467e5dfe4358e7088d2a76e9b8c13e5d20b01eb7c0cb9e51ee98c90cfc393c71", - "0xb5035d76a5a8251bcb18f33968b077d43403c69492b809eaa3e202eef174a5649aee30f701ef0be050ba5026957093ab", - "0xb1cedb563cfb09713009b2263975a56abb9932b8cdebf10f7836c5c34785149e9875ff590fe1414ad2d21da977b7ba26", - "0x98a718c23d44b24ac295b328d91ab7a40b23ffbccaa90bc5888efbd32b6a95c530bf5e999ccbd4f1c85263104f336ce9", - "0x8d9d2ee952d5b135eac2f06f0478faaac175f23cb3789144f3a490f2ed34c885ae4d8ad7ed48db85cc6c2bd70b38c6c2", - "0x8155763582ff6c68d7071ba842b6543361cd5f65b7c70d5bb838da2dab2c02f3363e2324307e7d2149b12700d96bde38", - "0xb18b277334ef7f24706b7d48fb764a487bc4e21fcbfb01627b7524e9a5d3253be99d84c417084fea769b550b3ecb4574", - "0xb80db9d83cb1ae861a3f61197a1f14b6c5004a2b3d031fb207adda94d725f3e265535ed7b69b9c801f2e95e1d64c1901", - "0x82cb673ac9c0c124fc546c59505fe4fdbc05a1fece0fa579f6a6df96f74bfa877ad82b6fa768cb678ff04ae4cec58d1e", - "0xb2e190b785a4a882939489b86d0a06cb637b7be8b14204645bdd9d6c37626e8623e35e1e4eab5c8fdec0f8349ede8918", - "0xa82237c64f15d306365be19085e1c725cd148702fb66658c7974b02051b685715fb9e35fd4a596ec24d532df4711f82d", - "0xad6f7e3992518ba04b510b705fa6b28e3733e0000a5480e8a3c30fe71394de2bfa43333c69e750bdc3e7092b9e0f7ffe", - "0x8c0ee358f37c28f3b80cb9ad5487c342fab734886e31e30c667e616f3aba737a3a07bac4da552d8405ad8b00c03e09f0", - "0xb7851e0b88486b0a858a218f4307e0c0c8c314fc69e2b90cce8ba86d3fdb796b572e50eb4e82f83f73c7f048484b45ac", - "0xa7c35abc2e15723a9f395d16d2484b798d098be5414ddef083c8283b0c29823226fbc4727d9cccf96e33b27fc40e032a", - "0x8ec5ff2ba7c3ca8a2d18df81d46e93a3bc94ceca88134ea75cc8ec2ec4b1ba3d0de49dcd4d385083c648a63483377fdd", - "0x80ca7ee722c3253e7b534b42a8947e38741c542dee1d671b603a9a743f5ba2fa95f193ace46c01000ed20ea05ad0639b", - "0xac14edc2d803b28a169154364dac5360cf0926d911a615077a94858fb4cbbe31bae2f30a6a68b248cd8bed015e0f3b29", - "0xa4bdb63e91fa72995316d03cd117347cbefd14eb1b19a0adea1c9d39f49d82ca1ceeb2a4184187e1dade109d10b83090", - "0xac8f528e9e8fafde00e66a75d4bb68c99029456ae9b3b7cc76ea4816e89aca2b8b7d094db214bad1e87dd4e84d1c1a5e", - "0x8a8d090a01aff14383419735840fc5286e71a5feefb98c563b2d7ee593b518c3aef6654f10da8a77f40feb52e1d31fac", - "0xac4259562982b355fe5e57e1cef574a6a40a7144598c13a6bf07cdd8000bfda95b0b0b44f215e9dbc71be114a1857441", - "0xb53741dc30b11fdc6c9778555c1f714fde60890c191a0effe419fe2b6100228d07cd0738d0dd73057cfc7e340c75f0c4", - "0x80ff52fdfae53dd2410ea556ea6504696439919687d2dcce1e952d9d17b6e3699816ee623b0153bb0e0588e36b6f56b1", - "0xa92b34d785a71d10e6796ad07df788c6878717cef4f1f0623898370725006d46fa00a0a22a3934fc5cf323be85fc7767", - "0xac1cc08cd1a8fd6c946bbe14662b18e89725933a79965c663b73ae3cf5f5ab87e794559ed579564884e430e108385e18", - "0x88b8b2264d84106d38c321c3a4927b9b41cac172ae27f6292ea44cd9ce11d185d0061a59148e50474d4dad3c9e940476", - "0xb7ac9f257b4f676d69899a181b45f40358dcaa70fa2dad38870d52838aad9001f3a3145f6550fa2826018952431e4cd4", - "0xade67b3d1602ab0af6a256f25a65b621dded7a0adca65c526ab34c5ca3088a549b7ccf76c586993cef0d2d38af541617", - "0x8fcd8bdc44ab42a70c174682a1e8b929004834d4962a902de460eaf8649883c868cde1cd660d14d7d3ce589fe3aa83ab", - "0xb914f6ec60f1767a12fa34a4b400ce102564dac4c1c42f1497c7bb824bfb9000c9e23ed7cadaa16ad79d5ac906070710", - "0xabb1683b313612b583e87228384eddc3e2e7539e0aa26e825f5c27da222941b6a37ec47127cb0f11b6b8e0d02a6f66e9", - "0xb01efb31962345a2fc71b7c370e7d3117bb1d1e1a9b6984ce11bd83c898dc127fec2e821669deca7c74d406e4678a736", - "0x92439394c6c811d908b05c626f1afeda3a0f8c925747bedf66a4a5895ee76e7445a1982e99d8658117128df5866eb64e", - "0x956bfdcb00837be56d44f159bab9bcc2292295ec1ca7424615e3b163b5d14f7143e214609c0b65ab74a0dbddbed4d782", - "0x880b9a8dc9bf6499f1f71828e6c906e2ae59660c9aaa824a6f36116746406351b4e364b6fa26c45e9d90018555bc7dd4", - "0x83f4a0dcf523d414e023075ce0dde10161d65c0abdba522c811f0e446980cbc21eb0bb42737136bce30fcaae3c673b6a", - "0xabfc5593e02dff15161c4da67a806af3170bb2bbc65e3a0457b4bd994ecf5e001d02bdd417655c2b4433dec270a6273c", - "0x99c6d8bab7d937a4cb5c272c4bc3856a3cb8295cd77ec9e2fcc6a50e0545999cac4c413c3ca8e5408afdb60388c82ae9", - "0xb08f5d230713639ec98a7afcb2a25b9b2d1c48820447d28b6a3ef448aedc4b9a90b6c5ffc6613a70ff1766b51992074f", - "0x99d4b54e35dd3f844088155f114ef93507372ed32a6898b9954d5a6d0743e55d8e7de20d67671454d26561ed5e4fb05c", - "0xb7cad70deba1622c79f1ecfdb2612e380e9048fb6146760ba61cb62e98cef129d3944c5f442b15fc11c102fcc6e2adb4", - "0x95feea870c86525ed214e3e0ecca9f66c5e0babf6da8473e5cc5e2f305c26939f6afda0207bf5855b6a6c928815577ea", - "0xad6e77ec226053ab331f3f871d7fb770ae78227a85096d263bb42915299147a7a7b57a4f8f929765cfb323267b94865d", - "0x82339f53ab7344f8dad554fd0270c2aedb34f7b0c630f0a56ca9217c04f0e4a38781eec769354a44fa90f556b388ad01", - "0x837d4672d73588f19b872d81b7993e5e0628139f5685d0520b1b766d40e71b9d83a8d2bd65a03987eef89b3d5c254683", - "0xb3c27e19f579133f1ded8c066dbc3e4edaf449a1edcb1aaf215939d63a7f2b250b9b7afb62d4cd7cf37c28da81898a67", - "0x91f669f9db8fbc6d7a5ee92cb67c2fc1ccef6dde622efa455dd7535b11f506f4e309a8878b859d6605a3917f6d7d67e8", - "0x8332dc636222829a83501a8312904096c2984cc0c5dc077e067d8962bd87666226e3324a9e5057c1cbc3ba700a3b22f3", - "0x97e81e20bf33baa4412d6b81c5fbd406dccbe70973bd73e956d8ce85c99d2199daee5fa6e99fc6d40071b352b5044865", - "0xb716066fb9e470cca4546a401048c0e6c6408c8c9f4cd80aca6778d3f4121378e11cccf8a005845fcc8dea2e1b9f16df", - "0xa7b340eb603da43f2aa542dfad1ef3d3357f583c46040f2dab234c8246d7c55d6885f9f7a14f319e22355ad498c22a04", - "0x8281ea97a28ade9a0cdc73a077c72a92810b70912006611a00df8e7d2ee1036af73c0f062b367f3d4d75be4b9bf78aa4", - "0xa481ffa0813a4f2110c6ac535fb446282dce73c182eb99baf786ad42b804ef12df078b2f534e3cd8210973880bba6a63", - "0xb71a581ae08eda0437f9e9274c1f9431d6b357e4866e40d4c2470252f0888978497af823dbf464785479e5f35eb89aa8", - "0xa07c9010308bcfb0c97a1059d5213980000841ca0565697d45aa46e82fb36494e4940aa435ede417856d24f73d374757", - "0x8fc353fa8733947ba067ca2bf5e14a6c334e4ff30efdfa67829dc86f49424f4548e879b153e79dc75f1ec00afd6693c6", - "0xa663faca50e1fe5d00f62abb0b7828d6b761fde9f5a54f27c0b726d8d53281f83ac165b3d3db87f970913350a7dd07f2", - "0x970535269744905640d6ab238930dff375ea7efb2f391db324724166f0c436e7a3eab7ef6eb2e5d6724c58d588a4c592", - "0x800f33f5936498e16fd0f58210a5a5c104074039db7d9d5d92dc62cc00d796ea0a3a22e5d368fe269cedcf30bf6149fd", - "0xb4b921cc901a7775df7ae73e97cdd108d98c54534015a1469f0ca6b07989827e0d3f9bea2ec015fabe9d309054aef802", - "0x93295c8a7e5c0bd9decd99ee2d704d814cb6bd0061404fe00984a8afc337e78af11965a8560288529c2a722e8b54b488", - "0xaf43d382ff7951bea94f4540a3a2dbb53ed527e966d0dcd117d5212f36112976e1fa00a47bb9870d3841cb01621c5d7e", - "0xb4d106b21e4676556bedc6e7f5a7eb5c2ad0d5fe8004a1d968bc7806ba871e241d38892b1fa73e9648b23158802ab57b", - "0xa96cbe38f86165288a365efa796b0e2076ae9fa94bb6377cb80c7d5db9d376e9c18164a8a3667dddb3f5b847f52fd319", - "0xa0bde83e1f3e925561c481ceb58c7575027f9641e69f14242b886e7fbc532a2bc54aeeb94ca39bd7da3ac984bfe8cced", - "0x8211c4a70d08fe052246d3ccda60c9e9677910a93d9262d572606d99e273c1ade353eeeadf5b1e3c1ac3c4b9019d5f61", - "0x954ba6744e3f991580b6633e5d184550e44400f20f00149d899d97bc4b51b01d09bb4f82ad975cd55189320523fd60f6", - "0xb7e3f17ae79c2faaf5f3cbe0dc528c6aab0035eb3f38954820556bdf7c3546585fb9814717302c5f45fde7170748ff63", - "0x880446589f33ffe7ff5e105fa1c380d401d6c46e80526948fbf4edcb779753a594f3891461f52eeb3f5f2f6051c361b2", - "0xa26c06cf79c412d49f39e0e27e37c82c4cf0c8648638ee66a97d22d822e064a9a7cbb0b1ede46806ea0430639769cb88", - "0xa968341c5e4a3e6d2a2116222e3c58c2e558f5bb0a2877a27c69fdbd38dc3892f9ed7d7c114f557e52a351c73614fedb", - "0xae9b8bf4774ce3b84185be77723ec62b9a415e21cd60e86513c1500916c96d62519ee8cc061d81ac9db9709d6e191649", - "0x83a30c1ebc046c9a1ba911ecf6f147644f58f54e32357dc395388e6bab66d71fb9b691754b11bf414d43816af8058828", - "0xab5b804fcfb68b6439f311d0420005b083a84da15a8415cc4013898806e67c47698a9d594263fd9be42bf48efdfbe2fd", - "0xa41c18185f8111ddd551ecc8f6dcb87036cebb6eabbce7faba40c6c5c8af2ab59ef027c6fb2dc523eb0159335a1ab189", - "0xb24cd94b7c6e161e651107769d863fe5a3d7a847b9c60c7c803846bd782cec0bd54e6278a318ed23b90cd7ad25933fa2", - "0xa5ba23ead78d1678414d4e986b448e7a24b23a5c0f529ba604a51e4ee0f87baee450fd121b43a954be50bff6c0d7908a", - "0xb89c17de4809e722527832b90b810d9691b437f19db9cb88ca5cdb67bbc6946ec1d454dc0990b66093ebeb6eeb6896a6", - "0x914f436fe0ac7540129c3deb04d51bc61192ab5d0d16eda77ef70ecf8cab5f55a13492f54e8052f2f214186a113d8949", - "0x8e0b3d1dd756a9008894028d0443083c21e99de69b8d8f4e7eb3ca7fc52ad540355d4a1081774a6d51a093110f4bc838", - "0xa9c1730eb5c0a42deda9d9b39390661717479e29007f5f8499d0645b8b85bc0ff12cea2ac4328f6588a12126f56284ee", - "0xa2318a42c99f7613ac78cb110656c6e470cac6903a5bfdc1bb182af21e0f0f409bd39324a13e2790f0facba04459d3c0", - "0xa11ba34521434cb718f1b2015bbf451ba1a7c60e59b1620ea843835c7e75bb42b6ad29263cd3705f7f6f1e40a0ebdfe7", - "0x90705112b625973e1cb35e30f9e15e3c752b2e972231b4caf53518f44b4a40b8a6bd15c4af2adbce5dc194169b860cba", - "0x828035b0e70af8db1294379b4b70e56624e1138ef49f7be81d938e8b25aa5dcc03655e045a95a79e0143c23a77407004", - "0xa7abb1836282917d1eb9886c79b6a36d720612e3b823d9420a4a705e8add6c6bfff2f682e6f992a6af10ae2f71ca8828", - "0x81e97c7f980dbbe93df9efdd9c0a8172ba0f00378e9375c926b9e24758e8b827037ba67e06e994fa9d05942320353d71", - "0xafa640b2a7fb997cffc5db74a91dece901be4a36415786190dfd17a77ac837a2fb2d73e973b8e60582e71824c57104cc", - "0xae860a6850068f2b0e1e5a03afbd08b667f44c4f06e431f1f83269e754f37e18a764b00e100dcdbd1c1d18af9d6304a5", - "0x9443fd7e1263d5ab9baa8b1a3c893765da1dbed0bdf62ac9c886425ea9f05876df1920889b707a2cf248e7a029883588", - "0xacb38feff88de8db3477ea9ae3b33e0c5715cfc91cc71926dce26f4f290dc4f437461a186cf1bdcfcd6d121e087bba33", - "0x942882666a9f49ac24d9099facbf1e65484ee76cfdd2eacef25e0f30260654a7b5c0cb7dc37aa1601980877f945c51dc", - "0xab2c9035b2ee9c5e57d8de70b24329cfbd247324309eb30ac78c404ced268dbe2aaea8d417300c90d87924a48702b793", - "0x80aedcea9c5a9911731ebb444500eb95b519e2d4650c1d465afc61f4997879d60750ae3fe049e54654a06eaa2db7d8c2", - "0xa63e1ba5fac918c8bc0f4364b5fc8d26214deee825aa1bff111e03c0ed43baad47e8bae154ad580b851a0f66be85c88e", - "0xaea7f5f8c387c21cf671246803cd5baac61cd6359848ad4fd685b1350ed6298a129ed74dace279fe7846001bd6577dfb", - "0x906ad36bbec72813b368bd2b79c1c9624966dcbe94ca9dbacc297d0d8af86edbd80cd702ed04f0adebb913a6a7bc1a62", - "0xa46201c20560ef2ded1ed3047fc196bfaef445c4a716890d9235f3a06d6993a8ab29e816eba54c6a2e2590dc8dd61216", - "0xb37eb2c0d765b044ed2fa2923160a19e11509e764025e43a62b4ccbe38e534ab59e68c2cc92cc5aff9d97154b8210c50", - "0x91f93b1404a4bfd3fc8ea019d76230637ceee315da0faf366c712c3ba19088cd3efa2dd30172dcdac11e636f8473a26d", - "0xb6b905abc4a795bf95d055ea09c3f9d0a8a9ba0014e288492a3751d2aef60cd3b7846e1ca8366635a94988b2e197191f", - "0x847529bf842d7623150a3bb91fc4ccbdc66010bf008179a32359f98bd007330bbfabfdc487f4b98691ad65680af67a8e", - "0xb3d37a8098d02b5ee69ed060527f3d924c727016fd92b21d6a52fb1c1ca18c7eaf0caf8144e9e6bb5b6a039ca85cb1e8", - "0x98cef893dbcec865cceae01138613de146d563f13853ae34bed5f142da716673c105ecbf4f2aa7d187bdee20702d8582", - "0x97f60078d18928c4d7dee1ab244b2b7540928e20cf7ccbbf6684148611afdd9cce60dbf412c1fc544ab8c356fda8fe11", - "0x872a6758004e6c87c3788c5c11bcc74db78f076efaeb75127f0baec28febd02528c65b227b7619fb8c29cc92d7c8e799", - "0x8d72cf1191629440d7af8daf3b76b6b1bcdaa8d6ddcde52603dc8b092c2ac78d6e24bec32e1223eeda15dd17ba2c26d5", - "0x89dcc8c10be08277a1e394de336bb1b135bcc5131dee5eece80973ef364a305235936a3b6dc40f2eeec2aaf227a86376", - "0x972c4ee3b4b3b028ab683415bdfecb2454d326a19d274f499e48bb2cfd55165b928bdfa7f97c4fb6d27082cb88b73dd5", - "0xab5438a8af3acf2eb75bea0ae71d8aeae363d6644c54e3b020082c80809ef86faf5811808adc8240c7693515ed8bf199", - "0xb594133dc9f71f72e448796316ff3ce2f8a03c21ef9c54e551d23723d5f197f7fb0bf1c33e9cb3f51188db7dca51bf49", - "0xaee981b45d570a666d0d0b2c7aeaca3cc22d4873812b4424d1f91144142393fd64c49401dfb970c7d5ae91233676cacd", - "0x8f978d21de1e264178f88cad7213463a5efd139c30dfce81a7eecb46942870a3c1971f6e6e6a50e0a8b20c379ac084e6", - "0x9153701c8b82ab43fa4635cf677789c9c9911efcf23250bd393301c0be51f14fd0acc4e467ec9682acc89085b94641d7", - "0x8681989a1be217d77cc8e012c95128557de70b362442e7f1e6162bd52ec6e4ebb0ab28f9ad3f67c1d35ff00216ceeb74", - "0x8e85421256fc71a82d35de9645a6da9cbe4dabb9670758c4eafbcf42b26fb99866bb2b4c374601749738ad34e51dba6a", - "0x976774296281bbe1e8dabaee7453613d0a615cc6abaeffd8e15ca4484b5a743e298522b2dfbdcaa697e1eea2b2bff736", - "0xa585501faf955b6acfb328d801cfec5b59be8ff2fe46ef0bd73b86ba4c19c1dbfcc1df844d61a5acc64bb5e8a68f6cc5", - "0xa776217e5073714b36bd2ff0621246a48799eb5ae3ca438d1efff6f9f9beb13779bc18ae5ddb77c838732e8925018118", - "0x992d726bd4889f4e7565bcdc31c7b4a58ba44da5f361e3b46e0a67a6e4f00c25e3503c94e7b2bece737d7efd47ff9beb", - "0xb277f124d5dd8dd669ef1f6840276c0bb0b60379ca3a0aaf00ca337c40f478d511b1a73e73df6c3b600e6bfaf37a8fa9", - "0xb037e78617c235e6528e535bf13bf5e82c70588d1d0bd08de754d089bd47a4fdcfee79b5666b95698cd98c0e32164afb", - "0xaefef9e398e0edb60615713d7c1334005b21844d3f1401903e09af2db20d7b342b8d80796fccab583c8607c533c9b735", - "0xaad20eec7cf4f0b518007ec1df7dbf4935f6f9ecb36a11d148dbf9e5281aab43feebcc8ce9001374be40776c5ffde825", - "0xa4ebd6018e004ac8b5d022cfbb7c5b3833456faff4f198a3d9dbbd077c8752087bda1ea060466fde4a5f31cb8a50a7b0", - "0xa56ebb8ac9901915400234c1c6c8502905765a7224de56b084f9b0a3468a065e78b4daea27d9887b4f44a72fa61a15fa", - "0xb0269890863c63203dd4da3a08a1bf06621cca212acb49799bfc48be7e41c951d807f85dd4171ed57c372914dbd2ffee", - "0xae11fc0f5fd5ba488104bfc07fed50799f51ceab4768afdab300325e9a913b1f257fea067d357e54950c8d08af5ecf59", - "0xaefce65396c61e835ffa38857df426f64508de6e93f966cc46b54dcbc5e2bfd72df927b00489fc4460414569ce99e610", - "0xa5a1fed75677dc956c000b9135c4b6138e0cff53770399ffbc3b12ff0c1677ace264aef2058aea535ee1a7195afb034d", - "0x8071def0890d01f0d10dab3afb13125f0194e79608b9ff129572b5daffb49cde5bf6d9f24da3f84483612aaac3cb8eb1", - "0xb5e5bb8c0be22349ea51e249cf2159189fb9aee615dd62c5f67cc9f43745676e703abfa6561df4f5f1d79b86c459b11c", - "0x978dfc57cf0d3538ef336a25ca7a2cf373f84b71bc06d1c74907464e3e816d834087ee126bbbbd5090a09ed063f87a46", - "0xa2ff4b59b3e7fef169835e67d47218eff5368aed3e6e2f1cacd29a5efe6c1c2e7e1839d87759bad8ad1871b39c481bf3", - "0x96de49b44bcd2f5ac3d07d6f5270af081776d8631fefbaf9fec6771e13d40a4e5158767067297029bd38e8c6847971b6", - "0x8f2f820e8e3645f2ab9a27b3c23b5f656b681264d08e298ec546c5aaf51119893e0dc8e04d6f64fef48d3cece89692f0", - "0x8de2eeac7dd4b53119d02f0ec99f127cbd8f6a57120d94a9a554c04467fa74ecbdfebbb111d9f15cdc1be2be8c2396db", - "0xb6616f68b00ea0fb78a25ecd51d3018b9ef13664a7da42663d1bfd6fe71fab615624af863f3b41e625b36a607bb42dc4", - "0xabab5be2ab033afd6d110a340c658fb512bb53368886d8a5ea29e3c916a6b1bc46decb2cd0f508b5667f9dd88033ef7d", - "0x8872d0cb09df44c2a75895d46588316a4c9c743080f7a03a384bf4d4be80d341f8dcf0e208383bf3587a3509f3324fe5", - "0xa3f57fda2e8c06fa7ce9de223f5ff56d53ce9fbc48486d88d2845e7011dc038b6f2f270dcfd46ef5222ae9a1557070f8", - "0xa82c4e46f0d1962cb48d6c3d8ed3976c4fd4c174d119470479d9770619a45e6e16e30693b2804a82b516ccdd400508c5", - "0xb53188c6b2907abcfe47fab98f23ac602525e05a5ac6b4421c437025819c80529e9d2d63f8a3c10cb9dced196e572506", - "0x951934cad4c2772aa0ffdfc4f12a55f490824e104f669e4dffc70d9c14239570c87eb998dbb2a6d423bdfe1ab50f4377", - "0xa276bddb27d86e1e70ebb96103a239ae4848ad20c4c5b7de85f480c3f293c934ebe35792361d9767de4333ac6de11643", - "0xb9c8eccc03d7270779a87dd7c52a42c7bd632b9bdf94274b1dc864bc7a59e13eb30870ab740066040aff0beeefe14d2a", - "0x8e0908e4d15aaa582dc028e015c4b2bd97c82b8086737cdd1f2820641e65d88166d1fc763bc483f8fb4643339182473a", - "0x810c6c46945ad5b4f699c51130bf204e47c62066fbe54fd099c3567ca79aa8aa8b04dc5321c09e03df4bb7c9b93857ad", - "0x916d4b23adf202ccfaea7dd124d28573c73b39ebd74bf4dfe32a366f9dd48f4160b8cb0e687e7dca887c4b4f19570cb8", - "0xb1b8fff52dbbd5b9bc6915ba20f3185fa8e23fe52c026a41cdedea5301dfcf6c79c4fe1058f3abf280a00c7b2cbb20a0", - "0x95f9623510e12ddc6f4ae59d06448f496cc911c99a4d5f5c6ff7e434b807fcd4b35ec1ec976a40208ee1a505a892e38d", - "0xac7217596d42d40380fddef22e83db9e6d6b2d0d2e912f868d7fc07bacfb83e8e6f01af544e8f450d31db014fb094c9a", - "0xb10855b8ff1a81ac32d81773ce8a6391169902290af0637038b58ab59fc84e3403d515ba7c99e26b7382c2e2d0edcedc", - "0x89eebe9789a333f5db0aa9e8604798b15a934ff45e19699c2e7fdb46b6863ce02defcef9f6dbd0cb799ffe2b669428c8", - "0xb9cc540b405c5ec78a2d8fc17ee4a08690e347cc1d860885205bc19cba09e62f25b94ffc2cab1f638c87caf217f7b6e3", - "0xb16d06b120906f085cb183a96a2b635334afda4272ac650259f23059407fdcc8b83e91f2521223f79769ba45428c04bb", - "0x83e0a2d9d9f6654d916a822ab1725d58a10efd64e889a17f44860db4d2c77ec1bdde7d0ec8deabc12f8ffa5af879d4e5", - "0x98cef31d7ee167d9c4248e29402ea8d5546288d1b7ca54a5370e80a9ce371bc4aa3f5c7a24c2e4805d8c99af059b4156", - "0x8fd55a0dc38b65c2b0b45c9127c14b9396db4898f14e1559e428a2951cb5076bff9e3f202a83236f15c1d2530539e5ad", - "0xb3252594c3060118acb12eb91d002a74c068c0b8f9bd735a9ecb082f787c7e046dd6e40ddf4b3ba56bf89f223bb5d76b", - "0xa88446262600f605fc4f067dca855ebc56990a9ea050c708961e486fe685707d9e9ca734068b92778a144c0f3c23b4bf", - "0x97beed96ba821515996045a40f17ad46f8f4d927cd9a2c7ce134a60d19ec4a5819a19aab1bb0df886d9cafcff872bcea", - "0x98ce98dc7908161ceefa0ac132b63c860ec2e53f7ba28e66c6c5e45c5945e459797c65668e58c0a5b8a26811f17c3f41", - "0xb0419cef96d4d44fff0338132d53d2c03e7e9b4618dc2c6b9f4475368e21700fc08b844a2f140158fff81f56aef83b7e", - "0xae1eba4a4a715f6d077e90e9efb59852b7025adced47fd9f705c2745e6734f2fd2f2f86f07ce24695a06e24e63f00b03", - "0x86db2fd15dd3cef1e504fb057136f0405758f6fcadc391e6f64b3080f92bfbd4537a0d8f59cd1a0e913b2b188093feb6", - "0xb418cff26800f8793b083a879c8b1823285f7a3cac6fa34cf48ac5355f04f6ba74255eaf436739c4d26d0d80d2607129", - "0x8eda3c25b5699569c03b85bc585acf25bc3f9539e9dc3e8707b34520ae5ac53920f45528f0870d93f84647cae36b6aeb", - "0xa2622af11642fb6cd60cddcd4c242cf13045f4ce20539d11727e8942b4f9a7fd1ea2192e83596a35c096fec3658c0c2a", - "0x80735f92d09dc0af19f593ea118bf52146143c1d2a7343f6e2ab95e00debfbd329d4e887f7421e4a361d815dc1a27973", - "0xa7eff30a31db635e239c8632f7f84263c9a9d82511422f49077823aeb124e6ee3c995ceb846902fcd2cff0f5f219db51", - "0x99129aedaac32b3ec18d689a2589e35fc9715fb3f1a72d28a09ad95e39a68ea939ec5721c501a9e35c60cecb3f4379df", - "0xb9995d65636ce1e70967a8ffdf45e50eb264eb64f15ee887781455c5472459cbb309ab58b1645bd6e8f2bd29e69d81b0", - "0xb8049f4c3ddc22405880bf55b5d5d94a6dbb071485f25a49a6457db0446663f8d4fabcf14106b9cabb1b3222d8786773", - "0xb581027c7d9bf7b97f6eb085934b9caa43a46368cc6740139e33e4cb2c94683411710a52d5933a27c9d12a43e75163ae", - "0xb5dfce672e670158c259f36fa549aaacb0699da2f13702c81f5a93afb00361f9ca22d02dcebeaceaee6813a3c9bf7aa5", - "0xb8184f3eb809be1986530dffd7464d84750df02196274955769a0afa02b65e87686d915ecdc7e75a0a76be8b7ad8d064", - "0xb7ab837f300f4aa2ebd2d770f7a36dedaaa68e1d601eb36a28fada4dc73dbd55e7f31c88ab2835aeb57ff113a14c5f32", - "0xa72013c811ca674c3e909064777df1484190fffb0643b6b1435892f5dd0f1d09579189fe00c862bcd18d03309b958b72", - "0x87fb528e03f1b6a000141f4a6ee24a9738d9d2efa795cc262203fec10d76adcd0f89968a46fdebac99af8d048300b8ee", - "0xb2a1ca5d5d16c7addb73341ebed1f8e832250c2f8e03915a417064750d7deec3289e646c06a09c6a3ae40ea2817636a4", - "0xa90cba4d0928da2a5d8c6935790e1a1f026073632a4c1460fe686d06c3f2933661c2b3c49bb0bbeef386f2bcc4d08485", - "0xa5b684d544500be25136b0b5b95d9f363103a6d08cf49f4934d6c96d43720a79cdffe66698de0ffe5b02bb3c2e30286f", - "0xb246952dcdc38a500e64ccf4f312bc7c690d33a3a951fde5f839f6eec77ac78147f1fcf26ff7b990e8868f5cefe1c4eb", - "0x981ed33458e8ead67d4adeb884153bb0fee0ad98ebd9010ee706ea1da7975c290f82c492cf16fb42d1b739632e66e50e", - "0x88bdec223786c894fbd8f964ab2c92c5ad7fa7ed2b97a6bf31423a6ad5bbb5a946ae3cebccce8cc97af9e788d03f547b", - "0xae852b074e5716e3190593e11fb17f1135d7a5d888986d2be53973fa14c1d4a9887381e648a10a4725291ff062c9d88b", - "0xb87050f914c4f09e2dfef845ace5a06504b6fdb815f685921710c7e82a9fac11f864e3e6023ed5807256d6269271d051", - "0x8cbd11617ab819680cfa68e70e205f3ffecf6e469d88dbdb1d9b0c9c7c38746dd6e64bd526306a8ab59cb7e66841a757", - "0xa1c51cbc1a91618b1ede5cdd77fce26b04971081e5cbf83be20c22b9b30cc9197b9bfd5998fd9ade9b665c8218afe94c", - "0xb5cdb2091d114847dc14a4c922bfe944021549df2d75cfc08ccacc2d740726e90e20a0bc2bb73303e9f0bbb5192fb982", - "0x8e60327955c5de97f56838cdebd24c2ed4021d9e3d74ab9eefd4543a286c1be82a1e8455f8cfc0a17f03358c4648683b", - "0x87f9c1c0987493c631279112fbc79c5f5d7dbf46544119492785f444d063fcb0da4f2d1129735ab77663a9000d9e18ee", - "0xa970df3d50c4ef3d76d53dd2b887e9274fdedced7a83560eb1950fed2075879d9fe1d5af811f04ec92d557a0be0380f7", - "0x95a69bf4092567f5b55a401329d5a08220ae65825f05d56043974fb7b7090372e941a85e2d197c46c9165031b3bd36fd", - "0x8e62c98171e54ff549ccac5d6d381291d0861439dd24e584d356a862d22942e0ff17cdc0d1faab07e496374a547ee812", - "0xab62d0eed8422a3172269de0e325eae9294914fa67f1ed8e5d0609afa2991a26b1e1b9a04ccda8436d04ec085957b110", - "0xa3292bc88e2a9dec7b55ae4c27a3a8ea46a7b2dfe3a817675eb3712f95264c08668703771b65afcdf6d305e396d5f005", - "0xafbaf9cc19adf63a0716cb868a970a372d7a1e24a4c78718a114ced412a12fda6fdf42f701ca1492a8f8c1ef0466f7a3", - "0xb41a5f064f9d900d1534a68c74796927e4018e23f949d86eb76dd5b26e5b686115d63d858a49b545924b3941bcec2341", - "0xb4e1ef520119f9a238fc4988ab2f1266606f53079744b92c1039541aee78b67ac570d7839fc9b2331244d734ad4637ed", - "0xb0ce754a33a506174d5feaff4e9a79295c743b2a122c8a1788c1427482585b398a750b7bd93cc53c38bd3e557caed172", - "0x9842cd13ee9490d9ca7ddc83d1f7d79495afb7301d1f51f4b007dd2b2eaf15abbff18666126adc25df5ae26b98a80f41", - "0xa976af142268d20a248c4b71304a878efec29b5022199cfc88bf82c081f55d06a89f178606d50bd3f8576f0c5c01a6ad", - "0x985ac6f315ab1d2db1b4f2b107eb1652810e63e36b8c14e8852f072d2c8b14922f20d1374a57d75cec62db0d050a0c7c", - "0x8c1be9e8317fdf847a8131ac14cedda922bbfbe15cf95537493c4e7eccc7f2f1a56ddd1a8832e6300734d6019d8b128b", - "0xb55d129c88d252556fe688f84982becce253736ef3b1fb88328e41300ed0713465c8bd15918386844c725fe7a94e8364", - "0xa96384d2d81cf6a79614c7fd6bb68fec6e74064435a1a79dd8b1533e9c7e578da5ecf03e979969d983da893f42adcd84", - "0x8c2b3c06b7249ef5ecedeb4f2c65c0925cda8877bb4b672afb7a15bb5a7b5818748d6b022c6ab8fe9c5a1499e2037c69", - "0x91c8b2b8b204897741124a37f85ddc45c3ef94ceb5dff681b13771e712f2ba5ac95cb1bd2d3e94a84625d384b51b099b", - "0x8bf852945910e9a773120c5ad975f080c07c8fa37c2158e1138162a82983211da70f27e22876741d58c20a6c9dd770da", - "0xb9e907d9176a0fcba87a2797651765c814df756bbd1d0a86a9b7b06d9d886d1908d4e74ab27d618129dcde81e7d969d1", - "0xac4d3b156db2570c349e21f07fd17df935872f9687842035b533c6e4773ad5752f4ba8f9ea4501953f6b8c4232a4562d", - "0xad91c4a7ea0a314d7d1ed7a69a74adf6ad810586c1bf907ae9878ee5f6528437c048c6ae785cc255707ea3e58a4b452b", - "0x8013b76604bda0c429e37006b01750999414100d0ff59ff5ab7b233399adaacb34906ee65054abb94db80fc92ac6d2e8", - "0xb26a2a660af34a4b9b8910463d0dd439a3dc563494f5ec280dd5eec0b14b0e9426a0422f3c75370201299d394c4d90ad", - "0x8e1c7ea11dd513fb8527fa99b899444bf89a1188089d3bb65e3eb87025de9a48e8b4a3068a955fe752f2416de282ca20", - "0xb6cbdbf2b143330db09841aa0e7d22d32772ee62006e7cee13d8c4ac911ff4a59a9dba3d84bc46ace1760353d847bbd3", - "0xb8f5aa3ee213a44c41f63c11f685e754997cac37b27e91d07bcb69947344d94f3b86284b3b1655e168befc01c880d550", - "0x89f93b37bda703494263b10768118ce998ac1f395d422c0ae840e47c6d649a3ec59b404c164a1ad5ed14ccc2408fc662", - "0x97255607a1aaae89530a3bdbb7f2b7ba3fb9d5dc93509991021152dde08a638bb3152503cf0c896c9c19d61f8eea36d7", - "0x909c7ecafb798e6aa45867976f59cdc9d219aca6fd0881f82f296a83a2a3cc5ed47f08794e6e3009f8847f16345f5f4b", - "0x9560fbc2c531571eee5b7389855117644f156ddb00b23a7c2189205d4cc613ec83952b96e941cc1e725c2b574c46ee9c", - "0xaaa69f68b6086bd369fd92355f3a0bc632c1b1b4284529c18a7cd4d71d827291bc997ce74bc92dcd6900419be68efb37", - "0xaf9ab7e6a27e61a99f37b89fc816974ff916b6a24ec3aa31d76579204bdd5ff01a2eea26e76188976c033db4af167db5", - "0xb026dc8850af970d2ffd300dce6ae07db0ca2d21978e4f3a6797b6e3e81f1d9680465080a983c31d473a77ffb62acb5c", - "0x8f82f92ca992ac352ed1e8fe31d24f8090ce6a7f02d6086720422b9bab20f3e3c38a5f63c7fdb193e30d63f08e53c900", - "0x8b896a2ae84c66109c8501cf6070c4da65c43ca8ef9b6b06fc85b6cd92bf2e5397d492796c528c7b2cf29ba93341a87b", - "0x961bf4c0b8068c8406a864595e156004d427138e06b390519cef53af8eb00c748bdfdd480521c6aa0d53a78e8f806217", - "0xa6fa456250d20c6842dde55d3884eaecfe8a39f546cc5e4a77f57907192e849a956a33a81369b0f2633c55bd6608eb63", - "0xb1d1d2f3e3e058ee97c9b6246cf073236438ed5e782bb21c68cd0d77b44f29745dc24d01edbce4437d93071b6fa6e0a4", - "0x81a0bec80ecd1b1e72256ed5be7de8deb11046ead7a96e1d150573f4d896e642b4af095735343f6831bb6b7f4037cfca", - "0xb48d8e15fa8e0b46937637de3c727157f8073eb8a9a04bf127e68977758385a791da2e9c69fedb89b334fc638ece78d3", - "0xafdee0774369653bf371b8820e285e1b48b40745a44d22cf2098b630b8ac95796a74f79337cb97fc60b6d6b903a61321", - "0x8fcd9ff2991902149db29cd4674d60387d4f65397891fbf91b7699a42f579f6b0afdaccec70e5e82d1abd81de859183a", - "0x8af5c73367a8439b2e3e5f1b65e00ebef2eda640bfba2eae48582cdfb244e1b1cc540bc0ef72f9e24399affce1c3e222", - "0xb58cad4da101363bb8d6e8cd0ec7c078f7719462856d7ea573e2bf95e00cc23020031901bd1f2112ffb90d847241e5a1", - "0xa671f7fe2ad81e9e0d5e3260a9dd7808125dcebd970877b000bdaa3207ca45ae1e5458d5ab7bd69b2adfca8b6abd88d0", - "0xa8411cde9eefe73fbceec3e5e3628b159ca4e4c19385ab50b8d7a482f4258f405c47051a89f11dbedb2b15e84d8bfcc9", - "0xb5dd09d5ebb26e341b6df80e836c6de2305ce4941238e3e96da549857ec314b1658f8b03ef069633625b6e4bc13b531c", - "0x81bc9bc924039fcca8892b40aa9fe8f5d6f305343f6054e36647d5f14cad3e4d754dd6ce9ded67ae65825adb4e16df31", - "0x935ec74c2dba94b1c5ef2060c31bb5c1426965f68d9f4125cdd891f20495da9d5dca513f65bf3e8c599f1562e81a0c1b", - "0xb9581e11f361097620130e753d134cce6d40ddc7c516388fe4c881fceadf738f314d241dc14d4f87be8ff0481e898c4b", - "0xb7be50ea49e09d10cbcf21b6f717e0cdca582d57935d72d17e62cdd7bf2071e5d5c91ad7bea79476537e515f0d2fa5af", - "0xab467b7fd32a795411e991417be57af8b62ca199983efc1f744799136ae5339173111465e91083dbce60e77f9f2c0fc6", - "0xb99afb338f747ae89e7cebf069612e22f9704f247d66548d305aacdfae395609a57d4d5405ff0f1eb1045dca4c3827ce", - "0x99a5e52374e1c55f65e44951f68cc3d607157e60d52cd088125a81bc60f2009d1b894eff8e1efb175509aa4b57af7276", - "0x87e3323cf6f11b595ed745a9475a6d99d11333043d512bb61d5f9d8c3f0cb6957aa8c3f041688f63ac13a51df29fa061", - "0x96a5f9ed28056138439eedba186b754f5f7693c09422f42ef82a315b7413b418c4971112f4261e1b9793ec9066c3641c", - "0xb9b5fd36d2d861d40b947c3c879a42fff24b9ee346163e544ce6c3301d0003cdb47218644fd5f1f7f0d6f19bf647ceed", - "0xa8899296b58e5d56d7da438ea48bd76310364ffe666d698c86f20683343663d742a0b3f8c1255e33f1d424cbf61bf1e6", - "0xac4be82ca78df2a367f13c8bd1cb73a28015853f2745e025626c325a10b778cf4bd9942439e35015cb38504bc02993c8", - "0xae5d6b99ef56cebd5e25a9c002e9e80c1d3e8e5fb5dcefc8ea7b7798c7e09b02147da2ba14e42e2b6db2b2a6a738f598", - "0x8c94abefc71d245b0bf04f34085da0a9b8d4d798ee7441596c5166ac353425175dfcab0f76bdabab8f0ef5a2b453255d", - "0x960ab6939b1185806e9f985c9381206c7032ea8a7a99eae5a66f276ad5cf450e654a6f1e956a2a63f33d6f715064d051", - "0xa4c7c7d0fce514db07bae5582f5e4f7a05d79f7605b33fe2a1ae980bc388b31c056438616bc8391ddc7dd5f98810c74e", - "0xad5df00f96ee6e9e1ee65b562d6311c38bc2a0a25aa9ee36f39766a2a03141e95285dd2850a598385f45b9935d63b78c", - "0xb051de656e37ccdf3844a6e095d3b42ea9c5a545e0dc2a5234e2016570375bff6b55ee0dff04ece5713ba8e85629a7da", - "0xac01fad1ac299567a22da6949a011f429bd9775de956dcdc247d5c186ec577fbc12a482ebff3a4ab18a8e35f3e2218c2", - "0x9654db9c6b5e58e0b68fc49718773d44129a0e77bfeee3fb56d27c282de6b75fe9c10f4f3b5d3374443a9fad45c400ce", - "0xa556631390e6cecc2ebe390e605e6fd754f1961e4bbc063c31c08812e0993eff5b5b7449b9732bfd3a22c87f9c528743", - "0xb41b7abb971e253dfec3aaec4443e875d73373c70c33e9ea19c1176f8cf1278c7716a76a4eeb641c142b2c6c1ace5db7", - "0x8bf37cbe29245c5e217a48140d7f0374f46596f2e82c1144ceb41c9801211869b96d7f1d0f7345233abcfead0309cc3e", - "0xa380a799b80f1309ba326f26ee46ba3081b12b5a1143f8289b2fa067aa3ba80c3690fcefded8534a80368799b71ee9c1", - "0x93dce0a2aee4d67efec1b284142d890d1e0d7abdbbfac82f90dcbaea94eef829645675cf17050af7b2e504a46d1bd288", - "0xb8e90f54bc57ff52b84fa3fc3c3047f379c5587ca18d9988c613a3bfe614fd5fc381106729bd62eda298faaf17b10210", - "0x8d8e4f508c284c52a6f907ec39950235c9443c5c6046762911f4818b98293d7d60a2c3f94c5cf60ccfeaeb8f283d8ce1", - "0xa513b66299ba5104ba633cd68121b9ec848e0c8c5252d04a0bdbab5e3bfe6ceac93ebb1ee6f0274920d84eae27df1520", - "0x80e2db8b919dd2ca33e833270738b1f437ae312b1c53a73106b6d12672a395fc3b941292fbb019d40e31b8e96bcb85c5", - "0xa4c28fba416985d47c947b0669cc22153ce887ec54535a18cf457622d03120b6aca71a45fd8704166f6f7a9ea2e9d608", - "0x850b05b9c7e168a83b0e0e77d16181a52d78aa96f4026c4420824cbd44dea9f27f3336b1736bd545bfdf548eb3f4276c", - "0x8efabbd63f3b9ae6111dceb1cffe45dd23f1500f87382816d4192161a77dd0776da2a4463d32da85b802ba7299fa726b", - "0x9426e75c6f7fb77072773a2ee03e1e3f1d90878fdb5d8c294265262f5c1cdd74a7aca339b46af8a5c43823dac7e57edd", - "0xa1c4d2ed335a3c92d867c5cb999b2b807dfb1d45e35b3960dfab19da43e2d1ca9a8748738380cefd137088d8b80d3006", - "0x987a7e22092931f39f05f5a6b38f419750370a71157d4443510b61fe07ac5aa31cd7f88ea04121947b1c0d0419d2a25f", - "0xae73cbce7cda7cd90404302388d41b49ed7d7f505a9a406f0317fccb29e32a5be61a6eb0951657f2d93abbb497be62ad", - "0xa1c7cb4056984c22a57ce76272428a50fd33f0f7a68c29c9438af05a87bec23d8de72062fb4829adafe597a278de0c01", - "0xb72c81a9a747a83a650b58ee01015a8882789983b67ac4f2fbedbbf47dbe30f04f686877d8f118b4634289866aecf9da", - "0x91ba1797d6913270ac1cb9c87d9d8440a651e294c45b2301ff8c40416e58126318f0f2d411b7d9c09c8e19f4da8ca0ef", - "0x864107657717124339cb2ec06cdfa75fb9c4a7ad5155cbdd03d155a7f9e9026e237d7cf5f4cbf07239e7bfbd79900957", - "0x87af853a334b8cdd10bf5f78753b27a0c9aac9f55db7570e2d9d42f13d0e2f8bfc4ca64b77b21e478f23385f17eb4f6d", - "0x8658227bb8733d6c7608d66a748caba761f28da4d95e70506dcfdc18300a559b4a84d11a9a048e82b292eb1b5d88bbf9", - "0xb078413570ead3243b9666c109a17678fe60dd1240caf01d1d344de09e346015cba7a40560b0d68b18df82a0a37ca529", - "0xaf6dd12875a891eea9d846aa660a207a527d08f5959976f6cb7585a98b1133f341f4ae29157f6ea8e0500fb6b49fb9c1", - "0xabc0fb42239fa531cf09f7288fb00f1d1587f2a86503593d481bb19b1159a6a9d6f4794565fe923a545d45b058d3a74b", - "0xb95966d42c59bb12029aef1da7fd50e9e8aa9ea287649ec3ba44247b185b485260af077e0d755f322ee4ecf8e2c8137b", - "0x8b1a2350f9bb0d6de377c00f0897081bfbaac5d47cac852a22dd8a427fd2e3029a1708f452e958a07236c7f35ddeb565", - "0xacaff21e9740b831fee42d80a9a80cffa6673e39f85b815b4f546f538dcd803320f90f4f25436796721c8a11f5a1b25e", - "0xa0dd42f019eedba19f4345553965508aa9d2eb1499a363056d95e27f7083c2343e74a0e7dfb101567250148ee1bec1d7", - "0xa08d1b1863e594bfcfa2e21ef4edee8535c8ee69490a4113787899ad8cf2f2ebbdea54de193ded85af82fde074ccd0fc", - "0x960912b621ff08e27781a4f9b80ef1014a4064fa3c96f534b67e5a094a5c11d9cadb2b69cd2011cdddb463f2936c7ff5", - "0xb3437f1e0872f6b9ec071a951f26120f27425789e00c1a8d3183879ed02e3b017406c051f32580b78b4d0f090474b42a", - "0xa90e6d1b11ebd1f1dec54d7b3fb336b9a53c821f295a592e147d5fd453d66e63295a96ce827c4ad64c37d4bc0df2c7e7", - "0xb357a785f3dc1f9bc1034da77033c0c64b29b78c7381ca59ef81e24ab14448d67dbf84756ea233b9e3539b5ed517d9c3", - "0x9360adb42210abb9d7644bb95532e1f461464446e94cb5047bf8ed5513398414130630866b6980b6afec5401e608f6f5", - "0x9145a7f8b2cf1bdd90b9a860051eacdb937189e8d68793e52bed202fa1e23a87db9c51a18f0bc050dfc3c600780099c3", - "0xae086e289e16608f02281bbde5a6fb2479e3151a2464b86ea737f8a43e15af4fe781312d0e5620a42a096cfbec885b0a", - "0x92b57fb14a0c567a16567f83e72b03b8b564ff6d830a5776014167cea06205579dd10715071097710dbf50b660b9143b", - "0x83e6a3f027163e635c2a1a397d2661a2d6c72c25082df129572082db29b1587c78dc3d2e5999112983a040ca46bc983c", - "0xb1667d022c8099dac5af4ce3b4ed6f524819240275725c7580a2386f067fdc9b3a49b74195cc6f661212fb07ff133463", - "0xaa2eb0c44df0a80047eec28a80440ed5f363e3d42908506bf8418bf04e9c17a5e9f550bec9c8ab8dc9979736ce325780", - "0xa2c1d257de1a55e4c10879eadd49af8950b0cf25121e8d7de30049360470aeecfbef263739262bf1f97020c6b025f9cd", - "0xaf29d1afc9f76417e4396c54300773fd283f1bc2cb00308da5e6b1deac7a48cb117c0e8c87b03076c7a1b8414d25dc97", - "0xa44d4f2186f5d728fdb224f10b496c9b57d96204325c452842423cbd29bbb2d07e98013a3880c7dfd63ede725d15953a", - "0xa30c45d1cdc68a5d5ab65b57d60c8b386be836c5bfda7e2f0347229b7807f6a97b632bf54ba3711066bcbd5e0831e5bb", - "0xa8c3c93d6a3526270ae47bc2628da82bbdb8b2c8e4d6a4cb5e9cf70b49999a963f3e856ff9db12cfd2575187bec668c7", - "0xa03566f1a99f5b82e8243678d0bb033441cb8a2f160c0c66dcebd0b6922a56f895a69b94a9c65f4adc9ed73420fd30dd", - "0xa4e3c839a6f4f4317e7bd06f25c5236e42fb0e54bb975f18f0240bdc214780049f0258dae24fba6301aad508ef9abf69", - "0xb7e0349d89616156679d06d1626f45dbc9683ad73ed91f0d92f8f82cb0ea2ae8d3ba3a752e73a39da70569d41e84015e", - "0x8c9ec5ff6be4b0d9337c5336b467c6d4f552af691bf083a23f1f9856e18b5a13852143dabf03869009febc443b2edbef", - "0xa12ff782575aca7b48844f0402a311bcb3e19514dd4d2ba5b39694c66846b22dc9ba25ea39c3c1bc325eda3afa1f00b1", - "0xb55bb586ebf5c9a3c83a04bae254e22547f37b9090151d96f5d8aa81be17bb38d2763a08cf0519a91878633ced6ce0f4", - "0xb3957203932032fe180ba9cb5347c2c1865a3094d03f6611148af4094fa6a8eae522f2651780d9bc49b41f5c36054eab", - "0xa0c865b498e30180c48fcab93342a50ca1cddd8759d6e0bb54e9f92e7b60c51c373f7ab1432aeb5e5c2d3ffcd79e8180", - "0x9503ffb3529c3415c07247211c2a4f35d8ecef98ce9f921e67438ffd538caa54520fc6d248a081f46221a0f1165011bb", - "0x906deaabf6e8dd0c24a4b22757b7681bf88268d9b4ff97f2844f9de825af511155d0bbc48dc4c03b87007be94f835d92", - "0x96c2a7f48990ecffccbefe128a28cd5b26c664b8dc9bbae16d857f7efc1b7711c734ba7d1476945d09ace569297ea96b", - "0xa37ea083b0a61f400b498ac5ba2360c22e40b688428ff4a02e3cc80206b61061bde037cd52d97eeca175394dc675e216", - "0x89b15c3af439769829ca930fa83c47afe070f6e2d7a7df88e5a4f3a2c0630f9d143bb3cc43ebf9bbc1b91be03d35ffda", - "0x8eca6996ba407886d3b9d2e4b1aae1983023dbb1c9ae47b6637458c73ffb7f422b0a893eb0b07fea2c5172ba335595b4", - "0x81df4d7f576930b2865af5ee1525718a09b65d9a013feafd19cad335e4e425485531807078b9564c8db3bad95d23bb0f", - "0xb6635aa3ca31c851a0283c0c6356235a5d8de9d1db9780e62087be32089c1c081bdc642f067224e88c14252efb960e3d", - "0xa0120e81025ba07848ef24ca9a94699db5274a8c85eb9c2f3b41a81f630d09d100127154ddc3270525961613a41ed81e", - "0xaaa8dd063f9f4f73f5a7c440671e1375ca8c224f8f869af736edcc435329487902249c68ef646fbf71c33a8bd1a04d9d", - "0xa36bfb14bbf3956c317e01fe744bd9c6c6f526a3881f6800592501ca1d9caba7f81b3b54f53b2ee1b13aa6de42ba06ec", - "0x819cd123fd793c0c9aba75aa96293268a4731c68c0a26a52561a695fc4acc409752de84ebd19494bae70849ce538138a", - "0xad4e50ce325477621b6eb4d453b087c3d7df6e3d019ab41239f2ad0615c6030aeaf85e0e020f3e6c89e46b8586b4a347", - "0xa4327072fbcf33be1e57ee4bd5db4c079c5ec11694a25fa2fb30932f8a2a35a63183b24d3ded7f6c8a8d0ad111586dbf", - "0x9454f17aa8fbdd2b15dfa6600ad305936a37b205eb554c915adc43aceb4dff6b0d1414e61584d5b15265f2ec0c85abea", - "0x80eed3725282c83dde575620bc0d86e50412df5dac3b3556d1e3bd9e7ef6f56dab202f4dfe4ce542babd49c1fa7dea5a", - "0xb90d1a07ff760daa23b7408b067c322f126023389beb7bf373f0c68b85ba0ea8a2c03e77e6d3339a01ed3ff8ba51f1f6", - "0x92789ad894995ba07f36a0814fc3289810136f9dbc6c70c57ea80db464772d760b57d5b059d4ed458f256af7603fa2c3", - "0x96a4ae1ca46d3b26029767e02fcf2f623d32c952712badf2a2af721226473f4875c40d5b14e66bf961a5a56aaced3aeb", - "0x8c5073f4846df9a0e057f52fdefe01a9b8c9ace91ef5ac253e823e165ae698e733eb936ad9cb04d2c54cd8570f328c4e", - "0xa9f36450b5ca66a20e52bc196620852a41f1f40262a2e12c278818b6071e6972c3cc6fdf83a9ccf586db6cc177173cae", - "0x8f101df23aa7e353ac1034c38adab8f20b8753aacabd10d70acb41d0fd0b1f34277546b30f64d0a861f448f112e38acf", - "0xb45b0779ef1ffbfa86d7e02e89bba0316c5ce60742b350296eff0d04246f1c8b1bf5bff68bc97792c85f1e5d4dcabacf", - "0xb7e89d015f6c7122a2f35f1c48b43eb0076ac4269158d52e38bf2a11de11cf2928175f717ee5c1bf543ea38945658558", - "0xade2a57ebd7600929dcdacc290168443437bc288371ef40580df515012350f3453b09aad8ae9e64bbc3fe6a3456f2c31", - "0x91c2f8de02bd8dfed1eeebc40a422d444e3459f9c33476b55de3e950d2c38d8463c4edf4d4f95347b0599a48cb2d47e5", - "0x8f6e77d9ceec539e0407a8d75d4e855e376838c0f886b36615a9c7715bce56a8669586f6d7cef75812d84b8be91380bd", - "0x87637da91b051ad92081e682e289bb904c51d95ee1a6ae2b8956982093a7bb4f8a66d91874265dc32229f9db5bd51ba0", - "0x94691811eb74f2970a95e9a2d64435952145f1d0caa76040f9811c9ea1ed7327750d57d6e8dd63c6378f336421d11093", - "0x884cff4ebea1bb48c0d651bcf0a710ebccab9062c96364aa64aa1275e9364a4c261e40a4b9f7e1e135572681a5a7a965", - "0x93f21d4b6b53cdc1dd41cb1b80ff73c0f1620db41c35aeccc059128704e9d1d7da5fd3240e7d075a2503273e7525664c", - "0xb9afe0a9b64dc43fa78f607cdcfe337ac952fccfde41c2e88abe3a8dbb36a51b3445d724908e552ba74bf67ea2cab56d", - "0x910280ba145bcb6a99d89d1526f10632206d2ca9e1a8596e5d181dfa37e5f407e1264b9c71c39530caa59894c10b371b", - "0xa5f583c9fbed59f99cf5e21b9a734de6d5685b9c33931325dd4b581bcf5aa4764c2a250924e7b6f7931dc5278bd17152", - "0xa87267f2ad292572a1cfc89308c96aec0d12e5f0fc2b4135ff8df7cf83bb1e71d619906d415db5841bbbeb173868ca82", - "0x899d7ff8d7f8d0daf62ec8d28adbfe4e7856582a23e62dee175e3bb9461f38bf8e4f73dffe10654a046573896f6de690", - "0xa8f3601e6787e788d46a9d7592dd4bdd8ea8b5136e3c897d79ce560e9511f6236e67a85a35c59295428c1f9c019a0841", - "0xb180a16448f085227a6f3e363b0dbcab285bf419d438a13be2cac1ac9f97973ff6b8aee38294f70a8d72bb4ff474577f", - "0x869038341a2f68ba85f5b2de58d2d794584a3c00a76ad0dda5aec31d4e3ee433be20c197b40618f89f7c8f1692ea3cc9", - "0x8366f825dabdf4f7714c5d089443d0de315198e23fb93c3ed063c4b8fca0727b05665c04beca145dc4c02f333e300c18", - "0x93291da32b501cdfa3624b39f6e38ed982c75c1209cd85630cf83288204032c0a90f013f1dfb4dcedee7aaf0fd95566a", - "0x96c95a1e73016fecc3483fc94dfaceea376ac700fd4804b24e9eda7135048e521daf96f8f63d5a1439950a64296d8124", - "0x866429fba47fb691a4c39460031a7e614096abbca3073e9246babd23075e8e5f6051e424e47d860296ac8ac646f8a283", - "0xb817f3d9985cf9f9657fa800ebd36a9622566697ce68f91c509d9ad7df8146532e24ad85c07f399908f87d1206c7642c", - "0x8761c3755cf5440775fe00081f79dbf59829f8d400adf7448188b97f756ad35658295649294ac9626c2569ab21a5df86", - "0xaad65ace72ef89783507c9feb5555275d70a421a95f306b7613c894bc24e978be809410b519e9314ac56fdae0c71d326", - "0x8ed16ed07d0e989061db5087d50cebfcd6983fd54be5062e333bfb8f6f609bf1b7b840c91ffe4b66fd674eeae2dd1558", - "0xaf3919bbc0df42b1e2e8f62e931701f7c35cfefe3ac3f1985ddb70212476112e8a19d51c673da931777ffa28944306f2", - "0x99a364d8819b5ea0f6d900167b60063f40f9afcf291ded7adaa2d0e46f344751cb312df1c2113bad8d84a028f680b41b", - "0x8d970bad8f95ced0b0323f4b7b087efd0624ce21834b3c9ed435dc0a394cc2c7ce58f1741c1a64265c81654eeb6801ee", - "0xa5f96a4d794f6f844b38f9b82ee15c2441cce293b6b2ba26b25643165236db05ffa918ebbe20aa89ed2a8ffc8df393fa", - "0x8ca69e0006f6a72e5abcc32c3961aeeebb8c0a76d877fdd8a093467485c19662b75f2ad8c750acc9cc12c8fcbfbe9b0c", - "0xb5378b855f6ed3eec19546cc21c947dd12e98783164d95a95d3cac36c89a840bcb9f7c99b191fa7730ec28d57e7326dc", - "0x884e50d5e20bebca96dda539daeb0e15edaac7fc88bca254a7239f30aaec47a64f29b69fb2d90041b82f8ad8e3f13d3c", - "0xabcce1f6149037ac8d27497831acb867cd5e05f637b7579736ba5c384b8145f127c56b82b1876881b782b94a84d32d04", - "0x8747985d53fac369c4a23224d50bdc556c00f406e7ab3e38427aec317ae7c0feee5b48b9386c5764de883cf296ed1daa", - "0xa153c77887f271316d5a7185fe0d2bb7359cad86ba80b03434bee8f21b3a5e52263d28cb9d3d2e6d5b7443196e03cf80", - "0xa77b16b2b7b6e999144af6c919e0a74b9a6ff70de41a133f7f820befc1261bf261142717133dd4a99e168a5cca4791e5", - "0xb89beb83489db9fb62fa32d1a8ecb66fe9ed41d318820d13c3e07e1c97802dfd7b05d34652a478a1deb3b17b4243a499", - "0xa80200902da696d0d3974ab29676f0eb67d15166b173fd63b247a17cc49f56b6ffa28d9690841ed4865229248650601f", - "0x8210103eccfd1f4be55e33991a831c50260bbabc1f311564fc1c52c3b2755d3e4a11ad69cd95e398dffdb9a0f5b77df0", - "0x9958745d00d8f29d05d97875746d863007b1c05d3ae920794e6c65adb47ec208734fdaed1b49982c4f4cdd1d3043c369", - "0x94a4f28dc7a9d2dd01ebc2f3ed11a5bb01a2095e7c772d2753c022d991da7b2e4c80c2170209bcc4771d68ef8cf007c0", - "0xa6b5c5543ae3de57e074fac82221590a8d771e93e22fffc2029b44e8a1c2c8c9cb0362416de54d00fd5420e5b1375eb3", - "0x875e801265871509c71dce38005ad6423fd027206e6ab4c58d2978ab4812d5720401c1310b56ce9ecd95241a17ce0e7a", - "0xb6819bc6497ed57feb41bd82f56216b513085b6d1a560a958adcc06a6da304424ee34ab2580604b0e59f6b0091ffe6ad", - "0x93bef0806f21f8bac88a5d6e2e6d1adda06f9daad5cc3c8de61162495d8fcc3889b767a3e2f3380f162166ce40a0ce80", - "0xa1f699cd7446cdb1321a05f970bc70cc98593aaf0145a0d097e60e5897aa311b00d019e09cd533d0c0b7cc5c00a753e5", - "0x89ae140ad75a83db2903a93a3711be90986d08dcfe962aec5ea4ee69656026dce77821993c1defc4464442bfe7d44734", - "0xa4110c80ba92f545a1a7545cbeef997d6c0242fd4d771977192269d626b35c88c361df53bb36dfa8ea7e40da68e45f81", - "0x906786f38eb7e98c431fa2464048ac3f1f1df8f908a25262978327224bc82168f564b2f3e6da77f49457ce49c1a72c2b", - "0xb28d92b3228547f03a3f489e09070ad9a1e20a73e49f7ada96ce41c19cd6416ad809b3a3a01f141b3698e85c641d795d", - "0xa25b9df9b377baafc8c735a772e0ed9ac007c0b6ebac2cc0f8f2e799e5e6038a616968c9896cea862e99b1750224ffe7", - "0x8085eaabc79a2faf1ed0b9fdd017fba1e46c671c6d8ed78fb089494f792765b0617f790016d8f55697dd0f45d17de4b1", - "0xa0e81b557af74efb95cf94054264d30396121312c643052070ab53eac8e75075f1fd0b384cdf1d96bd39cc98681b2d92", - "0xb8e0ffc7548969ae28beaa9d8bd65872840a03150e2140dd799d9924249f92d962a0089171bf4b311520ab527198668f", - "0xa6188827a500b99af6eb91094a0e464e394c8c0a6d80cfcc5d8be89e8810732a03ca75b2befd00d07d1dfbe7dbe89be5", - "0xa4e5a47c656e74107e6007199b940d8381f706d5bb4226a0b2fb13eda725a556530b8d4876dc49c5f9631dc6bfcc4c9f", - "0x90330a50442db9a9c459e06d42cf7a69e009332976c3950ae7d9981d99066fd2af22f22ac429850b998f1ec929c82bfd", - "0x89dcc51fb717212b2dcbd0fa0da189e194b4ad5bf7f43ab2cc2c96f11c186d0872bd930aeaae01661ce2dd9f94eefce9", - "0xadee914ece15575cc34ab485f2dbdf3979406ce7cd8cd82197f156f373beee6d80e5e3623d79a2fef14b0b4ed1678a51", - "0x87e97e8866002364bbe9b49c5f2b5eb729c7018ec61dff7b8bcee1c1ea349e5e04a3f3781617d46d8fe0e62afe55d62b", - "0xb6b7bd0bc652a0bf79aeeea1767f0f17dd543b9de582531bb3e14ba2bfe1b720a6c6b613cfc295372eab9202f5e2d340", - "0xa6f9cd96d8e422d9897d50bf36288bf4c09d28cb0f5c4e13ef7f76cef6c75bb594d0ca954ff7339590cdece16414fdba", - "0xb9bc319dc5e55630d1ee8cb48978a256b69c96aaabb5269bed8c5366add03a2c38da11cb03a44e150a5c7f34bb49bcd5", - "0x868c36924f0056b3464bff8831543a280ced62be748d60f82ac860c32025c4589e9354984e1cedf24678374c959383a8", - "0xa6244602362c09b382926dabae5793ca4fc50600193c69e645fe229a471f7cf9e58c4a59124d6d2dabaecf50f1e1fd1d", - "0xb42df58ee9e20fce589837d5ed8a938eb83a00c6ffe2f6afc973f6ce26559b8d220976ea1fc18ffbafe739c92dda6618", - "0x90c0b2ed8ed7cd6f6ff812c84ed297b3231f6e2106f2df6d5e4b4bbf5378231025582cf39f35dc9344d9fad3adf04685", - "0xa968386bf1221425cee0d0b926689426fd77e8e8bca5ad3bd07298fbbeef4fc676e0cf7a4f29cf981c682a78a54a2d1e", - "0xa3a46bb7db36e0294b509036a40875850ea5ce4e8853cc0a7d85e8455fc2bd7d5b593879408ef2f3b2b2bfa44aca2276", - "0xaf825963207f046b23534896086a3e56247d752982417047f850bf306d0cce285b537508747afc700dff6472fe3b5569", - "0x8022af88981249b5da08ccc19e4ffbc35feb2cb5308b34064de4d5bfc8ff2b933363988c833ec70723e3b5107f8fbd67", - "0x89687fe6e424c7f0d2751e5f7838e9a3fca4c0bca043806fe511442bbf41cb67d01165ecb662b1ece1b2adede5a9537e", - "0x99c925763420fdac4149a02131831449c1df8be4867a6d2d09e6b14abb821d46bc1fc4fc9aacfa4e9de1a93f9b56fbcc", - "0xb819ee6a0724de9c944ce2ca51ffd3f1d93c77ff25e39de8be2a612abe732dddbf2219e839686a4373609a560041291f", - "0xb5eabf12513e91139025f1236c7ec235368eb8586522dce04d370acd3d854c1e6676d92014b60ea3e4e21e9d6f063f2a", - "0xb82e94f1013db6cc682032c7760aca2a1082826d280801aad9c6564704362e61a61cb52c6f35f769bd8ca191e68e0b0a", - "0x95dcb02a676b17f20b75632c7a9060f990e44b0c1fba84ec8e633554f875ebcf6e54caeb9816267e84a11808d68728af", - "0xb0c7c401dcc019d2108eab7e87d6494e06399f6eb4fd95b8ff9ba4a56e549a3d3a4aff13771229f4c456283fc3cbc53c", - "0xb1a8e3e500e3ed74bacf91a82b39f2b870963dec0b98b7d5ccefa3212fc9f3ef923101887572e14d08145aaafa8da5ba", - "0xb2caf72c47870ce9f0524c4b3df6ab3eb3695765c010a27c0f3cda0ee1c1f5bee64e5392ef8b3f0f11e66bd8c9d4630d", - "0xa8fb4864bce5f1c48d681eb37efe7d9ed1a83ed36bdc1f2627539b92c90e100d4dd64ab664e404b0eb7b645a8f95642e", - "0xa1b6164a4f0467444fd56a1f4668c8d1f295f6e6f5191355dcfd004c34153317202823d72162b621f677c970a3f0bfd0", - "0xb2cc59a2f6f3b7e18064720f93b28801fb684d98ee808ec5c04a5235dc40372aa0e0521410d8f736161470443bd97ed7", - "0xb5d9a823649c09151b214406189d75d7f1ca150cc7431d79b7d60348b6d7405014a44bb7840e35f9c0a634b4c6785561", - "0xaf6b8229fe035cbd6a5da3a3aad93e7ca5ed233dea5fe4477dce46ed17bac9243ebf25a8439ac2896c41baa671c0fdfc", - "0xb42d9023551d999d2be3ee51f6ca82c3b2d41fce51e1dab52095af6d4b59edcad70a1f9b1e71eddff894e3fe35a1f11c", - "0xb868543c09fa9b9b990b276ddc5b68a2415965d3de71b9ac538c26a6333543a7c33d0b432f57756ac0077d0021878944", - "0x846577a8c877461a58a94c5829f2ed9d7ed107fa63a48ee77a1ef1f1d1f940b2605fc742cb5ef849e3cbfc86942488fc", - "0x967ca22cc8c21382b15d73b4dd4f6f0a0bdb2056c21e3c75eb3d9c13dd41336672ceca03065d8cd1062389afa4726974", - "0x8e0b872d766c439f3f868f18ef0c173896eac883783dcc58917f76d5a2e8c291967a032d254450fa7f9a12fa7d7a4cf9", - "0xa0236eb36a4ce3b7d649ff02de9279d364ecd5059932328230314ecdce3278c42cb836f547bb9da9de0fc96cda2fbc7c", - "0x92eac5a5a88648e6d821d3bb51b280fc106f751d85a1742a6a1ceed071eaaa215a0a0238492ddbefbdcdf2e38e4149fc", - "0x88e1036f9b20a2c4b3534175c93d59c1ade3fa6652a4c5c490f21f6c3340769c7f8147d53a92fbfd84c23d7c4295cdd2", - "0x8b094165ad429a339f12696bc8967ca89ec47a4778f387e42e273a1863a38199dd795d120d198d3cbd93203604c6914c", - "0x8f8013229eb6bc6a8f93c17d3b4a1b206c258f14091c6dc39cb1ec492d403cdf5f696070ef5a6c0ab9ed4ec141b08d73", - "0x81c7ad27bd7a48b444b2be3d4b5d4845743d6ac4857b061e659d7ed48ebacdeac29cabd0cd163f3fe6c5cc28753148cc", - "0x91c8a92749183e3e6f3499d3b0e9b080109d5e88ce8acb03b35f3d04591e13b4c489ae323a149def1edaaf62f93bbbe4", - "0xa6a2d69f012d877460c33095924771065fdcdddc30670ea84576b72dd3f7769f90d1735f8914b6841c7d938a2046ff4d", - "0xa8ad4b976a5e4477a97d48a3cfcce16b358fd3dc1ed1df301fad6d6f0e188782c518796faf1465e52312b47bd713e2d4", - "0xafa2bab9363187473a85f7020106b176903bc3a3e3df1f4938feed5145b79b66db8aa608cdda554166ec47e60fb34b95", - "0xaf691bf473160cfb84ea517702f3c01daa6155f31393d807c897b39523448c5af09be581ad713c76aba194f90895cd9e", - "0xb74f3cbc198c9e4b2c7316fffd57fc749e367b7d1cf81b3f5311d266c9a3ab9598075ffb9230dceee230d5f1bbe3f796", - "0x8c28d21c49a15299f7ff3eff7568b8450e6404a168554b8965a291c03fdbbd3dae9ea6b9760869cb1f2e8c7206183195", - "0xa496a0df4e79827cf3bec117b92b5b248dfe129d783841935363362aee4822399974e6c03a92797b3ecde80b207fd7c0", - "0xb39fa07fc8f4be41588ff5560ed68a33c3020bceaf172fd11e0c1288ea885c6dcfb56a151e4773e57d864dce06fdbea0", - "0x990cd050ab056ea447c114217219d9c0c7526803f63952e22ae60a3996608bfa3c6119a56befc597592761e3a90ef448", - "0xb6f02dff3dc330daf82d1edbd4e6964d2e9c38481e74cde8d9d85a9e602ed22c4fe6c9b6f41ec76582f0a4e4414bf300", - "0x84440e4a7146ec2f34e8099e85c09b8d7bf505a15638aa34cd2b42a20f1f335cbc9f0e4fdaf2e53fa0ebb2dcb00519e7", - "0xaf389aed116fe58580810fc474eb15518dcd9746f04a7efd2de44c9774824db79f8ce4c4fa108e7396e1fc016132a402", - "0xb202985e01c62d0de1f6807fe600a3b81fd11f30f5aa033b1e7baf7a62f34fa5342d42ad6a6e309560e3e9ebc662920c", - "0x8a07641140db9701c676b2c094c24cd663a5a34d3534fd4f5f1e38ca0c46772d141679730b5d0cd71d056c257d9a125c", - "0x99dc01e76174370a741e8e9ef5654a3a7769a010da85de41dd315b674ba8786e6a697b74a79ea782a1fcf74a48e51775", - "0x93fc897841609670a1eb88d4e4498c54e286e25238309fc95389b16e4edfb82b8ee8447a436893c7180827a996b9a0f7", - "0x8e2dd561acc8954a53635c0108ff964774fe98d12b28a0c6ea8b5ec5ea3523a45b81ec642c1453e3b2a1c0e0749562be", - "0xa95b0b7f9e53720f4b0394bb6ae8222aa5be00a2050f59ccb595d50e0dd9100e397af9ea77b0335be02d1713c361357c", - "0x8e21dcb67da3eaff5b950f989939237e3735a31e346e1bec8e6ca11edff5223e33c1c6f2f79da975de2fd86dea286e1c", - "0xac02cadeba36143767bdb8cd4e1caf8cb287296b53955f33ed07f771a1fea521fd64b7e153c90d5e270c12ab959cfd24", - "0xaf95bca4016b2ddbca61c9c854cf999ed59ab4b5d619dd55460f20cde5ecc86081a2586a7eb37f15c20280dd06b65809", - "0xb7d7c81261e8c6a8983442e1e801f5072bbada1eb2e49b8e90759dcad653c52c0afdff9cbec41bf21cfe832e49ef8db8", - "0x97fe8c6d071dc80355bf2a74c15ecb16c59bc042eff323e999f4fdc39e1209803d32622c642ad25673c84761f0d357bf", - "0xb37da716119c00a0955a7fee59b93185a6e325bc5cb2a7fb35681fca0688d0ad2d25a0e40dfdbec1a11deadb1cc69d47", - "0xafb8091548179fd2a17d95ca47909d97866e4fe54099736e6414682ad083fce300e0a20dfe3a017c1ee4ee7d271bc470", - "0x9306ba1f3f2f74964dfcbcf9b87bafa44b5e013853c46cb501e10409f3c2af7269aa17c8cab261fe82e52a188ce0d18a", - "0x82430e3c25970411f40aa72ef1cda5b2b51bbc7e243a1b4951e92cb56a2f5b200a039f5554d0d1bb44330d89d1ef8840", - "0xaabfccb8f3dfbd4012b9d196448e83f17bd1ddb8c857dbf98e80ffc60c1af3493ac5c70e3a2f1f26352b1ead143dee87", - "0x832cd6dc83380d068c068d815ad0f4677de0ef602890835b8d32b73223490a6f753092d651968cb3d798cbf2a227960d", - "0x80e3e7f0c46fe5d962322f3fb2535de40dc078db80e7ef57923d46b742a8e4d6dd35ef74234f2b1637a317364d57abbf", - "0x9306bcc29d6f8a478ec085b144161850afa29d282cec756d0d3fcce6f4860f4a4b8c8a5952cce54ea893cf84abd6c4fb", - "0x9234c03bebfe6b47aedc7c5452058ca6a8def3c368bdbc9019ef121ad44171d6b31d9bda9c82300b5b396187324684ec", - "0xabc2ec6016ee252f5693558b694eeeddeabf4579b7e03d37504c26ecc29263e455ce8f0158fbfc54135600b72dc54315", - "0xb46fe7b51df64cf46888a810365f891d43db5b34ac4d3505f0692603adef04b1d08eadb3e31d039817e7b89bf0789802", - "0x988e0dd101bba7d7e4094cde99eeeb6d4411341e684fc06ae78d163d30c4b585375a868eda7ba1e5495ee7f0a7d509e1", - "0x94d3033ee1926aef656b31192653d3da96d5c533ac2436d68fcbaebf827475778689ecf14fc53042a523e4652fb9d713", - "0x993b598555bd2a35e9a03f99950d09f55a48ba63f9e0e65802ecb95602d045001f82f25c3bb60221adcb8ab4e2709ba1", - "0xa0acd921ea7db9870716acb595c65a934a5a06a07c6e54cd26efc86c97eadaae1522a4a26c8f93b7b7cbc4746ecfc21d", - "0x8dbd8f492764bee920e0224dbe39d650be6732b56976a5e1b636b2e7371c1509431175b66c6ca879ba8f915f9df8fa36", - "0xa01b24c1e3aa044cd2598032950755763345534f95f6f71d50565d25cbbbdf9c42e35253e35b683f6c3156f5c998ca4d", - "0xb895522dee1ec9c5289e6fec652093519cbbdca7a2936fd1df3ef956eb404f1a24272c9ae6ce58eceeceff36d76d34d5", - "0xb91cea120e200858457a64a60aa876f167b1b88c1dacd9988700b9f0f0d1bd1dfdd8dab56c2e7197a174b7b8bb8422e0", - "0x8406767e4f7cee2e12431b093ce82f633ffc76b451ac8414716fc74fbadff30c52a22869607d5de465d0f4df8a740343", - "0xa2cf431d18b2fa526291c7027d59b18cbd73a9b48d68cfd6e4b745d27774941af809edba06c8534b1864045d6fc1bc20", - "0xab3fe23aa8c45ab2efb2ca0c593c8644d3f47f748c2f753626289b0b9c761add755e3b52521ef37fd609429b2f8770ff", - "0xaf4530dfc5b3f37888900d9fd08554bef4e47c4c09a8c82bb48c4b9c6c9089465f98762d81ba4272b6861121b65f3c5d", - "0x80f61d086511b9b8b2033921336a68adde99cd25fac71d8f8fd0e476dd30cdfba49363784f0d0578c1f648f93ae23f8f", - "0x82ca682cc254952330d1be8c0e53da24aa943ffe0209b00bbf046e1e4f9425886a01d6582e2853137a9c256316e6f737", - "0xad1d508d2ea2806c351d5bd1098c46ae7ef83f4e49e4e87f83fa2c63f715ec56109996284a541c2005693687b4813623", - "0x9061817ee94bd2895064f4af04777b499a1fedd9688ed64bdba848202c3cf9286b699c92400ed456db926ee23a34f90a", - "0xa8bda55cf6f3f9edb78b43a52b7fe76e5cc2cde21e08487ea597cc266e54700ddcea1a287ec6d8f16b738b67caa27152", - "0xb605576e55d1fa4fd9d7fac2ce549dfe23fd6ade41fa859bf809baa3f1497d078cab06a257ccfd6cd59f67f17eb22f5f", - "0xa92d22ff5b5ec6dbb1d57db1b740521e82b4bef84dec3e130cab63d0641c3a8fec1f6f86141fb1918dc0f3fcfcbd8cb6", - "0xa0165df8dfd7b3cb58883768471cf485b886ece529d5bb78b26acf9ef6c44314cf9f34914233c93b10b1918533dcb8c7", - "0x88b79c9c721c1936fdbe22d68459d1033fdc986d3e52f39341ab06cc85a3f230ecf0965ee8d2dd54496981fd08a02657", - "0x939b77fcd53a523240bee730c2d7b8dae0b32bc3dbbd31428c7b5fdb4c3d34afe7f2a377b2918497574606bc06cac750", - "0xabbf82d0156439761b36a913b661e3d452dfa57e443ddb61613f80e110acf52765139fe3d1dd59c9e7773b262140cb90", - "0xaba28324844cd19b2d5d07a87e6f3180a3c02c7326bca846c1e7a7c131c7ddbefeabbd6787b4e1e910449f3cd1249ed6", - "0xab2f71af8596c10351f7ce9c3a9bec08a5c7837cee92a7400826284752c98531a0199e2a7f9ba7ccccc8fa0a2207aa43", - "0xa71d5a4f8af3a16ec9c3c110ca2135c68103109d4384a299cb7ed09d96231c90b04ce34ce12de02a40924d84947f7f31", - "0xb9dd79bf3286ea08c9b779910c84fdd02a33dbff7adc2d6612cd58e81aaff3f64ba021f875ea9e1201243ce353510350", - "0x9838fce2f70e7c47dca7239883229c1573ea97d469f120e4af659b18bca31cb68d12220fbd6e4e9e952b28eb29c1e5ee", - "0x8dd341e67e4c567a4ea95252854cfff8a7631c228ac852b33b2ea9211b2a6c606e4b0db28afec61a1a55e6b5f0a6604f", - "0xae9b02d60441859e3e6f3866a9bab8895f0cd6168f8e84dda7c9b1cd7917f1c454f10aff9a8de39909e36576bc0b4828", - "0x89fba7834469a06cb0da39c39a288245e577fd956c241707c432c2590e18e956e8ea3f67e4bee5a5562377617af53334", - "0xb7ab26d79ee65eb9612e54f41f75e22abd83db45010e1a94ce5026a24675bdf670e806c71f0964a33d6ed277d464732b", - "0x8a25bae10ef86d7e91a7d686965d17fe16ed635d787d4d6ca337b10ea32082938f4354620a72b5aa43ae62c7a0e751b9", - "0xb18fd9213bf3b2d7d191266c7bc1c31f683fc7da7dc5ddb4c600e1ebf5fa80a399af9e31b4ae747581a07ccb736b4b32", - "0x9968346d8a867eb57f628e2ba00f69e9d6aa8e713377a69413323b1b9b26218f527c0e719dcc1027daf10c3392f59733", - "0x831ee266686776eae4e3de1f2bc37761a5e1b918d4bf0bbeeb20b490902ae97722bcb1c98c485407491f248eecb841fd", - "0xb0e949d7c50b852055f38f3542a974bbfe7a33409d67c557d70c1204f87265bd7478e1751251792435fa22097d1762e4", - "0x8b0bee83715e20f2ef832347c926249b5b168e4ad87b2e5a9149ea4e07513e4790f60b1769ddd1816d7126a0f6fdbac3", - "0x84edc35061dbe8f3de90c2f9ace94be5ab4170b66c42583a0643ff776256217bbc6fa31612e68bfb9ab678f8e8e49457", - "0xafb4ca7a4781dd31a7d81ba8a739eb65c43f3374e76b4ffeb2c7048b055f837e6853b14ed2d3224a40dea35799f0e4a4", - "0x9945fd5ecdda5ac952785310e87917126917fd4f504fc5565c236db9b96f9666934766f46a1989c1aa176e543c6e33af", - "0xa6d4466b53c48d7facb9cc33ced1bec98897e545b10586857e896d35c850f2cdda65e19bb934a8c74f6def805b1df4f2", - "0x81e3fe4330948c279d99a8a1a4e4e141a039b3ccb7287aaba6f9041c3a8a41db1a4763fe04a36bdadd3d3295becb9d41", - "0xb6be2ef16b60a78b17991d27463e401eca731129843021e302830c2fd665726547240ec3a3240586b01a05ca8206dba1", - "0xb9d7fe5671b220a3da83bfccdc16c0b6f5e9e5c87810db14f070dfee582fa190a360c62acff13cd877c818d705a8a872", - "0x86867f22bf6b859e7f0ae7724a1174a65c4902cdcf74bdb22415875d72b67f49c62ea8bf9ed0d6883ab76512ebb951f1", - "0xab728a8167b9e82d608d4939a0712f82843f624d08d4013dfd3de41bc526e9d495cbfd40c443f67ac59dc4b5f30ff217", - "0xa5c4d10a04452c1ad12c18ce8ed7eadea1f3cdb34fa5ce0cbd804f5dd92eae2551b771523e711e8037770cb66d1951e4", - "0x8808f69b975f363bc08f8578729a6e68445138dada78d5818d33fb83a7af6cc6e7030f7b76286829861a4534e0b30248", - "0xa280773d32e1ce3544d3ba5025896d21e358592504737de72ae76d164009fdad05c8a1e5e1f8658ca6374b347d47c29b", - "0xace91a3971be87b1ca8e737802918d86375088e74380c444751c65978afba2b017cbd8fdcd3f9a0c19c0782b0034a589", - "0xb5445d816d65ea36c9bc6a3d5ec44ce6b76dcc18343d7084567dcf2603d2af93fa8469a1c493e19f1853c96f89621fce", - "0xa238867fce5b09e8695240f936a3f3cb12a715511b7516de995543b2e15aed8860a12754ac8d1c5ca2364e4471a9c5ac", - "0x9467528341f5b93b89c7f37c5dac8bafd0af620230a9f7de3e809f01cf73b8ddf70c38c5023a631a1978ac05ca35c318", - "0x8e5f1c3c411f0939ce4b6a5ced42172fc5c3774f596a114e7c5c8ba433c4efd94ca84affc0bfa89a1c5ace5090276a43", - "0xa6351818f7553d446cbe8d3a318841b0607d1f1890ebf9c6220a092bad3ece9ef8acad4d17935e437377af8f9309606e", - "0x86630d0fb2bc104d8cf840b0e545c0c149c1a8e4dd6d460dd15a52a5935c8ea5c934ef099653d783894a6d1f68414a84", - "0xb357b5d9cc645b645fbce2020db583cdb68772751d6d11d635f1e3ecf995a55bc374be7750b6e8bd4968a55600ca9806", - "0xa9b659b8cacb73a81093eeec42dd7f4fc5d955f9fc543037f31bbcf456af6476f303aaf0ef960a2df88365c2704bb61a", - "0x8b6ff5201c15cffe64bdeb818422fa10dc503ef2a6a4d686364afd0f35b6473e4463719173550d234639f6077e19542d", - "0x98efe45bca5ac679cadc25ad0bdb1f8deffba13d2d7eb14c6149d5addfac06b82fbba6d24b323d615eeee1465b3cc30d", - "0x8c2329c976d78f1d5e30ac34a3fab1f96436947d85f0dd190301a1868e5dcbe4ce60f48fdeffc3e6a05ee34a461d7dd9", - "0xaec012ad25d99ce014101d7da512fe032673399526435f6e1faca4b63759e8f6694a46ad01672da9eaaa4634f61ce89b", - "0xb8d52e530c942c3c7a67bbd0366f4cfdc6a1a075471878516b7a2258aa073eba50a113cf433879a0e15462e82087d17b", - "0xb40c5ce16f94837c86e81d98e2130a9e1dd229da5aea52e79cb42217d3b5908a53d76782cbe3934fa8769db58b00dee8", - "0x877300304eb69720f7cfb4f907b4a7e238920fda129a38516dffcbdaae2e46633d31080590d6df05756781224d532fe8", - "0x973632dc791a5214516c3e59b2b48169470678b7dab66d513e35a0fd1df86b992e27ffe6050a5233af20b5d4998d283c", - "0xa8ae0e723a8ea6e95d721337465a388b60b92b1d9b1deb0b9f59ea30842de356184fd55d9b8331d8a29ef473c1ac2315", - "0x92ed6cca30f76135c4b7e7893c3460501e92592f7d2d6409c1e1d80074120243a5b9ec14d801991204f5ec4f94ff1daa", - "0xa9f575b8518dacdbc5cae766389ab2ec01c876038414b7796f640f633367a5281cb49b48b5e80f6416a33b401c21309a", - "0xb9793588283cfdd47cc4547cecfd987f9f8f92c2b408725f39c1d879199d695e87675fa7e5a190ab3bbc97683a0b9587", - "0x8329a844dd67dfd48546791c4330af65501baf9524ecf8ed4fec9ea87067d0afbd33099052c1c2df819ca1afcf25dfc6", - "0xb908eba1b40edc300b63ff6e20e87b17e6dfe975c37ca63c92e8866968070a2c07204264646bbc9318145fcb90c23555", - "0x8123871ed78f46e9eff4fc7af9f490594fd7c20fb814e505481ac5c7bc7588c1706a79b14b85d29bd7b97d7c82b2ae79", - "0x833ed8928f154fe0a88ae98e5d8c74f816e3ad679c1c4ac1322604093e85ed4b9b9c4361ac188f0da5443c72ee4bf3d4", - "0xb9fcbb8a422bd8d996e713d176b7e63edcc6d73b3d1fe3f2c4b59da637a168accb5fb4d227b709f979742cc0af8c0ea8", - "0xad3759a6a6bac3047935443347e3c63819905f6c01f58f0ba76aab422d723cee10c769663be9554473e668bffde1d500", - "0xa60c1909703211a93d7b5e8b8ec1cf4ca06ada653c27696a7dc9a2ff75cb712918888c6b61b8f792ce9b413aac09f48d", - "0x91f05985ff17f9ae20498185f6558f9f38b67966876dcc6981af4d179cd055661adc63155f4afa6167ad61b7038ac49f", - "0x95c5add9bab6b9792517772f9f8b21bf7cc325dfd13a43177b0bd982d0f620185d8596c2cba46a5e10aae597129870ce", - "0xac0b4b6e2b3e417166ad9b17de0b3ba775df6ad3a78ad13a1892c0992735ae54c06b1e6123b0c0bc90544441630c6a1b", - "0xb0135c25f74ae776c241faa6c91a3f7ed6138d19a2100928b7ede64b79e177d92c5cf921dcce3c614e32de34975fa6ca", - "0xb2215b560d5a36f045de7257098e9d75a40122919d4726990b4395eb2bf1ec789cd0c64c46b775f6a8be28f23958e17a", - "0x870dc7f7a513728f2b428a3c08b15a6af88a288824e790f41b1190fbe02b59dce2914a1339f7203cdb7f2f9c98d8d721", - "0x8e3895f03952cdab36f602418cd746bc0b6a07629eab0a20bbd8de6c993030c5287fc146fc45fe97a06c992e0a9ddf02", - "0xa4cea15ebc0dfad9feb3d18168fd33768e8ac69e263263ceffcdfa35e8638711c2971697b7d5b2aaa0fd8c5440f3e164", - "0x8cfaf5369781a59f4117283fd3f290b81816abd3124a9486ab1faf7018d36a73c1630efc4ad648ce462e541827d51975", - "0x82b420eb25736126ef18d91e91ca2ecaea8983b8091df88343e8e54ca5ea7a3da6918c97695cc0cd5c2df95afb1e3cb7", - "0xb3c13923a3d46d990aaa6a1eff3ad32f162ccc5186e16a549dc29ad4d63de6287cd05579452785cab32e2485636d568a", - "0xad8a43ad6195e08a36f755dd536842ec88a7d920bc302451c860444a3fdaf294e5b5dc5a122423474d322af5de8cd8a1", - "0xae40d1a90a77965366b5b5ce87d6fe86eb255cc3d127526930d128ef7763455adb82475ebfb7be31f9c512394f2a22fb", - "0x9763bb9459fd4c0de2534767bd99f98b859030b6af5739a7081d889d6875f5c23f0154c30d00b7240baf6450b4459987", - "0x94aace9e9318d79d3c7ab533baca31724bfec839b01187e326b1fdef846968b1b29882f2520a9e237dc41ada01bc3761", - "0xb6084f9e0051be76244ead401e8d2758717e93c4cdac58443261b3603cfee0eaec7d758b2e4357650d2c1f5391edf798", - "0x8c656a798fea470163e70869a13edd30d138bc148460d122a2275df8cb43f2b45a14e0d8a8a49eeb7c1afd02484b6ffe", - "0x8ec317e63df2881f49401eb2f6a82e261b07474006fc293bbb54e0fb7437697b16ec1d6ea101fcd56543bf4d69374cf4", - "0xb27d9b3b8c3cc59d08159c765d24fd4660bd0a54b2b7fa9fa00b47e6770e6e8d3ca353d305fd772c8171e20765c8a66c", - "0x863ca045abc38ceee09c4a21a3dd18f1c0f70c0289437957aaa39ff764760bc422b748bef8ef133ee28d88c46e6be1c3", - "0xb0de194caa68f5288dc365faf9e9ca3c69b0a8376cdb532cd6f1cc3478671a1e755d0e8afbde4e3a88440fd9cff4e8f6", - "0x8a259f48cf5a45773522f3c5f283a6c01a0febdae09f873e009e4635c57fe5060b01243b2e5e1c9d2ff7490f2dd3b334", - "0x8c4398e1e579778c88976ba12feaeac0c96fc97b4e26a133ae74fca1b9c315c1112ce3977d20fbe9ae5866ca6544fdcf", - "0xb54b25aeebf1917bb4981b43f39491918773bacce37e994b74f877d4a636f1b3f4a2f164b858f95259f285ca0c294f24", - "0xa9db33b15331e852da3693f6328bde30b8cdd79c9b9b63107cf78dedcf14da68446c462720b9ffa5a1bfdaa68f5d931e", - "0x9966b6bea54405df1dc4edfde9f8c3ed7c0733d5a73bcd8b349035744d5eabbad0d19801a678d48cec84c0335346af33", - "0xa3d0c32b5e3036c4a4b222c13f7db23924bc2b2f724bd908a38db3b8f9c95cf5034c4cda0c5083c0967d34061a216b57", - "0x92ca6b883b2b20015fbb56cac4c4b5ef22e555a9b75f4f020822fba9167eebff8f9fe5c729c574cfa5ac27bae1a83fdd", - "0xb72b58d6ddf54c2d37bdc1599ac966c54cb4926c8d2f70d1bd4cdc383c6eec5e4b87efc59466682f8db964d80a4b740a", - "0x89ba63ee57a1e6f13d7c66150a8d6721329b385eed92be3ea784eed89c76a1ea88595725612b109a9e4aae41d3f6c972", - "0x8727bb53bb62fb714e4e5de461c6cb298730641e38a0b49b3b3d4a29fa24167c7c6f4ff47f4f3b91e464a581a4181853", - "0x816699bc7c3ed65747d34786b7fca4e35e79907f459f2df0918669adee54a70c03580c4e7d2e410ceb45c71fcadd44e5", - "0x979688c14ce623dd17344e67373e5852bc1d3ea12d37f7b28095e5d578d8c9c646e4b97a3a69a97764ed0a88f62c99c7", - "0xb4539a9eb6578ed3b8dd54cbf57419e99b69c0ae1ca3ae3b4a21f204813b2a78438d6c72f86c13dfa06a0b9244b98688", - "0xa5d957181c30701fe6eabe3e65a53a33dc43df364c45f0c4d882ab88a069024bf04b71015f1c2fbf03f368e63bd82fe9", - "0xb9ce9a54d9b17d4da41ba3135d077c546cf39dc83230506a4ee88cfe39e76f7e35664ff1b571e231054cf1b764b9267f", - "0xae6bf2eec8046137016ba94442a7a0aaed0924ec1558885135fd339d2996aeff31ac29f1de07e84f7b7391fc5355f429", - "0x85c7c247766a4ca44278be81752f4170dcc069f76992b236b40e71e31e08f30de6a5ecaddc44debe4f94151cdd8d735f", - "0xa19d41fcac394b750248e575c300b9a96dfc5b3dca07ad6e1d68dd3f8ab94d10aaf8edf500e3fc7774e7ee52935f73ea", - "0xb3c959a22fddce5a2e199bc8724e825a6d9776455c033299b5cdc9a9d184be169d807829d5df5e747476d172b5701cca", - "0x916aa7bc58f34bb8f32808858cecd3e90ea26c3ec1f80a40e863ba18fe9af6e67c0b2664a2274eca6d36ed72e59a9341", - "0x864d945b7be551926f747406d72057c7a141110f5d269fb6657cf347cfad7178670dd294f6a98c19dc0943a68d7ed45f", - "0xb3480f8a42ba0e8eb020c2e1c1284a8a9102fa68b43f6eaf28e031621b9f68bc399899e35a1a283fb52530c8574484a3", - "0xa8cd1cb93974d1a6072ed51f356449ac19b04539517cde34bb7b2ba55949d213ee07d387ce7b5534175bd8a044556ff3", - "0x8e81fcc5fa5579f2479011caaa393f47a4e12828e2e82072736d85ba1bf70ffef9fe3b2c22fd11ce8eaeccdfa2579758", - "0x897f935b4542b9ccf8c0660c8fb1a570a8ba108fe8440e17e6c50e01affc2a8597b7f7cde5244c7026013b52c7331b5d", - "0xb9a20f612c74821da05f48d8bcfa7a4a550979e35b49d52031be8bc9cf717fff21db0142b633465c5edafc42b7c73c84", - "0xb88caeb2157d636fe26d3b221143443940427e8722596746bc337679e10ae6e5a9b33c456ac271f8b01db2f5d1b00a62", - "0xb23bbd978725aae647ca2778e801235f605dde17897d4d56914b0d2241eb31f930028904a6555581ad5b2b74ec3c9587", - "0x97a331ffcd02eda1d6e0e15deb110ad6106d3159ea641cfbf424d2e3065bf65c9b14f72a27ff3f576dc51eb068bfb22f", - "0xa9317840cd8f437ea97d80a3f445a99eef463a5e2beba3c986da8fa67def4ae9a0e8d1a675a35e5616ee90986366bb70", - "0x8c26dd7451b12c65351d5ede6a00ac7b9316f9e28be8c692d20709c3b4a5dbc76fb914667a2f1e9a654f8d2850b7dc3a", - "0x8bf4aa18a988f82dfc54668bd4ad5161f276e31567c949b7857cec331c74c6b68849afe852892816c802736cf7c547c4", - "0x836fd166bb9689520cefd6f23905e4c1260f97167b17534930923107fe934d4afb1216e4b89679a564433dc952a77b0c", - "0x94d6a5a4a11f41887eb814acf9b5a031d013d614621642384504eb78e65b6a07c50326632af47b408d8ccf43faf8399a", - "0xa213812713128750bbc5311dc317992bfb5124fa067072891f452880183d64d6fdfac8825552cb809178a3f3a641c9b5", - "0x976d1290308868c5e41dd3766447b29ab8c3b72047a0b7de85d3ee5b1e13d522147a02572cc0d1ed8976d411faff5b9a", - "0x82a4494a95738ebe56578e1e4c0e486eea66d5cc44141f478bfc5a6b3ebbae6f32063725284df81b438603aa564a2b6e", - "0x8a6f4dee79baf71a4a40843437c16b2f304785f3e56b32d9ab2474666fce2c7749c776bd898a65f4a4d542a497cb6d6d", - "0xa04a3484be07c2d60f1a90f9dd8d4170270a808cfdb863864377c2515dd71c152920b65fcd5f47004d27d14d7ee7eaf2", - "0xa984f6633ce3d42c75083ef7732e5d0ea15d91e73cf893be3ebac5e56defb8db97088c5cb3acb661e26bbb354ad91ce8", - "0xa5ab5b4b0dab86706d68c9ad921d4917215c4fbcadc8adacef7309c0c853bc3c2ea34b3868d8f03cda6f504793832594", - "0x88f03e55eb028353b70352dbe91f298ade322951ca115972f1207744254fdd01ccf899aa40ca747da8812dda5bd5f985", - "0xa4bab627f7de273f8085169cf05413bc368c5d9e5f58bf10995a8bbd95e511b1ce15d008405728ae8e8a83621efb56f1", - "0x8ed518d0f225b90fe7f01b0fe4c451589390325044f0d18a8c47bf13e24eae8627feb0c9e9514397536f73f33f67a044", - "0x97c73837e77d965f401b4e4f089ef4de7aed1126bef6be4e9002b2b68014b98997213e492f7aabfd2e47cd0917a11d6a", - "0xa99e8a55ed0385bd279e11a80255b375f2d59bf8b0879bf2337ab5e3be450a2ec05d1bd8867a633e359a02cece4dc1e4", - "0x82a74b5efaf3c217ee2bb56c9b8e76b3eedfc553c73177e59d982f503a5b0572b5cc0d1292820823307eec956c42b28d", - "0x9800ad3e10e8a19d65d5963673c183bd536b65e14ec18dca45e881ff3bc74eac32bef2ef845515ac4fd6caf558a6926b", - "0xa2933c78a67cb40489ffb8096c021ca017b99feda1f9c5d702227d7f0a2ff66a539d68a47ad90ffdfb5c31c774946f87", - "0x947b29715258ca20da5b17a8e3d99665b7e599aa5bcdc5d2d7830a2e3cd78364d51a3d7c0d8bce48a1992b27d1ac4980", - "0x86f2e2d3e160d3ff979ca70c456785b4b2437eb64e58adcb78c4aebc96b470f1b8b999a3ce8ce20e3d3f030d163cd138", - "0x958f4435d35932a91eaad0dc476bfc2761a85f336ad2ca6fe0c6830fe54e8f417434616df9e6f07a9454a4403b00b64d", - "0x8b1755af961e0f9f59651d56b538ea59af489e859a1c93726cee62649da0e304093d62db9a2c5854c8da1be61bde990b", - "0xa5e11042f73f979c8649592f6cd01dafb319344e379a65aa9200d3b636abc569edf822c2bc12b3db5c30b9ee74f2c981", - "0x92ac5584de1adcd38a2ebe361225f224e9b498344521be519faff77f87c1f22fe8e112f9df7cf960b16e358efca0db08", - "0x81db84f05f75a218045d7d5fd4620648bd4a95cf468cbd69787011d615778ba7300b729163e7c8abd1a5b0ea66fffbf7", - "0xac2f522e9f030a7c576fbe19041f5db3913af58da75b87e8ad64b93bb34850a79b852804dc68ad5e7de66d90878544cb", - "0xade9763d1c7e9f68b5f817cdfeebf31bb3ec1391dad04576c55fbe4bb13cf0d45abced3d51b5512c73b2d0f403906340", - "0xa0b431bdd9641595fe1eb8d96ba4fe86a447a31ccf36cd2f7d94c5c86a7d96bbc95b204fcfe7c69c1385997b1daea3b1", - "0xb3b093bd8fbd84414609ec9a108507f97d7f77833b93b15439423d2a2928e40b192247c8471cdbc12891d83c765cc6e2", - "0x8531a5ce8e0c44e887ebf4beac65352c8a9673c51b6a1edc439e08bda1354d359e1ab2e27b82636c6dc0daa3aade931a", - "0xb22c2f3a77ae4813a75004dc2c9593cb2a51c430c559bc7d07d83e95592883b99fbd0f9ad24d2d80d86c871cfaad2721", - "0x8b6dc7d5b8cb6bf36352fb19e42aa37647505436e1442eb1f228b0804916d569643102b2282ef66bc9a4442520521dee", - "0xb29a811ab81dba820242a990dc774cd937cd299495cf721cd11971b9f1dd9441ac687dfff0e91656b9764963a56e4625", - "0x805b280e31664008fdd874bc38e870db271027da70fc2246fa82c499742a9a8de1152275e0be61f307dc8f7a918e270c", - "0x929f690538a500d238208930b55caa9c489bfd3476f6be2d385c36df3159dc3d8bdeb24a1ffd7b028ff4d881551e2888", - "0xa92bbf103ad851a41e5230e1e37ec7802e08f4610c0db9706806afc4a247679b9525f9a534c70d970a1acb47fec9bcdb", - "0xb9f2698a39d6d7aa8aca181fc5d95dec796ed6eec002557d4b63369bd90aa4438c27ab90da4f3ce81168cb42f7400070", - "0xb08703bc97292c56833d8e61105f1431c334f98a7946850c6175f37f703ff790d9a1522c0003f08dd111eeb083235073", - "0x9355141cfadf46f37afb73414c8803f9094b06952c9fccb24a1f8c18a13fa7b1197321b19cb832de3f83ebdf8deee53f", - "0xb7c23f7cd8e212108906b7809df90db58d2c2f3a8e1f775274181bd81c74fd7c2f8d68bc7d4aef639ff4e19f86243f98", - "0x92728e009fc3faa08e81c36c268b3ac18627da7618c96c97598b13242286645789c15c99518a07e658d92eb8d2b89c79", - "0x8fbe36d4f2f08cd6245e8999728884c636a264451e4ed894d2116375f3d9eafcaa72ee59cf7923ed8ddacb53cc478761", - "0xa6b2bffd6bf8f54231fabe46ab2c1d014ddaa797d08e5914f13988140bf804019fff3ad07ac2cb31283fc3e74e28d0fb", - "0x886387540b5a7acc8b2bd107124bd17d6515697e09c85c4e932a6421965c872f014d11d1ddf321651e4b3564eed4f252", - "0x8b81f3ebc962e9ecd13a11e919d86ce14dd89d373cffa158b807fc91555a4ec1d7164504fb67edd9599b10fac5e32aa5", - "0x91e3213ded5f82e34389408e95d4f7fcd0f50ecbdef9726a289238e4159c6d3cd2f401479a1f785865e91ca213d2f8b3", - "0x99154b88ca5462f62031300177e571708821348e1027cad4867eebe42a6fe92a58ee1dc21da9031002f1b051351b3785", - "0xb5c2b7cfd87f2f65df07b39f8a26dccb16946fef6b89268b9300c8529d730a1469ba565a480d7c5ae9df8600ac50e90d", - "0x87df32def37370bf8c4c3a22a670bf5605c78f240eccf8dba13bf19c8a3a9d0560f8899259c4e51c6b0fa64d7d1e4c76", - "0x980a20e5cd352786bffeca1b8a31930d8898eff9f4a6b2570829248410bbe1c78105b6a61cce7e3ed1642e5e2af127e9", - "0xb18b8dbb9eda5cf333ea29fad7734235ac9e7234b49fd04f178136b15d97595d5b415a92455a319ab594b81200cb17d5", - "0xb713a71be9bd22ef6a2747d0bc8f4d008cdf6182e287c1e0274689e915a68150d6083268188c1f4a7fc76d21a219ec85", - "0xb86ff129a981359972bb793a81fd422e0b37f89e76fea70da012fad160b9eb7b029ced81c7e34679f6897a45b4e8da4e", - "0xa74a4cb9707156e21caa20b95a2a4b4eae8f773cf679e2073fca2cd3b1e502ef06de8a3c010833d525a7f8bb6bd24601", - "0xb51f06da38a76c2728cd01f6073f402fc49cf4bc5c60113a2700b5bb0ca500e465e541c467013a2804bd7641604bd2d4", - "0x9855dd73307d8671b6f9ebcf676de3ab7e37e7ac1544447c7ff34a213da46123b57ce23bb0f381da8fdefbcbe6c35645", - "0x8fb382c63f4c935462d013a0d3e2321d72fb4781c10afe6e31ac51766832218a05addc6dbb1f644aa61b5da9bccfd5ae", - "0x855dcff23e0ebbaa3562fd27c43957cfb35d492837aa71f27cfd1bf65a59a12d2beded9d09f3ddb4f801aca8cc34d2af", - "0xb7e7b317f10cdd13bc879c2fb0bfcd137af23e0cb70917e48d53b2bcf8c157ed7e5f58cdb966383ece9d3a4c92012746", - "0x80d2f84c39422afcb449aa68b34fa9d72e9de79a473c3ea5897f6f3576d2bb6fa2d49f0b44aebe5e68b11e85e066e028", - "0xa35b083749f8a5551f0dcf529e845aee189cdcc6ba779f4e88765adc49cc4779cdc2290598908ccedd8dccfdce29d53f", - "0xa30c412f4bbc2de80fe5c577b4f94442255cb3061a40649b0ee5357977503c6fe54821ecc8cc92d5056b6977c4695e70", - "0xa2ed0d90ab612fa3526f7450a43d45a2d9e886f2e5888ccb8405adeb8ca3e41c6a94d18a54b3cb1eab5b8f3851841ebf", - "0x8d4dd3f8f8a3d69bb217d338e757c814eb69e6a776f55cf51fa7c1b2f1ce5f8e9bce8353dd335e793d68eef676cf7c36", - "0x880d1ca33d5d3bb47b788a7ec64b9130752610816facec99af53b6e58a7e414616e9c815b1bad870d426380085f6b5cd", - "0xa287578293da4354f2c3c46d637aa77b91526f9618799dec4bc602305ffd8336d373786eb67eef01dbaab88f07f292c6", - "0xa86d3fad257a64c84954a7530822346da0215ebf4ad9c583f35cdbe16a02fd70d58ab34c93681fbf55d6075db6425cbc", - "0xa7bd884d343a6bde5f6c2512d81ba701fae7afa6389389e4776eacc0698a54c3ab1a0e1652c1a7a23d3a1d2a63cde8c6", - "0x8e0653c8b7279d5c958ab1b53dd77b73fd30d9781630a870d0a75681d38cde4fb7c2183b9c5758596ac556578b43fef3", - "0xb76a00c6f5093e7b28703df85bf968dffb70c455c91e75cc81189598df052244f7549d18e45dc70d98d3d86e0094ab2a", - "0xb270f2ad3dbc8b43ee2603c4e641be76820f07a4757cfa96be2be9c310b7e39b574572103253594a51fa9243298cbd94", - "0x977b8b86841ab8be7d1d50da7369e2bf71f24360aab8448d7748d59e010ce81bfe79530ee6f6644b987fc0d83df3ed15", - "0x8e18bc59841b7d56f8d9eff8818eee06288cd6ca86200eee7b5e6b230070debaf254a2198b4cd7dfbda8a1d55a916c8f", - "0x8e7a328ada969ed6289972b7f43eb5958d23688603ee6d118b6ccd8978378dce2d733ff64c30519b19007a78340fafa9", - "0x98a0fea70a219292584c69546d6d242cebb2f1d84f69c5aa275a257a87de652e721078b983ed67410e3a5eb0cfbb2bdb", - "0xa09fbecfd05772a9989008281a9585accba3850831485802f042413da533b1c7ee45a8cc679804340bd9142b2f9e0069", - "0x99890a6b273a2787fcfdd8e8500134efd60df99410e8432664a3e5325e55e78942f4bb11024c90e4c3618a70729a277b", - "0xa5f3eb1617a77f2d5c76bbd1bc3546ad1628be90fafa9a8b62c605d04e599ab2eb74b25afe0e68fd020daf4868dadcfb", - "0x8b53517d93f42b833f7669c131dc67f14c3b0639c46d3b02bfdb24cc9e642133e0c665236a7ba851c100ca733d673341", - "0x849fd288217bdb154213e79abe1a78672903e15429e37f6846019986e1cc8dd2b3ed28e4cb52dee1762a4dddb9ca95de", - "0x954d839198c3dd2ea1ffddf98050e2c52ee81b89f38d967bd30c6863672e43bfc32e1030bb12f5aa424983bfa31dbf5b", - "0xb52fe86414a98d0896d7a427d57739da35cac4ee24be565956d15a5c1cf5b4b95e5425dd2607fb9f6d6024549b59a4ec", - "0x9586070415a6bf1e11304d2819330eda88e81a88b9347aa866692c163e1af772be9fb747d9281d7aabaf5c9934596934", - "0xa5b78e5bea362df26a89df682df61287763ca1b87ab9618609c99e52e6ba047fba7ec828c0552ee26279aa8a48751334", - "0xaabf36b9dd465ae03551dc82bed9cbf1d22a2236ded28964334f7ad474f317f4fb8515b853354bc06181fc9af82714a4", - "0x910f0b2efc608cae8cdd39df7a5ef9e570592b31df2331baa7721708057188ae96e1b43e2f2f2c8cb360b961d687b60f", - "0xa5c5b131205c21ca68d6103f8499279621da337a743e4a08547c3b4507d52d2d6e5014fa5d920b351a6f53a195687766", - "0xa6898dac2d8748b8bae155a7d8c169e7eded73cace1e382c4dae8633f19463151399c5cf877f8ba344a698a98228864e", - "0x92919d8be671b4f490efb49bae145f419c84a1e81d3ef78761fa326f67d749ff3530f5de04f984a018065f42e852e1e3", - "0x81083de978e025f0b5995550fa17915d02489344cabf8a79248352d78dd6e893d28a5c5204a65a8873756a34ee3c0120", - "0xa6de92ecef84d188cefe29a03b564b1e7bef2a6afd785b58897f7f97a958573a35aa0767bef12a49b352de30b4f0dc18", - "0x985cb3475c7a9f582c11784cf61a1988240d74e49084a4c0f55f3f6068c4da0b08b136f8fa62e9001e0a265bf65fa3d4", - "0x97e6d360b504991d51119a78c5b647f25d5fcc1298631209d82c2ca40ead0380835fe3cbf8b82148b0b01b8157e884e8", - "0xb313df44b2c47126b58064599a0dd6ea49e5ace9ffa663de03ad30c1e95301cc68eed67d37ae6238469e45124c59bd39", - "0x8a58f70545db2242cbdbb12492cc11ec4d2b2ab0ed8450d21ceb573558d7bda91ab03c98736e13d041bcab84fd8248b9", - "0x9077880ac352a5ab0e5e15ac89b14d173cda0b41b6f7fa66bb357195f10cfcf491fad6bdb49d71cc20d99cc6c8e28d04", - "0xa09b2930fb3b1a60af8c5214e8c3f6deecb3fd3d0a5662f3885948f48d1836b5ad3dc74affc54dbeb5b522b90a17dc4d", - "0x9163bd2e5f58fb1d81007422b91147685542fb1c7e2c8421af284c7cbfdcd2d2b399a37123b58a2a349f27b31bfa47ab", - "0x8a3d859f141457f9d63818634f81deb5c858ac48bfbf2e1da21f4f0dcd66b3e1d2d8fe99c4cad38206b1e15dad94934d", - "0x86d3fec476b59782d0477ff333fa79922fb9fe3d6d6b6c5be9da9e88b006b46b2a0f8f86ba4159c5085e66e32fba67a3", - "0x8041cd57335bcdddd37651de2c3e92edc600ac23041d0e383baf55651b1b0960b6a601491608307160f0d7d48ce395f9", - "0x805c284059f8c03b2bf006b1af95ef726874c5548e93ea965b402931f42b189f9f674b6b52ff09df35320085172973c5", - "0x8acf781a0b40cc56b1013cc1fc3bc43036545ce35591f3b905543c09cb1ac1a70a074202b6d5ce3680be913200c58879", - "0xae670c448996156c80d063f1dfb03d7770201a35c71cf8e70b38d52dcb5e2bf73d5286d63ba2f561525d62cd67d43125", - "0xb0fcd0150fc0005ca438d6b0fdd6a70b121d35ecd74e62bc119bb0187cdf6bf674ce9fe01eeac5d46a68ff4d4210ad09", - "0xb752c6850985ab13a057028887bc84674697c012e9da0265dd5ce1e48f0aeddce5e07e3e7cb68ae17a648cd1207eef19", - "0xa6a5c71915a980fd0225847b45e2e9f3731c6b2a627cefb1e2c6a0cd7f1d0555dd32b6b601a7ae9cfc4b9d06a56a578a", - "0xb7d96f59a988a7a810c25018f7f85cd6e81b335a84504ec76c97d7257f9cbfe88215ec89553f0dbf39507d990b3a7f84", - "0xa7cea7b3ba43cf6ecc488c34511b17fc7b97150b2d265785c09c676ad3123b322db32e043c5961384ed6d90d20c63061", - "0x809dc467b304e9bda732cd92b15c0f9b363cc707432788971508b8d60844911ed4edfca96d8cc20b9874f1e38a2d1685", - "0xa5b6a089e022fe460d62c4c5228e1381902c9a796ad92c03211c855541a7fe27c5a39d9123b001b0b892ffdf0a1fa065", - "0x95d67a21154a49bcdc79ed5f2773b651c81fba1ad82bd373239f09a67a50371a147310623fcbc1211ac57aa154e8b300", - "0xa4a4f0ca8073407575dfd5d04ebf76f8bb467598824f2ce7fa74756803d9645d63c9eb3ed39aa202dabafa4ff0a0bf34", - "0x8a77374f6e449d94a443f2d4593a0c3e4925527e0653e873dc20756396a9a4e5696fe44fc1b49e456711259deeb3f037", - "0x82585a825011d6eefa85cd530685b103862aa0777510d22942d8f77a0a7f489f5d10e5b36ee38f66cc96dc57d13f5893", - "0x98e24625c31d5d97c789eacb91c3d51cc6edb38cedcc474deee459f55de557c42e4d0754ca4ce472d0123638eeafb55b", - "0xad4351c76d96c35ee37362f2384ffb809bf6a47213863330aeac1ff9be2c6cc7275f0f974e46bfb716a89ce1bdbd0710", - "0xafc8f5af4f9c38ae672d20e7bc3796aba23a41eb033619b4c0a06e07884e1e0c7a7326f069068dd22e69fa5f672efece", - "0x983d5af05af31f9082f381378fca3526f88309bbe51d0cea5860813bb0fcf6b32a3be110336bd728952dcd6ff8a26361", - "0xad3b55b67b64b188447a1fb10d027bf7f86ce0a0fac966d709e8b6ccdbb7333964045f0c4719c45c36b7f3c9ff73944b", - "0xb410fde230d8dd24b9f1bdbce8338b05110b130591913f23a34c5fd092cdd3f747c383f6967cdb529ade1a264a3ece39", - "0xb3e4f0a046f93c332be07058db00c5182a498987759315bcc3a58d9334e09a59333031c3144b59d03596925703491cd6", - "0xb77e58619c8c471531d9b2e5dce8f82bb8794223bc9459599a911440e64e0b5be1d37e289807733ddbc2858bded1c34c", - "0xb450945bc3e290df96a196083a45aa929ee080bf45112e678eac0a939db2ba67334ef782c855b9b354caccd94b3babb4", - "0x9794d81e968770a6e12add60b32ccbbe80cb2680b157d125461cc3db998691e836d98cb3b3cfff4f156b2800d426b955", - "0x98d1284b4c035e93b4ea0431884d91d5a7855ac6c5b1ea2a994e653cf77f0ac1a771dc75899bd1485066da17e40ee341", - "0xb1da89b14efc14d15b2bc967ffab85c41dc447b6a7922b619b5d5b06dcda725bc4530959b70355ee20eee7c1802601b9", - "0xb8e50ae98515dbd9ccaf27192e58a5c34def86b1d0d181e63e64439107c30254267969f6069e0b863c254440c3480de3", - "0x915f0c7dc95f630bf1114b02e7d9936b0911a69c932950ecb7f800cb1aa1a4e1f1b6bef6ff4a23301cfd904c39025863", - "0x85392fe0edd316031c69d90b106b6685bed56a0d8d814db2cd5d77d07b18fadb632694a214a176ef60aa0f82ea14b00e", - "0xae4cdff23859b7570179586549165c728de4ca254a5da29668cfda259d43a387b3caea8537888d43f713d458da6bd4e8", - "0xaa0b6a3e0555d64a5cd1201fdff7ba7ff3019e9ada1d86c90c626a710df3d97d2ed62d2b63e5632963e09cfbedf83732", - "0xadd726d97dcff922dfd748eb897e540a2b4b8bdbb4eac1feb74717bf086b1760a957f83586a57b5345bf4c73d791ab9e", - "0x9721889b6fd55cf9a914e5aeefdfbfb94d379c6312001ba50ec4bb1dcd03f95fdb45041330da8871cf3dc3c6a6b5e330", - "0x8eb9417573ec6af24a610da5260639efcdfc802a95aba8efa829dd70ff179dec061da9facac95b6af02cba6a8646f7bb", - "0xa477ad7d2885e1f081556a98b3904cd75a4ac7a8c27fb0ccf15d117feca59f891a677fb4ff4fbf38203055a9436ebd1d", - "0x95b3b2ff92e8a0bace130d165984966637a74280d0e056cebdefa6f825b1d55c9bc6e13cc8f263e657dba3dc7fa68627", - "0xb096fc33c038b425a7a922a4274d01eb366a488fc969497a575587ada74b9452a607992aa2d8b9de66705fe20b4abb39", - "0xa813ef1053ea6ae8a37f4da722f16b6ad0213b0ec7829998362292aef68c28357ee27a406b567a629592447db8ea6085", - "0x84248425c3201ed389fa1b64b9e1d151b5a6f5fcb8f5e28ebd665db57156ecf9b2fa77bca857200df9f54383b7c5eae5", - "0x86d0a3c7fa1e64111115469ed0373dc3dbd448e1098250e9e8c5c7e775fd1f267d49b4123c347af07a28e686d5f357fa", - "0x8340b2ef4fc2afab3a3d51b6c0361cef4aec3d5e1d0f779f9fcb258711cb79ba4083508644e2bd182fb25b21523557c1", - "0xb840749c259b5af5874750853b4de6f4d7a274e18fb77f774f5f454c82efc5979a431e28bc8e43bb831715c7fda96db4", - "0xb168d333cf20b053c1b2a915c3485200a7590c3c3661507990390800fb95d3772ec6815d53aec5e2964eaec19833e787", - "0x8f1bb538dd5005384f38f88cd2588228aeb0c6313aede14ccc12affa9715cdb938ed4573c391572f0a7ba6e33a1ace89", - "0xae4a8ec2eb938eec00e6608c087471128b14a773d75a99634671f6fed95f7b24b14f04b3271d1c32faff7f0f2d98547c", - "0xa4ad66552924a6831b657f8b318f303225b2cf29b09790a48285b028bb1420c56dfa2ca0df2e823f694e8e3b27952a01", - "0x8af4eed962eeff534234d7c34f1033c68e8cf798c99880a67eabf38b533570a3776399b883f8658265cd14277b060790", - "0xab2c6406132413cba89a951d919bbe123fe4f220364ec2282d8ee0c140ad8d48ded0df7ab56f8f18ec7526ea2f1cbbd4", - "0x9154df8800e26020155b98f630e640be97a3ac41b182fcdbcf31a3e4f233810e34e224c97df8ef0f39ccca29a9921fb5", - "0x8f306dfc5b8376a88a104cdf67eab54f93e478ca09036eb780050ba2e8112b400bcc09d49665ab37d21b5a2d8440b3c8", - "0xb768260e94bbabaa527b2af8be423577cec3bf4aec3c569a4fb69e1fb997a2157c59f1169065d24a8aa3625d89d988fd", - "0xaf06139ca7d240f2495314d941890c078d504b2bc09d98a6156c373de29781e7581f33adfc738650cad0da3f6e07af88", - "0x849a6e458ab2f4101167cbf75bf47ec1f9e481f556b1b9d297a6b4737584011d7881695bbf3ba31e3e4180696fff6407", - "0xb107e7aff27aa19a4a92d1a65679bf40e85ac6f08d4e5f14859d97c170ceb431858fa4c46d00131527c605164b5f7bfd", - "0xa00666055e18f34ce02e8b67b6f181327ec0a11547c0795bee61802aabef9a3a76ea138b905cebcff9c4c86391763e6c", - "0xa65cd8dec5166949696dcccf031c300895c5fdd53709a1897c61d795dc22bae2f7717e7ae52a9950f9d00471ba6257e7", - "0x8b49aeac3550ef28b5de37576a5d4e2e43bcce82de09f491984171251e26c27fd0a884daa6f3d30dda107dde4544b34f", - "0x91666b88be09799c7de9a5d9a9d4c1bc1b6fbc44c664adb15a2eb27229be910226514c2ce22818fd38b850c89291a7fb", - "0x85abf4084c735b20333b1c2145571b793f96188850bae161160b47dea7c48b0f588adcbe9cf80e05d17851cfe3400f1d", - "0xaedaee73c52d71d7ac3854fa41199615ecf49cb0c35d8203f95175d1ddf565499a8e9cb8d31d89e7cd9cb75a9fb56f9d", - "0x9413589f0746d3b81e2f88b280e354fbd63ac164369dec353e6259a2c4acc6bbcc10f2a851901f39f90da7e523d77848", - "0x826121abbcefe3ad431c713a1a2cef336a0f06f69980a14d0a8adae5640e9aeebf4eb82be4621165ba32ce5e16de4880", - "0xadbff68221279985891e9f3fdb7b1dc71db3e20213b7c8e1931e6f75c6f02e7a1f6f05ec0687885de55ac85440f372ae", - "0x99ce8b064f874cf028e85281bbfa43145893f80a8b12813d047bedbf88699266652de6ae9e4ef9ce575e67065854fdb4", - "0xa809a71a663b0a9719c0327d33215b63c6ebb12da3477da8534d7e8f79fb81e06adfdad79686e40efb2c75abde559a34", - "0xb26c4cd057118f9b12c9b86e77d370b3fdbf2654a5d80a7763ae98c68cc2769a7cb293ea89b3a08250c2f699b8d76e22", - "0x867c56da9a2ed672f47924cce82c9d7e801d6a1fd18cdfdbbe07c82091c70ba0ebc6008b0b9d505632a97aa23c45b8c2", - "0x8cf14633888f2ba0b02fc8ca7536f39fa290678c7e0840c58c53a9d2fe10628be343a86acd74b2fc01b0c03af0996f59", - "0x86696802e4f27928dd6b0287d0188f8067283496d154060383c5ee295a468df32a2e8e24648d93ba868120ac429b68cc", - "0xb15439762d0f7b6c98e6946b3c0a7ea0521845fc68b47fe9c673194d81a6cb375c79b0122e81a027f21a7fa4cd6bbf56", - "0xb1bc19c9a3756098c02bfe36429c0f0d8166a5c9274edc7f80ce65ae7d6c67864a457f19cfde6924d204b81f2a195fe6", - "0x997f1cc78d707f29e3eea0952b5514b34c2cf0720f33a3244cc466df62b13031bea13df2296270eed42b3667c53d6c26", - "0x94f599c9995caffc9b47543b822dd8f84f921fe2a31e82d5d0fc79dd93a4da0b87a0906b82fe7c2a8c23c7829c21dc2d", - "0xa7fc8a6ed802660bcc07d3ca454c415da18d798719dc2688eeafeb8971910377ce909de68721fd97c4d9fe439f37a8d7", - "0xab16f93e6df2464018be01fe040fea08c67e0b032fe1950fa37c7593c8ecbca24dcf0fdb9e1209d5b0def622f3f6e92d", - "0xaeaf19b49843e3fac538075dccbb29a63d55d12f8c4150185b1ae62de778c983632542eb495808ba629cd4cbd629e07e", - "0x85614d537efaee823452d0427ea3a2f7d5a3c988b10cf7adef8715becaa519a9b5174b63e401946362176dc0d65667d4", - "0xaa08d8365e78efc1919cbbe562be7b28c57eb05c36e8da89378cfcad9f21e134eed923559530aa3f62bec758b00c70ff", - "0xb4c2760454170276885d66f03e9fc4e6a4254547b04fea3c233c11dfbf71ab05dd755b9697b442ec419aca000152f2a8", - "0xb814059b189c0ed46f9dab604fca25d881a12fdfaf834a75cc2c0e1d8454ce0ed9f2a79b34bc5e27004903a48c6ace90", - "0x847707b0aeb4fe91c12ea8570cf0d16caece8946951360433c8a375a69fa4c01136172ff2acab6d5164ff6d3b5340858", - "0xa7a9304ecc5ff6fdaaba6e774556bcd7c5dfe8ee7580a677301dece55c6a8564e7c64b60fc4efe89ff73954f3c3f5b0f", - "0xa1a86fc5648edd58cc7eb61cc30c62edb5314caca5551ffedf088fc9c1b92ec5b487f670c5bcd2127067e8fd5faff03c", - "0x9086a31715283fd525034d59d4ba3465d6c30059b967b1eeb7d537f3bf8caf6879481ada2849167e997212f3300f8ff3", - "0x99c11903cebf722e1cfd63a46b0ae93312439ff2f014b6653fc61927ba430c432b4955b30b7f078c340f5aad4ae24313", - "0x934b7a8b7bcf0108ed31d35a645d73f661c064a6fc6a5d1ad417ccf1b8864623b0cfb54707f10baa86643afb5c5ec980", - "0x89d5a69ae8cc18ad77995ae92d30236d5a5ef00cc63274e318d18abcf9d936453d18a8e6392b52d2d66b51c18d904d6f", - "0xad2448cea1948f0a4915ab054273bdae33a08c494203d11f46888f852d0abefa310b50367c80cacfb602cbc249b31a71", - "0x807274fbe6f08c332a5d2e2ae12cfabccfb53511b8d83bdc875856cf15ab52c2d01cf706c9be428307ea62fbfd67f87a", - "0xb2f4fee9f32c0ea7fae306605b62d983b130e4d423e2de286bf9f4343b79e5c4545214250cd1348402d8278140c61c00", - "0x8a36f79ab3ee0063098a39382061ec3e1234e67087b9519d0b762aa9cad54a7e0bd5d24e2b0a57a690993e3182f3e83c", - "0x86668e6743a7b6d1ee62e70e6031fc8639ecffed38afdb1afb41d64ec402a308fe0438a22387d9b0c130ed301c39acb4", - "0xb816309d1730cb39b1ab00c5333c6962fd5f5d8b22f3c3ba987b1e0a0065334d206141dcf0e68eba717a4eea533aa6f0", - "0x8754e190b8f751aaf9f8e7076d21bd31db8d9ebbee6b26517b190f624b3a892050312cee9d73cf3d7245446c6a376437", - "0x87826589ac28f442c608faeaf3d63ff057af7724f9d412d1f2cce8c58fad0adde325aa496c6e4e8441775c02d8a74c2c", - "0xaf30e5e32fcb17226edc54030f1eff8af619c207cd9e42a2ded7f15cd29fe52f140901f0925ebe4e997b56f34d3f406a", - "0xa62a4e5b6591d336744481a0797eb23ccd0f580d04cfacbb3e415ae3f273761042b8901b0312f93a6eafc42a50f81cc6", - "0x968a9ccc95e8c124f4475c348a33ad2a52a42e191a93bab3d7f0d211df999aa081efa935391a8289cdc4a5a8f7433822", - "0x93350cd99ab7d3e51756eb01c89172cb406c1debd3f0001d2fa8a01018be5609d73df671e1ff43e612ddbfe7076d9ecb", - "0x8df26dbc565ea7e758ce4c2656b65c1f0396761c9360d7092d12c121d3bc1c293ed28d82f1057f4eb5375b15443e9258", - "0x80a0dc22fb4a12b06cf05ce39f76537eb3db9691ca466ca89b2585237c03d13fe3fcd311ce2b3dbd1b7382044b803782", - "0x818b79cab08e11dff3d55bb0f55333f6340c5b462609d43334c14fd878b0f310b77c542c74d3674a94c692de704e88a9", - "0xad1bda19b1bc3f6d757fe4d189ca82bdcd0a9c1ef509c43e3f49700f84be33bb9b8b8e70f7a09bc6bc00a78cad0cf9e0", - "0xa22ab44c676ba2b3889341fb137dfa14cfc5491ce4c3c1fbe2cb7103fdf720ff2b77806a40109dea9a68d8f072e1c167", - "0x8eba6af1659b6145676d3663b04ebe58c199a1c24837ac4969793f07ed97165d20bb0410421e561cb9283faafd9eb51c", - "0x81b216cf08a29dfc3e16b2865e712e15f494b914cb24526a96799a3078f200a3fd403767119732ca4de07203b479ce8c", - "0xa023ac601c8e0c22553068ce4a7b8361b0b37bef5705fa68a71c3cfa80510041cef3640bec2cdb4f317904521e99443e", - "0xaaaab84c8aea75303fec31694114b3ee10fc1a67357cdd675ac9d0e33c3279e3117d389e9ab017882d517131b14e6088", - "0x8bf9a44b3df3d7e0c776e7ea5eb76f16f1870960f32e7c5b63aee9b432a0adeebbd378c574ed60e15a3abadb409376f4", - "0xa93faee621d930f336f4fd952954ffcbdb261c9dcc4e60cb848362223374010c555a73c0563e7933d1596b0526bf75cb", - "0x88753d0e35e87f7572f2012a40bb757364af5cf6e5dc0dfd16d082e698d3fedfab3c671bd58edbf11cedca247e9fa55a", - "0xb7de5f03681634991d2aa8a0ffdafd223b1a0d1ff70fbd9c00d03f228c6772d93c388c02045461d51326483af97bca37", - "0x81f96d4fbef3cf00da423a1c48ab8acc222016c21f6be3df778342c1d1aa1a420faa8ce906bfcdf955be045efa4b447e", - "0x8dc75ec37122afaf0aafdbea333291ebb735792b4d5934fd16bf28b536fa759dd851e1de448c3efac3d2b0097e0b349c", - "0x9186f66655fc1c551d0233b761c6982a3b8539085ca9a2baebb826091e179026b90f7ba6a825f38c6a09b190a31bace1", - "0xa1cf319c9ed31ffdb2108b684bc21cb495e77c853e6c502e03f2ea08e88a0c2b4e31958004d9879242df420b628acd8f", - "0xb3d3e5a75c34640bb2fbc7b62f8aced8dcb4b9b165992717fdffdf765bfc81fb4e67f3e737e6f70f24d3c24812ec0ed2", - "0x86ee6ce0480f73cc89ce7959b4af52351317cb6406cc368e889472ee5567e8a98560dc1f13b87442c9a8c5d6b31fc446", - "0x9478256948d960e3148acec3487da232fc2ae6818ac2c6eba491adf130c55badfe83f9a519379fc5ed0b63366de86a02", - "0x898a8130718ac6f98ef673fa8b725af6012ef28be3f2320359a5c2c40e479969e5926f1864624ebec10f27594b24f618", - "0x906f45d4ec3f647d0c49deb95884629a04fa65cf91a075bcde67940634cdc98f76fea8717fc1e714ecebb337e9fd6998", - "0x874c5a55bca05fe52a5d1743b8254b642431b720eaa74f73b0faacff2225f448ef94e12585b2d3bcf12c140ee3e81510", - "0x96f76cf34b14263a30df2135131dea00074f2ee853677b94fc32e04cd9872424dd93b32c55026b89c18bdb4e58bfd19d", - "0xb62e2ebd543f3e9a11b72f45275cadf77b1033713625c7374c4d2284d63acaeb64977fd2fdc90145066146c311a68737", - "0xb1759d3b667af9f15da8d4e77440fba4193d0db159a0bf73df32215b2d292bfed7cbaf41c07c7a94ae1f04bab23cefb6", - "0x88423607f005af97b5f8131bdb1fd6d7cdfc4c2da4a4a14bb818b3ecf50c2ae6d3b8cf55e23632354537f5c0dcb0f48a", - "0x8ba63acf22ffc1576935467af19f555a0c27a4b56e5bf752163038f0010fbdbff8a2131124f4cf36a326dfc188740e77", - "0x8b1996a0cdac9c6d896111671ac4dfa84a3a3738c43db6d6788f1a7b8ccd6df16a31606db00cf0107eedab28af05cd7c", - "0x912a604a97457a6b46d48731fb44dbaca26e7cc70a4628dcf553b43a9efddc4e5fb040a1b89e31902888a7cbbf709333", - "0x86eaf5b2fa873bb56b94eb7fc823527ae50364c1bce87e36fc13de149f1fc937af858a25cc477277dc6eddbf9efd5480", - "0xa0169e6e915e7216b83b00b31eeda207a02c9db6825b5ea44134368eae5bd009b7c95005c621e0d258c33c59085cb66c", - "0x8c8ac664946b5e69b4e34ffaa486b745ac8afc8ac702e4a4cc36c59f420a81b31ebf8b875b1f572dad8e4ef1f547a1af", - "0xaa6fd75ca832fe60eda078fc81a1a529364cfa8a4b4fac071d89e33cdbafa7d88ff3df611720b48e6fcdca2e3eeea0da", - "0x8d30857ada34991ce6faa82b4326bc353691ca32aa25511cf3d52cebefb262d6db8d93521020a2d11b3ea085287ad54d", - "0xb78bd8ea8bd6a2fd5741228502b9777177039ac8f033071c82ae11fed7f0a51d8bc64fa9aee44df25eb4b3822d571144", - "0x90904aeb1a99c4818ef21498a583848f4d1ee9253d70c10b03ed7d669b587f8712fd26d4409f00fafc3e26b5d72b4c5e", - "0x87cc8ebf78ff2ad752843792e11aeddbfdc628e03e13e0db598e08b496313f463f481f3a17ec889a3acfd128fb89aa81", - "0xb4fd122c4830f339fc019da6372286d3a0565ac04d4f5ac4f28b2c066ed507316e1b7beb7b552f60060825977a2db9c5", - "0x86e709d48d03738ca97d6140f13effa03137570c43ef00469eb0310909f66061d9fb933fbcf30bf04f13839e36d45a4d", - "0xb4a595cdd219aff5b8d0f80b679e58d9a7ab9cc389b47784484704e7d2c5249981b2b86be4c37ccb11b9afbcc8070214", - "0x97c6bf26c8b28b982b7a56ff867b2f5785b37260b90e0ae680920f368478a3c88f4a47bc394c07bbe88fa1aa1776f255", - "0xaa48418728684c9a10992d1851b69e54529dbc3548fe46721758ac6b33f82254d56738b351d146268fcc56a9b7f05df5", - "0x962a282caf6f08a63aaaf7ed2146dd61d527144f3fdacf1beef36b34356df50302330598b8602f1447f6beb4439a1048", - "0xb55d325499ce03c9b1c35e6aea30622841aff2a2c225276d677338579ce83177c0d64d78e7d11eac657a30648ef702c3", - "0x8a91b9296e5633b3b9144f61e5436654cffaf04623a864ccbcdd21c8f981618a908e890f61c74df19ce5b6995bc358c2", - "0xa7b6b32333377df24c0b0194393a1487a72a8783e06b1cd00ce6bc39337b34ff58ace57c8dee5b7f0ea2c9a54048a61f", - "0x97db4494e4208c9f297b484cb8159e8f600c61a44e1d878b07d29f0406fd32a0c12ebccd42ee7ac4c0bf33ff54a582e8", - "0x8697bc039265f7b6e73c133823dcac9041d18634c68fe16412b4af41286a4164dc86f7e71ab7a493223a84e185cb6f1b", - "0xb18a66cf37f93ca0189201811e7de02ee029445132f0fd4209e5efbcef46ba6a28aaaee42b30cc7e97a25b08f4bbb43d", - "0x8b69f189f3cfc34cc3968a07e13d1cab0f5c7e093027a9fac38504acdf12e2defced4261a686a2fc850336187e017957", - "0x96afba402124d9ff7048200acf329ccb4e35dabcd609e62d04d25140729e110a674849037e4b8aedfc99c889b132cfab", - "0xb75a809fa3b1c17139962bc22ddfce47d38d017d585a4e76ae1eb8f02849551ff7bdae178cb4546067bbab45b7041ddd", - "0x89196f1fe0869f2fd18f5c01118853503d71c4073aed8bd9cfaf694ca4a9e87974a9ad6e37449bafd391a2045ef5cd2b", - "0xae52921b5d8eb5df7d4923aed1afb125cb98aa6606f8cbc2129cfee56ba3cdb7225a30d98ca9271cca67fe39c763d508", - "0x99f1cfd27833fb64905f8678a532aa984329b2369ade3860025ad334131a9550214297bb2f7d3569eed7a9cc558a5922", - "0xa77fabcb76e8c6ac2a5196666e0c75c7f6c73fd8a0a5fca32a454a9457870689c83f5821f90f28dfd91abc3bc62ee761", - "0x92a4b97b7c14ec14c74e06363b0ab2e263d0d7d84125e2cfbf659bbee996a4d8561992e19789e507f4c24e5afbb91b2d", - "0xa2387e7857600a93de57faa0484650289c7553b9ae5fb001d011f43e5bf31c010c9c8b5bb82e7000465b546236e79066", - "0x8641b6f2dbe9f0b83e0a7ad8098b0836af158fa2ee6ff1bcdf3e2ac8b3d25d2e5a24d515e9d549feab4e82b49e468fa3", - "0x937306770a47ab2d5d2eec4bd6d9b3a8ffbb8c8067504571609a7e7a85c665b34ad2662701b67858e01530907172768f", - "0xb6b1b89f261e56b0cee15e2f5284c76789db26a6ca4762500745e260bda40b00b65add4826be6131775202c8c6c4247d", - "0xb1caac20a1b2aeaf287d38d42987e2c381e74495d9e880eda3ff59821d5974d01c7e3c611f4773a13ff41bef0f2ad44c", - "0x81ef049b849d7b0a732579299a86f1cfeb85f27ecee4280066dedf6024159fd47f311f1ebc46b58f63f71735a05480c9", - "0xb3b6b657e64fc154eb33b6056b8279ef736839b56f2c8f8ca438cdaceeb5398b8d3625676cd393c196f664d7baa3a615", - "0xa450678001e8db1ebd8fbd5c808c99945bb3549e834a346cdff316ef8d3b49b818cf9642e5b8097181cf40583ce901b0", - "0xaf3edcbfae3c8f368958cd11c95df4682ed10f894f770783e967fac1eed533ac427c1d4eee51f968ffdef080593ca262", - "0x8348eee6ec1102884929736d6768477029961c3d6d09e9ebf84d2fbe55c0501165f274fc1c0549ab831388d431e051ef", - "0x8d799492659dc44aa38262f8a4ae37b6ba6eb10dd20481f652a1c77ee9a4529efe042ea873c13bb2ba3ec4792b167c14", - "0xb4d3962f574c3298ffb0958ac999367db8207dacf2ca9d563cc1efb42fc889e19b7f00db15ffa91d145ff05eed97c3bf", - "0xa3a7c0e45dc8ae816d8765bbf097502b56651c0c11a03f476e362b64ddaee223128defbcec5629f4d7f1f9c3e4cb9f2f", - "0x951036c2878582d84d90dff79ecaca673df4760fbf9e09e63d35facf3e3257be6e1bd504f3c3daf8ac1e91d306e80d6a", - "0x8ae85094b13d349e60c8f303550cf4b01e96e24fa3a9f12d44c9822c004f1b3e9cbd772a2b4699e54023176074778993", - "0xa7292b61d2667d74cf62a47aeb559499f19dfab2a9f41f16e7b8d6e77909457eb2aeefadd9d3d3f6db18a438ae53ea0d", - "0x804310f5d2ce8bcf9095945f931eecff79f999ffdd24abb9e91d92f6e405decccffe4a8d9e731c4553de79baf7a5dd98", - "0xa77d3af0fb79b6f5b6cb640d04f4e13a28f8aaad1f60e732b88f86de547b33117386636d1afc7bfb7bd1d4e527812365", - "0xa431f239ffc68f6b1ea13bbd45675f0323cacb279e11a14f664acbb15d1673b99cf3603b335a100a0e297c305d743383", - "0xa64f4c28cc36b86dca65359cfdb50ed3dcc06fdb22ad567c7e0f833c880e76a53c330720fc2b96235cb0638394bae41e", - "0xb6fcd2c047de58003e9af3a416a2cdb143899441d82c691fa46d89045a12d3b087ee4603b401287a0f2629154bfc9bdc", - "0xa06e3b863bd183d8f91dea6d0211913663b3924f1e3476cfe0f328ff7c388aeb8e5c97757bcb56992c104ce0ab6ff27c", - "0xaea78204081cf5d24162686a824ff8e72fc0f88388525d646af7739265f60695b7d80b53cd1ddfd046bfcf59aa25f5cb", - "0xa89f556d42541a655864adcc1d5d67459ab488143e1b4eb48c67af30a8e753541fbcb479558ac26e1fa498f74a59025e", - "0xafc385b6b08c355a05fdc75e9360f4ffb384fcd74e8c9db34bbae9e0c67e0d1fa7efbff4160b387428ed58e129fcc027", - "0x9428d05e17e5525fae515e1ba3f04742fad1a43baa2ee166d2f9431dabb46895b7345ad833d495c99939f0c57cbaf1c3", - "0xb7a62d36ae55e681d48c911e1a433b568871c65a97916f939bfd638a054d6f1136a78c96640779ce1e3afcf90e3bb23f", - "0xa45b6d24930d91fc610e57ee78c6dc7557cb2ad976cb92e2157769447cd7c9a6a040f1008be9eb5dda2a7b8c9e524774", - "0x8b24eddad804790df3ed82db7c0ba05082c61a81763c44c98ad436dcc7e1e89a2800ff9c2deaf350f6222cf4278fdf9b", - "0x895409dc0aba4d29ff322d2414b33c1458126c023a3d53b25b9038bb90372b7c20d3e9f6b791fcf8f76449fa0aafa758", - "0xb22767ed218b575f397ad8306ec48fe07e8dc3a9f2f090fbaee411b6ba673a1258785d61adcba007d748cb019c458fd3", - "0xad4b9e4164010c4ba05a23f9a46957c8625fd4281a4e76f76ef7b4d6040d2228dbd2e6faf22b4a966ab42f32467a4655", - "0x92340f1051f88c25a915d0504c1413146f37f709ab060e3859b14aff9be7f8c91352dcc3fc866910a84192d301029cc1", - "0xb4e19bae926db3e1e295ba856984b32b796d86cbc81e81c6978e989f5331f27ce9004f90536a741ca996d19f998541c8", - "0x91502e2a69aeac8e709553501311b4392dea3d5b6f14e7523bf780b8af246e1f2bdc4b29fc4ec3ceb725fafa31bf51e0", - "0xb20607db1bdd6136130ba9683d581f5f45d8623ec4a2d35946723e0d8768654bdd9aeed55ba38303d8d1e312bc4f2442", - "0x8fec23ac3b4cde8c18346dda1afb2b72d4af1a6c013dcea36cd8cbf7223626690ce933b920bd9137f673d0985b64d54f", - "0x996bba551ae3b76c5aafadfadfcf80fcb554ff26e6a9e14e60440b3864239129734115d11a89ba79c19e452525cb5a39", - "0xa632f25ec68f02f7758103caf613511a1fa2e529e0861f286b4e490e8fca6874af2c13e3aa6ca97c63f3c621c197ae24", - "0xb332292c6213c7216bb78612457de615da878619024626383914f9c28f835f1289818514038c30eb2bc3566d2da470b4", - "0xb5bd5ed7e990ed8abf7de268aa1ef7ccf5562cf9c92486c2472051c1b5506bc9e72594380e7bd00c91771ed4e9707851", - "0x8781393278ffd5c522ec450220698328e60294ae1e35f60b25baa290a125cc47fbf7435eaf9b22ea819d431de0656f38", - "0x80a308c1acc4363f9bc54e6831c5aebca2b2af47d699a17ae2fba24495984acd4a25c7c95b96aeae3027f0fef9549284", - "0x94a55b36389e05b848c6d0e6426a400d1596195c2cfb4a972b6bf8abde2cf86a932b769a90b62a65d0aaf388e66d516f", - "0x8d29a5db4ab3a1199946a79ebaee9de225284f0523637f90e4ac16fc609dd3dd5a71072c30e869fdf6f057b7806ec254", - "0x99caa565547b13953b91f0468b78551784d947b5a3fe1b7278e4a45b294f074a93281e9ee084647d1b24c83b39a0cc90", - "0xaeee1c88769e7bae12f163a056d19b0090c7fd866d451963bc855bda2736c41500bb97a8d72a1a077357419ca94bc3a5", - "0xa94bd8b793a57b4fd79a84daf1f7fed5820bfeb44cfec0248f6aef130fb3219e1bbce68a6a55d332b124e1cc55224c51", - "0x8528607774d780b31417bf85fa3e54a94e4ef6e8cc233ad2a1dc795c68c299abae209c46ba77c33ba74c6ae75ee004a1", - "0x930f2c302a87d6bd159bd6b4db43212e7c806e17f572277ab14dd9715a435bd67b3624a9e72d9a2777f9b2080ef5cc36", - "0xb50d97fd2fbe60105dd1dd44cd12d8ad62b8a3127329f969be917fbf10132f1c6c6fda8029deb990fa1ed26e8c220c39", - "0xb685aea07aa1a45941f5eb2a593c0d97ecb5a803fd2977783488fb00fe6580c41ab83ab6cdd678704311c5542129c510", - "0x8cec65b68f4b3b10d032d39ec4c448e6d76e7615560bb754a53c4c6929c2470a884e7d39d9f3e58a2a9f121ad4175a34", - "0x96279388cc3e91dba49763ef50faa7550c3b4c277b2a0b0ae3541a2f990f9352748db75755a7b13efaffc9b8df40c74e", - "0xa7599c33614456b1b02b57921cb76b01109811a82f230f9e7e82675d57757f06021ac3f514d557ed9f2dec025364284c", - "0x869684197084f42dfd95350f8a54b0c7d940ceae2bbe49ec18fcfd178b6b0d21903447509e0ef356aa3d2aee83701bb3", - "0x85e9ab73165878b93e0229e3384f048e9651ae29980f9c5e26492c45e180e09a3af9058fada434d1c398b43d99d13056", - "0xa453a46ae96e6330c1b315d1b5f37d160731309d49d13d6c38c5d7f0b4f23ff1d18c985c471564afb54e4477c5d28d19", - "0xa5999c704320d4468f94d647d83c9e8720c19782d2a03677143c7216dc434b3160d193389b0115dc638f6e2e12f2d441", - "0xabc7a466cd848304616b2eca049c4b7509c5260c9236dc1432044ebe3e912afcc3a6ffe3e27d5d79d3ad4636ecda09a4", - "0x89ca07faeef1118c6b840a2c328fd32a5709b31850057302a7e607891e11f3f9f62e4fafd420564ff10a35b9a44c0f06", - "0xb0002f9d2a8aa850b9f22dd8d3b7881e8656cfc53e6c2ae6a913d88f6934e0062f30da2702dcebfbfafe36785203cefd", - "0xb8527c70bc791c87f5fbc67e2856e45b7254c5a0b673d4a5d3e9b79fe0715b608a2f35d88a61eb1d8d7cb615fea650bc", - "0xb9be558dbe778ba11fac7080789522fc004510f7b740c42023d850946933362a173267106aea046f338533e4cb29aea6", - "0xb021f9e635e64d3c9b4ecc8075fb74cf0e5727ecbacad15f822c8608f0d981ad2c300fe6e47c6148a6b1a13cf920d85d", - "0xae59f2a83a1384ef0b5613e8843cc9a934f7126430df7cd7f5a8508e3d83aba83bf3d18be7380570b24ba0e00e05e0e8", - "0xb403e4d0495a0137a710c43393798593bf131cb8d49beb0f3b3d344554dfc3355ebee14e884f543bb94bf9aae40aac59", - "0xa73b722287df7558c503f89d113fe0c017765c73181eeaa9ebe6de5c8a15ffe76fdb85ab93051a6f565653046624216a", - "0xa7d1a28fe1d36b17e37cf5eac7e27549ce9f6eddcb36203b58797d3372371f3b195cd3432db54aae4bf99768969f5b60", - "0xa3447ece13c415c457b899d4a8b8ff388ba25bc920b5711f8687cc86e9c1b3f3af42c490ec6352fa8609b044e642e3f3", - "0xb12f2ac1e033b6a627e7f7822317f629c896c8f8dd94ad91512855882dbb10b8e80a1e29c3e39138402f1f7e0de673bc", - "0xa7c65988996741bf59888415fc2264495050cb13500b6597d9d0e034898121b605784f681962cfdc80b0af291c316e7e", - "0x8c40cfc07dd7a4bcf514f2e87a1830c911e8168b0b8531a2838d2a14e790922b76c4642ae237b7547d8a3625decc7f0a", - "0xb480d70b57434467a40d6dd066f51b9e637abd2f49dcfa6450460aeec2bc895347e21aa82baa1bec7589b6a5a694fa73", - "0xa919a033c24e96af1eb0cb1ede3684e9a3bc338c7ef37b67cc9e9982586f74072cc540981e2d1a2524e99144bb21a64c", - "0x921e0b350907e9993a596b80f827b2d40aad60e9c62f4b65a67d3fa4c0acfa924c93352dad6eb3e868264bb24904e3a9", - "0x8d5419cea0bfebaa9c1509cd748c8af3869aedc3ae27fdbca3a0f08b3751a3b870e8dd3640f4abd4b46a2a1e745758bc", - "0x8b25e6eb600de81fdd03584fb9db9a7bf4c154ef1482553d7bef880bdc5baa7b64abac6db96fcfc4408329adf8fa351b", - "0x88cdb72bee7a6768b7c24d124dd5e8b29f0c866a0624e5a7c4759962ce1d71de7faa97f7baa56d5f51e35bca43862bee", - "0xaf1d59add7df3b3ba234b0b4f758349225b9cee65691c102294eb7e6fb683d7588fca33ed97eda361060253acfdc36af", - "0xb19370b8fe123f1dd2ea6d5bc75e151b0d1514224f5824437166fce77ac41ac5ecc1e7c1e75b75e948acf04c420efea3", - "0xa1ebfe84f1c012524cb475e68ae6c7cec79fb3372f1380321a0e306d15828613589567efe8bb5784360aed568e26db49", - "0xa0f964e3cb594c359e2308defd3eaec476a638b6e1c216157009e11f7c7d0c33fb9e62c4243057cbca49ba315d4b508f", - "0x9391e5087374e45f03d36f6919463c473938a653adf3880571850374ef0a0e521b25ef84b6012a19a02ec88f0ca3891c", - "0xaeb86d4426d2836e6e10c3277583a37b6684ba35f4f30d2d073043f0a0148f763b99fc42c3935026b56c32e5cd0cecfe", - "0xaa98c07dcfb1b0a708486d83763511c7004896856e851bd83d25a9551efc28f059c3fb8752ece0296964e8c13ec829b0", - "0xa466fd8dc1aea7022a86e12a119b16de35412a1b461680f6a1cec408e9b9c1418a8e406fd4a5656c73488adddf17dfba", - "0x8c9b0e18a033c27731fb3d22b7c83ba7a86fdc2234e8f2a19d7659aa67bad7a85ef25264e8eb81af529feb3fa9340ef3", - "0xa371feccc2f1a1b96ad8a9a7d8db0c06fefb1f2800933134299027459b0eb8cd101b9a37c76c22dcbded01a74b13d465", - "0xaeb34fc2758d8b68d17f15ab3c299344ed630f7351c498a5fe7986f7e14d62e74ac9a8f5d2de7c6289771210539383d2", - "0xaff9e961d0acc71a077e3af52ced373bc694f9154302abc908710e500e908f33bdd10b3c41bb8fa8066758a18d64c667", - "0x98bd5a8751e598896e9aec90649294934f81c36d2d0fb60070e9b96eb47d0988f71d9b68f4c475477eb4c996a9265c13", - "0xb25a92c6260f389f6443a572960e0a52ab9c9250d8760ed148082584b2347ec7d103358c033266bec02374e69d0102fd", - "0xb876968bedba7f4712f5e5eea605c1e5fc40bc5773c61f08c32e0c0f3ec575eed3e13e48809983153beccdbca2123edb", - "0x8c4091ef8946c9b27490099d5c0b47c404b5a1113500592515deab1c3f2778bbe933b09c9824a3a7ccad2141f9b5dcc4", - "0xab85f95d318ce235929531e2e397d09b9906c58958fdff1209a514624a099d3b8c103a51b2fcfa0b17a8f008744b5d71", - "0x9016714cbe49fac5e7b3e493574078c462e18f6363f413270c23da6327731f71e2dba5dbf1da6bbe0e29f57f0c33f869", - "0x8c90df700c0e2d104ce7b76be7899209136498999f78195cd888aec6f069778d657e5032ad7db56381470dd1f519dcf9", - "0x83dea8472e8418aa069a0837a5c44835aa1e00979a217f6295aa35548f509fbafc7db5b31b8767621e4f89957892e8f4", - "0x80a1d673220144973ab70d977b94cd3d6b8fff7f82f23bd4b30ea393952951d2f07c24e6d411b2ec19f3bec13583d9fe", - "0x804864b58f9747bb3ae54c588dff46eb6e16b6d98e0f711828e97d9f019297b743aa2202f823e3153ef5bc4b95da3501", - "0xb08eaae2eca2c64001e1da7d0e345f96dbd3e09888f9ab86f178718ea5a04321a8b8633e72dea68cc05687042808e3b3", - "0xb962f91819dc570c2cf131b89882fb2a44a999b94fd1ea8b83f400e9b66075a35c89f0fe0e8dbc3a597cdd1aa3135888", - "0xa5f33e8f04a2d7aab44e832f8ab4640519aa4ef88b58e0a398e45347492b040043e494de4b355f07cb4bc728b67f1ac9", - "0x8ed80bfb4cd15bb87175cff427c6a1bfc3e6292bc5c2d04dd42b497bc068baac5602d41366448ee7f37d85a5d8437750", - "0x83441e746afadf64583571a9918ba5122ca987e76a6e37f98514b1a8a178380366d10ded5c70d4feb08be6fa6d4bc25a", - "0x8807fb8adb2aaa6833960f435ace162c01a9cd0692a4cf038c89ef7405600868efe7bdb3e8a3db48901367ebafb0a1c0", - "0x82c64b1f77fb78dec00cab089cb7a88ae16c72c94d0870bc92df11587feb62277eb941d2f7d3d2fb033d7bfee12013bb", - "0xab2f1e3f1fcde3b8b2c07135acf3a492ae7675d9bc971ba57e06c99fdfb39e1f68d1c826cd9bba872749cab375e44009", - "0xb4a25f1f5a2aeabc29870ab9a815721f3cc031ab1a55417b457ca6504e5e96e4fd0d2d364ae17738726c8f40cae9c36b", - "0x9519efa4774cb4de4ea834376d6213d946fe6882e2b36342f683762fe50d754765dc301569a836febb2c7c9dbcf44f64", - "0xa75de0d0320e8cee962d6ed4b07db718615e75543fb25f0d28ec5e76f56d72b18d648ae42d7bd3da18f54ec1e4497a08", - "0xa2a17aac11e732097b25c0b9f7b97d807dd78ecd33d88aea5ee0a46a42198d379a241e888ddba940b3307e9c560ec45e", - "0x936ebfc2234d46282ec4de88958553759d766f682d6f9669d2b77a2cb0cf9cea9b1ac02014ac3f5cd47dc5d8af2da314", - "0xb33def3135e7ad61a660ef1266d61216220c7e0bdd867b727ff3deea904072e33a195e4febe64ee1e263349fc9096cdc", - "0x94337e4f14752676a703fab8544ea0ab7acea0ef924b85b05ffb84e4476f1087acc9a6d6250893a32b82f02651a179e2", - "0x8f22942bbeca0118747a22d0aa13438e40bd6a383e310eafacbffa1490f5758504da4a11e6320e1c55b3daabc72c63f9", - "0x86e3ed934fc613d0b3269cf368e32e67f4add59e4dc1ecb1f016fbdc6c53101c2435f95fc36625aa8c69c596acd9b0bc", - "0x86f04807460e1d93f8eea2a284119d889659b5a6b124d41dfb2825b31685361e8163fc3a253a49cf878e316463c9ace8", - "0xb043b2a99b94661ef8b270842fe4d3c51891ec23ba749d9c999982553ecade6f658242b373982c9a3669a886889e4f33", - "0x8b6a33a68ba7b5932ce11b3f0e23c3da580510fa37668f2154c59c3bf788dd2276a2a8c66a6bba1a68084e8b9bbf378e", - "0xb54581c88d4880fa4a0ec6d3c17b6f0ba339e8f7100242efd3b820ac942d75d1f898259d6f1e64a3870fc301d9dea2b5", - "0x9449dc9bce23c7e3b41eb34789dc7765c2f7855f9670c1d145bbd1b2d1b47a9318862ef3738511b4f89cb16669c0af18", - "0x926245ae9d4eb213ebcb88ab2d7e2a7d198557721051fef4cc966cd11be3490a3f83d4ff48f5fb60cbad9c5de4b98d1c", - "0x8518dab07ab15887c68d0de9fe3c0c09ea6bfddb99c145b3f6ff84659e7799da93e97bdd17884b228772398caa8c2ed3", - "0x9969575cbd7953b6308391e9ce2cf4da466b3e730c9cec0e88522258639be35fd31abdedd94b445d7075919482513103", - "0x8b1f28002c19b17d6ac1a6f50afc3448f390b3209b1a76a9a024ceaa274de4588ce82a891a03e878ea08747ae5d98211", - "0xa611963d1bc45b60ffe6756a743ab379e4022bb3fb263f5f305a615c92432199c7e1060a79aa42f7662fa89a0812a4d3", - "0xa3c7706ab74e976464fc341e5a9f7284264c1610fbff02fc36b88e15d6859fbf40fd8c5e93c8237b97acaa0900a03764", - "0xaa623fb8892dbbf4fc02004a44e07c21a422e5553e4b02fcca24dc1f416a54eed36f2f7376dc1e66218e850772676e99", - "0x8133cccf10b1686bf53143bd3520515ec72e7295f6945c43bcef7304de597b767265a3a9f7b281fa353acbc3cf6997f1", - "0x852e4aaf4da9dafc988d0da13a7f31fe8403f6bdab88dec363eb8cb8d3e64c48ff34102f6660642749d11d69b613f8de", - "0xa616028c6cd54a6514fd9f7aa9ff13000eaaf39f582441f73a3ed8208a513b580eb7874b5cd0b1e9a542c40c5887bdef", - "0xa48ec58bc3bd4b512c21d3d55618e9c51836efa97cad42bf79e748542804114714db23d79ad03e410e0989055c9bd46b", - "0xab480f3750420119ccfcf8d32c4a18ca580ce88bffe81433c1d6999c221c8aac482de5c0e41a5531806bd17897698d6c", - "0x8522bf3b7157cd29e948afc8f479d6192364a11f85dd5c58d4ea0443aa6b655f55a80e6a3152fc02a8eea4c0815fcf19", - "0x86c91a6021e738103031c1ece906ff43227eb23088e5ce1b6a1cd58664d4a80d7bbcb0d56c3b0e02cba1e1c2ca22e058", - "0x8ee51a59ce6becf098256e19c9aae5ef0c2c9e66c587d9a32cb4ba1ee0b64c13e2e008908e35f43314316508956654ce", - "0xb94766a0fb91c8de2338a68c4ab08ce5bcf62f6efa221067807dc647b595fe5a342d7122111540a1ca6ea7743b6ee772", - "0x83f917b8f6aaeb9eb2eb742546e3f2dfc9cfe00cfec60051010113d55dba2421974098c157dc2601902d8f40bc84693b", - "0x996e489890dad3c4dc35faf53d870bf1cd76f1dc24e0cc8a1f899bdb44e89dbfc77fb11f7b33c270a1394c909f7a27f5", - "0xa89936283190b2d1ce8d166b36694afddb4c3df01bfb1fa7bae69c55d1acb4e68e5e29867ea33eee8031029b3c6409b1", - "0xb08e5a5d6797ca252d12428b2086e528a6e5c3965d2e5ff2bf83bc71ae9c0346a4ceb3bb2f2e3f8a1685fc343f36997e", - "0xa05bd12a7a6d52d234a1b3e9ddea7b18d6d41026a0d18251b1761f1cc863064dacf821707cfeef2dd1c02536f584ed94", - "0x87c638feef9c88a9f89d10b56fe4bef6406c1d734cd1f01006e2f2b331196a49c7184c10786e855b3de8978927df42bb", - "0xaa194f3e4d0fc1d3107f9564b13e6274bbbfc7b8c1e73ce6677cc66d9319dc34b5a0e790d6d44c614c11feb50530a252", - "0xb2ab7be7ee9d72d1015e94d006020e758b73f200dde81e89e52cd33f25aced0cd84b8c300413d32565c253edbcd2fb1f", - "0x8ec08b22265aaaf27a84a6cca5f0875a3ebc70fb36c4f5e59d60c55bdf2a4fe11ab7ba4b387f5d668e67682a0978fa46", - "0x93643b9541db11b48e0c84caccc8da9ff7696717aa176ce6d863446ef8d887f3159b0ab6fe1f79fac883a371f6736e93", - "0x8325654fd8388ac96935149165fa3238d0848151a04be57f2386c3304056013efb49febee0a871cfc2ee3c11bb029042", - "0xa2c15cbe5d5167f55f2a454390b61d99601614037fd67fd198968531ca2f84f3c214b971ef300a20a114fabc6c67db0f", - "0xb40ed63b0367174b5b4b08396afe2385b0f75ec2569fa3cf60f87e1b17fdee888dd66057be2cfb185e9f32df59b7a8eb", - "0xa466d2c8052a115f121177979620385bb07148e202631979f4ffb01e7e0f6fbce28747df9bf70b2168653096aa704fbc", - "0x99395136290cd020cfba0ca896642c245182e2020ca2299be8ebb2f62e2fc62fe0be593838f62681f6632fbdffd640c9", - "0x8e4f081d9a724bb54fafb66297a32f84687493464550c09259cc6f8abf770d076a514ae1d6726cb29349e27ef69a74b8", - "0xa8d5c941e7c03dba0232c763590e93e3d99fa519b0a65996d20dd20deed1d0192738f3b339edac68ad42016223733582", - "0x877baee9ee979be8ce3bef02422e57799dcadc34fefd8bf2baaf945f267883f67211ac5c06246f7b49f1ea5c99550a63", - "0xb6fcc2a73dbbba54760d244bc13e1564a3c61097e9b525b247cc8687ca08625a7330fc6b15e45a3ee508b4d34853d852", - "0xadf720dde6e9b5c63e361d69a2ab46ed73e0deb82f8e30f27ca2b19c2d8fc43e18ac04b4fa029f553f8d7dd79457ecda", - "0x8956c9038f3338f541bae9ef1f5bfad039d532dbbbe7814e3a3d5442d393ea6114aa666559d8a7e3a026c758a17c79d6", - "0x8d6de7f95f30a5a4b3d441781c7f819a0265852ab78b8416227089b489787c8ae9dffbb0bf88acf1b4c4d6b8a29c1a53", - "0x81d4efd71c9d08e9f6d7f7d7a2fa5089e80cc3f8dcc685686aabf3b4c8bd531b4aa07e328c0fde32b638f23eb78de588", - "0xa30053b681ed8328b5d64587b0d38edef0e366a2762cf5068dae177e4f4084c4333f9a5fa5fede93db80f7a8fd5fbf57", - "0xb340ddfaab2dcded58930e5dc2b72cbedd0e79ef652f34356fcf72054a87fc2373bd3aaf8a88af8d4633f73dfa7d9a28", - "0xb9f3a7809be0bf834bd7affa2059d9371b848dd5e5fa93e83e90d9e078a2fd3aea64410a72457c32d33ff1ca11dc9300", - "0xa9a8ce26a38dcf277ed66d75e111b07348101e93d03f446ea72bd903198122f8a08569f7125f6d4ecaeda8c093a00ec4", - "0x81e78b705b44533e2e997f549f46723a5e6b88241d7a86ca20448ae3ab140e967347abaeb8700594a0cddf1e82285abe", - "0x84724094dae5b7ece30cc01b5f2acc8787de57dc0c37a437c3e8e26fc03069b6e8562302a0f1c95de85937f07fe63d3e", - "0x97a715861e5bb715a17a948d6b6a389b89744e8ccd3699fdea9ac3d890fad027b78d436f8012b0abeedd078a20ba91e1", - "0xb710b2e7d87771416aa34ba2d93a044bb118f279fff62c1224c150ebc30f21abff212019f0f38c334daa5a96598ab900", - "0x853034af5ad08c563ed096ab2d0590ea644d372cb400bfb03867092768d90b7432d35c5506378d001f986c59769d6d56", - "0xb340ab52f751e9d516348faddb45f0115ba0619ec9db820f870007e3a4d305ba2bd0b2a58a7576296531fb78886b16f8", - "0xb8ed8feff520009743ca3313899a118df025a61e6e03bd5fd27898a23beab472746ca3636c22ea3835e9526e17c06dc9", - "0x87af435e3e4ef611d6da74c8d98e8d3f3de64ac8748105dc20287a7dc866f57d10a2b854f7e0e09235eee647dae1ab86", - "0x84108b1f0f0ff73a179cb1be1b2ecb4268e7fd2fac3dfc7f6f99889c90a33b4310946909b9eef31b256b8d0e3ba56bf8", - "0xa6b9fe966293e60bd384a1e4d472b0a72544aba41b31172ac8bfc3e19beaf51da54a66625d73a9ae22c7c4d1b0840a30", - "0x92e82e92aa615e198ba3c83c039b0adcf4393b3fbf9721b2e47ab17a84bded2bc8bc2bfe257d2d76162a87e8bc7ce759", - "0xb9286dd48800606b7ff9c3fe2abf5c49ef0a6b981711b5ba1f62952d6fc4a9999bfdf061c4664a019120f15e341925d0", - "0xb5da5dbceaa7e82f30fa5fde88b03ea88e7003a50eeb53e3f3aeaa63aa586900525b42fe1b699451b5d915d1b83c3705", - "0xb06072869fb8526d3077cc61a3c55d54a7a1197bbbcc875aeaf617d7d1eff3dd3ac243e2c76caf57dcdfe306edcab4d7", - "0xb132db9ee3ed16e6d76db9e6e3dcdc2b142cd70b9582518bbdf5415b3bb476ad900d50004dc0ab6b87ba697c6314b4c9", - "0xadca92336f3546ea50b034525fdf548a36049ca82d9d3cec10073e7cca186227cd662d4d66673e7214a6ed58cf75da6f", - "0x81bbb3fa241f9514575fb3f6cba8e34301187681354c94e7976a4205c0bb238dab52b29a76a5f0e0d4cb1bc82f8857c7", - "0x91008dda2bb7dfffd6746e3544ef540d9a1ac7ee9c68ca9984a1d81041a18fa9f35b8c4bdb44ef3a860c37481d5e9a14", - "0x8224195cf18ca0d8f01521a0ea92c9c598c556746c825a4dda49ecbe324d570a96775eb81dde1d3a14aa3660d50e27a4", - "0x8b355eeadef5fc7cececee71aec3ed30349df8f43f25da1d75d62ab00fc73702b405fab6d422053c2b0fbc7469ace9a3", - "0xa4d657dbf2bb30c1e57e0b63960663bd86ce17204979a9ab82624943ea370119f040b58b067a05ff6d1867a22a58698a", - "0x9379a367c918b2be61a9a42a495ec03f0168a4ec36f753dd37eac6e9f58a26c8510ae7b579a89afdee1d192edefb4bb3", - "0x85b37bddc80754f0432573204a1a4b86a550bfe9689f6c710a61810aa94dedeb28763ece40f28fb3a6f3791ca4c86b8b", - "0xb41c3269b96e190e40cc16e6c7cc8054cd0b7902a43c69b79d8ce471a417d3096b2271badfcdc59deb6271ad3e5a35b4", - "0x941185020a227b7a995f59805c8900f7f6ecff1e7b948a8b714f85a54449a0d41e28db5e17874e018eab72ade20eede0", - "0x8a0795ce082f74e4633acb1649b52b46ea2b4360860fef6ec107910e245b30466bfee8ce59a6854f866f55ec5cc7bbd1", - "0x931fa63550530af5a7ee24964b8b4d0c66c2bd59108131f375c7de86bce59cf52890191ec8540666c895e832dc312360", - "0x8fb86918190a3455014a5cbd15c7b490d68c10cb7b505e9233b3eacdf52e63299d49ded75fd74f8c2bcb3632a9c29d14", - "0x92c896826c9d871a83c4609f9988cec0db6fc980c8b88a7baeea2856ec2a0a56c3d5a846a87d03393dea966b534aa8c4", - "0xa9d4c780c94384f5a13cab61c734836f5729482cde62f2888648a44317b749135b511668834d49296ed47c0a3b9fa8b8", - "0xb7c26da09c3998367063fad19340f53217e8545535d376815773e201ef49e9e1b6bf1423b0b6bb363586f5f05307fc89", - "0x8c445b3655f1f554c2a7f6f7d035121939a8987837dcb1a1663586614dcf2cf47f73633950d8803e2781baaac52c12c8", - "0x8764f924f41d8c5c91fcd77de26ee3bbb86d5a5bfbcc45188be453c8dbe4b875fbc5ef5b01ea3a26b889d7b45417f173", - "0x8605a8186d5716dd5f955a7125619bc72ff385cdecb187a9a646a4bdf6595d67f00e777836261f3a69c19d2e2cae27d6", - "0xa97dca2185e4fcd7583b1e695333d55f54edd751da436b8982de8c344b5f57e35ddb61ad4a611dcde08e287c78c757c9", - "0xb11c576a049f93e0731652f1a1ade62b0124cb7b4e2b13f6505206c27ebf7998ebdb3d887bed01e43ce5c24714903aff", - "0xa46dc516b8ab4aabe35f38af1236052564b01d66c558e7107175064a5226713e8550912867eafe4da133f56950df57c8", - "0xa13e75bca5bd3b08030205cef4faa56a49e5d7da94bc41c708deb2f65343c1687aff26368915a490b89006185f18fda4", - "0x8ef5135a6f1f635a4966aa540cb877dc98c6a88fe462be3226c1a270c82cad8e091aa49ad39862f012edb3c93d15fb4c", - "0x99158ace79ceed67b6d8e884050c6fb7c7a1509e41f0d2b9069ce8dea392f17f88303d0942cf3c0af3ea52d3194123a3", - "0x8805c76ada9dc7e57545a5e1a874e6105592601213e22c1601b0b157b622e51f004a1da754a8fccc8f2a2241c14e21a6", - "0xac3dfe87e17ccda6196f621008716a14be4b983d187265eabb8f5eba7268cf770a70ffa19d1c7e77fab0373eca7a4045", - "0xad78a31ad6f2c84f6e5348f33631d876daa3d5978f6d1a77db80aa219e12c9ea656e9c18e6316f899bbf6c2469cdee37", - "0x8c8726f8f6fdc40516bb64b6c624a6eb4caa931e3a9ca8ce2c31c282ad59f0624ea290b804ba84e339e83422070df419", - "0x9303d1906cf416a184e15f13cf7dbdca5fb296b078079782c9044b9cbfdf06b0c965305a8d88678b53f0a10220e56f4f", - "0x99b9735a77cdc1c675988e613b3e8843e2b0469030a33f5c14383803a1b20e328d45d2fde6ff0d15f6bc2eb8da4f4d88", - "0x892a18f4ceae3fe7cde8f32b84c6bd3d9ca867143a30fab4f939281cec12587929faf07225725bf33ddf154b90972214", - "0xa100a35a2865bb465830ce2f68406d8a92bdeb21056bcba28c0ce8ce5ddfec6e293e926d764499e53facbbacd3f72994", - "0xb797ab22a57520a0584edff499cd1aa1663d8b3f411faa542022c5f1a645a3f952f9164f61d200e4500673a8d95a938c", - "0xb1a457d100def2e26b2b30617ee866264a3ea649bcd9edc7be132f5cad02f3209f5dccb02b95a462b5af9a71fb88a341", - "0x84c1f6d4f29869a359cf89118b1a80224cb574393fb557d1c61730a1fb1884895c4cb07f23c52165975b89fe9d6f5a77", - "0xb6d53e49025bcd1d7960ce46d4f64ff8f29e4239fde1b19e5167d506b086152da3bc3b86fec8ea531a20afe1c785fa59", - "0x9635b053c03d1be0bdf81e9876c63e8541b793ddeeb2a8f3ab0e44fb78f81a9e61f8c68ce393c7c959b62b67f9724409", - "0xa19ca9ac5a345c96a607f979a958d83eef4350ebc9cea0e0aa11469dc554fcc39d9b22f8a3c92de599ca08ff4152ec23", - "0x8e7d45d35f6fb95799846fab51b0ff2415857bb54b049694c1ebf93f45167b8497c3341b656f194edd5804195a7c96bd", - "0x87c05c7d5834394507ad3d363dd0ca5132a7763644e354c3b7a803fa594d951084d37942f59211660f10098cf49adcdd", - "0xb276246af578557aad38190878111e804db0f29846185d7033c913a31e7657d035114448ddfed2f3d75c04c79ee01e79", - "0x868bbcf14f96547192053823e4f85b50fb988da5c4cf73f5cbf23953252b665ef7aea4421c8baec90522f58f027a2b19", - "0xac2be3dcb8082b64a3745ce0d2b97cf341483713e1bcbb37369123d6723968d3bad1410467aac7fcd3b623bfb1d90d9b", - "0xb1e5cf361e0857373814e8db7fc275ccc1dbac8559e8487cc892bf82d4c6be00d1b2ffe40289692a70072c5f80dbacf6", - "0x98e16a5854635c72bce6e263bb57c071194df076e1ddd81e645884367b730d4d557ebb8c74b3c582e09046d2b9ad8078", - "0xa0016bfaa348d44a3ef814b348f7d56fa83b78baeed4a7b58617b6f4772dfa990e912ebf91c2321307884be85dbf81fa", - "0x85690a2c5cec392b6f98cd2d03e4204cc51868612543c7a3112066ebeefd4304c5c8b21da44534224398648b413634f8", - "0xa3a1d00d0fdd8c8cfee153347d590ed78cce48eeeb7ad42032a95baa73cc458d46882d0e9707f3dd519b1844f236bcdb", - "0xaaf2774fb26da59c115a28d86f0c6320368fc6d2c0bc2b7e4516cdfce3058cb423b0026b6c75030ddace9ccb7f058227", - "0xaf507cef7320bd003526fdf43c04af46beaaca5b6ddcad835ae14da60a2ce732b453d8164553e95f2b776df55ddb5efa", - "0xb2656c07a8ba2a2248d0313a7795b99f5acc120648c08e3a77fff5cb9b861827c94d4f2f99a2f2dec1d1667ca3ab26af", - "0xb426b97a51f0439f2da2d0d934693aaf52482bbb48893de12fbdbed1b2155e30791e7098baa18f93ecc45f8dea4f22aa", - "0xa71a7e08426518ef7307c2a1be7aaacd843794601c0d49f4f0e474098ea0faff74fb5ae2bee416aab849afe04be434cb", - "0xb6d510022dd3b9ca35e93ddd2ae77877967dd6966706f339b2197d2891bf523b5d55b7cdc80274368333f9249b62a7fb", - "0x95d2f6cec1b4038f56c571ee0f5aa14fe5fe7b9a2efab89eab4c51a696d2ada549a42095245bea14d7f7ffc69ade417b", - "0x89147eec9de685483d0a5e21b877cb550518a1bbcba0ee65e9519c294fb0c422a729bb0f5a8c8e3fe77070e1a89fcdb2", - "0xa66e7116eb277ba900c06fa48baf274e2a6865977698a504dcc1d0c20f90a7030bb2a841fdbfaa5c8ef6d81aac4fced7", - "0x815053a8483ce2a84a34f81909bc3eabefdce59140f0fda6da77ec005e5dcfdbc6f289d0f0513efbbeef0358daf94025", - "0xb480d2b6320ebf29f3781f04dd88e835ad81d2c63b716f6f244fd2b113ba3781001a34189df586cd629e70c2baa0e5cb", - "0xa74281bddc3a93503a695f0375121b3bdf98db4b2b053eb2cf0773647f6f69d1d98a61efcf82e2a823035ce803b82001", - "0xb84fb99a6943447cad21bfe2b34dd8da43d349e53e85b73fba8a5fd0fe3f41e7dc629960b3325d08af1544e5dc66de28", - "0xa8d11ccfb0dec31b39efeee74c58536f29abb02d06dfa11acb7134cac626a17ff4e204d1d138a472c63c629b6f8406c4", - "0xb5017d42a2388d90bcf4d0b6e015c63612a0864b2b379e9cebcf2e869e5fd45d2713bc549ea472d77e82fa8750f364b7", - "0x83c8e090de4ab6ed169a033aa4ab84f7f3e2b54186106790b30741e9d87d9a5d61bd6a285447e0d1a8e1865ee618a91d", - "0x8db64f3a1680cf461f9afaed4e714709d37559071bcee52e13feb5627c1fa7c093fc8923ede3e70db07563d2d1eae69f", - "0xb6d20dce2f50b78b094949e64edc2ce1b077a3258692ecc2cdaa01ec19add246d0832a319bb0d4153198e3a35091d86e", - "0xa61e585ed55dedfad57352d2abbf8ab336a999a5abbaefeb5d0da9fb0d5bb791119e52034844ffeecca9655675d17228", - "0x8ff58b27196f589ce0d3461e0c00d695da47a79809719b4bd4a229ea7bc9319469744f2254be4469092b1a27532439e8", - "0xb5edaf7c3f9dad7a54908da0e7a153d69a6bdb99fde07fc42928a0dd38031e32dec81c864147066412a8ca240e7dfd0d", - "0xade064bb3f87431a32b361074a89dd280cc1160a57fb3cf21eea5066e886c7bfc3655fe39099a1913b8b53242b23b2ff", - "0x9169621f97887db46384b43ca24b1447e23fcf5abf141e70fcd1834e9d691b9bfc6e8059d060bebdf9922608593bb972", - "0x8727bb06fadf0633fb8137a54d6912cedda0bbeb0f93af97deef3490b1b47e58fdb37a972dbab1534a5172ff0c840114", - "0x91991b98243bd7c138bcb60cf703a9d0828f6791eff5c2c1c5cc7e8edda258d3cf72680bff2c563c8e964f87450a3037", - "0xa1bddb74f5892597ac687451b932449305d6deba20e97e10989bae311d532a7b72a3fab08dd832589e6a22c0fcb548dc", - "0xafc52ed64208e4beb029d1428697fea6add02210f613551d1e5ba6011c5d13f66ce26b3dd2a39b30186c566b1af66c06", - "0x929bb88a9e30862be5f45c002c11537780d151f9836edeadcaa4a617b0bf958046ce331e15bee646f9eeb4d9ff854661", - "0xb3376241793ab9f1732997cdf515b9114f88bb2c25c0bd3f3b22e5b665e1ae94fa3f6a9f88de37b7792c3aafddc682a2", - "0x88fef7680a7fb665043264c9733dcbd23e20628909278711aad2e54f2eb8fa3d07011f593069b6ba7ed312d9ddc3a950", - "0xb031434d514d0878b7011ce2840e23e94a4386034dce422f37fde539aa35cedad1511f9eec39fc23c7396f43ec22cf92", - "0xa4a32f1e58c4ccb2cb4ac6c2dd8acafa292810c77126844f33287c8d522bb8c32dd89ce8f7c1dc9a273165b0879a45ba", - "0x82e5b11b9fad7c7d5e2a8abf03943aef271ffa43ed8127dfd85c7957b59d7cea56039116edd0b0b992262751c347f75f", - "0xa650327144db1806cefedd1daec1de3164b77c02a0aa652371ca0401b50ec3b7a392ef6a80de6d4724892d71cf48eb07", - "0xa88d8370d88379b52bcaaf596c32faba155db4857bbc7eccf89b5d67a97ae481e53e81de6c9461a6719d179f3ffbaf16", - "0xaae8b3d1b1bb0d71f19e37867885a1fd550f7805fd1306881515d77e5f6a990e0bb40c685e350ed09eb4a55298f3a393", - "0xac024fdd79688628ee188a7a9d39cd1306883c260dbda9e79eaf2d2f57051b5379834dccfc641302cd12a8a24fa2224b", - "0x90cda91b9e71b7bbc091b9e8e28d79f0fce42255e24a7a3bbf3348651405c46d3b6e2e33c5fb5e99fb4d0fbc326f77a7", - "0x91325730bf7d71855ce0462a2fd0840f3753964b296f7901e1ad761f48fd133371fcb805c315c4d8cb2ffe34e98ab9cb", - "0xb9e1a298ce9efdc004903b21e573c113c771b1bb5b25e2e88baac6dd7bded130016b2f09e50a4346c59adee607a71760", - "0xa703a60c430e365bdf9023c923a04fd9db427ca0da2da8dad6b0f0d5d352524943839d859c15dca64b590ace6cb1ca89", - "0x995a5ef468a38caf66d58880245064a7c0ab520ebf3c9e9f956110a9dd68658baae22ae274a48d59464c8d37d2f8b643", - "0x889c6e4516ece0e0fdb8c99aa482f367f2cef0ae2ce0987b6b602f6c856b02fab27114a6f4b82050738bc98a48ef5837", - "0xb432ce5f638aa48ba952b9c2e06ce822d531c9a24011d14650cac0722a4c5ad1bf22109a2f429cbdd22a567ce6f03094", - "0x86fe41234d309118d1256a9ac79b7bf01da1fdfcfd579b655f31b7c4cdab6f687d46855d56bb11bedd4b0be17e892b2d", - "0x905ec536f23dfdcc4f8128fc1c00daa877eb3caded7637dc911aff0e6279eab12f1748949e4bf015e4f8e30626d3177a", - "0xb6b9f47cb82244d7b1102b37cb52f5c9336e4c05e4c90f5e448fa92444bef12d2fbcfc39af9e1fd05811f5f864f12047", - "0xab56e7c534ee1f921351dfed3f3eaa127869849b44540b39b0dc021b3dc4dc94027e4161f7f3ed40bf42a1d08315264e", - "0xb9c62b4e679dbb3405733bbe0740450e72ccf39bf953142cce65fe014f132d5af5864ad96167027012c98dc8b8889e8f", - "0x82b8036a3fb6f648c6fb0492334fb3dc8f57c32779d4eef78ac2becb0b93f046dd68c2fea3b5039c21ce8e1efefcc685", - "0x8525738182748d6f901650cc328ae498cc3c712300441042441f66c683e06dd741b644e8e98732552e55839b66f86b82", - "0xb625cca7bf4ce510f21e8197b223dc49e7ce245c5a5d1e901438eecf7160a0bd37d0196191b1d934779f4b6a387b6db4", - "0xb63d753d728670f3b63d4c24acc4a3d4859e5f15ad775e502fc50d7ca42b0d2484a8649eaaef9eb22cef28a23e10d5e3", - "0x8e951028c0b4c5a691a219a6dbf348ef66edef60796094d5f6abaff1ad5802b53a5abec9b8b3b3b98f8b5858672847ee", - "0xb6b71004d898a3bddbcf7f730b8d5c0d8bba0f3b508155412446732ed9abbc1d03a90864f4689e6ab207aed495830e1b", - "0x98f33a74e36c035d9476b198dbf3a75573856264d45313e5bdd89db291dceaf4084917a2242b0a30d3b1ba4ee3016c42", - "0x912fdb4358fe617d7981bf9a9986dade7fe279a0445d7b14951ed77eb88c77c4aff4162467e40fdaa9dafe78da0ab4f1", - "0xb17bdf7a896480ae70b3696cffefbca468b57493d5db59362dd85a3da296e1162356358080c8b0a7f3fde798a3ad1d15", - "0xb47ebba84e62bf453ab223496a892fea2244ba6c37615c3db31c2ecc16a5f9519dd79aa710ec1220a2cebd254f7690f2", - "0xb3361190434ab75e46a40e0ce21ccc251fd0139bce90664bd33d9eb6400317c3210509e4ffeef604c7b05b260544e19f", - "0x966916b3966d7d33be49fa4eba925aa2f92adc2d0228d1144ef633dc5d67fd8231087c488b492688fa142a8cdb45ca70", - "0x8ffb1491d4448af82b7cab5409ad26d99ef6ef08158c73a9ee9626c5a84d2fc6d852e2c786c94b47b5931c7194d5b82a", - "0xa2d4a5bb458688b8f593f39cce2b27fc05f8ee3985f4c5be453706e8f174d5a6585c2070c0bdbb54aa1d8e79b5ab40e9", - "0xac180389d0432699bafff42a4c3da59bd32ab1bd1c4b4a4829580577fb3c5eaf8aed4dc61a93262f23ac44255e6c2b11", - "0x87f8fe99acc93080e2a2ae51eba24f0b146c1355855a202dedb7deb8e1cb5c6ad8664ba0e93ded5ce253597fe015fdc1", - "0xa554d88dcef521dbf5e4823bcc9145c8ea98c598cab56c85f101ca7be82297dd7f361d457966bc69584adda6d40ecab5", - "0x86ee126cc839d869c7e91f0f8d919929f66c1f67675ae8c5eaf6bc35866580c49d45ec8edf0891b546ec2fe7bebbd304", - "0x970d74575be6cabcd2e33a8dacf25b378ce750478bb44086e1821c97b6b27055b7f00cc8ca189954f0150de7381c80c6", - "0x963badd0cac713d8a23dabb8ac7da5e9a83ca7d580ec81dbbe3e5d53c5c9370b86222ca685215eb282c8f67a977b4b66", - "0x8d2735c85136625b3f8c4196a8f892e276845ca7c876648498143f1897637807a9a5162bb90773099a7b0cdfaa292263", - "0xa1a8507bb8a300e1df882651b0155e46a0f58399375f4e5f993251663b5935a76a02e60999a4851fa082a89d5cec2e63", - "0xb712dd139d791a95486d8fe48e35bb8bbddf890435dbf8dbb670699dcfb143fc582d4bdc8a6751f6bf58a13dd8c2871c", - "0x8f108fcadbaa43dff904a23c89d809746a9f732be817c2c882ac3493624aa5e49af7dd9b46de7d9d01ae982bb78761cf", - "0x80e270c6620756d3d127457fa2e51592604f85479a1004d63c184d7d2ffe2eea4ff75faa436f24bd1494f4eaf90543be", - "0x81f039fce432a5d3bf9649ad0fc2d93de831f5b9c0d0e5fa92d35b5bf4a52c739d478289c2386efc964026134f91ac0a", - "0x89401011d51b6106855487a37459351f18c39f08ce90b15e52a876cf36e969a9c9fa6cad94a55b844ad45fcf1807f705", - "0xad66c149ad105ce8b53d38c410d73a3cb3ec910a9f0ae798f3aa5207501c7ee39b85f10e91b4cd91e6b280f3912c492d", - "0xb709445e56d02a558a1496bd2b9115d2635855b18984cfb908cbd54cd279d29ecab21cce704cd9ebcf34456dd1195d79", - "0x851059069d9fef4eadf6ba508ca330ecb7436ccb91d09f5d0416874f9fbcdc56472d2adbaebc63a63f190b6abe7650d9", - "0xa933c1b614e6d5a58c599b7189d06bfa3683995f449d636805c8307195d8e98b62ced873997898d6b1b01f6e6a52b743", - "0xa692ba436613db22bc30c3f36a516971158d5489bf2c50c39d0627a74048a6d0b229606823f37a0832913425ddc30d06", - "0x830999596d203b96329185c100bb7360189a50f7930286c36544d20e57b8418c71d8db331e4352a98f380c68a49b2005", - "0xa56d7c262bb3d443fc0cacb2b61f24554ce35b8984fa3418bb4e271d5fe4f5378ef7b12c6cd02f537820040bcee95f98", - "0x844a4e9a8c9eea0b6f929a80da9f4e4e273e999fbe182d3855b0a40577afaced6f8ea285595573e99e13b6a71b985c03", - "0xb34df6205fc429c9b7cec189b2634d49a4877f22bb8060b9f7baf8c2eac4e1d476ed1f30fff1f4c019c65fce96abc554", - "0xb3a97648b3b79cc513246d3d1722afdf7645e7216af233645fca6a2756686592635facec913d19acf99ee586436cb58f", - "0xb9cac906123f2a4aa13d5d7eaac84e84eeb0a1b7919526de5198b5475fb815ce556f8451c953bb0bc910c93c6fb3fab7", - "0xa5e441019d492897de73d31a44a0055fd04e8cac894d626d0457ffe9de5394d0bf851dc5941790cba388b403b86864ab", - "0x8e3081cc7999d91d787e4c0937c9e22c959d2ba4be6fa04eb97471997ef150836a910ef28455f117dd54fa9ec655148d", - "0x98eb793d88faa691ecac3a7c78b25eb3a833ccfd0275186a63b1b1517bd2b984d9908c84e55f044b31c2dc5e251d0414", - "0xb38b5454c2debaf1a4e9e467c6205cfe26d52d1c1dde5356c089abfd6a90dbae89525442419f108c7c8e82e34ec3d5a8", - "0x942545089077b9f27304d2d6ceb3d549e983f100417e88332bf05bebfe8d42b75a96171ab3bcd049acc859f3cc9ad1fc", - "0xb9d444777403590be63076b5dbd9325ad58c1eb244dde2c9628234b62ba74f6b0e956642af2d08cc65f82a1b2e24bfbd", - "0xaee8deefc7ac67882ed7ee6c01c08d7739b6642deb2614064c69ea38c5c65e06cf609bcaf7db74545199cfa6122f23eb", - "0xb3e476268770abfe0cd64a4f878c58c027ff352569d8cf571bb067368e777eba6c003d344746fd006c8bbd474fc3360d", - "0x858137d63f90f66b9ef2a38d7ebfdae1bb89e5bc1d9032c96d699ef276aa2d7461366c00de8c47de9231d9ec436572b6", - "0xa3dc8fe541c9cdf89d83753347d8c573c49e8471dc07b5d41bc48ad1b10a3fdc218adaeb72bda0f362c8af8e1194df45", - "0xac75940ae476a6ff07cacf70a379096786d10a5a5244fa5c466bdd8af69b1f98e97a3a27877739dd4b223627e0ce6d55", - "0x8c6809f893c5fd03ca80d845147a82d8d54bb7dc6a688733b1404dafc360c45d5ea742f98f6a70ac2decfcead05d876e", - "0xb0818eee75f08ab207832c591aa783193aee5742147eebf75cf7f1eee6a6d8855b309db4f7ab51a16ab77bf619e14fef", - "0xb339ac167debc92cc9132dce076bce281e7f1b9c88978d36e1b5b9bdeabc974af318ff142f746319681764bc4db191e3", - "0xa51dc040c75a8a8bc3b0ecef47ca313ae13d9560c782ee014257ee728a09432c4486a3f87b5ebab690231735fceadf80", - "0x802500a52dc271c52f893b620952604b79d25ad243489dca7cd679b22907fa85947c88dc04463268d25dcccc8a6c34fd", - "0x97b136a881f500b07e5b0b79fccb84b93dd108074f92a1cd76e441239041ff389dbf03483fe76cf7c22a5f40b73b51f3", - "0x9155dfb5d7f7915e50da7a715d1a5ac5b43d7093546d6d342ec8b69d47a86cfcb9dc11d8079f123854033b8d3e1ec928", - "0x9423ac1e11f70b5d0cbbae48b7a5be8350387460631126ebda095b3b33a7ee2845776aa20ad60e2bfaf975722d43064d", - "0xafa907dc76e03d10cfbcc226e50e3bcee56baa4acd8db2cef8e484ee7b7bc536e1765e764180663710c4396e22fb4dc0", - "0x8b6fb4bc641fe2147d3394322418e2e8e091718e3b54dab8d0d6bba687bc300d73cf1b17f81e2812f0943a8bbc1de538", - "0xa8bb533bf42f56edf112b03d34eb64f6dccd57251244f39daeb6531af650d0368f6e4a0f9171aaf4f5a5b4a17debeb56", - "0x8d763490dbc9a9b73bd571833afce20654348cd553a69678ec89454c4cdac044ed3ef0458cabdb60ff35af5e63405961", - "0x8d3ebac80c55b7ce726f4cdac41c7e2f6a5ff4ffcd5f1803c463ae524243f136dcd15f9bc74f8b271ce90a4776c94868", - "0xab63cd85311fb9889041e692bc9d5c1153b26a805b511721154d28f11dc8ab84733387fd20cfa30c566ab2f8e066af4c", - "0xa506ba11063b14f25c26c92667dbd9eb67c8585d05d3980284aa19a09ae97599a1cf8d7cf45b70a32063f1fa3174d3bc", - "0xb834434632307602d9e046de6f625af5de673996108911c6b05d6bd3e2aee17246b2d860f01dc2d6415fa61c73110e13", - "0x8248b69f51196ce1e15fcdc25d487153896d1f74818a5617500cf0bedd5180028e6567533536919156860e34ba275f1e", - "0x86a5ed8b6a1e9d8d17b69640220bb80c9065198c8f7610d4ee6a60d2d808508771a84d6bc679ee4db34f43f94315e0ff", - "0x8fde55abc106b2afdac3b8796f83c8ce1b90405532fd586d349340c4d7a4f4c46e2a56fe2663fba770a8004dc7b9d523", - "0x82489db9dccdd13293499194068bb4ee8fff51f74f1b504d203c5deb5216287a6d614a2e0a769d4c929bc103582c92b8", - "0x82b2d71281cf886e80e09ff907c1f9213dc444c058e965f964bd17fd36dc0382da2449fdbc3aa7b6d07004d6722a5848", - "0xb0729dd38dd64c441e81a94fac0c8b5b3588081e43a5b0298bb576b16a9713acbdf09b9bc2499c677064619cb3a172c8", - "0x97c4bd5c97182e80f55e82648e387c4a3362c6088381e96b67cf0f04bcdac3dc670890904180a5388b97002c70481235", - "0x98d99f80ae9c59c921c6ff71ef01c2ba283f531ec32666cca1fe7dfd9bbfb09f197e9112af1761068cba8d6319af5d74", - "0xb0569d892ce82d87a3d809f4c86a88ce627ed420dd106ae49b88b8c470ddb081a3dbdbd92d7fc032a7082650e4197ed2", - "0x8ff68d42ec2dc5b13ff5c7ef506c619c4bbb0f62fd4c08e320953e5cddded2aa34624c6c5768b546cc2f00add0dda58f", - "0x8b53131206c80638dcff21d7f2dabdbc6faec545f19ab1f4f2bb858d6b01d87adf886072c3a744d58124b8a7a0c87573", - "0x8b9c9aa127ddb950cad4fc21cd7c8eb802cef6db7290664b1773b9744836450e48af503009d4bb266ceac83d765b3b9c", - "0xac61e051add512e749588e2549ff55f3e6fee5378443cbf64c80cfd7b260cfa63f16fc3e242aa140ea243435be28179b", - "0x9240700fdcde974f319a90ec4a9b92a0323424fe39e513c7412c621cb33072d193476118636bd2655867ed2816e03034", - "0xb6b05975d0653079034f9792d5d8cf5743e1737e1b3860e431a1e159199efa5a55b2d3283f6d270c9ed3156a233e858c", - "0xa2ea8fc31294943a3a6d02509cf8b75a7b5d94de917ced468fa64a6c24ead4edef11c34782eed848792b0570219fb77b", - "0xad0b54dc5dceb242c05a7f7c529289c8caed93ebe743f6609df653aedffbd7eaffceb53a18dfd109f28d14c80e1f7935", - "0x81e4d4667900eb5a8434e2153503b2318f63708499534a8d58382931791eb0ad0522b41cecc7eb0e6ddf99002bd0127c", - "0xa4c5c329fe159bdeeaecbaf479c60c8f43a58ce613e135e9e9eed4af6bf5b6116bdbfea31c82bf0ba87c3f651e1464f8", - "0xb95eaf48a9128df7f970754af926f9865c2078cabb4da4918d8b45e95d72748750ffd12f1d8d3f76cac0936ad0097d16", - "0x8567385d52e6f6dceeee52f6b690781f7c05c26f0d20912bacc38c23afe8f64925ba18f8b6464d4a0557670ed0cea232", - "0x8f7483cacd15fb7e49b2f8deb7ab05e64bac18ac9dba475666649c2cdbc5d6df0d5e789fdaaaa997a3b524521f0470ae", - "0x9252efa0698c0cb30dd431a72a0f5f2f14429f6ba50bb60f7039df45777557afe3ae732b9283b4a814d2146a8cd8b7b9", - "0xa54da5287928a02cd5eedabe70cff80e56db252e2811842545beb14f25ab67788460a71ab8ee47cf0c1a5f8d01635256", - "0x991a80279c622565a03929c94590f33cf0621a79b70a2168a41a4376bb3f0dd12a9ed9b16c0b6a4a59c50b5802449874", - "0x924ff5d3a6f0ff4ee58c3674319971257543d2e19f0ce3fd0b0edb214faee920f8d6199ca794a173363a9fa06c96d7b4", - "0x96b136b8df76ba24e4dcd68065c650fdc224fdfc9c1ab6410e008fa5b9580680c3c85801fa217917c620c86dcb5ce3eb", - "0x95934e64af642e7d45ada1bbe8b9fe972877a674252005afc34ec2e857f755ea0d77e7759ddb24255f21252d6c739305", - "0xab14c6bdd6d1ccaf69e0dfc6c832751afb70f89e4800c6fafd22db2e7e5d6f2addab8b1267c8f3fb85cee51c761e69f0", - "0x87e2edb8dec1253547cece2a7e6934b0299715e634d599316af0f076c61726c7f2aec83eaddcc9add1c397cbc9fed0ca", - "0x91170baea88ba00fe00db375e8d948f58061f9e7b36a4573031b9996757afcc2c7e9c2d9642bc51402aa586569f0a398", - "0x89d99b120e4565b0538b2ef4f8d8c05997cdbdf61840e068054e7f21677cdc1dc2f63adab1b6814225d14275c737b0e0", - "0x880c2b79bff714665e9b3a0a647773a212ec5f0dea37ee6b29ed6850692055013e108a86affbe44d1abd0ae80a748950", - "0xb564181f9ea65ca25b1ae7f25eee84b73f9db109ad1939e6b9351663ac0b083fc13e6518ad8eaafa3caba9ab959bf7c5", - "0x93cd91391deaa726320574bb46706fd8e30ffc2308290c79abfe2d234d0f0f59ee4c38791e3bbd8c3f840a920489ebaf", - "0x8e846d48e7b120b59c6556a0394d25f744dfda0cd58d4e70029837753a82afb63a015e79157fe8c810cc68bb481d19d6", - "0xb36904e7dd71bada7c9b9172e4a6748287cfa0cb6960ccfb7202a36c57bc28d351e1f5371c2b449437cd266f2d22e7f7", - "0x8947c11af34a42f314983ba9c673e62fcf44c6c1f733a697351e1b8422a75338a85bb19149fc130d01492ee18b3c9492", - "0x905afc0103e34fa9787102fbb80967b8c917bd03abb02731fe49ba1acff1e96059227616cd21080563e92dd021117a84", - "0x88c7acdc65e6373e4c8ac6a13d1bce1d534aeef2965a4d9f887b2e823c7ee7921db1397df5cb5e7f12030e310172d6e7", - "0xb028c19082411efe8a46c8abfb9936c005e766e2ad3120be774172f16419e2b04ba3f31132ed2bc209e7214c2d7b2b61", - "0xb6b3a561d583870193226391ebf51ef47185ab6efb3556ae59106b6f266776064e5cdb66f0c93748e60d557db64e8f84", - "0x93732aa1473dc2e50610eab2c8152f2d96992fea840ac2d82c6e2c5760d8c1c05e8ecbd69e14d03713f43e77ced9d3bd", - "0x9734c433ad41a8fd91e161de033a2a55189ae31e2af406d1fae443a182bf1977dddff93f6fe2ac7d9c4fb955c26ed59e", - "0xa1f305d17c36c06c515d30fdfb560f899e80a2e2461d0bd947032e5ec764116c7ccbd528ea42a3b9351e3c9b45904431", - "0xb517f46b582655e551f766930637e8dc2a762dd7a2c54fce429fdc4cd503e9fe4bfbf323f50860be2c18b3a17d528654", - "0xb395b5c48b1cb0daa8c156188b390a78441c8f16ecc8650520f9f2914bd1d992b83849bb11ec17a47f9f2d40d138e3d1", - "0x9147b715b62fd50e59bc96d210e10f1062c87a90263b5586746325deeea89e759464be55a09b0548766e13bc910c4d3f", - "0xa7dfe5e7a39767d14d531d371b92fc4979d326ed0f966eeb7b4b4252d78117bf5295b3c17d1fd636dc2c0097cac901c2", - "0xaa3f9fb858b30675e9e57170a1835717521eafe4bd0a0690b10020c7a753951576b4c7dc80cf9f042894fd5741b41b1a", - "0xa1f11dec034733e862cdd4aefaf0252a9e8175b6d4c834b7a7d30ab884bb6ed6a1d92bb0e958f0082085cd80157a0e40", - "0xa1751d7452b7c5596fb801466d8d07a70831e568b8ca66fdd75e5898739709795a5768726ebe13c469b1d51092d86a60", - "0x80acf49051b7caa6efe78318792d05401f5246c5b3bef25170b2a49adfeec8048ad5a5e6d50cc498b23896176a9d9669", - "0x94156df9959c678578ec6e12ac068f3a28d69a981443fc35161d14b1f0327b8424746d62869ea9377a86ca6fd2c95b5e", - "0x95dd91b1e9b457de913a65f198dcdceb1fca75692853bd5ed44eda6343f32126e6aa2a309411e019dbdb9519c865b96d", - "0xb2516bc36a726cf2dd5553e319c64fc508682c7446a2a5ae696e43f1a8c129ca9602f5a41bfbb57865a9dad1d56728d3", - "0x90cd63b4f9216fb70635e4dcbc9a6c5874cabeabe4f9ea83bb923146d03366d9befa48b20a64f3a2cfdb0c3a84007ab2", - "0xa55bfe9b33781501f10d5632e8f5330841eba2d0a64b0aaaa92db56f014b5e44dbeda3b1f5b2e4c17eb6a243977b2a82", - "0xb9e84b3c617708971f5e174fb8718906f9bd353f8b0fec8fa03d1a6e4bec20430212396a5406595343cd15777c5a3f8b", - "0x97deb79dd82185555442f91fb9a70cbd30a564751528fa0df0a681315b8a71bab5073716908ee0546d70dc41efa3b53c", - "0xac77c2fe555584b9cba7438a4e3904958f671c49536f185cf1f3b25c5a57ea65e15554de22def94c5c623e8c99e47a9a", - "0xa27c62d39508552d79d2899bac6138783f308e3befab65a96a1ae4ab108b799628cf37db1ec72859a0ce1ac68f68b106", - "0xa2aa287741f03e31f2c87fc37e228279b1acb886f32c6438b3e9807b8126da875fca7f194295c45531e939a13048a882", - "0x84df8999c4c5ecc807819248957d68909d16ef64d94a820dd0d266cddb6775c9c7464f0b2385b7bdde8fc0f2169a4177", - "0x8388e1a1babb941e03806b392fdc1bbe1a01438292ea1db4087b010de0805be78cfa56d20e9ef7c8b6be5a04bab1b1e0", - "0x8cb6ec409cec27e7c4537ee2e5bcf82a33e7cd4761d19059e902b6068a9744e897a6010e2ab42ce72625cbc433892ec5", - "0xb6e71cf74455b0f506e03eecc0976831ec9a56eb8fd0e39e5e12ae199180a4c6e5123174ddea6ce6cfd7a414cf0afc5f", - "0x815dd267d9f67b4d229a798a499b70ea2a611f3bf2a9d3698d1105890a2b6462fcc7c6ebff0d5d709707ee4ffa981689", - "0xb4e5b7fbab4d8a66d1b167a5acaa4d53949e1fbdb00107e62b727b4b4b2cc70e2685cd4a16266e8d13ab176f9be09c10", - "0x8d1bae7566ff551f06baacd8c640d0d04accdd49fbfedda0841914aa1bceaf9f3f27344b80bdf5f9b93ada438a4e6d68", - "0xadb054123e27afd4a691d2cd808a3232ab58f56fbd514935caf47b8193b4c64aaafed4d08a7a10ec4deb66be8c292e64", - "0x8ab5255246e01478ba7dc6807c84850308a719f8f8433eb049d5b11cbc361c08930722e7e5878ad99fe1586b3d11cb1f", - "0x90e862be1e3d0824106da33aec437a87dbd2599aeb58d46b4a39a5f651097d49943c3248a154e09e309eaa7abff3d500", - "0xabf16f35e3b2b29a72cd96802c900fbc54100484299198b2d40cc6071945781cc9bb3eb43f6ebe433a14c1aeb172929c", - "0x867a0f396374cca7303845d8a1e4bcebaa53cc0fc2e790dd58cdd0b5ff2b9a99e18ad4e57aa2b061826545935a5607b5", - "0xa6b6a2e22932d7c9ba8f27b1e1de8559631a81effc77ed2cd7c45c48e49ea7d2f68c59d07a155757493ad82f733d93ee", - "0x885e4c3904c545c0eecc9cd02e16d359ce69a78e3a355e7fbe6485762d4523f2604f2f663a4521152a8bdb6fd4a9d4be", - "0xa668f417391b07a35c5d40ee5212cb7bdaffcf040a4f20a3d7e70e9d715bd908d4f8fca87a7dbf7b676e088ac8651ee8", - "0xa70d67f3379e1ee0708c34c4c7a7f552267ff679460b9d8891549077c724becb99ff79b35bd80420a4290f293ed4133f", - "0xa523cca782ced0d8a3f7e19707f9c64ff38495f739e035bcfb5483f202b209c07c50c764eb28d3bd8cf68ae093c46f19", - "0x8ce98e5f96889ebada090449ae198208cae5c247cc5f6fe7800b4c2254b0e7f2475b632cbd5021a0871b466c5b943dc8", - "0xa69cfdeb27ce1163ae6b6b4b5d46b49507c7e62789f2f90f7f5a0fdce79de988c755cc9afd8397b1c02976e03589f985", - "0xacbffc94dc0445f7797a0d83e5107ad3ec8bf61620fa83e73a999ce4f9b6bbabb00245a619aa6f9b082a2711bad5ce8a", - "0xb64162794503c86e478c23f060228105bab4f3f5d46582bd455a94526aa6d71f4c9630d8d63854c8c67aff3904681e0c", - "0xb1288073c012a0b2b7e31708e874106031a8cc98b2c94ad0ef1d7b9df42f429f58caef5494f6d581baf12970cded2a17", - "0x8d7ad217c3c1cb74cc301540a0e43be6d74d5a3c0383ab7c9dae57e25f8725781735b58301ebc014476171725299782a", - "0x924a33c759249af270617767101385910494724a51fc63600836ca00d06f0ca86a4a0a85e5e87cc29e404ff8e04d036c", - "0xa7b21ad39bcacc96cd857328a83e5d26cddd0a5bb2326da9a8f593927ae7b5927704acda9ee217176618c964d0452d54", - "0xa5c3616c308bef98807a852e16f146859b0b1f31ea8a721941d90abcbe37eeacb4403c6568480b6d6e773bbb94a89307", - "0xaefaa1033e47673ca2b68e4c945e6ed892e223146d4fd24219304c2667777c1b18a19488b73053cf7b0e6e09ba1278e3", - "0xb308c690176bc43051f51839d3ae1636f6de5a57c626e8def464820ce2f96ca09ff26294a3dbc9b4573cfc42dd03bbb0", - "0x8f7b1253ea9e257195ee92c54de41f2e7a310c90602a628ba3180e059e5bba79d6bb8110d1964c59daf4b65cd9735704", - "0xa387f003f7731b81bace54c8501a3a2a25d8a910cbb28dd603ed16ce61ef1df34e233dc8579071856d7198a071efedf6", - "0x955ad5523828c0fbe8ad6a77a191661ee9c8005b741b7b0439b76711b6992795758d76133399d266df5e494e4f86cd67", - "0xa44441964f5cad7b54d0105f162ed3ec40d12870fe8c5c30bf16238440143b330ba986d6adb00c9626747e99449f765c", - "0xa52df726de07cccbc77e81abf4f1712657c9261f65feee8815ef0e8a4ca61b8e470503801f1da8a23fe6d52f3306807c", - "0xb5d239222c3d852f2c49997e76d97b70bcfe73d85e81258d9781f5f7de87f9c81648bcf58cfffd554e4685b2f860e6d8", - "0x96f0193aecbeb1540678f1a3369401e916ee75d2a85f7124c555466a3def91a5d8b5f774e3156a163e1010690d457c5d", - "0x886b9f4965120d942b076d053571837780232e139c3efcc6bd6c64eabddbed2d55c3a9a06001bd7a2ccebb36135edf4b", - "0x897a1e4e9f4eaf755807bed984ef0bfea251740386a168061f4386819acaa337fa6d3f038b4cff9a11926e68f7888f90", - "0x989d9706f8396ba422a34b55897b9e261ac1ba0c7a7a11a30562ebfab92473b9e9b604ea8baa6067137a4ded070fda10", - "0x96376812651020f68c6a1f0aecd04591fdb628051f01daae179f7008ae33af5abb42e8f304662c9b6e2584e8b02ba6a6", - "0x9344e6f3ce42ada6281d0fff654f408e61f0acce81e23ce47466bf1145a99cf60dfba9a22304efbb1f428c92357d644e", - "0xb90c5463445156c8de69d8c35db656a76f3e195c325808396a829c11c06a7503f3c092816b3f23a263d56d3f2c075ff7", - "0xb4dc6d948f4b67b513ce27fd12bc8efe43813c119d01b2da391d01c1cb0abb7d51350a5446e0a72a6f8bbbde2ee4b0c4", - "0x84d208ab983941bde208fd71d58c7f9335e14db237cec42df453155a3a8dcb21dec8696a1334cfe5d035c192fc44e88f", - "0x9577996c78372d2d6c9de27d497afb29c918bd894bfefad9059bd85cf2ab520ce1d517994724e1567f12e385c126f26a", - "0xb778b9054776a2b8ee81be356050b977bc8aca0d0a202be91d56ba89d8a384bd29c5c652ea084709d4fb365b107962b9", - "0xb7ea99f8c841678dc854527ad0c8ffc700b43b5b36b3d18303e51175b3901b144c53e22eea6ce7cd500f6879a80a8c21", - "0xb466aa7d1a5ae3d9aea240c8114b3dc3af38f7d8f1e323800a6382de5766f19626d07cd6ca6eddfc4d71a43d2d49a07a", - "0x8a72b1ee7993f16400396982b6a5198f0de08821431bc66489189d5b364b0e36daff5077b48aff1d55c9a88580cd1dc2", - "0xa7c4dd6095f8cf61f42c5901ab67e9d1ad21a42d1eae9ca5e147a9396507c7a21747c2794f71ac66002840f4fa4e1dd0", - "0xabe40e33cca787e7c521e2e97fb5f95cd4ca7ad6148a505afdc94e0c003e4903b1524164a1df2b2a1330fd800ac33b7d", - "0xab8e1930b1e592aa2379cff636e7fda9fd7f05b358f47d9cbadcfe35fbdee5bf06469fefc052f62159c10942ea2bc5af", - "0xb28edfbfdcc27c3892d64e7e05a2aebb173808c020186c225590b03d91dacb866108370f2c14ac97a6d20d95a8e32f8a", - "0x97d4841704bacb06bce2778104e4437c930fdd9320d85cac383d11ce9246525ad5167cbd63ef04a8ea39c8fbe3d88169", - "0xb4b178a1c3ccd3344831936b784203919cffb611cd18def1a52ffa2a8e4286f9f9681bd48dff9b2abfe62da5fd619fa7", - "0xafb01a4777a128b02fc22e282e0c4ab1d86246d8e0813a7e85c51907bce079766ae40c31d3c440d5f99c92e89d3a683e", - "0x91cd070a607c20140c1f35b25057bfa20290b1435e99c5b33068c4e5755ff8f1aa2be61fba28dcfc131cf881aa1c39ec", - "0xaaac82ccda92c6090970f60a56668c011ac20dcab26347ad40585a60b5a9b5a9af883307c55526d4eca1b110a079fd3d", - "0xa7480de83b4cbb2eedece3d3b27b8d934e9183f448d56d5f49e0b63e24575014a94e09d406d7ca5afda08da9f4eafbc1", - "0x8e568ae356775b06d963b440f75bad9b5977b7bcfb8fbd1dbb4daad5192521bd189674654d4ab86ded4a6be5fee27ef7", - "0xa501a84cd0b4138383572fdd09242e3a748e593f55400fa7600698d4f916a2fc1feb96557a34f4ef0f13eee580fe9f54", - "0x8be0f6b98d52b83e9deccf09d05fc4a7b4ae1cb11972f01baee4fabdb804cee2b0e9b44a1385238f755d2c1ce395cfa5", - "0xafd01e3658ed9204d39fcdda2d79239b8c45dcf80fda8a680a8797b6be294e7e8bf56ce345896c3f08446e9a2a053a61", - "0x851f0def025a50910bfb6c2fbe5ca62a31426747d9cf4634c8faa714a014fa22586c3eabde84e23ca77371ae25d720d9", - "0x90a1aa7bbe7842cd361d0ab2e16203a56318885d2d32409370ffb64ef0ffd3c8c57658573a0714b04dd1595aabfc8f21", - "0xaf56f30bbd796de5cbf6f3d041c2f649d0f36e0a1335ba923eb1487e0b29d0ab307a1143e6cabb79674ddc01dd9a5cd9", - "0x8429afa5476d0f3a4eed4104fdeafb79f80e94e709b59aa44b4caf0a94bf75fb3efadf76e96389179eafc389fe896efa", - "0x91d8399bcc3b82f0044b9a697b2bc402285f6d2e7b76eec25ffecab769f3fbdd45d20897d28a8676f090edf847eb3c70", - "0xa06f8d37404ae58c35732db58c4c6270e4311c691ecaa7d89b3e9b2bb1421ee3c3cde555d066340c0f2479faea1ae162", - "0x8011fcbb711ba6511960245c69a73fa99167eeb4d238426bc31ce359a90a2339d5936042b281f3ff3eb976357db96885", - "0x8dff2bc19830b4a58d2cc3c1598d060da34c8fde11635062dd4222c96dcbf2bef79b339c63fefdb1653153ef9af79c48", - "0x84ae7869e2405e326bd167249f89c2e018817d3edf59f3db8adc25f64836ea4606c78158cb30020a54551283bcd9f39e", - "0xb7be6cfbb7cbb7788fd60fbfcae3504d441b0af3b46317944e00a23079c605c08fd116311432be5b378ed8a11da219e7", - "0xa3656ce4a79484e365b6b7f81a9dd72a09746da16175a61794bc5fcc0c3dd608751ea2cfcf7bb0c14421e0b05d94df75", - "0x929d5603a936bedc69ede2d1277692012d0c820a23915ac6e776b832b9f4e0e6276fb3b257c7abbca32ea166d4482149", - "0x82d47138de8b6ed4bdaf69526ace4f6fdc50fe5abee63f1c6d4447fe4948a84a63b7963c8a65858442856e282fabaf26", - "0x8f8b2d05e77e9e4e2cc5229ea98c5c02ef9d9b6939ce6663d98d8e2dbed73af3d41628662c354972c1b48157f8d3c459", - "0x9353ee31f477b51558f4ba5ca437d801f59d01ed995a8801552f8c578d1937997bd76c31aedab99fb5532789e72469b0", - "0x941f777fc9115fe948f3a979e1ab87f133238935acdc19d33e1d86a1a64924eb9008e91bdff8d650f5e3ad06db931234", - "0x8ee79ecb7d07e3a5fb80ec15c085898e97876448685891e09ebee9aacd5cd0147715dc60b6f75b601fbe83598f1a939b", - "0xa96a50de4fa25367706c99abe9dba95ce1717483f50692bde7c8c3a6b427d02d59ef6e8bee82762fe774f5afa528f0d0", - "0xa451ff58246340157fd94d028ce1ebe5ce49e5ed87d9b61884c8ad903ef9b697c4ab9e5acf66180a89a17749046c99fe", - "0xb12739d77fb96e9e93065fe279307eafb11c795da2b9efba4cb239425faf687b9762235700d9f2cd5df9cd9fb2b36e3f", - "0xa665e34895d02e68f1dee7ad8090558514720ff3e809cf46cc06d1e1274d219fd08781fd430367a3f09e2c591dfd7cf4", - "0xa262410cb60409720ce68935e91c743aed5eccb4a0427449f32a4acca103f9d65413290ffe2cbc895e2e1cef96ba7c6e", - "0x9597cf4d49db896796132aed4bdfbec71ebba08a617a611d1fece75bbfcce902e8ba228b662d0ec5fb927429f082eb38", - "0x80a045d2bd30aff2267a5385be12c646b65b24a586c4f5cb1bdb81387e3ff8edd2358cc8e3c4c5c60cab88d4dce61d90", - "0x80323f4a9fc78bc89aaa172f739bbd4f57f9321a7b8e9eddb74ee5c99d6c7b8dfe847f7103110f0a44d4e7c20ed29114", - "0x943b749ab77112be7593bb2ac11094c66c94bb89d5ee2cc05316ad623a3997a38aec741ec93c24770adc670b6ad12e91", - "0xa8e1b4935aad8a84112a99fd5a4d3786ccf1c985aca0b256c46d52a8801a132024391431cc2cfee760c25eb18289041e", - "0x8abbe403bf13bad914a4d5bb0c8709f5b264a7a81ba0542850cb89c3c45bc294f62b22a36d7f829ca80830a3be5832aa", - "0x9084defe85d170967c08d1f5e74ad1dd592c2b013b01b84b5fe3f2ceb260bde2e52ca22e4006b07f01e3dc7a36774e94", - "0xa34cf1cfca622dda528589b5e5e36a4a68cee7e18cc621736e3e165b06a5df9a8e9f3ddc406838c1fe94ebdc44bfaa18", - "0x8c5f5d7e98828d0a063d90d5f78bc493c46316fec3245d47ef8900241fffd5316e0d6d6f1653cb3b22bbf05286736c06", - "0xae7f2beef46b6645a6d0b3ca664c826be205ca6de35bd2809a4871f19368bd2c009ad7de0cb4c269c2934357e87c7f64", - "0xabae2cd1ff7320d0803b6b5345ef9dd364fcc001d91fa456199dde24f474ff3d0ce94d460be9659caffe7ae0a6814217", - "0xb86710fd69a6eeca8a813c7c1d643b487a32cadd70013a4aff4b7331ec08d1469fb17a06d06926e68f546e7f5238e1f5", - "0xb42e9dd8d0f12f95a16112ef7ea60e6f4c76a39cb64e7f6bb4fde6ed1fc54fe8317e93160d736d97d87ff7af69ac2a41", - "0x86e5561a7b621e68afda9d63945dc69bcd615cc099c84ac51ebf6350b25c9c07ab371ed5b160a86488e8213d143335fe", - "0x831c730524214b8368bdc619e5c7e55a0731b6c5ddd035e9d7cd90577a472a429e779efb0ce47320c8d3b62997eec0de", - "0xa3bcbb6c321b329ea2bb944f48ac984f8bb6cbcd38a5f80e8780257765756cd902d252a51804879104527bc7b251c1b5", - "0x8b1a0ee0219a010653f816de88b05116269325c42811d717544468b3bf477953900394a71d56b6dea13e4e6ef9c9c5cf", - "0xa5d06e2a43d965e47d400343c093d64bd5d4adcbe3928093c80439f815938b9e952bf59da7fb26f459a5439fe60fd49c", - "0xb92df54cd0515bb9868a8dadb2a808d3e62fec12be3c708fa6c845c833c3321017e2f8d71f10b064fdde02b098e22962", - "0xafd8fb1d8ced274650ecb6c370c5bbe8f09d263391af7c2f2290b5c99196ddeaeedc8b9b6173b6fa349872f58c83149e", - "0xb359418883d3425b1bb896a9a9e2a3068c19abbb18ebaccadb85dee713b14bca5b83992cf239cfbb73adbe2f07c63f04", - "0xb8cb045dcb0735b02d6e81d9aa9906ab2f19df2e2adb5bff0533022c03a9a530bb27fcd45173faac63a8d13bf0f41565", - "0xb8b8ed443891d3ecd807d3f92d8c2afe714a423b97019cec3690c24002cd0444548ba6b454e1f9934f01a419206896b8", - "0xa3c28de7e71c54dfba701b7e1053a1719032bf48d0e520bf8d513d155d588d08d14af3cf1e9ba3083f8e59dc947ef99b", - "0xa94d1569107e659db2ca58864eb8feb03c83ca083c75a6d949805faaf7095a4f981cbd1f89a464aa46107a891ba758f7", - "0xa9c98b0501a8c5102ec0daffddce83ab40bd097c4ccce66a8f8a61a3fc28564ce5dec37940092640b36a0ef6efbea4a2", - "0xa473b784935b52ce73755894177ead52cd9f2a10521e9c034298fc0461aa6cfb03d499812189eddbce4b3cfb58774a3f", - "0x8c7a7984739a3db7b28b7ef10f081e2cbec93e1da39738d082898fc73e83db206fb52cbec476c9809c7de61ff5871b71", - "0x88b87148a573e576d0a8fa912858b7a9876001d8364bdaa7dd2759dd908555119f6f580c0d3a663ff5c2a2bcb05fef99", - "0xb169b58fa10256b2753221aa33dc4f0f3308a294b98300528347ea4e89128a1a1da502990c9f2d266fcc10031b3c5a07", - "0x85b1f0e49528ec8e51112771686b5b9f18e4cab091f6f97dc9a327221fde48be87f59cb46e6caac6e1af1a8c70135e66", - "0x954021598c24f5889a642b9d20488a04e3c78c5b04bafcd0a01f377cf24b49f64b1d820ee8a73f8cc193e1de9a106a6f", - "0x8954b280ae11638d6e9c27f826fe66c0ec584fccefda8665f75e0699ed640e8e74fb1945753f84baf606d2fcc804b1a4", - "0x899303d3bfcf48d28aa49e915ddfe263117ab87384f611bf7d555ed141dd728a39b97eca74b6b623a20d44458f35a157", - "0x8d792116aaba18c94069cbaf0da373c4e61662189e8bd0f24dd675531ee6f99d574f91844ace86e3d018c4603ff0e2c6", - "0x876c457846f27161c796f2d063aac7f73c2197ce707872c828af81ffabe91a6f353c6e887464c921718425d046c0a722", - "0xa0382a36d4f8007d444643bd5d85d0b6c3c892c7ef8158f51c878b13af6a5b7c8b098ac7a6e3241a6e13b4ae987addc9", - "0x81d668e292ae20a5a39b55e6798255c39368d9b83ca46e986c343ff9cf4f3140e3f07115995b8fc2554dc0372e4acfdf", - "0x85e58c950d8089ebd5d0a9d852c9e78d1e066c4cf1f1e64b4e76356745d3eddc13f1abf177dd32f0aede2f190053f8c9", - "0x9420d1c470588085057549b7e6544aca2ca329ac9b232187d8ac894b7a878d6d3ea351357174089943b43a83f057ab8e", - "0xb6ea12644c6ae73b8b9752f8eb8bf06312ca14d93fddeb5f79b92167ed78338964d620379387ffc9e12ac0e323f3500e", - "0x82767d1ca19c7672d38216bf17a8ca0a52aed5dca77684da56419430f9129ed25b6c547fce50c834746cab666ddd43cc", - "0xb1864c611fdb1b641708a5be8140ca0ac52d59d7c3fa3eaa10bd815f7f5e34413751f829f5fc0faa259064b73d43f4c8", - "0x92f67f02d17a1ead3b01478687cf26b40fb32f055f3b34feff21de083852460e02afb834f61c37fb91100709891379ac", - "0xb640a52bf00e4b29623c9b150635391b4dd42f0016e827daaad7aeff6e6a64fae4d67193664bc5bb368c72b138c76efe", - "0x941c8aed9a85a005059b83d35f6a70dae2e2b5f645719b567de0da3bbf1d2b85704ac977970a7206bd98609182090160", - "0xaa976af6c9809550721103fc8bb8359cc4313f672421a4ddd760bc4ddd86a036c1b4145049d9c8165335309fb608d6e4", - "0xafb11dfe01bb6a9d2cc2c040e18152645b4aa972fa01b6cb4285312bcb11a317107e743efb53aeb4bb6f8a7fb7741f50", - "0x95f8f780fae2878792aa3f60eab8954ecb107942bf07f0e2854173595eb2d4b914f4aa208f98a63b0ebcfbca46840123", - "0xb1dbec7871209fea98676e68d7a02dd82179a74e389bb9dc0eaeb2ac2d446d26810146586b637869ddec4caac8281bcb", - "0x931c9d571e50dfd2e1bee0c36f42085e4aa4e7d80a1c3bf99573d9d09ff710f6fa27f30712daba107d43d263b226d130", - "0xb080bc730ed34724851d00be3bba84093a296d6320fe7671a83364ab1faf922189ffe997eca0e1ce4ac2c4435d7b7f10", - "0x8dbbdb4f82398c891d16dbd4169716e078de5d677d3d550fd3853ff6ac8d15d278f17a2950333545bab823fad09a4922", - "0xa71bb5b71699082cc45037805fcd95e410c29575d229a556a7c5f2969fb6f957f0c63861048c65d5b73fc4680a5c3c70", - "0xb5bc06a742016a20c60d61cf55006cd7c2c7b8f367968f279815087b2bda7009c1773b9c91b8a4b78717b2bdf6a5e96e", - "0x91aa31c68634a81c9784d0d6adf4dc85c981e122635d4e1f25604c8184da860b1292d65324d4bb9bd8a002572cc96bff", - "0x85484fa47e235410e2ebc49f4dbbea9847ea064f6f6776dceb0d868280fe88bf6c5bb72e24c0ed3cb0a3f1d96ef8c9ce", - "0x88ab35f32986f0bbd8502dc81506cb18638298e856934fa374480dc455463482ca780385537e7ea73c4c863107b74f7a", - "0xb3022847a668b6d5d52d0af14d594c3e842afaab5416e3ffef21224bede0e1bbecb0799ddb7e095623a3a6f28b6d5f43", - "0x8802d0e6e5203d0018d243301c57934ca85a002f91e5763b2f7372816c7b3ddf719c3b743f2530d9b7330f4f35d69d83", - "0x85709fddeaaddead7a27d3f75e5ac568b0c9691c797f1505f5b33678158f5dff96ab98b921bfbc83368c6763420bf949", - "0xa45ddf8ed1c273d61578bf6830fabd4927f82e3efe7732d64a1c82887b9693dcabdad1e7a65f09bde459fef89c0eef82", - "0x970fb837063e059b1c2b4ec88011131e8cdc459daa1e704095bd327b7c94115c57cc1d9e8b4a29d6cc4f20895e309c61", - "0xb789aabda019356bc5c5dcb015f8e7c5da25150988af0d44cfb11d8702da22fbb43f69c4af889dddc0647745d162d91e", - "0x8ccd44696d8c52454c833b0b256ed0073527616ce49ef25a113cb9f16d41f39d27e3bf169ef0d3b2fe78f2a5910ec83a", - "0x9846a3ae6a2c339b09f53b6cb1262114d1ce2fa3ea43d77b04816eea6451e8620f0030ba428eff80d72d8e907c8f9e3d", - "0x80c18de89a31e2c8309353be974e42ca97dcebefc1a914e76b57609b9cb7c1c6298e2ee1bb35ab9d587f195010d24337", - "0xa43ac7ac3798af0923ef5bcf2342550aef8551c198a31b0bc9015ecb24fd2633bdcffd84a2c84f9eb72b4e67084caed4", - "0x8cc1551213a33114c8e6b3e00c68dd26b9cb3728376b498c95aeec60e7506a3346641ed5297fd4ead33c0e42b85079be", - "0xafb54536b43e311eef9f584b8f1074866f6d33cfc75a3294aad5aea870cdbc3c97ab6e849ef719e2e1e4386a8a360fe2", - "0xa2c5a2240256c64673372b63359b646dcadb108d785b4fb16a165f4b3b0ab3dc3dd5058582b25ed7b728d56d5aa45649", - "0xb35e3e4407b63edf3eb567fdbe03eef00dadddcf41b799c80a9c9e26ddcf0c6b0b9dc4df0a0c5d54bf31ac8273740a32", - "0xa3ce737baa7e1c1c69931a5b2fe1493a06fa0dcfc0b819ef8242b4fdae8d63bec8d15561d4fa24ef6d6c3a326d0abafa", - "0x910a67b377fb17d3f9cd1f994db52eb5f35a4aa002bc1b7208b259b12c64c095e4dd65ffe54772f8e2773923a890bc97", - "0x908c5ee131dea3f444a9ee2052c93a657d28f2f58e604bf08e51500a306decb2db964f68e87d5ac2f8207cc4e92adb09", - "0x8f3de5e756409b575ac2786590fc85de506f0adb51450f5c24669bb3a688f080c1cc37cb8e7a3c8db8e25c49a4bd76cc", - "0xaa62ceaef91fdf09d2ac2edbc07fcc651584a7e7d7d93e7bd4bb4c42105144c2da32326b3ae320b36a2df8aed07e5610", - "0x959fc29ce63dcac2b4dbe8180577cecf9bfbb6db6505d76aada43ddfde5f48ec8f6fed14fac19389f6c9ed3555ef7882", - "0x984cbe54156763d6ae078d6a8205cb6f9d63eee390dc5990f5d8e85b9a19fef563653d3dcc190c9b18c2232a916b1409", - "0x923b448808d9ac04488e8345d3fbf9aa57cc3b3f375af138b674daa0e5a864faaeabed08f94010478543f3e1248c699c", - "0x8c0823bf2706d9aa4c074673e9d221eb021de2baffe8b703e64e676b6801da73440b7793254fe4c8c48d2ff395e44bfd", - "0x93c9cb050494824aba0d57320e2d1dfc95c988bec46dc8d73f7036be9ce0d7de02e56ad1ea3dd8fc129100800aa639bd", - "0x9339fa01caba0f4837efca7a3d983fda1f6a479f63890db7f7beb837e3f6535b1f1d0788884dbeb73fa657410a4ad308", - "0x953f213ec904d4540b356d53eb88f646a98581a6deeebdf99a6646cf612e5b07110839d46c57b76545f6879f12371b10", - "0x99a4576f12de20fbecd3906e48dcc784cdbdf7fa0843c570c6f59f13cf3a559cc1f4882fc1d31015304090f83306280b", - "0xb07fb8b73793a236e58b7181df5a0a2e8d50c1d3069c475c6e178e32d14b6e75c45af60a8b54823c23ffbb316bd4a98e", - "0x98781507866499ce396730ee91a08e91d3be337690f7195750bd43a601a8f78e9475d5ebb43e347934429a4ff3db58b3", - "0x972a5a21354beadf80d8a6e449cc4f072d6b747de293f075b8e0925c89660db9195a30188dfc8b73dba02467ae02913f", - "0x827dd2e21ca88891b9b37e10f0d6b6304438cd6aaf9cb125ea7ed822078a233f3e1b49a8bc65f843e9551691b46cf91f", - "0xad3a4ebaccc157a7b880db6990a937e2d230875f509ce864fb0b7ba5febc7f4668191bf3aa55b85f3c17ce8b7d75b349", - "0x976672c981d106fe1835188e202adf6ce77314f8d7c8f797aacf25f00d57f8cfea31b057f6afcb40b9f97df6ea387979", - "0x8c77ba87e3e8fd5de85802a764b719d67f4edbdace75433af7fe966d3d18a94778c4414572b84f98bc6b5993a3225212", - "0x84ca9b0435001c246143e50487a55349bf38300cde86219d29199e2e9137e262a1619ee7d6f6c44b9551319f1ea8526f", - "0xab06e3313800a7dbb970145c1e89b7849db8a1e3169560fe2c64956a1f9d1d3157d531713a8d7c2213356b22fd3014ed", - "0xa0d04163ae987227aaba1ae82f74fd1b44387501fa47fa61b66728a0697155f48bb44b9eb5e87050a5bdb7605038db12", - "0x8e76d3e50853ba5945610251dd18736b8541bf72bd643f6b561cab1c028dd044c820fcf79a5b45882e7dde0ba6db164d", - "0x967ec8fdee2e6d61f0ca2cc255f4e72c41a9c1a62150318be0fa508b424487d9254ad135fbe8dcda55caa51b9901eda1", - "0xae25c496f872f7380d9c64fc9bee0dfdc0f05cc1d2d6ea7747e166cae7e67c17a72a24a9e351de15f52baad355625d7c", - "0xb8a95f3bc67ad2a2d3cfbbf2de2003b7bc894b3f99f0364fd181eb11d154a7193b1df9b671a3a8eb8bbabafeee2d1a86", - "0xb79996f818d94842175b06650a1e7819cb12c96b6ba37e61fa14b67684c2879e7d3884fa6bae06faba009329db2b0d1c", - "0x856e1478ef99338f144757fe4be68d935f0069a05b0a6209be2fac9ebc5cc669c6a80825d3c74801a54ff8b1a3777da8", - "0x8024798b150aa722dc599f288cdf455479763a9bf776da74d5f9cf76026500e5a0282d840e5ae5451a0e28d507b397a5", - "0x97cb767ebfc0a6cfe25666089f85e5a3705c108096a38151baa22308276ebf7cb3c04079ecd130cb8cae1689508d4bcb", - "0x874ff07def0f8d32f2ffce7cf31a43e8bc5e633b279acd7138ae938e46889e486c092ac34924aed9a4e1f93a91994211", - "0xab5b6bec8c81133b6edddcd048fbd526d59fc8a1f5acd7aa72d07852696faf5e8d305e85077450188cddd43d6c1aad27", - "0x8402f5173327a95438797cee3b107407e8b277759c942bf1b1f975dc63ab89b8c43f0f4ce2a11de6e5727e9952b8923b", - "0xa5179a16297f7a0913ba61d69879014b9adb5e41813ac33acb8973e2b43cbc17a2f9a7d98210b39471a47b534f0eea23", - "0x8f7cf3928b51b0b1bce18a34da935e7e2558595e4ebc50cc1cb698f0bf3c1ea0050aadbcec33786118d791218e1734b1", - "0x81552a8927942591572429892e5a1572c8bc4fa7901395a5a2de3ce9f1ead122e4e5ffef6cc8434b3b18af1aa62e45b3", - "0x8999a1bf4f22fdc884f9310e7a3f5baa0d32c04e887c51a20736cff3216f3dac5bbede43632d29704536d7f275b0be9b", - "0x85d9952816412a890a3e479025d1c0c8858337498ae28731ae23332c16a788cfe51fa9836bee73d03b253803096100a9", - "0xb6a736447acaa6f4d83998973cd2bc3e12d34c6c076880e6765513c04087eeee5b5dfe9394c120a85bec8fbe127f1f54", - "0x89302db4ea39662024c748ff5b22108c0f34850f0fda476051a89a3eba0e02a2294a4511666987d89f3b3bbcc334fdf3", - "0x88ef018d32e6b379cea9ce35d1c12af698d8241c4c7468a5d558099f5101f04ac8e49d09b6bf031a811970faf02ed0ac", - "0xb33afb11f73195a7132430dc3961252251aef42150e9aa63a8c7cae724f467543a4afec289bf27e10ccabcad2f7f812a", - "0xb706315deef0529725fa6c4520e5d320a028b4607d47fa6c4c8ca3558afd68ed65dc072a354d263d20405bb13ca119f0", - "0x8ba035d75939c1a3cfc72a9ad3aa4ade105880345eaad9286a182950368e688a182f6175357a2e62d977ff7ae08959cf", - "0xb47ca04b80107eefd3a596be2e990f5f021cafc6b7fb64cbb78802f9bb7bd2cec4f37755c451bb1fc8786a076e90bad9", - "0xb6fb1676fbdf6cf95add7173c264b820042511e34dbcafa76273ef5e4500ad1208b274855985f0eff5196e7200e5a8b5", - "0x8c7493894853f4e9fef5a0143dc134f03eeeaa10c80c5a72afb12f10ca5207df1c7bcefba6728d61f3f89d3978902629", - "0x97d14d9debd4228be04f2352e57d9c8138d4e40228c269100930e2a3f6eb6e66f2f99807be0c9857082ff8b9a089049e", - "0x86e327360a19f6ddc8d0362cf92fa84677737064a94d9d0c1031bae92b85abed36193428199b0f66720be0d6edb0d28c", - "0xac79bf758fe91d47d1ddfba62bba87f5e64d93f82309d4d07b62d78ad6ae95908e1989299db99ec52c5ad8c8f3d7132f", - "0x804712afd93328864a52a9f9ca1ae148de26fdec7d9f51d1bf8c0385959ddfb639ae0904c855180dd418ac21f9a8a7d0", - "0xa789e15cf3c1e911fca7f6759a2c5d0a281c6ab744f29709b8d0623c1fc197ed9bf56b89fb0953baf261ffc4bd8d1552", - "0xb738474bd1788f326c5145ca2a468d914ead6dbc338680f62ee21b1e5fed49fa501236d70dce5363a72147b0a8974c8c", - "0xa34019db5e8d5cb680a78c1692978ce0f3f8b21c1615ff65f3d103ed5a1e32884680c90d1dc18f0edcd8a506b1003806", - "0xb1b1f26ed57a7bf77257e2ab1bf314b22e47f8a4f4c5cd154beaafdc34b257e9b976b26c8d9f1508498b6e8c9e9fd2ff", - "0xa5f645d7a75741f536e5218d4a38ac75f5f2d759e62bde2c9b628a4cac299b477a833bca98010b6c2a8f30b85f407250", - "0xb3947ca7df831d68107713bbd52fa300411bc14362c37c2617780f5d621e211b8bcf5fb7099d903748420818d840234a", - "0xad16157ac24899485e7eae71eabf9e4262d01b8f8bde30d7c79fd00ffb4c347d765bf2b4a30c260c9fe2e5153a3e1c69", - "0xb1bcde4588570576872430e704a64d7130f921667c13101c3fb771efc1e0bd72c4ad4b8e35cbb98d709062257f0ef59f", - "0xab45dce0e29201e79cb1da61cc4353840eb8b47db99319ff7802d2e18f00e3fa8d5e70aa6a797684b4a6741277ae033e", - "0xb6977424f2f5b968a4eaa9dc1ac1018ca51e6158a6a4c189f0adc94ea1c2f30bb33c57960a5c972a1800cca2650e2f6e", - "0x899f48fedeee4badd5b69632f78a244756458529f27c75d05e9c54cb29579abcbe4ff7567445ccef96274c8cf5b7d31e", - "0xa8225095071acb2610d28d9ce2645280a84c702f5f5040df7a4134de1144fe1a1b07d3e28d4ff5e2517b4b2bbae674f9", - "0xb48316873f8245854568a37ad9c5fe9d5e6d9ebd60c9cbbf9e6f63c512bd8568e3a736039422d21d383378c77d8f10b7", - "0x8b40afa65e47ba365e723b9e24bd4a13335455e059346187356ff9abe99cf71eae383ee33bc184a9ec17b32d0800f158", - "0x96c3b7ad1e31b8d4ac0e14358655e21e687beac6f6b7b48dd3750641315ac7088352976e9804b9c625a712f9d4fcfc4e", - "0x914dcb36d621753286340077d16b36bdaa1414eac7a8e7ee84404a37f8fadda837bf4c5a932e8b0f3e8e673832e9b3f6", - "0xb20a438985a4bdaea41b98e831537027f4bf19ea9c1ac5fd37546eef117cd3d41b9c1b125d2302ae3d41176ab5d9e9dd", - "0x94a4cf3cc42d7055b55cf58959a7715232a273e66ec6f83fbcdb79d01769f7e6b1e328f6b0a910d1f8cf7a5ba4934779", - "0xa62b07dc466c2f83dcac7fa98215ce5bece548164e32b4bb3aac055b3c0aa68ef5cad58bf7d392e3b1d54ea6f0d9f0d7", - "0x9870784890da6cb0223daa367163cdd41ead23c300d246d62debe980fc3e7de0b42576309ae35da914474b8ed2c5acdf", - "0xb0f28a74169391fbb179ffe8647f3e6228e75b409c49ba81d34ce780b12d408d2db5968e9664b9de6a7416d2f6d1c1cc", - "0x857697b0222cce1458ff591e1add39f5632cb3aa2e589a64166738d8c00855e354c2ed44c4cee8dd707188790fffe6b1", - "0xb3566bb224742d0871ec5d15ee890755d7e6727aa7e2f374abe965ef8380b49422897545e2cf8fd3f58bc81f05abf173", - "0x88271995f9c647da82820b042e59011121ac723b4d0a2e461cfc1351d89cc10eb7d18830adf1c7b9fca55ed3e910aedf", - "0x863a43548db29c9cf35f24c1d5f7aa984ba21bb924dd9e09210a1feadb1e0ddca98df47e970c230879faa5e7434b118b", - "0xaf5c71b27157a2391247622a5029ba11d17ab4329001b01b3236f38d67ddd6b8902aebb48ee9c963983c16f6d8c53d26", - "0x97abbcd4fff0d1ee2ea777788cc146c1b32601fd93a5ff9908fdc2de225b954d8fc0c9874c258dcb90ecc7fd169823c3", - "0x94129bc418ff5d00ba3a3389b62986fcda5714ad25d25091db12a66e138a35a9e38999c4cf38fe7cdb1340c099c467ab", - "0x8a785f303473e763578a5bff75a069764e346224fa2dd8ee3105ca779cccd5939ed8c21f7369bab9947a4ca92d3b605e", - "0xb37d1644a00401b213f29191a238f4c9c32ba550db2ab3b4c9d1f02021a8f6972ab0fc76d0bc5b9c6291d5edb9632658", - "0x8e42a2c87d7feadf1a2dad9dc822b40029eeb8afb785ce574a340929c4c6ddfe4d750bd3a482e62bfef1bdfdc36f5bd9", - "0x8837b0408f48c8b975ae777b0516c569dad0daf607da51f187bc2c67d3f67315340848fabf7ca78dfa46b05e3fe33005", - "0x96d53e8e9b14e602dec666fcbff8ac2a7ca0474605b294365bab5f5228d8cf0a17a772cf2f37f7de3607f7ea6127d0e0", - "0xb286888ab9afd161a714fcb1954f6046754c1e3e398cf639bc215327057ae68ed69113481da88627839b551cb9660be3", - "0xae5747c882d3ad685e481b0b42907f0934a717ef5b0bcf110fe3125d40628959b879186464f95bc4a69d90754034c141", - "0xb1ca38e7b1f87e4c878d4b878afbca750fdc2509f625a06871da830c1f68a6cb20dde7d51ec73a78454ffdf54451ed47", - "0x82225700e9b32f416618b074479302629114761fc721ff492d792d4d1a4d6fec887185aa81395703fc8d07a67fa4d87d", - "0xa132ead3cac6087bc7bf5153f29ea858a115249d779419e5c52f4d1f2180f4631caf45ab7cf90129af68bf67665b8dd6", - "0xafd4778ab2921b6c9c3d3e2d8ab7e33882f7fde3c8f66d6704f0859f3bec468178eb25a103b78ab092de5b694f2d2ff6", - "0xaa0123ab3e8af146e974c9fc72dce94554cbab212336c8aebe618ea082c15ef02c6b47b6c575d262d1cc6b0cf2d11f47", - "0xa5e35113393e82c0ff3a39afc99a60f90993d5e4995e5d21a9a395ae31074ed5e2244214d4dd877c3d89e52fac6c4252", - "0xb2f476cd5d9df15e624713f22716ff01790f2fe16957b526677bdd3d203fa8af98ae58daaffca10f84a7c61e29ba1d79", - "0x82d6d062828337677ae19ce13d27ef45ee55270a27e674946c7c1c762bf43af6391d77454dda4dc613b519f4cde43636", - "0x8e86b1803d4ee07791269ec9175dc3d3b595197c089551e5bec3edc55c77532235e64848aba62e43936d3e9438635f5a", - "0x845b7233e40eab725c241853013d1884d782457ec188ff7ea535926c36da0893882fea2c9609f96b6d85392471b71d2c", - "0xa2090ef73e125c0809f2bddcdd7b74b4f4eae452d76afebdf47691d2afacd1db7c6a3032e9a4c4ca744bb496258b8ead", - "0x98e759616bf468bb4feedbebaa8df381d01cb4b0009a5ca5fc980426e160698abd6fcd2095cf964eca6f8d92fe1bfc42", - "0x8a29df48ccec0ecb8b3d904078897d996ecea1d2db6b40b79fe51bc5dad04358d7f7edb6543d7d1cf0c1f54544c3d85e", - "0x9422e88414d88e5d84b17f9d2f1c50fb48e9c5b8de215dcd7c52bb26a6ea71cf92c90f3004c4fcb34040eacf5b60b06b", - "0xa643123915445bf0e528d36dd7f2da9a3b993f93a7fc9f6148049fe14eb5a0063575d971ec955aeffbdce069d0bc2937", - "0x81741f92a157bfe12aaabf0d81121e5a8c7df2dae86f5fdba826167c4558103363c653a928babf4ad7e3e80634d26375", - "0x904fe8e258be2500bc5566c3890a9372c9404935ba19396e8cd30289cf02bda13ff3d776bef56dd87ce57aba0a8539bf", - "0x811997c1d70feed33ae3684eee512a46ea91400b39638d405a8bd6f1d0169706f48d1c04beb1c5afc5b10879390a1a0f", - "0xa4fff30378dcf1f04eb97951b85abc0f5257b9e53b7bee814a5acf060919d73504db14d55edaf54e4030b4c1d7278c57", - "0xac84f2568084ee7a715b2387e3fa3b15e6940a27ea99b4fc9889c828179c55f29992b68d719323c2ede8ded3a4e16553", - "0x8fa542c15bd29bcf72a34b3c56eac1e7d4e4f3b15b82672cd956d23a9b9863233816ffbcc6738a225c86d9dd13d1c3d8", - "0x90d94517e7f1236e49ed6903db72c0de3098b42fbc76afae7abc1b09a903cf92cb1bb6a6ec8c29331e05b8946c2e9e2b", - "0x916c0d6b1fb7c74c0001599211ca37812f30c309cb6cae529c876221c5e7187876d37268776451df2aa44f91a3a17a11", - "0xb9ae0c4f0c00e8b07b489e015711346caedfc7cbbcb36acf3a2ffadf2a8f11118f93cb70181c27443d42634b2f2f6d90", - "0x97a51eb35da8b67e82d55fed968ac9aa42cf2d1348ac146d534344c4c7535c29ce25dacf9901abcd7e8c43a83e34e25f", - "0xb2f035822c552cfe3325da99f28aa31b847477a644402d43379947ee219fed751497cfffd3536c91f2474a94bf758203", - "0xaa2fc0777c208a2efb2884dff33c459f2f6c9dd4cba360a65918c8604cb02fd493c8e5d26069953bba56039f8bb694ea", - "0x84c63bbbea15e06775bd39f39995afc613586fcbaf32c9ada1410dfdeff09b8e7f3dd0c99b23c678ee72e44543ee6443", - "0x8259332662ff222d4d2f817bb94033d458e650e5f6e2c31ca84c6f3a4b3d2e8d1f40593083337a17193cddd960ea86c7", - "0x899fc292aafc17d01c06cac50a78edf1f11c8c3253f4b32116625537351a1e82ee3cac67725973e3563fdd73781985b1", - "0x92d3b9aab29854556666588d94c3b49d159c9ba9046487583469ace7a6b8ffa61164839dee24d28dc2fd36b9387b6225", - "0xb54f62077e1e42e18586a03b3d3fbe3fd680dda6988bee8aadc95dcde46c215167b261433d6cfaad8e2b3b6207662af8", - "0xa6c021aa10019319f944f8a77455ad5b153a502dc9eabd9d306be3830a4fa2539e3cb380355953c3581f12348b919214", - "0x8cdbc2c995699cc83768dd23383fe492a1bebcdfa55fc4b9d1113e510a6f4432ae55fd57db732eb56265dba6ad452c46", - "0xaa474f1710bf6556538fe389694b4fb737713dbbc9c93d8a879dd3aee8e004c2441dd14b5f4cdd4a98e804d031ce00ca", - "0x95448d62b1503e71d47ef4f5a01c60c938fc3cfd9280d7b6d3490ef331131130630425adcc53c9c96f262a80c3251e4e", - "0xa4535757aedbf6d7b9bbea99f4bb7bdfd1c99d5d976bd8d4f8c69ee09c9902ea81884d8b6f4fc084e12702fcbb9e4b3d", - "0x87796bbc38d5c2d9a56a65ca91a40530b57fc2a768e9e08a2081734bde163f39e069edc99e87a84b539606164993f30b", - "0x8cb7647e60f023066c4835c956186b9e997a7425cc38465e95be568ab448b7303977c7ddaca73b78f6bc137f25e5e020", - "0x90584dbd8f672a349682effe2f775f2bccb1911b06d20cd02f3a6e30311c6678e5082ab87ee47af72e0c064a43592bea", - "0x8886147e87a552c74767faa64516438d6473ae275e72b4cdc174825696a4d7878297b1ecd0fe1a62fa4559ed232e9e26", - "0xb739745959c324a62943a225140daa51faa8e41c8e20ebd68d6f000351101a89341641933dcb2ac5b3a45ebbbf7fb26c", - "0x814f858b4c709694472eae1c82cfb7370191ad6d0cc5aad69084fb8e9d81e90ac2fae52b4051af25f1b806c273f61e0c", - "0xa00426131acb84ee08684f2fc2a3ef01290e48e6b5f96bcb0459adb62f4190a4b2616eff2a2712991c48adc551ddaf64", - "0xb37a1e92b72e3ba42b79dd997bbeb031a392e42606254965597ea4b8a2ca51f8c324619fc2b9f886e17b632ea3bee629", - "0x90817db93eed264f49445d1d3a14ddc0d5ca93191b6baae278b4c48231a56b25725ba6f7ac0e9c7326755f0082b79587", - "0x95b7f470ef1630dee768698a31398e8cb407df3b651a15493c38f6be6c7eb387148124a2cb1fe1237117617017c12203", - "0xac49be639391aa5dc08e8678cc690ff617e9a0ab40166285f90c2d889c87ac70c455a972e61cfc339db59be4394a0ad1", - "0xa6f5a698508f8047edc45bd605ad4e88245de20013e7a4e51994e99fc60d81dc945504b24f23f7241f28059f4b5d6756", - "0xa4d30a6db06153074871c6adb0ef4e562c1491c1f9841c110359dc41a3bc0bfcba3b49fa53c29b8258a814b8ba1ba328", - "0xb25a500efa7d38f797395cbec660250f4a00d104459cdf7a15b541db3917e26bb7568526444d469d363040fd094680ab", - "0x8444d11f8a0c686e2b22642ba1b28cc556ab7311686028e3fb4040fcce22959b7b6cf244b77c711ba86e350e17411823", - "0x8ce90bfdfa93cbe58421be78e30e471b2c6e6beb1f9b3f85031cbe269305e18d25a2170819f2699346bdd735b6f5d664", - "0xb73970a3dc993e28b71bc236b3391acbd85a8cc622b79e669109f9d3ad7ce7a01a8686e75d85408c54bb70ff9771ca80", - "0xa64cebe05fd027069a18f152a18be155ed65b6b563696e395e045c8b2f0455fa75c2ff41c1247e596451b36ddf258460", - "0xafec84a7a480b09cecdeafd025ee3ee02e3b3338b02d26cb3b7575ecb895057650f0955978d1d732ca2e6b391ed97728", - "0x8caaf53038bfad6e0651e61e9a44a39027d456ff3ea46ee9d8e190698d5a66938d5c5723dd7bc75f0ddab660e178383f", - "0xa91607e39108d2540b4b5c9d33d96328f56ce9574ac9d1d4a81ab5c938443c3d7014e19f77cd55ef7be0a408e44efa43", - "0xa3f4c6629a3c0f34ea060a8b976096e6fd3a91c24d2b056e9b6b60088bb0c706e25dfb31079f42e0ec031aa840f46afa", - "0x96b9c7d3f47ec35ab0270cc57841e9f3b3f5bce3d26faf6abf6cf657b6e949ce0bd1ccdcf9d490beebce722aea48caef", - "0xabd2433b4003b7d861b35e99b51e2eedaea4831776e7c289beae2b561ad69a771233e3d6bc4a7f869d0744c5be61b5a9", - "0xa989e5080d39d4031aea86c03b77abe069ea9b7fbc515c6a79c825eedd6a9bf6a0ced1891eed20edc605f9e25a691f74", - "0x93ca5b311d28e4dfbf4de84a1e1530a9153599e0853c9abd3671a1ce04995e00f7d3092895461137fd78c72d24a99494", - "0x8acebb0309595f4eeb990b7a1543f0633690b7469ce89884d5654a7bd2d2543f09232693a04e1e1b445e6e0041c8b242", - "0xabe3858cea5a873a7576d641571965736d55d46f9040fec219803740dc2a5b43c72689e94c9b61d3c3c44dd3a821b694", - "0x947cd395aef4faeca9b78b6cfcc8b2f8f361de884b29181266fd95b21ca6176e7944058e20cc77c7757fbca4fe445394", - "0x8c2e50234c75d645f3c887693e2439ef42433eff328111b9c37aa3ad5a3b21678ee44ee2959a91610006b27a0f5363b2", - "0x967253e02e34069ac676063aae9a493bc6d52b8bcbf1da6243bfeaa9fe05f8c840ada0a282df9c0180d05eb866402441", - "0xa16a4c9a11686a5294d8329983c8a4aa0e6e5ad0003ab319b493842e8d072aaef45c3335d9a64bfde6bba120a48a72a3", - "0x85187b866fbc72e5b42b91d76e7ec2647b93bedecb060b7475236d7d152d17f901c778b704f7c2c1d3d269341890c233", - "0x83b192d925e3f4a1fafcf22cb48083b2f88632ba93c1d498539bbc4997f61f74a0a3b8d4947253a0daaca8999c407b87", - "0x8338eb3e7f549988435f4f618f4ae1942c6756bdc28a80dba7ccc530bef161c0bbd20f77c8c4d63c94e60bc12f7cd387", - "0xadc869c5acec5e58459eb804c2141e03e3582ce1fef7d40fc1dffa3ca0f923919e291a2ca4a60129e2a470cdb395be31", - "0x9279068c28840f2c34e48e9a7e7e9406907ac14bdf4eec7b8c28ebcfe16a18fcb047015e4309f19e6fd73d6e6c454157", - "0x98c4fb637a868f161f2f4222f93f3bdf13a61ec1f4e4c20435c150fca1bc0c01c790da91afb6227ed2a6aa540d70366c", - "0x9209fc7b307f40294bd9cce166277a7ade9c64277c600b3ff09579fbfffa471a887061e9cb5fac97c423eada30a8a52c", - "0xb1d63569d5d47d052f3a6e8b2c390bfac1e92098291a2adb209f20af875ebb2a8669533155b1d15b232690e26d399ab2", - "0xa2c975c004e69e7b0f22636141d34adfb2dd1396c7355e95fcd0493e931eb7eb99b4df0f0f202945d7bf837809a29ed2", - "0x818f48e65e337913c52e9256af134f4311be84dc332e3ac4cb5ef659b9c6e9cb34f04b0bcc0e2a3a574c9c3cc51d7368", - "0xb92b63d0b363a368a348a4abb10661c38ced99a3132afa6cf002b81e6cac26f862c9d0a6886aede555d7bc453753cd37", - "0xb4051275cef361cdebd254115275b0b86692d3802241cae5e2c75accee7df98d3165cd1de86226f382e736b12d9dbac3", - "0xad89d85749c23e045bcb95c3433eb8038139a51c8edaf06b5cb235549a2f9ad17589097ff8a350e934c8662a8879a3d4", - "0x802010e6dbf4265cdb5b5362c0b197317f2435253237561a3a7bc6766f98b129ee06d370382998ae70080624fd65831e", - "0x8ed6a5b601a5ee11e983035f3109075444b063aff693b3601f87c0d76d2ac253459de48d0fee32330c3785d38eab5cc2", - "0xa6c8bee787c4b87137f70c2c54ad3ad0955269c7ea57ddabb1a215e613e250944cada7f241430c0ef09f8eee29fadaa7", - "0xa3fc6a643e1ce110b08344f8913ea7f8c9e44bdf1a02978df8dcd3671d9b357397df9857fb11ba220521d1ce40064ee5", - "0x94089626bd9c81247f45e25e573bd6bf727a0e1a7dcd630dd5e661f65d4b6f35bdc16b64da648dfda404b5eab39d9152", - "0x88362a160a95f01026a2e52aee3521e8496340f96a35351892034198740d8b6159175c60b910a4ee05af488dfa578c8b", - "0xb55a5b875f5594bf41949c212543517bb1ce34db3a896f93d0216813261aa95f73663c789ea0ceb2bf8815255bd328ca", - "0x8f9acdca0158df5ecea4d574e0ef0c256ab271d9d3d3bb4100761f5062f0a1a5d2b8a23685097a1a2b2a08287a2e2c94", - "0xb6d4e3bd49a17fe7d929b41fb223eaf93141453f7dc233eaa74424290014a63ca6a099174b687048d59cefd41fc720db", - "0xac0fa8aeca20a0b4189e96c57c85a2174338550855f9d0ff0c553e773a1a1c32fe3f8db7c8362bddf601e41380c9177a", - "0x82f05710f08f12b206b2ad6a2d06161c884b2511ad90b43fbfcdf54933c2360b7c85dfa4f598b5bdce8809a803d483a0", - "0xa2ca711642fd498cfeb897e4072d13e43b5cdb2480449975188fdfbd4b471070cad941af03a2dd8938d3c376366fd199", - "0x90c27a1df934339bd0821cacaac41fa70496900044aadfccf6e5fe28ceaebae5cbc500fd6f2f88c5552b7fafea79d06e", - "0x818651b7c7a6f691fc47a61ae4960bba7239007e14930f3a8cc9c95dcc0b03643047671f819e30d89c2d1891640fc13e", - "0xa88f01062ded714e7f2f1523644222cd8e8cb8e535eda88738f4b4b19079f4f7be664abedcdb618ad1de3e74689042df", - "0x8174282a183f3f393667352fdd60460d2199de16752c372a44465f8b71ca134c410d1d81f15afac839748447875f8643", - "0xa358c3e53dd70e1a608f36a1fdbe225e28c13b5817dba890ed8e82adcb7ae86fa68ff6cbda7e02e8116c11587ae1ded1", - "0x8aa0bc208a84d5a58b0206a8fe5ee3c8d224ccb86b11b7c9d924e16b2853a6c3623502dd60b94f8d720810e0079078b8", - "0x8bca870eb6cc5f7b5f6b84f88b49d9a3994e61ca3f2ad963f28f925e58430887f5362ed4bdc2a2a38b5fb9e774a75cbb", - "0xab86840fe84b1eab81675eeee17f85a500dfcc95dc4872e57b39919ccc71b702585ab9ac66146d264d2bc8fa39338a72", - "0x87c46966a4bbf2523dde607852a40b26cf3431d0bde9b2c609997c0f29c5932d28014026862abb7d4107b28ab8e2ba70", - "0xa91666a8c846a9944ee7ab243ab535e4124ca8bbb756777609aad848527b354060c484acc19c333459c09012670f03f7", - "0xb7145784894c6df87d2ce6a06cbaa713e46097b5f83db60e5449e62ed5bf382a7fc3136e5599226a2fe7951847527c4c", - "0x951bdbaaa06ba8b427fc4ec6bb44e93e70692bcef6369fa06c7a6882227d27f09465f37f0a5868ce43ade188a5f37f8c", - "0xb69662dd5dcc9ce7bf24be8a0e85e80c8e5af9b030e740796f91de548569bafa2fbcb19d98e13900c76cae3fb601a8ca", - "0x9630a7eb15718a2324518f78f26a71e3c801a8e2eab3236be7623807321c128ccd79c74ab657ea8e115d6ff3078a6887", - "0xa2f98c2084f8cd556cc1bab19398e98921ef56f6445f63444384efe5d7c895690c57d0d94cfd24e99f63f5e31859e34c", - "0x8c3994d3cb76fc6ac22ba2049ea4547db92ef78f009d24f08695b282c95e395f2c1477bd52d3f569d64551aa5e259b5b", - "0xb58571076faaaa547df9522b48c684b310500850339d79d2349dd8211bc2c8307d13cd5bb7571e0b5baaa013b502e410", - "0x93e07feb14f691e66be756b37467f290da9a6677b8ff565964f010fc20ed9c58d8c712c4abaf012c787bbb22cd1473d9", - "0xb4bc6159db1578111190b19aa678281eb2fcf7a82c7f699da7473720493e66e0ab54429da7af24315ed9f7399863c954", - "0x93cfc98563f25b45c15a07780ae0a38c4ada52ffc1350233a3b45417c16cef92e7926354b761d0e0de55aea4c1314406", - "0x820c37c923807790d77d2cec39f0eca63fa3ac6eaf0a1978522f0b1d293a5c46af3a0b4ca542cf39e796afc1fb3d7195", - "0xb87fec722faec6a739355fd30a2757e5d184c07b5bbab8581b74eabc2da413faa6d11ccd65cc93f886c788239b1eefb7", - "0xa183bac7f647a0c15b14089879a8aadb712f079bcf2078d3c65851137a00dd3ed7e47263c064feb19362f98180aa425b", - "0x996233b2010c20e0246295735b6d5b3e932f2aeaf0b35aa3dee66b6296f39e2e7ee95a7e1a15838ff3389ecc8052e315", - "0x85c943e09a6c77e15d49ef4fe57d89744fcdb705ca370cdf70b3d84aeeccbf2155868f6790333f88fe36e08042ce195d", - "0xb88f82b35ae14a3e6fb972c47123236bb7db08b9f9f3828033fbf5a895b09b9b0de423f1caa04b3e8e754409b21f3a52", - "0xa12c957409b6dd335964532ce3c045aabd280188b4d6ee809cef479e51dba030cbecc86b0ea8777cc8828c087006c5ec", - "0x87227fb4299efa535240793cf0079e952e971a18ee62cd71a62d6a5db921da669c5d8eb1bbda318ed5f3b03b38798a73", - "0x84b5c7585fb1c98d031a0bf6fa8ad5484c7766025af552cdd72e7ae59247deb845f8678862c44ebe640a7333cef8391b", - "0xa94cdb0f42ae3afb4b1878f960669bd99008c7ddc24f2fed45ca521c60472e5587fa9bf97b315efee1f74619a4d9b762", - "0x969a9bd21a6a90aa30fea44e397cc88118fd5abeb68839556194f9ab0076806aa320928a8ec94a47c4eade15498f5175", - "0xb2fb215bbe7acc3baa04b0aa9be654afdc450faabe2702a0c9fa760c9e9389a58aa5e3a4c6af4f6f5c934640d90b59d0", - "0x8be6a43071464e6c7dfb0e9a791a658214c1a95adc88f144d8349ecaa0e76b8ea5f88cfe95e82694bc170e49a43ec4cd", - "0xb75d56cfa1f3b61428d24784d51dd65b78b977bbb52cd71401ac7d3c2643f3dc097d6e7668104af402cf7e7e6ddfbaaf", - "0x811005c49d1be377ebd2fd3bea9771089a0f5675c55e9da5f31fe13cfc9d1ff8520f085918279ccbdb0363eda16f8056", - "0xa487f7000c16429f2b7bd7e8bf4990bf26f666f8aeb11a99114d33e24f946cb0e3e025ec8c0b0721f9be101504c8a1ca", - "0x99b72e711ba7b97083976b2db7b97346000a78bff9b20ed910eaad02f6c03b45fb3f0f1217b328c3e2d87b481eaab52b", - "0x828429d387a0b83ac8e377b32db1c893a4555ca253b8e3159399cd053c5de726655a2ad39348c8e7ef11b37b0bca78e6", - "0x835de10c73da7f0c07295a3306ffb18991334c86e5fa4c6df2d8091e8989f6454c8b43721b13696e1f665480a64284de", - "0xa4ea48f0cc5915993c83309df99247dcd7df4c15c723d168759175010fbe8d84adab8393707cb338fb90a6a77b69745e", - "0x9976bc842b06ffbc5afb309eef8964908802e9a5c733de4a8292d5d5773ecafb6daeecc63a8dc8847d76b77d4c3915ef", - "0xaae89156b013e4adb4bd8e7b6007937f0ece09af077fd407798e4155dc09a129d44fe8f8b5f6cf6b3c84746181d7f4a3", - "0x81891cf2d70a8c326c6870a8158edb79babf302b4f9d51229bbafdf038cee39b97f01694eb719df99a62478bbf909a85", - "0x97bdcb526108ef3cc2205aac074ef3001d528f56b4889573e0f4a3a2504232adf23880f7fa2f57bb787ff30b89599da9", - "0x9778949a95fc663c742e70596faf91ccaf8b5b93b78bc2d4993480722ffe10bab3c8df3ae50535d258b6e749a0abb86e", - "0x88bffdb927dd88c1ba3eefe7da3fd6a42ae494bf282e094893e144330cf08e3f518f47aa1dd76d6f249cf83e6bb9d4a7", - "0xb53effa345fe59917f4f1ae754e9f6b8fec9bd34cee85872b3fc47e52fee29c418b9406aa50c8d5a2e853d6f2056a49c", - "0xa616775e7e77e846066fcea413f0023dd491d8176dc450b0941368680571cdd236f0f83883d268842fa61dcbf3e4864a", - "0x8b5ae13dbbd07ad19bd2c7bdb48eb3c760244fe0caa73d28df3f0c31f5418f8b06862526f5a84bb16b2a92eb2c7ebc28", - "0xa62294830750dbf43ea497155b185d611d75e767aafa8c2c30256f8a4875b6fdadaac429e8363848b39e964cab2aaabb", - "0x94b6973fb87c2efef5efc0e7dd7ecff5ffbe76320fed8a20d730f9e3751efe9e5db39981f45477ddfe037e18cb971930", - "0xb931b6f789947b5298c258c8f0b221ca927c447f190f0d8afe2f18ce9b90979eb3247e77e128a1d6c57d3bf5523e787c", - "0x968259d9d001a08c0329bc19b2438b48dceb5942bc6ff9892d78fc36014f1b60a5ce7deecc7a808e41aeb4e26143aa41", - "0xa52c1906f103e3fbee8c12fecd93f7b7d6f37eb733147bed841b32caabc880fd6e72884380a3cf93129d9800ee7877a7", - "0x969dd12f0f6ef0b868e21539dcba5dc7327033eb546570f5bbf91b13f9c2ba6070da430538c40bc53a2ace4794514038", - "0xa853a74380d78710c212bcfa92d3f9c433b8ccc6936356f3bdf923b8e420e1017bc530ce73bb8d04bf7a25b20594c753", - "0xa84dfbbd3d9f409badc8ac2da5a0db98124df9d01bd71b1cf5b2b9c32866309304848a4bc1fcad1130bddfb9636c1b56", - "0xa9599f55173e77dad54cfce6ddc77bc48588f36b79a98c156963a2f5397262ae07634a98ab9bfe1aa6357f78aaf89d89", - "0x91e429b5ad0bafc09b5eefe600e179ef56f1ee045765ab3d5ecbd73eb201305a6de4382038b1350abc70bd1435151a0d", - "0x8785056b83a726622c565985e815847b63745fb66b138d24c985d6f42d5762c61ccd5172d4a3237222c881e5f036b98d", - "0x85869796ef180f500dae84f669b76a9b245e2ff4614a58d74820c22e439837b7d9866f480b72d88f44682be54c6dafb8", - "0xa118baf9c17d85e22ac3315f5ba9aa4e230ca2a031906f99bc43fc750a0f96aaa5e6774d1cf16b492726a37db7b51327", - "0xac8e33f32c1cd14c6de14e75f83b8518bf1bf6f0a70e23ea0e5a29f096e2992f1259a121bbccc5252b9668c605240435", - "0x97babe93e2016d29af74f776e167d82f1cf2242202bdcbaac4a1eba2b3fbd9e7ce57cdfbfe799a0f6a06a0e6838c4e99", - "0xa70acd7e1f159adf7381d3f3ec2cc42b56232601f18ee62fb650e13a80954cd06d39a57217ebf4d8927e28c910671ae0", - "0xb33ef5c10d0588df0b9d2d963912b294a2375a26bd25225f002cdc206a1cc058465c64180d348cccc899baf3d677033f", - "0x93086926eb1be21ab929b0098767611bdf1a853b6b67045c14f00714f806f8655be37150be1da05c5d2e6d9c66057bf9", - "0x8890aad532a6c9b818ddb9f1ea12d627010b4120fd4969bd239a9654a05116272d4cf783ff8256de337bc01f9b4154d5", - "0xb878977630f647a5ed7c99f59ca5eb653cd647277b899b918e5f667eb17b6dc433b56c2f3a2a18a785a4b5a9ae95f372", - "0x975582fadbc276c9afc4d8ef767a66684df5f56e898d2a8749cbc2763982c013e5fd0ad0ca7ebc67758124a609b59663", - "0xac45e154a651857f0464db38afb2fb25853e8bb1eb476df31908b13b4fc86491d4f831c0a15ed6bed0c873b3dcff55e3", - "0xa778d373e361753964a7fe4e1d28702c62a919e5203b941b04b0e74cdd3b4e838cd9b6dac3c39dd523f3227f1b5e6766", - "0xb1bab7994941f8de4235e2e188b302bba847c1618ebdec7fb782241e9eca8d32dd506d254d865e0319c66396535cc484", - "0x8c4ae5b346325f1d1609328e41d20108c4388bbe021361a86a1f9681caf1e6fd64896d72641ba8c984e153537317420a", - "0x8cd312c6a23e56657624d21f230a2c22d102badbfb2e38a8c067186abc5a459d0c78433ae7b54334591862c18864d7fd", - "0x8739d71181c5a657c6fcfee1df71756c3b6b8c48e8d97460fb64eb891abfd23433ccd08574a677fff600ffa5519a2363", - "0xad3c8d1e9eaa6f9122fb14d323318bb0338c5f9f29c719715cbeb15a2738493930542769b596098a5f505359c0314381", - "0xa6d78b78227f8c1203e502caab1213092f320e77a6e9729e1659cf81e981cf905170e99b56c4eed1326320acc6aa60fe", - "0x8e5ba0e69e0f08a49ea4fa28ce0792f7ff6c032844ceef11be90b2215940d4b0f3e4acd5e4b189b189b0a0ef8045aa26", - "0xb7b31957e7a85a640b851d4241c7b2f6af64f59ac221783b88c1b51cc4185f5ae6446a3c7137ee072c2eeb97c929d7ce", - "0xb066bb41c5818d6008349dc6015ab780633cd961b5d947062e14618c1ee1abfe42139c86b77e7f5be0c275fc3f5b8909", - "0xa6597158957e1a0af153183151fbc4c73bbf8156c77f7b409d0f97470b5e127beee6d9246bde770127d3e3ad400cddd4", - "0x82a6de6344e5bd0c5ca95f3be1ccd42fc974403269874603944c08ae1cd3ca887e66fc51ed61da8b7af3cce02f152e6a", - "0x89fd363aea11ddb2dc71288bb534a4a6e32feb5b9e4b88d132f4181f2579f8f8f39d19fcdb3d3d7ea118b9f4431520ba", - "0xb70c945986c8227d239201857e12cc7cebc932c3bda8913c82b62c872b18f866313738788e11bddd630bb5953492fec4", - "0xb4e3a1e8f82d988c85cbb58d9cec69bc63fadb4c1c9a09f36b5a61f1ee96baac1a9458bfd0f3250e1734ab3fc6c0a0d6", - "0x8d01d1eff496e8bdad1e6fb4b60e4bef0ada39a378c8b57cce2c115e611e0c4fa54f9b599e4c34dac925bc06e940eceb", - "0x90857123505746f7bff08e03b1a90f67051a71ba47b49e7bc63f1a8ec30e02a98aecf56465d3b4746aae166081099da8", - "0x98b9d3b7fe1d5449bf6498c30036e3f60c8b90962fe04ede9ebf605d07497f617d99d51f0f0c0c14381377de765ecfd4", - "0x891e7867e70582ade85730a21c19f6fc239760f76f8bbd8c6dafeddfaabd6fa4845f62d649b454fd3af8ae7028ee5f9c", - "0x945136f71f290d8cc6bf282b554cdf8ff92200feb7901987a1348f2d2edd3bd7b7bff6f57ec25fa302a27121a1a959af", - "0xb574d8379842467c5f3cdabc2da9a45e5a6083efd7298b077ccef2c4c3bab03abf1dc11507f4c896d745ffd41e4dd319", - "0x946fea5c1b1d840c10a5a732c7dc23c2bc5eeeedba6956f85ad78fc1ee4a95b309c0d4a4919d1f7155814e3f36fe322e", - "0x98befb2f7d0a860de662f28968fb6200cee5a33cd7a6c376405a9cc6f0718b90fcc5cd5b9142e84e95223a3dfbd10f29", - "0x8c5f208ca23aeae44a056bc21e04b570c13bfd49b14681cc085d5b318e62e4c088f0bea9dde52376967649919b59829b", - "0xb14478442f8e985618272d4c56d43a28e10112ea200b52fbb32b19a4d1eae965fd5ee1e9772416d52dc0e2db57d3ecd6", - "0xaa308b19a57159ff702bceeb69a385f91339db7e683db991b1414bf3af9916d8e52dec4c492d7e8b5a5a011680defc1b", - "0xa8ac18a1adeeaadc192e15b7e92b611c936ba9cc9aee01f03c2a236827ba527039c719f16149d7aa5fb297cd63878766", - "0xaa09af54f9a5fab6a61552421c13ca62f99fae212a9606f8a5a050997271ab6dbc763390bb98d90b1af3bbe9e8d9513f", - "0x96b8ce26b346a0d3fc99b6e463f0c619196cd85340b795fe1c1c0cd4f1b3a9f2bef5454e0bc7d51d75ce26f217460602", - "0xa3efa46273c392704ba0718a44f306edfea03b1a6be0bc1e5c67c62c89671c650eb8ac9bacc35372ade6bed12321f1ff", - "0xb484881108a43a1dbc16a6e7369a04286f896aaa1dae847b4019fa287c18e9d82c8ba4ad22cea2837bc220524a9a7a17", - "0x827b63d83e15ef61d54dfc365ed8a4f9e200d526884ec4b1d35032227245410ad7e1b1dd3c1d0ad48ddc4720f0fb5e1c", - "0xb513c3ddafb01b6189590b74d20348db74e400c106202dacd9ea9552ee2c642909a7a73ed7ab45a986eda3a0701be79d", - "0x831f4030463c84cc6cced28dfce0b3e6b6ead01afa200ddffd807f31ddd4ab93a8699ccc9d26970407628d521118ba6c", - "0x86312e006a800720329b82f6feb2934e2cc156958ba394278caa6766ee10800d2fb8907aa92346dcf6d389c4f66f5e1f", - "0xab6841da372a286fde1dbbc57cfe967cb4bebd6fe2ab9e317cb9f9eda04a4db0d5844ffa8db72eb9cc6bf311667ff6e5", - "0xb8238dca3f2be29bfc4aa65a9f59bd4e2c17fae78114a69bba1170782b993afacee3755e768317a923fd32d860f6a74f", - "0x923c1b60c052a3ed4736da7e84e52b0e9e154627cd90cae335dbdf05af109ceeaa016954d6e47fbfc40d9d5649c198d9", - "0x96a69d18c838512d95d97735263a8cde752b2bc790b3827ce048e177a063dd11e2a69b86b3184873503a68170b2ec255", - "0xaed7c3af469a93c22afb47a904bc70b7d88262ecdad48ea6a6c07eba7398410bf5a97a786beb11843cf40ddea9a37098", - "0xa6b50f6369ae558dda3ceb8cc9d99382a1e62d0d9804b903086845479b9381fadf8d4595c2f342307c94d09e02e0ba2c", - "0x89fd703d457580a76544bbaecf65f93d3335d7a22e93d14afbaa61e5236d9c8d8b005e403e9f5e7a103b0386971a5e65", - "0x8e909a3638208c8f885820af8bca6ae839128ce0d902a2b7b6f9713d21da8c943a7984d9aeee7fb104df4cbd1092967d", - "0xb41e2d7a1a0082eef43e886eab5e781bd961a83155d6a14d62756ab7144a208f4e4574d47d2ea094a7fb50d0ddd7a241", - "0xacc6c63450d124014a1db846bf578c44e910436c83190fae428fc3125ff2065d4c6a1165aea799b46093a86126d4c483", - "0x8dc63127435cf2f269a83024b562b3f4da18aee3399ed5255c295e6b80c357cd8f1887de94bcea29f84db3193570c417", - "0x8c4cc72a98d42b9c5807322f596ac0b48b08b16ec956ea4a70c641a16a70895644e5b14aee85a4046673849249115abf", - "0x992afaccf05d79a3147d2985970c1793459130ddfb18a9d31f3036c260790109c9ee6a19a812f5d55779c2facf87785c", - "0x91394d3e84649cbfe018d9c709604f6aeed53e91cd57e2b29d0e84aca3c413f1e0135c6bcbc70784dc8985a30b9f3fb5", - "0xa33fc126a8f9652c6905b1f522bee45848ce42d7f4c3a4cb3f6ce0e6e64c82de74e175c2ab6b5a867a8d42322d257ea8", - "0x962d5fb816010a14140767c2486cd629f7793b304a96cb82ab85a867bd9a407bc8ed44131f87238c34a1e4ba41adb1f4", - "0xb09048879ce26a34f56e1d4b2cbd6eb2a55d4ddcf3738c462329ba6726fc0a21b8c1bb55169cb8338b2debf20dc0927f", - "0xa9f9ddcb86b7427e268973bc7f3239212716df394394fa535b9fa5225b6191d234a44a126766eb470ade18c469a2d166", - "0x87cba6afb115c0b3a515b08cc842e7cc2c705880c82184174837c0a06e1687ef668609c2ca080840fff80282caec7390", - "0xada109548c449990dd8f1bd42c9cbf194a62625d165416ca469c334222446fad7a743b1f584ec3f20526c3c44d870696", - "0xa69a0c58fdfac715311dbd37c4464f0475120362234f5366ffc65227e8178e037ae91efa5a52cda5fe28243f47390175", - "0x98e726cf884c6f706fa25fe25be154afaecc0c3bcfe682a85afed225bb44ea07cd1767b4d9f2201358ef19770330f0bb", - "0x988ad5bc57f0621e3ce1256720f1161e785371fd478c467c39e554e2de27df5ab8176508658aa90ed7179bc212ed0dac", - "0xad0ff6dbfb397da51fa4d9d959ba5819adbf1a1ee31f68fbd62ae07a9cbce0641588cb1008dcd0056c17d74e83c7114b", - "0x94c703cd32b9f52c41b07aee3e3c19b8c2b4182da80487ed7991d568ea8827f0cdbd1e977d482dbc102c4de2058903c9", - "0x906fc2a06cda5d82445e50bf475dc4ff2c17e64c982539c26545798f9e4dce0bd4daa8d55b027cc0a8e1b26c3e45cb08", - "0xb09a51f22a9a24cde25f805cb18754e27d3d168e64db4ff13a202839a81c69dee8372b5872faa0d23fea283609cf4391", - "0x93c908f514e97502d170310bc495d02948d99eca51e71f9a4779ebabae1431e1f7ba465af485546a9fc97c025877df50", - "0x8337859db710ed7e276a47e90cb3912c829151cc2bd3dbbd4dd04acc90c9cb4870c44f4233b407db8240a93aaaf7302a", - "0xb13b16ea0943e235f8cb064d6dfaba9bd8dac67e9b6275a4c3f54a1770b9c905d8855517415ef6489843848108dc85ff", - "0xb28489f0de1a76839a898b8d2f302c95610f17e893a6e7f2e824fec773cde6f2b219038a3f1fa212bed98c97daa66d5d", - "0xaf13afb48d56caffa32f941ac5542ec2b7fc0d6dbc3b16e51bd2a8b633f0a041ba1e098d9a68c470da00e630f08f24bc", - "0x81465afadc45ec24825cba7c9edbb36858bd2ca8f8b0b9d7240152b58a411b08503b530932e7b6ec3b0f8612869cb244", - "0xb2e6b7438fb6f70b52b8726aa870f18191920bcb213a375817d100297b507908d79567d0c1780b3f25be807a8ddcb853", - "0xaa7ed2b0b2bb2070b5f001578efb3d1085950c19f9d06584a2d31e1c235e6d6d1d7f081ca6fa2b0b0616b01b9a467005", - "0x91a245f1aa8c8ffe03f7db1412e5466f0345196727eb8e6f98b80c01672e4260e90724a538d26b094e678a3d85f2dda6", - "0xb9ecde963c8176d6a726b129f229d803d1a6259533e432eecd7404703c972ec7296ba35015acb1f4b5ab2653a3991902", - "0x8cf535bff6e98f75d98c5d2a691a5d1aa645c7ea18d677d07d3a11a9cfa222a7b8edd048529d163120a5aca411161314", - "0xad2e51afe96dd0e942a7da5a37587ca1359fc17cf66ab70cf37ab70ea34f90054fa52503d6527e89e464f8058f5cde79", - "0x97337d62f83ecbaa1f402c3964dabfaeb279b916ca08430a61fad6c31d60087c7e3a9decd541651a2b6e68fb2816bf45", - "0x898b7581288bc7f97987138b7481d29e2cfd5255ebef133177d9060790a0973ba07de62cdf38568c336c237cb084b7c5", - "0xab53c0759663bd976de62f9f98fc82fa4f58c146b8a6a3053d4dad836c762063ad69a54d51b5499e9def86f8d4bd7ce5", - "0xb35ba58109d44c14be159333b999c1e471fb61f5ed48f9d2a6bc689eb045864f3fe88a6ecae12315183703e2b1fc1ae3", - "0x858a20e233f2860c24c5a3f4a820cac7544eb3ce91a2d8284f12013b13120121fea3c4f25427c3524a1e883aead429e6", - "0x965be1a56adffa51f5d80761327cf69656e6c37577225b36a34afc2f8a959d8799ad0ecc3eff4470d49eb22ebf8f198b", - "0x8e575ee39077bd865d70fca2d93473f51dbc99ef4f715f4a3b1d9eb21deb2afcd0873b4dc53035b77e05f52029f069e0", - "0xa5c670a73da241f5888c5cb44c27eff2b8ad3f491e0b128e5f1d498aa6d76640c9e625f3c5399ad8e99b666e4b2a9759", - "0x920e1524255b03cbe500edb230696c55b7774963535c063121c9e9987ab74d504f2f1cfa14ba7ca82a6f66745fb0b392", - "0x8a0bb7cb267b8e1e0cddee208734632b28313b3ad89f9c2168f341be5390bea3f09eaa51f8923b87697799a53201dc26", - "0x859ab9b3cd602e78dbee8d8d5c3a9eb4270f130ea4a1b417ca5612be753d20106cb2724097840ca8919a9a96e73f96b9", - "0xa76126d9a997fb0e7e2b27ac682dda1c6b99067313371387084be1f6e7a9a59bfac395e91f089e14cecafd151674a446", - "0x8aeb466c58e2829790975fa08dd31f18a51a63777070d2e24605adb1a77b5e0e5c5e0bcb483076d23a6fddee5f402f8d", - "0xa8959f312f2ce0d7d974a4998bb709bb98ff6456413ef4ae9bcaa8d687b8b5ecad91414bce8f704aa44a83d8a0c86462", - "0xb9545c8567827fb28d070624579702ab96af4f06fce515ad880893b97ad9a374c4c91d6288e2a584ef14b1ce4930a6bc", - "0xace41f9c2756ced611da16e21704a367b122ee1c2feb83145103203ace1a5cce0ebd3bf295caaeff05281672c92574cf", - "0x93b90e75f56601191e3b568368bf1d24f97512cd42cac1da8b42f0019e07fa04cd5f835b7e9503fe4702632df27ddc19", - "0x973c8feba289eb473448c32b141ab4a6f861222626b3f2fa265a431a54675dfe5eb479100a33c172ff935464d6e85f90", - "0xa6b0798ce89512644490d65ce3d0441ad950f9a25f6fe2c9a766a58b9c8222fa6cba753f314cc7ad6b6e3da881c67abf", - "0xa79c560dfa179075e0d1506adf5082318915c15048328b15ddca5748ebc6ed8b10fc5d7a50bfaf8942cf9ddc6912be0b", - "0x8841b34df170519d07edffc4d33a0e70c518dcf53ea8d0a9f13563822312a65d16f99cf596bb95eb0daf85435d4bc0a9", - "0x88527539258323edc2c296dc742cc26b9a4a984ca299a81705c702a425ebc7345a79b4df84b2d440a1e73a09fa18b5d4", - "0x88026753926a068e1cbf49a9a0fa545846cc7ca9abc0778e44f5b7510c1b6b73e9a9b1aff754199379522b2a985c0881", - "0xaa2c306ccf91f967b5cdcb50808771ede36acb9a6cd84fa15c6de4c873cc2d0a64e79778a2822a109b41f5205fccc30f", - "0x9751fd8bc2a07ffe0566e5587e652d3d8d5250517278bcf8754e14717b8941c07c194f14fa757f9a2f3461ca6376bdee", - "0x919746e5eaa18b734ef59c0de09ee8ec65e348efa659219d9eb6a3a77b8edd9449a6dab727e9860ca0d3837b161c0352", - "0xa271c146794d6a65c6fb87797262c22b1d938ecb2624e03809233469296d33ac0de6909183c8efa438b5f3971c8c3eed", - "0x82fbadd9049248914a15755dff692bf689eb2650fdc6e44e8f3ae003b8f15a0f2858c7a2a8dd137b3448420c5f434229", - "0xb90992cad6df98d2fd1c75bf90978205280d993d439c44d6721cb95d52eb042e01b418e45c3c48ed667aad577f3fd1c1", - "0xa0c3d1e8b80ed4a979a22d6a9647bd57f22ac8d73c37ec3d56d06dc178a5c9d5ad3ffd6dba9eb7844c1f40b8c89d3d33", - "0xb513aaf2f0a07fff3543d8687426d07773677ca4d23554ca517e50bcb891164d1f5651944a2f6e0a634475f6d33bf0dc", - "0xa0b179aa2ecf572ac4a3ed898aa34679be3cf3d8d9bc74e33609345cf1743e915124a59ffcff41bec012ed2a99447e6a", - "0x8e991c5549126d64e0b515a03d266e19097eee38d08121d942973d568f8ae23a15b037337cead0686f7c944b9fda3e39", - "0x93cab29e1bb116a39ce1a82897776da1bcac06ea131a7dd141a688ecd4089c5a0b8616d6721b1c6d92309ae0820a367a", - "0x8d4e0159fd3534172b2481764cae7746b1a47e9b7b9465fcec0824ef234674fc567c16ca7116dc90ba9b2ac3eef28d60", - "0x88cbd9ff6ca551a7efca30b5f59fedaca8f9efaacd4e9bdd17ef0dcfe4f3449b52c7d3066716f3e7fd478f264d10714e", - "0x873c71b2feef5230c31f13d8425f8b0eb0171eacb9225f484a36da3cc796d62594fa4771af9ce1e7ba951f5377e5db76", - "0x939eb99d7fefc9fd5b3dabaaa5b331365121374a4ced862b8cbe0cb3c574fb1f0cf4932106088a1d87522acc31ba7f77", - "0xb283f1d54bcc72e31ef572498821ded40485f38d2ffc67f70bac68a100612b020a538b36001d94228a4dc97da8fdaf17", - "0xb2e4c2be605c8ab3038b4e91bca7e77e127c5c3106913ec1341102e138bc8aa1d218c3d3c2ec1d36fb8e044b4bc211a5", - "0x82e73cb5b2cfd78c17131e871e92026643bb56916ae64f009a009555903df878fa3a2019b82f7e71a3ef7eb503c792d1", - "0xa6d828a5b7de0e7818975b65244f6efeefc712c29f2f17b27f3264e19856d869c350ab39750ba63d6d46afa3aeb369fd", - "0x865b17027e9d5bdf2de0afa2f524f67b6defed87b14e0af5f4b6b1966c2de45550fd2b6b39b1be88ee9cb06e755f917d", - "0xac8b47f9b7e675b556445d103271e6bd3b39b94d15ee1f3108fd1b777d439c75437c78ec3b281f7104af6d0efbf0ecbd", - "0x85c2f71ae18105fe499aa4da0a835de3e92ce05d0f28ccbcffdd2860898ae9909e1c05831ca4fed96545133bb3170302", - "0x8bdb4a72b06562591ee44799bd7400ebe71f6737290420dd4ba2bffe0050d8ea4d586b7e329541a52611e945ff1b16b8", - "0xaee4843c9ab02026ae723531112170bc7464f51460bd4ba5166fed54ecda0f53342cdf94f4354a5bc1b941e8ab085a80", - "0x84de368006db07c89a7a43b7de54a63637ed72379a41d029430f6b4ebe404866896d2e84996998f7b2c20324143649f8", - "0xa8375f69c01289cebbc97843f417d0146f68c6416981032bc1f42d3e09845d5131eb9b4d68fd0ba7f5b1223b83e51bab", - "0xb1ae126dda1a88fee9265ed8e5bccb810014044d83c70e01e7f80059a685067f4204cd15809b230caf5dd77738a64e38", - "0x8177544c7b1f77181735c660102da20fbf9a2ca4efa79b21c92f1cd2b912630aa6c830b7513980656bd275097be59d1b", - "0x874fe8038905065ff3b77f1e53904854fa4fcbdc4c8959fd2df2e3967b3b84100c6f63fc44338c01fb26c042c454991a", - "0xb19324d737364cabef3d2ee4785e8f19cae399afc06fedff8fdc120e0ce525b3755161183a1f5ad11ee758104081a49b", - "0x8e7525bffe35c1f5c2db63ee911e7e0197951ebd25868660e6672a3e7d4fb309738268b36677921be3be2f323ca718cd", - "0x846c51c7d22e7d43f6e2addb7fb25113c25ddaa51252a898fc1d7d5b510f772534c4f5d37ed3074d124cb259e2bf8110", - "0xaafe2a16cbc901730178841c39803ed84d3a78f92f42f84a1c01be4aa3b63ed7ad9d054ceaa8a2d56eadddecb287e8b2", - "0x8781c9810ffe3d93fbee3b576a15b8786c3efd6b5a96b75819b1f93daf413d4fd0f56d1ec277e8f5adcb784b17f08371", - "0xad66011f0e2927ee1924725bcf8a296069f74df78ec66ef6aa8792f68425e48e9d7f717d022f68a079501770ce192fce", - "0xacd0ef46fafb06f336565d86e0b22f9e5500d2f73d047c827d6a207af40b706440afdaceb32e6571deaa1a79f5e6fe27", - "0x8f65bb98baaae22e84a3ff375e7598b5c61ebec676fbb5a4f79c8463c427eaa96ebc51b1fb504840b7b0206ca6c2c72c", - "0xa4078341325d7debf766e43679b8b68331dc13651455a73912afe062525d2ea909d8829ac08771d9b32f2eea28b64022", - "0x88eb29841b022f2ec9029ecd1a137173cfb79addde1c7cd4be425e5806ea6ee295b11a0459a940ba79f789689a8fdb81", - "0xb762b9923a40a1965847bc7d046723c3b8f0d63323303aa3b25e93b4af8e527f1afb3dafda831f50baaf79926d1b1e78", - "0xa21551dffcdb069cb8f30b625c8404dfe5efec83227e3a1a67ef0c9c9b49c658bbb31240c3ff6f8c68e02f67974c732c", - "0xb4735a6610c371754001425772aa5314b759c24da50b38a9390969c27e215ad9d463a76762323b7954756a8d5ee7936f", - "0x81bd78e545938f8a3e53ecc2e88dc26bfbc30941cbfd009572d9b38f8eee47a85209a318cafe8cbe055eccd5e62d50e4", - "0x82ea5495db9dd48da97723bcfce02788549c6006773eb9f4aa4f0f3ae13414430edfecb5cd095259179ec2014b6ee1d9", - "0x8493147b8f0818c2d5e75acda498139f95fa6f904b47f87a8c07e258c60f39bb1faa1d29cf0834c8a1ef1d6015d37b42", - "0xa491233ab353f9daad86e60fd48b6f70dce60dbe36775958d8e270725cbbda96578b17a0c4925ba1298e630c6b9ca9a3", - "0xa8c148b9e1373afa54778b6d4f76cb12f40eb6e07404a7f27b271fbce0d18d621675f1dfcb30e3908d7df1d962de2e5f", - "0x9826a45c29ee22cc26ae399be25cabd16180a291669fc822a44d14cfac81aa7ce85112d7f2c30effc7e83d131c9937cf", - "0xa793c75e716aed4048a2893f11eeba78ec565ac250bdae16594d056f06f4aa7d2a156e1617fc26def4e39984fb28936d", - "0xb6c454d822343cd1b1ef7161cd2ddc28145134d4e59e6d69634c010ad1bd44120aa8458eafc28f6103ece7e34b368e1f", - "0xa3340a0edc3fa82fe4f31ca2d19d295aa09c74cda3bfc3534c66eb71bbb7903843bafa92f7120de4505c7ec819a89664", - "0xa18e5218cd4349985f412ffc7741b5db21bb14c6e00431daba194771300e740f75fd46aef1876543967e8719bc6517de", - "0x885ce63a88617bee05144bc67d08f1c7072d8c4e09b23b7359f020995aa8cc9654378d382de6340ddf0803717687eddf", - "0x8d8a0b614be7df01a12e534bac102b1881905a9d084146b3d0cf2086dc7d400129e0de8e48fc966adf9d8ec8c1336429", - "0x8baad19f604bad656398a4010b20ffb6ec6131681d120220dbf2cc5779de1ee146d0b773bdbdf4e8e30aa0f464f2b18b", - "0xa39ae3d204491871c2e88d7772055b35af341ba66531ce3575f47c749eb8e380d63a7939d3408cd51356cca29c76d4b3", - "0x813afd593876667ebf0fff2b8a8a5bfd0f42a4fe2e4a0b7c78b6183605706c97dfc40b627340e1d9527f618719d60e88", - "0xa013e458d678fb302bcb6f002a52e3e0ace443009eecc9113ab5b78f4663acadb8ca9cd757a7cab1e850aa23f09ed698", - "0xb6e14f351fc47b9e46a83984756812cfac795cac5ebbc6f00d673ee23209d0d91a6bd7d576c7d35ec3c7e7cafb758a46", - "0xb94246a346966caf6fc1e0081a211f27b38f058dbb9dff915e3e65391dd36d66c51324667e3d7469a865c0cc064589ab", - "0xa1bf4bcc7420bd17acba90ee67af96e73502777e1723255a73b1ae3e92fc77e80a287ce7c3d4088040e0edd64577c8c7", - "0x8b6f5eb9b6bc7320349b19876864baa6cd8e07da4f70653d7369740184ad416c40b4395c04750f5d8b54b3b3ba68295f", - "0x83250b957d920b1b738f4d0f44f9eefc01b5b0582128f5ddb5a282a11ee207ba1ea7867f00588f8b891bbde2e56b4c43", - "0x8eab312cac9de78c9fece9d67a6b26d58c4e15d5e0668ca2cca2d9c51636eea5210a893f9321c2fb232e09f9d0b40fa6", - "0xb4d1e5f284d50360dffd2a0d21c4b31d81f521158aa21bf333a525cc68e690ce8ce4f0eff8e71a0c2d5853e2fed18231", - "0xb1f194c28bbe217a2c98ca8212fdca744f0806d60e51f9da81548155cfb97a39e2a98e753be8b2196c83f7db8caad2e9", - "0xa7905cbb59722d9463c6317ae59adc10d5bcd6e9788f2a54f4ff4a4de03df3f830d6b8faebcda541d429a7e42d158c9b", - "0x8a3b31d0d0b33e7011dafe25ba5c3b7629cdb5dd5b31385d786fd80888fb8409812b96d28fedf6a401a93310b045c620", - "0x86e4990bf50b27bac76926dbc65a1ca34a759d005e56eca56fd0e00ce82635dffed6f3052740cac2f1f37204699bba9d", - "0x8f0b6a0b66f1f5fa3d12af444963c6a45785a36dbd9e1a5f42830b5534ca8773a05fb618292e718cfe8a066b8fea7980", - "0xb7f206827d715b33989de5c02f0886d3a457d0ae34931ddfdfe2dbab121b69ccb560a71fdafcc3ff204217611674f5d3", - "0xa6e2ffb0c5f29043984c54f5fe6449ac4b7a86f2982c909606b88316ef1f0a54638d565f44d2fe8cf00279e0eee435a9", - "0x8cdde76212e73f9430cac210b52507583e81aae0bea491f6cbe27e5e2c8fdda373ce8c7a5f16bcf8c6238b282d06639d", - "0x8030955eecc9b8e2161d40f1f514d58024d25e07c6710916824ed8982b8bcf7ebebc5643f0260e1ef6150b6901dc2dbc", - "0x8938fc90e836d7bdf1cfefb2716cc25aff34e7c4dcf66b349d1fc6681580de7f58665faac29494b30bfa0c743d6f33e3", - "0xb182f9b4a5d838e9d534e41ecbf06330c56a8a64800eee561de1fc2dd9486565ae6099f40d0f1901066f45047641bd65", - "0x81f98b85de7b6c581613f4a42e0cb0dd9e6336399b39d38a4751c2a9f195b65c9e5592fa1728b91d83cac0ebfec7d675", - "0x94681572da95137ce41d913360cd567b570a87c9a439f2b67b90d623561b75bd3dd0486a90a63d49eaeb412cb97768da", - "0x8e64922606ce05375556901b8c042d4f41a18fafeca24c1d56998e0bc9054bcee7ab079c3729a67d908d0d7967a85edb", - "0x8e10e8952b24125321d0cd9ba922affc93908b3abdce47eed22fb2d44cd556842c31c36de6d4c28b4a1b5dd84e07df81", - "0xb6d464020a51bbb53670c81d5f1474ef439e006851d5d5a3fcf74219614a2a9c983737f20b254d38a2fc7333b35fb3a6", - "0x91801712ba264cc2eb65e8a3d5a032674a89f4c2dff95ef9d80d3a9285f3c2cc108e775dc326881484756814c2a03637", - "0x986e5a00f13326735bfc6b41b086623101f01dd55f2a88bf995a3b81054da86bb2f97fcf647d58e90428e8e9555eb020", - "0xb2875b4ebbab678fcafd270a0238a208b19803012fdb3c23f06c74bfd45929a9856b7a0f9881b75c7e97fa9d35e49d1a", - "0xb3d1acb9c844d8d2232834a81862c59548cfa849e8e5408ee66b4c8b86ddac0fc231b2538a752eb6c1ceee92ca443d1f", - "0xad0b1b5d6bb50c43f5f3b692c5d3569d2117b01caa7f0ffff502d5ab727f7702a2d458b89d77d218d3f92351b4c2b92c", - "0x95b1b99dc260ae6ac7c387bedd43fba793274b15768d93df13c88ff6cf637732cb6b1719467919b444c3b5166f4f0107", - "0xa0c3c8b59016056742145e7f4ca6568d4393124efac6540645152bf71173dea3d0058bb11b3093228ca4729cdd5b3033", - "0x9278afba60643257d9f21a4033df3b57743c3b43d66d96ccf413154a63db054fbc3a36f2ef378169f4f19987964c0bce", - "0xb558754c97f9824a72644de1725127dd36e284fc07ce89006b990f09db77c48ad6728e5c1891a691460bd5416ad65faa", - "0x833a02af76172f868a25e850d35f4d164889bab8381fa9c8d9880ab0564a3769ce3961cde72bc94ed73a1723daa35cef", - "0xaca496f3e528a2e3eceee138291107ddddd68bb088b2e49ea76d0c4136c6924b3251d7661ff467a36dff29f07ed09102", - "0xa9367961ae88a19038c446df3eadb280da005d120c16f48ffeabbe4cb8e5e2784902cfa1192876ab934bc90606baf2cf", - "0xb43feb49373dc36cb46e050e3cea43e636a64289efa3af790dd3fe960446492b858f51b3be62c6b75b510d8e2b985573", - "0x8cf24955965468125fba2c5a5799672845ea6ce97cd307b09236ef1a3cfe55c88958ffa311e8bc8335bf261a84275d93", - "0x88ceac98b512e5bb915554af92318a5d07a494e0b8734c4415e192e7405d6b06d170fbbe254e3bf387759f6d4961c34c", - "0x8a9044ddde945daf3e0cb3f897ca00d0d4e6a5f7c99aaa3929f0beb9a44d2ed23c191e37c57140ebf3ec759f50f84d57", - "0x8b2a2c0fb51e7c5fa51e8c593bcf118696b8411bc93e35cfe5de6c5465c6e80bba64398d7c6b71badda616b918bcc7d0", - "0xad8bba2b7d5577f971a1a561b17a9d8f6b7c35fba55e3e421a0d8d77b520eccd52122f02afaf3899218b652980986a92", - "0xa8d743b56896d44bec838e10ac1ba5a43f58c26655c71be0a5417d936260453a8e91752c87334676c5dd1dcdeef4fbd7", - "0xb0b0540f8d2d1ebdcd74d6e4007324de8f8bdea0531880520d79773c0b8eda65ed49e672c5a294fca6b4560442085829", - "0x96da830d1c1625d002008e9a364005b2ef16cf56f5aa4a758ee963388493cbf90aa75c25dd67d496af17212537ad44ab", - "0x89e819577a95195056b872f8f790d001fde3253a23120e2c41b3ced7fe8e9bae0df74907b7d65ddf9bbd6d2efa18eba3", - "0x90a139ffc7dc0992c023651517db4c195aa2f618dc3002f4a0a43013b6c6022d8d9844a49cfbaca543c9cf5d9b2210f3", - "0xa2061f543b216fc9c801d885ed681f9253f67cac40528b23aa8a709f24e0992fa42a10f1bddc7f10af2c22209343ca26", - "0xb5f53715b9146966f386f214477743e2fd2b771bcf90b192a5863c06d7225be34edb6bf71389085edf344e60afd88561", - "0x9634ce27272f3c687035789fa4eaea2aaa71db5b5531b21b8e029645827b40561a5901b33afd80a3aeb5777aa89850f8", - "0x9674736cdb4a823bf982d54876794e99c7672eaea7455be90e815abd03ac06ce1fd9e73bb987a515863c6cb4ae597835", - "0x90379303e285b19fd7816a6d02c0b8f94e6291b56c196d76aa389cbf813dee7ebf64e45555ebe8a281daeecfd7aa5b00", - "0x8a1f759f6cd6e5134f67b96e0edce7170e4be1b39afaa7af1c2de989116a6ec9d38a2c077c8e6e65ce0bdf729f20f1c7", - "0xb416f9937a51a298548e91cbe8fff71585335c00e69602423adc9cd72d18821987b8fb5ede32fd8bd2166e2ba9aaa792", - "0xa423073148046c81f840a481d57909f7ef621a51827e44706da9e1f0e27fccb8f88652097a9880ca64c41f6386aa9069", - "0xa173305a5aa2a17349eca704fee25593f5c2fdc5cd8cb932a1bbc0ef34bf54ec2f867ca93d8e6aa33679cbb71fe11083", - "0x87c6756d14d815ac8237ed4a75fb11206f615585ed527ad582841526371366ab19f602c7448a21722adbf2d987d89b81", - "0x8a1a6f06d6375d2bfbdc7531e9177a45330458da2581f65ad129367c400cd77f548aa748bb470bc560c0b02ee5b802ab", - "0xa24a05c30d0fcc8334f6974c30d13a5593bd3b388e2146ba006f232bcd6886edffaf7e48ed6126efd3e651997dcceb12", - "0xb35c5f8a5842d97cbe19105305cae1f971da5662c52eb979975efa0753bb60a050206fc0babac5b5083799e9ce8a68e0", - "0x939ca5532c922d00d08ec5914e6c58f8a1302a1214a1cbd5c844b334ddc84e694768edaf1a2af02289ad74970800198a", - "0x911d6104a240f84e0f6502597405b47a7faf5e68717f6d389baca62bf82fbb7207ce8d0c584fd9d57d3afe1f957b7cc6", - "0x88777ba7a4bdaecee78d42687cb4fd6dcf04402b43524e2ae67506d93acfdc29d9dae640c05d01c90caee1d04cf3d35a", - "0x9226e684606f8169e38dc21a14911d0306b1c9ce5244500e4b108eb1a0c0783486acaafd2e0b3b60c413bb003448ff21", - "0xb2f527adbb9feef9553bf508f192b5ca211d0e491925a2331bb294fcde7d8e0fd72b441e9f07c838640dd35fba03e1a7", - "0xb474e6d6ce22ea272a93a3c078197f40c01b9121c6f3083a8e587c367200b8c97ad94e156883475603f0a66d0340fa52", - "0x95c4d9896df11d2b5a8205a19d6331ea02a2de038aded8e6fea6d79bf5a6648d5d986bd29430e4cb5a6afde8b07a9a48", - "0xa12bc53ba6b6f8350b400fde04518a741a1d755123a6ad1d435c7642492c7df28f7091f17b254e793561923de781eae8", - "0x8a0578ac03070bc920a3b5a7a33d976b3133501309af5339b0cc70536965465b4f7288af70db3d5be16bc2a1e5c26a86", - "0xa66e27284ce6114e48ab56d7f623dc37a6e79cc5f487cb2bdf0acee099cae744cf3a9de53b111492b5ef99b0deaae0a7", - "0x832a338951022c80444ad8c6d0285e86db54254d2689defecac2ed87f5eb4d876373af6d76e3d613523e32c3966142f2", - "0x81e83f01bac3ac3fb67e780b28de30b32247a774aaaae118db3d45c8e74d1d4f1defbf9c2a7ffdf176f5c1cf4ae4167e", - "0xa1b214ba7265f692b4637352c6139bae8bcaf3e7db5806fad0014ded93048fa4a36ac9c9e0b7cca0a86cd45bbbba2fe1", - "0xa7ab6f470a421e72fb703a9d153362056ce80c40264a3ee5698168130cab8e827df5ce3e6321ce9a669c87a2e5c67499", - "0xaefafd219f2d062a378474c48d2650b51901b6bce00e4ba0b509395a6fb39699037577da353cbde187e65de87ad01575", - "0x93db16a0a77d1b181f33ef10300112fd8db5b2eea26732bffa3b1fbebb792c6ecdf2899cf6f26b505dfb46deb81b217d", - "0xa63b6d9d1cc2f31ac5f836133ae66bc9de3e07ced5026f5bc90116599461dbdc03cd7680c1bb43dade9218ebfe1bc1fc", - "0x984b49ca86d38a486f6315f4f9e6ad521901a06f8862ce1fc095d9c66bb2164e334718c71d7472ed765367db5fede105", - "0xab49ae93955a38f45f756afc4248a37773ba8d0a19779253fca3b744854715b9c9b10c09a37d3426614ffd3a8ced7bcb", - "0xb22166dd64c83fe16feecc09d4b1df2d967ce7f4ab526ae39799dd5a5a4a9ebb1d4a432c5efb90e0875a4eb6b079e2fd", - "0xaabad619d887b69b9562066fba2179c69c684b8cc9318c9e39646f4a5381535c024ab277a0f0be46abc95283b337212a", - "0x99f5d484db149e9f8dc9c6758647c4e3702d88986600a3226874d612bb4b5e92a76b1dfbdb0909b8f21afc773ec67c7b", - "0xadc8bb04eb8c56dc4ce97c3fc1670da10db134cff2edc214ee3221079251b968e2dbc087c56c01c9260b49506958a6ac", - "0xad625ddf5cd211102543e0943a7770a9b45cf3550d12dbb484cb5522b70cb626f9ac795b07a305be3e6949d7ad475f66", - "0x8f9f5b2b43624e89e8535dc73fc54b744f247572b2920679bdf6a3ef346e654ec40fe8f81a0f7c7ce7cd5b48f3975359", - "0xb70b1642f28bad56bb24b342eeddf5c3782e0cf6e0d5007c252413bb44b32586da1e3b4d8b45a72c91e44e07334da68b", - "0x81b0311e557c47ec22c5f5d1f757c6193cfffae357dd2460019247178b13733484dc8630fe2e13037a1a3d681c69066d", - "0x951c9f1504b19acdac1c04aaf535d3cd3e39c431b2b5d9def9b374468e93d378ecc3f5aa02c91ddb93eea431b327ca4b", - "0xa85e1f4c292723d18a49cc9323dc7af12bb5a8d0c95d71881ae235ce123c50018907f46bfc846dda1a01b14ec45dce14", - "0x8a46c8b86bf9890df60de4c210cd7865892d0c11fdf2747620289d73bad597e6b482c208dc310c25955dae8392d8f278", - "0xab65408622c63b67842a80c4ed665258ab617ccd07871fa3f0fde2e5ddfeec49f01d7501790a60b3a05d7579b087b787", - "0x8706913d42b557d9ea4d7b70697069281504b3c4e1172a2291e3b3e0a0305c8d0bff6b7721356d971d2fe58e32d4556f", - "0x8d9b8f3c113ca1215dcd15d4c37913d023c8c5d04f617319af76bb7bab72fb756c5bd992db6b9e765cd7695c316360f3", - "0x942d4d3351b2a9bfaab2500b27d24fc2d7237e791993a7d0335f36fe6456c5a1a8bd28dde9228fb139e95288d6de5bbb", - "0xab014e9cc7d3ca08f1d3d24473ddbd693331f4bf21ebdee0fc997aa2faadb43db6a1195644c459b52a969f3d98a85b8b", - "0x8b679da80561955990c91da9093837953f4ff7fdc658b51639c462b578a2b31443421712c6b7742fddbe0ced48c21cb9", - "0xa9132ac18b1bce93e815f6d2f8a0d2f433ae4d6fa04269eb0f5f25864a8009b01531c7c3ebe87f07454927a010ab6dbc", - "0x8ab02c113149efc877967c92621a8ef618bf423017e78b9cd30cbb13c51200c6ce27c46be75e19ba843d64a3050d4467", - "0xa881043298341efc28c60d850d90d90279fa6d8428953337ba57b74eefd858e362c6118a82ebb025c9c102c91b4aeafc", - "0x92e4a587479c64b8df955c6bf1abf1d7979a978e45d96f05bc1b9648f10428d77890be9ee03bc1b1982f5ae7b926f0a3", - "0x90c21a22826e2e9978dd7522f51353fb33224cb65603779de41db3ba41e01d664e131233bf873e28d6c71294b565c533", - "0x88e8ccbdc54ff06380c2243203d3f8c8a75fcfe638d6e6a010c0b3a39d5cda31f8d2cc416ee5264267aad2b457c94e50", - "0xa256198394b458f6468dc91c35f579da0ef02a55fd93e98b25e43b1bcb650ff889df4899236765c1a6b35cf49da940bb", - "0xb5c7d9c03c36cbca068abc6778053727e77d9b58c5dc33b11629f1ade1c228b1c964f5a7d8dea16057e76662c4d79f18", - "0x9588e133517f0d49622222b4de5c124b1aa4260971e43e4aa767fba8055540f2848954886b7f245583ea527fe2fd1de7", - "0xb66025d75169bfc7ea366cd32419e24fbff829709e3e9587d7d59620b3a7b72034d3303106f965f5f7a71d66b7f314f8", - "0x891357bbe44e60627b975c10c872a34b78d6b264380e351f3a86dbf99abf8e2dd8d20c52dd6073086e48e1ca782e2ac1", - "0x8a066a3482526a92476bb8c3e5caf07575c725d72203d67ce98f654f5ee8b7f979187416fe3d7ae0128800b253d7209d", - "0x80a9e3d8900046b71fcd5b7034d1e0f57d95d2756da8307a11aec0553e5715518a125a653d356f399409545256a1984c", - "0x924a13fb2da7a899cebf2ac09c8c0a183491777100de1aa056a6c2bceffd5a63e255f16a9066e4ed89ef28096a1230bd", - "0x866cfc8116d2e0216d8049d5ae2ef0e3fffd377028850716a4bc2cfe16c5a6be023334bd6ddafa0c77913dd4ff0a34ff", - "0x95eb74bebbbc59d793e3fbae8e98c258451bf9bc5097df4edd832e9f1c30a1446a59e1f75a44832d0658d5ecc13dfc86", - "0x972517b2d72ab53193db5d682db2de7790a418ce4952c29d64e1f9107d51a782f4084591b7c775648f103445b797e8e5", - "0xa14ad2cb69da568f2f958ef4253d7a6daf574c6976f4f5d771ae7673853ca22eca81e20400092bac84453b6eedf5aea2", - "0xad95bfcec6c06cdc11d316b7ad33fe65555e985bb33b15c9f481a09caba1e5990601ed6a88038c0ae2e04b1607e2da48", - "0xb7e3bf3a585af1029d83f12cf75acda894fc4441cd7b3d56efb6991ea91b07512bcd7d6d68738557a48f0446b2cb21af", - "0xa57efb1e2d2e10e41f356768385375a21d9f78bdb34d618117581bf7a15024eba43570c3956ddb85a025d39476f831d2", - "0xa66d3622b1cdd472a2a4491881de035c2eb4f1c94927902a3bb9f10739f900130907c6b002982e03785c43ac30b8109d", - "0xa79f2417d32fd772e46f3bca61ac788af8fab174e1e1e48a84ac557f7e80a9cb4e2d7b467365ad18f9777f4cb5bb2b8f", - "0xb952b976e3b6660326c0ed357ff25ee1291b74891f3eb7bcea39dec2ebb11e287d6e26ae0506425a20e5e445273cc63b", - "0x8c23929e9740ab51d9b82c6b7840067e7163e6c7b9b9441e1bf867ca2e532926981c98641e6c798ef12d35108abc1dd6", - "0xa519578772c9ed2d691a8c423d360e4bad76afa422f1a5218a7a08ed52c9a5935ce2ae4c0be182eac0712259a43f849d", - "0xb1529dd189cbf3bcca50e97199bfb85b42f2b26edd95b35758d988d1d3740f5d0d2e249763874fdfadcefad9ea1b3d02", - "0xaa3fed8d14a4f38df75b9eed7f187a31cbb7a748bd3225dacd8325a71dfb680729fcc91ad8cf0b67ce314e1fa8ba02c4", - "0xb77c28abce17732a08e682491182f63fb55640e60384932f6a9c6d3d7886508c9e67a841cb93e59448d2d59fceec4620", - "0xb7a24c58e3b85d60d654ed14d78993a9cc78c130442c8cca42921ade8ec94bbd0653c9fe5c69ad1fb2aa46ffba04da39", - "0xb7d08f3ce97901261514a5dbae582848e75515c5f9f41f5e70ec17a8d0db3067ddb19aa1c86803bdbb757230b148bb21", - "0xa5b8a6818be4d59079d88f72d7aa4957c48ff5898f3fd01def48ff6bc7aaf9840aa91f2f05617d340092dd9299115c2e", - "0x8e548db6b871fb23ca1cb8538d44b77ad02f4cae4d33c8c43228b820abee1aa913ff9acf2483725b195b4e65e2e92063", - "0x9509189e063812fa04f4e26f87b33a2289a05c229ed1038fde0dacecd87aa55ae0fdc678a1c86bf13b81f4b3a872426a", - "0xb355f24a5dfb7a8f3ea717111a038487632bf00d67cc2cfa2ab61e1cace7bc7f5bc9e04b190aa6be0652627ee219bf76", - "0xa9b335f235df51b92f40f44f19150e182a938b9abb3bdd8e8c447b2b128050d228e0115a268af4c1bc2ca49552b4e0a6", - "0xb306d3e6cd7ab56f5f7572fe51175ac6b29b189220fe2d380b959d131a35804da5ce95adcfa51d799f18e27d8d5eee0c", - "0xaa49cd2bd34c37ce1f05e192fa6837f964c068170ab97989e1cb22ea7e13c2400417a51282519e74d8fb6983ba89a549", - "0xb1d4fff41d95613e30427ae2ae1d3df8c9d06389e1e0f404f8cd40199d6c4277b7a898d06f1579be107fc5744247c36f", - "0x99d220454889f476931b0cba3570eb1a8eae30b4c3617513833a551aab0a2630125f72dafc64a766b1a322dd42dc385a", - "0x8267ae38c9c8532c7d4ec4455279a5ed4f2e48746cb0f2619937157534b0e5466c5f4b99b7c342c095f71f3b77fd5882", - "0x8bba0794cc4ca00eac50309a92878084a6a22e4c23206c68b8d7268f9e7f615da4b9d0f3e006d9dd84bc3dcf32261e27", - "0xadc965bd7c7bb2a52cd3f4d2cd3fbd72a196876a678863c6a67a25b4a2330d1d3be603220de22c8c3f60c1411df57b7d", - "0xa7d5f38a3c4ca0541d5ab101af9c27b04c5bfaa42a1715e882c5e7715e460c4666aac4b6272b9fc54514346fc49d0560", - "0xaf94b91ad9b0f01df1d41a459f16ffbe30710325617651cf1da000eec43876161957f079a27b70018ba34d1d5d68cf6f", - "0xa0e2a492da4614f41741157d3a1d19a2370ecc8e178d813e22b902cf7454b8237f1ce3c16270eb6f3ead1f92797e36f2", - "0x8dfcd39155d7b8073b0a1a9a617fa75218f569520d4817f3ead375850ea8a3e3dca64c44e83f54afc37173d927070601", - "0x98302358e5b740b73e1a6c568b99affc6de3c7245ae96d9c712d377fd363d8b8f49dbb714aa8d39b5b947b6de341ece7", - "0xa2fe0f9fad663cbbf4bb05f61edfc90716564d5ee5a9529ac3cb8f06f96329248cda85c43f24a2382a9056e9a53520ac", - "0xac50b0727ca2ba80692c0b7f564417916695ea3760ce9fd71593050912bb97366d29ae5ed05ce52984e52218854b8e3e", - "0x86f56bea946a4516336a90328fb4b24cc7f82d8710d0d1e34c2e27b6af73c4f4a9d6a848dcc56a87d6259a99ac444557", - "0xb33d0244948c430a58b210943e41aa3cfecc9a823dd3e160634ccc45ea2680987db2912ab2a173ab6cb9cc2b7e16f7d5", - "0x8808f8c2c2377cf52e7314820d88234d7819a6108fe9e1c6a675dc47cd59f81f95594ba2f5fa10e3719580f53edda641", - "0xad34a814be6019931972a76b3300a4fc9ce763d6f4fa1ea131a67d575c00c827b9ae7260d88577b4b3689e90a845137e", - "0x9370abc67ad0fedf30b929d1613e336c6e99e4bf83ce969e61e5d77061b48a1a493f28fe2eff436d4a979af700a83b5d", - "0xb0db136c8f4ba2fb7148b1451b18f694769f5e53650d68342f15817b04734ef8ae59681a5754df617d755a687b6ee45e", - "0x9149909d24382054a05fc0b057613d059721f132a19017a92198b30e48fbbc5f8f0b5f5db55347dbd9d190ca88f9a28e", - "0x883d1d170fb0fa95b55b10b32ebed24b1232dbfb5c783148a63a765fda200e796aaec52747441704967914433a01a323", - "0x8f55fd5ea11c4fac277112d72489ac1de28fe163a756b125f27acb78aa6651c70d1cd8c45e0daae417bf894149ed2d57", - "0x8d08685f99aa8525b008b868f5486e24a08568a5afba9b729f7d26370fb1b162937db28b935d67e4d22f7fda69a3a6a4", - "0xb1882e23d784ab48b2f9e58114c5920bc9d0c4c01d2d7fa5111561df0cf2d738e31a32963cfa58939af87e79428659da", - "0xa3eba902d376063e48634c9436802cdc6b89d3a7c7cd03b26a3fccc7218dca85a3ed939eb53956d2e001805aa5c2d63c", - "0xb97330c40d51a4b71f91f56292b628379ba735509a66c7df054112578b9df40d3aa32598bc64c03c78a3311a17997bd1", - "0xb84f3d2af2aae2aefdfec9a0693f6bd71eaf4d477cd72d80f4919235a471607c5483b354c9d46628a76d6b6fe7c586af", - "0x8a1c39bea7fa580de967d8ced7e3860a9031b07842d71f8c5941b8877cd55ba15ef7aec6116ba38ba290b887b4530685", - "0xb120fccf939e7d7959c2c1e70d7a7aa3b84684dd1ca8e5cfa9d281fd06d23eb67a629b1a27052614c3ba639ff9c90dde", - "0x827a8e0dc841af0e2c4a9ca36c84a0ea60099aecfa40294344f82878b6909f5581f7b34fa9510883113795bd09b5e4bb", - "0x88c24cc54dac5a2982be5ac49684d99f95574bb8cc44afae4f6e18231ebea0f2ab65b49870840bd3e8f2c9247f62c7c0", - "0xb91fc3f2cf743f4ed42e49007514d43dea1d7bab388a18de6f71367fb8f2e9b8e88ed9f7492b647e548396ef3e3d7765", - "0xa175000c4765a57c57b219b21f8302cfd85aedbc3340fa1690119bbe7cd93dac4fd0ba676b1784ebac83efe3e78d4bf6", - "0x881a373630ebc24dfe17e27b3f176de6651347ae741d55675675e9e6904ebf157e787d86eec42ecebfe4eb8f28de6fc7", - "0xa47c8b155c8ce8e16f38deb345a051fe0c9b217cb7a266fce78d7694134247887789645a82c0ac24341f51da8ee6ef00", - "0xadfa5bcc682d4449adcc436649b444dc61157154e24d68615b0ceab50eced1ab55e15b45562dd8e00785806e9ef2b7e7", - "0xb7d2ecddf47e9fd25dcb283eb80e323300bf5c3ee3344abbc3a1f2a3296c631577a1fadfbf685abb336d5d7059d17166", - "0x8833f6b388e46e1f8fef1086777466277cd418051ac0323e2cdac5902d7ae45eefef93ce90b088bbd618e0381c1ada78", - "0xb6abf44c5aee5d0fbfdbcbf1e77354d5a2ccc239b894e1e06d7ffa76584683f707384319ab0e0d17afd93a854d7d26b2", - "0xa8c61859a9553a83bac398c14c987b20c8dc27d63112115b8aad26bca275cf98913783c802ebe3b7c3d878c130407b34", - "0xa5de7a519f8de4daad9137f2c2838544219834cd70457ef09467d869f4dc32098b7a8d4fa85e1eb283632f6d09971318", - "0x98c33a315a66cd8ab9ca8a58c87e5ec588107a6416c4ea498d0b91bf7597f53a405e437ca0a9d9c6acea27ad0ddbf4cf", - "0xb2909b1f8752f4eec25180a17163ab215fc20c4a931d4471d3be0ab64207a65c7e462fc0707791286a92ff2f2b7dcb0f", - "0x8b96c2fec34cda02e98510a3ed80a980b0cbf4ec03e3c4260f84027cc7453acfedb5f708c401d26db137032c6cb4a31b", - "0xaff645dd6ffe8b5076c83a823daca4149f0769bea3293b61330ebd97a17fe16758e4fbbcb5bea7449595c6e261127b34", - "0xa45f8b3b7196449f9952cadc8d87a787a28b4ed89f8c7599e7db361cd0f0aac6bfa464024ded5c0ffc660e417594fd41", - "0x85016b5f7ea9863557eccb0e742cfbf0b09630f0bad3de55aec92b95d4645055cac60d03602586b34f774bd356dd5554", - "0x94fd89dff2fc6099e5ab90149458a4c794eb1857f1dd9a2c84b88099412477dccfc2996cca2abee68d23a05265dcf271", - "0x945a52621ec19d26f7c8abb5d01e4f5630924b75a349ce74219377a137f4a0d386172da523edaa522d27902444023cd9", - "0xafbd452dcc57f5db6b3fdd55368807320459c16559d944ee8ecd1af6acfe9d58c13f37961f78030883f8ad7dbfac66e7", - "0x8ce96b3be871a1f33d559a6e55e4d86a0b92ec3954417f8d98676264596c3296296532097b9b20c83c341527a0c929b6", - "0xac6a4dcd58486d25a4db1751a60ca4d02b80c939b39ca165a37d9a0a52d8675b3753719f136a59ac400bde3efd036c8c", - "0xac87a37a14a5d48842d30432935929a0e9dce5642142a8c5b95e377ad1bf52120dc64697f0508b7c258af24a0ef484ae", - "0x859f0ba02d496861455d9c39c269a1ae5bd224319918fdc3648311c93303c0e13301ae7f3f77eab4ae43f1184a912b64", - "0x96d9b1d2d2fe70b8fcac136a65b62a4ded85aad9d350c19bb955750a0b24f93174e9cd00c0e0a1987793e1180dfdf66c", - "0xa7f5135873a1c08c7c8d46adfed19d0ed0e33168d463ca74f75116168355318ad588ebcca1946d7669c5106bc9f5a8f1", - "0x830b0587587b80df078ecfe0857a4b4cfc05b722c0f4f3e1217048ee18749e9940cd0200c1f7a0f60de832a5a44e9f1a", - "0xb6625ed0199097acc9aae20611f02d2fb837e4695762cdeeb4dd722517ba5a344e5011f14d5076783f3c32bb5c4a027f", - "0xa17be2e528c463aa4ce4bba2df5b005f88e363b87be7324239413ecd5bd68e350d290370e1080ab9911a0d54856536da", - "0x834064460f0e5f38950cf5ec197818712f01950ee1f32b1987dcf7f4098d20e1d91fae6d48e8a054390693a2e572f888", - "0x86217b9bd269408ac92b5cffda5716bb3bf8674b7e222668d72939a626f4ab64f30efddf85108c0764127cdbcbad7d69", - "0x8d7cf47b0648be0bcbd3ad1062d90010e5ee84e397895ce98160d5a568d60a19582c985944ec27bb284459789ad8f6eb", - "0xac056e3ed3487427142b3a4e4f9db53f1a752e1994f178577c46dad71be5fad4d03d24ae7019804c41232705a4bffaa1", - "0x94b83d67af6735e81b2e392e6af8ee4dbafb0071d84486389f36f222dfd015da718c621acdc4360630403762dffcbe3f", - "0x8ad27bb51c6cb860c21954f5d09dfefcbe3a9a0bff3e24fd1f74850edcbcc76b5b389a616ea0c0796b239b0c22357a44", - "0xaf9990dc4c9f536385811528f207a8352b083a4abe6dc016eb5eece0ad74da65b2c6c475a78cd0ecce0b2b550e4412cc", - "0x816dcb8ff8556540b54dcc1efbd2242dada0acc1e3d3da13ae581d905a9106bdfb8c138eee93992a23e7740593e8ad80", - "0xb8fcf8e11e5924d3d38643b2a4bed4b54e69f816f40d4020e76655eba8ffee758c16cdc2d970d3c8c1163cf501044c03", - "0xa50e0ef4ddfba6d969e7dd864a20cafc7fa6aa232fa7a806c3d53c3e029cf110828c5a9c354ea42aca5688896f27e6fb", - "0xa560435900c48879ff3f89067daa8e512482f061c68474d951c608ebb5a69c7863a28fd1e216eb4b140e32124e50fc73", - "0xb9202d152b7b708ee61c4fde6cf423b481854538d2580bc43462610f12141b89ce779c7398a35c27ea6ed0afa5332bb2", - "0xa9b3f8be28f9546bc70f680dfb9b08c1eea6fc381cb6f3ebfbe33bcab48294347d4e64004c11dde5eb409ecb19941ad1", - "0x8cb3086d265060f8e52a96fcecddfd261886002c1821a8f59a1ddde19a6bb1354b17cd19a9cbec19149dc219a4c394c5", - "0x906e8dea406ba0f0ef43ff623f8521039a9455a2290cae4ca9bb6494ee0aa812528267d1349bd5d339113dc9d1616b28", - "0xb9b5212b76d5824d66b8df7cdd5effcb05ccab5df6ce67558872c99d1e484ab8d21037bc0e22f5c4082b192972b80acc", - "0xa1fe817596bbb5bed93a5dc4c03e14eab627484cdc7ab7e4fba569ad0aaa93b34c4fc8680c4f8180d8190113218d26fc", - "0x82fe7a20fe93564cfaf7eade8d4d1394d1b4e36048cb8632bf366d3d8084ee52c74d65c4c69d9d24208f7916278aa592", - "0x81f42f9a3b8007e5f02c26770947f884c715bce1e600f38f164a390f159e2e5b6f8522ef566bf36422b14340bb6d3556", - "0xb53d3c89bf2a4b29bdd8f1bfc001c2533f86d869fbdb383fe9cd93ef0c49da0692361baa9f537094e1af662a3461f8af", - "0x8fbeee613823ebfd514e991d81babc05176d5c115907ec36dbf83a69eaaacd622f1f36be2e47b984cd6ac66a6b35816d", - "0xa9068ba463ac13d4dba25f9bbe3c93baa35828563f357c53a7009cf0c809a23502e023a32f651e29f14424c5daab2884", - "0x87468aa4c942476b3ac3000e740c4dc72d320884357dd99eb25e81d7b52a859b9ebeb55f3070022bcea3855a9a198e9a", - "0xa5f1219eb902234ffe8ba809df590080ce8329ee574eb346f6b4372892d66b0725f048465221655b70b3d4c2deba9fa0", - "0x8d9663d4b48cb86201d343b20a8e7a6ec47a4bce0e85a905be31121a01fbef95d9f29d83530faf79dda163c6c76ec514", - "0x9921ea9176744e15f64b20ac6e95ec132052eb853ef47e9334108778fee60d9d9b53fa0b8011c6a4aaae472eb11cc61f", - "0xa04c2c5e2c5a7673652919aecbc5fe09a636fcae2d06003ca6775018112b606e50bd2d6ae6ec6131d2a9999837186bd0", - "0xa00ddb29776d2747e3a6e68eb51a7cb00ca0066a9aac5a2da632f355db515b32e2c441fde870c9731a9dcc8d9834557b", - "0x85afeeae8bfd92c51522320cded430c2fef57b1950f9f966f47ce6354e492e9c40f950a7ef6d5202fc79fc020f7a6260", - "0xb047d214201744cf7e675af5fbd29579c3b26020c5e0a53e2ce078778b3d3a673f0fd87eae8af8f0fba3bf0f8341b63c", - "0xb8aa5364d914020158d11fe82c2b77197ed2b1a12492435200204e20a9209d3c0b4fdb6fd3f0b1db71ee3b986400ff46", - "0xa59a903fcafaa8b5876a3eb1d79a7db17c37457dca018e393324d8db3be7c2aa3ed2303eb3530d6fe1612fd75dd92e08", - "0xb1929c1711ce44465daada15808099234c0c5c8f43b050b2792b6ef9b77825996a74abdcd84d6ef08d648e77cf804357", - "0x85bdc33f8dda0d853074e0657688899befb6356c38f0ec2ac27c46c39fff06617edbb1c5cd220314335bd1b792f1e240", - "0x862047e51f9119f5a0a607469496c0574b0087d566bc58cb5b61a9a841a3cb693b89837a7c927c542ca03d0106055438", - "0x84ba54c002150e5989f59064b68989413abb5f289f3ccba215b923f86f76c19718be51d503ce3bcec68322a7c7d5446d", - "0xadc9ea06c11bf3f0d704b321005020917e731e6706f18a5aeb1b56dab3de39a94fe8aca3c248a47565ca5ce82face9f8", - "0x868324c4ef80bae55510316f3a8b13aa40e60c8a3d55f4994439d1dca6f5928c4cb202769d78c21597d8737e391536d2", - "0xa6e3b57e9909b5fbea2114c352b34235a4d4147417e480580c291308b4b9cd696b36278480893667e8ba01fe3bce571f", - "0xb92e1d6ba0a2a244ac5ae2e7b20e152591c1c466c9b4c658c72cc5985ded0392b04ec00e32291f1652d21dcb633919a6", - "0xa3e2bb4dc07ffb1e8dc9055ab45bf22864980f64b612548ca7feac85ecdc426f773d6d48bb7e6c7a578025bfe99307e8", - "0xaf764cdb70d5afdbb49dddd519451218db4e97ef3ee622585880425c3d85a8df88613f4b51ad40a1f6635e45b2efa5f5", - "0xa426230b8ed77eca3d1ef7f4735fcfe0e51ae37efea5b96ea3bf313c241bd703b91a592f035e98056315c9822ffe8c26", - "0x96a3ae7f1b80690f97372d086d2d13ea2b40802bd053980f73cddfd37045364ebe38064a8cf3531e9bcbfed421040f20", - "0x8cdfbf0663bde624b703d7e6c36c5753282487147e10e5a24fdec75836f7034e4c38f3fa3df373476af969a4f835cec9", - "0xb7f7a549cdfcca30b78349b831ea5173bf5b91d56dbb999b2dbf6b85d8c22ca8a9a62b38e37dcad7ee5136a32edd5743", - "0x82ca90321c43d616670a7d85447afaa9034459b796b51792c970fd5b8f124e47a13ef661291a4ea58a495e68aa36dd87", - "0xa824a36e4e2db2bbc513d39e4e2a841fa81106437eeb4fca9ebd78050667d0b284b7217a35ee3eac67d8be58c0af317a", - "0x9370dd0c0f9c7585761eb5f06e7899d75eac07e13c140c64d4c506b90495fb8ea914f222608c478708d4b47163dc9907", - "0x88c07e19252e905faf129e3e877dff8dfe93e81b3903b150aa33a93a7eda2820a8471be935825d709dc662d06c9f99b7", - "0x81e936c00425f7db8f0dd88b16c3c5208e8d95a5072e69524f3b5de45f4e2dd25f0aba8ef17016bd914bc8f5a42fcb6b", - "0xb23227dceec18d6dda92a15b7dc8623d9928d545db93b3547fb068c99cacb3fcf3d7f88e4357801de8a652b919dd907a", - "0xb23f1627219587773c17070bbb190e1280ab27c5d7e98b43adea0e1f5017790149b71f90c3691301bd514d20238c5e6c", - "0x821b7bff6349c204ce50e00e296982536baff68031165ae4c639122195e7295ea0c82ce66fe32a1b762f6a311aec384c", - "0xa26c15bf1ef4d5543c4a006e4ad2a450d44c93c62c0f0b035698530cbbf925f6705d375e1dc8b2c6fd9a2c69f4126b77", - "0xb5c5bfff4697fe13a5177fd87a8e293fd1c6782cfb3d1f95c5ddcb13c309dd1ddbeb14cd359c9f3029b57ba52996c9a1", - "0x87a0d37f04155bc22ade44f567dd8a81445facff15d643886cbe6534aa44505e331bb75c9ea2f27624154a5890aaa2cf", - "0xad85c0e6345e2333a0ff76b769592f2b24fd0661984498dec6fbd2d9b0cec5f139bd71331a28b13aa490baa7fe27b635", - "0xa9e6298b90aa8d3f4385858e08f393b3bd61376ac3dc44a0907ccfb372813bbfab1388d544c1a4907aac38a87dab2abc", - "0xb5cfc8bbe4cd3ac1a66b1c8138c5c68e643f7f4c310cbf1483f6e48d4f7e2d1cf24b2704fc687032eb03978f18239072", - "0x9493895ce0c815b60b0ab3a989f63c6ba4c752976160f3e52290a724ddaac9075e07dfa913e113807e0e57725b1cd593", - "0xb1e800c2aa32d34d34b24dcf890f6ccde7da60b98c4646a5471fea7cc6df8862b7a9c4c40f38d0554e33e2984fd564ae", - "0x90a18f877f149a314767f5dc15c8726efe5d20a8e15ad4922c6042420a2cd82018be813debf02c6d69b96e8a27c0c5dc", - "0x8fe35142442c103e7bca602445b87cb017c76befc83d66894d4f810e343b3a571f3fba14d94521340ee7c5ccb13338dc", - "0xb43547cfaaae899fc6295f496f213916e5adf9b0d75805c32df0f969fbc1b4f8584759b2a06b81546b48004d72f2e8d9", - "0x9410d55865098325c7b559eb4e84fef8a3ae890e1d6053b3f173ce22e60ec6563041ad8cedaa2dedbb59f3dd645dd1b1", - "0xb127d9e4b8280e10434d53207a7191782464ae83b4463cd8a32026e5d8a7a8c5306ba43ed9b7ea637d65f64d6a08bcec", - "0x87de8fe67524c7d107d7033d4107659206c347c47cbbdf85e3441b53c933417feedcfb049465c67f4c4156219a4f63ac", - "0xa582f976e77b861731595ea8450c6b525e371c6548cbf7911f05560d4c7a4b62a425d5c785190628d1aa1f8f27c43b51", - "0xa195e358742d924fe2a7f955eb21ced7b211cfcd5dc3e598e0d2713c3639b72f986aa586b7a22a75f8547bfb46cd52a4", - "0x97c249b70ca2f9da728a256d18d600bb923005ebad3e1d541ebd580af3fe07123fdf87f4e8f98fdf9dc8ddd826ab7344", - "0x8fc7891e2f540d8f20464a36056f227ac2ef3bcf2b6edd4cd2d9024a48fce19480fba36afc7f5c4bd7234787b8d17f31", - "0x9047512fa27e2d8d901516b5714133c1845494b6f2aeb2a0570dd8533852f00a8d9a8ca64979310e83ac73fbeccc33ef", - "0xa1be9cba454617af0dd38865ec29e7d0777d7c68968c856f90b5bd63a7cc4274fd8b179be54143bed972b921864424df", - "0xb086ccc8a705999184f51e9b45c76975ca8b108b32a3955e122711fc1ee007d8417a85c9cef217f28d6c7799b60aae4a", - "0xab0938a72118ee2980b28dbea9f7100c6f54fa82d93fba8bfa81b6bc34f9d2033a987e5d6d3816fe0bad53cb88bb8c2b", - "0x90fca0bddc14f70282f11998fb4c289fad5c0e78c8e8f9e7a811f20413459a05c9d107ae771e9da501854022d827f2b8", - "0x84cc69b7200f63c2214375a7a0a5ccc14bc02ae45bb6f3b27f67ac538d01e628c66b40e5c40cee38bc8634f1a3c3cc6d", - "0x8a07a1cc0a96e6c6da0d27a540e235c2ab6a95d087e624c90cdccd781a9bea6abc0456d896574950a9e21e7d87fdc582", - "0x87f2084a2f2218d7f9eb7725617ea37db0a19fb0bcfd7c95501f62fec0bb6bde3950690420a40d93e26f426fc622c825", - "0x8c9fc9b470dcf8e576af943edaad28c29f53ac7e24657618c21d910eeba6d7b16f16c418bdd5cea3d639c3919e93b7dc", - "0x8f026883d9d8c7c2a5c04e4c7220ba7061a48392a8a7794a3e290a94967d14caf040a3da3513fd9b4e695376e706006b", - "0x83bef852b9f387a2aed0d3537e77c895799c639310cac98e7b699e9f5d74b2b21cbca58ef910c6583e0b849d665ad379", - "0xb08a03accdc64474490706edce9df7853b78b719ee731c195f70871b7586ed274778d99b84ec3cb8cc0b5e38c102bce0", - "0x99fada688669b2ea8d9b7cd730b057292ec3fabd30cb733ea3f7cb76f756b244cfb26df03b9c087b6d9c58f5233dd1b1", - "0x8eb0fc7ab6b4238f2317620191dbe835d4ebaad0882e22e8f0857053d25d6d9077754251202472d875303669dbb806ef", - "0x8fac2cb38c3a1e361aae5313ebdc1c7e0b7d1a440482fbbe24389a7fcd381169fb325c79e430be170452326cd4931732", - "0x92bacde1472436209032f0592973a5a40d505a9b2c9de648eed1ce392d0c18e23aed9114a9634ad3a7e6afc4ea80ff21", - "0xa28b394018434be07323a2356fcfd6c70b3a4b1c6b6ea44da1da66c389a659235e0dc941019bc5053ca41f10d9b6db2e", - "0xa6d23d7fe7ef475bfe6486ad4a99ea376c6a6db3e70a0a7af421ef6e6c4d6b9cff68d03a7239a56eac784769f63b2bf0", - "0xa1232e6747573e19df98a088fdba57116745612cfdd4ff21f8df82a66c7d5df7e0a6c0cd73117121a516dfaabd0f5016", - "0x8dc574376016b73f6730103cc45c952c5df5d047d0b4ab3da0303f66f43f7d147b5eba5300750e885c621e72b4a64b43", - "0xa66e9eaec79c958e624655fc2adb7b89ff3da0393898e028bb07cbd6511ca8d9318e1d60dc11cf0265a498290e756ecb", - "0x8e5299b661dc0e088527904d2c2fc0256613a1fc2b92bb92c633acf145edbeeb053e82b468a3877f6f14f0878fab57b6", - "0x969943ce7b54f6e728724b26cfdf4df90faf9f9796bafb910ba66d96cf34062fee6ed9121abd193c9e322950c8eadbcb", - "0xad29ce021d7fc875d1e61ad3a99e112ff092ffd7900a608bad30517e50e2270e0f8dc7fb5cd42f1bb995c17d86268f48", - "0xa55fd82520f4d35434066bf93a9601c96549cb4714d9ac05c32e16803daf8763e23c3125d2005eb229bf5d7e2a91ec3e", - "0xa95eccc21af531c5e1a36ce88eda6b87732f5fa680e851bdeaef73421c1c87c8e66bc314b07ab472ecb67a08ec53cd4c", - "0x8f48b5a0636bd89a1ee259223065449523984cf3bd9be78c9242276c848d2140bd94d1a6670e446b51b178ff694b5c7f", - "0x8a58b340e30f0cbabcba1c565b68eae66405fa2242b43a7f7d3bdce279af42fcb4ef58c85fe89cc2dc56a41a51f058b9", - "0x99103a659e26c9a4d19404db4220dcc5defbfacfdd969eb7d70b4fbf9b2c91c92112c0097e8f0c32ddcfc35741da21ee", - "0xa088cc15a45094cffac52c38df427b7144d621cd1d12ae87d74c00a039d757e36fe3cc2fb35fda9b33b375553585497c", - "0xa0f1d15bc388f6602c975b4b9cb23ab83fe31124acd946195b999620c3c20c6610157a891114a43e3af551d7b8c3e4be", - "0xa571057592f3a9008bdf726254c364975705a71bce4e084a37915c5317f635528088a2f50afdbe7240c14d813e8e979e", - "0xa31e425feee58f8372e2bd4c21c48c299850df34044f27db3e4df55fc5e7c042cd19be59500acb375fd3478379f06053", - "0x94645ca6400f80d9a90f5b1c5b515816d6049ab04a552109c9c16b41366a7f3931d49338d944ee8eaf2ef5c77062c362", - "0xa61fba865027b7ccb03a4ea966081325eb64db5a64c5d765d2893f6a19411d40dd957d8a0b34733aeb3f002a4e0279bf", - "0x8199b89ea13ef8eb2f54d27bdcc781a5a7fe5bfef4ba4444bd651ac6021f4d90250b2f2cd8c63fa3ef237ac6eb1bab36", - "0xb39e1e98d07c95a4fc19ab175147547e5a20e66c044f29e4855818db4a7d0e7e2c24192aa8c89fe378f8d8ab3e9f0e1b", - "0xb807bb0069474e190b40bb2b34165351e73a392ffb0de83879ddb181989a22bccaebfdc90748f54de81c41ea244e7ebd", - "0x8b058266df90032a1a9befc7abb759b64a23ab628edd051da8b81db4211c72fd63093dbd94796b0690ff2b0c0fe16cd9", - "0x865decd95200fe45947a4249d2d8551ca5d7b3d7955adf10f94ada3e69d684e5c5b8939fee9a4457f22d21bbd3ce9670", - "0x95fb5ce7af13976320b36422b5cd9dd46379d13110fce619969308ed6a250cf3eb84c73e8ba1d32edc01aa2f6e367707", - "0xa1a176350aed82d5ac01a072ac7f3cc1535e20fb597ebc7e417921537f9bfc4cfc0d490d4df831f0f8ecedb6be970a15", - "0x974ddd091c1aaab7ed356b65c244748a713e98b133c5606436e531c31b31f6ccdcad2037b12c68fb54af4b19bd1d82ab", - "0x8ae9b7a8cd856087300ca90799ec3265b92f84da8ee9e98c6ede1be378dc040d0fe68b8ffc94b146f2521b9fe3d19e54", - "0xae17df60b83e4530af584991b545bf4b3cc1045416dc15250a6b75a9a04defae4c0f60b8bfbeb54c8a21fa84fee58e69", - "0xaca1e75d4a05282b0cbe6256925c0f269a4a8323888bece4a48aa0b5e7bde7fbf1d3e4f5cc38fe6a38aaa091ccbba4f6", - "0xac19171d3ee2f2e5021418c37a0eb25c083de6a6396290ed35b4771abcd07fda745fd082e3c32c117bbab7d9fec2b67c", - "0xad8a35eebd3bb28e08b9ef64bf2d8b75ead69db29c96544d71686ccc0819ebc6823e49b3b879ce0e5ee3131153900632", - "0x9479f12dab191269b020b70132996cb32059ac087e2a3f3e559d297494189e1d6849c340ace032946e12bd4923a3908e", - "0x8885e680de6c158cd67d66c142b2b4ac42b96e97eab8e2dcb90c3b454dd214bc530fbab6b5d5746064b9813775b6d5a0", - "0xa16d8d27d9b2fa04c7eb8436062a53ee0a4d679bb205d7d7cfc24e5f28e3752a9959847e9e31496bb0cb1c11caadc30d", - "0x951b00c69dfd9fc80b17733b843c440c58095989bb8744fc9db63a4a6116f24d5f224a279478fba8cf57753261bde217", - "0x8a693564994a1dd298f0b279e618b46bed349c53236fed9d8e05ad9383ce55fed02b8a361fb8c09ec5ffa8a271cee015", - "0xa09fbd62995a33904b4a34ac55c80f6d4cbd39a902f5db1038d909f1a2d385c3f5eab04b157b5662558bf35ed29cabc4", - "0x8662373988373409a4b31d45c5110afc32aa008bccbeab39d5b09a0e10370dd879684e722a8856b0da278e2bb91d67a2", - "0x8980d3cb8a82b3a827ba65f44e50efed0a6f37d6c150d70e4dafb67b1db173b46ca29d487ef9db92d37ca8312d246008", - "0xa279558faa11850aa4f0dd9ca8bddf69cb98bcd4edfbb0c19f22d1bff85d808e8f2cc026d95afd09fec2d15c116bcf73", - "0xa3fadf9c3066c93aa6a31d2346ad0a1d012c12ca7a24630aee46a087eafe5fa518d20647856d44ac03576bb3a9f81a76", - "0x8a8a19b09417e1b1607aeb54841fa69f58e094b46971c6a5cd0fbeb2aaa98c56599ac242272e6973ca0a9d2c09ff8d77", - "0x858a636f510b494edc76e86b1718228f076b8a21306b02abd086dc2a96c7a034704d743ca5d89b17903fe7b2e43e6fe7", - "0xb031b789e4073b82bb8c78f9d3fc2b901d75278733a4fa0a5aaf985a298269a735217e85eacc0dd554375d610a425359", - "0xb8603ce7cff755f5e07eaeb4d74dff179cde405234bbd7b3f62fd903054aaa34a9b868b04617d7d407c2b8e377227f07", - "0xaa41829c941acb3f9f0e2008e852fe855e153960cd3c85c4b8ab9f97ca91b7a5aa18f997cd023ba9e03a653f238a4f46", - "0xa35639f920619dff592176aad2b4b071d5c960f149c3a75311b16841d1872f29aeeb7c155cc9bff41ea7ee56f799de78", - "0xb252195aaa52e9a34936ccd1aeb40d28fc262cc4570d4f9685da8c591080e97438edf64d4d4d074491344bb5e86b6b23", - "0xabe2e52d10620b503dd1aa584e005d857294565ad90dd89217a77fcce4bea7b0c72d54dca7a1c31b5a9042a9602557cb", - "0x818085f2f1b525d9b2322c8785bf27a6759af9aeb231b0977cdcc7d7e77cab5de056e522dc791e72b8d9b93a9c41e833", - "0x930f64d40ab26be006e91deb854c5b22bf6951308dc406b2c7c7791d5dcec470529957fbcfd6a3c9655d544d974de7ad", - "0x92b28bdbea8c7588ad3a27992c19d73bd3a478b276f0e11c4e82ee2482e4e167cbcfddd17a1ac6bebdd862be65f54098", - "0xafa6a85fb906f5ffe52b6e9715435dcdf9f7892a396d740d67560fc42248d23bef470989663a73190ac9da442cfe6a82", - "0x82d3338e58fb316d66694ff4674a5d99bf0b13204dd251fdec95d48382f2d2ac60176a19e5ecbaab5e00af2a39a338b9", - "0xb30cd35eb15b3910b8b8f91cf04c223d79d587a7ef713030f0ab93f446caeef52c60ada365f8d3d645b477e7fca61d94", - "0x89554d2a9a11dd7e56f0b568f2a50c72d86362d95eab5d94a2386397012e18bef7c9e01a2d71fd325c0692e4d316dd16", - "0xad58326fea1c00e0f8aa92923661be4b3ecc79164d68e91c4d1366c9894b6d049a4f31c9bef6e5f21466ec014ba6b94a", - "0x8915a16afb0e68a84fd12a9203f8f348954920126d88136ec027a81f541b67c421b84ebb3d6e8f085c38c2499c28ea61", - "0x8e246e1acf655572863481367da007e94bc1bdc1f28aeaa1fb163dc05a51c3526a2bb9bda0a14fc6d658d85a9322e44d", - "0xaf83f9ad3c7c1504fcf60084e0948624fccfe3a9892dbcba8f166d0d67b475ce57ba008f286069da20a0da0cffe3b4ae", - "0xaec86d2d803612e8d27a01e3382e0a876164baaf2f3b8c4e9455ea00bc2e525378018e6a41ed9686c6408148e852bec7", - "0x871bdd8c84abeb1456ef73595360de6cf9f92ca9e6a8b6b816ec7497be60a9f509ef2c91332d17cb5fbd347bb0113d2d", - "0x9503ce513df28b61d721fd5e8667272a28f210ef787bee58538f786acd16f04a412387c6f5e6313c43f426a70aab65b3", - "0xb2cb0526e7e524ca9fe918e951c19460aca911d2b5ebf97c2bc74aeb69778a28316dec8916a4e3628b46bc51586c1bd9", - "0x98f52ee1896b632dff5153e3d1fe389c6200b14cdda6b27e12d4a4182763b63e0f587386aed78c97a32114dc286b975b", - "0xabbea974929c9ba70551231e3833d5cecc71c60988826771f792f190ca77c80efee7607dc1d6bf01a53796d8d9b73017", - "0xa4cfea1d06cf840bd599b14c011b6b204b2cf6f57fc7d7f310052062a4fe8870f02504e6c837c2b556c925921e543556", - "0xb957529d7e5d1fc45c5a822a6e0e480e46af2f5cc3801c31996b9b1acacfdd8d142265148b3e1453a0df0c5e6cffc5e6", - "0xb7411aaebb1b6a6a75568f81d052e60fa7752a64c20dd7cd5457f999f0185807987de8fb72ed94ca9d1148c19ecbe1d6", - "0x84be67a5ca80a1fd0f43cce4c00a465f167445e42232c2d2cad5e1097a62d3ad564041a55f0c76a340387503f15e0ac4", - "0x98803688f8e7b445c7ad14277b9f5f12acfba4f9a4ba6df9e2b7dadb726f1bee5098fd15e0b5308b6686a38864f84912", - "0xb085eaa421e566276bcd45d8b9fb71475c4530d63e90914eb2a33c17333d5628c1ec8a45691cbae82ccad97d4addcc94", - "0xa08ff7dc59dadb183dd0b5d336b6174464604bb2b49315e0c42f34ea08a8bca9dc9207750638bb7ebb6387257411956a", - "0x94d72607cd8a75b2fe2e9333959bb9d5b54d74ec36fb8c123c157b19a17f01f310b3311116b34bcfac305e9deabc79db", - "0x85fa61a796226ce555f8195c792ff6f3d483f62dac41c17b7e8295bd49ae6039574896548728fad4ce966be84a62a6ca", - "0x829ab1087ebb61db05c59e3c9d03e7010f8c546db117a6409bb813f6fa04061833771c8aa4c5e2981bd1ee551df0ea59", - "0x97f5c5261db0b130bb8352fbcf65002327bd6d8a7d4fee2a9bc293173c8c54be37ae229c5488c1983bc1f7857c66188c", - "0x8756439e5978ba19e2cef95dc55f706d53a05d1fa964c64d89b0e95470b5344b2f8d44680080626c37c77a00ff0e6b00", - "0x915d33f90980089c33f403ba4fc5c689ea7f1656f5c4e1110db987c59eb981b6a46dd9fe82c8efe7d1e3504f1d2c4d2b", - "0xab5bbb84884ef036c9b00a84f7d5ffa2931854e2afa5a63121fe64d548531af4203495b977bfb9301bb1e4679d42665a", - "0x9830b846a9041e4539eb858a179b4db6da89b507424e6d858ca4334d973ddae255bbfb04ae25c3276ccbe97c46f5816d", - "0x8e35f4563b8a5c9a76cc1da87ab21cd894de393dd61bc977cf22d3de454de350836e032ccf7d6ea55e2e6b83c4424146", - "0xb6338ced0f05806c625905cc51b7e772c5db3bac144e897339f67b6949f4d648d41b7d23bd3f299f4879507951ec031a", - "0xb3afa470fc71b92f415b879a814feb0702b6adfa08e395cee4f7d8b0e3537288f16c83b28ad4e2db02c1fd6d39e6afad", - "0xb4fcf7af3196bec84fe1f6e3bbebb8abadbcd46de02a37966d0ebe20972fd890803d570e4a201f2a89f479e09f19191d", - "0xa21fe1f8f57691165d0c7d8436765562cc935288f24fe765351be335f906c6c4dd1d0714b134c51255b14511c957319e", - "0x880a3a8f6b4ba410be06628a011e6bfd38d86919cf8014b4b4e1c930f8e3035749579389690f21bddc4d4699de8a4b1c", - "0x907d93a7666d847a140367c0a0ff80a96d6a8295b07cc4ee52d3be987f431d8dcb95d3717dfd248a5643c5395ec2891a", - "0xb8f38c78b8a2c487874c1a6a92d15cf0dcfd26319d4cf65c2f4fa9432203ba5ffefb02b7324022c34bfe0da369d96d65", - "0x8bd4ebb6d720fe52d626a621670a06c8a304faefca3846df1f619f4d456e14f8bdc547fa7210b8639b89c6584ea5c5d3", - "0x8ebdaa288a71a2d3188d6294ad0948a4f72c1eb6a2e921ec82cecda4d315a86e3e6233b5ffdc7219f34a99e9b4555317", - "0x83320fb9dc62119655bb0055192471ae06b7641dd4af64670a4d9475155733555ad06a93ad2fae72e029049601780654", - "0x80b3d022738318238dd32f122bd88cf2f734a61e315ece521e9e038f4a9bd7b54b5e67784f5949fbcc5fa911dd4b048a", - "0x891a23b4bf5cb8558b4540b66fb6b9fa54e9d0b2c084f660c8bc77af5ddb97cb5d8042b538f61330d9fa8ccbee6c8a41", - "0x8e5651d9c95aee23835bb1a06eea76efc9d5c881cf87ee847ee5149fdbf3d67dcd8ad0675dec8fca6cef25368348abaa", - "0x86bf1d094bc4fc7c21b21cfc7adbc750db0b27c35bb160d306b26fefb2699cbbb1fe624df1b9e7f6f895f1b81a829361", - "0xaebc3cb2623344315875029378c71ab7ed3cdc9d3d42d4b835b373c8420adefd177a44e532f3f06f74f0a40d53713e5a", - "0x9527f659e93a740b4c50d0d3d9aaf1a85936f04866ffde1aed30ab2fa1c1d565b46bec5fdfa510fc3ea934137bbd46df", - "0x8488673a4bc29c3ce9133cbf41c546fab4ff28c5d46048a21e710a8df4f2bd1c77d0ee242dfd962a30d646e5ebee8c01", - "0x8cf29773c0e0fdb75bf6f52d7066e7d6e9a3ef056bbb70a98026464b32316189addb5766822f57df63bb68b78c85e1de", - "0x810c6c1aa53f9c3fd0018651b1bf25215fe24687b568f21a121e0bebee576a75e5f0d08ac9c6c21085e52228b314c6f8", - "0xb529a87fe47402aa9ddaceac63a060a6640418891f931036c6e4098a1b308821a6f1a244fd5c1c22a6ed5f72f6bcf825", - "0xace9284ce89b5c81049d329db2376a85feeacdd9f735cf00038adc51865bb78bd9bd5d060efd0b727c509ec19988f99b", - "0xa2e7a949c951bddc99e68d80b3f3fc4ab960b682229fdd794f9eadc80bee91dfd5eda0052149d05c74fa33bb40d75ecb", - "0x86bac22daefca9143e0b1d25534900b1f7711ade4437642043c4a8c65f0d963cd1f0f958c7391e5a663dd3c59ed9de60", - "0xb7d2a6e2d44edcaad19498ab3368bfb87f9ab039cf2249d6e76091dc3db0c3bf45012779c02811cc818e95796e6ad9c3", - "0xab474f74e1ebb3dc696e7a6bfd8845ef15fb6411fa28426c486f7b0f789a6af3016ed5f7da2a36215729f5cca0b36b4d", - "0x86616a1a9dcb50d1896f3eb937bde67f213558feb401aae9898e41cf1fe33b443170c7c2dbd1648c9e3cdd0c24289286", - "0xa466169a2d95a5fadb6a69c7061cd2911c3eabc0b1a2488e216f8cdbd2c5bd87e80908b002b9efa51a67f02d7af2155b", - "0x8368af8b7c0f55f3c4f7036fbefc9d6a0ee9ff61197cea8ce48546753bdbc0b61eab604b8fe2c1aa91ced7a879e5899c", - "0x996c91779ff9767232ae603c5b1da5bbe0e303c4c2c72ad2d5944ee1297af3535f6bb3548fd1fe8a92cf4b281e1d83ab", - "0xad4a93d1ceecedd27389c658b38dd71cb13c729b27e490381d8c3ed4815b11ecbc37b1f82c0656e0ebf77e5bc35196b1", - "0xa3538c7ea3dddfbae80d67caa9fc547938bf77114559f9fc5180d9d0ab837d7fb1b27bc37405686f212f2e98b0028e59", - "0x8abc9fe135fbd48414f2ba28344d9f49ec2d5ce94fcb314ab8dc31c754f3ab7e6ab268184a67dafe8b1fb811a762c112", - "0x99ace100d8db88a83f1727b7b48baa1cf45b971d08112e452f5003566815ccba0ac3f8b1df6504f55a392efac8e3e70a", - "0x91ff50978ce629651f1501708908d75b490c18615e933191cd37613a83d4b605b0b48d024d27807637e662056d76276e", - "0x8e4104331ff1a40cbee9f489a814cf5bbd6fe4eaa1cbe1e13625fc3e6697b27d933265e5ef8728cfa8fc4ba5b19a614d", - "0xa442360d49bc9ce3e75eb40bf2ba05e9437fa594e8b8de34bbc822cc7b706dfa0dd10bd6bccb702d8556cd1320924821", - "0xb6ed6cb0aa34d5793e929e0d9b9651e41da3457a0b20c1bfa93a8f65bbb65bc07c7507482d71c1c285f5f663ae60019e", - "0x86d64df2dcd36d0c7348c77480c8af33dfd889bae7bb045888eecbd317cf3e4731b96ac18f410a99ed33a3f22d448f77", - "0xb8dd25415275d5ef8260bf5195ddb9b15b78a8799e4d15cca7d6317a18eab7bcb8fc759be61360915a28a8fcb5d6ddfe", - "0xa325a334c84dc1d9acc0a9315b399d4be93351c7049f474702ab58b4cccfd69aa50b8731ffd598ef0144ca96477c273a", - "0x9012a2dfedda5147cb9ceac681fa9e75e2901eeb3c94d87465a44d11250de4bc66d1e00ff674f2da1d800b43f686df9e", - "0xa1049d59da2a942d4d2aabfc0d972ebf3babef9c5d8fc5598ea23a048c2e58f7f17b4d860e437276bdae221d9e41e3b5", - "0x8c9d9a8826c812943d74c4d4f0fd2f1c8087135c37bcd9647b722b59801b01775a644e38c24b43e8e70f83bccc4afa27", - "0xb9cebd7bc7b041c18bd35b970f87e9b5183e4ace034e21117001fff8a05b2a7f9ab65cf6ab8b818b8192d1db5649312c", - "0x826710d6432ef97625db25104fc8dc3225bea594a10cdd4473d5ab72be57b74928ff356d210032a61ca590bc68509880", - "0xa18422ceb8c61af305277628e154d3a9c49f47e230a44c6216128d73db7c3ca9eca9f87e29cb2126f1c312f423c61463", - "0x919d357886de9eaddcfc46cd43e2b3dda3f82e926a3aedf02ebda9159faa00736bd2cd7aa044c76ae238a3a95a5bef38", - "0xa822d5a726f5c38e9d4a750ddec80bb965a6e5374a3d87757e2e48a18421f3142c3985450d1833f3ff4ca36e3b838c89", - "0x86bfb86eece6f6ea8f51985e312171b9bc821e0c3ab4cace556da28dd7bf89cfd5be3fbdadcacc19f2371c6a11c564d5", - "0x91b42643b297d8eb2c1bb3f16b57ab2964de99dd22bcfa07db1d0010715ebde94d11851df575f4f1ae602644e454fe0b", - "0xa5e444ed3d5fb3c5afd2c9c24d676adbf396f5d1d47bd532edbc72c83845970582ec49ed026b3b982c9c1ea725192cfd", - "0x8448387a14d84aac6afef682a27be67e5b05d31b59346748d2940072eec771adb53339f335daf4463f555da2d8543f18", - "0xa5034b66a26bad0f753be56dec722fc98a072bcdaeab0bb9cf35a56a573d9424cfbadbbaa8ae30690f7c6c6495331fc8", - "0x9317ac32da1772099f41564ddd8247e3532528b240db753a1fa6fb35cc039c6a4ac4546597bb2fb28721684bdfebdb88", - "0x8b4b0001a6234335502c8b17c4de274b83b0610960b5c46b9075c6e41f357ef0d8c94e9b14bff8be7849435512626ce7", - "0xb1aa903511fe4219acabf8761a8e4316cc4f8955ac8640c68a7b547cfc65365a8fe0843a4098f9f17a4c9beb75624393", - "0x8384f4953395aba4939b24b0669853df78f2fcc01b2145c08d3fc333ee2a7d4adc12f2d81c37d0cc187ef45b5f69f59d", - "0x92beb5a3c14637f84ee7a3c9b4d9b305b10af8963c087b86047e9fa959f41ff362d56eaccfe887bad1ccbedc488abe2e", - "0x8c60e16dbdfed2d1c8cf3f1bb0b0f462489293892f9d2e0221b1691321a771b163fbb599daec4cbd917da75f5f662de7", - "0xa8a6e3041a0c2a12c76f51139b221b03ccd1afaea3b72ba2c3533b797d5f67d8b90d3474b4f6f8e19a77894fb90842e4", - "0x966aaf74560bd4d164ee46c7d393b2c628e307019ca4289dbfb6a9a991608ad80efc1ee6e9847a19382ff8f3004aac8e", - "0xadeaec475d4bfb6075be90cc37d61d45ce14da77f8a9a508b9f829ddf2abf91683aa2fd0372d3025a660c94b0f612685", - "0xb3392bd1ad0c202d4a95912e0e06d8c64d7e2a8818dba8f895abcd0f6932efa9a0bff8a2aac107046d3478782fe42d33", - "0xab38804443da16d32f11c0e364449ed351dd36b7c82b5c7ababcc33a930acefe09fdb5261da04f6dfab29421fb1cc017", - "0xa34e0df9e953841bc44c09e16d69235a26ff390a6d128339ac97aaae5616865f86153d8d7466519dec6c52ad592dd3ad", - "0x99581db106391e6816403b1e9d13747aa05bfbfa5b46696cdfdedd1627b60e1ddb92215d138e007770512e93bc6184f7", - "0xae60c3b1ae3594aa4e3f08eeba3951157921aa6511148c6d32003d42157654d4a3a39efb1bb317135620f09729d134d0", - "0xadab0bc35ca3fefb14729259b16907a34e10ddb6d78a23f28596d3d9b244709651be7719537df33bcf003c0e43bb1a66", - "0xa31b7b2f3411f986b3415870ae42f90bb678a9fc44c942f6613cc4f90f3dbffa4b5fb8bf3abfa4361dd8e396d9a3c5ab", - "0xa69b188a8662eee48fc98201fde6f0d14f6b54db83ab79c2ec2f4b6be809773231704fae2cb281fed8b05107c63f2fda", - "0xb79e1e7a9045af6537981f54dfeed0a1335606301b73eff001880798f01ae9c0fef6e427e171afbb1d0a78135ba912cc", - "0xb1b883fbe379995b3741836a849516a0f21b18f42a34db2c8cba01f86711a2baa5d14910a110f1058e36431dec163cbf", - "0x87bc463b90123cd9e177f2284d72a7f4a1d4151659e1e4e8900bc21986f641af2f9a3386aba56601e6fb64da630b84a1", - "0x97a51bb7d717495f943db162837d3bf700ee0653da9a94b36153443584602156e168fde97d77407d0861641d8d373094", - "0x8b02561709564d0721b5247775dc66c6c09cf68a8ea62fd7dd361905ebcd98bdbb2c554fa272de71c6d22b04d33e6902", - "0xa914b9406e71c09deae875bbd628af3f54de5ccf811365cf229dfc69541d996689d05679eb02d42a0adda02be6e32d2d", - "0x85dcc5f3f77f72cf0818bd04c037cef560f0b0eece3191e06fcbb54228d11f7afbb8d9f8675b404bb39ffd04a3b65bae", - "0xb15bcb96a98bc6cc7b802dc29b79a903223b1712a10a22e776f45c530a4f767665dab1a3c6d1b52157f4b79055d5ac81", - "0x965e353e665b3734042b61951e105c1800718eb3c46759952755321ff5c639327d045c58fe90befa896e96b826910298", - "0x96776a5cd26b69f08a68af0201b2f739cdfb9553b466271063a6c8b8307f2a3f51294ea12c7e8118c0e6b884886e1bd9", - "0xa369453bfbe7ef0b2445231704abba25527b073bf735a968758975fad789c74110a573bc7ec50001368209a0ff385500", - "0x8e54dc4f2a557703b2d8bdb74ff107bbb239034ed363818197b2569c03572c14cff21273e94802159563d50205edd651", - "0xa1c66a1a82c60dcbd139b8ef4de62be423e7641a6b94ce0d0468e60bb1b000d268755946a028d3961d8b4d3722016ad1", - "0xb14b3c26dd9d17d6fd8eeefc7f706c177ebbee9b8d05f9b01174deb37649f77f97ef1a1abc0cd4ca7a13618a4036067d", - "0x8fe8f9754c5ee102bf96ba6b6f29a14fbf83cfe3c5f81b5358ccd4db87fd8c5d88760172373bdfaba7eaac98ab1fa863", - "0xa8c308c15242bd9c7b28e110715315a1f9818ebe03662027a6f1feac13a5dc9bb111d29444d13546d8e441e49960b0a6", - "0x85d87035d74a1f4662f42a8c6d26782daceded0aecee9232b78139b1b50fb764e87cdc5d1ca9d6905735dd9c3dd00dbb", - "0x986c31370f594d4c8a9096c091cb1484c1c0755804819a9462ad1b67937c6b378d97f1e4c27900405b21de2646be70ca", - "0x832b4b427f3347b0073c24f54e17ac16d5a80d04261c1d464f89dce89f42750d69dc8a83ee0481e410f94cf1d108c0ab", - "0xb13e54d91d5d414223caf43a7fad36930300594b8cb3ba97c0c873cfefedc165d05f05deec8d74a0412d5f0932813088", - "0x89c931d595849c8e54f50d550ae4a5d71c4bc74af436965bc32adbfe829a48ab15c856a69070b4a4602e0113131ce4cf", - "0xb03731793db466b74112a1b9dec3344fa952e81bfcc7fb2bef3cb20f566c3b2bf60c16a93f84f77f4c83d8f2a535a2d2", - "0x92e8fc80d49001139363e3201c93db8326c41322db51937ab641ee7f1b2f7d03089e20eab19afd27abc23de039ab4b0f", - "0xb27d95c90dfa91886aa91c9c8c85ce09fc875279028bef49abfeaf44437a0528ade620c8c2b3d712ab594e73c5c032f5", - "0xa42e2598731a792975feb5b24bf00b1e7cba1620922f8c2319dd5878419ce6099663b448299c0623ce400875c48e12a1", - "0xb062840f63b555a254e3bc36e9075d57c816ed2e9cb0e262f9de0f3692456d94eef702489e5b11c9746b949b5e84c06b", - "0x886226745d906664c476615dd41deef6c338ee10380657fdb75cf9ef28b4d9f56e69c8d0ef01e9cb80eeb42f3e5773ba", - "0x854a3649dd5b22def4f246eb0d1f1a206d3dfe42b5e44b5fa963a7c5b8bdaaf7f35b542b3e9cc53187e66a2315ed9f9e", - "0xb5a48cef68a056955ef4c080c85e4044e9f8a562f2beac9fbb5e19f8d618718c86794338c6dae8f94b6f5e9f8e98404b", - "0x8f8bea7304cab80d0009b417c198bfffd166eed6f6db19f28b7616e8b0733cf0a4d54d204361d7f8f179985c8c3a16ad", - "0x8af81f10339e2f75f6b6fe22a641298bf90c8676260abeeef90bcd52f46ef013f5aa4bd9d0b5ec15be61b7c3e0f32350", - "0xb0397c64034598c825f9ef653ff16f680325546695ee6e9c2957d3c87593161a063c5219304ce6a16b7db75f1a2c5f7f", - "0x8d2e7677ab6fbe2b0f5ab6dc356190bb3ecd7fc468c698d512a6c69f22ea97b71fa961c88635897a5b539ea51b70b4a0", - "0xb4e91a693cca1007fdaeb7e679c6837bb8eae0bf61aae447560ca6eb5ba918cbd9952b41769657978413106b359e169d", - "0xa8331a907ba7d95a5e4090a7680d1bce3cd803db49fb84a48996e96514701de1602c4eeb4b5e0b1c2a106c4f678a72a7", - "0xb54dd28a97a5f934a34c2817af91a41e57f88d7eb5fb584d3b6692f2d1c4b2a4e273c4de5fa33a0fd1fa02c9d7cd1fb1", - "0xb8b780e0f6059ea27aec9f3693ac9adf0b93f75fe7fac5230deee1e7471df0bce9b5b2f260a6a0a346afa723860471b2", - "0x980e9847ec83d61442a86cf8c7464b357694dbe67aa5de3a8c88ccd1a038256453101366dcdfe11a565065d78ce89807", - "0x9350a17e397bdc3d2bfbb84ddc79a48bdc6ef5c3d8c1ea39251e762fddf9962b69cdd42c563d03f64615b72c9dab07bd", - "0xa34d24b69089cb5ffc5f06eb2acfeba13c96a1096d1af9620aea28753baf3d0aad0bcb30037ef3a5ac36b178816e878d", - "0xa7c8b9108fceb4e0377eed48af9846530114df986cbdd35f6d54026104fe6bfb3b58e57fa2b3a750225528f8dcb8bb9b", - "0xb0f71f6a04cc7119db96033f89530853d58a445565de2efd269b1e3956397c35a49c328102325b780fa5d0cf5adc2a4a", - "0x92be082f04722fdf3abca7ebfd162b7062939c3410ec204d5478dc8de2bae2b25e2654441d29fe2c350895512d333ab0", - "0x95e7afbcac22dc2d04c5635d7a8c6293f6ce29bc6c932850d24ab5216b449251bdf7aaea838ef40e0e4eee1de8f63bfe", - "0xae0a877b488865f21194470677e12ea7e357c5d63f6bc454f608e33df9a3b20e9aaea5b6aa42e8999779b8b445831c39", - "0x98df977479667e23b897b91f2db8f4cdee7ece7fc3ecf8a07d752efae090d8bd34d781353ec1394550d8a207bffe582c", - "0xaaa0f1bfece62a63f3bc76862b8789e2593b4bb40b3c413956e9e5c4eec604e39d722cbe1db210396eca7c2293489099", - "0xb362703d2b72909d06407d139531fc144e68ba94e55643cc3cbb9ed24145223aff460b1627b41eb9a3b709978aee5a58", - "0xb020025128804bd642fdb1d2b70b07d181e5ba30a5ee16f6bd00d7e2d0c6af782e454cec107304823be61647e65221fd", - "0xa409894c0030081a2c7f8fba27bd0ac53997a31b35a33498d78bbcfa0b7ec0a89b9efa99dc1b8770ba889060f39d56e2", - "0x862f9eace3f54288749ca8402c22ddd7829f0454d17ff4891727c86eace899cbf72d302065f5f581169f00186c23b4dc", - "0x91432f2a823c3ce95bdeb5854e8dc7faea5031fd65c82dc69e4adbc5ead2e5a5b58a9cd1428d3f526cf94a217f37d7de", - "0x9543a9038fdecaffecc4d3023fd67f7976dcdbc7014e82edb4573479b1789b4c610c3964643e031f69ac7a3e3dfbe241", - "0xb4f31d580987f47c550eabd2d276678a294a612ac26806a06634b8812a571391151d84c29b6b82218cd84dac85bdcc88", - "0x8d922ae4eecb45ebc23eb1a8404aa1524b281d0f0ceda58ea93a0cfd4184efb894c047f0a46e2d007704f5506544907e", - "0x98973979672d1d52e561cae7331b730a577c422258c22720edc344aae35ce071be1b017816d58bb29b9cf5c433fd64b4", - "0xa46be974ea72c5e5bd16de591bf27087d97b9030fb4a74743bde5e480052a0de58bd962dbbf0e0fbb0559566c3d9780b", - "0xb2b4464973322d865207949afa4dadbd888c9b0230737561c3b76a1953a85ea9439fbb1db9d0d42083c62419db512450", - "0xae811a9eac5f4ee6cb3a4dab456a3e5d95cb1ab303c19e76fc4b36ef6b4c83ec0b2803ab8680ad1663bdec0ea2f19aaf", - "0x95a426f3d2ae6c6069f888010bb20c392bcbb65d0986125e0f0066d4206f4f443f70dcba8a789da042b57a36980e75be", - "0xa9ec01a5777d10275153ba7441f2e27ba3d6f1a875f204469220ad999bb8a0372369278bf5a11640ac0709771b814a31", - "0xadf1091e24bdf10d848f1a0920eabca0a2087220fa0c3f8e5b4c72ca0424ff3e0c77ad4c259c12c3cd1c0eb0cf32c67f", - "0xb9a57eb8642729541088164b9974775934d7a4c56a3a3ff2a190d549b294fa87002810f31251170b0407c7e9695cfba2", - "0x8625501e5c56948812b72b3495747412e03ede90096be089cb8040069e49cddfe697766ee72505bf715802fc77c08fa3", - "0x8a745aeeddd1be100474d96aedc737208ef19a93a8ad72c10bdc0218073fde6209510048eb46e271553b04d8e6529f46", - "0x8b8d9ac3b91ac0333094c85e81fe2b8cd5c2207073a33f66bb1939e8f1c84ef064a8b2ee984a9f450f0a6e54bb56ccc4", - "0x8cace31444da99fa5dadc7c46f689fa427949d8c089af3d90c604fbdbe0dab052392fbad4b5aeab707e4caa9e739f366", - "0x8750c8bd1f1abe5acfb29ecab0923008cb4455ae8a1db01bf3317df05e1e02f9df3c74e879d9c57b8f59877591939ab4", - "0x8904a39ad86cb42c06692d4801b3718bb63a07a2dc5ef13de16f668b08968db34966457ff2e4cb770dc61a216f4abc5e", - "0x967d1750b0db53e977bb9ba65aa820d7970f8c75d5355cf12a3f4c509dee7e9b6c0f7a828474b167c25b15d74f0e9cb3", - "0xb37297bb6c2d9175e0a7654c5bc6d248f47f7183c3b10375f07e21e9f3e66f6581caebfcf468dc0f8c04132a2a0ede55", - "0x803862e6fbca945cb6c0ba202257df5c7e1e1fadd78b842970206575f70c9757d4a54e9b1a0a269dd37c4f830a40d2d6", - "0xa7a27f2fc7a1e6d276522177f0ae6630dcf5205d08c19319c315bacb165b687d125832d97ed689960885bb7cf42fdf36", - "0x87fbc08506fdf980cdd534d4ecc4dcfbd381f3937dafa09db402e07a67e1cde579e680d3f77865b5669f35fc00901530", - "0x8fab8bd57f76d187f1cc22e40b51736b1b0234e70813ca02559ded9c7835cb3dc71a24c8f679081510c32f330d6ca45b", - "0x8fb917b7dd71e1728bbf32fcb55343890aa6fc890740f41f42e9620b5bc3ef8b1ec67d9c047e4a9de0863a5eec18e5f9", - "0xb7429e758850bb7f69db000d49763df43d18af11460ee0f158b741dd6b7575527c5c8068cf54f7f78098f9ddb92a82db", - "0x8bd3c73c1b6f88ed2696d53d2a0617f74bfada964d2eef2afb5e1cf00bfb646f552643c55d5453cc622c9ecfb23ad492", - "0x8e025e91b30b0f328cd6b79df9603698f1715eb6209e64ef8705cdde5ee1c4ec737a61d9b8a4e72e83b2157c621e1590", - "0xac0b91bbb5ce5bbc8e8d6c0d9d4e51b3960169c608b6220a352aeb13072133aa9d934b4e69d7c5c39fde68d467fa8069", - "0x88255d08bde3b967dfb1dd338dfbdec12a2079851aa796be070a1d70204048c34f2739b7461840136b03429a8b83b1f8", - "0x97a83477e765f3f17eef0d3243ba9bbdcc50fc581f904e92a853a076adeba917279fc0e01aeca42de1aed8af9579bca1", - "0xb0d9f1afb807e0e6f839632393edef25731ab2141cfa1cd965e986940a4916c8788733a39def0cf67afedc516dcc6ce4", - "0xb563e9ed9ba2134011d7bea6314af5d71f63caa1bcbf878c26d7162dfc76343c38308955215252962fd0c9c87200f1f7", - "0x838d4e97bd67822c22cda558f0d35f971a0ab7debd3da3f15c27f7d4b3301b2c17b60cdbca0da8e067f23fc97d136ae7", - "0xa7bccea326cccbbc4773de402fdf2cbc21a028197be98cebf6e691a7679fc948e6bc4981a14fbf493a254eedc444dd7a", - "0x8b2687732f7aebb153bd6030dfca0b6d257b8f2945eb8221ffd36ede50d463172cfc4bb17dc30bd21d8572aae2540d6f", - "0xa4a3e87ec5984c3a755cb39fb04472583a0d2c771552b0701788f03b4618c87690a13a905420358701777e8b5ff2d190", - "0x904c4dee5dfff129de3fb8cd0a6e0576c18ed3d77f49b8f0601997013cdd4ecadb86690389555ebe8a436d8084024f2f", - "0xad1d9c7a6236b22474fe8d45fde2e1f072101b5cb7018ac73c0541c0f9ebec4d5c4469e0570cc188cb5f5ba1d8958be1", - "0x87fc8ca6f737cfdedee973f1586b94d971564a1fada0e4d65894222edcca6552764f1ca0b02782066f19f871ba5842d8", - "0x851829a8b39eb6b91523548ad600bb876408cabed98d30958056367c686bdedbc876e1903b8af8ffa3d3618e3580e3db", - "0xb99270859bfe7d8a4c1a22e2d88a644dfd2f100c54070ffd9c4e1044140fc0d21d62c61214a2b81a9cfadf944327ef8e", - "0xb89a2ddc91c59dc2ed9b8d11e4838002e731b0bcc576e0e18106238cd3282264b14cebebd8a64f004521cbdc690c4182", - "0x8be96bb11a025d265b7b3ff3151e9e227a8416e6118595ac29bf836ef751504eaa3a9cc05bbdcdeabde11f2dc3d20c3d", - "0x87185ed410be571fb532e32d0ff4ef68e98ba2d3d5fbe92180cf1fe8ddfbcc89fd1e03694a9fde1a12ab905db89323d6", - "0x97ef023f71850ddb282f244b3f39579eab69ce5bf3fe5dd2159329b7def4982cdbdb4e71476471acfea0f7ba5a7fd061", - "0x9944324d804fd3978e7e137e6e65348d7473ea23c591136d55779b5a31f45f9e4d866d8a18c76a3a0e8cf2ee61cdd041", - "0xb9930c9aff260105d4d15fb749aa33436f6fb52cf9d50e39dca19d9cc7938d752773f06756af86369e1f5fd5aa71d5ea", - "0xa85ac6bc027ade2a9bbbab2b231241cbbe56e562fe621ea19208a8ea36e1baced89ec9ab8e2f83b602539e5c053f5764", - "0x9917d40d37549caae646848e18ffcb49f5c6c4e396ebe7e74129a41b0cfe2726b4dad34d51f4bc706063e654da898824", - "0xa25f8a4d8ab34724a732dacd2b316c80a6544d4b8c1f45115c4f55c3efae6129b83623ffb31da80e2601f70ca51ead16", - "0x932b54b2bd26670936843a92346d231f2f3e3659542f4d4def73fb36ac0350733853130a5e5e9d8e386d34f817f5a91d", - "0x871bf29d7263bce62a02690681d4e1c3c2f9c2751de4e35810ece13c9480eab93b80a00230ef0ffb858a829ee6bd96e2", - "0xab9643bb1c32dc2e8c05ef49bbde9937072af214c19c3932be137b7b75268edbcdd81d1370089be44462b8032bba3c57", - "0xb67d510c460a2f14b7cebaf9a15642a14b2542c13ebb1d1690596447ddfce6a86327ffa377c28891f6bbd8febc2c17ca", - "0x93a5ad5019a8e680bd053a524e0ffaf8cb18adfcdb22ccb6cbed67012316bcebed65294bcc0cf4f4e2915dbf19ff0948", - "0xac7a7fc1140b1197f2aa424b053e8ceaf48abf41819efaff87a2e63cd6e962c278942c2b97742ffbbedc5cd426a8df50", - "0xaf0115d9c2f887ff97ee15a1116ab06af1920f2f42700b75cc010d4c8038eea941c9bcc8e7cf4a41036813143ab3e8eb", - "0x90c768d880b6ac17ed7ff9bcf76cbd5c1c4879247a757d8cc8b31c4c7bb0ec763d746e6e06e361afa8ee158e36ccaffc", - "0xb3f10561432a97c95d02c1a6f317bb1ab5b98cc88cf5d56e1492ca84eb2ae1db92e9e31fa454de562e719b71442e69f0", - "0x8d94729b5fb0afc196064991f9b3c8e04c0858199aa951f49421ab890079804179fe00707978f15637b8d16246794001", - "0x968515d07a0f0eb52adf439d8f70ecd1f6655072abbeea45431dad26c8937f4aaeda552a22a420598d2136f576a966d9", - "0x91f50e6f292e2bbbe226b221cedb9db36bcd459bfd74fd6356b0620766d96869266315e8503435af1719d8ff765467ea", - "0x968b328d79e183ec560e8f0de113298755cb23a893a631406defdd26ecd52e4b6f28934ad2e219382837fbb8f87f4360", - "0x94c126a9035059d2d817c4fb16cb13fe6047c356fc495aeb369acb1c45e89306554631f50d313707e82624b6107d2fa0", - "0x90ee85deb494043a1cb280d687e3f55345085e576484308755df1bdb6f734e7dd25fd2489cea746be5d2c6384e7986e0", - "0x92a4f64d98e7e633271bdafb1eb88474013b5ed2c65137c243729df0d79ccdc6b210118ed3587ad00d3f0f757400e47b", - "0xaf31031fcc867a53760216cc1f467901aeaa3b28438fb3ec90d6a1c8a46590062c40fac939bc3c7e7a7deff8f83c262f", - "0x94306afe09f20d5de9ea26f37f5fc8df1e29b3a6963caa94df031efd428545493d53e0d8d7af12ee525e2e21cba23324", - "0xab6285371b981d5443ecea699af9da916f9320b3ed0a11c15503f3b10eada3ff5dc95d24a54f5aaab97d3312de5b985b", - "0x8e9735364ae128f790dfcbedcfe0e11b991602dce0c90ab3cfd4aac74526c30a798fcb51a8ebcc5528d88c724e9c2b02", - "0x89a3c12bcc68129b14fdc1d9b5db8d26d11c6c9467f5bff7c40abb8ec23b193746697421ea4400d5ebe53bb3fbfe59d9", - "0x8368e44144947f9ecfa5d126f4a57bb1d3728fe3c5d3bf83310174d638a10cea02ae79fca91d5489ecc9fa679feab49c", - "0xa0474ff532e1a6a3dc8f16ae27e77d6ab72b62535ba0d3ed09da5c692c6fd34424141cd68470922e1e147fb7f7479d5e", - "0xb9ae0e47fa8d999135f78c733cdcad786b96087a340f86e4cc2bdf019b07fd4a76f9b4b041eb397f61bda20c31d27838", - "0xa7262ca18a7179924d28161d64e6b6cec5da35b7eaf695642dbc127a7bf4a52bffad82b8d3fcd010b308dd72eb567f26", - "0xa23ecfac8a3f978f9ca8810458973f528846de6bb92fa6422b9547d55d29d7db7d8bdc5181e9ee2257a458466f714449", - "0xb04c32403400f82677d831314956acd3cb507520ff14d856cf8ec4fab37a4428a5d24ecfabfd2c6086e4ea6d26b005e5", - "0x9669b2725cd5965305c6ea48331e693086f4c1c4ca7dec26bc6290e9a8e70f9f0bedca6e36985c39ea35b412abc7f4b5", - "0xa6f68cecace45317a758658463c5fc1f005283d8c3d3de9364e7dea453007d8d4bc849a21205d61ef81019e0d25858fa", - "0x8ee19ccc1c83b2c4d7c7b712bb370c129201bfb340c5b49d991207c995f870de2d0efaa88e05bc9eac567c4c36e20175", - "0x8a530ece1992d1de92c4e845e71a1ab24e53a8a0679aa5bdeefc60fd890ca3cee2121f66c6f4b29c437440e7644e65d0", - "0x924338d7f356da9b8477b3aeaad6f754a8d8f6a791d70c3ff23c2a6d4488efde9b9fc351319f3ea1f545dd11cd23ab76", - "0x8eb76f86e057cfe9f655ba29bac89cc97db07f0487c86e7b41555b5549897bd3d042cd2ede35e312cbea357df622c6c2", - "0xa2c0da965489d15ced574f5e27cd4781a1dce8fa4f17762a25fef1320096b9eddd92a007d58a194ef57def3aaf4e925b", - "0xa3fc89753e8896d796859c9e5a00d184be7d37c4d5741ae8a60cae9a7a30c5d840325d6479701e1f61e37065fce81870", - "0x8b2f90cdb3add567b94f4c7fc89a8a57a0f06877639c33df2697f7c39e52c1869aadc98a2f8b85a58fbb02bb1bc1a441", - "0xaeb2c22d9186725ea40d3a4bf551482bddeef42c0ad33801e35361d3695769429449c2a13955cccab55778d3ff29b664", - "0x80bce007abd8ebe2238d465a312c2d125d1a695184b93108d728075595c7716786f9188e90ae37fea89009d087e71b07", - "0x86f5df2b83383c737bb6db4e435f496ebfd56b51300612c402bea9ac2f439ee7e98cbc2655d31646472ef983aa6ccbbe", - "0x880e8a19af5ad76f14cdf94396b8dacf061e02eeaba02d4c29ddf0d07c6d2a737c987d69ea2eee52f0db5a4dec318932", - "0x8b82368968f9b5bb175c95862ad403beee68d199a20d5dd618395daf11ff0c2e1fbf3a31c23d3e582556276b44e70b99", - "0x94a062abbdc5ba740077fb9de722ad2ccf3f6ffc8b4a9dfbb0bf2ff789bd529e7b9d8da520d0342af91808fc00431638", - "0x890b4ee1e9837a4c215616819dadbd3c6ed7586ad391498012a54d735c6df0b72c2dc3969d1b24cf6fe822f37f9c10e7", - "0xa7dfcf43c9c22fd22f47db490e8f0b8f42597a5b4ae3e7bc4a9b12252b32f89412a2aed946eec19b133cee89b4a70322", - "0xacbd9e85b9d9c3b068220f893d7b6368984f6cdb1cd06a784cc9571f0c632775ef890dbd51371e8701894cbf667d04f2", - "0xa9b1f84f053ef6f41c59b1758836a82d53932cc4b8ee9c2cafe705150e1c717e3f5c15fc21a2532c071e9dd9bccb4dac", - "0xb2c63345748a28d04680e3e451d1f7d430bc8ff2031b6bd4237a1f55dfadaec20d1854ac158cd6a1466dae525c1b9b06", - "0xa23e7b2e5b8f3e3b0e350e1a461708be9c1434d49fe2e51473e2e360bb0be140a96f8ddac99e3b804557cc25d3e44776", - "0xa4c4729a38f5f32f155ca4d1994b61802ee418b276486e2dcd681fec13316f3b6d4a8e76eb9f48e2df0339543b11326c", - "0x93be67dbdec2655edfe40dcdcc0a7e761b7259a9d909ebb12fd7c9a5d4efa10de065d2eb049660ed01ede2f26388d43e", - "0x932480849f97e32fb14d4a69af4073c377e949af7293951b3ca371a306d9e2096157f51c8e5036a44eb73c7c842c5aa9", - "0x8b5e79ddafd675ff88d8f65176321a08183429d42d7fc1e7cc3cfccdef0dc5824ee40f279a05edbf4d50418a4cab2126", - "0x962bd6fcf7c7f2a9c569d584658a735bd16440de2ffae236c68ccbf2ddc5e13836efb163690062537d52f7d8bbb24222", - "0xaf80793655c0b3ec3029673c50a7f212d297f9f80d7d1c7cb1409d292f3bd7dbb8b24581017d9f3964e3432f46e79ca1", - "0x94c8cf3c737c102e9e91216752c82b17e4e42074e08ce44e701c2f8ac7c08902b911cabf38c4c5bd41400eeb1fc97acb", - "0x8708ea7af8c86b2a1964edf64a9e9c56c7febffa742c3ff2e3088a61d3ccd63e135811212878ba7ad8a819e1859f4e95", - "0xab8e726d468417c168c892c10c7e2297e50c67e4283e5b48c3f3b014981ec482e211374f779faa0c1ead906f5dd4114d", - "0xa93911e672aa3d8dd686280cf062f128bd8eefc058fbaea52cc0a9bb255fda84e65ea546f662fc75fee4c5b24bdc61fd", - "0x8aae6d9289d8adf0f81e7990cc79cb704d0a975f03b9ec02be66089d62954fd9a8b005c5ba8179cede366d25ccf40869", - "0x91e44ca55de8ad3ab42816504813cd9ed9c6d64abf6373e8891f909cb49c8a951ee823cd1f947058d542f0bf6290a11c", - "0xa377f97e075b66e740b8476f085d50ce8ac21f206802384e2e072f6b9700a5f9cf0e6f2236307775c0e0d6ae8459d864", - "0x953c08d9f2a9d6ccb22cab906efda69ec1c228aa5c2ab93822b6f71c007fa3bced68c6a70ac605c6145e4af770b60de0", - "0x86d8dcf5a9ba81cf6a3149b2fff96e36639767e9de461bbd3ccc870634e8db331b98a888d7e8d3d70b6ed241d8ce54da", - "0x88db73952866ec07c49b484c6b18de70d439e67d971c1b436684d489253cb96d793cc4d9a4362b51dffce837dbd03bf6", - "0x970b7aa9070334b0649bea1f0b4e53fded64665f87e055e3527e0e567cb57a0e97d369aa16a005155cb69000073d7695", - "0x928c8aaf72b3f51e38c866ab457f75cbd7131b676817a3c6d522fb8f876b01a9ab3a84238eaadaa0a095ccd6c1ac060b", - "0x9561e78d16061b5361ba0be11387c3f6029415f83bcc8477b8729e88c55f4bfe74b59c1b24bec0eebd9779cdfcfbc96c", - "0xaef133788d1e04ac64f573f3ffab473209dfdcaf2c675fddcff83724d17b91d6340830409b391a94405d6ade005cd01b", - "0xb8ad4ab0a1ad6383e4cb12d479cde732f202687ebf886184507371ac277446b3bd1648c49c89343920e5d57fa6b255c3", - "0xa8d00257e331f342b79b3d25b74d300b070326b358f690edbaad5e325293d8b55078605a43ecd9dfd27206013db4c286", - "0xaa71abee2720052cce7a5a0c3968e64c2c540cc852dfe08b742fefe005dbfd10397f66386744c9bfbbaa40779c2ae190", - "0x80c6680857b88afd3ae8801677720100f0fdcb9e49c82f74b8ca5a27aef34e6df03462cf9ef5f80169c72da15be567b2", - "0x8c2f2865e132869fca5232ba5e6844ac0540a53a66971ad54ff91f186e011e5412450df9099fbe0b987be443867dfdb6", - "0x89cf681e0506baaa528043a15ab3bae09b8817853e889f0b3de138992e52612fa3e50d54b3686cbca6428a7644f58208", - "0x89ddf69b72b9ddf7d535f742bd3c942000061a5a54987f2ccc7a09e035be978cb32f653df9568526c5857a5df4321f59", - "0x9908a3288b9a9972c3f3f0d5923d9840756b74f31ae0b24ef2188465efaa5247b1ed13b774991bbe4c065c7e71b487ea", - "0x9454ea9a664390fb1ba79fbb5c0cc765d8ccd32a02d946a14353290fa2a1ba911605ff2e302c340e9ed6fbe8543ee6a9", - "0xaa4f4d9ef843ca3ba334d73af634a0ee800b3393f8f7701cd152274f4296eb79d63869d452b5e83976eca246203d6f03", - "0x8fce1e2e59dfc4fb46f3741d27772579fbf2f48acf1a38c49b0e5dae7d35f2624af3a46a48b89bd835b7d452ab0cec80", - "0x810ec0e58504ed556e788e23067296a8e4b4ef31257d508f05e5245bfe6d2c2f658fca8c81538c6c9ea6ed05a8f249a9", - "0xb6667bad0a7d49cd2dc60af85e373fdaac2af0d34fdee51a9fbc1fe8b77470c162a04da38228fe68b7d5247d43026734", - "0x8982971d57bdf35e0f34e867fecbe0c140d94101484ef4ea01b796633beba184f980c3ced28b24ff42de1dc504dbc854", - "0x86d8d1f3edef9e61058a58d966169a05f07fed0d93bd4f4a7cfca5a872b2aad0d1a78f8ec7784828e5813c8da577469c", - "0xb491624c3d5e517c9019258db6284d7533778e44b1a0060dec5f655a7b79057141079115f5cb1d8d97a90af33cd7563e", - "0x856e1cd4f9ab7cf323f5988bb5d272857d2fa90527f800362569a39defd93e37be2a60c11f498c482654f55560356f7c", - "0xa08884d0e642c479fc8e5a9837d1babbe63f3165c02a57b19d0547fa1fdc18ee382ea82a86cfd3135dec8f2aff793f53", - "0xb1a4de5ea703fa5ac8a70ec515bc65203a9415f6da109b67fa32843a39d7fa6232c9c13920d78c0f16e99fa5f6a27e83", - "0x931a2ee3220ac7888157c426d1b33b8a56f8879fecf1461af4cd6c85f94e193bd6ae6f8dc3946fc689e42bee213f0027", - "0xa844a78e65ea6f75bb55a5db1e78b88896caa1d54b624f218eeb302397dc98a084a2ff4b964acd0650667160928ceea4", - "0xb9c214280a15b423654a36b11646c928fb42ed2a692aedc01441c67522760df29c6ae7bbcb9237938a823188ad4d83f4", - "0xa19575f9bbdfccf970bb3754818e49c709d1bf0af015541182fc7203f7aab51cad31544072d52c0234a3b649d03d9a52", - "0x8cd1127b7485ea7f349e2c89a4b78fab3e5fabe5a95ff0cee10a3f4fd48940e431ca5e526f6342f7da93e32e8eaa1448", - "0x9906abc725e445092dd7dd0aef90f989e3c78aee96f3c0a67ccb62fb2a51363c71d783490fa5fdda0ff9ea69f5b9233b", - "0x8996df92e014c226e5ac724075c19d19a9204b2e086ed5e75a9bfa1f8391c4c77fd5c0b85a29f28b302a4af29d38735e", - "0x90225c9490b39d151a80a9f4d9a7f2595961c44779a54d5e195ec95096f77e30157c6c629cb1c36d995f6c3ee129ad20", - "0x85925b1dfe3884ae3a0e993b67b6c49685deeab6cf0d9997309961b7f727cd6133797bf04d21ef7b620d1d6392450b64", - "0x88a6c518e577a820d83f87e9d5f236f43d262756b1bae0fde72af241fcc192417ca9724428d17a3f9dd813712a772cac", - "0x8f501fd5634fddd00a8411c0e9c6947bab0dded26339821bc3543a64c519d9575c3129f6619c6079d5e95237c11cfeac", - "0xaf2b42945d7c81bc422a1bcdeb80027a1a243f89c65c173294d6c92e4cb3cd650740cac17408e7ba1a34d37d865b9bc5", - "0xabfa5e76f1112602ddf152aceaa9f588beda3aba1115d0823d6a6b074d28389fd4c8178e8a845262200b9af024a33a88", - "0x9732a0e3efcef5ad4d43811bcaffaa1418c791d3fd6ca4489d6cbbb7c44b55156d218f0fe86f2ec96ac306fefab2e694", - "0x8837a6c4e60839ffb0b59e94b37d81bf1ea392d44cc81717c1c9104468d31fb5fc3c35b1efd9991b5e7e9819c66a7221", - "0xb6545fd0b455748ac3482e0ead3b0157563cea7bf6bdd5ae2af7afe1ade921e5ba80466885ba73a89657a735c92658a2", - "0xb72fc49fd3be541bc26cb968ba4eb3078ce7c71fe0ac06340f7ac25c0befb86af03c4cf8f31c857f9e5d946401e86bb0", - "0x929f424548e29c3b47fbbd59ec00d17b00ee1c4f6b966c1fa7e0f8528d52078278f2852da976b8931fe813b0c3b71ac9", - "0xb37861ba981001aa6192cff06c13f041410aa60f965ea03dd48068b4295d61d2fa276c3f477f985f50189e33308c1876", - "0xa73c7cdffd646cffb255d2519d8e08dd8d9a9eca0610211177e259230b8f8c7ec8727015853197a0f11eec8b59d4f2bc", - "0x8da1260ce51220ad107c3127e871715bd738639cd90824d1c9f5b6181304f363b8bdbdb42c21e4e360cbdee496b573a9", - "0xaac6bbc35bce8b54820ef8d7219a4092c49aa5d4fbb187968cb91ac04bc44fa119766f8c630a727ba184cad19278d9c8", - "0xb964de0bd31847ada13dc3f6e1bdc679f421e262c03353e39f0ef1df720ba05e6d806dba15b6e10df559519ca125fc39", - "0xa62e4336b61f85eaa415f57e21cebc7d54c68f6febab02de76bc04a69658ab1d2f7cf0104da79448e32e2b7c92b684c8", - "0x897c6ca595bb2884b643ce8e69078431979d7e6e1b2dcc6effaf5a62fc906db6466f85020bf5930597adbd99e2ff90d3", - "0x932956e0ba09f6499f1ed231732a444b0adf17080237d9345d06d4262fe8a5fb0f704c919513ed42473751069c57dafe", - "0xa24b9cb4ea9c2203a95b0056bb95342c4fa0d91bcc25595fea0161e7d6f45595f7ea171e0ac1bbde13a6d8ca6ad10bf5", - "0xa7714728bc3318f6ac005e350de94f59495ef3972b328c673c5e608fa9059be3277b48f03a5a9634c3d03397af7d089f", - "0xb98732aec7a0a9a7998ba51e2b76e5232379482d0047f4876cd39918119776ae2683590f7fe5e44d12b3b3efdd916e8a", - "0x87700c3fe20cad8fa3041976c87ee761941d323f2d64a9818f20fcdf0259f796a11e55cdee31446bd19307cbe8becf09", - "0xa37cd03fd348694b2ea5cf081696d12dc4ae108da8d48695bf74c921b90612d18c1aa71b1071bbcc02829e05ba1363ab", - "0x830e4e7ac24fb3f64294e5c64563ab5708ebf0e133540b35b985390d68c420a6d680d779fc87245bb1f5c58e59c5ff39", - "0xb5922242a82565753dd2c1438008462d531f820af1b565756d4d27a30e3406ecc503b1e5b628012ea0329fd75561dd7b", - "0x91068438d2bfbb0666824d3cc2be488f2eaf3a8a9f21805838f9f2d582ca6bcb103b2f0f313b57bc86f87704aad7c7d1", - "0xa9a2133fe55e99114e526904f5fb3e2e141f31963562887a9fe6a262496dc405c756bf6dfdd6acb8853ef5a0a5146037", - "0x8e48e79f9eb1f8757b4c4afc4e3d6da4d368bb25b4d54e3a1f34f3af13d8037b0d465b29894f68272b79cc60fa676071", - "0x9378b90495b0e6468dce3102a97e9965a5d21fa4a6494d401888b8777bd58616b99d49177f2eb2796476ae84d20b67b7", - "0xb0aea247d7d7c7767519b87dd66f56c306d9eec88b0db8060bb97370099892957e2c950fa2e05f24f8ad097889cab087", - "0x89d0d48769ad81699d5b83f26ac49a29c3e835caee03469e93c11e5f4b8470eb02b52290bb2c37f06afb0746630803fb", - "0x94de42d8554583b24317d9ea283dad5849e2f124f659d0afa11414898ffdc4347a9c4ebe783dded21679337b58b67f4d", - "0xb76c3047eaecaf4a4e6fb6176c7f4a1d393fec3a360f4c711d6293a993aee39d5aea654fc6429c2e4d4955b12fea5c8e", - "0xa307fcef0915e3e3a27b94ddb9561e5d210a091714b73afbc0b3fa5e8140e8c3818f4914903975e8f78d0492d7784c25", - "0x95079c4a5008fb6ae0d653c00ad901a108df0b8c442a68492740eacd15048106b7c4cb5ee88bc6b1dc089987935bdba1", - "0xb65a354aa8e92d6ca2e11f4ed3c1ed011852bab8f0e5b8157a10c26db2748be688512423c11d582b3dc1da57b9d6a826", - "0xa32c2fc62c38eb19dea24b545d2537dfe596423f8ae530e562ba7eaac34139fb443d88f18f39d65d36a65ed1277973ef", - "0x81b83b37927e9a6a7c34cfe587dc9cfbd560db3ac57a8a88161fe4ae9a7c66843d32f6f568c927e2ff8f21d8b4299475", - "0x8b6993ef73c2021842060ec0424464412242aeb711da2c43d3985f9d15e4d936eb7a1b5098bfe892fcd3b6ba8bf42369", - "0x965535b46a18f94a1203fafa4dee5963742511ab77e98e471e03376847850357d543dc6ef2dbb765cbc1f03f66ebbc14", - "0xa9386ef496b4f96bd591847baf6dcf8520f7cb5aaf1713025ee894b40b10f243aef06c553376663488377fb8b1b0a022", - "0xa6bae4486fc16ec1f12817f2d47871c8bb61f5f1a2db5f828c6e2c06bca64b1ff7cf4c059a10d6bc2f561fc3a12aa38d", - "0xa2b6cda6a75fac16f324935cc1820bfdf013ae02c209802befecac0288d90263a7f84762dfb7c9aa1351415c03288714", - "0xaac87216619a8c50b5d54432ed5681b1cbb2c7084f33e9a91889bfbb94fd18c8071b79ebdb403ad81fea495bc1e37dcc", - "0x8bb3b3a7ceca82e4268ab52c00322d5d0822427e43c1d8b88b2f43c3dfae7100f6a29832d16454e093579cbaa1074062", - "0xa2363b4506b1464391a194412a73d47d0cd4ea1ffa541cf8b936c97a46bfeaebd1fec409c6aa2109d277bfae0ea7f0fb", - "0xb56911be2bbf1e564715191a526c2ae73bb6e85c45e3dc22bd9dd87cde620de93875c48b11e02ea66eebb68f533f353e", - "0x81609eacf4b2e78a9d7f469e0882ad24c86ad98dd18f466d321aa32a762171cfc334dcc049962ef5e63248ef48244229", - "0x866b26d3dbab7837edec84217c85653c6abaa617e0ba2657d67757fd1c7dfc0c7f83f6198fb85a49b402108d6fedeea6", - "0x9771f5796d5d47d22100c7ff7d191795677d53796f4a1e1aada949b372ec12decb6c49e28f2662e729d44f0e09eac063", - "0xa9fdfbfbe114c7f93806b988c50f8ae4e13a4d433f2e40c72b81d0ed7fe879db5e89216a0b0c8392a6d9d54f57760ecc", - "0x965336222244229fac41336464c36dac8700d5289c0aba78016db76e436289a0797af8c96d52583618f8c6dbe7b3562d", - "0x99719ac482b72d54fa515395847e9a65b733da84f7d10a0be82f34afc20159d64411aacca15041726251fd90ae06a9f4", - "0xab96b7ac88842ad0ab61f7550b7b4697d6a3b651cfa3c10ad404e7505c742e2c1364bbfd08ad0039ca3b81ffa9d6a6e5", - "0xae96088cf12f76140888582f6f6404b6f2666c048950166e37bbe46c1398fec343fcacd3e8f332f7afa222ca13fbdb87", - "0xb5b5c1ad493b2e72ce8ba698351f596cb85841f7f7055e31325cadbb4fec3e8045b335643190d6b97c3049d10551764c", - "0x85f066c7ffd2bfc4519f42f0778ce0e46195466768322a22673a073ebb66cd77c7b8b3a14157845cdb369d3f40911421", - "0x99f4f10397cb7ff47a2d9d2f29021d1ca96f0da01f8afd76f72457cba6e6376f925fcee28ce77475b90c9466042ac414", - "0x85116606b18f6e5404e9176570bf6d7a9d86116e5a29721a1b20d6b28a733886e2085a7563cbff45d1f11bf3d552ea12", - "0xa17d81b236fb138ed820d335dde2640ac3a44cccb5f11fc6bea5fe3132c4a9247b874e75fba55bdf8093f0f56310a999", - "0x8a16a5cfe10c5dbecb4fd9f4b0c370162071f88198e016111937199b87d006d1b24f3f412d853d7c6541e1c68076b70a", - "0x8cb83fd2b1afbad7c454430fb9dbf6530230b782c7dfb01443c2c16563e833c5b230f4c4268dc37a55a681a5f0bef420", - "0xb8851a8dd6a3a17619e7c84b18f29ac9680b456c03e8c8489376e6de9a22ea75d1730787ca5d269af44eeae47f87bc24", - "0xa8f990c9290456e849ae4cc0c320580fcfd50263af8945d01b00baddf801aa0a7bef2ac119d4d1b4be6290615c781656", - "0xb0fa1c28c8c67ff87427691047c362aa35de0be9b0121d83b116b23170ad2b712a0b5bdf6a57a25c59201ba165d5f0d6", - "0xafcd2f5e66a277cef775b636abb598ee9d7e3bc1b48b521da787dc561cea8d7ad963f593c3ac6f23a66a27c15876b775", - "0x92888863568ef01b40d51f467e8364cb1b09808238644bbee5ed118b392475e90c6a1e03a0ef826dff5ada8d10be716c", - "0xa8ddad388f2dc94294371d0ebbce02016c463a65bcf3a5366419a7a910d3d24748fb5716ddd81cbab44a2362ee3c077e", - "0x8b8ef4f818ca3de1683064ea7e968edc8d9fe2675b8bb2ae637a5784a20cd909d18eed45140189eb9f080c53c06376fd", - "0xa52d9c49db4819cf6280c220a6cd306a5851b771de3032f28c7f8750c20e80cbfda57323a55a8c03085b41f4f236b5ba", - "0xb01fbfa0f80ef574a1d6733899002a8672cc309e1014fec8e81ea1e96a7be9c247a570f825b7862e814e1f006a8227ac", - "0xb07e163eb0f96a51d74aa8a7fab5d23e44e37b1b1027ae9c4155280d8d159f0cdeecd3258c098a7358c5bf2fcf1eb7e2", - "0x80c4512a5bb5e8255488fed7b7e297988732473f0ccc1192cab716a88d035e23cc374a937fca7da87e18048ab026d9f7", - "0xb3e343b13c1d4c98b7706edbf362eab12b1fa87510d5cf168e510844b24c8a9624f1e7e0babf455c6d425741c23e1ca6", - "0x83e4b53953ef683c512756b3fea37756b3c562c88a15cddd902eeecf0de82d0345fb05feeba511e8a6de91aa1f722ef7", - "0x922512dd5ce444df62fded2c53a73385570804e7305cde401116c06dff5ec7812b776b8cccdfdafe422f1ba53b2b56f5", - "0x8d1f7feee880abfe9f09708ccf72f376013b2910886edcceb76018759b88b95cab9c0e8f176faf042729b405a10242f5", - "0xabb7cd087d0cea2cdbb47cdf9be2c6a0c6ec113e1ad5fac083f66a027697d477ec69f46b9aff40c239ad9959b9854e11", - "0xb10592443daa8708f8c882da795da07465efb9829305170bc3bdd781cb6651b503d3b21eca027486d413f1748f40f068", - "0xb14dcb895ab22335373d2b736628c1ed0e815072fd3844867ae24638aec60f8591c6885869ad0bfe509fa3fa3101a5f0", - "0x89631708996651bba6b2113626a2fe1ef0f2ea2f21857b2a1e5544ad31e8a53e755b6d611546ebbba4b2213acde65e72", - "0x82e9436700fcc5b842ac2f0482de4248ec9d1f206db3dd36917c00c7749bda257fedaec513d8a9ef3765057bf5aff25e", - "0xb1c2b26d93658451fb4e9cfcd77209dbfea909b2212c000fcc576ef29b808061c9f58827682cfa09e357c1722c3215b1", - "0x8be32f59768777a785d8b257f941215f37db8912183aef4a39a856b88cc680ae7124789c58cb3c6c6f06a951dc96a1ce", - "0x8cb60a3d0c9a1efb89f89f78e6f0e4bcf5eabeae6cb215e98cd7f9eb58699ed70dabed73a8b95daf32a5e4bf0d411d3f", - "0x8ec7156d6b672e631ebd88467f40caa9ba5411ab727602f3146b468bc00ae54fe44b3228572670215a0dbd59feb66e2d", - "0x97b7162101d740aedc894bd5f74b8cfa7ca7e7fe8363b05491c15e8cd54f21b0b09eb41f756b9089c379ea0ab189c468", - "0x8524c9de6be47cb6808df761ed03c505932ba715e757dfb3c97b6deb462433d98953ee6cbc7a576b6837e68eb16d3188", - "0xb024c8fc3fa4f602ab73448418548d9896200065a95e8a001f6c8d4cc3f53f18ec8b85524377fd93e2d2a18eb4c48b57", - "0xb344dc93d3057465592460b7f35dc015f4f8025fbcb44a645dcc3dfb37044d5681d8abd81bd544272dc57cd50048f29a", - "0xa7b270b94d9870f8afec3bf2ed58afb76f4ea576a2175502630d0d3f92f9152c1ab0c019f175f566eed29713dd97712d", - "0xb86dd953c40d4f5574bc7489323d71e9798f7c6f2dff8d41f6295655c5a275179ffb4bb8d2408b88226c98583a7c26b1", - "0xb73074289a5b08aa695de03ce2f5b106107c6cf2bee8061e3195056e799b0bd8b4172deff7f413ce8e477391ee6294cd", - "0x98b801a58ac7e083da541ba058c64b00ba709d4d0ba1683e5d83dfb80a29272fc2a33a18f32351b103b227abd5123da1", - "0xa7cf232c6ec6b9dfb32d729b9d4216688f6d2b6e68053ddfb293ebd5774218c69133baaccec7ba3da9b221af619c2ed1", - "0x8cc1d33ffedcea05f3c593e5b63dbfebdf26d05a5719cbf642997be929336b92457fd9df0d6be6c063918ada8fa2d322", - "0x8d273497dd9f822984f1d8dffd471cc703d03c342f022b2bb24492209a3889f010c4f7ec124f9fb9f884a1a11f84a414", - "0xb62cd013944d8d9d72fbe54897a94e804c93eb84a24beb0880cd98fd5d48fccf5dedf5076abcb1b857adcc986b729cb1", - "0xa1bc703a67ee709f7776b2871f2a88d8574c9e2910690c9242c162ad926ef2263d5260f5c19015ddd5ee1c8ad1a444ae", - "0x87de434e8ab5b1d067188cb9c12ed936c26ddb0ee76c4c9cee9bd1ea916e411a354bfab2ce77ed8c8ab5d8c62038f933", - "0xab128e9de30bad31dc2eaad851da1e39741ea61bd203b48e5671e37f7b4e3db86687574d3cea1f561bbea84f68cd17c2", - "0xb54576c9c4bc3b43270b83b89eb75cb7e89057c99e14021ca42237dce393dc6a8614c5af5c2f69160001b2ecbb407c9f", - "0x93adf38f161ea886f41e4af8e42c69c53a51074db9ecd7b7e4e36c858426237167aa49b79737625c9f9826dfd22f39ed", - "0xa6907c8dc4073d3d4d40df8302c1637c15f9197aad8511dc95c210f6a60b06f3aab2622b826d16596af27e42f2c9d5b2", - "0xa8b0c4a3a5d3dd5b6a85802039f48fc80350f6f0be2e55bdf75e3197a22f6547ff4a7dce38ef3667006128141364625b", - "0x8a5f4c17c729509309b2ac7e0dbadfbf0baabbcfb1fab02f91d055238faa3b66aae850ac9b8d7b7245f0a26bc5253c99", - "0x8bfc5d594700287da2a85a78630c616af8e555cbd7864ea604ba38eb75742fabf6aca12ed99a2439e2e046d8f048a29d", - "0xb0f91b7546613341cd95ea112e04b0963fbf7795f118c393fbdc37e37dc25244d10d987c13d6fa6eff3c4721fd0a328c", - "0xa70b6fdc66ce4c2e7f1d830b7765b7f0640ceb7306cc85778488964cbcc336ac378b74b9c4ec27358f27378380b3dec1", - "0x87387cd6b643721aac8e1a8533c27602d9632168d3a3532059163dc5e4613838bb4f07803e6852b23c58f7103d134f92", - "0x888722a5a56f5b6b00daba53991ab6fccc32a029a7f1748f779b57732285e56e09ecdb7d4848abb3dbf3e167cf8033c7", - "0xb7f5b9ffa8ba66f54cac387c197058eb9025cb3761550c78429db95f9e1e3b49c208ce86b6126c162a62939e1080895a", - "0xa53f38c068233b584211157c66d9d2452c811bcd340d8cfafd32b070c326169306975e558745d63e1617f4b4528a2399", - "0xb1c3e9b0f19993f973f038bc45be6a834b1cd3d56f112c857711c8e6c30303eeb0b205bd5dfe75e46b1f4d4bbb68fabb", - "0xa81fc28620e640ccb57dedd40c79b73b0c51565dc61097527b2341bbaa3e1c9ccf20f9d8da1c16704e881b24df0b7335", - "0x910a7f4960a0ec2aae66cbe2ac98f43646b017de84ef3d486c19b7809aa16813400bc2dccfc80e09c63422a9d4d88f56", - "0xa463868e3a8c2d2a7c49850be2740e01c7892c83063d381f405282b4c521cb6e3317361abaa92042c38bb68695c10bb9", - "0x991957100ea0f66cd4ebd23d9f6bc7aa62220f6ecb71ac947cbffc6f36f7891173670977bc58a6f57b9a1e8766100c2c", - "0x961dcbd2e6cb94574a33fd48b5d87e0623411574666d5d37f4ff7dc587980e2644cf056e002746088c3c3b0ee7044510", - "0xa27cdb374cdbff217370015d78c7f5c4674ec9948339475cc80a5805979a4c6a2614b6904f943374e96bb838549ea517", - "0xa567bd4a59f9df9f5f30a70cd9f6cea7dc0e19b7fca37fef5846aeb1697dcf7925a4735367be0828f2ded5007f711f03", - "0x823937a900e3b8705b657d40470357d91eeb339324f0fed58695ad72dda7c64f2a6b7bb7ae4a20cd1b2016cb9edbdd1a", - "0xb07f2248802ba7dce15b2698a60a4896323d37ecae6666a71cdf85878094bbd4e9c0e4733bd8bc6e9c850e57727e1d86", - "0xadfcdea69c5608f02630db045e5679f9f0768fbfa9c8e97bc9cf9cafe1f747d3813e7bb1adc6085cd57102afd71db133", - "0x908153d3eb2eb2b93c15aa606531b08981bcfc8b76684c2483bf869f335f9d8773a9aa3986ee54d9392856daaf82b684", - "0x8fbb2acf533e7d6e96e9b68e77f7a1df2ea6c652cd8862b946c93c084436d7349ef4a0c453197a9769e986322e9174b5", - "0xb83cf4ddee6140c9df0a08a39bfda79c0d55516fd799c1c24b59397b87a33ea5a0885b2998dadc354cb6f65a4bd946a5", - "0x957a52cb24f19106d80d4115a8a0843d047d157c4a8535775593c1dba9be24318dd434bf43a82aa7755897f895d2ed15", - "0xad93dbc2c055f9d7e42717391cfae64962a78bddbb9fd102a05cea520654d4a9cb6634234d3a188693c87c5b4c78959e", - "0x8dc4b8e49de9b05c33d2a98973e223c01ed5745eeaada3a4c0e474cc22430644a53a60c3d6efb1212ca298c4331763f7", - "0x948b0172df27db83e70fbfdc896ed82696876ac4c51842d270d9ce1e7f1fcc9487d781eab97f40074861401b809dd7a0", - "0xace190f75cc102a79412fceebc013bda8cf329798db4b4dba658e63228ca7f141bf0849d30139ffdededf98986f3066e", - "0x8f968dd6d7e06008a1374743b965a6204c11a610ad92705e8dbe6df3c58baf36b47c5d9988e4a417c80ffd5e7725da7f", - "0xb8ba0d5b36cc41f6839543d43166a08bf512f7b56040891ab80efefc774db28c833ecd444a703c75547fa1404fa1ec22", - "0xa29944dd0e5c861eb37c744c429a0dce596cdb2e5b0b2d2438a259a0faaf3d261faee1434bd28ebb2e6adab59ff3951d", - "0x85c70422fde0ac6e7a0574512eff2a19df8049757bf78b5a7d7870848626850f17e8b0a5661e5292f3df0f613886306e", - "0xa5ff5c3ca2c70b88d15633f9c38d2e065bcfb0e447adca33301a0d4f05b761049c8f795444f11e39357fe6bc0d7f1880", - "0xa2167cdb114d7707f1010e0be9cad488fe56cef65941c35a5878a100adbe522a8abdf7eab7bc689b8727fafb174032c2", - "0xad3f526ef9ed367b2a25c95453135510472581a758760d47eb9f9b57b04f8c061152e5a792584d6ca7124dfeb7e21703", - "0x86443033ece13fd386485115765aa95673be72b0543fac2138e1488d22419591176423213ec06e5e4549a025eb6aafd8", - "0x887e4ccd58603e6c9cc99bd2740bb1db2fc4127e8d3ec9cf41bcfa3589b0fe1931ed2a6140ae1199d323d2870882ef6b", - "0xb701f7d7637662ea7024d31e94245a5f745c7ca889f4f7a8362537df82b0164eae83da5a107a21c0ca889926aa50de49", - "0xab6bc11d6049cc5945011d3973eb2dbd5a3d786b3824bc125786e734887254a6ed61fdc2a97ea34e6b37b13cd97eb781", - "0x9901a1f44122bf5aec7cea28e9405c33567eb118752edc60f3cf6c80642370f86557cbd76478d6b0ea33be92a22c746f", - "0xb9f453650996f14629642bef8fea66c90105c8523f3875d86694100f8022d4fff2915ac9f9b9efd6f425751b113d5623", - "0xa5bf9385a1c94c09ec326c49b6b603f2de987b2878faf0263ed109410536543095c07320f762fb6fe56ee72a082daed6", - "0xab003c86dd62c801cb16b727fbd1037aeacbec0f76e8abda4c6d87066cf0a33dc1c61721f2134c3b78975efe013cddb7", - "0x8dd8c580c288168f896fd7ffbcf5c8167a55d34f17b2c362d0ada0f33a08cc0568b37b01cf0cef1fd5e2c2e250fcdf7b", - "0xacfe675aca83a774d3f526ad461f0deeebfc73a15ab3d37b224f8740ac2d9df238373e6cd1f03ca78a9daa0a796c96f0", - "0xa45cf3242600fb9733dd5e0dda1994e8d37fc483885a34a76cc16bd245f6d9c8d15bef360ef59d0a2c3cd59114280b87", - "0xb64097145d97cdc8b7a84edd1da7e84f8aa44c3c2a4823e6e8485fc3a44d94cde7d7ce8bfb3da5d583386461ccb42afe", - "0xa10ec5859c274c0972ec39ac80e461c29995b35d03603dc97dc30ff826ef24c5e52d5dc9296319ffc672b9e1d57d7936", - "0x9702ee805b70a1bfac7318e8470667ee20739e3db3030bbcb9a08568e96c9c8d2af2cbeb26837c43e04997457c623486", - "0xacb3f5a663333d1b4d54dd76a23c6601fd4540e2b050ec2a7fbf0b850b6f592837155e6bee5ca942406643f98bb2ca83", - "0xa577b96723f64d2671f1253fca72df86ef3247006c92cedcfb26eba4b4f4ba71bfffe1d5eb87b0192378d0303177fdba", - "0x8c397ac56cb723df015d0ef202fe486d1acb42f8129d3e4b37125a7ff9e81aefb1e19f477d528be1e6b18e7bced27ba3", - "0xa7a6e6994324a80ee0a85e8e8cf818f5f8d16d299f21b2fca8a9f65231982584afe921e76723701abea873275ce0c15f", - "0x82c8ee7a39e49528efa60ce1cbcb3017904de6beaeb751c406b64a94aa73af72932e32b63c1d3fa22619498fc46de6bf", - "0xa1d0193ac8bdd44ffcd37092a5dcf6e775824e5dee4c0aea5bd46f2e25b312fe58e1e6b9dccf9dd14f240d7ced4fe071", - "0x82c48967f22b8aa1dc63dbda0f66ff2f40f3ca9a7b3e752e1a950dd7daadf9afd81ae1fe3d0e440259dccbc1520d4e22", - "0xa69d43e6f962b728d223f6d474a923dd13c04eb8858f7fdd2df2c25dd4d13a0a69e71132f450613e8e2d9a65938f31f5", - "0xa613b731fe0d23ebf376cb1f3707ab9b2d428d1ea3a95faca9988a1ff4fcbde0a077b38b5942590e594307acf88c9db8", - "0xa7d2f249ec666f59dc51f9c31db6168f33a94b17ab95123d4b19aa00dbe9e1cdf340dc6f64bffc6dabb11912e10edbba", - "0x8e64b8f99ada5f317c6e2fd64ac17c4d6e5314c82848efe1eb97a5a52e6bf08923360dcb44c05d3fa59a82119610a898", - "0x865d9512ec4a18ab31e4062b2ea6c43ef32c7c58d89bb0afdad9fe57dadaddd2150f78a0e85086454812855bf09f31ef", - "0xb2d23f01a0d182abcd6862ab6f4bf924ccaac399ec143fe2614908dddec102e2feb8555479bfb71ec3476cbdd71b1137", - "0xb50d176e628e06258b518be78c6dcbc3c9b2b4a1ed4ba10ee822b3ebfeaedc4fa69c61c1985e1bb20ea9f3d6df7a27e5", - "0x8174953f4023e31e39f1cc3bad674bf2f1605ec9fc053948bb60dbf2cabade885376f8c76f45b638c95fdb14f5bc562c", - "0x92b95a12d1fb1ec489943b3a2a1c8e3c8c6a30d0767125b87fb491f9d4f8de0629afa39fb5c8a84078b08bcc26e88c4c", - "0x93f4b80d76689d5936aff6cf195d579ff5328ccd0f04db42522a225f96b0bde2088706356675f185186548006940898e", - "0xa5f7f4577943741def19df611c2ad3d459c386a5e3c765eaa5a0cb6c192873675cccbe62845418dbe47d7a9822e4038b", - "0xb59bdb196d59928326572807b2ff2edfc93a28632542b270ed462567d32bc36cefc40300619aafe4cd1e91c38d6c9c30", - "0x90df4b921e13ca1e63e8a5c9968ff64bbcc5b829e3421d74bf7f678aa1dccc1db9ed9dfe5aff05539bcc5379dd59e575", - "0x837b0b6813249c456631b2f2fea9402a2303a454a114149bc35efb400813397366eabeb4477f2cfe037f722d78a5849a", - "0xab5b33ae561312d9791bcafc8faf6d65f2c4260f126f11ab5c20c7626d88f2c00177588ec62ca763a7ca44c6ed60eb0f", - "0xb0ed2e48cf650a4267c3da1378b8164cf6b774200a5898155716f85f7abda093a60b802ce549811644e5f075d2b26067", - "0x8d47a4e27f448773fa2d592f052bbdbdf30cbef152db6d8cbeb3d7b1a0dc0f2c820ed7572eacddcb51c19a8268426b33", - "0xa56ccd0961bf238ccd197e5bbf430d7c637ff6e01590febab3529776403682ee32d0a776c3dbc6581f60002dac86c38a", - "0x9163bbdbf468be88a391698ab1f40a919517beb6c780062d4bab3bf8fd42eed6546a8c743e249fd61c3c347ea60ee185", - "0x8d59f46606f063e68198457917004ae50ebb99cccb07755825782ddb25b96c3cf8973a6c5092c9db71a4b8ed075876af", - "0x8ebffeae4fef7a83d81f31a88589e05f885dd0c0b4360545b22a18369a3e6762f187ea6a173f25419e70031861936463", - "0x96013c6b47119e017c8bf473b3d643d0bea1cc12d84d412c2b9f6f55f22543a6e15ff7e818e9799af43984ca2ec3bfb3", - "0xaf46ef7696d9908fb343a6754de37e31cbb41dc1a4ab8203d2a2483d1cb0dd3183e5015d8048ff146ec34a6c3f2eae21", - "0xae047ec4584a962a7ae9359292c98f4d8e0916dd98a414e2e15429ff30ffadb3e0296282f0f7e257495e8ec4bc0e5328", - "0xa16de787896a056d31e3f174418aa3882c03c879a292246a43dafb81f8e0e05564f1cd3ecfa251cdb159f63777fc6346", - "0x97d1c4a94182ada88aa3cac95520711802cd3889e3e057e99a72a69589fd222b241d35a54b04f42503756ec3c1a3d701", - "0x86be4ebe8b92f5bfceba757e1e2eb649f9803c8cb10130b88b13caab6bc04dac4e26d538b7adef68413b047ab9031252", - "0x95d4c0b08caa283ffa9e307f78db15470fca5b577189a33bcdf14c36d4ae3f571d004c5aa1e69172a4068e72b7dc25d3", - "0x965b7053a1d14f9091de5df8bf033a07b9f8d39a6d66979ab5424bbfa32b803075afc2d74e71235a0f881bacb6704689", - "0xa93e72836e2efc704f87065dac0463ddd4b063eab125d834df583d8833873f575a0179781b72aeb2a35533a34a395481", - "0xa2997d7c377060d910654550316ea7374a0329fcf30e743d613e2ebaa15b1bc6c936c2529f5466ef0e60ff53aa2b709f", - "0xaf5259d4d08617d9be068d1b79a8209497972910938831a435487395512187691d0cb021bd57eff0f694f32efc1487ab", - "0xa78b8318838b1049f308200782c4409fc6c97ca5bb6af28996eb191027c8935b7a43a41961ec046e6c8539376c1aa293", - "0xa4a6a9ec652d1c95883d21d3767b13a7e1dee73be907dacad197cfee025755db3cc7a8fb9f40146912f8a3f4c2c49c14", - "0xa8a8ab62334a3c67793fa0691a0d2e80ac1681ce64a02df93b78e4a2f6fbf3af9b160d9ca6b4e835d58ed60d8ce627d1", - "0x980c32e492464a6f36ce12ed06541e3b2eb098934c0ebccdcc984cdbfee4a506d15afe1a30a84d642322c2987d9d51a6", - "0x8ea8c1adfd73747db98705e9fe1aec441484d2e4862b84817cdf1262fcce91f56cd26073d4dd23b04f836e0962428593", - "0xb0f20edb8552d2b08613cb574e9de1c4dce1eae55ba9ab05dd7f2ca3590a7496d63d55af88b3dff881e16d8bf9147037", - "0x915af4e9a28b12ea126668db7de6ff0c2cc9935b138022fadbb1f385f327fdc927388c945b93d252cb51803c242f7e1f", - "0xa553e08f67c61ecc5c8955f7251cfe18cde02e6170845e70db1761bc00f42a31cc10de26d4c904200166311f32a3e56a", - "0x99f4b066a805512e16addb0bcb08d76f017213ca6aa6afb5c2fc621805c4e123bbe0aa85eb5a0f89d3112635905093e0", - "0x9236c5b0f4d2e58033735d7bd5d53ccbe82c05aa290149286a16a318043ffedfdca9d2d07817601d4216fed50c1082f0", - "0x90a4c7898c58c9af83f94095f6afd5ca65664f16c0af4c8121407cf0864fdeb09958500b2bd0b78950aa9051e3480928", - "0xa589666688e6e7f8e4d99b84d21a1f9ebfe681fad346a237de20a11a2b210eb99c4d3e2f645b23a85c93bcccd51f63f8", - "0xa010849ed4df0e3a8eb61f7fd114d05a8669bfa36cb95d089bb1964ea8f5fa26be0cd10fcd9b38b259722c5a14ba3a1f", - "0xb21f974a10a2dfe9987370ef4b6af294cbe8f4bbe35ce9400d0538c5f71287498054d73606e26f93e2f19584aa18e285", - "0x81fea77bad05c3bfa8d5d8409b189fd5c759613cd69ddb19b2d46673d4df944b2c7293989f79580d229d20959c74b18f", - "0xac962b0819a03d2a2fa42c492f54c3d293c6d5ead403c50f7a1ccc2faad58beeb0dfe888a928e505fea9e09807e13a23", - "0xb78b913f2ad9622d20c175ed23f80f235b5336343b0353f82383fa6aab99aef77cb489df822bb168e56496c1854f623d", - "0x8c06abf72913ffcb6b59bb8201c00034b447011880733aa6b563acc423e90bdae19f2a7a286943b55488fc863d09269c", - "0xb34168972fcd90c78286bfc6078ce559e3c216d8d1885ecd5044bf9f23a4ad15bfc9830aabb4273472c43e2980048586", - "0x88350e0ffe9b5576dd0afabc6d8445d25b2b9a0945c71e6b9a5587649ac5d95cbd722db5ea1e65d3fb8230c794fda5fc", - "0xa3bec1fc362a33f38795158f1b869e9ee857a7f2e1acb92c6a7dcfffa64443a5b7f6dffb656452e7f855051ae849be3e", - "0xa21f64c49334720883e1243a27575648f53637a644c308ff24f5c26bfe65cc690a5e46b8e432171f31c4229aff4db416", - "0x85dcd8ebef8f7f44372912b4a3a0dfe66a56f16c3757a8ec01b71aa81eeda9f8e5082f92e3ae8cbf3c1eddf5e6ffed03", - "0xaf3c1a770f34f2acc504f38ffa7a18cc4b38f8f84f310cdf2d7346b18824ebc7c7663cc0e00b44cfb5494fe6081aff84", - "0xa5dc7c5989fb5cea87c2d878d8436d858458171b667ab5200dc2cafd8af2d9c2bfe2515b0c002cdc9c3e61e4cfe4b444", - "0xb136dcd4577ef3a3a8bc946cf2ec79d3fab301114ee2a692a6c219e252c9128db63fedebc6bd6695a8ae58e7d28501e8", - "0x91d3a1ba625632d59dc963ed54c0310d0447df3e1d9151299722d10f8b26161bb73e0020d408b748fa6fd1db51adabd3", - "0xb89f1a2497b04b3f1b018dc88b52133e1d7470f97f846965fbc934d34dbc8d38f2d8b07d218e62c609de33b61831cc9c", - "0x92fec43fc5af23fda5dfab78234f5ea7813d8de34f8ec269c5fa35dd916b9143ff0033d35e7a284c0ef4f41047e98fe4", - "0x8a0b89cd35ecf5b6db26c39705b416a4b950aafaf3b00a9d75f864955e9074aac03826ff9393456871107563eacc024a", - "0xb04db63ebce71161fd42bb878e89155bc9e887329e164481077c6a1db092477370a362810d291444f5463437e0ec5906", - "0x88ecd5275592f8b133928770e2273a0e0c23424d72b9e505130b0599ba28d1c11eceb2318a49dee054a8ba0971874357", - "0x8eb0271197fb9f1eeedaadd8eb603b8753ada11abf04ce90950034f51f756ed6ec6a6182a47e1f3ae51e3a1f3ecdf467", - "0x81cc996bc6b12ac56a1ae3add4483ae4f2e2284e9d304f5fa1723231d0e5b196813b6dbbc20b70f5d51fcbb65bf284bd", - "0x8e1d94ecca2928c4c68fbc13199b6281f8782c75c119b763e0eb122f81c35f8fd079d1bd76b498393371a08dac95dd1d", - "0xa92f98bc09f8a91fd165bb8d05e3b5ec50121d760b353d7e4ea23c0e04ff29614ad9028a4a16bdfe323f2af647e515ce", - "0x82e8dc99a14da065200699e458150dc6d49ec0e098bbd91ab8f1fc1767e8732f53855499c8f24da7b9dd681100633be0", - "0xa67b6cb4eeab4fe5f4ebdf5649b7d61bf5fbf7b6cd2d357fdf348ba32dbfa9d6830b1265ea76a1c666b266e30d119182", - "0xa64e3af1d0e600bde18d7f53a4e8d89d296eab4bcd9cc3a9f476c5b8425e6e8082066948fbf40689f626e27e4830edfd", - "0x8f66b59782cbccdb31cb1bb2d6385307633ba4db31c375c0a8424a497b2fdf309e7ec1c95490324b9a909bb43041998d", - "0xb93f4817eb1d91ac78eb650c110f7c29df40df47ed1d5d3209c3abe5cf59a5e7aee3d1cd232bcce77e157b1a9daa2557", - "0x864b6cd72029640fc041fd3efa71bb210edb40589a26981724b944192c3c2543352b4b757836a7b0b13bf830f22b8374", - "0x9064a0ac94f2f133e287b796363f6d27e9646a8b531cd9ac0eb45b99fa73f327238161a43f7c4fc914036d69abd1473f", - "0xa40e60d4aaf9f50f7bfebd0e714fcfeba64e0f7ccaa0f4829144a7efeaf15a7cda2d62d771a76f98a45cda9196b0522b" + "g1_lagrange": [ + "0xa0413c0dcafec6dbc9f47d66785cf1e8c981044f7d13cfe3e4fcbb71b5408dfde6312493cb3c1d30516cb3ca88c03654", + "0x8b997fb25730d661918371bb41f2a6e899cac23f04fc5365800b75433c0a953250e15e7a98fb5ca5cc56a8cd34c20c57", + "0x83302852db89424d5699f3f157e79e91dc1380f8d5895c5a772bb4ea3a5928e7c26c07db6775203ce33e62a114adaa99", + "0xa759c48b7e4a685e735c01e5aa6ef9c248705001f470f9ad856cd87806983e917a8742a3bd5ee27db8d76080269b7c83", + "0x967f8dc45ebc3be14c8705f43249a30ff48e96205fb02ae28daeab47b72eb3f45df0625928582aa1eb4368381c33e127", + "0xa418eb1e9fb84cb32b370610f56f3cb470706a40ac5a47c411c464299c45c91f25b63ae3fcd623172aa0f273c0526c13", + "0x8f44e3f0387293bc7931e978165abbaed08f53acd72a0a23ac85f6da0091196b886233bcee5b4a194db02f3d5a9b3f78", + "0x97173434b336be73c89412a6d70d416e170ea355bf1956c32d464090b107c090ef2d4e1a467a5632fbc332eeb679bf2d", + "0xa24052ad8d55ad04bc5d951f78e14213435681594110fd18173482609d5019105b8045182d53ffce4fc29fc8810516c1", + "0xb950768136b260277590b5bec3f56bbc2f7a8bc383d44ce8600e85bf8cf19f479898bcc999d96dfbd2001ede01d94949", + "0x92ab8077871037bd3b57b95cbb9fb10eb11efde9191690dcac655356986fd02841d8fdb25396faa0feadfe3f50baf56d", + "0xa79b096dff98038ac30f91112dd14b78f8ad428268af36d20c292e2b3b6d9ed4fb28480bb04e465071cc67d05786b6d1", + "0xb9ff71461328f370ce68bf591aa7fb13027044f42a575517f3319e2be4aa4843fa281e756d0aa5645428d6dfa857cef2", + "0x8d765808c00b3543ff182e2d159c38ae174b12d1314da88ea08e13bd9d1c37184cb515e6bf6420531b5d41767987d7ce", + "0xb8c9a837d20c3b53e6f578e4a257bb7ef8fc43178614ec2a154915b267ad2be135981d01ed2ee1b5fbd9d9bb27f0800a", + "0xa9773d92cf23f65f98ef68f6cf95c72b53d0683af2f9bf886bb9036e4a38184b1131b26fd24397910b494fbef856f3aa", + "0xb41ebe38962d112da4a01bf101cb248d808fbd50aaf749fc7c151cf332032eb3e3bdbd716db899724b734d392f26c412", + "0x90fbb030167fb47dcc13d604a726c0339418567c1d287d1d87423fa0cb92eec3455fbb46bcbe2e697144a2d3972142e4", + "0xb11d298bd167464b35fb923520d14832bd9ed50ed841bf6d7618424fd6f3699190af21759e351b89142d355952149da1", + "0x8bc36066f69dc89f7c4d1e58d67497675050c6aa002244cebd9fc957ec5e364c46bab4735ea3db02b73b3ca43c96e019", + "0xab7ab92c5d4d773068e485aa5831941ebd63db7118674ca38089635f3b4186833af2455a6fb9ed2b745df53b3ce96727", + "0xaf191ca3089892cb943cd97cf11a51f38e38bd9be50844a4e8da99f27e305e876f9ed4ab0628e8ae3939066b7d34a15f", + "0xa3204c1747feabc2c11339a542195e7cb6628fd3964f846e71e2e3f2d6bb379a5e51700682ea1844eba12756adb13216", + "0x903a29883846b7c50c15968b20e30c471aeac07b872c40a4d19eb1a42da18b649d5bbfde4b4cf6225d215a461b0deb6d", + "0x8e6e9c15ffbf1e16e5865a5fef7ed751dc81957a9757b535cb38b649e1098cda25d42381dc4f776778573cdf90c3e6e0", + "0xa8f6dd26100b512a8c96c52e00715c4b2cb9ac457f17aed8ffe1cf1ea524068fe5a1ddf218149845fc1417b789ecfc98", + "0xa5b0ffc819451ea639cfd1c18cbc9365cc79368d3b2e736c0ae54eba2f0801e6eb0ee14a5f373f4a70ca463bdb696c09", + "0x879f91ccd56a1b9736fbfd20d8747354da743fb121f0e308a0d298ff0d9344431890e41da66b5009af3f442c636b4f43", + "0x81bf3a2d9755e206b515a508ac4d1109bf933c282a46a4ae4a1b4cb4a94e1d23642fad6bd452428845afa155742ade7e", + "0x8de778d4742f945df40004964e165592f9c6b1946263adcdd5a88b00244bda46c7bb49098c8eb6b3d97a0dd46148a8ca", + "0xb7a57b21d13121907ee28c5c1f80ee2e3e83a3135a8101e933cf57171209a96173ff5037f5af606e9fd6d066de6ed693", + "0xb0877d1963fd9200414a38753dffd9f23a10eb3198912790d7eddbc9f6b477019d52ddd4ebdcb9f60818db076938a5a9", + "0x88da2d7a6611bc16adc55fc1c377480c828aba4496c645e3efe0e1a67f333c05a0307f7f1d2df8ac013602c655c6e209", + "0x95719eb02e8a9dede1a888c656a778b1c69b7716fbe3d1538fe8afd4a1bc972183c7d32aa7d6073376f7701df80116d8", + "0x8e8a1ca971f2444b35af3376e85dccda3abb8e8e11d095d0a4c37628dfe5d3e043a377c3de68289ef142e4308e9941a0", + "0xb720caaff02f6d798ac84c4f527203e823ff685869e3943c979e388e1c34c3f77f5c242c6daa7e3b30e511aab917b866", + "0x86040d55809afeec10e315d1ad950d269d37cfee8c144cd8dd4126459e3b15a53b3e68df5981df3c2346d23c7b4baaf4", + "0x82d8cabf13ab853db0377504f0aec00dba3a5cd3119787e8ad378ddf2c40b022ecfc67c642b7acc8c1e3dd03ab50993e", + "0xb8d873927936719d2484cd03a6687d65697e17dcf4f0d5aed6f5e4750f52ef2133d4645894e7ebfc4ef6ce6788d404c8", + "0xb1235594dbb15b674a419ff2b2deb644ad2a93791ca05af402823f87114483d6aa1689b7a9bea0f547ad12fe270e4344", + "0xa53fda86571b0651f5affb74312551a082fffc0385cfd24c1d779985b72a5b1cf7c78b42b4f7e51e77055f8e5e915b00", + "0xb579adcfd9c6ef916a5a999e77a0cb21d378c4ea67e13b7c58709d5da23a56c2e54218691fc4ac39a4a3d74f88cc31f7", + "0xab79e584011713e8a2f583e483a91a0c2a40771b77d91475825b5acbea82db4262132901cb3e4a108c46d7c9ee217a4e", + "0xa0fe58ea9eb982d7654c8aaf9366230578fc1362f6faae0594f8b9e659bcb405dff4aac0c7888bbe07f614ecf0d800a6", + "0x867e50e74281f28ecd4925560e2e7a6f8911b135557b688254623acce0dbc41e23ac3e706a184a45d54c586edc416eb0", + "0x89f81b61adda20ea9d0b387a36d0ab073dc7c7cbff518501962038be19867042f11fcc7ff78096e5d3b68c6d8dc04d9b", + "0xa58ee91bb556d43cf01f1398c5811f76dc0f11efdd569eed9ef178b3b0715e122060ec8f945b4dbf6eebfa2b90af6fa6", + "0xac460be540f4c840def2eef19fc754a9af34608d107cbadb53334cf194cc91138d53b9538fcd0ec970b5d4aa455b224a", + "0xb09b91f929de52c09d48ca0893be6eb44e2f5210a6c394689dc1f7729d4be4e11d0474b178e80cea8c2ac0d081f0e811", + "0x8d37a442a76b06a02a4e64c2504aea72c8b9b020ab7bcc94580fe2b9603c7c50d7b1e9d70d2a7daea19c68667e8f8c31", + "0xa9838d4c4e3f3a0075a952cf7dd623307ec633fcc81a7cf9e52e66c31780de33dbb3d74c320dc7f0a4b72f7a49949515", + "0xa44766b6251af458fe4f5f9ed1e02950f35703520b8656f09fc42d9a2d38a700c11a7c8a0436ac2e5e9f053d0bb8ff91", + "0xad78d9481c840f5202546bea0d13c776826feb8b1b7c72e83d99a947622f0bf38a4208551c4c41beb1270d7792075457", + "0xb619ffa8733b470039451e224b777845021e8dc1125f247a4ff2476cc774657d0ff9c5279da841fc1236047de9d81c60", + "0xaf760b0a30a1d6af3bc5cd6686f396bd41779aeeb6e0d70a09349bd5da17ca2e7965afc5c8ec22744198fbe3f02fb331", + "0xa0cc209abdb768b589fcb7b376b6e1cac07743288c95a1cf1a0354b47f0cf91fca78a75c1fcafa6f5926d6c379116608", + "0x864add673c89c41c754eeb3cd8dcff5cdde1d739fce65c30e474a082bb5d813cba6412e61154ce88fdb6c12c5d9be35b", + "0xb091443b0ce279327dc37cb484e9a5b69b257a714ce21895d67539172f95ffa326903747b64a3649e99aea7bb10d03f7", + "0xa8c452b8c4ca8e0a61942a8e08e28f17fb0ef4c5b018b4e6d1a64038280afa2bf1169202f05f14af24a06ca72f448ccd", + "0xa23c24721d18bc48d5dcf70effcbef89a7ae24e67158d70ae1d8169ee75d9a051d34b14e9cf06488bac324fe58549f26", + "0x92a730e30eb5f3231feb85f6720489dbb1afd42c43f05a1610c6b3c67bb949ec8fde507e924498f4ffc646f7b07d9123", + "0x8dbe5abf4031ec9ba6bb06d1a47dd1121fb9e03b652804069250967fd5e9577d0039e233441b7f837a7c9d67ba18c28e", + "0xaa456bcfef6a21bb88181482b279df260297b3778e84594ebddbdf337e85d9e3d46ca1d0b516622fb0b103df8ec519b7", + "0xa3b31ae621bd210a2b767e0e6f22eb28fe3c4943498a7e91753225426168b9a26da0e02f1dc5264da53a5ad240d9f51b", + "0xaa8d66857127e6e71874ce2202923385a7d2818b84cb73a6c42d71afe70972a70c6bdd2aad1a6e8c5e4ca728382a8ea8", + "0xac7e8e7a82f439127a5e40558d90d17990f8229852d21c13d753c2e97facf077cf59582b603984c3dd3faebd80aff4f5", + "0x93a8bcf4159f455d1baa73d2ef2450dcd4100420de84169bbe28b8b7a5d1746273f870091a87a057e834f754f34204b1", + "0x89d0ebb287c3613cdcae7f5acc43f17f09c0213fc40c074660120b755d664109ffb9902ed981ede79e018ddb0c845698", + "0xa87ccbfad431406aadbee878d9cf7d91b13649d5f7e19938b7dfd32645a43b114eef64ff3a13201398bd9b0337832e5a", + "0x833c51d0d0048f70c3eefb4e70e4ff66d0809c41838e8d2c21c288dd3ae9d9dfaf26d1742bf4976dab83a2b381677011", + "0x8bcd6b1c3b02fffead432e8b1680bad0a1ac5a712d4225e220690ee18df3e7406e2769e1f309e2e803b850bc96f0e768", + "0xb61e3dbd88aaf4ff1401521781e2eea9ef8b66d1fac5387c83b1da9e65c2aa2a56c262dea9eceeb4ad86c90211672db0", + "0x866d3090db944ecf190dd0651abf67659caafd31ae861bab9992c1e3915cb0952da7c561cc7e203560a610f48fae633b", + "0xa5e8971543c14274a8dc892b0be188c1b4fbc75c692ed29f166e0ea80874bc5520c2791342b7c1d2fb5dd454b03b8a5b", + "0x8f2f9fc50471bae9ea87487ebd1bc8576ef844cc42d606af5c4c0969670fdf2189afd643e4de3145864e7773d215f37f", + "0xb1bb0f2527db6d51f42b9224383c0f96048bbc03d469bf01fe1383173ef8b1cc9455d9dd8ba04d46057f46949bfc92b5", + "0xaa7c99d906b4d7922296cfe2520473fc50137c03d68b7865c5bfb8adbc316b1034310ec4b5670c47295f4a80fb8d61e9", + "0xa5d1da4d6aba555919df44cbaa8ff79378a1c9e2cfdfbf9d39c63a4a00f284c5a5724e28ecbc2d9dba27fe4ee5018bd5", + "0xa8db53224f70af4d991b9aae4ffe92d2aa5b618ad9137784b55843e9f16cefbfd25ada355d308e9bbf55f6d2f7976fb3", + "0xb6536c4232bb20e22af1a8bb12de76d5fec2ad9a3b48af1f38fa67e0f8504ef60f305a73d19385095bb6a9603fe29889", + "0x87f7e371a1817a63d6838a8cf4ab3a8473d19ce0d4f40fd013c03d5ddd5f4985df2956531cc9f187928ef54c68f4f9a9", + "0xae13530b1dbc5e4dced9d909ea61286ec09e25c12f37a1ed2f309b0eb99863d236c3b25ed3484acc8c076ad2fa8cd430", + "0x98928d850247c6f7606190e687d5c94a627550198dbdbea0161ef9515eacdb1a0f195cae3bb293112179082daccf8b35", + "0x918528bb8e6a055ad4db6230d3a405e9e55866da15c4721f5ddd1f1f37962d4904aad7a419218fe6d906fe191a991806", + "0xb71e31a06afe065773dd3f4a6e9ef81c3292e27a3b7fdfdd452d03e05af3b6dd654c355f7516b2a93553360c6681a73a", + "0x8870b83ab78a98820866f91ac643af9f3ff792a2b7fda34185a9456a63abdce42bfe8ad4dc67f08a6392f250d4062df4", + "0x91eea1b668e52f7a7a5087fabf1cab803b0316f78d9fff469fbfde2162f660c250e4336a9eea4cb0450bd30ac067bc8b", + "0x8b74990946de7b72a92147ceac1bd9d55999a8b576e8df68639e40ed5dc2062cfcd727903133de482b6dca19d0aaed82", + "0x8ebad537fece090ebbab662bdf2618e21ca30cf6329c50935e8346d1217dcbe3c1fe1ea28efca369c6003ce0a94703c1", + "0xa8640479556fb59ebd1c40c5f368fbd960932fdbb782665e4a0e24e2bdb598fc0164ce8c0726d7759cfc59e60a62e182", + "0xa9a52a6bf98ee4d749f6d38be2c60a6d54b64d5cbe4e67266633dc096cf28c97fe998596707d31968cbe2064b72256bf", + "0x847953c48a4ce6032780e9b39d0ed4384e0be202c2bbe2dfda3910f5d87aa5cd3c2ffbfcfae4dddce16d6ab657599b95", + "0xb6f6e1485d3ec2a06abaecd23028b200b2e4a0096c16144d07403e1720ff8f9ba9d919016b5eb8dc5103880a7a77a1d3", + "0x98dfc2065b1622f596dbe27131ea60bef7a193b12922cecb27f8c571404f483014f8014572e86ae2e341ab738e4887ef", + "0xacb0d205566bacc87bbe2e25d10793f63f7a1f27fd9e58f4f653ceae3ffeba511eaf658e068fad289eeb28f9edbeb35b", + "0xae4411ed5b263673cee894c11fe4abc72a4bf642d94022a5c0f3369380fcdfc1c21e277f2902972252503f91ada3029a", + "0xac4a7a27ba390a75d0a247d93d4a8ef1f0485f8d373a4af4e1139369ec274b91b3464d9738eeaceb19cd6f509e2f8262", + "0x87379c3bf231fdafcf6472a79e9e55a938d851d4dd662ab6e0d95fd47a478ed99e2ad1e6e39be3c0fc4f6d996a7dd833", + "0x81316904b035a8bcc2041199a789a2e6879486ba9fddcba0a82c745cc8dd8374a39e523b91792170cd30be7aa3005b85", + "0xb8206809c6cd027ed019f472581b45f7e12288f89047928ba32b4856b6560ad30395830d71e5e30c556f6f182b1fe690", + "0x88d76c028f534a62e019b4a52967bb8642ede6becfa3807be68fdd36d366fc84a4ac8dc176e80a68bc59eb62caf5dff9", + "0x8c3b8be685b0f8aad131ee7544d0e12f223f08a6f8edaf464b385ac644e0ddc9eff7cc7cb5c1b50ab5d71ea0f41d2213", + "0x8d91410e004f76c50fdc05784157b4d839cb5090022c629c7c97a5e0c3536eeafee17a527b54b1165c3cd81774bb54ce", + "0xb25c2863bc28ec5281ce800ddf91a7e1a53f4c6d5da1e6c86ef4616e93bcf55ed49e297216d01379f5c6e7b3c1e46728", + "0x865f7b09ac3ca03f20be90c48f6975dd2588838c2536c7a3532a6aa5187ed0b709cd03d91ff4048061c10d0aa72b69ce", + "0xb3f7477c90c11596eb4f8bbf34adbcb832638c4ff3cdd090d4d477ee50472ac9ddaf5be9ad7eca3f148960d362bbd098", + "0x8db35fd53fca04faecd1c76a8227160b3ab46ac1af070f2492445a19d8ff7c25bbaef6c9fa0c8c088444561e9f7e4eb2", + "0xa478b6e9d058a2e01d2fc053b739092e113c23a6a2770a16afbef044a3709a9e32f425ace9ba7981325f02667c3f9609", + "0x98caa6bd38916c08cf221722a675a4f7577f33452623de801d2b3429595f988090907a7e99960fff7c076d6d8e877b31", + "0xb79aaaacefc49c3038a14d2ac468cfec8c2161e88bdae91798d63552cdbe39e0e02f9225717436b9b8a40a022c633c6e", + "0x845a31006c680ee6a0cc41d3dc6c0c95d833fcf426f2e7c573fa15b2c4c641fbd6fe5ebb0e23720cc3467d6ee1d80dc4", + "0xa1bc287e272cf8b74dbf6405b3a5190883195806aa351f1dc8e525aa342283f0a35ff687e3b434324dedee74946dd185", + "0xa4fd2dc8db75d3783a020856e2b3aa266dc6926e84f5c491ef739a3bddd46dc8e9e0fc1177937839ef1b18d062ffbb9e", + "0xacbf0d3c697f57c202bb8c5dc4f3fc341b8fc509a455d44bd86acc67cad2a04495d5537bcd3e98680185e8aa286f2587", + "0xa5caf423a917352e1b8e844f5968a6da4fdeae467d10c6f4bbd82b5eea46a660b82d2f5440d3641c717b2c3c9ed0be52", + "0x8a39d763c08b926599ab1233219c49c825368fad14d9afc7c0c039224d37c00d8743293fd21645bf0b91eaf579a99867", + "0xb2b53a496def0ba06e80b28f36530fbe0fb5d70a601a2f10722e59abee529369c1ae8fd0f2db9184dd4a2519bb832d94", + "0xa73980fcef053f1b60ebbb5d78ba6332a475e0b96a0c724741a3abf3b59dd344772527f07203cf4c9cb5155ebed81fa0", + "0xa070d20acce42518ece322c9db096f16aed620303a39d8d5735a0df6e70fbeceb940e8d9f5cc38f3314b2240394ec47b", + "0xa50cf591f522f19ca337b73089557f75929d9f645f3e57d4f241e14cdd1ea3fb48d84bcf05e4f0377afbb789fbdb5d20", + "0x82a5ffce451096aca8eeb0cd2ae9d83db3ed76da3f531a80d9a70a346359bf05d74863ce6a7c848522b526156a5e20cd", + "0x88e0e84d358cbb93755a906f329db1537c3894845f32b9b0b691c29cbb455373d9452fadd1e77e20a623f6eaf624de6f", + "0xaa07ac7b84a6d6838826e0b9e350d8ec75e398a52e9824e6b0da6ae4010e5943fec4f00239e96433f291fef9d1d1e609", + "0xac8887bf39366034bc63f6cc5db0c26fd27307cbc3d6cce47894a8a019c22dd51322fb5096edc018227edfafc053a8f6", + "0xb7d26c26c5b33f77422191dca94977588ab1d4b9ce7d0e19c4a3b4cd1c25211b78c328dbf81e755e78cd7d1d622ad23e", + "0x99a676d5af49f0ba44047009298d8474cabf2d5bca1a76ba21eff7ee3c4691a102fdefea27bc948ccad8894a658abd02", + "0xb0d09a91909ab3620c183bdf1d53d43d39eb750dc7a722c661c3de3a1a5d383ad221f71bae374f8a71867505958a3f76", + "0x84681a883de8e4b93d68ac10e91899c2bbb815ce2de74bb48a11a6113b2a3f4df8aceabda1f5f67bc5aacac8c9da7221", + "0x9470259957780fa9b43521fab3644f555f5343281c72582b56d2efd11991d897b3b481cafa48681c5aeb80c9663b68f7", + "0xab1b29f7ece686e6fa968a4815da1d64f3579fed3bc92e1f3e51cd13a3c076b6cf695ed269d373300a62463dc98a4234", + "0x8ab415bfcd5f1061f7687597024c96dd9c7cb4942b5989379a7a3b5742f7d394337886317659cbeacaf030234a24f972", + "0xb9b524aad924f9acc63d002d617488f31b0016e0f0548f050cada285ce7491b74a125621638f19e9c96eabb091d945be", + "0x8c4c373e79415061837dd0def4f28a2d5d74d21cb13a76c9049ad678ca40228405ab0c3941df49249847ecdefc1a5b78", + "0xa8edf4710b5ab2929d3db6c1c0e3e242261bbaa8bcec56908ddadd7d2dad2dca9d6eb9de630b960b122ebeea41040421", + "0x8d66bb3b50b9df8f373163629f9221b3d4b6980a05ea81dc3741bfe9519cf3ebba7ab98e98390bae475e8ede5821bd5c", + "0x8d3c21bae7f0cfb97c56952bb22084b58e7bb718890935b73103f33adf5e4d99cd262f929c6eeab96209814f0dbae50a", + "0xa5c66cfab3d9ebf733c4af24bebc97070e7989fe3c73e79ac85fb0e4d40ae44fb571e0fad4ad72560e13ed453900d14f", + "0x9362e6b50b43dbefbc3254471372297b5dcce809cd3b60bf74a1268ab68bdb50e46e462cbd78f0d6c056330e982846af", + "0x854630d08e3f0243d570cc2e856234cb4c1a158d9c1883bf028a76525aaa34be897fe918d5f6da9764a3735fa9ebd24a", + "0x8c7d246985469ff252c3f4df6c7c9196fc79f05c1c66a609d84725c78001d0837c7a7049394ba5cf7e863e2d58af8417", + "0xae050271e01b528925302e71903f785b782f7bf4e4e7a7f537140219bc352dc7540c657ed03d3a297ad36798ecdb98cd", + "0x8d2ae9179fcf2b0c69850554580b52c1f4a5bd865af5f3028f222f4acad9c1ad69a8ef6c7dc7b03715ee5c506b74325e", + "0xb8ef8de6ce6369a8851cd36db0ccf00a85077e816c14c4e601f533330af9e3acf0743a95d28962ed8bfcfc2520ef3cfe", + "0xa6ecad6fdfb851b40356a8b1060f38235407a0f2706e7b8bb4a13465ca3f81d4f5b99466ac2565c60af15f022d26732e", + "0x819ff14cdea3ab89d98e133cd2d0379361e2e2c67ad94eeddcdb9232efd509f51d12f4f03ebd4dd953bd262a886281f7", + "0x8561cd0f7a6dbcddd83fcd7f472d7dbcba95b2d4fb98276f48fccf69f76d284e626d7e41314b633352df8e6333fd52a1", + "0xb42557ccce32d9a894d538c48712cb3e212d06ac05cd5e0527ccd2db1078ee6ae399bf6a601ffdab1f5913d35fc0b20c", + "0x89b4008d767aad3c6f93c349d3b956e28307311a5b1cec237e8d74bb0dee7e972c24f347fd56afd915a2342bd7bc32f0", + "0x877487384b207e53f5492f4e36c832c2227f92d1bb60542cfeb35e025a4a7afc2b885fae2528b33b40ab09510398f83e", + "0x8c411050b63c9053dd0cd81dacb48753c3d7f162028098e024d17cd6348482703a69df31ad6256e3d25a8bbf7783de39", + "0xa8506b54a88d17ac10fb1b0d1fe4aa40eae7553a064863d7f6b52ccc4236dd4b82d01dca6ba87da9a239e3069ba879fb", + "0xb1a24caef9df64750c1350789bb8d8a0db0f39474a1c74ea9ba064b1516db6923f00af8d57c632d58844fb8786c3d47a", + "0x959d6e255f212b0708c58a2f75cb1fe932248c9d93424612c1b8d1e640149656059737e4db2139afd5556bcdacf3eda2", + "0x84525af21a8d78748680b6535bbc9dc2f0cf9a1d1740d12f382f6ecb2e73811d6c1da2ad9956070b1a617c61fcff9fe5", + "0xb74417d84597a485d0a8e1be07bf78f17ebb2e7b3521b748f73935b9afbbd82f34b710fb7749e7d4ab55b0c7f9de127d", + "0xa4a9aecb19a6bab167af96d8b9d9aa5308eab19e6bfb78f5a580f9bf89bdf250a7b52a09b75f715d651cb73febd08e84", + "0x9777b30be2c5ffe7d29cc2803a562a32fb43b59d8c3f05a707ab60ec05b28293716230a7d264d7cd9dd358fc031cc13e", + "0x95dce7a3d4f23ac0050c510999f5fbf8042f771e8f8f94192e17bcbfa213470802ebdbe33a876cb621cf42e275cbfc8b", + "0xb0b963ebcbbee847ab8ae740478544350b3ac7e86887e4dfb2299ee5096247cd2b03c1de74c774d9bde94ae2ee2dcd59", + "0xa4ab20bafa316030264e13f7ef5891a2c3b29ab62e1668fcb5881f50a9acac6adbe3d706c07e62f2539715db768f6c43", + "0x901478a297669d608e406fe4989be75264b6c8be12169aa9e0ad5234f459ca377f78484ffd2099a2fe2db5e457826427", + "0x88c76e5c250810c057004a03408b85cd918e0c8903dc55a0dd8bb9b4fc2b25c87f9b8cf5943eb19fbbe99d36490050c5", + "0x91607322bbad4a4f03fc0012d0821eff5f8c516fda45d1ec1133bface6f858bf04b25547be24159cab931a7aa08344d4", + "0x843203e07fce3c6c81f84bc6dc5fb5e9d1c50c8811ace522dc66e8658433a0ef9784c947e6a62c11bf705307ef05212e", + "0x91dd8813a5d6dddcda7b0f87f672b83198cd0959d8311b2b26fb1fae745185c01f796fbd03aad9db9b58482483fdadd8", + "0x8d15911aacf76c8bcd7136e958febd6963104addcd751ce5c06b6c37213f9c4fb0ffd4e0d12c8e40c36d658999724bfd", + "0x8a36c5732d3f1b497ebe9250610605ee62a78eaa9e1a45f329d09aaa1061131cf1d9df00f3a7d0fe8ad614a1ff9caaae", + "0xa407d06affae03660881ce20dab5e2d2d6cddc23cd09b95502a9181c465e57597841144cb34d22889902aff23a76d049", + "0xb5fd856d0578620a7e25674d9503be7d97a2222900e1b4738c1d81ff6483b144e19e46802e91161e246271f90270e6cf", + "0x91b7708869cdb5a7317f88c0312d103f8ce90be14fb4f219c2e074045a2a83636fdc3e69e862049fc7c1ef000e832541", + "0xb64719cc5480709d1dae958f1d3082b32a43376da446c8f9f64cb02a301effc9c34d9102051733315a8179aed94d53cc", + "0x94347a9542ff9d18f7d9eaa2f4d9b832d0e535fe49d52aa2de08aa8192400eddabdb6444a2a78883e27c779eed7fdf5a", + "0x840ef44a733ff1376466698cd26f82cf56bb44811e196340467f932efa3ae1ef9958a0701b3b032f50fd9c1d2aed9ab5", + "0x90ab3f6f67688888a31ffc2a882bb37adab32d1a4b278951a21646f90d03385fc976715fc639a785d015751171016f10", + "0xb56f35d164c24b557dbcbc8a4bfa681ec916f8741ffcb27fb389c164f4e3ed2be325210ef5bdaeae7a172ca9599ab442", + "0xa7921a5a80d7cf6ae81ba9ee05e0579b18c20cd2852762c89d6496aa4c8ca9d1ca2434a67b2c16d333ea8e382cdab1e3", + "0xa506bcfbd7e7e5a92f68a1bd87d07ad5fe3b97aeee40af2bf2cae4efcd77fff03f872732c5b7883aa6584bee65d6f8cb", + "0xa8c46cff58931a1ce9cbe1501e1da90b174cddd6d50f3dfdfb759d1d4ad4673c0a8feed6c1f24c7af32865a7d6c984e5", + "0xb45686265a83bff69e312c5149db7bb70ac3ec790dc92e392b54d9c85a656e2bf58596ce269f014a906eafc97461aa5f", + "0x8d4009a75ccb2f29f54a5f16684b93202c570d7a56ec1a8b20173269c5f7115894f210c26b41e8d54d4072de2d1c75d0", + "0xaef8810af4fc676bf84a0d57b189760ddc3375c64e982539107422e3de2580b89bd27aa6da44e827b56db1b5555e4ee8", + "0x888f0e1e4a34f48eb9a18ef4de334c27564d72f2cf8073e3d46d881853ac1424d79e88d8ddb251914890588937c8f711", + "0xb64b0aa7b3a8f6e0d4b3499fe54e751b8c3e946377c0d5a6dbb677be23736b86a7e8a6be022411601dd75012012c3555", + "0x8d57776f519f0dd912ea14f79fbab53a30624e102f9575c0bad08d2dc754e6be54f39b11278c290977d9b9c7c0e1e0ad", + "0xa018fc00d532ceb2e4de908a15606db9b6e0665dd77190e2338da7c87a1713e6b9b61554e7c1462f0f6d4934b960b15c", + "0x8c932be83ace46f65c78e145b384f58e41546dc0395270c1397874d88626fdeda395c8a289d602b4c312fe98c1311856", + "0x89174838e21639d6bdd91a0621f04dc056907b88e305dd66e46a08f6d65f731dea72ae87ca5e3042d609e8de8de9aa26", + "0xb7b7f508bb74f7a827ac8189daa855598ff1d96fa3a02394891fd105d8f0816224cd50ac4bf2ed1cf469ace516c48184", + "0xb31877ad682583283baadd68dc1bebd83f5748b165aadd7fe9ef61a343773b88bcd3a022f36d6c92f339b7bfd72820a9", + "0xb79d77260b25daf9126dab7a193df2d7d30542786fa1733ffaf6261734770275d3ca8bae1d9915d1181a78510b3439db", + "0x91894fb94cd4c1dd2ceaf9c53a7020c5799ba1217cf2d251ea5bc91ed26e1159dd758e98282ebe35a0395ef9f1ed15a0", + "0xab59895cdafd33934ceedfc3f0d5d89880482cba6c99a6db93245f9e41987efd76e0640e80aef31782c9a8c7a83fccec", + "0xaa22ea63654315e033e09d4d4432331904a6fc5fb1732557987846e3c564668ca67c60a324b4af01663a23af11a9ce4b", + "0xb53ba3ef342601467e1f71aa280e100fbabbd38518fa0193e0099505036ee517c1ac78e96e9baeb549bb6879bb698fb0", + "0x943fd69fd656f37487cca3605dc7e5a215fddd811caf228595ec428751fc1de484a0cb84c667fe4d7c35599bfa0e5e34", + "0x9353128b5ebe0dddc555093cf3e5942754f938173541033e8788d7331fafc56f68d9f97b4131e37963ab7f1c8946f5f1", + "0xa76cd3c566691f65cfb86453b5b31dbaf3cab8f84fe1f795dd1e570784b9b01bdd5f0b3c1e233942b1b5838290e00598", + "0x983d84b2e53ffa4ae7f3ba29ef2345247ea2377686b74a10479a0ef105ecf90427bf53b74c96dfa346d0f842b6ffb25b", + "0x92e0fe9063306894a2c6970c001781cff416c87e87cb5fbac927a3192655c3da4063e6fa93539f6ff58efac6adcc5514", + "0xb00a81f03c2b8703acd4e2e4c21e06973aba696415d0ea1a648ace2b0ea19b242fede10e4f9d7dcd61c546ab878bc8f9", + "0xb0d08d880f3b456a10bf65cff983f754f545c840c413aea90ce7101a66eb0a0b9b1549d6c4d57725315828607963f15a", + "0x90cb64d03534f913b411375cce88a9e8b1329ce67a9f89ca5df8a22b8c1c97707fec727dbcbb9737f20c4cf751359277", + "0x8327c2d42590dfcdb78477fc18dcf71608686ad66c49bce64d7ee874668be7e1c17cc1042a754bbc77c9daf50b2dae07", + "0x8532171ea13aa7e37178e51a6c775da469d2e26ec854eb16e60f3307db4acec110d2155832c202e9ba525fc99174e3b0", + "0x83ca44b15393d021de2a511fa5511c5bd4e0ac7d67259dce5a5328f38a3cce9c3a269405959a2486016bc27bb140f9ff", + "0xb1d36e8ca812be545505c8214943b36cabee48112cf0de369957afa796d37f86bf7249d9f36e8e990f26f1076f292b13", + "0x9803abf45be5271e2f3164c328d449efc4b8fc92dfc1225d38e09630909fe92e90a5c77618daa5f592d23fc3ad667094", + "0xb268ad68c7bf432a01039cd889afae815c3e120f57930d463aece10af4fd330b5bd7d8869ef1bcf6b2e78e4229922edc", + "0xa4c91a0d6f16b1553264592b4cbbbf3ca5da32ab053ffbdd3dbb1aed1afb650fb6e0dc5274f71a51d7160856477228db", + "0xad89d043c2f0f17806277ffdf3ecf007448e93968663f8a0b674254f36170447b7527d5906035e5e56f4146b89b5af56", + "0x8b6964f757a72a22a642e4d69102951897e20c21449184e44717bd0681d75f7c5bfa5ee5397f6e53febf85a1810d6ed1", + "0xb08f5cdaabec910856920cd6e836c830b863eb578423edf0b32529488f71fe8257d90aed4a127448204df498b6815d79", + "0xaf26bb3358be9d280d39b21d831bb53145c4527a642446073fee5a86215c4c89ff49a3877a7a549486262f6f57a0f476", + "0xb4010b37ec4d7c2af20800e272539200a6b623ae4636ecbd0e619484f4ab9240d02bc5541ace3a3fb955dc0a3d774212", + "0x82752ab52bdcc3cc2fc405cb05a2e694d3df4a3a68f2179ec0652536d067b43660b96f85f573f26fbd664a9ef899f650", + "0x96d392dde067473a81faf2d1fea55b6429126b88b160e39b4210d31d0a82833ffd3a80e07d24d495aea2d96be7251547", + "0xa76d8236d6671204d440c33ac5b8deb71fa389f6563d80e73be8b043ec77d4c9b06f9a586117c7f957f4af0331cbc871", + "0xb6c90961f68b5e385d85c9830ec765d22a425f506904c4d506b87d8944c2b2c09615e740ed351df0f9321a7b93979cae", + "0xa6ec5ea80c7558403485b3b1869cdc63bde239bafdf936d9b62a37031628402a36a2cfa5cfbb8e26ac922cb0a209b3ba", + "0x8c3195bbdbf9bc0fc95fa7e3d7f739353c947f7767d1e3cb24d8c8602d8ea0a1790ac30b815be2a2ba26caa5227891e2", + "0xa7f8a63d809f1155722c57f375ea00412b00147776ae4444f342550279ef4415450d6f400000a326bf11fea6c77bf941", + "0x97fa404df48433a00c85793440e89bb1af44c7267588ae937a1f5d53e01e1c4d4fc8e4a6d517f3978bfdd6c2dfde012f", + "0xa984a0a3836de3d8d909c4629a2636aacb85393f6f214a2ef68860081e9db05ad608024762db0dc35e895dc00e2d4cdd", + "0x9526cf088ab90335add1db4d3a4ac631b58cbfbe88fa0845a877d33247d1cfeb85994522e1eb8f8874651bfb1df03e2a", + "0xac83443fd0afe99ad49de9bf8230158c118e2814c9c89db5ac951c240d6c2ce45e7677221279d9e97848ec466b99aafe", + "0xaeeefdbaba612e971697798ceaf63b247949dc823a0ad771ae5b988a5e882b338a98d3d0796230f49d533ec5ba411b39", + "0xae3f248b5a7b0f92b7820a6c5ae21e5bd8f4265d4f6e21a22512079b8ee9be06393fd3133ce8ebac0faf23f4f8517e36", + "0xa64a831b908eee784b8388b45447d2885ec0551b26b0c2b15e5f417d0a12c79e867fb7bd3d008d0af98b44336f8ec1ad", + "0xb242238cd8362b6e440ba21806905714dd55172db25ec7195f3fc4937b2aba146d5cbf3cf691a1384b4752dc3b54d627", + "0x819f97f337eea1ffb2a678cc25f556f1aab751c6b048993a1d430fe1a3ddd8bb411c152e12ca60ec6e057c190cd1db9a", + "0xb9d7d187407380df54ee9fef224c54eec1bfabf17dc8abf60765b7951f538f59aa26fffd5846cfe05546c35f59b573f4", + "0xaa6e3c14efa6a5962812e3f94f8ce673a433f4a82d07a67577285ea0eaa07f8be7115853122d12d6d4e1fdf64c504be1", + "0x82268bee9c1662d3ddb5fb785abfae6fb8b774190f30267f1d47091d2cd4b3874db4372625aa36c32f27b0eee986269b", + "0xb236459565b7b966166c4a35b2fa71030b40321821b8e96879d95f0e83a0baf33fa25721f30af4a631df209e25b96061", + "0x8708d752632d2435d2d5b1db4ad1fa2558d776a013655f88e9a3556d86b71976e7dfe5b8834fdec97682cd94560d0d0d", + "0xae1424a68ae2dbfb0f01211f11773732a50510b5585c1fb005cb892b2c6a58f4a55490b5c5b4483c6fce40e9d3236a52", + "0xb3f5f722af9dddb07293c871ce97abbccba0093ca98c8d74b1318fa21396fc1b45b69c15084f63d728f9908442024506", + "0x9606f3ce5e63886853ca476dc0949e7f1051889d529365c0cb0296fdc02abd088f0f0318ecd2cf36740a3634132d36f6", + "0xb11a833a49fa138db46b25ff8cdda665295226595bc212c0931b4931d0a55c99da972c12b4ef753f7e37c6332356e350", + "0xafede34e7dab0a9e074bc19a7daddb27df65735581ca24ad70c891c98b1349fcebbcf3ba6b32c2617fe06a5818dabc2d", + "0x97993d456e459e66322d01f8eb13918979761c3e8590910453944bdff90b24091bb018ac6499792515c9923be289f99f", + "0x977e3e967eff19290a192cd11df3667d511b398fb3ac9a5114a0f3707e25a0edcb56105648b1b85a8b7519fc529fc6f6", + "0xb873a7c88bf58731fe1bf61ff6828bf114cf5228f254083304a4570e854e83748fc98683ddba62d978fff7909f2c5c47", + "0xad4b2691f6f19da1d123aaa23cca3e876247ed9a4ab23c599afdbc0d3aa49776442a7ceaa996ac550d0313d9b9a36cee", + "0xb9210713c78e19685608c6475bfa974b57ac276808a443f8b280945c5d5f9c39da43effa294bfb1a6c6f7b6b9f85bf6c", + "0xa65152f376113e61a0e468759de38d742caa260291b4753391ee408dea55927af08a4d4a9918600a3bdf1df462dffe76", + "0x8bf8c27ad5140dde7f3d2280fd4cc6b29ab76537e8d7aa7011a9d2796ee3e56e9a60c27b5c2da6c5e14fc866301dc195", + "0x92fde8effc9f61393a2771155812b863cff2a0c5423d7d40aa04d621d396b44af94ddd376c28e7d2f53c930aea947484", + "0x97a01d1dd9ee30553ce676011aea97fa93d55038ada95f0057d2362ae9437f3ed13de8290e2ff21e3167dd7ba10b9c3f", + "0x89affffaa63cb2df3490f76f0d1e1d6ca35c221dd34057176ba739fa18d492355e6d2a5a5ad93a136d3b1fed0bb8aa19", + "0x928b8e255a77e1f0495c86d3c63b83677b4561a5fcbbe5d3210f1e0fc947496e426d6bf3b49394a5df796c9f25673fc4", + "0x842a0af91799c9b533e79ee081efe2a634cac6c584c2f054fb7d1db67dde90ae36de36cbf712ec9cd1a0c7ee79e151ea", + "0xa65b946cf637e090baf2107c9a42f354b390e7316beb8913638130dbc67c918926eb87bec3b1fe92ef72bc77a170fa3b", + "0xaafc0f19bfd71ab5ae4a8510c7861458b70ad062a44107b1b1dbacbfa44ba3217028c2824bd7058e2fa32455f624040b", + "0x95269dc787653814e0be899c95dba8cfa384f575a25e671c0806fd80816ad6797dc819d30ae06e1d0ed9cb01c3950d47", + "0xa1e760f7fa5775a1b2964b719ff961a92083c5c617f637fc46e0c9c20ab233f8686f7f38c3cb27d825c54dd95e93a59b", + "0xac3b8a7c2317ea967f229eddc3e23e279427f665c4705c7532ed33443f1243d33453c1088f57088d2ab1e3df690a9cc9", + "0xb787beeddfbfe36dd51ec4efd9cf83e59e84d354c3353cc9c447be53ae53d366ed1c59b686e52a92f002142c8652bfe0", + "0xb7a64198300cb6716aa7ac6b25621f8bdec46ad5c07a27e165b3f774cdf65bcfdbf31e9bae0c16b44de4b00ada7a4244", + "0xb8ae9f1452909e0c412c7a7fe075027691ea8df1347f65a5507bc8848f1d2c833d69748076db1129e5b4fb912f65c86c", + "0x9682e41872456b9fa67def89e71f06d362d6c8ca85c9c48536615bc401442711e1c9803f10ab7f8ab5feaec0f9df20a6", + "0x88889ff4e271dc1c7e21989cc39f73cde2f0475acd98078281591ff6c944fadeb9954e72334319050205d745d4df73df", + "0x8f79b5b8159e7fd0d93b0645f3c416464f39aec353b57d99ecf24f96272df8a068ad67a6c90c78d82c63b40bb73989bb", + "0x838c01a009a3d8558a3f0bdd5e22de21af71ca1aefc8423c91dc577d50920e9516880e87dce3e6d086e11cd45c9052d9", + "0xb97f1c6eee8a78f137c840667cc288256e39294268a3009419298a04a1d0087c9c9077b33c917c65caf76637702dda8a", + "0x972284ce72f96a61c899260203dfa06fc3268981732bef74060641c1a5068ead723e3399431c247ca034b0dae861e8df", + "0x945a8d52d6d3db6663dbd3110c6587f9e9c44132045eeffba15621576d178315cb52870fa5861669f84f0bee646183fe", + "0xa0a547b5f0967b1c3e5ec6c6a9a99f0578521489180dfdfbb5561f4d166baac43a2f06f950f645ce991664e167537eed", + "0xa0592cda5cdddf1340033a745fd13a6eff2021f2e26587116c61c60edead067e0f217bc2bef4172a3c9839b0b978ab35", + "0xb9c223b65a3281587fa44ec829e609154b32f801fd1de6950e01eafb07a8324243b960d5735288d0f89f0078b2c42b5b", + "0x99ebfc3b8f9f98249f4d37a0023149ed85edd7a5abe062c8fb30c8c84555258b998bdcdd1d400bc0fa2a4aaa8b224466", + "0x955b68526e6cb3937b26843270f4e60f9c6c8ece2fa9308fe3e23afa433309c068c66a4bc16ee2cf04220f095e9afce4", + "0xb766caeafcc00378135ae53397f8a67ed586f5e30795462c4a35853de6681b1f17401a1c40958de32b197c083b7279c1", + "0x921bf87cad947c2c33fa596d819423c10337a76fe5a63813c0a9dc78a728207ae7b339407a402fc4d0f7cba3af6da6fc", + "0xa74ba1f3bc3e6c025db411308f49b347ec91da1c916bda9da61e510ec8d71d25e0ac0f124811b7860e5204f93099af27", + "0xa29b4d144e0bf17a7e8353f2824cef0ce85621396babe8a0b873ca1e8a5f8d508b87866cf86da348470649fceefd735c", + "0xa8040e12ffc3480dd83a349d06741d1572ef91932c46f5cf03aee8454254156ee95786fd013d5654725e674c920cec32", + "0x8c4cf34ca60afd33923f219ffed054f90cd3f253ffeb2204a3b61b0183417e366c16c07fae860e362b0f2bfe3e1a1d35", + "0x8195eede4ddb1c950459df6c396b2e99d83059f282b420acc34220cadeed16ab65c856f2c52568d86d3c682818ed7b37", + "0x91fff19e54c15932260aa990c7fcb3c3c3da94845cc5aa8740ef56cf9f58d19b4c3c55596f8d6c877f9f4d22921d93aa", + "0xa3e0bf7e5d02a80b75cf75f2db7e66cb625250c45436e3c136d86297d652590ec97c2311bafe407ad357c79ab29d107b", + "0x81917ff87e5ed2ae4656b481a63ced9e6e5ff653b8aa6b7986911b8bc1ee5b8ef4f4d7882c3f250f2238e141b227e510", + "0x915fdbe5e7de09c66c0416ae14a8750db9412e11dc576cf6158755fdcaf67abdbf0fa79b554cac4fe91c4ec245be073f", + "0x8df27eafb5c3996ba4dc5773c1a45ca77e626b52e454dc1c4058aa94c2067c18332280630cc3d364821ee53bf2b8c130", + "0x934f8a17c5cbb827d7868f5c8ca00cb027728a841000a16a3428ab16aa28733f16b52f58c9c4fbf75ccc45df72d9c4df", + "0xb83f4da811f9183c25de8958bc73b504cf790e0f357cbe74ef696efa7aca97ad3b7ead1faf76e9f982c65b6a4d888fc2", + "0x87188213c8b5c268dc2b6da413f0501c95749e953791b727450af3e43714149c115b596b33b63a2f006a1a271b87efd0", + "0x83e9e888ab9c3e30761de635d9aabd31248cdd92f7675fc43e4b21fd96a03ec1dc4ad2ec94fec857ffb52683ac98e360", + "0xb4b9a1823fe2d983dc4ec4e3aaea297e581c3fc5ab4b4af5fa1370caa37af2d1cc7fc6bfc5e7da60ad8fdce27dfe4b24", + "0x856388bc78aef465dbcdd1f559252e028c9e9a2225c37d645c138e78f008f764124522705822a61326a6d1c79781e189", + "0xa6431b36db93c3b47353ba22e7c9592c9cdfb9cbdd052ecf2cc3793f5b60c1e89bc96e6bae117bfd047f2308da00dd2f", + "0xb619972d48e7e4291542dcde08f7a9cdc883c892986ded2f23ccb216e245cd8d9ad1d285347b0f9d7611d63bf4cee2bc", + "0x8845cca6ff8595955f37440232f8e61d5351500bd016dfadd182b9d39544db77a62f4e0102ff74dd4173ae2c181d24ef", + "0xb2f5f7fa26dcd3b6550879520172db2d64ee6aaa213cbef1a12befbce03f0973a22eb4e5d7b977f466ac2bf8323dcedd", + "0x858b7f7e2d44bdf5235841164aa8b4f3d33934e8cb122794d90e0c1cac726417b220529e4f896d7b77902ab0ccd35b3a", + "0x80b0408a092dae2b287a5e32ea1ad52b78b10e9c12f49282976cd738f5d834e03d1ad59b09c5ccaccc39818b87d06092", + "0xb996b0a9c6a2d14d984edcd6ab56bc941674102980d65b3ad9733455f49473d3f587c8cbf661228a7e125ddbe07e3198", + "0x90224fcebb36865293bd63af786e0c5ade6b67c4938d77eb0cbae730d514fdd0fe2d6632788e858afd29d46310cf86df", + "0xb71351fdfff7168b0a5ec48397ecc27ac36657a8033d9981e97002dcca0303e3715ce6dd3f39423bc8ef286fa2e9e669", + "0xae2a3f078b89fb753ce4ed87e0c1a58bb19b4f0cfb6586dedb9fcab99d097d659a489fb40e14651741e1375cfc4b6c5f", + "0x8ef476b118e0b868caed297c161f4231bbeb863cdfa5e2eaa0fc6b6669425ce7af50dc374abceac154c287de50c22307", + "0x92e46ab472c56cfc6458955270d3c72b7bde563bb32f7d4ab4d959db6f885764a3d864e1aa19802fefaa5e16b0cb0b54", + "0x96a3f68323d1c94e73d5938a18a377af31b782f56212de3f489d22bc289cf24793a95b37f1d6776edf88114b5c1fa695", + "0x962cc068cfce6faaa27213c4e43e44eeff0dfbb6d25b814e82c7da981fb81d7d91868fa2344f05fb552362f98cfd4a72", + "0x895d4e4c4ad670abf66d43d59675b1add7afad7438ada8f42a0360c704cee2060f9ac15b4d27e9b9d0996bb801276fe3", + "0xb3ad18d7ece71f89f2ef749b853c45dc56bf1c796250024b39a1e91ed11ca32713864049c9aaaea60cde309b47486bbf", + "0x8f05404e0c0258fdbae50e97ccb9b72ee17e0bd2400d9102c0dad981dac8c4c71585f03e9b5d50086d0a2d3334cb55d1", + "0x8bd877e9d4591d02c63c6f9fc9976c109de2d0d2df2bfa5f6a3232bab5b0b8b46e255679520480c2d7a318545efa1245", + "0x8d4c16b5d98957c9da13d3f36c46f176e64e5be879f22be3179a2c0e624fe4758a82bf8c8027410002f973a3b84cd55a", + "0x86e2a8dea86427b424fa8eada881bdff896907084a495546e66556cbdf070b78ba312bf441eb1be6a80006d25d5097a3", + "0x8608b0c117fd8652fdab0495b08fadbeba95d9c37068e570de6fddfef1ba4a1773b42ac2be212836141d1bdcdef11a17", + "0xa13d6febf5fb993ae76cae08423ca28da8b818d6ef0fde32976a4db57839cd45b085026b28ee5795f10a9a8e3098c683", + "0x8e261967fa6de96f00bc94a199d7f72896a6ad8a7bbb1d6187cca8fad824e522880e20f766620f4f7e191c53321d70f9", + "0x8b8e8972ac0218d7e3d922c734302803878ad508ca19f5f012bc047babd8a5c5a53deb5fe7c15a4c00fd6d1cb9b1dbd0", + "0xb5616b233fb3574a2717d125a434a2682ff68546dccf116dd8a3b750a096982f185614b9fb6c7678107ff40a451f56fa", + "0xaa6adf9b0c3334b0d0663f583a4914523b2ac2e7adffdb026ab9109295ff6af003ef8357026dbcf789896d2afded8d73", + "0xacb72df56a0b65496cd534448ed4f62950bb1e11e50873b6ed349c088ee364441821294ce0f7c61bd7d38105bea3b442", + "0xabae12df83e01ec947249fedd0115dc501d2b03ff7232092979eda531dbbca29ace1d46923427c7dde4c17bdf3fd7708", + "0x820b4fc2b63a9fda7964acf5caf19a2fc4965007cb6d6b511fcafcb1f71c3f673a1c0791d3f86e3a9a1eb6955b191cc0", + "0xaf277259d78c6b0f4f030a10c53577555df5e83319ddbad91afbd7c30bc58e7671c56d00d66ec3ab5ef56470cd910cee", + "0xad4a861c59f1f5ca1beedd488fb3d131dea924fffd8e038741a1a7371fad7370ca5cf80dc01f177fbb9576713bb9a5b3", + "0xb67a5162982ce6a55ccfb2f177b1ec26b110043cf18abd6a6c451cf140b5af2d634591eb4f28ad92177d8c7e5cd0a5e8", + "0x96176d0a83816330187798072d449cbfccff682561e668faf6b1220c9a6535b32a6e4f852e8abb00f79abb87493df16b", + "0xb0afe6e7cb672e18f0206e4423f51f8bd0017bf464c4b186d46332c5a5847647f89ff7fa4801a41c1b0b42f6135bcc92", + "0x8fc5e7a95ef20c1278c645892811f6fe3f15c431ebc998a32ec0da44e7213ea934ed2be65239f3f49b8ec471e9914160", + "0xb7793e41adda6c82ba1f2a31f656f6205f65bf8a3d50d836ee631bc7ce77c153345a2d0fc5c60edf8b37457c3729c4ec", + "0xa504dd7e4d6b2f4379f22cc867c65535079c75ccc575955f961677fa63ecb9f74026fa2f60c9fb6323c1699259e5e9c8", + "0xab899d00ae693649cc1afdf30fb80d728973d2177c006e428bf61c7be01e183866614e05410041bc82cb14a33330e69c", + "0x8a3bd8b0b1be570b65c4432a0f6dc42f48a2000e30ab089cf781d38f4090467b54f79c0d472fcbf18ef6a00df69cc6f3", + "0xb4d7028f7f76a96a3d7803fca7f507ae11a77c5346e9cdfccb120a833a59bda1f4264e425aa588e7a16f8e7638061d84", + "0xb9c7511a76ea5fb105de905d44b02edb17008335766ee357ed386b7b3cf19640a98b38785cb14603c1192bee5886c9b6", + "0x8563afb12e53aed71ac7103ab8602bfa8371ae095207cb0d59e8fd389b6ad1aff0641147e53cb6a7ca16c7f37c9c5e6b", + "0x8e108be614604e09974a9ed90960c28c4ea330a3d9a0cb4af6dd6f193f84ab282b243ecdf549b3131036bebc8905690c", + "0xb794d127fbedb9c5b58e31822361706ffac55ce023fbfe55716c3c48c2fd2f2c7660a67346864dfe588812d369cb50b6", + "0xb797a3442fc3b44f41baefd30346f9ac7f96e770d010d53c146ce74ce424c10fb62758b7e108b8abfdc5fafd89d745cb", + "0x993bb71e031e8096442e6205625e1bfddfe6dd6a83a81f3e2f84fafa9e5082ab4cad80a099f21eff2e81c83457c725c3", + "0x8711ab833fc03e37acf2e1e74cfd9133b101ff4144fe30260654398ae48912ab46549d552eb9d15d2ea57760d35ac62e", + "0xb21321fd2a12083863a1576c5930e1aecb330391ef83326d9d92e1f6f0d066d1394519284ddab55b2cb77417d4b0292f", + "0x877d98f731ffe3ee94b0b5b72d127630fa8a96f6ca4f913d2aa581f67732df6709493693053b3e22b0181632ac6c1e3b", + "0xae391c12e0eb8c145103c62ea64f41345973311c3bf7281fa6bf9b7faafac87bcf0998e5649b9ef81e288c369c827e07", + "0xb83a2842f36998890492ab1cd5a088d9423d192681b9a3a90ec518d4c541bce63e6c5f4df0f734f31fbfdd87785a2463", + "0xa21b6a790011396e1569ec5b2a423857b9bec16f543e63af28024e116c1ea24a3b96e8e4c75c6537c3e4611fd265e896", + "0xb4251a9c4aab3a495da7a42e684ba4860dbcf940ad1da4b6d5ec46050cbe8dab0ab9ae6b63b5879de97b905723a41576", + "0x8222f70aebfe6ac037f8543a08498f4cadb3edaac00336fc00437eb09f2cba758f6c38e887cc634b4d5b7112b6334836", + "0x86f05038e060594c46b5d94621a1d9620aa8ba59a6995baf448734e21f58e23c1ea2993d3002ad5250d6edd5ba59b34f", + "0xa7c0c749baef811ab31b973c39ceb1d94750e2bc559c90dc5eeb20d8bb6b78586a2b363c599ba2107d6be65cd435f24e", + "0x861d46a5d70b38d6c1cd72817a2813803d9f34c00320c8b62f8b9deb67f5b5687bc0b37c16d28fd017367b92e05da9ca", + "0xb3365d3dab639bffbe38e35383686a435c8c88b397b717cd4aeced2772ea1053ceb670f811f883f4e02975e5f1c4ac58", + "0xa5750285f61ab8f64cd771f6466e2c0395e01b692fd878f2ef2d5c78bdd8212a73a3b1dfa5e4c8d9e1afda7c84857d3b", + "0x835a10809ccf939bc46cf950a33b36d71be418774f51861f1cd98a016ade30f289114a88225a2c11e771b8b346cbe6ef", + "0xa4f59473a037077181a0a62f1856ec271028546ca9452b45cedfcb229d0f4d1aabfc13062b07e536cc8a0d4b113156a2", + "0x95cd14802180b224d44a73cc1ed599d6c4ca62ddcaa503513ccdc80aaa8be050cc98bd4b4f3b639549beb4587ac6caf9", + "0x973b731992a3e69996253d7f36dd7a0af1982b5ed21624b77a7965d69e9a377b010d6dabf88a8a97eec2a476259859cc", + "0xaf8a1655d6f9c78c8eb9a95051aa3baaf9c811adf0ae8c944a8d3fcba87b15f61021f3baf6996fa0aa51c81b3cb69de1", + "0x835aad5c56872d2a2d6c252507b85dd742bf9b8c211ccb6b25b52d15c07245b6d89b2a40f722aeb5083a47cca159c947", + "0xabf4e970b02bef8a102df983e22e97e2541dd3650b46e26be9ee394a3ea8b577019331857241d3d12b41d4eacd29a3ac", + "0xa13c32449dbedf158721c13db9539ae076a6ce5aeaf68491e90e6ad4e20e20d1cdcc4a89ed9fd49cb8c0dd50c17633c1", + "0x8c8f78f88b7e22dd7e9150ab1c000f10c28e696e21d85d6469a6fe315254740f32e73d81ab1f3c1cf8f544c86df506e8", + "0xb4b77f2acfe945abf81f2605f906c10b88fb4d28628487fb4feb3a09f17f28e9780445dfcee4878349d4c6387a9d17d4", + "0x8d255c235f3812c6ecc646f855fa3832be5cb4dbb9c9e544989fafdf3f69f05bfd370732eaf954012f0044aa013fc9c6", + "0xb982efd3f34b47df37c910148ac56a84e8116647bea24145a49e34e0a6c0176e3284d838dae6230cb40d0be91c078b85", + "0x983f365aa09bd85df2a6a2ad8e4318996b1e27d02090755391d4486144e40d80b1fbfe1c798d626db92f52e33aa634da", + "0x95fd1981271f3ea3a41d654cf497e6696730d9ff7369f26bc4d7d15c7adb4823dd0c42e4a005a810af12d234065e5390", + "0xa9f5219bd4b913c186ef30c02f995a08f0f6f1462614ea5f236964e02bdaa33db9d9b816c4aee5829947840a9a07ba60", + "0x9210e6ceb05c09b46fd09d036287ca33c45124ab86315e5d6911ff89054f1101faaa3e83d123b7805056d388bcec6664", + "0x8ed9cbf69c6ff3a5c62dd9fe0d7264578c0f826a29e614bc2fb4d621d90c8c9992438accdd7a614b1dca5d1bb73dc315", + "0x85cf2a8cca93e00da459e3cecd22c342d697eee13c74d5851634844fc215f60053cf84b0e03c327cb395f48d1c71a8a4", + "0x8818a18e9a2ec90a271b784400c1903089ffb0e0b40bc5abbbe12fbebe0f731f91959d98c5519ef1694543e31e2016d4", + "0x8dabc130f296fa7a82870bf9a8405aaf542b222ed9276bba9bd3c3555a0f473acb97d655ee7280baff766a827a8993f0", + "0xac7952b84b0dc60c4d858f034093b4d322c35959605a3dad2b806af9813a4680cb038c6d7f4485b4d6b2ff502aaeca25", + "0xad65cb6d57b48a2602568d2ec8010baed0eb440eec7638c5ec8f02687d764e9de5b5d42ad5582934e592b48471c22d26", + "0xa02ab8bd4c3d114ea23aebdd880952f9495912817da8c0c08eabc4e6755439899d635034413d51134c72a6320f807f1c", + "0x8319567764b8295402ec1ebef4c2930a138480b37e6d7d01c8b4c9cd1f2fc3f6e9a44ae6e380a0c469b25b06db23305f", + "0xafec53b2301dc0caa8034cd9daef78c48905e6068d692ca23d589b84a6fa9ddc2ed24a39480597e19cb3e83eec213b3f", + "0xac0b4ffdb5ae08e586a9cdb98f9fe56f4712af3a97065e89e274feacfb52b53c839565aee93c4cfaaccfe51432c4fab0", + "0x8972cbf07a738549205b1094c5987818124144bf187bc0a85287c94fdb22ce038c0f11df1aa16ec5992e91b44d1af793", + "0xb7267aa6f9e3de864179b7da30319f1d4cb2a3560f2ea980254775963f1523b44c680f917095879bebfa3dc2b603efcf", + "0x80f68f4bfc337952e29504ee5149f15093824ea7ab02507efd1317a670f6cbc3611201848560312e3e52e9d9af72eccf", + "0x8897fee93ce8fc1e1122e46b6d640bba309384dbd92e46e185e6364aa8210ebf5f9ee7e5e604b6ffba99aa80a10dd7d0", + "0xb58ea6c02f2360be60595223d692e82ee64874fda41a9f75930f7d28586f89be34b1083e03bbc1575bbfdda2d30db1ea", + "0x85a523a33d903280d70ac5938770453a58293480170c84926457ac2df45c10d5ff34322ab130ef4a38c916e70d81af53", + "0xa2cbf045e1bed38937492c1f2f93a5ba41875f1f262291914bc1fc40c60bd0740fb3fea428faf6da38b7c180fe8ac109", + "0x8c09328770ed8eb17afc6ac7ddd87bb476de18ed63cab80027234a605806895959990c47bd10d259d7f3e2ecb50074c9", + "0xb4b9e19edb4a33bde8b7289956568a5b6b6557404e0a34584b5721fe6f564821091013fbb158e2858c6d398293bb4b59", + "0x8a47377df61733a2aa5a0e945fce00267f8e950f37e109d4487d92d878fb8b573317bb382d902de515b544e9e233458d", + "0xb5804c9d97efeff5ca94f3689b8088c62422d92a1506fd1d8d3b1b30e8a866ad0d6dad4abfa051dfc4471250cac4c5d9", + "0x9084a6ee8ec22d4881e9dcc8a9eb3c2513523d8bc141942370fd191ad2601bf9537a0b1e84316f3209b3d8a54368051e", + "0x85447eea2fa26656a649f8519fa67279183044791d61cf8563d0783d46d747d96af31d0a93507bbb2242666aa87d3720", + "0x97566a84481027b60116c751aec552adfff2d9038e68d48c4db9811fb0cbfdb3f1d91fc176a0b0d988a765f8a020bce1", + "0xae87e5c1b9e86c49a23dceda4ecfd1dcf08567f1db8e5b6ec752ebd45433c11e7da4988573cdaebbb6f4135814fc059e", + "0xabee05cf9abdbc52897ac1ce9ed157f5466ed6c383d6497de28616238d60409e5e92619e528af8b62cc552bf09970dc2", + "0xae6d31cd7bf9599e5ee0828bab00ceb4856d829bba967278a73706b5f388465367aa8a6c7da24b5e5f1fdd3256ef8e63", + "0xac33e7b1ee47e1ee4af472e37ab9e9175260e506a4e5ce449788075da1b53c44cb035f3792d1eea2aa24b1f688cc6ed3", + "0x80f65b205666b0e089bb62152251c48c380a831e5f277f11f3ef4f0d52533f0851c1b612267042802f019ec900dc0e8f", + "0x858520ad7aa1c9fed738e3b583c84168f2927837ad0e1d326afe9935c26e9b473d7f8c382e82ef1fe37d2b39bb40a1ee", + "0xb842dd4af8befe00a97c2d0f0c33c93974761e2cb9e5ab8331b25170318ddd5e4bdbc02d8f90cbfdd5f348f4f371c1f7", + "0x8bf2cb79bc783cb57088aae7363320cbeaabd078ffdec9d41bc74ff49e0043d0dad0086a30e5112b689fd2f5a606365d", + "0x982eb03bbe563e8850847cd37e6a3306d298ab08c4d63ab6334e6b8c1fa13fce80cf2693b09714c7621d74261a0ff306", + "0xb143edb113dec9f1e5105d4a93fbe502b859e587640d3db2f628c09a17060e6aec9e900e2c8c411cda99bc301ff96625", + "0xaf472d9befa750dcebc5428fe1a024f18ec1c07bca0f95643ce6b5f4189892a910285afb03fd7ed7068fbe614e80d33c", + "0xa97e3bc57ede73ecd1bbf02de8f51b4e7c1a067da68a3cd719f4ba26a0156cbf1cef2169fd35a18c5a4cced50d475998", + "0xa862253c937cf3d75d7183e5f5be6a4385d526aeda5171c1c60a8381fea79f88f5f52a4fab244ecc70765d5765e6dfd5", + "0x90cb776f8e5a108f1719df4a355bebb04bf023349356382cae55991b31720f0fd03206b895fa10c56c98f52453be8778", + "0xa7614e8d0769dccd520ea4b46f7646e12489951efaef5176bc889e9eb65f6e31758df136b5bf1e9107e68472fa9b46ec", + "0xac3a9b80a3254c42e5ed3a090a0dd7aee2352f480de96ad187027a3bb6c791eddfc3074b6ffd74eea825188f107cda4d", + "0x82a01d0168238ef04180d4b6e0a0e39024c02c2d75b065017c2928039e154d093e1af4503f4d1f3d8a948917abb5d09f", + "0x8fab000a2b0eef851a483aec8d2dd85fe60504794411a2f73ed82e116960547ac58766cb73df71aea71079302630258d", + "0x872451a35c6db61c63e9b8bb9f16b217f985c20be4451c14282c814adb29d7fb13f201367c664435c7f1d4d9375d7a58", + "0x887d9ff54cc96b35d562df4a537ff972d7c4b3fd91ab06354969a4cfede0b9fc68bbffb61d0dbf1a58948dc701e54f5a", + "0x8cb5c2a6bd956875d88f41ae24574434f1308514d44057b55c9c70f13a3366ed054150eed0955a38fda3f757be73d55f", + "0x89ad0163cad93e24129d63f8e38422b7674632a8d0a9016ee8636184cab177659a676c4ee7efba3abe1a68807c656d60", + "0xb9ec01c7cab6d00359b5a0b4a1573467d09476e05ca51a9227cd16b589a9943d161eef62dcc73f0de2ec504d81f4d252", + "0x8031d17635d39dfe9705c485d2c94830b6fc9bc67b91300d9d2591b51e36a782e77ab5904662effa9382d9cca201f525", + "0x8be5a5f6bc8d680e5092d6f9a6585acbaaaa2ddc671da560dcf5cfa4472f4f184b9597b5b539438accd40dda885687cc", + "0xb1fc0f052fae038a2e3de3b3a96b0a1024b009de8457b8b3adb2d315ae68a89af905720108a30038e5ab8d0d97087785", + "0x8b8bdc77bd3a6bc7ca5492b6f8c614852c39a70d6c8a74916eaca0aeb4533b11898b8820a4c2620a97bf35e275480029", + "0xaf35f4dc538d4ad5cdf710caa38fd1eb496c3fa890a047b6a659619c5ad3054158371d1e88e0894428282eed9f47f76b", + "0x8166454a7089cc07758ad78724654f4e7a1a13e305bbf88ddb86f1a4b2904c4fc8ab872d7da364cdd6a6c0365239e2ad", + "0xab287c7d3addce74ce40491871c768abe01daaa0833481276ff2e56926b38a7c6d2681ffe837d2cc323045ad1a4414f9", + "0xb90317f4505793094d89365beb35537f55a6b5618904236258dd04ca61f21476837624a2f45fef8168acf732cab65579", + "0x98ae5ea27448e236b6657ab5ef7b1cccb5372f92ab25f5fa651fbac97d08353a1dae1b280b1cd42b17d2c6a70a63ab9d", + "0xadcf54e752d32cbaa6cb98fbca48d8cd087b1db1d131d465705a0d8042c8393c8f4d26b59006eb50129b21e6240f0c06", + "0xb591a3e4db18a7345fa935a8dd7994bbac5cc270b8ebd84c8304c44484c7a74afb45471fdbe4ab22156a30fae1149b40", + "0x806b53ac049a42f1dcc1d6335505371da0bf27c614f441b03bbf2e356be7b2fb4eed7117eabcce9e427a542eaa2bf7d8", + "0x800482e7a772d49210b81c4a907f5ce97f270b959e745621ee293cf8c71e8989363d61f66a98f2d16914439544ca84c7", + "0x99de9eafdad3617445312341644f2bb888680ff01ce95ca9276b1d2e5ef83fa02dab5e948ebf66c17df0752f1bd37b70", + "0x961ee30810aa4c93ae157fbe9009b8e443c082192bd36a73a6764ff9b2ad8b0948fe9a73344556e01399dd77badb4257", + "0xae0a361067c52efbe56c8adf982c00432cd478929459fc7f74052c8ee9531cd031fe1335418fde53f7c2ef34254eb7ac", + "0xa3503d16b6b27eb20c1b177bcf90d13706169220523a6271b85b2ce35a9a2b9c5bed088540031c0a4ebfdae3a4c6ab04", + "0x909420122c3e723289ca4e7b81c2df5aff312972a2203f4c45821b176e7c862bf9cac7f7df3adf1d59278f02694d06e7", + "0x989f42380ae904b982f85d0c6186c1aef5d6bcba29bcfbb658e811b587eb2749c65c6e4a8cc6409c229a107499a4f5d7", + "0x8037a6337195c8e26a27ea4ef218c6e7d79a9720aaab43932d343192abc2320fe72955f5e431c109093bda074103330a", + "0xb312e168663842099b88445e940249cc508f080ab0c94331f672e7760258dbd86be5267e4cf25ea25facb80bff82a7e9", + "0xaaa3ff8639496864fcdbfdda1ac97edc4f08e3c9288b768f6c8073038c9fbbf7e1c4bea169b4d45c31935cdf0680d45e", + "0x97dbd3df37f0b481a311dfc5f40e59227720f367912200d71908ef6650f32cc985cb05b981e3eea38958f7e48d10a15d", + "0xa89d49d1e267bb452d6cb621b9a90826fe55e9b489c0427b94442d02a16f390eed758e209991687f73f6b5a032321f42", + "0x9530dea4e0e19d6496f536f2e75cf7d814d65fde567055eb20db48fd8d20d501cd2a22fb506db566b94c9ee10f413d43", + "0x81a7009b9e67f1965fa7da6a57591c307de91bf0cd35ab4348dc4a98a4961e096d004d7e7ad318000011dc4342c1b809", + "0x83440a9402b766045d7aca61a58bba2aa29cac1cf718199e472ba086f5d48093d9dda4d135292ba51d049a23964eceae", + "0xa06c9ce5e802df14f6b064a3d1a0735d429b452f0e2e276042800b0a4f16df988fd94cf3945921d5dd3802ab2636f867", + "0xb1359e358b89936dee9e678a187aad3e9ab14ac40e96a0a68f70ee2583cdcf467ae03bef4215e92893f4e12f902adec8", + "0x835304f8619188b4d14674d803103d5a3fa594d48e96d9699e653115dd05fdc2dda6ba3641cf7ad53994d448da155f02", + "0x8327cba5a9ff0d3f5cd0ae55e77167448926d5fcf76550c0ad978092a14122723090c51c415e88e42a2b62eb07cc3981", + "0xb373dcdaea85f85ce9978b1426a7ef4945f65f2d3467a9f1cc551a99766aac95df4a09e2251d3f89ca8c9d1a7cfd7b0e", + "0xab1422dc41af2a227b973a6fd124dfcb2367e2a11a21faa1d381d404f51b7257e5bc82e9cf20cd7fe37d7ae761a2ab37", + "0xa93774a03519d2f20fdf2ef46547b0a5b77c137d6a3434b48d56a2cbef9e77120d1b85d0092cf8842909213826699477", + "0x8eb967a495a38130ea28711580b7e61bcd1d051cd9e4f2dbf62f1380bd86e0d60e978d72f6f31e909eb97b3b9a2b867c", + "0xae8213378da1287ba1fe4242e1acaec19b877b6fe872400013c6eac1084b8d03156792fa3020201725b08228a1e80f49", + "0xb143daf6893d674d607772b3b02d8ac48f294237e2f2c87963c0d4e26d9227d94a2a13512457c3d5883544bbc259f0ef", + "0xb343bd2aca8973888e42542218924e2dda2e938fd1150d06878af76f777546213912b7c7a34a0f94186817d80ffa185c", + "0xb188ebc6a8c3007001aa347ae72cc0b15d09bc6c19a80e386ee4b334734ec0cc2fe8b493c2422f38d1e6d133cc3db6fe", + "0xb795f6a8b9b826aaeee18ccd6baf6c5adeeec85f95eb5b6d19450085ec7217e95a2d9e221d77f583b297d0872073ba0e", + "0xb1c7dbd998ad32ae57bfa95deafa147024afd57389e98992c36b6e52df915d3d5a39db585141ec2423173e85d212fed8", + "0x812bcdeb9fe5f12d0e1df9964798056e1f1c3de3b17b6bd2919b6356c4b86d8e763c01933efbe0224c86a96d5198a4be", + "0xb19ebeda61c23d255cbf472ef0b8a441f4c55b70f0d8ed47078c248b1d3c7c62e076b43b95c00a958ec8b16d5a7cb0d7", + "0xb02adc9aaa20e0368a989c2af14ff48b67233d28ebee44ff3418bb0473592e6b681af1cc45450bd4b175df9051df63d9", + "0x8d87f0714acee522eb58cec00360e762adc411901dba46adc9227124fa70ee679f9a47e91a6306d6030dd4eb8de2f3c1", + "0x8be54cec21e74bcc71de29dc621444263737db15f16d0bb13670f64e42f818154e04b484593d19ef95f2ee17e4b3fe21", + "0xab8e20546c1db38d31493b5d5f535758afb17e459645c1b70813b1cf7d242fd5d1f4354a7c929e8f7259f6a25302e351", + "0x89f035a1ed8a1e302ac893349ba8ddf967580fcb6e73d44af09e3929cde445e97ff60c87dafe489e2c0ab9c9986cfa00", + "0x8b2b0851a795c19191a692af55f7e72ad2474efdc5401bc3733cfdd910e34c918aaebe69d5ea951bdddf3c01cabbfc67", + "0xa4edb52c2b51495ccd1ee6450fc14b7b3ede8b3d106808929d02fb31475bacb403e112ba9c818d2857651e508b3a7dd1", + "0x9569341fded45d19f00bcf3cbf3f20eb2b4d82ef92aba3c8abd95866398438a2387437e580d8b646f17cf6fde8c5af23", + "0xaa4b671c6d20f72f2f18a939a6ff21cc37e0084b44b4a717f1be859a80b39fb1be026b3205adec2a66a608ec2bcd578f", + "0x94902e980de23c4de394ad8aec91b46f888d18f045753541492bfbb92c59d3daa8de37ae755a6853744af8472ba7b72b", + "0xaf651ef1b2a0d30a7884557edfad95b6b5d445a7561caebdc46a485aedd25932c62c0798465c340a76f6feaa196dd712", + "0xb7b669b8e5a763452128846dd46b530dca4893ace5cc5881c7ddcd3d45969d7e73fbebdb0e78aa81686e5f7b22ec5759", + "0x82507fd4ebe9fa656a7f2e084d64a1fa6777a2b0bc106d686e2d9d2edafc58997e58cb6bfd0453b2bf415704aa82ae62", + "0xb40bce2b42b88678400ecd52955bbdadd15f8b9e1b3751a1a3375dc0efb5ca3ee258cf201e1140b3c09ad41217d1d49e", + "0xb0210d0cbb3fbf3b8cdb39e862f036b0ff941cd838e7aaf3a8354e24246e64778d22f3de34572e6b2a580614fb6425be", + "0x876693cba4301b251523c7d034108831df3ce133d8be5a514e7a2ca494c268ca0556fa2ad8310a1d92a16b55bcd99ea9", + "0x8660281406d22a4950f5ef050bf71dd3090edb16eff27fa29ef600cdea628315e2054211ed2cc6eaf8f2a1771ef689fd", + "0xa610e7e41e41ab66955b809ba4ade0330b8e9057d8efc9144753caed81995edeb1a42a53f93ce93540feca1fae708dac", + "0xa49e2c176a350251daef1218efaccc07a1e06203386ede59c136699d25ca5cb2ac1b800c25b28dd05678f14e78e51891", + "0x83e0915aa2b09359604566080d411874af8c993beba97d4547782fdbe1a68e59324b800ff1f07b8db30c71adcbd102a8", + "0xa19e84e3541fb6498e9bb8a099c495cbfcad113330e0262a7e4c6544495bb8a754b2208d0c2d895c93463558013a5a32", + "0x87f2bd49859a364912023aca7b19a592c60214b8d6239e2be887ae80b69ebdeb59742bdebcfa73a586ab23b2c945586c", + "0xb8e8fdddae934a14b57bc274b8dcd0d45ebb95ddbaabef4454e0f6ce7d3a5a61c86181929546b3d60c447a15134d08e1", + "0x87e0c31dcb736ea4604727e92dc1d9a3cf00adcff79df3546e02108355260f3dd171531c3c0f57be78d8b28058fcc8c0", + "0x9617d74e8f808a4165a8ac2e30878c349e1c3d40972006f0787b31ea62d248c2d9f3fc3da83181c6e57e95feedfd0e8c", + "0x8949e2cee582a2f8db86e89785a6e46bc1565c2d8627d5b6bf43ba71ffadfab7e3c5710f88dcb5fb2fc6edf6f4fae216", + "0xad3fa7b0edceb83118972a2935a09f409d09a8db3869f30be3a76f67aa9fb379cabb3a3aff805ba023a331cad7d7eb64", + "0x8c95718a4112512c4efbd496be38bf3ca6cdcaad8a0d128f32a3f9aae57f3a57bdf295a3b372a8c549fda8f4707cffed", + "0x88f3261d1e28a58b2dee3fcc799777ad1c0eb68b3560f9b4410d134672d9533532a91ea7be28a041784872632d3c9d80", + "0xb47472a41d72dd2e8b72f5c4f8ad626737dde3717f63d6bc776639ab299e564cbad0a2ad5452a07f02ff49a359c437e5", + "0x9896d21dc2e8aad87b76d6df1654f10cd7bceed4884159d50a818bea391f8e473e01e14684814c7780235f28e69dca6e", + "0x82d47c332bbd31bbe83b5eb44a23da76d4a7a06c45d7f80f395035822bc27f62f59281d5174e6f8e77cc9b5c3193d6f0", + "0x95c74cd46206e7f70c9766117c34c0ec45c2b0f927a15ea167901a160e1530d8522943c29b61e03568aa0f9c55926c53", + "0xa89d7757825ae73a6e81829ff788ea7b3d7409857b378ebccd7df73fdbe62c8d9073741cf038314971b39af6c29c9030", + "0x8c1cd212d0b010905d560688cfc036ae6535bc334fa8b812519d810b7e7dcf1bb7c5f43deaa40f097158358987324a7f", + "0xb86993c383c015ed8d847c6b795164114dd3e9efd25143f509da318bfba89389ea72a420699e339423afd68b6512fafb", + "0x8d06bd379c6d87c6ed841d8c6e9d2d0de21653a073725ff74be1934301cc3a79b81ef6dd0aad4e7a9dc6eac9b73019bc", + "0x81af4d2d87219985b9b1202d724fe39ef988f14fef07dfe3c3b11714e90ffba2a97250838e8535eb63f107abfe645e96", + "0x8c5e0af6330a8becb787e4b502f34f528ef5756e298a77dc0c7467433454347f3a2e0bd2641fbc2a45b95e231c6e1c02", + "0x8e2a8f0f04562820dc8e7da681d5cad9fe2e85dd11c785fb6fba6786c57a857e0b3bd838fb849b0376c34ce1665e4837", + "0xa39be8269449bfdfc61b1f62077033649f18dae9bef7c6163b9314ca8923691fb832f42776f0160b9e8abd4d143aa4e1", + "0x8c154e665706355e1cc98e0a4cabf294ab019545ba9c4c399d666e6ec5c869ca9e1faf8fb06cd9c0a5c2f51a7d51b70a", + "0xa046a7d4de879d3ebd4284f08f24398e9e3bf006cd4e25b5c67273ade248689c69affff92ae810c07941e4904296a563", + "0xafd94c1cb48758e5917804df03fb38a6da0e48cd9b6262413ea13b26973f9e266690a1b7d9d24bbaf7e82718e0e594b0", + "0x859e21080310c8d6a38e12e2ac9f90a156578cdeb4bb2e324700e97d9a5511cd6045dc39d1d0de3f94aeed043a24119d", + "0xa219fb0303c379d0ab50893264919f598e753aac9065e1f23ef2949abc992577ab43c636a1d2c089203ec9ddb941e27d", + "0xb0fdb639d449588a2ca730afcba59334e7c387342d56defdfb7ef79c493f7fd0e5277eff18e7203e756c7bdda5803047", + "0x87f9c3b7ed01f54368aca6dbcf2f6e06bff96e183c4b2c65f8baa23b377988863a0a125d5cdd41a072da8462ced4c070", + "0x99ef7a5d5ac2f1c567160e1f8c95f2f38d41881850f30c461a205f7b1b9fb181277311333839b13fb3ae203447e17727", + "0xaeaca9b1c2afd24e443326cc68de67b4d9cedb22ad7b501a799d30d39c85bb2ea910d4672673e39e154d699e12d9b3dc", + "0xa11675a1721a4ba24dd3d0e4c3c33a6edf4cd1b9f6b471070b4386c61f77452266eae6e3f566a40cfc885eada9a29f23", + "0xb228334445e37b9b49cb4f2cc56b454575e92173ddb01370a553bba665adadd52df353ad74470d512561c2c3473c7bb9", + "0xa18177087c996572d76f81178d18ed1ceebc8362a396348ce289f1d8bd708b9e99539be6fccd4acb1112381cfc5749b4", + "0x8e7b8bf460f0d3c99abb19803b9e43422e91507a1c0c22b29ee8b2c52d1a384da4b87c292e28eff040db5be7b1f8641f", + "0xb03d038d813e29688b6e6f444eb56fec3abba64c3d6f890a6bcf2e916507091cdb2b9d2c7484617be6b26552ed1c56cb", + "0xa1c88ccd30e934adfc5494b72655f8afe1865a84196abfb376968f22ddc07761210b6a9fb7638f1413d1b4073d430290", + "0x961b714faebf172ad2dbc11902461e286e4f24a99a939152a53406117767682a571057044decbeb3d3feef81f4488497", + "0xa03dc4059b46effdd786a0a03cc17cfee8585683faa35bb07936ded3fa3f3a097f518c0b8e2db92fd700149db1937789", + "0xadf60180c99ca574191cbcc23e8d025b2f931f98ca7dfcebfc380226239b6329347100fcb8b0fcb12db108c6ad101c07", + "0x805d4f5ef24d46911cbf942f62cb84b0346e5e712284f82b0db223db26d51aabf43204755eb19519b00e665c7719fcaa", + "0x8dea7243e9c139662a7fe3526c6c601eee72fd8847c54c8e1f2ad93ef7f9e1826b170afe58817dac212427164a88e87f", + "0xa2ba42356606d651b077983de1ad643650997bb2babb188c9a3b27245bb65d2036e46667c37d4ce02cb1be5ae8547abe", + "0xaf2ae50b392bdc013db2d12ce2544883472d72424fc767d3f5cb0ca2d973fc7d1f425880101e61970e1a988d0670c81b", + "0x98e6bec0568d3939b31d00eb1040e9b8b2a35db46ddf4369bdaee41bbb63cc84423d29ee510a170fb5b0e2df434ba589", + "0x822ff3cd12fbef4f508f3ca813c04a2e0b9b799c99848e5ad3563265979e753ee61a48f6adc2984a850f1b46c1a43d35", + "0x891e8b8b92a394f36653d55725ef514bd2e2a46840a0a2975c76c2a935577f85289026aaa74384da0afe26775cbddfb9", + "0xb2a3131a5d2fe7c8967047aa66e4524babae941d90552171cc109527f345f42aa0df06dcbb2fa01b33d0043917bbed69", + "0x80c869469900431f3eeefafdbe07b8afd8cee7739e659e6d0109b397cacff85a88247698f87dc4e2fe39a592f250ac64", + "0x9091594f488b38f9d2bb5df49fd8b4f8829d9c2f11a197dd1431ed5abbc5c954bbde3387088f9ee3a5a834beb7619bce", + "0xb472e241e6956146cca57b97a8a204668d050423b4e76f857bad5b47f43b203a04c8391ba9d9c3e95093c071f9d376a1", + "0xb7dd2de0284844392f7dfb56fe7ca3ede41e27519753ffc579a0a8d2d65ceb8108d06b6b0d4c3c1a2588951297bd1a1e", + "0x902116ce70d0a079ac190321c1f48701318c05f8e69ee09694754885d33a835a849cafe56f499a2f49f6cda413ddf9a7", + "0xb18105cc736787fafaf7c3c11c448bce9466e683159dff52723b7951dff429565e466e4841d982e3aaa9ee2066838666", + "0x97ab9911f3f659691762d568ae0b7faa1047b0aed1009c319fa79d15d0db8db9f808fc385dc9a68fa388c10224985379", + "0xb2a2cba65f5b927e64d2904ba412e2bac1cf18c9c3eda9c72fb70262497ecf505b640827e2afebecf10eebbcf48ccd3e", + "0xb36a3fd677baa0d3ef0dac4f1548ff50a1730286b8c99d276a0a45d576e17b39b3cbadd2fe55e003796d370d4be43ce3", + "0xa5dfec96ca3c272566e89dc453a458909247e3895d3e44831528130bc47cc9d0a0dac78dd3cad680a4351d399d241967", + "0x8029382113909af6340959c3e61db27392531d62d90f92370a432aec3eb1e4c36ae1d4ef2ba8ec6edb4d7320c7a453f6", + "0x971d85121ea108e6769d54f9c51299b0381ece8b51d46d49c89f65bedc123bab4d5a8bc14d6f67f4f680077529cbae4c", + "0x98ff6afc01d0bec80a278f25912e1b1ebff80117adae72e31d5b9fa4d9624db4ba2065b444df49b489b0607c45e26c4c", + "0x8fa29be10fb3ab30ce25920fec0187e6e91e458947009dabb869aade7136c8ba23602682b71e390c251f3743164cbdaa", + "0xb3345c89eb1653418fe3940cf3e56a9a9c66526389b98f45ca02dd62bfb37baa69a4baaa7132d7320695f8ea6ad1fd94", + "0xb72c7f5541c9ac6b60a7ec9f5415e7fb14da03f7164ea529952a29399f3a071576608dbbcc0d45994f21f92ddbeb1e19", + "0xaa3450bb155a5f9043d0ef95f546a2e6ade167280bfb75c9f09c6f9cdb1fffb7ce8181436161a538433afa3681c7a141", + "0x92a18fecaded7854b349f441e7102b638ababa75b1b0281dd0bded6541abe7aa37d96693595be0b01fe0a2e2133d50f9", + "0x980756ddf9d2253cfe6c94960b516c94889d09e612810935150892627d2ecee9a2517e04968eea295d0106850c04ca44", + "0xae68c6ccc454318cdd92f32b11d89116a3b8350207a36d22a0f626718cad671d960090e054c0c77ac3162ae180ecfd4b", + "0x99f31f66eaaa551749ad91d48a0d4e3ff4d82ef0e8b28f3184c54e852422ba1bdafd53b1e753f3a070f3b55f3c23b6a2", + "0xa44eaeaa6589206069e9c0a45ff9fc51c68da38d4edff1d15529b7932e6f403d12b9387019c44a1488a5d5f27782a51f", + "0xb80b5d54d4b344840e45b79e621bd77a3f83fb4ce6d8796b7d6915107b3f3c34d2e7d95bdafd120f285669e5acf2437a", + "0xb36c069ec085a612b5908314d6b84c00a83031780261d1c77a0384c406867c9847d5b0845deddfa512cc04a8df2046fb", + "0xb09dbe501583220f640d201acea7ee3e39bf9eda8b91aa07b5c50b7641d86d71acb619b38d27835ce97c3759787f08e9", + "0x87403d46a2bf63170fff0b857acacf42ee801afe9ccba8e5b4aea967b68eac73a499a65ca46906c2eb4c8f27bc739faa", + "0x82b93669f42a0a2aa5e250ffe6097269da06a9c02fcd1801abbad415a7729a64f830754bafc702e64600ba47671c2208", + "0x8e3a3029be7edb8dd3ab1f8216664c8dc50d395f603736061d802cef77627db7b859ef287ed850382c13b4d22d6a2d80", + "0x968e9ec7194ff424409d182ce0259acd950c384c163c04463bc8700a40b79beba6146d22b7fa7016875a249b7b31c602", + "0x8b42c984bbe4996e0c20862059167c6bdc5164b1ffcd928f29512664459212d263e89f0f0e30eed4e672ffa5ed0b01b5", + "0x96bac54062110dada905363211133f1f15dc7e4fd80a4c6e4a83bc9a0bcbbaba11cd2c7a13debcf0985e1a954c1da66b", + "0xa16dc8a653d67a7cd7ae90b2fffac0bf1ca587005430fe5ba9403edd70ca33e38ba5661d2ed6e9d2864400d997626a62", + "0xa68ab11a570a27853c8d67e491591dcba746bfbee08a2e75ae0790399130d027ed387f41ef1d7de8df38b472df309161", + "0x92532b74886874447c0300d07eda9bbe4b41ed25349a3da2e072a93fe32c89d280f740d8ff70d5816793d7f2b97373cc", + "0x88e35711b471e89218fd5f4d0eadea8a29405af1cd81974427bc4a5fb26ed60798daaf94f726c96e779b403a2cd82820", + "0xb5c72aa4147c19f8c4f3a0a62d32315b0f4606e0a7025edc5445571eaf4daff64f4b7a585464821574dd50dbe1b49d08", + "0x9305d9b4095258e79744338683fd93f9e657367b3ab32d78080e51d54eec331edbc224fad5093ebf8ee4bd4286757eb8", + "0xb2a17abb3f6a05bcb14dc7b98321fa8b46d299626c73d7c6eb12140bf4c3f8e1795250870947af817834f033c88a59d6", + "0xb3477004837dbd8ba594e4296f960fc91ab3f13551458445e6c232eb04b326da803c4d93e2e8dcd268b4413305ff84da", + "0x924b4b2ebaafdcfdfedb2829a8bf46cd32e1407d8d725a5bd28bdc821f1bafb3614f030ea4352c671076a63494275a3f", + "0x8b81b9ef6125c82a9bece6fdcb9888a767ac16e70527753428cc87c56a1236e437da8be4f7ecfe57b9296dc3ae7ba807", + "0x906e19ec8b8edd58bdf9ae05610a86e4ea2282b1bbc1e8b00b7021d093194e0837d74cf27ac9916bdb8ec308b00da3da", + "0xb41c5185869071760ac786078a57a2ab4e2af60a890037ac0c0c28d6826f15c2cf028fddd42a9b6de632c3d550bfbc14", + "0xa646e5dec1b713ae9dfdf7bdc6cd474d5731a320403c7dfcfd666ffc9ae0cff4b5a79530e8df3f4aa9cb80568cb138e9", + "0xb0efad22827e562bd3c3e925acbd0d9425d19057868608d78c2209a531cccd0f2c43dc5673acf9822247428ffa2bb821", + "0xa94c19468d14b6f99002fc52ac06bbe59e5c472e4a0cdb225144a62f8870b3f10593749df7a2de0bd3c9476ce682e148", + "0x803864a91162f0273d49271dafaab632d93d494d1af935aefa522768af058fce52165018512e8d6774976d52bd797e22", + "0xa08711c2f7d45c68fb340ac23597332e1bcaec9198f72967b9921204b9d48a7843561ff318f87908c05a44fc35e3cc9d", + "0x91c3cad94a11a3197ae4f9461faab91a669e0dddb0371d3cab3ed9aeb1267badc797d8375181130e461eadd05099b2a2", + "0x81bdaaf48aae4f7b480fc13f1e7f4dd3023a41439ba231760409ce9292c11128ab2b0bdbbf28b98af4f97b3551f363af", + "0x8d60f9df9fd303f625af90e8272c4ecb95bb94e6efc5da17b8ab663ee3b3f673e9f6420d890ccc94acf4d2cae7a860d8", + "0xa7b75901520c06e9495ab983f70b61483504c7ff2a0980c51115d11e0744683ce022d76e3e09f4e99e698cbd21432a0d", + "0x82956072df0586562fda7e7738226f694e1c73518dd86e0799d2e820d7f79233667192c9236dcb27637e4c65ef19d493", + "0xa586beb9b6ffd06ad200957490803a7cd8c9bf76e782734e0f55e04a3dc38949de75dc607822ec405736c576cf83bca3", + "0xa179a30d00def9b34a7e85607a447eea0401e32ab5abeee1a281f2acd1cf6ec81a178020666f641d9492b1bdf66f05a3", + "0x83e129705c538787ed8e0fdc1275e6466a3f4ee21a1e6abedd239393b1df72244723b92f9d9d9339a0cab6ebf28f5a16", + "0x811bd8d1e3722b64cd2f5b431167e7f91456e8bba2cc669d3fbbce7d553e29c3c19f629fcedd2498bc26d33a24891d17", + "0xa243c030c858f1f60cccd26b45b024698cc6d9d9e6198c1ed4964a235d9f8d0baf9cde10c8e63dfaa47f8e74e51a6e85", + "0xab839eb82e23ca52663281f863b55b0a3d6d4425c33ffb4eeb1d7979488ab068bf99e2a60e82cea4dc42c56c26cbfebe", + "0x8b896f9bb21d49343e67aec6ad175b58c0c81a3ca73d44d113ae4354a0065d98eb1a5cafedaf232a2bb9cdc62152f309", + "0xaf6230340cc0b66f5bf845540ed4fc3e7d6077f361d60762e488d57834c3e7eb7eacc1b0ed73a7d134f174a01410e50c", + "0x88975e1b1af678d1b5179f72300a30900736af580dd748fd9461ef7afccc91ccd9bed33f9da55c8711a7635b800e831f", + "0xa97486bb9047391661718a54b8dd5a5e363964e495eae6c692730264478c927cf3e66dd3602413189a3699fbeae26e15", + "0xa5973c161ab38732885d1d2785fd74bf156ba34881980cba27fe239caef06b24a533ffe6dbbbeca5e6566682cc00300a", + "0xa24776e9a840afda0003fa73b415d5bd6ecd9b5c2cc842b643ee51b8c6087f4eead4d0bfbd987eb174c489a7b952ff2a", + "0xa8a6ee06e3af053b705a12b59777267c546f33ba8a0f49493af8e6df4e15cf8dd2d4fb4daf7e84c6b5d3a7363118ff03", + "0xa28e59ce6ad02c2ce725067c0123117e12ac5a52c8f5af13eec75f4a9efc4f696777db18a374fa33bcae82e0734ebd16", + "0x86dfc3b78e841c708aff677baa8ee654c808e5d257158715097c1025d46ece94993efe12c9d188252ad98a1e0e331fec", + "0xa88d0275510f242eab11fdb0410ff6e1b9d7a3cbd3658333539815f1b450a84816e6613d15aa8a8eb15d87cdad4b27a2", + "0x8440acea2931118a5b481268ff9f180ee4ede85d14a52c026adc882410825b8275caa44aff0b50c2b88d39f21b1a0696", + "0xa7c3182eab25bd6785bacf12079d0afb0a9b165d6ed327814e2177148539f249eb9b5b2554538f54f3c882d37c0a8abe", + "0x85291fbe10538d7da38efdd55a7acebf03b1848428a2f664c3ce55367aece60039f4f320b1771c9c89a35941797f717c", + "0xa2c6414eeb1234728ab0de94aa98fc06433a58efa646ca3fcbd97dbfb8d98ae59f7ce6d528f669c8149e1e13266f69c9", + "0x840c8462785591ee93aee2538d9f1ec44ba2ca61a569ab51d335ac873f5d48099ae8d7a7efa0725d9ff8f9475bfa4f56", + "0xa7065a9d02fb3673acf7702a488fbc01aa69580964932f6f40b6c2d1c386b19e50b0e104fcac24ea26c4e723611d0238", + "0xb72db6d141267438279e032c95e6106c2ccb3164b842ba857a2018f3a35f4b040da92680881eb17cd61d0920d5b8f006", + "0xa8005d6c5960e090374747307ef0be2871a7a43fa4e76a16c35d2baab808e9777b496e9f57a4218b23390887c33a0b55", + "0x8e152cea1e00a451ca47c20a1e8875873419700af15a5f38ee2268d3fbc974d4bd5f4be38008fa6f404dbdedd6e6e710", + "0xa3391aed1fcd68761f06a7d1008ec62a09b1cb3d0203cd04e300a0c91adfed1812d8bc1e4a3fd7976dc0aae0e99f52f1", + "0x967eb57bf2aa503ee0c6e67438098149eac305089c155f1762cf5e84e31f0fbf27c34a9af05621e34645c1ec96afaec8", + "0x88af97ddc4937a95ec0dcd25e4173127260f91c8db2f6eac84afb789b363705fb3196235af631c70cafd09411d233589", + "0xa32df75b3f2c921b8767638fd289bcfc61e08597170186637a7128ffedd52c798c434485ac2c7de07014f9e895c2c3d8", + "0xb0a783832153650aa0d766a3a73ec208b6ce5caeb40b87177ffc035ab03c7705ecdd1090b6456a29f5fb7e90e2fa8930", + "0xb59c8e803b4c3486777d15fc2311b97f9ded1602fa570c7b0200bada36a49ee9ef4d4c1474265af8e1c38a93eb66b18b", + "0x982f2c85f83e852022998ff91bafbb6ff093ef22cf9d5063e083a48b29175ccbd51b9c6557151409e439096300981a6c", + "0x939e3b5989fefebb9d272a954659a4eb125b98c9da6953f5e628d26266bd0525ec38304b8d56f08d65abc4d6da4a8dbb", + "0x8898212fe05bc8de7d18503cb84a1c1337cc2c09d1eeef2b475aa79185b7322bf1f8e065f1bf871c0c927dd19faf1f6d", + "0x94b0393a41cd00f724aee2d4bc72103d626a5aecb4b5486dd1ef8ac27528398edf56df9db5c3d238d8579af368afeb09", + "0x96ac564450d998e7445dd2ea8e3fc7974d575508fa19e1c60c308d83b645864c029f2f6b7396d4ff4c1b24e92e3bac37", + "0x8adf6638e18aff3eb3b47617da696eb6c4bdfbecbbc3c45d3d0ab0b12cbad00e462fdfbe0c35780d21aa973fc150285e", + "0xb53f94612f818571b5565bbb295e74bada9b5f9794b3b91125915e44d6ddcc4da25510eab718e251a09c99534d6042d9", + "0x8b96462508d77ee083c376cd90807aebad8de96bca43983c84a4a6f196d5faf6619a2351f43bfeec101864c3bf255519", + "0xaeadf34657083fc71df33bd44af73bf5281c9ca6d906b9c745536e1819ea90b56107c55e2178ebad08f3ba75b3f81c86", + "0x9784ba29b2f0057b5af1d3ab2796d439b8753f1f749c73e791037461bdfc3f7097394283105b8ab01788ea5255a96710", + "0x8756241bda159d4a33bf74faba0d4594d963c370fb6a18431f279b4a865b070b0547a6d1613cf45b8cfb5f9236bbf831", + "0xb03ebfd6b71421dfd49a30460f9f57063eebfe31b9ceaa2a05c37c61522b35bdc09d7db3ad75c76c253c00ba282d3cd2", + "0xb34e7e6341fa9d854b2d3153bdda0c4ae2b2f442ab7af6f99a0975d45725aa48e36ae5f7011edd249862e91f499687d4", + "0xb462ee09dc3963a14354244313e3444de5cc37ea5ccfbf14cd9aca8027b59c4cb2a949bc30474497cab8123e768460e6", + "0xaea753290e51e2f6a21a9a0ee67d3a2713f95c2a5c17fe41116c87d3aa77b1683761264d704df1ac34f8b873bc88ef7b", + "0x98430592afd414394f98ddfff9f280fcb1c322dbe3510f45e1e9c4bb8ee306b3e0cf0282c0ee73ebb8ba087d4d9e0858", + "0xb95d3b5aaf54ffca11f4be8d57f76e14afdb20afc859dc7c7471e0b42031e8f3d461b726ecb979bdb2f353498dfe95ea", + "0x984d17f9b11a683132e0b5a9ee5945e3ff7054c2d5c716be73b29078db1d36f54c6e652fd2f52a19da313112e97ade07", + "0xab232f756b3fff3262be418a1af61a7e0c95ceebbc775389622a8e10610508cd6784ab7960441917a83cc191c58829ea", + "0xa28f41678d6e60de76b0e36ab10e4516e53e02e9c77d2b5af3cfeee3ce94cfa30c5797bd1daab20c98e1cad83ad0f633", + "0xb55395fca84dd3ccc05dd480cb9b430bf8631ff06e24cb51d54519703d667268c2f8afcde4ba4ed16bece8cc7bc8c6e0", + "0x8a8a5392a0e2ea3c7a8c51328fab11156004e84a9c63483b64e8f8ebf18a58b6ffa8fe8b9d95af0a2f655f601d096396", + "0xab480000fe194d23f08a7a9ec1c392334e9c687e06851f083845121ce502c06b54dda8c43092bcc1035df45cc752fe9b", + "0xb265644c29f628d1c7e8e25a5e845cabb21799371814730a41a363e1bda8a7be50fee7c3996a365b7fcba4642add10db", + "0xb8a915a3c685c2d4728f6931c4d29487cad764c5ce23c25e64b1a3259ac27235e41b23bfe7ae982921b4cb84463097df", + "0x8efa7338442a4b6318145a5440fc213b97869647eeae41b9aa3c0a27ee51285b73e3ae3b4a9423df255e6add58864aa9", + "0x9106d65444f74d217f4187dfc8fcf3810b916d1e4275f94f6a86d1c4f3565b131fd6cde1fa708bc05fe183c49f14941a", + "0x948252dac8026bbbdb0a06b3c9d66ec4cf9532163bab68076fda1bd2357b69e4b514729c15aaa83b5618b1977bbc60c4", + "0xae6596ccfdf5cbbc5782efe3bb0b101bb132dbe1d568854ca24cacc0b2e0e9fabcb2ca7ab42aecec412efd15cf8cb7a2", + "0x84a0b6c198ff64fd7958dfd1b40eac9638e8e0b2c4cd8cf5d8cdf80419baee76a05184bce6c5b635f6bf2d30055476a7", + "0x8893118be4a055c2b3da593dbca51b1ae2ea2469911acfb27ee42faf3e6c3ad0693d3914c508c0b05b36a88c8b312b76", + "0xb097479e967504deb6734785db7e60d1d8034d6ca5ba9552887e937f5e17bb413fccac2c1d1082154ed76609127860ad", + "0xa0294e6b9958f244d29943debf24b00b538b3da1116269b6e452bb12dc742226712fd1a15b9c88195afeb5d2415f505c", + "0xb3cc15f635080bc038f61b615f62b5b5c6f2870586191f59476e8368a73641d6ac2f7d0c1f54621982defdb318020230", + "0x99856f49b9fe1604d917c94d09cc0ed753d13d015d30587a94e6631ffd964b214e607deb8a69a8b5e349a7edf4309206", + "0xa8571e113ea22b4b4fce41a094da8c70de37830ae32e62c65c2fa5ad06a9bc29e884b945e73d448c72b176d6ecebfb58", + "0xa9e9c6e52beb0013273c29844956b3ce291023678107cdc785f7b44eff5003462841ad8780761b86aefc6b734adde7cf", + "0x80a784b0b27edb51ef2bad3aee80e51778dcaa0f3f5d3dcb5dc5d4f4b2cf7ae35b08de6680ea9dac53f8438b92eb09ef", + "0x827b543e609ea328e97e373f70ad72d4915a2d1daae0c60d44ac637231070e164c43a2a58db80a64df1c624a042b38f9", + "0xb449c65e8195202efdcb9bdb4e869a437313b118fef8b510cbbf8b79a4e99376adb749b37e9c20b51b31ed3310169e27", + "0x8ea3028f4548a79a94c717e1ed28ad4d8725b8d6ab18b021063ce46f665c79da3c49440c6577319dab2d036b7e08f387", + "0x897798431cfb17fe39f08f5f854005dc37b1c1ec1edba6c24bc8acb3b88838d0534a75475325a5ea98b326ad47dbad75", + "0x89cf232e6303b0751561960fd4dea5754a28c594daf930326b4541274ffb03c7dd75938e411eb9a375006a70ce38097f", + "0x9727c6ae7f0840f0b6c8bfb3a1a5582ceee705e0b5c59b97def7a7a2283edd4d3f47b7971e902a3a2079e40b53ff69b8", + "0xb76ed72b122c48679d221072efc0eeea063cb205cbf5f9ef0101fd10cb1075b8628166c83577cced654e1c001c7882f7", + "0xae908c42d208759da5ee9b405df85a6532ea35c6f0f6a1288d22870f59d98edc896841b8ac890a538e6c8d1e8b02d359", + "0x809d12fe4039a0ec80dc9be6a89acaab7797e5f7f9b163378f52f9a75a1d73b2e9ae6e3dd49e32ced439783c1cabbef5", + "0xa4149530b7f85d1098ba534d69548c6c612c416e8d35992fc1f64f4deeb41e09e49c6cf7aadbed7e846b91299358fe2d", + "0xa49342eacd1ec1148b8df1e253b1c015f603c39de11fa0a364ccb86ea32d69c34fd7aa6980a1fadcd8e785a57fa46f60", + "0x87d43eff5a006dc4dddcf76cc96c656a1f3a68f19f124181feab86c6cc9a52cb9189cdbb423414defdd9bb0ca8ff1ddc", + "0x861367e87a9aa2f0f68296ba50aa5dbc5713008d260cc2c7e62d407c2063064749324c4e8156dc21b749656cfebce26b", + "0xb5303c2f72e84e170e66ae1b0fbd51b8c7a6f27476eaf5694b64e8737d5c84b51fe90100b256465a4c4156dd873cddb0", + "0xb62849a4f891415d74f434cdc1d23c4a69074487659ca96e1762466b2b7a5d8525b056b891d0feea6fe6845cba8bc7fb", + "0x923dd9e0d6590a9307e8c4c23f13bae3306b580e297a937711a8b13e8de85e41a61462f25b7d352b682e8437bf2b4ab3", + "0x9147379860cd713cd46c94b8cdf75125d36c37517fbecf81ace9680b98ce6291cd1c3e472f84249cc3b2b445e314b1b6", + "0xa808a4f17ac21e3fb5cfef404e61fae3693ca3e688d375f99b6116779696059a146c27b06de3ac36da349b0649befd56", + "0x87787e9322e1b75e66c1f0d9ea0915722a232770930c2d2a95e9478c4b950d15ab767e30cea128f9ed65893bfc2d0743", + "0x9036a6ee2577223be105defe1081c48ea7319e112fff9110eb9f61110c319da25a6cea0464ce65e858635b079691ef1f", + "0xaf5548c7c24e1088c23b57ee14d26c12a83484c9fd9296edf1012d8dcf88243f20039b43c8c548c265ef9a1ffe9c1c88", + "0xa0fff520045e14065965fb8accd17e878d3fcaf9e0af2962c8954e50be6683d31fa0bf4816ab68f08630dbac6bfce52a", + "0xb4c1b249e079f6ae1781af1d97a60b15855f49864c50496c09c91fe1946266915b799f0406084d7783f5b1039116dd8b", + "0x8b0ffa5e7c498cb3879dddca34743b41eee8e2dea3d4317a6e961b58adb699ef0c92400c068d5228881a2b08121226bf", + "0x852ae8b19a1d80aa8ae5382e7ee5c8e7670ceb16640871c56b20b96b66b3b60e00015a3dde039446972e57b49a999ddd", + "0xa49942f04234a7d8492169da232cfff8051df86e8e1ba3db46aede02422c689c87dc1d99699c25f96cb763f5ca0983e5", + "0xb04b597b7760cf5dcf411ef896d1661e6d5b0db3257ac2cf64b20b60c6cc18fa10523bb958a48d010b55bac7b02ab3b1", + "0xa494591b51ea8285daecc194b5e5bd45ae35767d0246ac94fae204d674ee180c8e97ff15f71f28b7aeb175b8aea59710", + "0x97d2624919e78406e7460730680dea8e71c8571cf988e11441aeea54512b95bd820e78562c99372d535d96f7e200d20d", + "0xac693ddb00e48f76e667243b9b6a7008424043fb779e4f2252330285232c3fccac4da25cbd6d95fe9ad959ff305a91f6", + "0x8d20ca0a71a64a3f702a0825bb46bd810d03bebfb227683680d474a52f965716ff99e19a165ebaf6567987f4f9ee3c94", + "0xa5c516a438f916d1d68ca76996404792e0a66e97b7f18fc54c917bf10cf3211b62387932756e39e67e47b0bd6e88385a", + "0xb089614d830abc0afa435034cec7f851f2f095d479cacf1a3fb57272da826c499a52e7dcbc0eb85f4166fb94778e18e9", + "0xa8dacc943765d930848288192f4c69e2461c4b9bc6e79e30eeef9a543318cf9ae9569d6986c65c5668a89d49993f8e07", + "0xab5a9361fa339eec8c621bdad0a58078983abd8942d4282b22835d7a3a47e132d42414b7c359694986f7db39386c2e19", + "0x94230517fb57bd8eb26c6f64129b8b2abd0282323bf7b94b8bac7fab27b4ecc2c4290c294275e1a759de19f2216134f3", + "0xb8f158ea5006bc3b90b285246625faaa6ac9b5f5030dc69701b12f3b79a53ec7e92eeb5a63bbd1f9509a0a3469ff3ffc", + "0x8b6944fd8cb8540957a91a142fdcda827762aa777a31e8810ca6d026e50370ee1636fc351724767e817ca38804ebe005", + "0x82d1ee40fe1569c29644f79fa6c4033b7ed45cd2c3b343881f6eb0de2e79548fded4787fae19bed6ee76ed76ff9f2f11", + "0xa8924c7035e99eaed244ca165607e7e568b6c8085510dcdbaf6ebdbed405af2e6c14ee27d94ffef10d30aa52a60bf66d", + "0x956f82a6c2ae044635e85812581e4866c5fa2f427b01942047d81f6d79a14192f66fbbe77c9ffeaef4e6147097fdd2b5", + "0xb1100255a1bcf5e05b6aff1dfeb6e1d55b5d68d43a7457ba10cc76b61885f67f4d0d5179abda786e037ae95deb8eea45", + "0x99510799025e3e5e8fbf06dedb14c060c6548ba2bda824f687d3999dc395e794b1fb6514b9013f3892b6cf65cb0d65aa", + "0x8f9091cebf5e9c809aab415942172258f894e66e625d7388a05289183f01b8d994d52e05a8e69f784fba41db9ea357f0", + "0xa13d2eeb0776bdee9820ecb6693536720232848c51936bb4ef4fe65588d3f920d08a21907e1fdb881c1ad70b3725e726", + "0xa68b8f18922d550284c5e5dc2dda771f24c21965a6a4d5e7a71678178f46df4d8a421497aad8fcb4c7e241aba26378a0", + "0x8b7601f0a3c6ad27f03f2d23e785c81c1460d60100f91ea9d1cab978aa03b523150206c6d52ce7c7769c71d2c8228e9e", + "0xa8e02926430813caa851bb2b46de7f0420f0a64eb5f6b805401c11c9091d3b6d67d841b5674fa2b1dce0867714124cd8", + "0xb7968ecba568b8193b3058400af02c183f0a6df995a744450b3f7e0af7a772454677c3857f99c140bbdb2a09e832e8e0", + "0x8f20b1e9ba87d0a3f35309b985f3c18d2e8800f1ca7f0c52cadef773f1496b6070c936eea48c4a1cae83fd2524e9d233", + "0x88aef260042db0d641a51f40639dbeeefa9e9811df30bee695f3791f88a2f84d318f04e8926b7f47bf25956cb9e3754f", + "0x9725345893b647e9ba4e6a29e12f96751f1ae25fcaec2173e9a259921a1a7edb7a47159b3c8767e44d9e2689f5aa0f72", + "0x8c281e6f72752cb11e239e4df9341c45106eb7993c160e54423c2bffe10bc39d42624b45a1f673936ef2e1a02fc92f1a", + "0x90aba2f68bddb2fcce6c51430dacdfeec43ea8dc379660c99095df11017691ccf5faa27665cf4b9f0eea7728ae53c327", + "0xb7022695c16521c5704f49b7ddbdbec9b5f57ce0ceebe537bc0ebb0906d8196cc855a9afeb8950a1710f6a654464d93f", + "0x8fe1b9dd3c6a258116415d36e08374e094b22f0afb104385a5da48be17123e86fb8327baacc4f0d9ebae923d55d99bb5", + "0x817e85d8e3d19a4cbc1dec31597142c2daa4871bda89c2177fa719c00eda3344eb08b82eb92d4aa91a9eaacb3fc09783", + "0xb59053e1081d2603f1ca0ba553804d6fa696e1fd996631db8f62087b26a40dfef02098b0326bb75f99ec83b9267ca738", + "0x990a173d857d3ba81ff3789b931bfc9f5609cde0169b7f055fa3cb56451748d593d62d46ba33f80f9cafffe02b68dd14", + "0xb0c538dbba4954b809ab26f9f94a3cf1dcb77ce289eaec1d19f556c0ae4be1fa03af4a9b7057837541c3cc0a80538736", + "0xac3ba42f5f44f9e1fc453ce49c4ab79d0e1d5c42d3b30b1e098f3ab3f414c4c262fa12fb2be249f52d4aaf3c5224beb9", + "0xaf47467eb152e59870e21f0d4da2f43e093daf40180ab01438030684b114d025326928eaab12c41b81a066d94fce8436", + "0x98d1b58ba22e7289b1c45c79a24624f19b1d89e00f778eef327ec4856a9a897278e6f1a9a7e673844b31dde949153000", + "0x97ccb15dfadc7c59dca08cfe0d22df2e52c684cf97de1d94bc00d7ba24e020025130b0a39c0f4d46e4fc872771ee7875", + "0xb699e4ed9a000ff96ca296b2f09dce278832bc8ac96851ff3cff99ed3f6f752cfc0fea8571be28cd9b5a7ec36f1a08ee", + "0xb9f49f0edb7941cc296435ff0a912e3ad16848ee8765ab5f60a050b280d6ea585e5b34051b15f6b8934ef01ceb85f648", + "0xac3893df7b4ceab23c6b9054e48e8ba40d6e5beda8fbe90b814f992f52494186969b35d8c4cdc3c99890a222c9c09008", + "0xa41293ad22fae81dea94467bc1488c3707f3d4765059173980be93995fa4fcc3c9340796e3eed0beeb0ba0d9bb4fa3aa", + "0xa0543e77acd2aeecde13d18d258aeb2c7397b77f17c35a1992e8666ea7abcd8a38ec6c2741bd929abba2f766138618cc", + "0x92e79b22bc40e69f6527c969500ca543899105837b6b1075fa1796755c723462059b3d1b028e0b3df2559fa440e09175", + "0xa1fa1eac8f41a5197a6fb4aa1eae1a031c89f9c13ff9448338b222780cf9022e0b0925d930c37501a0ef7b2b00fdaf83", + "0xb3cb29ff73229f0637335f28a08ad8c5f166066f27c6c175164d0f26766a927f843b987ee9b309ed71cbf0a65d483831", + "0x84d4ab787f0ac00f104f4a734dc693d62d48c2aeb03913153da62c2ae2c27d11b1110dcef8980368dd84682ea2c1a308", + "0xab6a8e4bbc78d4a7b291ad3e9a8fe2d65f640524ba3181123b09d2d18a9e300e2509ccf7000fe47e75b65f3e992a2e7e", + "0xb7805ebe4f1a4df414003dc10bca805f2ab86ca75820012653e8f9b79c405196b0e2cab099f2ab953d67f0d60d31a0f9", + "0xb12c582454148338ea605d22bd00a754109063e22617f1f8ac8ddf5502c22a181c50c216c3617b9852aa5f26af56b323", + "0x86333ad9f898947e31ce747728dc8c887479e18d36ff3013f69ebef807d82c6981543b5c3788af93c4d912ba084d3cba", + "0xb514efa310dc4ad1258add138891e540d8c87142a881b5f46563cc58ecd1488e6d3a2fca54c0b72a929f3364ca8c333e", + "0xaa0a30f92843cf2f484066a783a1d75a7aa6f41f00b421d4baf20a6ac7886c468d0eea7ca8b17dd22f4f74631b62b640", + "0xb3b7dc63baec9a752e8433c0cdee4d0f9bc41f66f2b8d132faf925eef9cf89aae756fc132c45910f057122462605dc10", + "0xb9b8190dac5bfdeb59fd44f4da41a57e7f1e7d2c21faba9da91fa45cbeca06dcf299c9ae22f0c89ece11ac46352d619f", + "0x89f8cf36501ad8bdfeab863752a9090e3bfda57cf8fdeca2944864dc05925f501e252c048221bcc57136ab09a64b64b2", + "0xb0cbfaf317f05f97be47fc9d69eda2dd82500e00d42612f271a1fe24626408c28881f171e855bd5bd67409f9847502b4", + "0xa7c21a8fcede581bfd9847b6835eda62ba250bea81f1bb17372c800a19c732abe03064e64a2f865d974fb636cab4b859", + "0x95f9df524ba7a4667351696c4176b505d8ea3659f5ff2701173064acc624af69a0fad4970963736383b979830cb32260", + "0x856a74fe8b37a2e3afeac858c8632200485d438422a16ae3b29f359e470e8244995c63ad79c7e007ed063f178d0306fd", + "0xb37faa4d78fdc0bb9d403674dbea0176c2014a171c7be8527b54f7d1a32a76883d3422a3e7a5f5fcc5e9b31b57822eeb", + "0x8d37234d8594ec3fe75670b5c9cc1ec3537564d4739b2682a75b18b08401869a4264c0f264354219d8d896cded715db4", + "0xb5289ee5737f0e0bde485d32096d23387d68dab8f01f47821ab4f06cc79a967afe7355e72dc0c751d96b2747b26f6255", + "0x9085e1fdf9f813e9c3b8232d3c8863cd84ab30d45e8e0d3d6a0abd9ebc6fd70cdf749ff4d04390000e14c7d8c6655fc7", + "0x93a388c83630331eca4da37ea4a97b3b453238af474817cc0a0727fd3138dcb4a22de38c04783ec829c22cb459cb4e8e", + "0xa5377116027c5d061dbe24c240b891c08cdd8cd3f0899e848d682c873aff5b8132c1e7cfe76d2e5ed97ee0eb1d42cb68", + "0xa274c84b04338ed28d74683e2a7519c2591a3ce37c294d6f6e678f7d628be2db8eff253ede21823e2df7183e6552f622", + "0x8bc201147a842453a50bec3ac97671397bc086d6dfc9377fa38c2124cdc286abda69b7324f47d64da094ae011d98d9d9", + "0x9842d0c066c524592b76fbec5132bc628e5e1d21c424bec4555efca8619cc1fd8ea3161febcb8b9e8ab54702f4e815e2", + "0xa19191b713a07efe85c266f839d14e25660ee74452e6c691cd9997d85ae4f732052d802d3deb018bdd847caa298a894b", + "0xa24f71fc0db504da4e287dd118a4a74301cbcd16033937ba2abc8417956fcb4ae19b8e63b931795544a978137eff51cb", + "0xa90eec4a6a3a4b8f9a5b93d978b5026fcf812fe65585b008d7e08c4aaf21195a1d0699f12fc16f79b6a18a369af45771", + "0x8b551cf89737d7d06d9b3b9c4c1c73b41f2ea0af4540999c70b82dabff8580797cf0a3caf34c86c59a7069eb2e38f087", + "0xb8d312e6c635e7a216a1cda075ae77ba3e1d2fd501dc31e83496e6e81ed5d9c7799f8e578869c2e0e256fb29f5de10a7", + "0x8d144bdb8cae0b2cdb5b33d44bbc96984a5925202506a8cc65eb67ac904b466f5a7fe3e1cbf04aa785bbb7348c4bb73c", + "0xa101b3d58b7a98659244b88de0b478b3fb87dc5fc6031f6e689b99edf498abd43e151fd32bd4bbd240e0b3e59c440359", + "0x907453abca7d8e7151a05cc3d506c988007692fe7401395dc93177d0d07d114ab6cca0cc658eb94c0223fe8658295cad", + "0x825329ffbe2147ddb68f63a0a67f32d7f309657b8e5d9ab5bb34b3730bfa2c77a23eaaadb05def7d9f94a9e08fdc1e96", + "0x88ee923c95c1dac99ae7ed6067906d734d793c5dc5d26339c1bb3314abe201c5dccb33b9007351885eb2754e9a8ea06c", + "0x98bc9798543f5f1adc9f2cfcfa72331989420e9c3f6598c45269f0dc9b7c8607bbeaf03faa0aea2ddde2b8f17fdceff5", + "0x8ee87877702a79aef923ab970db6fa81561b3c07d5bf1a072af0a7bad765b4cbaec910afe1a91703feacc7822fa38a94", + "0x8060b9584aa294fe8adc2b22f67e988bc6da768eae91e429dcc43ddc53cfcc5d6753fdc1b420b268c7eb2fb50736a970", + "0xb344a5524d80a2f051870c7001f74fcf348a70fcf78dbd20c6ff9ca85d81567d2318c8b8089f2c4f195d6aec9fc15fa6", + "0x8f5a5d893e1936ed062149d20eb73d98b62b7f50ab5d93a6429c03656b36688d1c80cb5010e4977491e51fa0d7dd35d5", + "0x86fa32ebbf97328c5f5f15564e1238297e289ec3219b9a741724e9f3ae8d5c15277008f555863a478b247ba5dc601d44", + "0x9557e55377e279f4b6b5e0ffe01eca037cc13aac242d67dfcd0374a1e775c5ed5cb30c25fe21143fee54e3302d34a3ea", + "0x8cb6bcbc39372d23464a416ea7039f57ba8413cf3f00d9a7a5b356ab20dcb8ed11b3561f7bce372b8534d2870c7ee270", + "0xb5d59075cb5abde5391f64b6c3b8b50adc6e1f654e2a580b6d6d6eff3f4fbdd8fffc92e06809c393f5c8eab37f774c4b", + "0xafcfb6903ef13e493a1f7308675582f15af0403b6553e8c37afb8b2808ad21b88b347dc139464367dc260df075fea1ad", + "0x810fbbe808375735dd22d5bc7fc3828dc49fdd22cc2d7661604e7ac9c4535c1df578780affb3b895a0831640a945bcad", + "0x8056b0c678803b416f924e09a6299a33cf9ad7da6fe1ad7accefe95c179e0077da36815fde3716711c394e2c5ea7127f", + "0x8b67403702d06979be19f1d6dc3ec73cc2e81254d6b7d0cc49cd4fdda8cd51ab0835c1d2d26fc0ecab5df90585c2f351", + "0x87f97f9e6d4be07e8db250e5dd2bffdf1390665bc5709f2b631a6fa69a7fca958f19bd7cc617183da1f50ee63e9352b5", + "0xae151310985940471e6803fcf37600d7fa98830613e381e00dab943aec32c14162d51c4598e8847148148000d6e5af5c", + "0x81eb537b35b7602c45441cfc61b27fa9a30d3998fad35a064e05bc9479e9f10b62eba2b234b348219eea3cadcaac64bb", + "0x8a441434934180ab6f5bc541f86ebd06eadbee01f438836d797e930fa803a51510e005c9248cecc231a775b74d12b5e9", + "0x81f3c250a27ba14d8496a5092b145629eb2c2e6a5298438670375363f57e2798207832c8027c3e9238ad94ecdadfc4df", + "0xa6217c311f2f3db02ceaa5b6096849fe92b6f4b6f1491535ef8525f6ccee6130bed2809e625073ecbaddd4a3eb3df186", + "0x82d1c396f0388b942cf22b119d7ef1ad03d3dad49a74d9d01649ee284f377c8daddd095d596871669e16160299a210db", + "0xa40ddf7043c5d72a7246bd727b07f7fff1549f0e443d611de6f9976c37448b21664c5089c57f20105102d935ab82f27b", + "0xb6c03c1c97adf0c4bf4447ec71366c6c1bff401ba46236cd4a33d39291e7a1f0bb34bd078ba3a18d15c98993b153a279", + "0x8a94f5f632068399c359c4b3a3653cb6df2b207379b3d0cdace51afdf70d6d5cce6b89a2b0fee66744eba86c98fb21c2", + "0xb2f19e78ee85073f680c3bba1f07fd31b057c00b97040357d97855b54a0b5accb0d3b05b2a294568fcd6a4be6f266950", + "0xa74632d13bbe2d64b51d7a9c3ae0a5a971c19f51cf7596a807cea053e6a0f3719700976d4e394b356c0329a2dced9aa2", + "0xafef616d341a9bc94393b8dfba68ff0581436aa3a3adb7c26a1bbf2cf19fa877066191681f71f17f3cd6f9cf6bf70b5a", + "0x8ce96d93ae217408acf7eb0f9cbb9563363e5c7002e19bbe1e80760bc9d449daee2118f3878b955163ed664516b97294", + "0x8414f79b496176bc8b8e25f8e4cfee28f4f1c2ddab099d63d2aca1b6403d26a571152fc3edb97794767a7c4686ad557c", + "0xb6c61d01fd8ce087ef9f079bf25bf10090db483dd4f88c4a786d31c1bdf52065651c1f5523f20c21e75cea17df69ab73", + "0xa5790fd629be70545093631efadddc136661f63b65ec682609c38ef7d3d7fa4e56bdf94f06e263bc055b90cb1c6bcefe", + "0xb515a767e95704fb7597bca9e46f1753abacdc0e56e867ee3c6f4cd382643c2a28e65312c05ad040eaa3a8cbe7217a65", + "0x8135806a02ead6aa92e9adb6fefb91349837ab73105aaa7be488ef966aa8dfaafdfa64bbae30fcbfa55dd135a036a863", + "0x8f22435702716d76b1369750694540742d909d5e72b54d0878245fab7c269953b1c6f2b29c66f08d5e0263ca3a731771", + "0x8e0f8a8e8753e077dac95848212aeffd51c23d9b6d611df8b102f654089401954413ecbedc6367561ca599512ae5dda7", + "0x815a9084e3e2345f24c5fa559deec21ee1352fb60f4025c0779be65057f2d528a3d91593bd30d3a185f5ec53a9950676", + "0x967e6555ccba395b2cc1605f8484c5112c7b263f41ce8439a99fd1c71c5ed14ad02684d6f636364199ca48afbbde13be", + "0x8cd0ccf17682950b34c796a41e2ea7dd5367aba5e80a907e01f4cdc611e4a411918215e5aebf4292f8b24765d73314a6", + "0xa58bf1bbb377e4b3915df6f058a0f53b8fb8130fdec8c391f6bc82065694d0be59bb67ffb540e6c42cc8b380c6e36359", + "0x92af3151d9e6bfb3383d85433e953c0160859f759b0988431ec5893542ba40288f65db43c78a904325ef8d324988f09d", + "0x8011bbb05705167afb47d4425065630f54cb86cd462095e83b81dfebf348f846e4d8fbcf1c13208f5de1931f81da40b9", + "0x81c743c104fc3cb047885c9fa0fb9705c3a83ee24f690f539f4985509c3dafd507af3f6a2128276f45d5939ef70c167f", + "0xa2c9679b151c041aaf5efeac5a737a8f70d1631d931609fca16be1905682f35e291292874cb3b03f14994f98573c6f44", + "0xa4949b86c4e5b1d5c82a337e5ce6b2718b1f7c215148c8bfb7e7c44ec86c5c9476048fc5c01f57cb0920876478c41ad6", + "0x86c2495088bd1772152e527a1da0ef473f924ea9ab0e5b8077df859c28078f73c4e22e3a906b507fdf217c3c80808b5c", + "0x892e0a910dcf162bcea379763c3e2349349e4cda9402949255ac4a78dd5a47e0bf42f5bd0913951576b1d206dc1e536a", + "0xa7009b2c6b396138afe4754b7cc10dee557c51c7f1a357a11486b3253818531f781ea8107360c8d4c3b1cd96282353c0", + "0x911763ef439c086065cc7b4e57484ed6d693ea44acee4b18c9fd998116da55fbe7dcb8d2a0f0f9b32132fca82d73dff6", + "0xa722000b95a4a2d40bed81870793f15ba2af633f9892df507f2842e52452e02b5ea8dea6a043c2b2611d82376e33742a", + "0x9387ac49477bd719c2f92240d0bdfcf9767aad247ca93dc51e56106463206bc343a8ec855eb803471629a66fffb565d6", + "0x92819a1fa48ab4902939bb72a0a4e6143c058ea42b42f9bc6cea5df45f49724e2530daf3fc4f097cceefa2a8b9db0076", + "0x98eac7b04537653bc0f4941aae732e4b1f84bd276c992c64a219b8715eb1fb829b5cbd997d57feb15c7694c468f95f70", + "0xb275e7ba848ce21bf7996e12dbeb8dadb5d0e4f1cb5a0248a4f8f9c9fe6c74e3c93f4b61edbcb0a51af5a141e1c14bc7", + "0x97243189285aba4d49c53770c242f2faf5fd3914451da4931472e3290164f7663c726cf86020f8f181e568c72fd172d1", + "0x839b0b3c25dd412bee3dc24653b873cc65454f8f16186bb707bcd58259c0b6765fa4c195403209179192a4455c95f3b8", + "0x8689d1a870514568a074a38232e2ceb4d7df30fabeb76cff0aed5b42bf7f02baea12c5fadf69f4713464dbd52aafa55f", + "0x8958ae7b290f0b00d17c3e9fdb4dbf168432b457c7676829299dd428984aba892de1966fc106cfc58a772862ecce3976", + "0xa422bc6bd68b8870cfa5bc4ce71781fd7f4368b564d7f1e0917f6013c8bbb5b240a257f89ecfdbecb40fe0f3aa31d310", + "0xaa61f78130cebe09bc9a2c0a37f0dd57ed2d702962e37d38b1df7f17dc554b1d4b7a39a44182a452ce4c5eb31fa4cfcc", + "0xb7918bd114f37869bf1a459023386825821bfadce545201929d13ac3256d92a431e34f690a55d944f77d0b652cefeffc", + "0x819bba35fb6ace1510920d4dcff30aa682a3c9af9022e287751a6a6649b00c5402f14b6309f0aeef8fce312a0402915e", + "0x8b7c9ad446c6f63c11e1c24e24014bd570862b65d53684e107ba9ad381e81a2eaa96731b4b33536efd55e0f055071274", + "0x8fe79b53f06d33386c0ec7d6d521183c13199498594a46d44a8a716932c3ec480c60be398650bbfa044fa791c4e99b65", + "0x9558e10fb81250b9844c99648cf38fa05ec1e65d0ccbb18aa17f2d1f503144baf59d802c25be8cc0879fff82ed5034ad", + "0xb538a7b97fbd702ba84645ca0a63725be1e2891c784b1d599e54e3480e4670d0025526674ef5cf2f87dddf2290ba09f0", + "0x92eafe2e869a3dd8519bbbceb630585c6eb21712b2f31e1b63067c0acb5f9bdbbcbdb612db4ea7f9cc4e7be83d31973f", + "0xb40d21390bb813ab7b70a010dff64c57178418c62685761784e37d327ba3cb9ef62df87ecb84277c325a637fe3709732", + "0xb349e6fbf778c4af35fbed33130bd8a7216ed3ba0a79163ebb556e8eb8e1a7dad3456ddd700dad9d08d202491c51b939", + "0xa8fdaedecb251f892b66c669e34137f2650509ade5d38fbe8a05d9b9184bb3b2d416186a3640429bd1f3e4b903c159dd", + "0xac6167ebfee1dbab338eff7642f5e785fc21ef0b4ddd6660333fe398068cbd6c42585f62e81e4edbb72161ce852a1a4f", + "0x874b1fbf2ebe140c683bd7e4e0ab017afa5d4ad38055aaa83ee6bbef77dbc88a6ce8eb0dcc48f0155244af6f86f34c2d", + "0x903c58e57ddd9c446afab8256a6bb6c911121e6ccfb4f9b4ed3e2ed922a0e500a5cb7fa379d5285bc16e11dac90d1fda", + "0x8dae7a0cffa2fd166859cd1bf10ff82dd1932e488af377366b7efc0d5dec85f85fe5e8150ff86a79a39cefc29631733a", + "0xaa047857a47cc4dfc08585f28640420fcf105b881fd59a6cf7890a36516af0644d143b73f3515ab48faaa621168f8c31", + "0x864508f7077c266cc0cb3f7f001cb6e27125ebfe79ab57a123a8195f2e27d3799ff98413e8483c533b46a816a3557f1f", + "0x8bcd45ab1f9cbab36937a27e724af819838f66dfeb15923f8113654ff877bd8667c54f6307aaf0c35027ca11b6229bfd", + "0xb21aa34da9ab0a48fcfdd291df224697ce0c1ebc0e9b022fdee8750a1a4b5ba421c419541ed5c98b461eecf363047471", + "0xa9a18a2ab2fae14542dc336269fe612e9c1af6cf0c9ac933679a2f2cb77d3c304114f4d219ca66fe288adde30716775b", + "0xb5205989b92c58bdda71817f9a897e84100b5c4e708de1fced5c286f7a6f01ae96b1c8d845f3a320d77c8e2703c0e8b1", + "0xa364059412bbcc17b8907d43ac8e5df90bc87fd1724b5f99832d0d24559fae6fa76a74cff1d1eac8cbac6ec80b44af20", + "0xae709f2c339886b31450834cf29a38b26eb3b0779bd77c9ac269a8a925d1d78ea3837876c654b61a8fe834b3b6940808", + "0x8802581bba66e1952ac4dab36af371f66778958f4612901d95e5cac17f59165e6064371d02de8fb6fccf89c6dc8bd118", + "0xa313252df653e29c672cbcfd2d4f775089cb77be1077381cf4dc9533790e88af6cedc8a119158e7da5bf6806ad9b91a1", + "0x992a065b4152c7ef11515cd54ba9d191fda44032a01aed954acff3443377ee16680c7248d530b746b8c6dee2d634e68c", + "0xb627b683ee2b32c1ab4ccd27b9f6cce2fe097d96386fa0e5c182ad997c4c422ab8dfc03870cd830b8c774feb66537282", + "0xb823cf8a9aee03dadd013eb9efe40a201b4b57ef67efaae9f99683005f5d1bf55e950bf4af0774f50859d743642d3fea", + "0xb8a7449ffac0a3f206677097baf7ce00ca07a4d2bd9b5356fbcb83f3649b0fda07cfebad220c1066afba89e5a52abf4b", + "0xb2dd1a2f986395bb4e3e960fbbe823dbb154f823284ebc9068502c19a7609790ec0073d08bfa63f71e30c7161b6ef966", + "0x98e5236de4281245234f5d40a25b503505af140b503a035fc25a26159a9074ec81512b28f324c56ea2c9a5aa7ce90805", + "0x89070847dc8bbf5bc4ed073aa2e2a1f699cf0c2ca226f185a0671cecc54e7d3e14cd475c7752314a7a8e7476829da4bc", + "0xa9402dc9117fdb39c4734c0688254f23aed3dce94f5f53f5b7ef2b4bf1b71a67f85ab1a38ec224a59691f3bee050aeb3", + "0x957288f9866a4bf56a4204218ccc583f717d7ce45c01ea27142a7e245ad04a07f289cc044f8cf1f21d35e67e39299e9c", + "0xb2fb31ccb4e69113763d7247d0fc8edaae69b550c5c56aecacfd780c7217dc672f9fb7496edf4aba65dacf3361268e5b", + "0xb44a4526b2f1d6eb2aa8dba23bfa385ff7634572ab2afddd0546c3beb630fbfe85a32f42dd287a7fec069041411537f7", + "0x8db5a6660c3ac7fd7a093573940f068ee79a82bc17312af900b51c8c439336bc86ca646c6b7ab13aaaa008a24ca508ab", + "0x8f9899a6d7e8eb4367beb5c060a1f8e94d8a21099033ae582118477265155ba9e72176a67f7f25d7bad75a152b56e21a", + "0xa67de0e91ade8d69a0e00c9ff33ee2909b8a609357095fa12319e6158570c232e5b6f4647522efb7345ce0052aa9d489", + "0x82eb2414898e9c3023d57907a2b17de8e7eea5269029d05a94bfd7bf5685ac4a799110fbb375eb5e0e2bd16acf6458ae", + "0x94451fc7fea3c5a89ba701004a9693bab555cb622caf0896b678faba040409fdfd14a978979038b2a81e8f0abc4994d2", + "0xac879a5bb433998e289809a4a966bd02b4bf6a9c1cc276454e39c886efcf4fc68baebed575826bde577ab5aa71d735a9", + "0x880c0f8f49c875dfd62b4ddedde0f5c8b19f5687e693717f7e5c031bc580e58e13ab497d48b4874130a18743c59fdce3", + "0xb582af8d8ff0bf76f0a3934775e0b54c0e8fed893245d7d89cae65b03c8125b7237edc29dc45b4fe1a3fe6db45d280ee", + "0x89f337882ed3ae060aaee98efa20d79b6822bde9708c1c5fcee365d0ec9297f694cae37d38fd8e3d49717c1e86f078e7", + "0x826d2c1faea54061848b484e288a5f4de0d221258178cf87f72e14baaa4acc21322f8c9eab5dde612ef497f2d2e1d60b", + "0xa5333d4f227543e9cd741ccf3b81db79f2f03ca9e649e40d6a6e8ff9073e06da83683566d3b3c8d7b258c62970fb24d1", + "0xa28f08c473db06aaf4c043a2fae82b3c8cfaa160bce793a4c208e4e168fb1c65115ff8139dea06453c5963d95e922b94", + "0x8162546135cc5e124e9683bdfaa45833c18553ff06a0861c887dc84a5b12ae8cd4697f6794c7ef6230492c32faba7014", + "0xb23f0d05b74c08d6a7df1760792be83a761b36e3f8ae360f3c363fb196e2a9dd2de2e492e49d36561366e14daa77155c", + "0xb6f70d6c546722d3907c708d630dbe289771d2c8bf059c2e32b77f224696d750b4dda9b3a014debda38e7d02c9a77585", + "0x83bf4c4a9f3ca022c631017e7a30ea205ba97f7f5927cba8fc8489a4646eac6712cb821c5668c9ffe94d69d524374a27", + "0xb0371475425a8076d0dd5f733f55aabbe42d20a7c8ea7da352e736d4d35a327b2beb370dfcb05284e22cfd69c5f6c4cc", + "0xa0031ba7522c79211416c2cca3aa5450f96f8fee711552a30889910970ba13608646538781a2c08b834b140aadd7166f", + "0x99d273c80c7f2dc6045d4ed355d9fc6f74e93549d961f4a3b73cd38683f905934d359058cd1fc4da8083c7d75070487f", + "0xb0e4b0efa3237793e9dcce86d75aafe9879c5fa23f0d628649aef2130454dcf72578f9bf227b9d2b9e05617468e82588", + "0xa5ab076fa2e1c5c51f3ae101afdd596ad9d106bba7882b359c43d8548b64f528af19afa76cd6f40da1e6c5fca4def3fa", + "0x8ce2299e570331d60f6a6eff1b271097cd5f1c0e1113fc69b89c6a0f685dabea3e5bc2ac6bd789aa492ab189f89be494", + "0x91b829068874d911a310a5f9dee001021f97471307b5a3de9ec336870ec597413e1d92010ce320b619f38bed7c4f7910", + "0xb14fe91f4b07bf33b046e9285b66cb07927f3a8da0af548ac2569b4c4fb1309d3ced76d733051a20814e90dd5b75ffd1", + "0xabaab92ea6152d40f82940277c725aa768a631ee0b37f5961667f82fb990fc11e6d3a6a2752b0c6f94563ed9bb28265c", + "0xb7fe28543eca2a716859a76ab9092f135337e28109544f6bd2727728d0a7650428af5713171ea60bfc273d1c821d992c", + "0x8a4917b2ab749fc7343fc64bdf51b6c0698ff15d740cc7baf248c030475c097097d5a473bcc00d8c25817563fe0447b4", + "0xaa96156d1379553256350a0a3250166add75948fb9cde62aa555a0a9dc0a9cb7f2f7b8428aff66097bf6bfedaf14bbe2", + "0xae4ffeb9bdc76830d3eca2b705f30c1bdede6412fa064260a21562c8850c7fb611ec62bc68479fe48f692833e6f66d8d", + "0xb96543caaba9d051600a14997765d49e4ab10b07c7a92cccf0c90b309e6da334fdd6d18c96806cbb67a7801024fbd3c7", + "0x97b2b9ad76f19f500fcc94ca8e434176249f542ac66e5881a3dccd07354bdab6a2157018b19f8459437a68d8b86ba8e0", + "0xa8d206f6c5a14c80005849474fde44b1e7bcf0b2d52068f5f97504c3c035b09e65e56d1cf4b5322791ae2c2fdbd61859", + "0x936bad397ad577a70cf99bf9056584a61bd7f02d2d5a6cf219c05d770ae30a5cd902ba38366ce636067fc1dd10108d31", + "0xa77e30195ee402b84f3882e2286bf5380c0ed374a112dbd11e16cef6b6b61ab209d4635e6f35cdaaa72c1a1981d5dabe", + "0xa46ba4d3947188590a43c180757886a453a0503f79cc435322d92490446f37419c7b999fdf868a023601078070e03346", + "0x80d8d4c5542f223d48240b445d4d8cf6a75d120b060bc08c45e99a13028b809d910b534d2ac47fb7068930c54efd8da9", + "0x803be9c68c91b42b68e1f55e58917a477a9a6265e679ca44ee30d3eb92453f8c89c64eafc04c970d6831edd33d066902", + "0xb14b2b3d0dfe2bb57cee4cd72765b60ac33c1056580950be005790176543826c1d4fbd737f6cfeada6c735543244ab57", + "0xa9e480188bba1b8fb7105ff12215706665fd35bf1117bacfb6ab6985f4dbc181229873b82e5e18323c2b8f5de03258e0", + "0xa66a0f0779436a9a3999996d1e6d3000f22c2cac8e0b29cddef9636393c7f1457fb188a293b6c875b05d68d138a7cc4a", + "0x848397366300ab40c52d0dbbdafbafef6cd3dadf1503bb14b430f52bb9724188928ac26f6292a2412bc7d7aa620763c8", + "0x95466cc1a78c9f33a9aaa3829a4c8a690af074916b56f43ae46a67a12bb537a5ac6dbe61590344a25b44e8512355a4a7", + "0x8b5f7a959f818e3baf0887f140f4575cac093d0aece27e23b823cf421f34d6e4ff4bb8384426e33e8ec7b5eed51f6b5c", + "0x8d5e1368ec7e3c65640d216bcc5d076f3d9845924c734a34f3558ac0f16e40597c1a775a25bf38b187213fbdba17c93b", + "0xb4647c1b823516880f60d20c5cc38c7f80b363c19d191e8992226799718ee26b522a12ecb66556ed3d483aa4824f3326", + "0xac3abaea9cd283eb347efda4ed9086ea3acf495043e08d0d19945876329e8675224b685612a6badf8fd72fb6274902b1", + "0x8eae1ce292d317aaa71bcf6e77e654914edd5090e2e1ebab78b18bb41b9b1bc2e697439f54a44c0c8aa0d436ebe6e1a9", + "0x94dc7d1aec2c28eb43d93b111fa59aaa0d77d5a09501220bd411768c3e52208806abf973c6a452fd8292ff6490e0c9e2", + "0x8fd8967f8e506fef27d17b435d6b86b232ec71c1036351f12e6fb8a2e12daf01d0ee04451fb944d0f1bf7fd20e714d02", + "0x824e6865be55d43032f0fec65b3480ea89b0a2bf860872237a19a54bc186a85d2f8f9989cc837fbb325b7c72d9babe2c", + "0x8bd361f5adb27fd6f4e3f5de866e2befda6a8454efeb704aacc606f528c03f0faae888f60310e49440496abd84083ce2", + "0xb098a3c49f2aaa28b6b3e85bc40ce6a9cdd02134ee522ae73771e667ad7629c8d82c393fba9f27f5416986af4c261438", + "0xb385f5ca285ff2cfe64dcaa32dcde869c28996ed091542600a0b46f65f3f5a38428cca46029ede72b6cf43e12279e3d3", + "0x8196b03d011e5be5288196ef7d47137d6f9237a635ab913acdf9c595fa521d9e2df722090ec7eb0203544ee88178fc5f", + "0x8ed1270211ef928db18e502271b7edf24d0bbd11d97f2786aee772d70c2029e28095cf8f650b0328cc8a4c38d045316d", + "0xa52ab60e28d69b333d597a445884d44fd2a7e1923dd60f763951e1e45f83e27a4dac745f3b9eff75977b3280e132c15d", + "0x91e9fe78cdac578f4a4687f71b800b35da54b824b1886dafec073a3c977ce7a25038a2f3a5b1e35c2c8c9d1a7312417c", + "0xa42832173f9d9491c7bd93b21497fbfa4121687cd4d2ab572e80753d7edcbb42cfa49f460026fbde52f420786751a138", + "0x97b947126d84dcc70c97be3c04b3de3f239b1c4914342fa643b1a4bb8c4fe45c0fcb585700d13a7ed50784790c54bef9", + "0x860e407d353eac070e2418ef6cb80b96fc5f6661d6333e634f6f306779651588037be4c2419562c89c61f9aa2c4947f5", + "0xb2c9d93c3ba4e511b0560b55d3501bf28a510745fd666b3cb532db051e6a8617841ea2f071dda6c9f15619c7bfd2737f", + "0x8596f4d239aeeac78311207904d1bd863ef68e769629cc379db60e019aaf05a9d5cd31dc8e630b31e106a3a93e47cbc5", + "0x8b26e14e2e136b65c5e9e5c2022cee8c255834ea427552f780a6ca130a6446102f2a6f334c3f9a0308c53df09e3dba7e", + "0xb54724354eb515a3c8bed0d0677ff1db94ac0a07043459b4358cb90e3e1aa38ac23f2caa3072cf9647275d7cd61d0e80", + "0xb7ce9fe0e515e7a6b2d7ddcb92bc0196416ff04199326aea57996eef8c5b1548bd8569012210da317f7c0074691d01b7", + "0xa1a13549c82c877253ddefa36a29ea6a23695ee401fdd48e65f6f61e5ebd956d5e0edeff99484e9075cb35071fec41e2", + "0x838ba0c1e5bd1a6da05611ff1822b8622457ebd019cb065ece36a2d176bd2d889511328120b8a357e44569e7f640c1e6", + "0xb916eccff2a95519400bbf76b5f576cbe53cf200410370a19d77734dc04c05b585cfe382e8864e67142d548cd3c4c2f4", + "0xa610447cb7ca6eea53a6ff1f5fe562377dcb7f4aaa7300f755a4f5e8eba61e863c51dc2aa9a29b35525b550fbc32a0fe", + "0x9620e8f0f0ee9a4719aa9685eeb1049c5c77659ba6149ec4c158f999cfd09514794b23388879931fe26fea03fa471fd3", + "0xa9dcf8b679e276583cf5b9360702a185470d09aea463dc474ee9c8aee91ef089dacb073e334e47fbc78ec5417c90465c", + "0x8c9adee8410bdd99e5b285744cee61e2593b6300ff31a8a83b0ec28da59475a5c6fb9346fe43aadea2e6c3dad2a8e30a", + "0x97d5afe9b3897d7b8bb628b7220cf02d8ee4e9d0b78f5000d500aaf4c1df9251aaaabfd1601626519f9d66f00a821d4e", + "0x8a382418157b601ce4c3501d3b8409ca98136a4ef6abcbf62885e16e215b76b035c94d149cc41ff92e42ccd7c43b9b3d", + "0xb64b8d11fb3b01abb2646ac99fdb9c02b804ce15d98f9fe0fbf1c9df8440c71417487feb6cdf51e3e81d37104b19e012", + "0x849d7d044f9d8f0aab346a9374f0b3a5d14a9d1faa83dbacccbdc629ad1ef903a990940255564770537f8567521d17f0", + "0x829dbb0c76b996c2a91b4cbbe93ba455ca0d5729755e5f0c92aaee37dff7f36fcdc06f33aca41f1b609c784127b67d88", + "0x85a7c0069047b978422d264d831ab816435f63938015d2e977222b6b5746066c0071b7f89267027f8a975206ed25c1b0", + "0x84b9fbc1cfb302df1acdcf3dc5d66fd1edfe7839f7a3b2fb3a0d5548656249dd556104d7c32b73967bccf0f5bdcf9e3b", + "0x972220ac5b807f53eac37dccfc2ad355d8b21ea6a9c9b011c09fe440ddcdf7513e0b43d7692c09ded80d7040e26aa28f", + "0x855885ed0b21350baeca890811f344c553cf9c21024649c722453138ba29193c6b02c4b4994cd414035486f923472e28", + "0x841874783ae6d9d0e59daea03e96a01cbbe4ecaced91ae4f2c8386e0d87b3128e6d893c98d17c59e4de1098e1ad519dd", + "0x827e50fc9ce56f97a4c3f2f4cbaf0b22f1c3ce6f844ff0ef93a9c57a09b8bf91ebfbd2ba9c7f83c442920bffdaf288cc", + "0xa441f9136c7aa4c08d5b3534921b730e41ee91ab506313e1ba5f7c6f19fd2d2e1594e88c219834e92e6fb95356385aa7", + "0x97d75b144471bf580099dd6842b823ec0e6c1fb86dd0da0db195e65524129ea8b6fd4a7a9bbf37146269e938a6956596", + "0xa4b6fa87f09d5a29252efb2b3aaab6b3b6ea9fab343132a651630206254a25378e3e9d6c96c3d14c150d01817d375a8e", + "0xa31a671876d5d1e95fe2b8858dc69967231190880529d57d3cab7f9f4a2b9b458ac9ee5bdaa3289158141bf18f559efb", + "0x90bee6fff4338ba825974021b3b2a84e36d617e53857321f13d2b3d4a28954e6de3b3c0e629d61823d18a9763313b3bf", + "0x96b622a63153f393bb419bfcf88272ea8b3560dbd46b0aa07ada3a6223990d0abdd6c2adb356ef4be5641688c8d83941", + "0x84c202adeaff9293698022bc0381adba2cd959f9a35a4e8472288fd68f96f6de8be9da314c526d88e291c96b1f3d6db9", + "0x8ca01a143b8d13809e5a8024d03e6bc9492e22226073ef6e327edf1328ef4aff82d0bcccee92cb8e212831fa35fe1204", + "0xb2f970dbad15bfbefb38903c9bcc043d1367055c55dc1100a850f5eb816a4252c8c194b3132c929105511e14ea10a67d", + "0xa5e36556472a95ad57eb90c3b6623671b03eafd842238f01a081997ffc6e2401f76e781d049bb4aa94d899313577a9cf", + "0x8d1057071051772f7c8bedce53a862af6fd530dd56ae6321eaf2b9fc6a68beff5ed745e1c429ad09d5a118650bfd420a", + "0x8aadc4f70ace4fcb8d93a78610779748dcffc36182d45b932c226dc90e48238ea5daa91f137c65ed532352c4c4d57416", + "0xa2ea05ae37e673b4343232ae685ee14e6b88b867aef6dfac35db3589cbcd76f99540fed5c2641d5bb5a4a9f808e9bf0d", + "0x947f1abad982d65648ae4978e094332b4ecb90f482c9be5741d5d1cf5a28acf4680f1977bf6e49dd2174c37f11e01296", + "0xa27b144f1565e4047ba0e3f4840ef19b5095d1e281eaa463c5358f932114cbd018aa6dcf97546465cf2946d014d8e6d6", + "0x8574e1fc3acade47cd4539df578ce9205e745e161b91e59e4d088711a7ab5aa3b410d517d7304b92109924d9e2af8895", + "0xa48ee6b86b88015d6f0d282c1ae01d2a5b9e8c7aa3d0c18b35943dceb1af580d08a65f54dc6903cde82fd0d73ce94722", + "0x8875650cec543a7bf02ea4f2848a61d167a66c91ffaefe31a9e38dc8511c6a25bde431007eefe27a62af3655aca208dc", + "0x999b0a6e040372e61937bf0d68374e230346b654b5a0f591a59d33a4f95bdb2f3581db7c7ccb420cd7699ed709c50713", + "0x878c9e56c7100c5e47bbe77dc8da5c5fe706cec94d37fa729633bca63cace7c40102eee780fcdabb655f5fa47a99600e", + "0x865006fb5b475ada5e935f27b96f9425fc2d5449a3c106aa366e55ebed3b4ee42adc3c3f0ac19fd129b40bc7d6bc4f63", + "0xb7a7da847f1202e7bc1672553e68904715e84fd897d529243e3ecda59faa4e17ba99c649a802d53f6b8dfdd51f01fb74", + "0x8b2fb4432c05653303d8c8436473682933a5cb604da10c118ecfcd2c8a0e3132e125afef562bdbcc3df936164e5ce4f2", + "0x808d95762d33ddfa5d0ee3d7d9f327de21a994d681a5f372e2e3632963ea974da7f1f9e5bac8ccce24293509d1f54d27", + "0x932946532e3c397990a1df0e94c90e1e45133e347a39b6714c695be21aeb2d309504cb6b1dde7228ff6f6353f73e1ca2", + "0x9705e7c93f0cdfaa3fa96821f830fe53402ad0806036cd1b48adc2f022d8e781c1fbdab60215ce85c653203d98426da3", + "0xaa180819531c3ec1feb829d789cb2092964c069974ae4faad60e04a6afcce5c3a59aec9f11291e6d110a788d22532bc6", + "0x88f755097f7e25cb7dd3c449520c89b83ae9e119778efabb54fbd5c5714b6f37c5f9e0346c58c6ab09c1aef2483f895d", + "0x99fc03ab7810e94104c494f7e40b900f475fde65bdec853e60807ffd3f531d74de43335c3b2646b5b8c26804a7448898", + "0xaf2dea9683086bed1a179110efb227c9c00e76cd00a2015b089ccbcee46d1134aa18bda5d6cab6f82ae4c5cd2461ac21", + "0xa500f87ba9744787fdbb8e750702a3fd229de6b8817594348dec9a723b3c4240ddfa066262d002844b9e38240ce55658", + "0x924d0e45c780f5bc1c1f35d15dfc3da28036bdb59e4c5440606750ecc991b85be18bc9a240b6c983bc5430baa4c68287", + "0x865b11e0157b8bf4c5f336024b016a0162fc093069d44ac494723f56648bc4ded13dfb3896e924959ea11c96321afefc", + "0x93672d8607d4143a8f7894f1dcca83fb84906dc8d6dd7dd063bb0049cfc20c1efd933e06ca7bd03ea4cb5a5037990bfe", + "0x826891efbdff0360446825a61cd1fa04326dd90dae8c33dfb1ed97b045e165766dd070bd7105560994d0b2044bdea418", + "0x93c4a4a8bcbc8b190485cc3bc04175b7c0ed002c28c98a540919effd6ed908e540e6594f6db95cd65823017258fb3b1c", + "0xaeb2a0af2d2239fda9aa6b8234b019708e8f792834ff0dd9c487fa09d29800ddceddd6d7929faa9a3edcb9e1b3aa0d6b", + "0x87f11de7236d387863ec660d2b04db9ac08143a9a2c4dfff87727c95b4b1477e3bc473a91e5797313c58754905079643", + "0x80dc1db20067a844fe8baceca77f80db171a5ca967acb24e2d480eae9ceb91a3343c31ad1c95b721f390829084f0eae6", + "0x9825c31f1c18da0de3fa84399c8b40f8002c3cae211fb6a0623c76b097b4d39f5c50058f57a16362f7a575909d0a44a2", + "0xa99fc8de0c38dbf7b9e946de83943a6b46a762167bafe2a603fb9b86f094da30d6de7ed55d639aafc91936923ee414b3", + "0xad594678b407db5d6ea2e90528121f84f2b96a4113a252a30d359a721429857c204c1c1c4ff71d8bb5768c833f82e80e", + "0xb33d985e847b54510b9b007e31053732c8a495e43be158bd2ffcea25c6765bcbc7ca815f7c60b36ad088b955dd6e9350", + "0x815f8dfc6f90b3342ca3fbd968c67f324dae8f74245cbf8bc3bef10e9440c65d3a2151f951e8d18959ba01c1b50b0ec1", + "0x94c608a362dd732a1abc56e338637c900d59013db8668e49398b3c7a0cae3f7e2f1d1bf94c0299eeafe6af7f76c88618", + "0x8ebd8446b23e5adfcc393adc5c52fe172f030a73e63cd2d515245ca0dd02782ceed5bcdd9ccd9c1b4c5953dfac9c340c", + "0x820437f3f6f9ad0f5d7502815b221b83755eb8dc56cd92c29e9535eb0b48fb8d08c9e4fcc26945f9c8cca60d89c44710", + "0x8910e4e8a56bf4be9cc3bbf0bf6b1182a2f48837a2ed3c2aaec7099bfd7f0c83e14e608876b17893a98021ff4ab2f20d", + "0x9633918fde348573eec15ce0ad53ac7e1823aac86429710a376ad661002ae6d049ded879383faaa139435122f64047c6", + "0xa1f5e3fa558a9e89318ca87978492f0fb4f6e54a9735c1b8d2ecfb1d1c57194ded6e0dd82d077b2d54251f3bee1279e1", + "0xb208e22d04896abfd515a95c429ff318e87ff81a5d534c8ac2c33c052d6ffb73ef1dccd39c0bbe0734b596c384014766", + "0x986d5d7d2b5bde6d16336f378bd13d0e671ad23a8ec8a10b3fc09036faeeb069f60662138d7a6df3dfb8e0d36180f770", + "0xa2d4e6c5f5569e9cef1cddb569515d4b6ace38c8aed594f06da7434ba6b24477392cc67ba867c2b079545ca0c625c457", + "0xb5ac32b1d231957d91c8b7fc43115ce3c5c0d8c13ca633374402fa8000b6d9fb19499f9181844f0c10b47357f3f757ce", + "0x96b8bf2504b4d28fa34a4ec378e0e0b684890c5f44b7a6bb6e19d7b3db2ab27b1e2686389d1de9fbd981962833a313ea", + "0x953bfd7f6c3a0469ad432072b9679a25486f5f4828092401eff494cfb46656c958641a4e6d0d97d400bc59d92dba0030", + "0x876ab3cea7484bbfd0db621ec085b9ac885d94ab55c4bb671168d82b92e609754b86aaf472c55df3d81421d768fd108a", + "0x885ff4e67d9ece646d02dd425aa5a087e485c3f280c3471b77532b0db6145b69b0fbefb18aa2e3fa5b64928b43a94e57", + "0xb91931d93f806d0b0e6cc62a53c718c099526140f50f45d94b8bbb57d71e78647e06ee7b42aa5714aed9a5c05ac8533f", + "0xa0313eeadd39c720c9c27b3d671215331ab8d0a794e71e7e690f06bcd87722b531d6525060c358f35f5705dbb7109ccb", + "0x874c0944b7fedc6701e53344100612ddcb495351e29305c00ec40a7276ea5455465ffb7bded898886c1853139dfb1fc7", + "0x8dc31701a01ee8137059ca1874a015130d3024823c0576aa9243e6942ec99d377e7715ed1444cd9b750a64b85dcaa3e5", + "0x836d2a757405e922ec9a2dfdcf489a58bd48b5f9683dd46bf6047688f778c8dee9bc456de806f70464df0b25f3f3d238", + "0xb30b0a1e454a503ea3e2efdec7483eaf20b0a5c3cefc42069e891952b35d4b2c955cf615f3066285ed8fafd9fcfbb8f6", + "0x8e6d4044b55ab747e83ec8762ea86845f1785cc7be0279c075dadf08aca3ccc5a096c015bb3c3f738f647a4eadea3ba5", + "0xad7735d16ab03cbe09c029610aa625133a6daecfc990b297205b6da98eda8c136a7c50db90f426d35069708510d5ae9c", + "0x8d62d858bbb59ec3c8cc9acda002e08addab4d3ad143b3812098f3d9087a1b4a1bb255dcb1635da2402487d8d0249161", + "0x805beec33238b832e8530645a3254aeef957e8f7ea24bcfc1054f8b9c69421145ebb8f9d893237e8a001c857fedfc77e", + "0xb1005644be4b085e3f5775aa9bd3e09a283e87ddada3082c04e7a62d303dcef3b8cf8f92944c200c7ae6bb6bdf63f832", + "0xb4ba0e0790dc29063e577474ffe3b61f5ea2508169f5adc1e394934ebb473e356239413a17962bc3e5d3762d72cce8c2", + "0xa157ba9169c9e3e6748d9f1dd67fbe08b9114ade4c5d8fc475f87a764fb7e6f1d21f66d7905cd730f28a1c2d8378682a", + "0x913e52b5c93989b5d15e0d91aa0f19f78d592bc28bcfdfddc885a9980c732b1f4debb8166a7c4083c42aeda93a702898", + "0x90fbfc1567e7cd4e096a38433704d3f96a2de2f6ed3371515ccc30bc4dd0721a704487d25a97f3c3d7e4344472702d8d", + "0x89646043028ffee4b69d346907586fd12c2c0730f024acb1481abea478e61031966e72072ff1d5e65cb8c64a69ad4eb1", + "0xb125a45e86117ee11d2fb42f680ab4a7894edd67ff927ae2c808920c66c3e55f6a9d4588eee906f33a05d592e5ec3c04", + "0xaad47f5b41eae9be55fb4f67674ff1e4ae2482897676f964a4d2dcb6982252ee4ff56aac49578b23f72d1fced707525e", + "0xb9ddff8986145e33851b4de54d3e81faa3352e8385895f357734085a1616ef61c692d925fe62a5ed3be8ca49f5d66306", + "0xb3cb0963387ed28c0c0adf7fe645f02606e6e1780a24d6cecef5b7c642499109974c81a7c2a198b19862eedcea2c2d8c", + "0xac9c53c885457aaf5cb36c717a6f4077af701e0098eebd7aa600f5e4b14e6c1067255b3a0bc40e4a552025231be7de60", + "0x8e1a8d823c4603f6648ec21d064101094f2a762a4ed37dd2f0a2d9aa97b2d850ce1e76f4a4b8cae58819b058180f7031", + "0xb268b73bf7a179b6d22bd37e5e8cb514e9f5f8968c78e14e4f6d5700ca0d0ca5081d0344bb73b028970eebde3cb4124e", + "0xa7f57d71940f0edbd29ed8473d0149cae71d921dd15d1ff589774003e816b54b24de2620871108cec1ab9fa956ad6ce6", + "0x8053e6416c8b120e2b999cc2fc420a6a55094c61ac7f2a6c6f0a2c108a320890e389af96cbe378936132363c0d551277", + "0xb3823f4511125e5aa0f4269e991b435a0d6ceb523ebd91c04d7add5534e3df5fc951c504b4fd412a309fd3726b7f940b", + "0xae6eb04674d04e982ca9a6add30370ab90e303c71486f43ed3efbe431af1b0e43e9d06c11c3412651f304c473e7dbf39", + "0x96ab55e641ed2e677591f7379a3cd126449614181fce403e93e89b1645d82c4af524381ff986cae7f9cebe676878646d", + "0xb52423b4a8c37d3c3e2eca8f0ddbf7abe0938855f33a0af50f117fab26415fb0a3da5405908ec5fdc22a2c1f2ca64892", + "0x82a69ce1ee92a09cc709d0e3cd22116c9f69d28ea507fe5901f5676000b5179b9abe4c1875d052b0dd42d39925e186bb", + "0xa84c8cb84b9d5cfb69a5414f0a5283a5f2e90739e9362a1e8c784b96381b59ac6c18723a4aa45988ee8ef5c1f45cc97d", + "0xafd7efce6b36813082eb98257aae22a4c1ae97d51cac7ea9c852d4a66d05ef2732116137d8432e3f117119725a817d24", + "0xa0f5fe25af3ce021b706fcff05f3d825384a272284d04735574ce5fb256bf27100fad0b1f1ba0e54ae9dcbb9570ecad3", + "0x8751786cb80e2e1ff819fc7fa31c2833d25086534eb12b373d31f826382430acfd87023d2a688c65b5e983927e146336", + "0x8cf5c4b17fa4f3d35c78ce41e1dc86988fd1135cd5e6b2bb0c108ee13538d0d09ae7102609c6070f39f937b439b31e33", + "0xa9108967a2fedd7c322711eca8159c533dd561bedcb181b646de98bf5c3079449478eab579731bee8d215ae8852c7e21", + "0xb54c5171704f42a6f0f4e70767cdb3d96ffc4888c842eece343a01557da405961d53ffdc34d2f902ea25d3e1ed867cad", + "0xae8d4b764a7a25330ba205bf77e9f46182cd60f94a336bbd96773cf8064e3d39caf04c310680943dc89ed1fbad2c6e0d", + "0xaa5150e911a8e1346868e1b71c5a01e2a4bb8632c195861fb6c3038a0e9b85f0e09b3822e9283654a4d7bb17db2fc5f4", + "0x9685d3756ce9069bf8bb716cf7d5063ebfafe37e15b137fc8c3159633c4e006ff4887ddd0ae90360767a25c3f90cba7f", + "0x82155fd70f107ab3c8e414eadf226c797e07b65911508c76c554445422325e71af8c9a8e77fd52d94412a6fc29417cd3", + "0xabfae52f53a4b6e00760468d973a267f29321997c3dbb5aee36dc1f20619551229c0c45b9d9749f410e7f531b73378e8", + "0x81a76d921f8ef88e774fd985e786a4a330d779b93fad7def718c014685ca0247379e2e2a007ad63ee7f729cd9ed6ce1b", + "0x81947c84bc5e28e26e2e533af5ae8fe10407a7b77436dbf8f1d5b0bbe86fc659eae10f974659dc7c826c6dabd03e3a4b", + "0x92b8c07050d635b8dd4fd09df9054efe4edae6b86a63c292e73cc819a12a21dd7d104ce51fa56af6539dedf6dbe6f7b6", + "0xb44c579e3881f32b32d20c82c207307eca08e44995dd2aac3b2692d2c8eb2a325626c80ac81c26eeb38c4137ff95add5", + "0x97efab8941c90c30860926dea69a841f2dcd02980bf5413b9fd78d85904588bf0c1021798dbc16c8bbb32cce66c82621", + "0x913363012528b50698e904de0588bf55c8ec5cf6f0367cfd42095c4468fcc64954fbf784508073e542fee242d0743867", + "0x8ed203cf215148296454012bd10fddaf119203db1919a7b3d2cdc9f80e66729464fdfae42f1f2fc5af1ed53a42b40024", + "0xab84312db7b87d711e9a60824f4fe50e7a6190bf92e1628688dfcb38930fe87b2d53f9e14dd4de509b2216856d8d9188", + "0x880726def069c160278b12d2258eac8fa63f729cd351a710d28b7e601c6712903c3ac1e7bbd0d21e4a15f13ca49db5aa", + "0x980699cd51bac6283959765f5174e543ed1e5f5584b5127980cbc2ef18d984ecabba45042c6773b447b8e694db066028", + "0xaeb019cb80dc4cb4207430d0f2cd24c9888998b6f21d9bf286cc638449668d2eec0018a4cf3fe6448673cd6729335e2b", + "0xb29852f6aa6c60effdffe96ae88590c88abae732561d35cc19e82d3a51e26cb35ea00986193e07f90060756240f5346e", + "0xa0fa855adc5ba469f35800c48414b8921455950a5c0a49945d1ef6e8f2a1881f2e2dfae47de6417270a6bf49deeb091d", + "0xb6c7332e3b14813641e7272d4f69ecc7e09081df0037d6dab97ce13a9e58510f5c930d300633f208181d9205c5534001", + "0x85a6c050f42fce560b5a8d54a11c3bbb8407abbadd859647a7b0c21c4b579ec65671098b74f10a16245dc779dff7838e", + "0x8f3eb34bb68759d53c6677de4de78a6c24dd32c8962a7fb355ed362572ef8253733e6b52bc21c9f92ecd875020a9b8de", + "0xa17dd44181e5dab4dbc128e1af93ec22624b57a448ca65d2d9e246797e4af7d079e09c6e0dfb62db3a9957ce92f098d5", + "0xa56a1b854c3183082543a8685bb34cae1289f86cfa8123a579049dbd059e77982886bfeb61bf6e05b4b1fe4e620932e7", + "0xaedae3033cb2fb7628cb4803435bdd7757370a86f808ae4cecb9a268ad0e875f308c048c80cbcac523de16b609683887", + "0x9344905376aa3982b1179497fac5a1d74b14b7038fd15e3b002db4c11c8bfc7c39430db492cdaf58b9c47996c9901f28", + "0xa3bfafdae011a19f030c749c3b071f83580dee97dd6f949e790366f95618ca9f828f1daaeabad6dcd664fcef81b6556d", + "0x81c03d8429129e7e04434dee2c529194ddb01b414feda3adee2271eb680f6c85ec872a55c9fa9d2096f517e13ed5abcc", + "0x98205ef3a72dff54c5a9c82d293c3e45d908946fa74bb749c3aabe1ab994ea93c269bcce1a266d2fe67a8f02133c5985", + "0x85a70aeed09fda24412fadbafbbbf5ba1e00ac92885df329e147bfafa97b57629a3582115b780d8549d07d19b7867715", + "0xb0fbe81c719f89a57d9ea3397705f898175808c5f75f8eb81c2193a0b555869ba7bd2e6bc54ee8a60cea11735e21c68c", + "0xb03a0bd160495ee626ff3a5c7d95bc79d7da7e5a96f6d10116600c8fa20bedd1132f5170f25a22371a34a2d763f2d6d0", + "0xa90ab04091fbca9f433b885e6c1d60ab45f6f1daf4b35ec22b09909d493a6aab65ce41a6f30c98239cbca27022f61a8b", + "0xb66f92aa3bf2549f9b60b86f99a0bd19cbdd97036d4ae71ca4b83d669607f275260a497208f6476cde1931d9712c2402", + "0xb08e1fdf20e6a9b0b4942f14fa339551c3175c1ffc5d0ab5b226b6e6a322e9eb0ba96adc5c8d59ca4259e2bdd04a7eb0", + "0xa2812231e92c1ce74d4f5ac3ab6698520288db6a38398bb38a914ac9326519580af17ae3e27cde26607e698294022c81", + "0xabfcbbcf1d3b9e84c02499003e490a1d5d9a2841a9e50c7babbef0b2dd20d7483371d4dc629ba07faf46db659459d296", + "0xb0fe9f98c3da70927c23f2975a9dc4789194d81932d2ad0f3b00843dd9cbd7fb60747a1da8fe5a79f136a601becf279d", + "0xb130a6dba7645165348cb90f023713bed0eefbd90a976b313521c60a36d34f02032e69a2bdcf5361e343ed46911297ec", + "0x862f0cffe3020cea7a5fd4703353aa1eb1be335e3b712b29d079ff9f7090d1d8b12013011e1bdcbaa80c44641fd37c9f", + "0x8c6f11123b26633e1abb9ed857e0bce845b2b3df91cc7b013b2fc77b477eee445da0285fc6fc793e29d5912977f40916", + "0x91381846126ea819d40f84d3005e9fb233dc80071d1f9bb07f102bf015f813f61e5884ffffb4f5cd333c1b1e38a05a58", + "0x8add7d908de6e1775adbd39c29a391f06692b936518db1f8fde74eb4f533fc510673a59afb86e3a9b52ade96e3004c57", + "0x8780e086a244a092206edcde625cafb87c9ab1f89cc3e0d378bc9ee776313836160960a82ec397bc3800c0a0ec3da283", + "0xa6cb4cd9481e22870fdd757fae0785edf4635e7aacb18072fe8dc5876d0bab53fb99ce40964a7d3e8bcfff6f0ab1332f", + "0xaf30ff47ecc5b543efba1ba4706921066ca8bb625f40e530fb668aea0551c7647a9d126e8aba282fbcce168c3e7e0130", + "0x91b0bcf408ce3c11555dcb80c4410b5bc2386d3c05caec0b653352377efdcb6bab4827f2018671fc8e4a0e90d772acc1", + "0xa9430b975ef138b6b2944c7baded8fe102d31da4cfe3bd3d8778bda79189c99d38176a19c848a19e2d1ee0bddd9a13c1", + "0xaa5a4eef849d7c9d2f4b018bd01271c1dd83f771de860c4261f385d3bdcc130218495860a1de298f14b703ec32fa235f", + "0xb0ce79e7f9ae57abe4ff366146c3b9bfb38b0dee09c28c28f5981a5d234c6810ad4d582751948affb480d6ae1c8c31c4", + "0xb75122748560f73d15c01a8907d36d06dc068e82ce22b84b322ac1f727034493572f7907dec34ebc3ddcc976f2f89ed7", + "0xb0fc7836369a3e4411d34792d6bd5617c14f61d9bba023dda64e89dc5fb0f423244e9b48ee64869258931daa9753a56f", + "0x8956d7455ae9009d70c6e4a0bcd7610e55f37494cf9897a8f9e1b904cc8febc3fd2d642ebd09025cfff4609ad7e3bc52", + "0xad741efe9e472026aa49ae3d9914cb9c1a6f37a54f1a6fe6419bebd8c7d68dca105a751c7859f4389505ede40a0de786", + "0xb52f418797d719f0d0d0ffb0846788b5cba5d0454a69a2925de4b0b80fa4dd7e8c445e5eac40afd92897ed28ca650566", + "0xa0ab65fb9d42dd966cd93b1de01d7c822694669dd2b7a0c04d99cd0f3c3de795f387b9c92da11353412f33af5c950e9a", + "0xa0052f44a31e5741a331f7cac515a08b3325666d388880162d9a7b97598fde8b61f9ff35ff220df224eb5c4e40ef0567", + "0xa0101cfdc94e42b2b976c0d89612a720e55d145a5ef6ef6f1f78cf6de084a49973d9b5d45915349c34ce712512191e3c", + "0xa0dd99fcf3f5cead5aaf08e82212df3a8bb543c407a4d6fab88dc5130c1769df3f147e934a46f291d6c1a55d92b86917", + "0xa5939153f0d1931bbda5cf6bdf20562519ea55fbfa978d6dbc6828d298260c0da7a50c37c34f386e59431301a96c2232", + "0x9568269f3f5257200f9ca44afe1174a5d3cf92950a7f553e50e279c239e156a9faaa2a67f288e3d5100b4142efe64856", + "0xb746b0832866c23288e07f24991bbf687cad794e7b794d3d3b79367566ca617d38af586cdc8d6f4a85a34835be41d54f", + "0xa871ce28e39ab467706e32fec1669fda5a4abba2f8c209c6745df9f7a0fa36bbf1919cf14cb89ea26fa214c4c907ae03", + "0xa08dacdd758e523cb8484f6bd070642c0c20e184abdf8e2a601f61507e93952d5b8b0c723c34fcbdd70a8485eec29db2", + "0x85bdb78d501382bb95f1166b8d032941005661aefd17a5ac32df9a3a18e9df2fc5dc2c1f07075f9641af10353cecc0c9", + "0x98d730c28f6fa692a389e97e368b58f4d95382fad8f0baa58e71a3d7baaea1988ead47b13742ce587456f083636fa98e", + "0xa557198c6f3d5382be9fb363feb02e2e243b0c3c61337b3f1801c4a0943f18e38ce1a1c36b5c289c8fa2aa9d58742bab", + "0x89174f79201742220ac689c403fc7b243eed4f8e3f2f8aba0bf183e6f5d4907cb55ade3e238e3623d9885f03155c4d2b", + "0xb891d600132a86709e06f3381158db300975f73ea4c1f7c100358e14e98c5fbe792a9af666b85c4e402707c3f2db321e", + "0xb9e5b2529ef1043278c939373fc0dbafe446def52ddd0a8edecd3e4b736de87e63e187df853c54c28d865de18a358bb6", + "0x8589b2e9770340c64679062c5badb7bbef68f55476289b19511a158a9a721f197da03ece3309e059fc4468b15ac33aa3", + "0xaad8c6cd01d785a881b446f06f1e9cd71bca74ba98674c2dcddc8af01c40aa7a6d469037498b5602e76e9c91a58d3dbd", + "0xabaccb1bd918a8465f1bf8dbe2c9ad4775c620b055550b949a399f30cf0d9eb909f3851f5b55e38f9e461e762f88f499", + "0xae62339d26db46e85f157c0151bd29916d5cc619bd4b832814b3fd2f00af8f38e7f0f09932ffe5bba692005dab2d9a74", + "0x93a6ff30a5c0edf8058c89aba8c3259e0f1b1be1b80e67682de651e5346f7e1b4b4ac3d87cbaebf198cf779524aff6bf", + "0x8980a2b1d8f574af45b459193c952400b10a86122b71fca2acb75ee0dbd492e7e1ef5b959baf609a5172115e371f3177", + "0x8c2f49f3666faee6940c75e8c7f6f8edc3f704cca7a858bbb7ee5e96bba3b0cf0993996f781ba6be3b0821ef4cb75039", + "0xb14b9e348215b278696018330f63c38db100b0542cfc5be11dc33046e3bca6a13034c4ae40d9cef9ea8b34fef0910c4e", + "0xb59bc3d0a30d66c16e6a411cb641f348cb1135186d5f69fda8b0a0934a5a2e7f6199095ba319ec87d3fe8f1ec4a06368", + "0x8874aca2a3767aa198e4c3fec2d9c62d496bc41ff71ce242e9e082b7f38cdf356089295f80a301a3cf1182bde5308c97", + "0xb1820ebd61376d91232423fc20bf008b2ba37e761199f4ef0648ea2bd70282766799b4de814846d2f4d516d525c8daa7", + "0xa6b202e5dedc16a4073e04a11af3a8509b23dfe5a1952f899adeb240e75c3f5bde0c424f811a81ea48d343591faffe46", + "0xa69becee9c93734805523b92150a59a62eed4934f66056b645728740d42223f2925a1ad38359ba644da24d9414f4cdda", + "0xad72f0f1305e37c7e6b48c272323ee883320994cb2e0d850905d6655fafc9f361389bcb9c66b3ff8d2051dbb58c8aa96", + "0xb563600bd56fad7c8853af21c6a02a16ed9d8a8bbeea2c31731d63b976d83cb05b9779372d898233e8fd597a75424797", + "0xb0abb78ce465bf7051f563c62e8be9c57a2cc997f47c82819300f36e301fefd908894bb2053a9d27ce2d0f8c46d88b5b", + "0xa071a85fb8274bac2202e0cb8e0e2028a5e138a82d6e0374d39ca1884a549c7c401312f00071b91f455c3a2afcfe0cda", + "0xb931c271513a0f267b9f41444a5650b1918100b8f1a64959c552aff4e2193cc1b9927906c6fa7b8a8c68ef13d79aaa52", + "0xa6a1bb9c7d32cb0ca44d8b75af7e40479fbce67d216b48a2bb680d3f3a772003a49d3cd675fc64e9e0f8fabeb86d6d61", + "0xb98d609858671543e1c3b8564162ad828808bb50ded261a9f8690ded5b665ed8368c58f947365ed6e84e5a12e27b423d", + "0xb3dca58cd69ec855e2701a1d66cad86717ff103ef862c490399c771ad28f675680f9500cb97be48de34bcdc1e4503ffd", + "0xb34867c6735d3c49865e246ddf6c3b33baf8e6f164db3406a64ebce4768cb46b0309635e11be985fee09ab7a31d81402", + "0xacb966c554188c5b266624208f31fab250b3aa197adbdd14aee5ab27d7fb886eb4350985c553b20fdf66d5d332bfd3fe", + "0x943c36a18223d6c870d54c3b051ef08d802b85e9dd6de37a51c932f90191890656c06adfa883c87b906557ae32d09da0", + "0x81bca7954d0b9b6c3d4528aadf83e4bc2ef9ea143d6209bc45ae9e7ae9787dbcd8333c41f12c0b6deee8dcb6805e826a", + "0xaba176b92256efb68f574e543479e5cf0376889fb48e3db4ebfb7cba91e4d9bcf19dcfec444c6622d9398f06de29e2b9", + "0xb9f743691448053216f6ece7cd699871fff4217a1409ceb8ab7bdf3312d11696d62c74b0664ba0a631b1e0237a8a0361", + "0xa383c2b6276fa9af346b21609326b53fb14fdf6f61676683076e80f375b603645f2051985706d0401e6fbed7eb0666b6", + "0xa9ef2f63ec6d9beb8f3d04e36807d84bda87bdd6b351a3e4a9bf7edcb5618c46c1f58cfbf89e64b40f550915c6988447", + "0xa141b2d7a82f5005eaea7ae7d112c6788b9b95121e5b70b7168d971812f3381de8b0082ac1f0a82c7d365922ebd2d26a", + "0xb1b76ef8120e66e1535c17038b75255a07849935d3128e3e99e56567b842fb1e8d56ef932d508d2fb18b82f7868fe1a9", + "0x8e2e234684c81f21099f5c54f6bbe2dd01e3b172623836c77668a0c49ce1fe218786c3827e4d9ae2ea25c50a8924fb3c", + "0xa5caf5ff948bfd3c4ca3ffbdfcd91eec83214a6c6017235f309a0bbf7061d3b0b466307c00b44a1009cf575163898b43", + "0x986415a82ca16ebb107b4c50b0c023c28714281db0bcdab589f6cb13d80e473a3034b7081b3c358e725833f6d845cb14", + "0xb94836bf406ac2cbacb10e6df5bcdfcc9d9124ae1062767ca4e322d287fd5e353fdcebd0e52407cb3cd68571258a8900", + "0x83c6d70a640b33087454a4788dfd9ef3ed00272da084a8d36be817296f71c086b23b576f98178ab8ca6a74f04524b46b", + "0xad4115182ad784cfe11bcfc5ce21fd56229cc2ce77ac82746e91a2f0aa53ca6593a22efd2dc4ed8d00f84542643d9c58", + "0xab1434c5e5065da826d10c2a2dba0facccab0e52b506ce0ce42fbe47ced5a741797151d9ecc99dc7d6373cfa1779bbf6", + "0x8a8b591d82358d55e6938f67ea87a89097ab5f5496f7260adb9f649abb289da12b498c5b2539c2f9614fb4e21b1f66b0", + "0x964f355d603264bc1f44c64d6d64debca66f37dff39c971d9fc924f2bc68e6c187b48564a6dc82660a98b035f8addb5d", + "0xb66235eaaf47456bc1dc4bde454a028e2ce494ece6b713a94cd6bf27cf18c717fd0c57a5681caaa2ad73a473593cdd7a", + "0x9103e3bb74304186fa4e3e355a02da77da4aca9b7e702982fc2082af67127ebb23a455098313c88465bc9b7d26820dd5", + "0xb6a42ff407c9dd132670cdb83cbad4b20871716e44133b59a932cd1c3f97c7ac8ff7f61acfaf8628372508d8dc8cad7c", + "0x883a9c21c16a167a4171b0f084565c13b6f28ba7c4977a0de69f0a25911f64099e7bbb4da8858f2e93068f4155d04e18", + "0x8dbb3220abc6a43220adf0331e3903d3bfd1d5213aadfbd8dfcdf4b2864ce2e96a71f35ecfb7a07c3bbabf0372b50271", + "0xb4ad08aee48e176bda390b7d9acf2f8d5eb008f30d20994707b757dc6a3974b2902d29cd9b4d85e032810ad25ac49e97", + "0x865bb0f33f7636ec501bb634e5b65751c8a230ae1fa807a961a8289bbf9c7fe8c59e01fbc4c04f8d59b7f539cf79ddd5", + "0x86a54d4c12ad1e3605b9f93d4a37082fd26e888d2329847d89afa7802e815f33f38185c5b7292293d788ad7d7da1df97", + "0xb26c8615c5e47691c9ff3deca3021714662d236c4d8401c5d27b50152ce7e566266b9d512d14eb63e65bc1d38a16f914", + "0x827639d5ce7db43ba40152c8a0eaad443af21dc92636cc8cc2b35f10647da7d475a1e408901cd220552fddad79db74df", + "0xa2b79a582191a85dbe22dc384c9ca3de345e69f6aa370aa6d3ff1e1c3de513e30b72df9555b15a46586bd27ea2854d9d", + "0xae0d74644aba9a49521d3e9553813bcb9e18f0b43515e4c74366e503c52f47236be92dfbd99c7285b3248c267b1de5a0", + "0x80fb0c116e0fd6822a04b9c25f456bdca704e2be7bdc5d141dbf5d1c5eeb0a2c4f5d80db583b03ef3e47517e4f9a1b10", + "0xac3a1fa3b4a2f30ea7e0a114cdc479eb51773573804c2a158d603ad9902ae8e39ffe95df09c0d871725a5d7f9ba71a57", + "0xb56b2b0d601cba7f817fa76102c68c2e518c6f20ff693aad3ff2e07d6c4c76203753f7f91686b1801e8c4659e4d45c48", + "0x89d50c1fc56e656fb9d3915964ebce703cb723fe411ab3c9eaa88ccc5d2b155a9b2e515363d9c600d3c0cee782c43f41", + "0xb24207e61462f6230f3cd8ccf6828357d03e725769f7d1de35099ef9ee4dca57dbce699bb49ed994462bee17059d25ce", + "0xb886f17fcbcbfcd08ac07f04bb9543ef58510189decaccea4b4158c9174a067cb67d14b6be3c934e6e2a18c77efa9c9c", + "0xb9c050ad9cafd41c6e2e192b70d080076eed59ed38ea19a12bd92fa17b5d8947d58d5546aaf5e8e27e1d3b5481a6ce51", + "0xaaf7a34d3267e3b1ddbc54c641e3922e89303f7c86ebebc7347ebca4cffad5b76117dac0cbae1a133053492799cd936f", + "0xa9ee604ada50adef82e29e893070649d2d4b7136cc24fa20e281ce1a07bd736bf0de7c420369676bcbcecff26fb6e900", + "0x9855315a12a4b4cf80ab90b8bd13003223ba25206e52fd4fe6a409232fbed938f30120a3db23eab9c53f308bd8b9db81", + "0x8cd488dd7a24f548a3cf03c54dec7ff61d0685cb0f6e5c46c2d728e3500d8c7bd6bba0156f4bf600466fda53e5b20444", + "0x890ad4942ebac8f5b16c777701ab80c68f56fa542002b0786f8fea0fb073154369920ac3dbfc07ea598b82f4985b8ced", + "0x8de0cf9ddc84c9b92c59b9b044387597799246b30b9f4d7626fc12c51f6e423e08ee4cbfe9289984983c1f9521c3e19d", + "0xb474dfb5b5f4231d7775b3c3a8744956b3f0c7a871d835d7e4fd9cc895222c7b868d6c6ce250de568a65851151fac860", + "0x86433b6135d9ed9b5ee8cb7a6c40e5c9d30a68774cec04988117302b8a02a11a71a1e03fd8e0264ef6611d219f103007", + "0x80b9ed4adbe9538fb1ef69dd44ec0ec5b57cbfea820054d8d445b4261962624b4c70ac330480594bc5168184378379c3", + "0x8b2e83562ccd23b7ad2d17f55b1ab7ef5fbef64b3a284e6725b800f3222b8bdf49937f4a873917ada9c4ddfb090938c2", + "0xabe78cebc0f5a45d754140d1f685e387489acbfa46d297a8592aaa0d676a470654f417a4f7d666fc0b2508fab37d908e", + "0xa9c5f8ff1f8568e252b06d10e1558326db9901840e6b3c26bbd0cd5e850cb5fb3af3f117dbb0f282740276f6fd84126f", + "0x975f8dc4fb55032a5df3b42b96c8c0ffecb75456f01d4aef66f973cb7270d4eff32c71520ceefc1adcf38d77b6b80c67", + "0xb043306ed2c3d8a5b9a056565afd8b5e354c8c4569fda66b0d797a50a3ce2c08cffbae9bbe292da69f39e89d5dc7911e", + "0x8d2afc36b1e44386ba350c14a6c1bb31ff6ea77128a0c5287584ac3584282d18516901ce402b4644a53db1ed8e7fa581", + "0x8c294058bed53d7290325c363fe243f6ec4f4ea2343692f4bac8f0cb86f115c069ccb8334b53d2e42c067691ad110dba", + "0xb92157b926751aaf7ef82c1aa8c654907dccab6376187ee8b3e8c0c82811eae01242832de953faa13ebaff7da8698b3e", + "0xa780c4bdd9e4ba57254b09d745075cecab87feda78c88ffee489625c5a3cf96aa6b3c9503a374a37927d9b78de9bd22b", + "0x811f548ef3a2e6a654f7dcb28ac9378de9515ed61e5a428515d9594a83e80b35c60f96a5cf743e6fab0d3cb526149f49", + "0x85a4dccf6d90ee8e094731eec53bd00b3887aec6bd81a0740efddf812fd35e3e4fe4f983afb49a8588691c202dabf942", + "0xb152c2da6f2e01c8913079ae2b40a09b1f361a80f5408a0237a8131b429677c3157295e11b365b1b1841924b9efb922e", + "0x849b9efee8742502ffd981c4517c88ed33e4dd518a330802caff168abae3cd09956a5ee5eda15900243bc2e829016b74", + "0x955a933f3c18ec0f1c0e38fa931e4427a5372c46a3906ebe95082bcf878c35246523c23f0266644ace1fa590ffa6d119", + "0x911989e9f43e580c886656377c6f856cdd4ff1bd001b6db3bbd86e590a821d34a5c6688a29b8d90f28680e9fdf03ba69", + "0xb73b8b4f1fd6049fb68d47cd96a18fcba3f716e0a1061aa5a2596302795354e0c39dea04d91d232aec86b0bf2ba10522", + "0x90f87456d9156e6a1f029a833bf3c7dbed98ca2f2f147a8564922c25ae197a55f7ea9b2ee1f81bf7383197c4bad2e20c", + "0x903cba8b1e088574cb04a05ca1899ab00d8960580c884bd3c8a4c98d680c2ad11410f2b75739d6050f91d7208cac33a5", + "0x9329987d42529c261bd15ecedd360be0ea8966e7838f32896522c965adfc4febf187db392bd441fb43bbd10c38fdf68b", + "0x8178ee93acf5353baa349285067b20e9bb41aa32d77b5aeb7384fe5220c1fe64a2461bd7a83142694fe673e8bbf61b7c", + "0xa06a8e53abcff271b1394bcc647440f81fb1c1a5f29c27a226e08f961c3353f4891620f2d59b9d1902bf2f5cc07a4553", + "0xaaf5fe493b337810889e777980e6bbea6cac39ac66bc0875c680c4208807ac866e9fda9b5952aa1d04539b9f4a4bec57", + "0xaa058abb1953eceac14ccfa7c0cc482a146e1232905dcecc86dd27f75575285f06bbae16a8c9fe8e35d8713717f5f19f", + "0x8f15dd732799c879ca46d2763453b359ff483ca33adb1d0e0a57262352e0476c235987dc3a8a243c74bc768f93d3014c", + "0xa61cc8263e9bc03cce985f1663b8a72928a607121005a301b28a278e9654727fd1b22bc8a949af73929c56d9d3d4a273", + "0x98d6dc78502d19eb9f921225475a6ebcc7b44f01a2df6f55ccf6908d65b27af1891be2a37735f0315b6e0f1576c1f8d8", + "0x8bd258b883f3b3793ec5be9472ad1ff3dc4b51bc5a58e9f944acfb927349ead8231a523cc2175c1f98e7e1e2b9f363b8", + "0xaeacc2ecb6e807ad09bedd99654b097a6f39840e932873ace02eabd64ccfbb475abdcb62939a698abf17572d2034c51e", + "0xb8ccf78c08ccd8df59fd6eda2e01de328bc6d8a65824d6f1fc0537654e9bc6bf6f89c422dd3a295cce628749da85c864", + "0x8f91fd8cb253ba2e71cc6f13da5e05f62c2c3b485c24f5d68397d04665673167fce1fc1aec6085c69e87e66ec555d3fd", + "0xa254baa10cb26d04136886073bb4c159af8a8532e3fd36b1e9c3a2e41b5b2b6a86c4ebc14dbe624ee07b7ccdaf59f9ab", + "0x94e3286fe5cd68c4c7b9a7d33ae3d714a7f265cf77cd0e9bc19fc51015b1d1c34ad7e3a5221c459e89f5a043ee84e3a9", + "0xa279da8878af8d449a9539bec4b17cea94f0242911f66fab275b5143ab040825f78c89cb32a793930609415cfa3a1078", + "0xac846ceb89c9e5d43a2991c8443079dc32298cd63e370e64149cec98cf48a6351c09c856f2632fd2f2b3d685a18bbf8b", + "0xa847b27995c8a2e2454aaeb983879fb5d3a23105c33175839f7300b7e1e8ec3efd6450e9fa3f10323609dee7b98c6fd5", + "0xa2f432d147d904d185ff4b2de8c6b82fbea278a2956bc406855b44c18041854c4f0ecccd472d1d0dff1d8aa8e281cb1d", + "0x94a48ad40326f95bd63dff4755f863a1b79e1df771a1173b17937f9baba57b39e651e7695be9f66a472f098b339364fc", + "0xa12a0ccd8f96e96e1bc6494341f7ebce959899341b3a084aa1aa87d1c0d489ac908552b7770b887bb47e7b8cbc3d8e66", + "0x81a1f1681bda923bd274bfe0fbb9181d6d164fe738e54e25e8d4849193d311e2c4253614ed673c98af2c798f19a93468", + "0xabf71106a05d501e84cc54610d349d7d5eae21a70bd0250f1bebbf412a130414d1c8dbe673ffdb80208fd72f1defa4d4", + "0x96266dc2e0df18d8136d79f5b59e489978eee0e6b04926687fe389d4293c14f36f055c550657a8e27be4118b64254901", + "0x8df5dcbefbfb4810ae3a413ca6b4bf08619ca53cd50eb1dde2a1c035efffc7b7ac7dff18d403253fd80104bd83dc029e", + "0x9610b87ff02e391a43324a7122736876d5b3af2a137d749c52f75d07b17f19900b151b7f439d564f4529e77aa057ad12", + "0xa90a5572198b40fe2fcf47c422274ff36c9624df7db7a89c0eb47eb48a73a03c985f4ac5016161c76ca317f64339bce1", + "0x98e5e61a6ab6462ba692124dba7794b6c6bde4249ab4fcc98c9edd631592d5bc2fb5e38466691a0970a38e48d87c2e43", + "0x918cefb8f292f78d4db81462c633daf73b395e772f47b3a7d2cea598025b1d8c3ec0cbff46cdb23597e74929981cde40", + "0xa98918a5dc7cf610fe55f725e4fd24ce581d594cb957bb9b4e888672e9c0137003e1041f83e3f1d7b9caab06462c87d4", + "0xb92b74ac015262ca66c33f2d950221e19d940ba3bf4cf17845f961dc1729ae227aa9e1f2017829f2135b489064565c29", + "0xa053ee339f359665feb178b4e7ee30a85df37debd17cacc5a27d6b3369d170b0114e67ad1712ed26d828f1df641bcd99", + "0x8c3c8bad510b35da5ce5bd84b35c958797fbea024ad1c97091d2ff71d9b962e9222f65a9b776e5b3cc29c36e1063d2ee", + "0xaf99dc7330fe7c37e850283eb47cc3257888e7c197cb0d102edf94439e1e02267b6a56306d246c326c4c79f9dc8c6986", + "0xafecb2dc34d57a725efbd7eb93d61eb29dbe8409b668ab9ea040791f5b796d9be6d4fc10d7f627bf693452f330cf0435", + "0x93334fedf19a3727a81a6b6f2459db859186227b96fe7a391263f69f1a0884e4235de64d29edebc7b99c44d19e7c7d7a", + "0x89579c51ac405ad7e9df13c904061670ce4b38372492764170e4d3d667ed52e5d15c7cd5c5991bbfa3a5e4e3fa16363e", + "0x9778f3e8639030f7ef1c344014f124e375acb8045bd13d8e97a92c5265c52de9d1ffebaa5bc3e1ad2719da0083222991", + "0x88f77f34ee92b3d36791bdf3326532524a67d544297dcf1a47ff00b47c1b8219ff11e34034eab7d23b507caa2fd3c6b9", + "0xa699c1e654e7c484431d81d90657892efeb4adcf72c43618e71ca7bd7c7a7ebbb1db7e06e75b75dc4c74efd306b5df3f", + "0x81d13153baebb2ef672b5bdb069d3cd669ce0be96b742c94e04038f689ff92a61376341366b286eee6bf3ae85156f694", + "0x81efb17de94400fdacc1deec2550cbe3eecb27c7af99d8207e2f9be397e26be24a40446d2a09536bb5172c28959318d9", + "0x989b21ebe9ceab02488992673dc071d4d5edec24bff0e17a4306c8cb4b3c83df53a2063d1827edd8ed16d6e837f0d222", + "0x8d6005d6536825661b13c5fdce177cb37c04e8b109b7eb2b6d82ea1cb70efecf6a0022b64f84d753d165edc2bba784a3", + "0xa32607360a71d5e34af2271211652d73d7756d393161f4cf0da000c2d66a84c6826e09e759bd787d4fd0305e2439d342", + "0xaaad8d6f6e260db45d51b2da723be6fa832e76f5fbcb77a9a31e7f090dd38446d3b631b96230d78208cae408c288ac4e", + "0xabcfe425255fd3c5cffd3a818af7650190c957b6b07b632443f9e33e970a8a4c3bf79ac9b71f4d45f238a04d1c049857", + "0xaeabf026d4c783adc4414b5923dbd0be4b039cc7201219f7260d321f55e9a5b166d7b5875af6129c034d0108fdc5d666", + "0xaf49e740c752d7b6f17048014851f437ffd17413c59797e5078eaaa36f73f0017c3e7da020310cfe7d3c85f94a99f203", + "0x8854ca600d842566e3090040cd66bb0b3c46dae6962a13946f0024c4a8aca447e2ccf6f240045f1ceee799a88cb9210c", + "0xb6c03b93b1ab1b88ded8edfa1b487a1ed8bdce8535244dddb558ffb78f89b1c74058f80f4db2320ad060d0c2a9c351cc", + "0xb5bd7d17372faff4898a7517009b61a7c8f6f0e7ed4192c555db264618e3f6e57fb30a472d169fea01bf2bf0362a19a8", + "0x96eb1d38319dc74afe7e7eb076fcd230d19983f645abd14a71e6103545c01301b31c47ae931e025f3ecc01fb3d2f31fa", + "0xb55a8d30d4403067def9b65e16f867299f8f64c9b391d0846d4780bc196569622e7e5b64ce799b5aefac8f965b2a7a7b", + "0x8356d199a991e5cbbff608752b6291731b6b6771aed292f8948b1f41c6543e4ab1bedc82dd26d10206c907c03508df06", + "0x97f4137445c2d98b0d1d478049de952610ad698c91c9d0f0e7227d2aae690e9935e914ec4a2ea1fbf3fc1dddfeeacebb", + "0xaf5621707e0938320b15ddfc87584ab325fbdfd85c30efea36f8f9bd0707d7ec12c344eff3ec21761189518d192df035", + "0x8ac7817e71ea0825b292687928e349da7140285d035e1e1abff0c3704fa8453faaae343a441b7143a74ec56539687cc4", + "0x8a5e0a9e4758449489df10f3386029ada828d1762e4fb0a8ffe6b79e5b6d5d713cb64ed95960e126398b0cdb89002bc9", + "0x81324be4a71208bbb9bca74b77177f8f1abb9d3d5d9db195d1854651f2cf333cd618d35400da0f060f3e1b025124e4b2", + "0x849971d9d095ae067525b3cbc4a7dfae81f739537ade6d6cec1b42fb692d923176197a8770907c58069754b8882822d6", + "0x89f830825416802477cc81fdf11084885865ee6607aa15aa4eb28e351c569c49b8a1b9b5e95ddc04fa0ebafe20071313", + "0x9240aeeaff37a91af55f860b9badd466e8243af9e8c96a7aa8cf348cd270685ab6301bc135b246dca9eda696f8b0e350", + "0xacf74db78cc33138273127599eba35b0fb4e7b9a69fe02dae18fc6692d748ca332bd00b22afa8e654ed587aab11833f3", + "0xb091e6d37b157b50d76bd297ad752220cd5c9390fac16dc838f8557aed6d9833fc920b61519df21265406216315e883f", + "0xa6446c429ebf1c7793c622250e23594c836b2fbcaf6c5b3d0995e1595a37f50ea643f3e549b0be8bbdadd69044d72ab9", + "0x93e675353bd60e996bf1c914d5267eeaa8a52fc3077987ccc796710ef9becc6b7a00e3d82671a6bdfb8145ee3c80245a", + "0xa2f731e43251d04ed3364aa2f072d05355f299626f2d71a8a38b6f76cf08c544133f7d72dd0ab4162814b674b9fc7fa6", + "0x97a8b791a5a8f6e1d0de192d78615d73d0c38f1e557e4e15d15adc663d649e655bc8da3bcc499ef70112eafe7fb45c7a", + "0x98cd624cbbd6c53a94469be4643c13130916b91143425bcb7d7028adbbfede38eff7a21092af43b12d4fab703c116359", + "0x995783ce38fd5f6f9433027f122d4cf1e1ff3caf2d196ce591877f4a544ce9113ead60de2de1827eaff4dd31a20d79a8", + "0x8cf251d6f5229183b7f3fe2f607a90b4e4b6f020fb4ba2459d28eb8872426e7be8761a93d5413640a661d73e34a5b81f", + "0xb9232d99620652a3aa7880cad0876f153ff881c4ed4c0c2e7b4ea81d5d42b70daf1a56b869d752c3743c6d4c947e6641", + "0x849716f938f9d37250cccb1bf77f5f9fde53096cdfc6f2a25536a6187029a8f1331cdbed08909184b201f8d9f04b792f", + "0x80c7c4de098cbf9c6d17b14eba1805e433b5bc905f6096f8f63d34b94734f2e4ebf4bce8a177efd1186842a61204a062", + "0xb790f410cf06b9b8daadceeb4fd5ff40a2deda820c8df2537e0a7554613ae3948e149504e3e79aa84889df50c8678eeb", + "0x813aab8bd000299cd37485b73cd7cba06e205f8efb87f1efc0bae8b70f6db2bc7702eb39510ad734854fb65515fe9d0f", + "0x94f0ab7388ac71cdb67f6b85dfd5945748afb2e5abb622f0b5ad104be1d4d0062b651f134ba22385c9e32c2dfdcccce1", + "0xab6223dca8bd6a4f969e21ccd9f8106fc5251d321f9e90cc42cea2424b3a9c4e5060a47eeef6b23c7976109b548498e8", + "0x859c56b71343fce4d5c5b87814c47bf55d581c50fd1871a17e77b5e1742f5af639d0e94d19d909ec7dfe27919e954e0c", + "0xaae0d632b6191b8ad71b027791735f1578e1b89890b6c22e37de0e4a6074886126988fe8319ae228ac9ef3b3bcccb730", + "0x8ca9f32a27a024c3d595ecfaf96b0461de57befa3b331ab71dc110ec3be5824fed783d9516597537683e77a11d334338", + "0xa061df379fb3f4b24816c9f6cd8a94ecb89b4c6dc6cd81e4b8096fa9784b7f97ab3540259d1de9c02eb91d9945af4823", + "0x998603102ac63001d63eb7347a4bb2bf4cf33b28079bb48a169076a65c20d511ccd3ef696d159e54cc8e772fb5d65d50", + "0x94444d96d39450872ac69e44088c252c71f46be8333a608a475147752dbb99db0e36acfc5198f158509401959c12b709", + "0xac1b51b6c09fe055c1d7c9176eea9adc33f710818c83a1fbfa073c8dc3a7eb3513cbdd3f5960b7845e31e3e83181e6ba", + "0x803d530523fc9e1e0f11040d2412d02baef3f07eeb9b177fa9bfa396af42eea898a4276d56e1db998dc96ae47b644cb2", + "0x85a3c9fc7638f5bf2c3e15ba8c2fa1ae87eb1ceb44c6598c67a2948667a9dfa41e61f66d535b4e7fda62f013a5a8b885", + "0xa961cf5654c46a1a22c29baf7a4e77837a26b7f138f410e9d1883480ed5fa42411d522aba32040b577046c11f007388e", + "0xad1154142344f494e3061ef45a34fab1aaacf5fdf7d1b26adbb5fbc3d795655fa743444e39d9a4119b4a4f82a6f30441", + "0xb1d6c30771130c77806e7ab893b73d4deb590b2ff8f2f8b5e54c2040c1f3e060e2bd99afc668cf706a2df666a508bbf6", + "0xa00361fd440f9decabd98d96c575cd251dc94c60611025095d1201ef2dedde51cb4de7c2ece47732e5ed9b3526c2012c", + "0xa85c5ab4d17d328bda5e6d839a9a6adcc92ff844ec25f84981e4f44a0e8419247c081530f8d9aa629c7eb4ca21affba6", + "0xa4ddd3eab4527a2672cf9463db38bc29f61460e2a162f426b7852b7a7645fbd62084fd39a8e4d60e1958cce436dd8f57", + "0x811648140080fe55b8618f4cf17f3c5a250adb0cd53d885f2ddba835d2b4433188e41fc0661faac88e4ff910b16278c0", + "0xb85c7f1cfb0ed29addccf7546023a79249e8f15ac2d14a20accbfef4dd9dc11355d599815fa09d2b6b4e966e6ea8cff1", + "0xa10b5d8c260b159043b020d5dd62b3467df2671afea6d480ca9087b7e60ed170c82b121819d088315902842d66c8fb45", + "0x917e191df1bcf3f5715419c1e2191da6b8680543b1ba41fe84ed07ef570376e072c081beb67b375fca3565a2565bcabb", + "0x881fd967407390bfd7badc9ab494e8a287559a01eb07861f527207c127eadea626e9bcc5aa9cca2c5112fbac3b3f0e9c", + "0x959fd71149af82cc733619e0e5bf71760ca2650448c82984b3db74030d0e10f8ab1ce1609a6de6f470fe8b5bd90df5b3", + "0xa3370898a1c5f33d15adb4238df9a6c945f18b9ada4ce2624fc32a844f9ece4c916a64e9442225b6592afa06d2e015f2", + "0x817efb8a791435e4236f7d7b278181a5fa34587578c629dbc14fbf9a5c26772290611395eecd20222a4c58649fc256d8", + "0xa04c9876acf2cfdc8ef96de4879742709270fa1d03fe4c8511fbef2d59eb0aaf0336fa2c7dfe41a651157377fa217813", + "0x81e15875d7ea7f123e418edf14099f2e109d4f3a6ce0eb65f67fe9fb10d2f809a864a29f60ad3fc949f89e2596b21783", + "0xb49f529975c09e436e6bc202fdc16e3fdcbe056db45178016ad6fdece9faad4446343e83aed096209690b21a6910724f", + "0x879e8eda589e1a279f7f49f6dd0580788c040d973748ec4942dbe51ea8fbd05983cc919b78f0c6b92ef3292ae29db875", + "0x81a2b74b2118923f34139a102f3d95e7eee11c4c2929c2576dee200a5abfd364606158535a6c9e4178a6a83dbb65f3c4", + "0x8913f281d8927f2b45fc815d0f7104631cb7f5f7278a316f1327d670d15868daadd2a64e3eb98e1f53fe7e300338cc80", + "0xa6f815fba7ef9af7fbf45f93bc952e8b351f5de6568a27c7c47a00cb39a254c6b31753794f67940fc7d2e9cc581529f4", + "0xb3722a15c66a0014ce4d082de118def8d39190c15678a472b846225585f3a83756ae1b255b2e3f86a26168878e4773b2", + "0x817ae61ab3d0dd5b6e24846b5a5364b1a7dc2e77432d9fed587727520ae2f307264ea0948c91ad29f0aea3a11ff38624", + "0xb3db467464415fcad36dc1de2d6ba7686772a577cc2619242ac040d6734881a45d3b40ed4588db124e4289cfeec4bbf6", + "0xad66a14f5a54ac69603b16e5f1529851183da77d3cc60867f10aea41339dd5e06a5257982e9e90a352cdd32750f42ee4", + "0xadafa3681ef45d685555601a25a55cf23358319a17f61e2179e704f63df83a73bdd298d12cf6cef86db89bd17119e11d", + "0xa379dc44cb6dd3b9d378c07b2ec654fec7ca2f272de6ba895e3d00d20c9e4c5550498a843c8ac67e4221db2115bedc1c", + "0xb7bf81c267a78efc6b9e5a904574445a6487678d7ef70054e3e93ea6a23f966c2b68787f9164918e3b16d2175459ed92", + "0xb41d66a13a4afafd5760062b77f79de7e6ab8ccacde9c6c5116a6d886912fb491dc027af435b1b44aacc6af7b3c887f2", + "0x9904d23a7c1c1d2e4bab85d69f283eb0a8e26d46e8b7b30224438015c936729b2f0af7c7c54c03509bb0500acb42d8a4", + "0xae30d65e9e20c3bfd603994ae2b175ff691d51f3e24b2d058b3b8556d12ca4c75087809062dddd4aaac81c94d15d8a17", + "0x9245162fab42ac01527424f6013310c3eb462982518debef6c127f46ba8a06c705d7dc9f0a41e796ba8d35d60ae6cc64", + "0x87fab853638d7a29a20f3ba2b1a7919d023e9415bfa78ebb27973d8cbc7626f584dc5665d2e7ad71f1d760eba9700d88", + "0x85aac46ecd330608e5272430970e6081ff02a571e8ea444f1e11785ea798769634a22a142d0237f67b75369d3c484a8a", + "0x938c85ab14894cc5dfce3d80456f189a2e98eddbc8828f4ff6b1df1dcb7b42b17ca2ff40226a8a1390a95d63dca698dd", + "0xa18ce1f846e3e3c4d846822f60271eecf0f5d7d9f986385ac53c5ace9589dc7c0188910448c19b91341a1ef556652fa9", + "0x8611608a9d844f0e9d7584ad6ccf62a5087a64f764caf108db648a776b5390feb51e5120f0ef0e9e11301af3987dd7dc", + "0x8106333ba4b4de8d1ae43bc9735d3fea047392e88efd6a2fa6f7b924a18a7a265ca6123c3edc0f36307dd7fb7fe89257", + "0xa91426fa500951ff1b051a248c050b7139ca30dde8768690432d597d2b3c4357b11a577be6b455a1c5d145264dcf81fc", + "0xb7f9f90e0e450f37b081297f7f651bad0496a8b9afd2a4cf4120a2671aaaa8536dce1af301258bfbfdb122afa44c5048", + "0x84126da6435699b0c09fa4032dec73d1fca21d2d19f5214e8b0bea43267e9a8dd1fc44f8132d8315e734c8e2e04d7291", + "0xaff064708103884cb4f1a3c1718b3fc40a238d35cf0a7dc24bdf9823693b407c70da50df585bf5bc4e9c07d1c2d203e8", + "0xa8b40fc6533752983a5329c31d376c7a5c13ce6879cc7faee648200075d9cd273537001fb4c86e8576350eaac6ba60c2", + "0xa02db682bdc117a84dcb9312eb28fcbde12d49f4ce915cc92c610bb6965ec3cc38290f8c5b5ec70afe153956692cda95", + "0x86decd22b25d300508472c9ce75d3e465b737e7ce13bc0fcce32835e54646fe12322ba5bc457be18bfd926a1a6ca4a38", + "0xa18666ef65b8c2904fd598791f5627207165315a85ee01d5fb0e6b2e10bdd9b00babc447da5bd63445e3337de33b9b89", + "0x89bb0c06effadefdaf34ffe4b123e1678a90d4451ee856c863df1e752eef41fd984689ded8f0f878bf8916d5dd8e8024", + "0x97cfcba08ebec05d0073992a66b1d7d6fb9d95871f2cdc36db301f78bf8069294d1c259efef5c93d20dc937eedae3a1a", + "0xac2643b14ece79dcb2e289c96776a47e2bebd40dd6dc74fd035df5bb727b5596f40e3dd2d2202141e69b0993717ede09", + "0xa5e6fd88a2f9174d9bd4c6a55d9c30974be414992f22aa852f552c7648f722ed8077acf5aba030abd47939bb451b2c60", + "0x8ad40a612824a7994487731a40b311b7349038c841145865539c6ada75c56de6ac547a1c23df190e0caaafecddd80ccc", + "0x953a7cea1d857e09202c438c6108060961f195f88c32f0e012236d7a4b39d840c61b162ec86436e8c38567328bea0246", + "0x80d8b47a46dae1868a7b8ccfe7029445bbe1009dad4a6c31f9ef081be32e8e1ac1178c3c8fb68d3e536c84990cc035b1", + "0x81ecd99f22b3766ce0aca08a0a9191793f68c754fdec78b82a4c3bdc2db122bbb9ebfd02fc2dcc6e1567a7d42d0cc16a", + "0xb1dd0446bccc25846fb95d08c1c9cc52fb51c72c4c5d169ffde56ecfe800f108dc1106d65d5c5bd1087c656de3940b63", + "0xb87547f0931e164e96de5c550ca5aa81273648fe34f6e193cd9d69cf729cb432e17aa02e25b1c27a8a0d20a3b795e94e", + "0x820a94e69a927e077082aae66f6b292cfbe4589d932edf9e68e268c9bd3d71ef76cf7d169dd445b93967c25db11f58f1", + "0xb0d07ddf2595270c39adfa0c8cf2ab1322979b0546aa4d918f641be53cd97f36c879bb75d205e457c011aca3bbd9f731", + "0x8700b876b35b4b10a8a9372c5230acecd39539c1bb87515640293ad4464a9e02929d7d6a6a11112e8a29564815ac0de4", + "0xa61a601c5bb27dcb97e37c8e2b9ce479c6b192a5e04d9ed5e065833c5a1017ee5f237b77d1a17be5d48f8e7cc0bcacf6", + "0x92fb88fe774c1ba1d4a08cae3c0e05467ad610e7a3f1d2423fd47751759235fe0a3036db4095bd6404716aa03820f484", + "0xb274f140d77a3ce0796f5e09094b516537ccaf27ae1907099bff172e6368ba85e7c3ef8ea2a07457cac48ae334da95b3", + "0xb2292d9181f16581a9a9142490b2bdcdfb218ca6315d1effc8592100d792eb89d5356996c890441f04f2b4a95763503e", + "0x8897e73f576d86bc354baa3bd96e553107c48cf5889dcc23c5ba68ab8bcd4e81f27767be2233fdfa13d39f885087e668", + "0xa29eac6f0829791c728d71abc49569df95a4446ecbfc534b39f24f56c88fe70301838dfc1c19751e7f3c5c1b8c6af6a0", + "0x9346dc3720adc5df500a8df27fd9c75ef38dc5c8f4e8ed66983304750e66d502c3c59b8e955be781b670a0afc70a2167", + "0x9566d534e0e30a5c5f1428665590617e95fd05d45f573715f58157854ad596ece3a3cfec61356aee342308d623e029d5", + "0xa464fb8bffe6bd65f71938c1715c6e296cc6d0311a83858e4e7eb5873b7f2cf0c584d2101e3407b85b64ca78b2ac93ce", + "0xb54088f7217987c87e9498a747569ac5b2f8afd5348f9c45bf3fd9fbf713a20f495f49c8572d087efe778ac7313ad6d3", + "0x91fa9f5f8000fe050f5b224d90b59fcce13c77e903cbf98ded752e5b3db16adb2bc1f8c94be48b69f65f1f1ad81d6264", + "0x92d04a5b0ac5d8c8e313709b432c9434ecd3e73231f01e9b4e7952b87df60cbfa97b5dedd2200bd033b4b9ea8ba45cc1", + "0xa94b90ad3c3d6c4bbe169f8661a790c40645b40f0a9d1c7220f01cf7fc176e04d80bab0ced9323fcafb93643f12b2760", + "0x94d86149b9c8443b46196f7e5a3738206dd6f3be7762df488bcbb9f9ee285a64c997ed875b7b16b26604fa59020a8199", + "0x82efe4ae2c50a2d7645240c173a047f238536598c04a2c0b69c96e96bd18e075a99110f1206bc213f39edca42ba00cc1", + "0xab8667685f831bc14d4610f84a5da27b4ea5b133b4d991741a9e64dceb22cb64a3ce8f1b6e101d52af6296df7127c9ad", + "0x83ba433661c05dcc5d562f4a9a261c8110dac44b8d833ae1514b1fc60d8b4ee395b18804baea04cb10adb428faf713c3", + "0xb5748f6f660cc5277f1211d2b8649493ed8a11085b871cd33a5aea630abd960a740f08c08be5f9c21574600ac9bf5737", + "0xa5c8dd12af48fb710642ad65ebb97ca489e8206741807f7acfc334f8035d3c80593b1ff2090c9bb7bd138f0c48714ca8", + "0xa2b382fd5744e3babf454b1d806cc8783efeb4761bc42b6914ea48a46a2eae835efbe0a18262b6bc034379e03cf1262b", + "0xb3145ffaf603f69f15a64936d32e3219eea5ed49fdfd2f5bf40ea0dfd974b36fb6ff12164d4c2282d892db4cf3ff3ce1", + "0x87a316fb213f4c5e30c5e3face049db66be4f28821bd96034714ec23d3e97849d7b301930f90a4323c7ccf53de23050c", + "0xb9de09a919455070fed6220fc179c8b7a4c753062bcd27acf28f5b9947a659c0b364298daf7c85c4ca6fca7f945add1f", + "0x806fbd98d411b76979464c40ad88bc07a151628a27fcc1012ba1dfbaf5b5cc9d962fb9b3386008978a12515edce934bc", + "0xa15268877fae0d21610ae6a31061ed7c20814723385955fac09fdc9693a94c33dea11db98bb89fdfe68f933490f5c381", + "0x8d633fb0c4da86b2e0b37d8fad5972d62bff2ac663c5ec815d095cd4b7e1fe66ebef2a2590995b57eaf941983c7ad7a4", + "0x8139e5dd9cf405e8ef65f11164f0440827d98389ce1b418b0c9628be983a9ddd6cf4863036ccb1483b40b8a527acd9ed", + "0x88b15fa94a08eac291d2b94a2b30eb851ff24addf2cc30b678e72e32cfcb3424cf4b33aa395d741803f3e578ddf524de", + "0xb5eaf0c8506e101f1646bcf049ee38d99ea1c60169730da893fd6020fd00a289eb2f415947e44677af49e43454a7b1be", + "0x8489822ad0647a7e06aa2aa5595960811858ddd4542acca419dd2308a8c5477648f4dd969a6740bb78aa26db9bfcc555", + "0xb1e9a7b9f3423c220330d45f69e45fa03d7671897cf077f913c252e3e99c7b1b1cf6d30caad65e4228d5d7b80eb86e5e", + "0xb28fe9629592b9e6a55a1406903be76250b1c50c65296c10c5e48c64b539fb08fe11f68cf462a6edcbba71b0cee3feb2", + "0xa41acf96a02c96cd8744ff6577c244fc923810d17ade133587e4c223beb7b4d99fa56eae311a500d7151979267d0895c", + "0x880798938fe4ba70721be90e666dfb62fcab4f3556fdb7b0dc8ec5bc34f6b4513df965eae78527136eb391889fe2caf9", + "0x98d4d89d358e0fb7e212498c73447d94a83c1b66e98fc81427ab13acddb17a20f52308983f3a5a8e0aaacec432359604", + "0x81430b6d2998fc78ba937a1639c6020199c52da499f68109da227882dc26d005b73d54c5bdcac1a04e8356a8ca0f7017", + "0xa8d906a4786455eb74613aba4ce1c963c60095ffb8658d368df9266fdd01e30269ce10bf984e7465f34b4fd83beba26a", + "0xaf54167ac1f954d10131d44a8e0045df00d581dd9e93596a28d157543fbe5fb25d213806ed7fb3cba6b8f5b5423562db", + "0x8511e373a978a12d81266b9afbd55035d7bc736835cfa921903a92969eeba3624437d1346b55382e61415726ab84a448", + "0x8cf43eea93508ae586fa9a0f1354a1e16af659782479c2040874a46317f9e8d572a23238efa318fdfb87cc63932602b7", + "0xb0bdd3bacff077173d302e3a9678d1d37936188c7ecc34950185af6b462b7c679815176f3cce5db19aac8b282f2d60ad", + "0xa355e9b87f2f2672052f5d4d65b8c1c827d24d89b0d8594641fccfb69aef1b94009105f3242058bb31c8bf51caae5a41", + "0xb8baa9e4b950b72ff6b88a6509e8ed1304bc6fd955748b2e59a523a1e0c5e99f52aec3da7fa9ff407a7adf259652466c", + "0x840bc3dbb300ea6f27d1d6dd861f15680bd098be5174f45d6b75b094d0635aced539fa03ddbccb453879de77fb5d1fe9", + "0xb4bc7e7e30686303856472bae07e581a0c0bfc815657c479f9f5931cff208d5c12930d2fd1ff413ebd8424bcd7a9b571", + "0x89b5d514155d7999408334a50822508b9d689add55d44a240ff2bdde2eee419d117031f85e924e2a2c1ca77db9b91eea", + "0xa8604b6196f87a04e1350302e8aa745bba8dc162115d22657b37a1d1a98cb14876ddf7f65840b5dbd77e80cd22b4256c", + "0x83cb7acdb9e03247515bb2ce0227486ccf803426717a14510f0d59d45e998b245797d356f10abca94f7a14e1a2f0d552", + "0xaeb3266a9f16649210ab2df0e1908ac259f34ce1f01162c22b56cf1019096ee4ea5854c36e30bb2feb06c21a71e8a45c", + "0x89e72e86edf2aa032a0fc9acf4d876a40865fbb2c8f87cb7e4d88856295c4ac14583e874142fd0c314a49aba68c0aa3c", + "0x8c3576eba0583c2a7884976b4ed11fe1fda4f6c32f6385d96c47b0e776afa287503b397fa516a455b4b8c3afeedc76db", + "0xa31e5b633bda9ffa174654fee98b5d5930a691c3c42fcf55673d927dbc8d91c58c4e42e615353145431baa646e8bbb30", + "0x89f2f3f7a8da1544f24682f41c68114a8f78c86bd36b066e27da13acb70f18d9f548773a16bd8e24789420e17183f137", + "0xada27fa4e90a086240c9164544d2528621a415a5497badb79f8019dc3dce4d12eb6b599597e47ec6ac39c81efda43520", + "0x90dc1eb21bf21c0187f359566fc4bf5386abea52799306a0e5a1151c0817c5f5bc60c86e76b1929c092c0f3ff48cedd2", + "0xb702a53ebcc17ae35d2e735a347d2c700e9cbef8eadbece33cac83df483b2054c126593e1f462cfc00a3ce9d737e2af5", + "0x9891b06455ec925a6f8eafffba05af6a38cc5e193acaaf74ffbf199df912c5197106c5e06d72942bbb032ce277b6417f", + "0x8c0ee71eb01197b019275bcf96cae94e81d2cdc3115dbf2d8e3080074260318bc9303597e8f72b18f965ad601d31ec43", + "0x8aaf580aaf75c1b7a5f99ccf60503506e62058ef43b28b02f79b8536a96be3f019c9f71caf327b4e6730134730d1bef5", + "0xae6f9fc21dd7dfa672b25a87eb0a41644f7609fab5026d5cedb6e43a06dbbfd6d6e30322a2598c8dedde88c52eaed626", + "0x8159b953ffece5693edadb2e906ebf76ff080ee1ad22698950d2d3bfc36ac5ea78f58284b2ca180664452d55bd54716c", + "0xab7647c32ca5e9856ac283a2f86768d68de75ceeba9e58b74c5324f8298319e52183739aba4340be901699d66ac9eb3f", + "0xa4d85a5701d89bcfaf1572db83258d86a1a0717603d6f24ac2963ffcf80f1265e5ab376a4529ca504f4396498791253c", + "0x816080c0cdbfe61b4d726c305747a9eb58ac26d9a35f501dd32ba43c098082d20faf3ccd41aad24600aa73bfa453dfac", + "0x84f3afac024f576b0fd9acc6f2349c2fcefc3f77dbe5a2d4964d14b861b88e9b1810334b908cf3427d9b67a8aee74b18", + "0x94b390655557b1a09110018e9b5a14490681ade275bdc83510b6465a1218465260d9a7e2a6e4ec700f58c31dc3659962", + "0xa8c66826b1c04a2dd4c682543242e7a57acae37278bd09888a3d17747c5b5fec43548101e6f46d703638337e2fd3277b", + "0x86e6f4608a00007fa533c36a5b054c5768ccafe41ad52521d772dcae4c8a4bcaff8f7609be30d8fab62c5988cbbb6830", + "0x837da4cf09ae8aa0bceb16f8b3bfcc3b3367aecac9eed6b4b56d7b65f55981ef066490764fb4c108792623ecf8cad383", + "0x941ff3011462f9b5bf97d8cbdb0b6f5d37a1b1295b622f5485b7d69f2cb2bcabc83630dae427f0259d0d9539a77d8424", + "0xb99e5d6d82aa9cf7d5970e7f710f4039ac32c2077530e4c2779250c6b9b373bc380adb0a03b892b652f649720672fc8c", + "0xa791c78464b2d65a15440b699e1e30ebd08501d6f2720adbc8255d989a82fcded2f79819b5f8f201bed84a255211b141", + "0x84af7ad4a0e31fcbb3276ab1ad6171429cf39adcf78dc03750dc5deaa46536d15591e26d53e953dfb31e1622bc0743ab", + "0xa833e62fe97e1086fae1d4917fbaf09c345feb6bf1975b5cb863d8b66e8d621c7989ab3dbecda36bc9eaffc5eaa6fa66", + "0xb4ef79a46a2126f53e2ebe62770feb57fd94600be29459d70a77c5e9cc260fa892be06cd60f886bf48459e48eb50d063", + "0xb43b8f61919ea380bf151c294e54d3a3ff98e20d1ee5efbfe38aa2b66fafbc6a49739793bd5cb1c809f8b30466277c3a", + "0xab37735af2412d2550e62df9d8b3b5e6f467f20de3890bf56faf1abf2bf3bd1d98dc3fa0ad5e7ab3fce0fa20409eb392", + "0x82416b74b1551d484250d85bb151fabb67e29cce93d516125533df585bc80779ab057ea6992801a3d7d5c6dcff87a018", + "0x8145d0787f0e3b5325190ae10c1d6bee713e6765fb6a0e9214132c6f78f4582bb2771aaeae40d3dad4bafb56bf7e36d8", + "0xb6935886349ecbdd5774e12196f4275c97ec8279fdf28ccf940f6a022ebb6de8e97d6d2173c3fe402cbe9643bed3883b", + "0x87ef9b4d3dc71ac86369f8ed17e0dd3b91d16d14ae694bc21a35b5ae37211b043d0e36d8ff07dcc513fb9e6481a1f37f", + "0xae1d0ded32f7e6f1dc8fef495879c1d9e01826f449f903c1e5034aeeabc5479a9e323b162b688317d46d35a42d570d86", + "0xa40d16497004db4104c6794e2f4428d75bdf70352685944f3fbe17526df333e46a4ca6de55a4a48c02ecf0bde8ba03c0", + "0x8d45121efba8cc308a498e8ee39ea6fa5cae9fb2e4aab1c2ff9d448aa8494ccbec9a078f978a86fcd97b5d5e7be7522a", + "0xa8173865c64634ba4ac2fa432740f5c05056a9deaf6427cb9b4b8da94ca5ddbc8c0c5d3185a89b8b28878194de9cdfcd", + "0xb6ec06a74d690f6545f0f0efba236e63d1fdfba54639ca2617408e185177ece28901c457d02b849fd00f1a53ae319d0a", + "0xb69a12df293c014a40070e3e760169b6f3c627caf9e50b35a93f11ecf8df98b2bc481b410eecb7ab210bf213bbe944de", + "0x97e7dc121795a533d4224803e591eef3e9008bab16f12472210b73aaf77890cf6e3877e0139403a0d3003c12c8f45636", + "0xacdfa6fdd4a5acb7738cc8768f7cba84dbb95c639399b291ae8e4e63df37d2d4096900a84d2f0606bf534a9ccaa4993f", + "0x86ee253f3a9446a33e4d1169719b7d513c6b50730988415382faaf751988c10a421020609f7bcdef91be136704b906e2", + "0xaac9438382a856caf84c5a8a234282f71b5fc5f65219103b147e7e6cf565522285fbfd7417b513bdad8277a00f652ca1", + "0x83f3799d8e5772527930f5dc071a2e0a65471618993ec8990a96ccdeee65270e490bda9d26bb877612475268711ffd80", + "0x93f28a81ac8c0ec9450b9d762fae9c7f8feaace87a6ee6bd141ef1d2d0697ef1bbd159fe6e1de640dbdab2b0361fca8a", + "0xa0825c95ba69999b90eac3a31a3fd830ea4f4b2b7409bde5f202b61d741d6326852ce790f41de5cb0eccec7af4db30c1", + "0x83924b0e66233edd603c3b813d698daa05751fc34367120e3cf384ea7432e256ccee4d4daf13858950549d75a377107d", + "0x956fd9fa58345277e06ba2ec72f49ed230b8d3d4ff658555c52d6cddeb84dd4e36f1a614f5242d5ca0192e8daf0543c2", + "0x944869912476baae0b114cced4ff65c0e4c90136f73ece5656460626599051b78802df67d7201c55d52725a97f5f29fe", + "0x865cb25b64b4531fb6fe4814d7c8cd26b017a6c6b72232ff53defc18a80fe3b39511b23f9e4c6c7249d06e03b2282ed2", + "0x81e09ff55214960775e1e7f2758b9a6c4e4cd39edf7ec1adfaad51c52141182b79fe2176b23ddc7df9fd153e5f82d668", + "0xb31006896f02bc90641121083f43c3172b1039334501fbaf1672f7bf5d174ddd185f945adf1a9c6cf77be34c5501483d", + "0x88b92f6f42ae45e9f05b16e52852826e933efd0c68b0f2418ac90957fd018df661bc47c8d43c2a7d7bfcf669dab98c3c", + "0x92fc68f595853ee8683930751789b799f397135d002eda244fe63ecef2754e15849edde3ba2f0cc8b865c9777230b712", + "0x99ca06a49c5cd0bb097c447793fcdd809869b216a34c66c78c7e41e8c22f05d09168d46b8b1f3390db9452d91bc96dea", + "0xb48b9490a5d65296802431852d548d81047bbefc74fa7dc1d4e2a2878faacdfcb365ae59209cb0ade01901a283cbd15d", + "0xaff0fdbef7c188b120a02bc9085d7b808e88f73973773fef54707bf2cd772cd066740b1b6f4127b5c349f657bd97e738", + "0x966fd4463b4f43dd8ccba7ad50baa42292f9f8b2e70da23bb6780e14155d9346e275ef03ddaf79e47020dcf43f3738bd", + "0x9330c3e1fadd9e08ac85f4839121ae20bbeb0a5103d84fa5aadbd1213805bdcda67bf2fb75fc301349cbc851b5559d20", + "0x993bb99867bd9041a71a55ad5d397755cfa7ab6a4618fc526179bfc10b7dc8b26e4372fe9a9b4a15d64f2b63c1052dda", + "0xa29b59bcfab51f9b3c490a3b96f0bf1934265c315349b236012adbd64a56d7f6941b2c8cc272b412044bc7731f71e1dc", + "0xa65c9cefe1fc35d089fe8580c2e7671ebefdb43014ac291528ff4deefd4883fd4df274af83711dad610dad0d615f9d65", + "0x944c78c56fb227ae632805d448ca3884cd3d2a89181cead3d2b7835e63297e6d740aa79a112edb1d4727824991636df5", + "0xa73d782da1db7e4e65d7b26717a76e16dd9fab4df65063310b8e917dc0bc24e0d6755df5546c58504d04d9e68c3b474a", + "0xaf80f0b87811ae3124f68108b4ca1937009403f87928bbc53480e7c5408d072053ace5eeaf5a5aba814dab8a45502085", + "0x88aaf1acfc6e2e19b8387c97da707cb171c69812fefdd4650468e9b2c627bd5ccfb459f4d8e56bdfd84b09ddf87e128f", + "0x92c97276ff6f72bab6e9423d02ad6dc127962dbce15a0dd1e4a393b4510c555df6aa27be0f697c0d847033a9ca8b8dfd", + "0xa0e07d43d96e2d85b6276b3c60aadb48f0aedf2de8c415756dc597249ea64d2093731d8735231dadc961e5682ac59479", + "0xadc9e6718a8f9298957d1da3842a7751c5399bbdf56f8de6c1c4bc39428f4aee6f1ba6613d37bf46b9403345e9d6fc81", + "0x951da434da4b20d949b509ceeba02e24da7ed2da964c2fcdf426ec787779c696b385822c7dbea4df3e4a35921f1e912c", + "0xa04cbce0d2b2e87bbf038c798a12ec828423ca6aca08dc8d481cf6466e3c9c73d4d4a7fa47df9a7e2e15aae9e9f67208", + "0x8f855cca2e440d248121c0469de1f94c2a71b8ee2682bbad3a78243a9e03da31d1925e6760dbc48a1957e040fae9abe8", + "0xb642e5b17c1df4a4e101772d73851180b3a92e9e8b26c918050f51e6dd3592f102d20b0a1e96f0e25752c292f4c903ff", + "0xa92454c300781f8ae1766dbbb50a96192da7d48ef4cbdd72dd8cbb44c6eb5913c112cc38e9144615fdc03684deb99420", + "0x8b74f7e6c2304f8e780df4649ef8221795dfe85fdbdaa477a1542d135b75c8be45bf89adbbb6f3ddf54ca40f02e733e9", + "0x85cf66292cbb30cec5fd835ab10c9fcb3aea95e093aebf123e9a83c26f322d76ebc89c4e914524f6c5f6ee7d74fc917d", + "0xae0bfe0cdc97c09542a7431820015f2d16067b30dca56288013876025e81daa8c519e5e347268e19aa1a85fa1dc28793", + "0x921322fc6a47dc091afa0ad6df18ed14cde38e48c6e71550aa513918b056044983aee402de21051235eecf4ce8040fbe", + "0x96c030381e97050a45a318d307dcb3c8377b79b4dd5daf6337cded114de26eb725c14171b9b8e1b3c08fe1f5ea6b49e0", + "0x90c23b86b6111818c8baaf53a13eaee1c89203b50e7f9a994bf0edf851919b48edbac7ceef14ac9414cf70c486174a77", + "0x8bf6c301240d2d1c8d84c71d33a6dfc6d9e8f1cfae66d4d0f7a256d98ae12b0bcebfa94a667735ee89f810bcd7170cff", + "0xa41a4ffbbea0e36874d65c009ee4c3feffff322f6fc0e30d26ee4dbc1f46040d05e25d9d0ecb378cef0d24a7c2c4b850", + "0xa8d4cdd423986bb392a0a92c12a8bd4da3437eec6ef6af34cf5310944899287452a2eb92eb5386086d5063381189d10e", + "0xa81dd26ec057c4032a4ed7ad54d926165273ed51d09a1267b2e477535cf6966835a257c209e4e92d165d74fa75695fa3", + "0x8d7f708c3ee8449515d94fc26b547303b53d8dd55f177bc3b25d3da2768accd9bc8e9f09546090ebb7f15c66e6c9c723", + "0x839ba65cffcd24cfffa7ab3b21faabe3c66d4c06324f07b2729c92f15cad34e474b0f0ddb16cd652870b26a756b731d3", + "0x87f1a3968afec354d92d77e2726b702847c6afcabb8438634f9c6f7766de4c1504317dc4fa9a4a735acdbf985e119564", + "0x91a8a7fd6542f3e0673f07f510d850864b34ac087eb7eef8845a1d14b2b1b651cbdc27fa4049bdbf3fea54221c5c8549", + "0xaef3cf5f5e3a2385ead115728d7059e622146c3457d266c612e778324b6e06fbfb8f98e076624d2f3ce1035d65389a07", + "0x819915d6232e95ccd7693fdd78d00492299b1983bc8f96a08dcb50f9c0a813ed93ae53c0238345d5bea0beda2855a913", + "0x8e9ba68ded0e94935131b392b28218315a185f63bf5e3c1a9a9dd470944509ca0ba8f6122265f8da851b5cc2abce68f1", + "0xb28468e9b04ee9d69003399a3cf4457c9bf9d59f36ab6ceeb8e964672433d06b58beeea198fedc7edbaa1948577e9fa2", + "0xa633005e2c9f2fd94c8bce2dd5bb708fe946b25f1ec561ae65e54e15cdd88dc339f1a083e01f0d39610c8fe24151aaf0", + "0x841d0031e22723f9328dd993805abd13e0c99b0f59435d2426246996b08d00ce73ab906f66c4eab423473b409e972ce0", + "0x85758d1b084263992070ec8943f33073a2d9b86a8606672550c17545507a5b3c88d87382b41916a87ee96ff55a7aa535", + "0x8581b06b0fc41466ef94a76a1d9fb8ae0edca6d018063acf6a8ca5f4b02d76021902feba58972415691b4bdbc33ae3b4", + "0x83539597ff5e327357ee62bc6bf8c0bcaec2f227c55c7c385a4806f0d37fb461f1690bad5066b8a5370950af32fafbef", + "0xaee3557290d2dc10827e4791d00e0259006911f3f3fce4179ed3c514b779160613eca70f720bff7804752715a1266ffa", + "0xb48d2f0c4e90fc307d5995464e3f611a9b0ef5fe426a289071f4168ed5cc4f8770c9332960c2ca5c8c427f40e6bb389f", + "0x847af8973b4e300bb06be69b71b96183fd1a0b9d51b91701bef6fcfde465068f1eb2b1503b07afda380f18d69de5c9e1", + "0xa70a6a80ce407f07804c0051ac21dc24d794b387be94eb24e1db94b58a78e1bcfb48cd0006db8fc1f9bedaece7a44fbe", + "0xb40e942b8fa5336910ff0098347df716bff9d1fa236a1950c16eeb966b3bc1a50b8f7b0980469d42e75ae13ced53cead", + "0xb208fabaa742d7db3148515330eb7a3577487845abdb7bd9ed169d0e081db0a5816595c33d375e56aeac5b51e60e49d3", + "0xb7c8194b30d3d6ef5ab66ec88ad7ebbc732a3b8a41731b153e6f63759a93f3f4a537eab9ad369705bd730184bdbbdc34", + "0x9280096445fe7394d04aa1bc4620c8f9296e991cc4d6c131bd703cb1cc317510e6e5855ac763f4d958c5edfe7eebeed7", + "0xabc2aa4616a521400af1a12440dc544e3c821313d0ab936c86af28468ef8bbe534837e364598396a81cf8d06274ed5a6", + "0xb18ca8a3325adb0c8c18a666d4859535397a1c3fe08f95eebfac916a7a99bbd40b3c37b919e8a8ae91da38bc00fa56c0", + "0x8a40c33109ecea2a8b3558565877082f79121a432c45ec2c5a5e0ec4d1c203a6788e6b69cb37f1fd5b8c9a661bc5476d", + "0x88c47301dd30998e903c84e0b0f2c9af2e1ce6b9f187dab03528d44f834dc991e4c86d0c474a2c63468cf4020a1e24a0", + "0x920c832853e6ab4c851eecfa9c11d3acc7da37c823be7aa1ab15e14dfd8beb5d0b91d62a30cec94763bd8e4594b66600", + "0x98e1addbe2a6b8edc7f12ecb9be81c3250aeeca54a1c6a7225772ca66549827c15f3950d01b8eb44aecb56fe0fff901a", + "0x8cfb0fa1068be0ec088402f5950c4679a2eb9218c729da67050b0d1b2d7079f3ddf4bf0f57d95fe2a8db04bc6bcdb20c", + "0xb70f381aafe336b024120453813aeab70baac85b9c4c0f86918797b6aee206e6ed93244a49950f3d8ec9f81f4ac15808", + "0xa4c8edf4aa33b709a91e1062939512419711c1757084e46f8f4b7ed64f8e682f4e78b7135920c12f0eb0422fe9f87a6a", + "0xb4817e85fd0752d7ebb662d3a51a03367a84bac74ebddfba0e5af5e636a979500f72b148052d333b3dedf9edd2b4031b", + "0xa87430169c6195f5d3e314ff2d1c2f050e766fd5d2de88f5207d72dba4a7745bb86d0baca6e9ae156582d0d89e5838c7", + "0x991b00f8b104566b63a12af4826b61ce7aa40f4e5b8fff3085e7a99815bdb4471b6214da1e480214fac83f86a0b93cc5", + "0xb39966e3076482079de0678477df98578377a094054960ee518ef99504d6851f8bcd3203e8da5e1d4f6f96776e1fe6eb", + "0xa448846d9dc2ab7a0995fa44b8527e27f6b3b74c6e03e95edb64e6baa4f1b866103f0addb97c84bef1d72487b2e21796", + "0x894bec21a453ae84b592286e696c35bc30e820e9c2fd3e63dd4fbe629e07df16439c891056070faa490155f255bf7187", + "0xa9ec652a491b11f6a692064e955f3f3287e7d2764527e58938571469a1e29b5225b9415bd602a45074dfbfe9c131d6ca", + "0xb39d37822e6cbe28244b5f42ce467c65a23765bd16eb6447c5b3e942278069793763483dafd8c4dd864f8917aad357fe", + "0x88dba51133f2019cb266641c56101e3e5987d3b77647a2e608b5ff9113dfc5f85e2b7c365118723131fbc0c9ca833c9c", + "0xb566579d904b54ecf798018efcb824dccbebfc6753a0fd2128ac3b4bd3b038c2284a7c782b5ca6f310eb7ea4d26a3f0a", + "0xa97a55c0a492e53c047e7d6f9d5f3e86fb96f3dddc68389c0561515343b66b4bc02a9c0d5722dff1e3445308240b27f7", + "0xa044028ab4bcb9e1a2b9b4ca4efbf04c5da9e4bf2fff0e8bd57aa1fc12a71e897999c25d9117413faf2f45395dee0f13", + "0xa78dc461decbeaeed8ebd0909369b491a5e764d6a5645a7dac61d3140d7dc0062526f777b0eb866bff27608429ebbdde", + "0xb2c2a8991f94c39ca35fea59f01a92cb3393e0eccb2476dfbf57261d406a68bd34a6cff33ed80209991688c183609ef4", + "0x84189eefb521aff730a4fd3fd5b10ddfd29f0d365664caef63bb015d07e689989e54c33c2141dd64427805d37a7e546e", + "0x85ac80bd734a52235da288ff042dea9a62e085928954e8eacd2c751013f61904ed110e5b3afe1ab770a7e6485efb7b5e", + "0x9183a560393dcb22d0d5063e71182020d0fbabb39e32493eeffeb808df084aa243eb397027f150b55a247d1ed0c8513e", + "0x81c940944df7ecc58d3c43c34996852c3c7915ed185d7654627f7af62abae7e0048dd444a6c09961756455000bd96d09", + "0xaa8c34e164019743fd8284b84f06c3b449aae7996e892f419ee55d82ad548cb300fd651de329da0384243954c0ef6a60", + "0x89a7b7bdfc7e300d06a14d463e573d6296d8e66197491900cc9ae49504c4809ff6e61b758579e9091c61085ba1237b83", + "0x878d21809ba540f50bd11f4c4d9590fb6f3ab9de5692606e6e2ef4ed9d18520119e385be5e1f4b3f2e2b09c319f0e8fc", + "0x8eb248390193189cf0355365e630b782cd15751e672dc478b39d75dc681234dcd9309df0d11f4610dbb249c1e6be7ef9", + "0xa1d7fb3aecb896df3a52d6bd0943838b13f1bd039c936d76d03de2044c371d48865694b6f532393b27fd10a4cf642061", + "0xa34bca58a24979be442238cbb5ece5bee51ae8c0794dd3efb3983d4db713bc6f28a96e976ac3bd9a551d3ed9ba6b3e22", + "0x817c608fc8cacdd178665320b5a7587ca21df8bdd761833c3018b967575d25e3951cf3d498a63619a3cd2ad4406f5f28", + "0x86c95707db0495689afd0c2e39e97f445f7ca0edffad5c8b4cacd1421f2f3cc55049dfd504f728f91534e20383955582", + "0x99c3b0bb15942c301137765d4e19502f65806f3b126dc01a5b7820c87e8979bce6a37289a8f6a4c1e4637227ad5bf3bf", + "0x8aa1518a80ea8b074505a9b3f96829f5d4afa55a30efe7b4de4e5dbf666897fdd2cf31728ca45921e21a78a80f0e0f10", + "0x8d74f46361c79e15128ac399e958a91067ef4cec8983408775a87eca1eed5b7dcbf0ddf30e66f51780457413496c7f07", + "0xa41cde4a786b55387458a1db95171aca4fd146507b81c4da1e6d6e495527c3ec83fc42fad1dfe3d92744084a664fd431", + "0x8c352852c906fae99413a84ad11701f93f292fbf7bd14738814f4c4ceab32db02feb5eb70bc73898b0bc724a39d5d017", + "0xa5993046e8f23b71ba87b7caa7ace2d9023fb48ce4c51838813174880d918e9b4d2b0dc21a2b9c6f612338c31a289df8", + "0x83576d3324bf2d8afbfb6eaecdc5d767c8e22e7d25160414924f0645491df60541948a05e1f4202e612368e78675de8a", + "0xb43749b8df4b15bc9a3697e0f1c518e6b04114171739ef1a0c9c65185d8ec18e40e6954d125cbc14ebc652cf41ad3109", + "0xb4eebd5d80a7327a040cafb9ccdb12b2dfe1aa86e6bc6d3ac8a57fadfb95a5b1a7332c66318ff72ba459f525668af056", + "0x9198be7f1d413c5029b0e1c617bcbc082d21abe2c60ec8ce9b54ca1a85d3dba637b72fda39dae0c0ae40d047eab9f55a", + "0x8d96a0232832e24d45092653e781e7a9c9520766c3989e67bbe86b3a820c4bf621ea911e7cd5270a4bfea78b618411f6", + "0x8d7160d0ea98161a2d14d46ef01dff72d566c330cd4fabd27654d300e1bc7644c68dc8eabf2a20a59bfe7ba276545f9b", + "0xabb60fce29dec7ba37e3056e412e0ec3e05538a1fc0e2c68877378c867605966108bc5742585ab6a405ce0c962b285b6", + "0x8fabffa3ed792f05e414f5839386f6449fd9f7b41a47595c5d71074bd1bb3784cc7a1a7e1ad6b041b455035957e5b2dc", + "0x90ff017b4804c2d0533b72461436b10603ab13a55f86fd4ec11b06a70ef8166f958c110519ca1b4cc7beba440729fe2d", + "0xb340cfd120f6a4623e3a74cf8c32bfd7cd61a280b59dfd17b15ca8fae4d82f64a6f15fbde4c02f424debc72b7db5fe67", + "0x871311c9c7220c932e738d59f0ecc67a34356d1429fe570ca503d340c9996cb5ee2cd188fad0e3bd16e4c468ec1dbebd", + "0xa772470262186e7b94239ba921b29f2412c148d6f97c4412e96d21e55f3be73f992f1ad53c71008f0558ec3f84e2b5a7", + "0xb2a897dcb7ffd6257f3f2947ec966f2077d57d5191a88840b1d4f67effebe8c436641be85524d0a21be734c63ab5965d", + "0xa044f6eacc48a4a061fa149500d96b48cbf14853469aa4d045faf3dca973be1bd4b4ce01646d83e2f24f7c486d03205d", + "0x981af5dc2daa73f7fa9eae35a93d81eb6edba4a7f673b55d41f6ecd87a37685d31bb40ef4f1c469b3d72f2f18b925a17", + "0x912d2597a07864de9020ac77083eff2f15ceb07600f15755aba61251e8ce3c905a758453b417f04d9c38db040954eb65", + "0x9642b7f6f09394ba5e0805734ef6702c3eddf9eea187ba98c676d5bbaec0e360e3e51dc58433aaa1e2da6060c8659cb7", + "0x8ab3836e0a8ac492d5e707d056310c4c8e0489ca85eb771bff35ba1d658360084e836a6f51bb990f9e3d2d9aeb18fbb5", + "0x879e058e72b73bb1f4642c21ffdb90544b846868139c6511f299aafe59c2d0f0b944dffc7990491b7c4edcd6a9889250", + "0xb9e60b737023f61479a4a8fd253ed0d2a944ea6ba0439bbc0a0d3abf09b0ad1f18d75555e4a50405470ae4990626f390", + "0xb9c2535d362796dcd673640a9fa2ebdaec274e6f8b850b023153b0a7a30fffc87f96e0b72696f647ebe7ab63099a6963", + "0x94aeff145386a087b0e91e68a84a5ede01f978f9dd9fe7bebca78941938469495dc30a96bba9508c0d017873aeea9610", + "0x98b179f8a3d9f0d0a983c30682dd425a2ddc7803be59bd626c623c8951a5179117d1d2a68254c95c9952989877d0ee55", + "0x889ecf5f0ee56938273f74eb3e9ecfb5617f04fb58e83fe4c0e4aef51615cf345bc56f3f61b17f6eed3249d4afd54451", + "0xa0f2b2c39bcea4b50883e2587d16559e246248a66ecb4a4b7d9ab3b51fb39fe98d83765e087eee37a0f86b0ba4144c02", + "0xb2a61e247ed595e8a3830f7973b07079cbda510f28ad8c78c220b26cb6acde4fbb5ee90c14a665f329168ee951b08cf0", + "0x95bd0fcfb42f0d6d8a8e73d7458498a85bcddd2fb132fd7989265648d82ac2707d6d203fac045504977af4f0a2aca4b7", + "0x843e5a537c298666e6cf50fcc044f13506499ef83c802e719ff2c90e85003c132024e04711be7234c04d4b0125512d5d", + "0xa46d1797c5959dcd3a5cfc857488f4d96f74277c3d13b98b133620192f79944abcb3a361d939a100187f1b0856eae875", + "0xa1c7786736d6707a48515c38660615fcec67eb8a2598f46657855215f804fd72ab122d17f94fcffad8893f3be658dca7", + "0xb23dc9e610abc7d8bd21d147e22509a0fa49db5be6ea7057b51aae38e31654b3aa044df05b94b718153361371ba2f622", + "0xb00cc8f257d659c22d30e6d641f79166b1e752ea8606f558e4cad6fc01532e8319ea4ee12265ba4140ac45aa4613c004", + "0xac7019af65221b0cc736287b32d7f1a3561405715ba9a6a122342e04e51637ba911c41573de53e4781f2230fdcb2475f", + "0x81a630bc41b3da8b3eb4bf56cba10cd9f93153c3667f009dc332287baeb707d505fb537e6233c8e53d299ec0f013290c", + "0xa6b7aea5c545bb76df0f230548539db92bc26642572cb7dd3d5a30edca2b4c386f44fc8466f056b42de2a452b81aff5b", + "0x8271624ff736b7b238e43943c81de80a1612207d32036d820c11fc830c737972ccc9c60d3c2359922b06652311e3c994", + "0x8a684106458cb6f4db478170b9ad595d4b54c18bf63b9058f095a2fa1b928c15101472c70c648873d5887880059ed402", + "0xa5cc3c35228122f410184e4326cf61a37637206e589fcd245cb5d0cec91031f8f7586b80503070840fdfd8ce75d3c88b", + "0x9443fc631aed8866a7ed220890911057a1f56b0afe0ba15f0a0e295ab97f604b134b1ed9a4245e46ee5f9a93aa74f731", + "0x984b6f7d79835dffde9558c6bb912d992ca1180a2361757bdba4a7b69dc74b056e303adc69fe67414495dd9c2dd91e64", + "0xb15a5c8cba5de080224c274d31c68ed72d2a7126d347796569aef0c4e97ed084afe3da4d4b590b9dda1a07f0c2ff3dfb", + "0x991708fe9650a1f9a4e43938b91d45dc68c230e05ee999c95dbff3bf79b1c1b2bb0e7977de454237c355a73b8438b1d9", + "0xb4f7edc7468b176a4a7c0273700c444fa95c726af6697028bed4f77eee887e3400f9c42ee15b782c0ca861c4c3b8c98a", + "0x8c60dcc16c51087eb477c13e837031d6c6a3dc2b8bf8cb43c23f48006bc7173151807e866ead2234b460c2de93b31956", + "0x83ad63e9c910d1fc44bc114accfb0d4d333b7ebe032f73f62d25d3e172c029d5e34a1c9d547273bf6c0fead5c8801007", + "0x85de73213cc236f00777560756bdbf2b16841ba4b55902cf2cad9742ecaf5d28209b012ceb41f337456dfeca93010cd7", + "0xa7561f8827ccd75b6686ba5398bb8fc3083351c55a589b18984e186820af7e275af04bcd4c28e1dc11be1e8617a0610b", + "0x88c0a4febd4068850557f497ea888035c7fc9f404f6cc7794e7cc8722f048ad2f249e7dc62743e7a339eb7473ad3b0cd", + "0x932b22b1d3e6d5a6409c34980d176feb85ada1bf94332ef5c9fc4d42b907dabea608ceef9b5595ef3feee195151f18d8", + "0xa2867bb3f5ab88fbdae3a16c9143ab8a8f4f476a2643c505bb9f37e5b1fd34d216cab2204c9a017a5a67b7ad2dda10e8", + "0xb573d5f38e4e9e8a3a6fd82f0880dc049efa492a946d00283019bf1d5e5516464cf87039e80aef667cb86fdea5075904", + "0xb948f1b5ab755f3f5f36af27d94f503b070696d793b1240c1bdfd2e8e56890d69e6904688b5f8ff5a4bdf5a6abfe195f", + "0x917eae95ebc4109a2e99ddd8fec7881d2f7aaa0e25fda44dec7ce37458c2ee832f1829db7d2dcfa4ca0f06381c7fe91d", + "0x95751d17ed00a3030bce909333799bb7f4ab641acf585807f355b51d6976dceee410798026a1a004ef4dcdff7ec0f5b8", + "0xb9b7bd266f449a79bbfe075e429613e76c5a42ac61f01c8f0bbbd34669650682efe01ff9dbbc400a1e995616af6aa278", + "0xac1722d097ce9cd7617161f8ec8c23d68f1fb1c9ca533e2a8b4f78516c2fd8fb38f23f834e2b9a03bb06a9d655693ca9", + "0xa7ad9e96ffd98db2ecdb6340c5d592614f3c159abfd832fe27ee9293519d213a578e6246aae51672ee353e3296858873", + "0x989b8814d5de7937c4acafd000eec2b4cd58ba395d7b25f98cafd021e8efa37029b29ad8303a1f6867923f5852a220eb", + "0xa5bfe6282c771bc9e453e964042d44eff4098decacb89aecd3be662ea5b74506e1357ab26f3527110ba377711f3c9f41", + "0x8900a7470b656639721d2abbb7b06af0ac4222ab85a1976386e2a62eb4b88bfb5b72cf7921ddb3cf3a395d7eeb192a2e", + "0x95a71b55cd1f35a438cf5e75f8ff11c5ec6a2ebf2e4dba172f50bfad7d6d5dca5de1b1afc541662c81c858f7604c1163", + "0x82b5d62fea8db8d85c5bc3a76d68dedd25794cf14d4a7bc368938ffca9e09f7e598fdad2a5aac614e0e52f8112ae62b9", + "0x997173f07c729202afcde3028fa7f52cefc90fda2d0c8ac2b58154a5073140683e54c49ed1f254481070d119ce0ce02a", + "0xaeffb91ccc7a72bbd6ffe0f9b99c9e66e67d59cec2e02440465e9636a613ab3017278cfa72ea8bc4aba9a8dc728cb367", + "0x952743b06e8645894aeb6440fc7a5f62dd3acf96dab70a51e20176762c9751ea5f2ba0b9497ccf0114dc4892dc606031", + "0x874c63baeddc56fbbca2ff6031f8634b745f6e34ea6791d7c439201aee8f08ef5ee75f7778700a647f3b21068513fce6", + "0x85128fec9c750c1071edfb15586435cc2f317e3e9a175bb8a9697bcda1eb9375478cf25d01e7fed113483b28f625122d", + "0x85522c9576fd9763e32af8495ae3928ed7116fb70d4378448926bc9790e8a8d08f98cf47648d7da1b6e40d6a210c7924", + "0x97d0f37a13cfb723b848099ca1c14d83e9aaf2f7aeb71829180e664b7968632a08f6a85f557d74b55afe6242f2a36e7c", + "0xabaa472d6ad61a5fccd1a57c01aa1bc081253f95abbcba7f73923f1f11c4e79b904263890eeb66926de3e2652f5d1c70", + "0xb3c04945ba727a141e5e8aec2bf9aa3772b64d8fd0e2a2b07f3a91106a95cbcb249adcd074cbe498caf76fffac20d4ef", + "0x82c46781a3d730d9931bcabd7434a9171372dde57171b6180e5516d4e68db8b23495c8ac3ab96994c17ddb1cf249b9fb", + "0xa202d8b65613c42d01738ccd68ed8c2dbc021631f602d53f751966e04182743ebc8e0747d600b8a8676b1da9ae7f11ab", + "0xae73e7256e9459db04667a899e0d3ea5255211fb486d084e6550b6dd64ca44af6c6b2d59d7aa152de9f96ce9b58d940d", + "0xb67d87b176a9722945ec7593777ee461809861c6cfd1b945dde9ee4ff009ca4f19cf88f4bbb5c80c9cbab2fe25b23ac8", + "0x8f0b7a317a076758b0dac79959ee4a06c08b07d0f10538a4b53d3da2eda16e2af26922feb32c090330dc4d969cf69bd3", + "0x90b36bf56adbd8c4b6cb32febc3a8d5f714370c2ac3305c10fa6d168dffb2a026804517215f9a2d4ec8310cdb6bb459b", + "0xaa80c19b0682ead69934bf18cf476291a0beddd8ef4ed75975d0a472e2ab5c70f119722a8574ae4973aceb733d312e57", + "0xa3fc9abb12574e5c28dcb51750b4339b794b8e558675eef7d26126edf1de920c35e992333bcbffcbf6a5f5c0d383ce62", + "0xa1573ff23ab972acdcd08818853b111fc757fdd35aa070186d3e11e56b172fb49d840bf297ac0dd222e072fc09f26a81", + "0x98306f2be4caa92c2b4392212d0cbf430b409b19ff7d5b899986613bd0e762c909fc01999aa94be3bd529d67f0113d7f", + "0x8c1fc42482a0819074241746d17dc89c0304a2acdae8ed91b5009e9e3e70ff725ba063b4a3e68fdce05b74f5180c545e", + "0xa6c6113ebf72d8cf3163b2b8d7f3fa24303b13f55752522c660a98cd834d85d8c79214d900fa649499365e2e7641f77a", + "0xab95eea424f8a2cfd9fb1c78bb724e5b1d71a0d0d1e4217c5d0f98b0d8bbd3f8400a2002abc0a0e4576d1f93f46fefad", + "0x823c5a4fd8cf4a75fdc71d5f2dd511b6c0f189b82affeacd2b7cfcad8ad1a5551227dcc9bfdb2e34b2097eaa00efbb51", + "0xb97314dfff36d80c46b53d87a61b0e124dc94018a0bb680c32765b9a2d457f833a7c42bbc90b3b1520c33a182580398d", + "0xb17566ee3dcc6bb3b004afe4c0136dfe7dd27df9045ae896dca49fb36987501ae069eb745af81ba3fc19ff037e7b1406", + "0xb0bdc0f55cfd98d331e3a0c4fbb776a131936c3c47c6bffdc3aaf7d8c9fa6803fbc122c2fefbb532e634228687d52174", + "0xaa5d9e60cc9f0598559c28bb9bdd52aa46605ab4ffe3d192ba982398e72cec9a2a44c0d0d938ce69935693cabc0887ea", + "0x802b6459d2354fa1d56c592ac1346c428dadea6b6c0a87bf7d309bab55c94e1cf31dd98a7a86bd92a840dd51f218b91b", + "0xa526914efdc190381bf1a73dd33f392ecf01350b9d3f4ae96b1b1c3d1d064721c7d6eec5788162c933245a3943f5ee51", + "0xb3b8fcf637d8d6628620a1a99dbe619eabb3e5c7ce930d6efd2197e261bf394b74d4e5c26b96c4b8009c7e523ccfd082", + "0x8f7510c732502a93e095aba744535f3928f893f188adc5b16008385fb9e80f695d0435bfc5b91cdad4537e87e9d2551c", + "0x97b90beaa56aa936c3ca45698f79273a68dd3ccd0076eab48d2a4db01782665e63f33c25751c1f2e070f4d1a8525bf96", + "0xb9fb798324b1d1283fdc3e48288e3861a5449b2ab5e884b34ebb8f740225324af86e4711da6b5cc8361c1db15466602f", + "0xb6d52b53cea98f1d1d4c9a759c25bf9d8a50b604b144e4912acbdbdc32aab8b9dbb10d64a29aa33a4f502121a6fb481c", + "0x9174ffff0f2930fc228f0e539f5cfd82c9368d26b074467f39c07a774367ff6cccb5039ac63f107677d77706cd431680", + "0xa33b6250d4ac9e66ec51c063d1a6a31f253eb29bbaed12a0d67e2eccfffb0f3a52750fbf52a1c2aaba8c7692346426e7", + "0xa97025fd5cbcebe8ef865afc39cd3ea707b89d4e765ec817fd021d6438e02fa51e3544b1fd45470c58007a08efac6edd", + "0xb32a78480edd9ff6ba2f1eec4088db5d6ceb2d62d7e59e904ecaef7bb4a2e983a4588e51692b3be76e6ffbc0b5f911a5", + "0xb5ab590ef0bb77191f00495b33d11c53c65a819f7d0c1f9dc4a2caa147a69c77a4fff7366a602d743ee1f395ce934c1e", + "0xb3fb0842f9441fb1d0ee0293b6efbc70a8f58d12d6f769b12872db726b19e16f0f65efbc891cf27a28a248b0ef9c7e75", + "0x9372ad12856fefb928ccb0d34e198df99e2f8973b07e9d417a3134d5f69e12e79ff572c4e03ccd65415d70639bc7c73e", + "0xaa8d6e83d09ce216bfe2009a6b07d0110d98cf305364d5529c170a23e693aabb768b2016befb5ada8dabdd92b4d012bb", + "0xa954a75791eeb0ce41c85200c3763a508ed8214b5945a42c79bfdcfb1ec4f86ad1dd7b2862474a368d4ac31911a2b718", + "0x8e2081cfd1d062fe3ab4dab01f68062bac802795545fede9a188f6c9f802cb5f884e60dbe866710baadbf55dc77c11a4", + "0xa2f06003b9713e7dd5929501ed485436b49d43de80ea5b15170763fd6346badf8da6de8261828913ee0dacd8ff23c0e1", + "0x98eecc34b838e6ffd1931ca65eec27bcdb2fdcb61f33e7e5673a93028c5865e0d1bf6d3bec040c5e96f9bd08089a53a4", + "0x88cc16019741b341060b95498747db4377100d2a5bf0a5f516f7dec71b62bcb6e779de2c269c946d39040e03b3ae12b7", + "0xad1135ccbc3019d5b2faf59a688eef2500697642be8cfbdf211a1ab59abcc1f24483e50d653b55ff1834675ac7b4978f", + "0xa946f05ed9972f71dfde0020bbb086020fa35b482cce8a4cc36dd94355b2d10497d7f2580541bb3e81b71ac8bba3c49f", + "0xa83aeed488f9a19d8cfd743aa9aa1982ab3723560b1cd337fc2f91ad82f07afa412b3993afb845f68d47e91ba4869840", + "0x95eebe006bfc316810cb71da919e5d62c2cebb4ac99d8e8ef67be420302320465f8b69873470982de13a7c2e23516be9", + "0xa55f8961295a11e91d1e5deadc0c06c15dacbfc67f04ccba1d069cba89d72aa3b3d64045579c3ea8991b150ac29366ae", + "0xb321991d12f6ac07a5de3c492841d1a27b0d3446082fbce93e7e1f9e8d8fe3b45d41253556261c21b70f5e189e1a7a6f", + "0xa0b0822f15f652ce7962a4f130104b97bf9529797c13d6bd8e24701c213cc37f18157bd07f3d0f3eae6b7cd1cb40401f", + "0x96e2fa4da378aa782cc2d5e6e465fc9e49b5c805ed01d560e9b98abb5c0de8b74a2e7bec3aa5e2887d25cccb12c66f0c", + "0x97e4ab610d414f9210ed6f35300285eb3ccff5b0b6a95ed33425100d7725e159708ea78704497624ca0a2dcabce3a2f9", + "0x960a375b17bdb325761e01e88a3ea57026b2393e1d887b34b8fa5d2532928079ce88dc9fd06a728b26d2bb41b12b9032", + "0x8328a1647398e832aadc05bd717487a2b6fcdaa0d4850d2c4da230c6a2ed44c3e78ec4837b6094f3813f1ee99414713f", + "0xaa283834ebd18e6c99229ce4b401eda83f01d904f250fedd4e24f1006f8fa0712a6a89a7296a9bf2ce8de30e28d1408e", + "0xb29e097f2caadae3e0f0ae3473c072b0cd0206cf6d2e9b22c1a5ad3e07d433e32bd09ed1f4e4276a2da4268633357b7f", + "0x9539c5cbba14538b2fe077ecf67694ef240da5249950baaabea0340718b882a966f66d97f08556b08a4320ceb2cc2629", + "0xb4529f25e9b42ae8cf8338d2eface6ba5cd4b4d8da73af502d081388135c654c0b3afb3aa779ffc80b8c4c8f4425dd2b", + "0x95be0739c4330619fbe7ee2249c133c91d6c07eab846c18c5d6c85fc21ac5528c5d56dcb0145af68ed0c6a79f68f2ccd", + "0xac0c83ea802227bfc23814a24655c9ff13f729619bcffdb487ccbbf029b8eaee709f8bddb98232ef33cd70e30e45ca47", + "0xb503becb90acc93b1901e939059f93e671900ca52c6f64ae701d11ac891d3a050b505d89324ce267bc43ab8275da6ffe", + "0x98e3811b55b1bacb70aa409100abb1b870f67e6d059475d9f278c751b6e1e2e2d6f2e586c81a9fb6597fda06e7923274", + "0xb0b0f61a44053fa6c715dbb0731e35d48dba257d134f851ee1b81fd49a5c51a90ebf5459ec6e489fce25da4f184fbdb1", + "0xb1d2117fe811720bb997c7c93fe9e4260dc50fca8881b245b5e34f724aaf37ed970cdad4e8fcb68e05ac8cf55a274a53", + "0xa10f502051968f14b02895393271776dee7a06db9de14effa0b3471825ba94c3f805302bdddac4d397d08456f620999d", + "0xa3dbad2ef060ae0bb7b02eaa4a13594f3f900450faa1854fc09620b01ac94ab896321dfb1157cf2374c27e5718e8026a", + "0xb550fdec503195ecb9e079dcdf0cad559d64d3c30818ef369b4907e813e689da316a74ad2422e391b4a8c2a2bef25fc0", + "0xa25ba865e2ac8f28186cea497294c8649a201732ecb4620c4e77b8e887403119910423df061117e5f03fc5ba39042db1", + "0xb3f88174e03fdb443dd6addd01303cf88a4369352520187c739fc5ae6b22fa99629c63c985b4383219dab6acc5f6f532", + "0x97a7503248e31e81b10eb621ba8f5210c537ad11b539c96dfb7cf72b846c7fe81bd7532c5136095652a9618000b7f8d3", + "0xa8bcdc1ce5aa8bfa683a2fc65c1e79de8ff5446695dcb8620f7350c26d2972a23da22889f9e2b1cacb3f688c6a2953dc", + "0x8458c111df2a37f5dd91a9bee6c6f4b79f4f161c93fe78075b24a35f9817da8dde71763218d627917a9f1f0c4709c1ed", + "0xac5f061a0541152b876cbc10640f26f1cc923c9d4ae1b6621e4bb3bf2cec59bbf87363a4eb72fb0e5b6d4e1c269b52d5", + "0xa9a25ca87006e8a9203cbb78a93f50a36694aa4aad468b8d80d3feff9194455ca559fcc63838128a0ab75ad78c07c13a", + "0xa450b85f5dfffa8b34dfd8bc985f921318efacf8857cf7948f93884ba09fb831482ee90a44224b1a41e859e19b74962f", + "0x8ed91e7f92f5c6d7a71708b6132f157ac226ecaf8662af7d7468a4fa25627302efe31e4620ad28719318923e3a59bf82", + "0xab524165fd4c71b1fd395467a14272bd2b568592deafa039d8492e9ef36c6d3f96927c95c72d410a768dc0b6d1fbbc9b", + "0xb662144505aa8432c75ffb8d10318526b6d5777ac7af9ebfad87d9b0866c364f7905a6352743bd8fd79ffd9d5dd4f3e6", + "0xa48f1677550a5cd40663bb3ba8f84caaf8454f332d0ceb1d94dbea52d0412fe69c94997f7749929712fd3995298572f7", + "0x8391cd6e2f6b0c242de1117a612be99776c3dc95cb800b187685ea5bf7e2722275eddb79fd7dfc8be8e389c4524cdf70", + "0x875d3acb9af47833b72900bc0a2448999d638f153c5e97e8a14ec02d0c76f6264353a7e275e1f1a5855daced523d243b", + "0x91f1823657d30b59b2f627880a9a9cb530f5aca28a9fd217fe6f2f5133690dfe7ad5a897872e400512db2e788b3f7628", + "0xad3564332aa56cea84123fc7ca79ea70bb4fef2009fa131cb44e4b15e8613bd11ca1d83b9d9bf456e4b7fee9f2e8b017", + "0x8c530b84001936d5ab366c84c0b105241a26d1fb163669f17c8f2e94776895c2870edf3e1bc8ccd04d5e65531471f695", + "0x932d01fa174fdb0c366f1230cffde2571cc47485f37f23ba5a1825532190cc3b722aeb1f15aed62cf83ccae9403ba713", + "0x88b28c20585aca50d10752e84b901b5c2d58efef5131479fbbe53de7bce2029e1423a494c0298e1497669bd55be97a5d", + "0xb914148ca717721144ebb3d3bf3fcea2cd44c30c5f7051b89d8001502f3856fef30ec167174d5b76265b55d70f8716b5", + "0x81d0173821c6ddd2a068d70766d9103d1ee961c475156e0cbd67d54e668a796310474ef698c7ab55abe6f2cf76c14679", + "0x8f28e8d78e2fe7fa66340c53718e0db4b84823c8cfb159c76eac032a62fb53da0a5d7e24ca656cf9d2a890cb2a216542", + "0x8a26360335c73d1ab51cec3166c3cf23b9ea51e44a0ad631b0b0329ef55aaae555420348a544e18d5760969281759b61", + "0x94f326a32ed287545b0515be9e08149eb0a565025074796d72387cc3a237e87979776410d78339e23ef3172ca43b2544", + "0xa785d2961a2fa5e70bffa137858a92c48fe749fee91b02599a252b0cd50d311991a08efd7fa5e96b78d07e6e66ffe746", + "0x94af9030b5ac792dd1ce517eaadcec1482206848bea4e09e55cc7f40fd64d4c2b3e9197027c5636b70d6122c51d2235d", + "0x9722869f7d1a3992850fe7be405ec93aa17dc4d35e9e257d2e469f46d2c5a59dbd504056c85ab83d541ad8c13e8bcd54", + "0xb13c4088b61a06e2c03ac9813a75ff1f68ffdfee9df6a8f65095179a475e29cc49119cad2ce05862c3b1ac217f3aace9", + "0x8c64d51774753623666b10ca1b0fe63ae42f82ed6aa26b81dc1d48c86937c5772eb1402624c52a154b86031854e1fb9f", + "0xb47e4df18002b7dac3fee945bf9c0503159e1b8aafcce2138818e140753011b6d09ef1b20894e08ba3006b093559061b", + "0x93cb5970076522c5a0483693f6a35ffd4ea2aa7aaf3730c4eccd6af6d1bebfc1122fc4c67d53898ae13eb6db647be7e2", + "0xa68873ef80986795ea5ed1a597d1cd99ed978ec25e0abb57fdcc96e89ef0f50aeb779ff46e3dce21dc83ada3157a8498", + "0x8cab67f50949cc8eee6710e27358aea373aae3c92849f8f0b5531c080a6300cdf2c2094fe6fecfef6148de0d28446919", + "0x993e932bcb616dbaa7ad18a4439e0565211d31071ef1b85a0627db74a05d978c60d507695eaeea5c7bd9868a21d06923", + "0xacdadff26e3132d9478a818ef770e9fa0d2b56c6f5f48bd3bd674436ccce9bdfc34db884a73a30c04c5f5e9764cb2218", + "0xa0d3e64c9c71f84c0eef9d7a9cb4fa184224b969db5514d678e93e00f98b41595588ca802643ea225512a4a272f5f534", + "0x91c9140c9e1ba6e330cb08f6b2ce4809cd0d5a0f0516f70032bf30e912b0ed684d07b413b326ab531ee7e5b4668c799b", + "0x87bc2ee7a0c21ba8334cd098e35cb703f9af57f35e091b8151b9b63c3a5b0f89bd7701dbd44f644ea475901fa6d9ef08", + "0x9325ccbf64bf5d71b303e31ee85d486298f9802c5e55b2c3d75427097bf8f60fa2ab4fcaffa9b60bf922c3e24fbd4b19", + "0x95d0506e898318f3dc8d28d16dfd9f0038b54798838b3c9be2a2ae3c2bf204eb496166353fc042220b0bd4f6673b9285", + "0x811de529416331fe9c416726d45df9434c29dcd7e949045eb15740f47e97dde8f31489242200e19922cac2a8b7c6fd1f", + "0xade632d04a4c8bbab6ca7df370b2213cb9225023e7973f0e29f4f5e52e8aeaabc65171306bbdd12a67b195dfbb96d48f", + "0x88b7f029e079b6ae956042c0ea75d53088c5d0efd750dd018adaeacf46be21bf990897c58578c491f41afd3978d08073", + "0x91f477802de507ffd2be3f4319903119225b277ad24f74eb50f28b66c14d32fae53c7edb8c7590704741af7f7f3e3654", + "0x809838b32bb4f4d0237e98108320d4b079ee16ed80c567e7548bd37e4d7915b1192880f4812ac0e00476d246aec1dbc8", + "0x84183b5fc4a7997a8ae5afedb4d21dce69c480d5966b5cbdafd6dd10d29a9a6377f3b90ce44da0eb8b176ac3af0253bb", + "0x8508abbf6d3739a16b9165caf0f95afb3b3ac1b8c38d6d374cf0c91296e2c1809a99772492b539cda184510bce8a0271", + "0x8722054e59bab2062e6419a6e45fc803af77fde912ef2cd23055ad0484963de65a816a2debe1693d93c18218d2b8e81a", + "0x8e895f80e485a7c4f56827bf53d34b956281cdc74856c21eb3b51f6288c01cc3d08565a11cc6f3e2604775885490e8c5", + "0xafc92714771b7aa6e60f3aee12efd9c2595e9659797452f0c1e99519f67c8bc3ac567119c1ddfe82a3e961ee9defea9a", + "0x818ff0fd9cefd32db87b259e5fa32967201016fc02ef44116cdca3c63ce5e637756f60477a408709928444a8ad69c471", + "0x8251e29af4c61ae806fc5d032347fb332a94d472038149225298389495139ce5678fae739d02dfe53a231598a992e728", + "0xa0ea39574b26643f6f1f48f99f276a8a64b5481989cfb2936f9432a3f8ef5075abfe5c067dc5512143ce8bf933984097", + "0xaf67a73911b372bf04e57e21f289fc6c3dfac366c6a01409b6e76fea4769bdb07a6940e52e8d7d3078f235c6d2f632c6", + "0xb5291484ef336024dd2b9b4cf4d3a6b751133a40656d0a0825bcc6d41c21b1c79cb50b0e8f4693f90c29c8f4358641f9", + "0x8bc0d9754d70f2cb9c63f991902165a87c6535a763d5eece43143b5064ae0bcdce7c7a8f398f2c1c29167b2d5a3e6867", + "0x8d7faff53579ec8f6c92f661c399614cc35276971752ce0623270f88be937c414eddcb0997e14724a783905a026c8883", + "0x9310b5f6e675fdf60796f814dbaa5a6e7e9029a61c395761e330d9348a7efab992e4e115c8be3a43d08e90d21290c892", + "0xb5eb4f3eb646038ad2a020f0a42202532d4932e766da82b2c1002bf9c9c2e5336b54c8c0ffcc0e02d19dde2e6a35b6cc", + "0x91dabfd30a66710f1f37a891136c9be1e23af4abf8cb751f512a40c022a35f8e0a4fb05b17ec36d4208de02d56f0d53a", + "0xb3ded14e82d62ac7a5a036122a62f00ff8308498f3feae57d861babaff5a6628d43f0a0c5fc903f10936bcf4e2758ceb", + "0xa88e8348fed2b26acca6784d19ef27c75963450d99651d11a950ea81d4b93acd2c43e0ecce100eaf7e78508263d5baf3", + "0xb1f5bbf7c4756877b87bb42163ac570e08c6667c4528bf68b5976680e19beeff7c5effd17009b0718797077e2955457a", + "0xad2e7b516243f915d4d1415326e98b1a7390ae88897d0b03b66c2d9bd8c3fba283d7e8fe44ed3333296a736454cef6d8", + "0x8f82eae096d5b11f995de6724a9af895f5e1c58d593845ad16ce8fcae8507e0d8e2b2348a0f50a1f66a17fd6fac51a5c", + "0x890e4404d0657c6c1ee14e1aac132ecf7a568bb3e04137b85ac0f84f1d333bd94993e8750f88eee033a33fb00f85dcc7", + "0x82ac7d3385e035115f1d39a99fc73e5919de44f5e6424579776d118d711c8120b8e5916372c6f27bed4cc64cac170b6c", + "0x85ee16d8901c272cfbbe966e724b7a891c1bd5e68efd5d863043ad8520fc409080af61fd726adc680b3f1186fe0ac8b8", + "0x86dc564c9b545567483b43a38f24c41c6551a49cabeebb58ce86404662a12dbfafd0778d30d26e1c93ce222e547e3898", + "0xa29f5b4522db26d88f5f95f18d459f8feefab02e380c2edb65aa0617a82a3c1a89474727a951cef5f15050bcf7b380fb", + "0xa1ce039c8f6cac53352899edb0e3a72c76da143564ad1a44858bd7ee88552e2fe6858d1593bbd74aeee5a6f8034b9b9d", + "0x97f10d77983f088286bd7ef3e7fdd8fa275a56bec19919adf33cf939a90c8f2967d2b1b6fc51195cb45ad561202a3ed7", + "0xa25e2772e8c911aaf8712bdac1dd40ee061c84d3d224c466cfaae8e5c99604053f940cde259bd1c3b8b69595781dbfec", + "0xb31bb95a0388595149409c48781174c340960d59032ab2b47689911d03c68f77a2273576fbe0c2bf4553e330656058c7", + "0xb8b2e9287ad803fb185a13f0d7456b397d4e3c8ad5078f57f49e8beb2e85f661356a3392dbd7bcf6a900baa5582b86a1", + "0xa3d0893923455eb6e96cc414341cac33d2dbc88fba821ac672708cce131761d85a0e08286663a32828244febfcae6451", + "0x82310cb42f647d99a136014a9f881eb0b9791efd2e01fc1841907ad3fc8a9654d3d1dab6689c3607214b4dc2aca01cee", + "0x874022d99c16f60c22de1b094532a0bc6d4de700ad01a31798fac1d5088b9a42ad02bef8a7339af7ed9c0d4f16b186ee", + "0x94981369e120265aed40910eebc37eded481e90f4596b8d57c3bec790ab7f929784bd33ddd05b7870aad6c02e869603b", + "0xa4f1f50e1e2a73f07095e0dd31cb45154f24968dae967e38962341c1241bcd473102fff1ff668b20c6547e9732d11701", + "0xae2328f3b0ad79fcda807e69a1b5278145225083f150f67511dafc97e079f860c3392675f1752ae7e864c056e592205b", + "0x875d8c971e593ca79552c43d55c8c73b17cd20c81ff2c2fed1eb19b1b91e4a3a83d32df150dbfd5db1092d0aebde1e1f", + "0xadd2e80aa46aae95da73a11f130f4bda339db028e24c9b11e5316e75ba5e63bc991d2a1da172c7c8e8fee038baae3433", + "0xb46dbe1cb3424002aa7de51e82f600852248e251465c440695d52538d3f36828ff46c90ed77fc1d11534fe3c487df8ef", + "0xa5e5045d28b4e83d0055863c30c056628c58d4657e6176fd0536f5933f723d60e851bb726d5bf3c546b8ce4ac4a57ef8", + "0x91fec01e86dd1537e498fff7536ea3ca012058b145f29d9ada49370cd7b7193ac380e116989515df1b94b74a55c45df3", + "0xa7428176d6918cd916a310bdc75483c72de660df48cac4e6e7478eef03205f1827ea55afc0df5d5fa7567d14bbea7fc9", + "0x851d89bef45d9761fe5fdb62972209335193610015e16a675149519f9911373bac0919add226ef118d9f3669cfdf4734", + "0xb74acf5c149d0042021cb2422ea022be4c4f72a77855f42393e71ffd12ebb3eec16bdf16f812159b67b79a9706e7156d", + "0x99f35dce64ec99aa595e7894b55ce7b5a435851b396e79036ffb249c28206087db4c85379df666c4d95857db02e21ff9", + "0xb6b9a384f70db9e298415b8ab394ee625dafff04be2886476e59df8d052ca832d11ac68a9b93fba7ab055b7bc36948a4", + "0x898ee4aefa923ffec9e79f2219c7389663eb11eb5b49014e04ed4a336399f6ea1691051d86991f4c46ca65bcd4fdf359", + "0xb0f948217b0d65df7599a0ba4654a5e43c84db477936276e6f11c8981efc6eaf14c90d3650107ed4c09af4cc8ec11137", + "0xaa6286e27ac54f73e63dbf6f41865dd94d24bc0cf732262fcaff67319d162bb43af909f6f8ee27b1971939cfbba08141", + "0x8bca7cdf730cf56c7b2c8a2c4879d61361a6e1dba5a3681a1a16c17a56e168ace0e99cf0d15826a1f5e67e6b8a8a049a", + "0xa746d876e8b1ce225fcafca603b099b36504846961526589af977a88c60d31ba2cc56e66a3dec8a77b3f3531bf7524c9", + "0xa11e2e1927e6704cdb8874c75e4f1842cef84d7d43d7a38e339e61dc8ba90e61bbb20dd3c12e0b11d2471d58eed245be", + "0xa36395e22bc1d1ba8b0459a235203177737397da5643ce54ded3459d0869ff6d8d89f50c73cb62394bf66a959cde9b90", + "0x8b49f12ba2fdf9aca7e5f81d45c07d47f9302a2655610e7634d1e4bd16048381a45ef2c95a8dd5b0715e4b7cf42273af", + "0x91cffa2a17e64eb7f76bccbe4e87280ee1dd244e04a3c9eac12e15d2d04845d876eb24fe2ec6d6d266cce9efb281077f", + "0xa6b8afabf65f2dee01788114e33a2f3ce25376fb47a50b74da7c3c25ff1fdc8aa9f41307534abbf48acb6f7466068f69", + "0x8d13db896ccfea403bd6441191995c1a65365cab7d0b97fbe9526da3f45a877bd1f4ef2edef160e8a56838cd1586330e", + "0x98c717de9e01bef8842c162a5e757fe8552d53269c84862f4d451e7c656ae6f2ae473767b04290b134773f63be6fdb9d", + "0x8c2036ace1920bd13cf018e82848c49eb511fad65fd0ff51f4e4b50cf3bfc294afb63cba682c16f52fb595a98fa84970", + "0xa3520fdff05dbad9e12551b0896922e375f9e5589368bcb2cc303bde252743b74460cb5caf99629325d3620f13adc796", + "0x8d4f83a5bfec05caf5910e0ce538ee9816ee18d0bd44c1d0da2a87715a23cd2733ad4d47552c6dc0eb397687d611dd19", + "0xa7b39a0a6a02823452d376533f39d35029867b3c9a6ad6bca181f18c54132d675613a700f9db2440fb1b4fa13c8bf18a", + "0x80bcb114b2544b80f404a200fc36860ed5e1ad31fe551acd4661d09730c452831751baa9b19d7d311600d267086a70bc", + "0x90dcce03c6f88fc2b08f2b42771eedde90cc5330fe0336e46c1a7d1b5a6c1641e5fcc4e7b3d5db00bd8afca9ec66ed81", + "0xaec15f40805065c98e2965b1ae12a6c9020cfdb094c2d0549acfc7ea2401a5fb48d3ea7d41133cf37c4e096e7ff53eb9", + "0x80e129b735dba49fa627a615d6c273119acec8e219b2f2c4373a332b5f98d66cbbdd688dfbe72a8f8bfefaccc02c50c1", + "0xa9b596da3bdfe23e6799ece5f7975bf7a1979a75f4f546deeaf8b34dfe3e0d623217cb4cf4ccd504cfa3625b88cd53f1", + "0xabcbbb70b16f6e517c0ab4363ab76b46e4ff58576b5f8340e5c0e8cc0e02621b6e23d742d73b015822a238b17cfd7665", + "0xa046937cc6ea6a2e1adae543353a9fe929c1ae4ad655be1cc051378482cf88b041e28b1e9a577e6ccff2d3570f55e200", + "0x831279437282f315e65a60184ef158f0a3dddc15a648dc552bdc88b3e6fe8288d3cfe9f0031846d81350f5e7874b4b33", + "0x993d7916fa213c6d66e7c4cafafc1eaec9a2a86981f91c31eb8a69c5df076c789cbf498a24c84e0ee77af95b42145026", + "0x823907a3b6719f8d49b3a4b7c181bd9bb29fcf842d7c70660c4f351852a1e197ca46cf5e879b47fa55f616fa2b87ce5e", + "0x8d228244e26132b234930ee14c75d88df0943cdb9c276a8faf167d259b7efc1beec2a87c112a6c608ad1600a239e9aae", + "0xab6e55766e5bfb0cf0764ed909a8473ab5047d3388b4f46faeba2d1425c4754c55c6daf6ad4751e634c618b53e549529", + "0xab0cab6860e55a84c5ad2948a7e0989e2b4b1fd637605634b118361497332df32d9549cb854b2327ca54f2bcb85eed8f", + "0xb086b349ae03ef34f4b25a57bcaa5d1b29bd94f9ebf87e22be475adfe475c51a1230c1ebe13506cb72c4186192451658", + "0x8a0b49d8a254ca6d91500f449cbbfbb69bb516c6948ac06808c65595e46773e346f97a5ce0ef7e5a5e0de278af22709c", + "0xac49de11edaaf04302c73c578cc0824bdd165c0d6321be1c421c1950e68e4f3589aa3995448c9699e93c6ebae8803e27", + "0x884f02d841cb5d8f4c60d1402469216b114ab4e93550b5bc1431756e365c4f870a9853449285384a6fa49e12ce6dc654", + "0xb75f3a28fa2cc8d36b49130cb7448a23d73a7311d0185ba803ad55c8219741d451c110f48b786e96c728bc525903a54f", + "0x80ae04dbd41f4a35e33f9de413b6ad518af0919e5a30cb0fa1b061b260420780bb674f828d37fd3b52b5a31673cbd803", + "0xb9a8011eb5fcea766907029bf743b45262db3e49d24f84503687e838651ed11cb64c66281e20a0ae9f6aa51acc552263", + "0x90bfdd75e2dc9cf013e22a5d55d2d2b8a754c96103a17524488e01206e67f8b6d52b1be8c4e3d5307d4fe06d0e51f54c", + "0xb4af353a19b06203a815ec43e79a88578cc678c46f5a954b85bc5c53b84059dddba731f3d463c23bfd5273885c7c56a4", + "0xaa125e96d4553b64f7140e5453ff5d2330318b69d74d37d283e84c26ad672fa00e3f71e530eb7e28be1e94afb9c4612e", + "0xa18e060aee3d49cde2389b10888696436bb7949a79ca7d728be6456a356ea5541b55492b2138da90108bd1ce0e6f5524", + "0x93e55f92bdbccc2de655d14b1526836ea2e52dba65eb3f87823dd458a4cb5079bf22ce6ef625cb6d6bfdd0995ab9a874", + "0x89f5a683526b90c1c3ceebbb8dc824b21cff851ce3531b164f6626e326d98b27d3e1d50982e507d84a99b1e04e86a915", + "0x83d1c38800361633a3f742b1cb2bfc528129496e80232611682ddbe403e92c2ac5373aea0bca93ecb5128b0b2b7a719e", + "0x8ecba560ac94905e19ce8d9c7af217bf0a145d8c8bd38e2db82f5e94cc3f2f26f55819176376b51f154b4aab22056059", + "0xa7e2a4a002b60291924850642e703232994acb4cfb90f07c94d1e0ecd2257bb583443283c20fc6017c37e6bfe85b7366", + "0x93ed7316fa50b528f1636fc6507683a672f4f4403e55e94663f91221cc198199595bd02eef43d609f451acc9d9b36a24", + "0xa1220a8ebc5c50ceed76a74bc3b7e0aa77f6884c71b64b67c4310ac29ce5526cb8992d6abc13ef6c8413ce62486a6795", + "0xb2f6eac5c869ad7f4a25161d3347093e2f70e66cd925032747e901189355022fab3038bca4d610d2f68feb7e719c110b", + "0xb703fa11a4d511ca01c7462979a94acb40b5d933759199af42670eb48f83df202fa0c943f6ab3b4e1cc54673ea3aab1e", + "0xb5422912afbfcb901f84791b04f1ddb3c3fbdc76d961ee2a00c5c320e06d3cc5b5909c3bb805df66c5f10c47a292b13d", + "0xad0934368da823302e1ac08e3ede74b05dfdbfffca203e97ffb0282c226814b65c142e6e15ec1e754518f221f01b30f7", + "0xa1dd302a02e37df15bf2f1147efe0e3c06933a5a767d2d030e1132f5c3ce6b98e216b6145eb39e1e2f74e76a83165b8d", + "0xa346aab07564432f802ae44738049a36f7ca4056df2d8f110dbe7fef4a3e047684dea609b2d03dc6bf917c9c2a47608f", + "0xb96c5f682a5f5d02123568e50f5d0d186e4b2c4c9b956ec7aabac1b3e4a766d78d19bd111adb5176b898e916e49be2aa", + "0x8a96676d56876fc85538db2e806e1cba20fd01aeb9fa3cb43ca6ca94a2c102639f65660db330e5d74a029bb72d6a0b39", + "0xab0048336bd5c3def1a4064eadd49e66480c1f2abb4df46e03afbd8a3342c2c9d74ee35d79f08f4768c1646681440984", + "0x888427bdf76caec90814c57ee1c3210a97d107dd88f7256f14f883ad0f392334b82be11e36dd8bfec2b37935177c7831", + "0xb622b282becf0094a1916fa658429a5292ba30fb48a4c8066ce1ddcefb71037948262a01c95bab6929ed3a76ba5db9fe", + "0xb5b9e005c1f456b6a368a3097634fb455723abe95433a186e8278dceb79d4ca2fbe21f8002e80027b3c531e5bf494629", + "0xa3c6707117a1e48697ed41062897f55d8119403eea6c2ee88f60180f6526f45172664bfee96bf61d6ec0b7fbae6aa058", + "0xb02a9567386a4fbbdb772d8a27057b0be210447348efe6feb935ceec81f361ed2c0c211e54787dc617cdffed6b4a6652", + "0xa9b8364e40ef15c3b5902e5534998997b8493064fa2bea99600def58279bb0f64574c09ba11e9f6f669a8354dd79dc85", + "0x9998a2e553a9aa9a206518fae2bc8b90329ee59ab23005b10972712389f2ec0ee746033c733092ffe43d73d33abbb8ef", + "0x843a4b34d9039bf79df96d79f2d15e8d755affb4d83d61872daf540b68c0a3888cf8fc00d5b8b247b38524bcb3b5a856", + "0x84f7128920c1b0bb40eee95701d30e6fc3a83b7bb3709f16d97e72acbb6057004ee7ac8e8f575936ca9dcb7866ab45f7", + "0x918d3e2222e10e05edb34728162a899ad5ada0aaa491aeb7c81572a9c0d506e31d5390e1803a91ff3bd8e2bb15d47f31", + "0x9442d18e2489613a7d47bb1cb803c8d6f3259d088cd079460976d87f7905ee07dea8f371b2537f6e1d792d36d7e42723", + "0xb491976970fe091995b2ed86d629126523ccf3e9daf8145302faca71b5a71a5da92e0e05b62d7139d3efac5c4e367584", + "0xaa628006235dc77c14cef4c04a308d66b07ac92d377df3de1a2e6ecfe3144f2219ad6d7795e671e1cb37a3641910b940", + "0x99d386adaea5d4981d7306feecac9a555b74ffdc218c907c5aa7ac04abaead0ec2a8237300d42a3fbc464673e417ceed", + "0x8f78e8b1556f9d739648ea3cab9606f8328b52877fe72f9305545a73b74d49884044ba9c1f1c6db7d9b7c7b7c661caba", + "0x8fb357ae49932d0babdf74fc7aa7464a65d3b6a2b3acf4f550b99601d3c0215900cfd67f2b6651ef94cfc323bac79fae", + "0x9906f2fa25c0290775aa001fb6198113d53804262454ae8b83ef371b5271bde189c0460a645829cb6c59f9ee3a55ce4d", + "0x8f4379b3ebb50e052325b27655ca6a82e6f00b87bf0d2b680d205dd2c7afdc9ff32a9047ae71a1cdf0d0ce6b9474d878", + "0xa85534e88c2bd43c043792eaa75e50914b21741a566635e0e107ae857aed0412035f7576cf04488ade16fd3f35fdbb87", + "0xb4ce93199966d3c23251ca7f28ec5af7efea1763d376b0385352ffb2e0a462ef95c69940950278cf0e3dafd638b7bd36", + "0xb10cb3d0317dd570aa73129f4acf63c256816f007607c19b423fb42f65133ce21f2f517e0afb41a5378cccf893ae14d0", + "0xa9b231c9f739f7f914e5d943ed9bff7eba9e2c333fbd7c34eb1648a362ee01a01af6e2f7c35c9fe962b11152cddf35de", + "0x99ff6a899e156732937fb81c0cced80ae13d2d44c40ba99ac183aa246103b31ec084594b1b7feb96da58f4be2dd5c0ed", + "0x8748d15d18b75ff2596f50d6a9c4ce82f61ecbcee123a6ceae0e43cab3012a29b6f83cf67b48c22f6f9d757c6caf76b2", + "0xb88ab05e4248b7fb634cf640a4e6a945d13e331237410f7217d3d17e3e384ddd48897e7a91e4516f1b9cbd30f35f238b", + "0x8d826deaeeb84a3b2d2c04c2300ca592501f992810582d6ae993e0d52f6283a839dba66c6c72278cff5871802b71173b", + "0xb36fed027c2f05a5ef625ca00b0364b930901e9e4420975b111858d0941f60e205546474bb25d6bfa6928d37305ae95f", + "0xaf2fcfc6b87967567e8b8a13a4ed914478185705724e56ce68fb2df6d1576a0cf34a61e880997a0d35dc2c3276ff7501", + "0xac351b919cd1fbf106feb8af2c67692bfcddc84762d18cea681cfa7470a5644839caace27efee5f38c87d3df306f4211", + "0x8d6665fb1d4d8d1fa23bd9b8a86e043b8555663519caac214d1e3e3effbc6bee7f2bcf21e645f77de0ced279d69a8a8b", + "0xa9fc1c2061756b2a1a169c1b149f212ff7f0d2488acd1c5a0197eba793cffa593fc6d1d1b40718aa75ca3ec77eff10e1", + "0xaff64f0fa009c7a6cf0b8d7a22ddb2c8170c3cb3eec082e60d5aadb00b0040443be8936d728d99581e33c22178c41c87", + "0x82e0b181adc5e3b1c87ff8598447260e839d53debfae941ebea38265575546c3a74a14b4325a030833a62ff6c52d9365", + "0xb7ad43cbb22f6f892c2a1548a41dc120ab1f4e1b8dea0cb6272dd9cb02054c542ecabc582f7e16de709d48f5166cae86", + "0x985e0c61094281532c4afb788ecb2dfcba998e974b5d4257a22040a161883908cdd068fe80f8eb49b8953cfd11acf43a", + "0xae46895c6d67ea6d469b6c9c07b9e5d295d9ae73b22e30da4ba2c973ba83a130d7eef39717ec9d0f36e81d56bf742671", + "0x8600177ea1f7e7ef90514b38b219a37dedfc39cb83297e4c7a5b479817ef56479d48cf6314820960c751183f6edf8b0e", + "0xb9208ec1c1d7a1e99b59c62d3e4e61dfb706b0e940d09d3abfc3454c19749083260614d89cfd7e822596c3cdbcc6bb95", + "0xa1e94042c796c2b48bc724352d2e9f3a22291d9a34705993357ddb6adabd76da6fc25dac200a8cb0b5bbd99ecddb7af6", + "0xb29c3adedd0bcad8a930625bc4dfdc3552a9afd5ca6dd9c0d758f978068c7982b50b711aa0eb5b97f2b84ee784637835", + "0xaf0632a238bb1f413c7ea8e9b4c3d68f2827bd2e38cd56024391fba6446ac5d19a780d0cfd4a78fe497d537b766a591a", + "0xaaf6e7f7d54f8ef5e2e45dd59774ecbeecf8683aa70483b2a75be6a6071b5981bbaf1627512a65d212817acdfab2e428", + "0x8c751496065da2e927cf492aa5ca9013b24f861d5e6c24b30bbf52ec5aaf1905f40f9a28175faef283dd4ed4f2182a09", + "0x8952377d8e80a85cf67d6b45499f3bad5fd452ea7bcd99efc1b066c4720d8e5bff1214cea90fd1f972a7f0baac3d29be", + "0xa1946ee543d1a6e21f380453be4d446e4130950c5fc3d075794eb8260f6f52d0a795c1ff91d028a648dc1ce7d9ab6b47", + "0x89f3fefe37af31e0c17533d2ca1ce0884cc1dc97c15cbfab9c331b8debd94781c9396abef4bb2f163d09277a08d6adf0", + "0xa2753f1e6e1a154fb117100a5bd9052137add85961f8158830ac20541ab12227d83887d10acf7fd36dcaf7c2596d8d23", + "0x814955b4198933ee11c3883863b06ff98c7eceb21fc3e09df5f916107827ccf3323141983e74b025f46ae00284c9513b", + "0x8cc5c6bb429073bfef47cae7b3bfccb0ffa076514d91a1862c6bda4d581e0df87db53cc6c130bf8a7826304960f5a34e", + "0x909f22c1f1cdc87f7be7439c831a73484a49acbf8f23d47087d7cf867c64ef61da3bde85dc57d705682b4c3fc710d36e", + "0x8048fee7f276fcd504aed91284f28e73693615e0eb3858fa44bcf79d7285a9001c373b3ef71d9a3054817ba293ebe28c", + "0x94400e5cf5d2700ca608c5fe35ce14623f71cc24959f2bc27ca3684092850f76b67fb1f07ca9e5b2ca3062cf8ad17bd4", + "0x81c2ae7d4d1b17f8b6de6a0430acc0d58260993980fe48dc2129c4948269cdc74f9dbfbf9c26b19360823fd913083d48", + "0x8c41fe765128e63f6889d6a979f6a4342300327c8b245a8cfe3ecfbcac1e09c3da30e2a1045b24b78efc6d6d50c8c6ac", + "0xa5dd4ae51ae48c8be4b218c312ade226cffce671cf121cb77810f6c0990768d6dd767badecb5c69921d5574d5e8433d3", + "0xb7642e325f4ba97ae2a39c1c9d97b35aafd49d53dba36aed3f3cb0ca816480b3394079f46a48252d46596559c90f4d58", + "0xae87375b40f35519e7bd4b1b2f73cd0b329b0c2cb9d616629342a71c6c304338445eda069b78ea0fbe44087f3de91e09", + "0xb08918cb6f736855e11d3daca1ddfbdd61c9589b203b5493143227bf48e2c77c2e8c94b0d1aa2fab2226e0eae83f2681", + "0xac36b84a4ac2ebd4d6591923a449c564e3be8a664c46092c09e875c2998eba16b5d32bfd0882fd3851762868e669f0b1", + "0xa44800a3bb192066fa17a3f29029a23697240467053b5aa49b9839fb9b9b8b12bcdcbfc557f024b61f4f51a9aacdefcb", + "0x9064c688fec23441a274cdf2075e5a449caf5c7363cc5e8a5dc9747183d2e00a0c69f2e6b3f6a7057079c46014c93b3b", + "0xaa367b021469af9f5b764a79bb3afbe2d87fe1e51862221672d1a66f954b165778b7c27a705e0f93841fab4c8468344d", + "0xa1a8bfc593d4ab71f91640bc824de5c1380ab2591cfdafcbc78a14b32de3c0e15f9d1b461d85c504baa3d4232c16bb53", + "0x97df48da1799430f528184d30b6baa90c2a2f88f34cdfb342d715339c5ebd6d019aa693cea7c4993daafc9849063a3aa", + "0xabd923831fbb427e06e0dd335253178a9e5791395c84d0ab1433c07c53c1209161097e9582fb8736f8a60bde62d8693e", + "0x84cd1a43f1a438b43dc60ffc775f646937c4f6871438163905a3cebf1115f814ccd38a6ccb134130bff226306e412f32", + "0x91426065996b0743c5f689eb3ca68a9f7b9e4d01f6c5a2652b57fa9a03d8dc7cd4bdbdab0ca5a891fee1e97a7f00cf02", + "0xa4bee50249db3df7fd75162b28f04e57c678ba142ce4d3def2bc17bcb29e4670284a45f218dad3969af466c62a903757", + "0x83141ebcc94d4681404e8b67a12a46374fded6df92b506aff3490d875919631408b369823a08b271d006d5b93136f317", + "0xa0ea1c8883d58d5a784da3d8c8a880061adea796d7505c1f903d07c287c5467f71e4563fc0faafbc15b5a5538b0a7559", + "0x89d9d480574f201a87269d26fb114278ed2c446328df431dc3556e3500e80e4cd01fcac196a2459d8646361ebda840df", + "0x8bf302978973632dd464bec819bdb91304712a3ec859be071e662040620422c6e75eba6f864f764cffa2799272efec39", + "0x922f666bc0fd58b6d7d815c0ae4f66d193d32fc8382c631037f59eeaeae9a8ca6c72d08e72944cf9e800b8d639094e77", + "0x81ad8714f491cdff7fe4399f2eb20e32650cff2999dd45b9b3d996d54a4aba24cc6c451212e78c9e5550368a1a38fb3f", + "0xb58fcf4659d73edb73175bd9139d18254e94c3e32031b5d4b026f2ed37aa19dca17ec2eb54c14340231615277a9d347e", + "0xb365ac9c2bfe409b710928c646ea2fb15b28557e0f089d39878e365589b9d1c34baf5566d20bb28b33bb60fa133f6eff", + "0x8fcae1d75b53ab470be805f39630d204853ca1629a14158bac2f52632277d77458dec204ff84b7b2d77e641c2045be65", + "0xa03efa6bebe84f4f958a56e2d76b5ba4f95dd9ed7eb479edc7cc5e646c8d4792e5b0dfc66cc86aa4b4afe2f7a4850760", + "0xaf1c823930a3638975fb0cc5c59651771b2719119c3cd08404fbd4ce77a74d708cefbe3c56ea08c48f5f10e6907f338f", + "0x8260c8299b17898032c761c325ac9cabb4c5b7e735de81eacf244f647a45fb385012f4f8df743128888c29aefcaaad16", + "0xab2f37a573c82e96a8d46198691cd694dfa860615625f477e41f91b879bc58a745784fccd8ffa13065834ffd150d881d", + "0x986c746c9b4249352d8e5c629e8d7d05e716b3c7aab5e529ca969dd1e984a14b5be41528baef4c85d2369a42d7209216", + "0xb25e32da1a8adddf2a6080725818b75bc67240728ad1853d90738485d8924ea1e202df0a3034a60ffae6f965ec55cf63", + "0xa266e627afcebcefea6b6b44cbc50f5c508f7187e87d047b0450871c2a030042c9e376f3ede0afcf9d1952f089582f71", + "0x86c3bbca4c0300606071c0a80dbdec21ce1dd4d8d4309648151c420854032dff1241a1677d1cd5de4e4de4385efda986", + "0xb9a21a1fe2d1f3273a8e4a9185abf2ff86448cc98bfa435e3d68306a2b8b4a6a3ea33a155be3cb62a2170a86f77679a5", + "0xb117b1ea381adce87d8b342cba3a15d492ff2d644afa28f22424cb9cbc820d4f7693dfc1a4d1b3697046c300e1c9b4c8", + "0x9004c425a2e68870d6c69b658c344e3aa3a86a8914ee08d72b2f95c2e2d8a4c7bb0c6e7e271460c0e637cec11117bf8e", + "0x86a18aa4783b9ebd9131580c8b17994825f27f4ac427b0929a1e0236907732a1c8139e98112c605488ee95f48bbefbfc", + "0x84042243b955286482ab6f0b5df4c2d73571ada00716d2f737ca05a0d2e88c6349e8ee9e67934cfee4a1775dbf7f4800", + "0x92c2153a4733a62e4e1d5b60369f3c26777c7d01cd3c8679212660d572bd3bac9b8a8a64e1f10f7dbf5eaa7579c4e423", + "0x918454b6bb8e44a2afa144695ba8d48ae08d0cdfef4ad078f67709eddf3bb31191e8b006f04e82ea45a54715ef4d5817", + "0xacf0b54f6bf34cf6ed6c2b39cf43194a40d68de6bcf1e4b82c34c15a1343e9ac3737885e1a30b78d01fa3a5125463db8", + "0xa7d60dbe4b6a7b054f7afe9ee5cbbfeca0d05dc619e6041fa2296b549322529faddb8a11e949562309aecefb842ac380", + "0x91ffb53e6d7e5f11159eaf13e783d6dbdfdb1698ed1e6dbf3413c6ea23492bbb9e0932230a9e2caac8fe899a17682795", + "0xb6e8d7be5076ee3565d5765a710c5ecf17921dd3cf555c375d01e958a365ae087d4a88da492a5fb81838b7b92bf01143", + "0xa8c6b763de2d4b2ed42102ef64eccfef31e2fb2a8a2776241c82912fa50fc9f77f175b6d109a97ede331307c016a4b1a", + "0x99839f86cb700c297c58bc33e28d46b92931961548deac29ba8df91d3e11721b10ea956c8e16984f9e4acf1298a79b37", + "0x8c2e2c338f25ea5c25756b7131cde0d9a2b35abf5d90781180a00fe4b8e64e62590dc63fe10a57fba3a31c76d784eb01", + "0x9687d7df2f41319ca5469d91978fed0565a5f11f829ebadaa83db92b221755f76c6eacd7700735e75c91e257087512e3", + "0x8795fdfb7ff8439c58b9bf58ed53873d2780d3939b902b9ddaaa4c99447224ced9206c3039a23c2c44bcc461e2bb637f", + "0xa803697b744d2d087f4e2307218d48fa88620cf25529db9ce71e2e3bbcc65bac5e8bb9be04777ef7bfb5ed1a5b8e6170", + "0x80f3d3efbbb9346ddd413f0a8e36b269eb5d7ff6809d5525ff9a47c4bcab2c01b70018b117f6fe05253775612ff70c6b", + "0x9050e0e45bcc83930d4c505af35e5e4d7ca01cd8681cba92eb55821aececcebe32bb692ebe1a4daac4e7472975671067", + "0x8d206812aac42742dbaf233e0c080b3d1b30943b54b60283515da005de05ea5caa90f91fedcfcba72e922f64d7040189", + "0xa2d44faaeb2eff7915c83f32b13ca6f31a6847b1c1ce114ea240bac3595eded89f09b2313b7915ad882292e2b586d5b4", + "0x961776c8576030c39f214ea6e0a3e8b3d32f023d2600958c098c95c8a4e374deeb2b9dc522adfbd6bda5949bdc09e2a2", + "0x993fa7d8447407af0fbcd9e6d77f815fa5233ab00674efbcf74a1f51c37481445ae291cc7b76db7c178f9cb0e570e0fc", + "0xabd5b1c78e05f9d7c8cc99bdaef8b0b6a57f2daf0f02bf492bec48ea4a27a8f1e38b5854da96efff11973326ff980f92", + "0x8f15af4764bc275e6ccb892b3a4362cacb4e175b1526a9a99944e692fe6ccb1b4fc19abf312bb2a089cb1f344d91a779", + "0xa09b27ccd71855512aba1d0c30a79ffbe7f6707a55978f3ced50e674b511a79a446dbc6d7946add421ce111135a460af", + "0x94b2f98ce86a9271fbd4153e1fc37de48421fe3490fb3840c00f2d5a4d0ba8810c6a32880b002f6374b59e0a7952518b", + "0x8650ac644f93bbcb88a6a0f49fee2663297fd4bc6fd47b6a89b9d8038d32370438ab3a4775ec9b58cb10aea8a95ef7b6", + "0x95e5c2f2e84eed88c6980bbba5a1c0bb375d5a628bff006f7516d45bb7d723da676add4fdd45956f312e7bab0f052644", + "0xb3278a3fa377ac93af7cfc9453f8cb594aae04269bbc99d2e0e45472ff4b6a2f97a26c4c57bf675b9d86f5e77a5d55d1", + "0xb4bcbe6eb666a206e2ea2f877912c1d3b5bdbd08a989fc4490eb06013e1a69ad1ba08bcdac048bf29192312be399077b", + "0xa76d70b78c99fffcbf9bb9886eab40f1ea4f99a309710b660b64cbf86057cbcb644d243f6e341711bb7ef0fedf0435a7", + "0xb2093c1ee945dca7ac76ad5aed08eae23af31dd5a77c903fd7b6f051f4ab84425d33a03c3d45bf2907bc93c02d1f3ad8", + "0x904b1f7534e053a265b22d20be859912b9c9ccb303af9a8d6f1d8f6ccdc5c53eb4a45a1762b880d8444d9be0cd55e7f9", + "0x8f664a965d65bc730c9ef1ec7467be984d4b8eb46bd9b0d64e38e48f94e6e55dda19aeac82cbcf4e1473440e64c4ca18", + "0x8bcee65c4cc7a7799353d07b114c718a2aae0cd10a3f22b7eead5185d159dafd64852cb63924bf87627d176228878bce", + "0x8c78f2e3675096fef7ebaa898d2615cd50d39ca3d8f02b9bdfb07e67da648ae4be3da64838dffc5935fd72962c4b96c7", + "0x8c40afd3701629421fec1df1aac4e849384ef2e80472c0e28d36cb1327acdf2826f99b357f3d7afdbc58a6347fc40b3c", + "0xa197813b1c65a8ea5754ef782522a57d63433ef752215ecda1e7da76b0412ee619f58d904abd2e07e0c097048b6ae1dd", + "0xa670542629e4333884ad7410f9ea3bd6f988df4a8f8a424ca74b9add2312586900cf9ae8bd50411f9146e82626b4af56", + "0xa19875cc07ab84e569d98b8b67fb1dbbdfb59093c7b748fae008c8904a6fd931a63ca8d03ab5fea9bc8d263568125a9b", + "0xb57e7f68e4eb1bd04aafa917b1db1bdab759a02aa8a9cdb1cba34ba8852b5890f655645c9b4e15d5f19bf37e9f2ffe9f", + "0x8abe4e2a4f6462b6c64b3f10e45db2a53c2b0d3c5d5443d3f00a453e193df771eda635b098b6c8604ace3557514027af", + "0x8459e4fb378189b22b870a6ef20183deb816cefbf66eca1dc7e86d36a2e011537db893729f500dc154f14ce24633ba47", + "0x930851df4bc7913c0d8c0f7bd3b071a83668987ed7c397d3d042fdc0d9765945a39a3bae83da9c88cb6b686ed8aeeb26", + "0x8078c9e5cd05e1a8c932f8a1d835f61a248b6e7133fcbb3de406bf4ffc0e584f6f9f95062740ba6008d98348886cf76b", + "0xaddff62bb29430983fe578e3709b0949cdc0d47a13a29bc3f50371a2cb5c822ce53e2448cfaa01bcb6e0aa850d5a380e", + "0x9433add687b5a1e12066721789b1db2edf9b6558c3bdc0f452ba33b1da67426abe326e9a34d207bfb1c491c18811bde1", + "0x822beda3389963428cccc4a2918fa9a8a51cf0919640350293af70821967108cded5997adae86b33cb917780b097f1ca", + "0xa7a9f52bda45e4148ed56dd176df7bd672e9b5ed18888ccdb405f47920fdb0844355f8565cefb17010b38324edd8315f", + "0xb35c3a872e18e607b2555c51f9696a17fa18da1f924d503b163b4ec9fe22ed0c110925275cb6c93ce2d013e88f173d6a", + "0xadf34b002b2b26ab84fc1bf94e05bd8616a1d06664799ab149363c56a6e0c807fdc473327d25632416e952ea327fcd95", + "0xae4a6b9d22a4a3183fac29e2551e1124a8ce4a561a9a2afa9b23032b58d444e6155bb2b48f85c7b6d70393274e230db7", + "0xa2ea3be4fc17e9b7ce3110284038d46a09e88a247b6971167a7878d9dcf36925d613c382b400cfa4f37a3ebea3699897", + "0x8e5863786b641ce3140fbfe37124d7ad3925472e924f814ebfc45959aaf3f61dc554a597610b5defaecc85b59a99b50f", + "0xaefde3193d0f700d0f515ab2aaa43e2ef1d7831c4f7859f48e52693d57f97fa9e520090f3ed700e1c966f4b76048e57f", + "0x841a50f772956622798e5cd208dc7534d4e39eddee30d8ce133383d66e5f267e389254a0cdae01b770ecd0a9ca421929", + "0x8fbc2bfd28238c7d47d4c03b1b910946c0d94274a199575e5b23242619b1de3497784e646a92aa03e3e24123ae4fcaba", + "0x926999579c8eec1cc47d7330112586bdca20b4149c8b2d066f527c8b9f609e61ce27feb69db67eea382649c6905efcf9", + "0xb09f31f305efcc65589adf5d3690a76cf339efd67cd43a4e3ced7b839507466e4be72dd91f04e89e4bbef629d46e68c0", + "0xb917361f6b95f759642638e0b1d2b3a29c3bdef0b94faa30de562e6078c7e2d25976159df3edbacbf43614635c2640b4", + "0x8e7e8a1253bbda0e134d62bfe003a2669d471b47bd2b5cde0ff60d385d8e62279d54022f5ac12053b1e2d3aaa6910b4c", + "0xb69671a3c64e0a99d90b0ed108ce1912ff8ed983e4bddd75a370e9babde25ee1f5efb59ec707edddd46793207a8b1fe7", + "0x910b2f4ebd37b7ae94108922b233d0920b4aba0bd94202c70f1314418b548d11d8e9caa91f2cd95aff51b9432d122b7f", + "0x82f645c90dfb52d195c1020346287c43a80233d3538954548604d09fbab7421241cde8593dbc4acc4986e0ea39a27dd9", + "0x8fee895f0a140d88104ce442fed3966f58ff9d275e7373483f6b4249d64a25fb5374bbdc6bce6b5ab0270c2847066f83", + "0x84f5bd7aab27b2509397aeb86510dd5ac0a53f2c8f73799bf720f2f87a52277f8d6b0f77f17bc80739c6a7119b7eb062", + "0x9903ceced81099d7e146e661bcf01cbaccab5ba54366b85e2177f07e2d8621e19d9c9c3eee14b9266de6b3f9b6ea75ae", + "0xb9c16ea2a07afa32dd6c7c06df0dec39bca2067a9339e45475c98917f47e2320f6f235da353fd5e15b477de97ddc68dd", + "0x9820a9bbf8b826bec61ebf886de2c4f404c1ebdc8bab82ee1fea816d9de29127ce1852448ff717a3fe8bbfe9e92012e5", + "0x817224d9359f5da6f2158c2c7bf9165501424f063e67ba9859a07ab72ee2ee62eb00ca6da821cfa19065c3282ca72c74", + "0x94b95c465e6cb00da400558a3c60cfec4b79b27e602ca67cbc91aead08de4b6872d8ea096b0dc06dca4525c8992b8547", + "0xa2b539a5bccd43fa347ba9c15f249b417997c6a38c63517ca38394976baa08e20be384a360969ff54e7e721db536b3e5", + "0x96caf707e34f62811ee8d32ccf28d8d6ec579bc33e424d0473529af5315c456fd026aa910c1fed70c91982d51df7d3ca", + "0x8a77b73e890b644c6a142bdbac59b22d6a676f3b63ddafb52d914bb9d395b8bf5aedcbcc90429337df431ebd758a07a6", + "0x8857830a7351025617a08bc44caec28d2fae07ebf5ffc9f01d979ce2a53839a670e61ae2783e138313929129790a51a1", + "0xaa3e420321ed6f0aa326d28d1a10f13facec6f605b6218a6eb9cbc074801f3467bf013a456d1415a5536f12599efa3d3", + "0x824aed0951957b00ea2f3d423e30328a3527bf6714cf9abbae84cf27e58e5c35452ba89ccc011de7c68c75d6e021d8f1", + "0xa2e87cc06bf202e953fb1081933d8b4445527dde20e38ed1a4f440144fd8fa464a2b73e068b140562e9045e0f4bd3144", + "0xae3b8f06ad97d7ae3a5e5ca839efff3e4824dc238c0c03fc1a8d2fc8aa546cdfd165b784a31bb4dec7c77e9305b99a4b", + "0xb30c3e12395b1fb8b776f3ec9f87c70e35763a7b2ddc68f0f60a4982a84017f27c891a98561c830038deb033698ed7fc", + "0x874e507757cd1177d0dff0b0c62ce90130324442a33da3b2c8ee09dbca5d543e3ecfe707e9f1361e7c7db641c72794bb", + "0xb53012dd10b5e7460b57c092eaa06d6502720df9edbbe3e3f61a9998a272bf5baaac4a5a732ad4efe35d6fac6feca744", + "0x85e6509d711515534d394e6cacbed6c81da710074d16ef3f4950bf2f578d662a494d835674f79c4d6315bced4defc5f0", + "0xb6132b2a34b0905dcadc6119fd215419a7971fe545e52f48b768006944b4a9d7db1a74b149e2951ea48c083b752d0804", + "0x989867da6415036d19b4bacc926ce6f4df7a556f50a1ba5f3c48eea9cefbb1c09da81481c8009331ee83f0859185e164", + "0x960a6c36542876174d3fbc1505413e29f053ed87b8d38fef3af180491c7eff25200b45dd5fe5d4d8e63c7e8c9c00f4c8", + "0x9040b59bd739d9cc2e8f6e894683429e4e876a8106238689ff4c22770ae5fdae1f32d962b30301fa0634ee163b524f35", + "0xaf3fcd0a45fe9e8fe256dc7eab242ef7f582dd832d147444483c62787ac820fafc6ca55d639a73f76bfa5e7f5462ab8f", + "0xb934c799d0736953a73d91e761767fdb78454355c4b15c680ce08accb57ccf941b13a1236980001f9e6195801cffd692", + "0x8871e8e741157c2c326b22cf09551e78da3c1ec0fc0543136f581f1550f8bab03b0a7b80525c1e99812cdbf3a9698f96", + "0xa8a977f51473a91d178ee8cfa45ffef8d6fd93ab1d6e428f96a3c79816d9c6a93cd70f94d4deda0125fd6816e30f3bea", + "0xa7688b3b0a4fc1dd16e8ba6dc758d3cfe1b7cf401c31739484c7fa253cce0967df1b290769bcefc9d23d3e0cb19e6218", + "0x8ae84322662a57c6d729e6ff9d2737698cc2da2daeb1f39e506618750ed23442a6740955f299e4a15dda6db3e534d2c6", + "0xa04a961cdccfa4b7ef83ced17ab221d6a043b2c718a0d6cc8e6f798507a31f10bf70361f70a049bc8058303fa7f96864", + "0xb463e39732a7d9daec8a456fb58e54b30a6e160aa522a18b9a9e836488cce3342bcbb2e1deab0f5e6ec0a8796d77197d", + "0xb1434a11c6750f14018a2d3bcf94390e2948f4f187e93bb22070ca3e5393d339dc328cbfc3e48815f51929465ffe7d81", + "0x84ff81d73f3828340623d7e3345553610aa22a5432217ef0ebd193cbf4a24234b190c65ca0873c22d10ea7b63bd1fbed", + "0xb6fe2723f0c47757932c2ddde7a4f8434f665612f7b87b4009c2635d56b6e16b200859a8ade49276de0ef27a2b6c970a", + "0x9742884ed7cd52b4a4a068a43d3faa02551a424136c85a9313f7cb58ea54c04aa83b0728fd741d1fe39621e931e88f8f", + "0xb7d2d65ea4d1ad07a5dee39e40d6c03a61264a56b1585b4d76fc5b2a68d80a93a42a0181d432528582bf08d144c2d6a9", + "0x88c0f66bada89f8a43e5a6ead2915088173d106c76f724f4a97b0f6758aed6ae5c37c373c6b92cdd4aea8f6261f3a374", + "0x81f9c43582cb42db3900747eb49ec94edb2284999a499d1527f03315fd330e5a509afa3bff659853570e9886aab5b28b", + "0x821f9d27d6beb416abf9aa5c79afb65a50ed276dbda6060103bc808bcd34426b82da5f23e38e88a55e172f5c294b4d40", + "0x8ba307b9e7cb63a6c4f3851b321aebfdb6af34a5a4c3bd949ff7d96603e59b27ff4dc4970715d35f7758260ff942c9e9", + "0xb142eb6c5f846de33227d0bda61d445a7c33c98f0a8365fe6ab4c1fabdc130849be597ef734305894a424ea715372d08", + "0xa732730ae4512e86a741c8e4c87fee8a05ee840fec0e23b2e037d58dba8dde8d10a9bc5191d34d00598941becbbe467f", + "0xadce6f7c30fd221f6b10a0413cc76435c4bb36c2d60bca821e5c67409fe9dbb2f4c36ef85eb3d734695e4be4827e9fd3", + "0xa74f00e0f9b23aff7b2527ce69852f8906dab9d6abe62ecd497498ab21e57542e12af9918d4fd610bb09e10b0929c510", + "0xa593b6b0ef26448ce4eb3ab07e84238fc020b3cb10d542ff4b16d4e2be1bcde3797e45c9cf753b8dc3b0ffdb63984232", + "0xaed3913afccf1aa1ac0eb4980eb8426d0baccebd836d44651fd72af00d09fac488a870223c42aca3ceb39752070405ae", + "0xb2c44c66a5ea7fde626548ba4cef8c8710191343d3dadfd3bb653ce715c0e03056a5303a581d47dde66e70ea5a2d2779", + "0x8e5029b2ccf5128a12327b5103f7532db599846e422531869560ceaff392236434d87159f597937dbf4054f810c114f4", + "0x82beed1a2c4477e5eb39fc5b0e773b30cfec77ef2b1bf17eadaf60eb35b6d0dd9d8cf06315c48d3546badb3f21cd0cca", + "0x90077bd6cc0e4be5fff08e5d07a5a158d36cebd1d1363125bc4fae0866ffe825b26f933d4ee5427ba5cd0c33c19a7b06", + "0xa7ec0d8f079970e8e34f0ef3a53d3e0e45428ddcef9cc776ead5e542ef06f3c86981644f61c5a637e4faf001fb8c6b3e", + "0xae6d4add6d1a6f90b22792bc9d40723ee6850c27d0b97eefafd5b7fd98e424aa97868b5287cc41b4fbd7023bca6a322c", + "0x831aa917533d077da07c01417feaa1408846363ba2b8d22c6116bb858a95801547dd88b7d7fa1d2e3f0a02bdeb2e103d", + "0x96511b860b07c8a5ed773f36d4aa9d02fb5e7882753bf56303595bcb57e37ccc60288887eb83bef08c657ec261a021a2", + "0x921d2a3e7e9790f74068623de327443666b634c8443aba80120a45bba450df920b2374d96df1ce3fb1b06dd06f8cf6e3", + "0xaa74451d51fe82b4581ead8e506ec6cd881010f7e7dd51fc388eb9a557db5d3c6721f81c151d08ebd9c2591689fbc13e", + "0xa972bfbcf4033d5742d08716c927c442119bdae336bf5dff914523b285ccf31953da2733759aacaa246a9af9f698342c", + "0xad1fcd0cae0e76840194ce4150cb8a56ebed728ec9272035f52a799d480dfc85840a4d52d994a18b6edb31e79be6e8ad", + "0xa2c69fe1d36f235215432dad48d75887a44c99dfa0d78149acc74087da215a44bdb5f04e6eef88ff7eff80a5a7decc77", + "0xa94ab2af2b6ee1bc6e0d4e689ca45380d9fbd3c5a65b9bd249d266a4d4c07bf5d5f7ef2ae6000623aee64027892bf8fe", + "0x881ec1fc514e926cdc66480ac59e139148ff8a2a7895a49f0dff45910c90cdda97b66441a25f357d6dd2471cddd99bb3", + "0x884e6d3b894a914c8cef946a76d5a0c8351843b2bffa2d1e56c6b5b99c84104381dd1320c451d551c0b966f4086e60f9", + "0x817c6c10ce2677b9fc5223500322e2b880583254d0bb0d247d728f8716f5e05c9ff39f135854342a1afecd9fbdcf7c46", + "0xaaf4a9cb686a14619aa1fc1ac285dd3843ac3dd99f2b2331c711ec87b03491c02f49101046f3c5c538dc9f8dba2a0ac2", + "0x97ecea5ce53ca720b5d845227ae61d70269a2f53540089305c86af35f0898bfd57356e74a8a5e083fa6e1ea70080bd31", + "0xa22d811e1a20a75feac0157c418a4bfe745ccb5d29466ffa854dca03e395b6c3504a734341746b2846d76583a780b32e", + "0x940cbaa0d2b2db94ae96b6b9cf2deefbfd059e3e5745de9aec4a25f0991b9721e5cd37ef71c631575d1a0c280b01cd5b", + "0xae33cb4951191258a11044682de861bf8d92d90ce751b354932dd9f3913f542b6a0f8a4dc228b3cd9244ac32c4582832", + "0xa580df5e58c4274fe0f52ac2da1837e32f5c9db92be16c170187db4c358f43e5cfdda7c5911dcc79d77a5764e32325f5", + "0x81798178cb9d8affa424f8d3be67576ba94d108a28ccc01d330c51d5a63ca45bb8ca63a2f569b5c5fe1303cecd2d777f", + "0x89975b91b94c25c9c3660e4af4047a8bacf964783010820dbc91ff8281509379cb3b24c25080d5a01174dd9a049118d5", + "0xa7327fcb3710ed3273b048650bde40a32732ef40a7e58cf7f2f400979c177944c8bc54117ba6c80d5d4260801dddab79", + "0x92b475dc8cb5be4b90c482f122a51bcb3b6c70593817e7e2459c28ea54a7845c50272af38119406eaadb9bcb993368d0", + "0x9645173e9ecefc4f2eae8363504f7c0b81d85f8949a9f8a6c01f2d49e0a0764f4eacecf3e94016dd407fc14494fce9f9", + "0x9215fd8983d7de6ae94d35e6698226fc1454977ae58d42d294be9aad13ac821562ad37d5e7ee5cdfe6e87031d45cd197", + "0x810360a1c9b88a9e36f520ab5a1eb8bed93f52deefbe1312a69225c0a08edb10f87cc43b794aced9c74220cefcc57e7d", + "0xad7e810efd61ed4684aeda9ed8bb02fb9ae4b4b63fda8217d37012b94ff1b91c0087043bfa4e376f961fff030c729f3b", + "0x8b07c95c6a06db8738d10bb03ec11b89375c08e77f0cab7e672ce70b2685667ca19c7e1c8b092821d31108ea18dfd4c7", + "0x968825d025ded899ff7c57245250535c732836f7565eab1ae23ee7e513201d413c16e1ba3f5166e7ac6cf74de8ceef4f", + "0x908243370c5788200703ade8164943ad5f8c458219186432e74dbc9904a701ea307fd9b94976c866e6c58595fd891c4b", + "0x959969d16680bc535cdc6339e6186355d0d6c0d53d7bbfb411641b9bf4b770fd5f575beef5deec5c4fa4d192d455c350", + "0xad177f4f826a961adeac76da40e2d930748effff731756c797eddc4e5aa23c91f070fb69b19221748130b0961e68a6bb", + "0x82f8462bcc25448ef7e0739425378e9bb8a05e283ce54aae9dbebaf7a3469f57833c9171672ad43a79778366c72a5e37", + "0xa28fb275b1845706c2814d9638573e9bc32ff552ebaed761fe96fdbce70395891ca41c400ae438369264e31a2713b15f", + "0x8a9c613996b5e51dadb587a787253d6081ea446bf5c71096980bf6bd3c4b69905062a8e8a3792de2d2ece3b177a71089", + "0x8d5aefef9f60cb27c1db2c649221204dda48bb9bf8bf48f965741da051340e8e4cab88b9d15c69f3f84f4c854709f48a", + "0x93ebf2ca6ad85ab6deace6de1a458706285b31877b1b4d7dcb9d126b63047efaf8c06d580115ec9acee30c8a7212fa55", + "0xb3ee46ce189956ca298057fa8223b7fd1128cf52f39159a58bca03c71dd25161ac13f1472301f72aef3e1993fe1ab269", + "0xa24d7a8d066504fc3f5027ccb13120e2f22896860e02c45b5eba1dbd512d6a17c28f39155ea581619f9d33db43a96f92", + "0xae9ceacbfe12137db2c1a271e1b34b8f92e4816bad1b3b9b6feecc34df0f8b3b0f7ed0133acdf59c537d43d33fc8d429", + "0x83967e69bf2b361f86361bd705dce0e1ad26df06da6c52b48176fe8dfcbeb03c462c1a4c9e649eff8c654b18c876fdef", + "0x9148e6b814a7d779c19c31e33a068e97b597de1f8100513db3c581190513edc4d544801ce3dd2cf6b19e0cd6daedd28a", + "0x94ccdafc84920d320ed22de1e754adea072935d3c5f8c2d1378ebe53d140ea29853f056fb3fb1e375846061a038cc9bc", + "0xafb43348498c38b0fa5f971b8cdd3a62c844f0eb52bc33daf2f67850af0880fce84ecfb96201b308d9e6168a0d443ae3", + "0x86d5736520a83538d4cd058cc4b4e84213ed00ebd6e7af79ae787adc17a92ba5359e28ba6c91936d967b4b28d24c3070", + "0xb5210c1ff212c5b1e9ef9126e08fe120a41e386bb12c22266f7538c6d69c7fd8774f11c02b81fd4e88f9137b020801fe", + "0xb78cfd19f94d24e529d0f52e18ce6185cb238edc6bd43086270fd51dd99f664f43dd4c7d2fe506762fbd859028e13fcf", + "0xa6e7220598c554abdcc3fdc587b988617b32c7bb0f82c06205467dbedb58276cc07cae317a190f19d19078773f4c2bbb", + "0xb88862809487ee430368dccd85a5d72fa4d163ca4aad15c78800e19c1a95be2192719801e315d86cff7795e0544a77e4", + "0x87ecb13a03921296f8c42ceb252d04716f10e09c93962239fcaa0a7fef93f19ab3f2680bc406170108bc583e9ff2e721", + "0xa810cd473832b6581c36ec4cb403f2849357ba2d0b54df98ef3004b8a530c078032922a81d40158f5fb0043d56477f6e", + "0xa247b45dd85ca7fbb718b328f30a03f03c84aef2c583fbdc9fcc9eb8b52b34529e8c8f535505c10598b1b4dac3d7c647", + "0x96ee0b91313c68bac4aa9e065ce9e1d77e51ca4cff31d6a438718c58264dee87674bd97fc5c6b8008be709521e4fd008", + "0x837567ad073e42266951a9a54750919280a2ac835a73c158407c3a2b1904cf0d17b7195a393c71a18ad029cbd9cf79ee", + "0xa6a469c44b67ebf02196213e7a63ad0423aab9a6e54acc6fcbdbb915bc043586993454dc3cd9e4be8f27d67c1050879b", + "0x8712d380a843b08b7b294f1f06e2f11f4ad6bcc655fdde86a4d8bc739c23916f6fad2b902fe47d6212f03607907e9f0e", + "0x920adfb644b534789943cdae1bdd6e42828dda1696a440af2f54e6b97f4f97470a1c6ea9fa6a2705d8f04911d055acd1", + "0xa161c73adf584a0061e963b062f59d90faac65c9b3a936b837a10d817f02fcabfa748824607be45a183dd40f991fe83f", + "0x874f4ecd408c76e625ea50bc59c53c2d930ee25baf4b4eca2440bfbffb3b8bc294db579caa7c68629f4d9ec24187c1ba", + "0x8bff18087f112be7f4aa654e85c71fef70eee8ae480f61d0383ff6f5ab1a0508f966183bb3fc4d6f29cb7ca234aa50d3", + "0xb03b46a3ca3bc743a173cbc008f92ab1aedd7466b35a6d1ca11e894b9482ea9dc75f8d6db2ddd1add99bfbe7657518b7", + "0x8b4f3691403c3a8ad9e097f02d130769628feddfa8c2b3dfe8cff64e2bed7d6e5d192c1e2ba0ac348b8585e94acd5fa1", + "0xa0d9ca4a212301f97591bf65d5ef2b2664766b427c9dd342e23cb468426e6a56be66b1cb41fea1889ac5d11a8e3c50a5", + "0x8c93ed74188ca23b3df29e5396974b9cc135c91fdefdea6c0df694c8116410e93509559af55533a3776ac11b228d69b1", + "0x82dd331fb3f9e344ebdeeb557769b86a2cc8cc38f6c298d7572a33aea87c261afa9dbd898989139b9fc16bc1e880a099", + "0xa65faedf326bcfd8ef98a51410c78b021d39206704e8291cd1f09e096a66b9b0486be65ff185ca224c45918ac337ddeb", + "0xa188b37d363ac072a766fd5d6fa27df07363feff1342217b19e3c37385e42ffde55e4be8355aceaa2f267b6d66b4ac41", + "0x810fa3ba3e96d843e3bafd3f2995727f223d3567c8ba77d684c993ba1773c66551eb5009897c51b3fe9b37196984f5ec", + "0x87631537541852da323b4353af45a164f68b304d24c01183bf271782e11687f3fcf528394e1566c2a26cb527b3148e64", + "0xb721cb2b37b3c477a48e3cc0044167d51ff568a5fd2fb606e5aec7a267000f1ddc07d3db919926ae12761a8e017c767c", + "0x904dfad4ba2cc1f6e60d1b708438a70b1743b400164cd981f13c064b8328d5973987d4fb9cf894068f29d3deaf624dfb", + "0xa70491538893552c20939fae6be2f07bfa84d97e2534a6bbcc0f1729246b831103505e9f60e97a8fa7d2e6c1c2384579", + "0x8726cf1b26b41f443ff7485adcfddc39ace2e62f4d65dd0bb927d933e262b66f1a9b367ded5fbdd6f3b0932553ac1735", + "0xae8a11cfdf7aa54c08f80cb645e3339187ab3886babe9fae5239ba507bb3dd1c0d161ca474a2df081dcd3d63e8fe445e", + "0x92328719e97ce60e56110f30a00ac5d9c7a2baaf5f8d22355d53c1c77941e3a1fec7d1405e6fbf8959665fe2ba7a8cad", + "0x8d9d6255b65798d0018a8cccb0b6343efd41dc14ff2058d3eed9451ceaad681e4a0fa6af67b0a04318aa628024e5553d", + "0xb70209090055459296006742d946a513f0cba6d83a05249ee8e7a51052b29c0ca9722dc4af5f9816a1b7938a5dac7f79", + "0xaab7b766b9bf91786dfa801fcef6d575dc6f12b77ecc662eb4498f0312e54d0de9ea820e61508fc8aeee5ab5db529349", + "0xa8104b462337748b7f086a135d0c3f87f8e51b7165ca6611264b8fb639d9a2f519926cb311fa2055b5fadf03da70c678", + "0xb0d2460747d5d8b30fc6c6bd0a87cb343ddb05d90a51b465e8f67d499cfc5e3a9e365da05ae233bbee792cdf90ec67d5", + "0xaa55f5bf3815266b4a149f85ed18e451c93de9163575e3ec75dd610381cc0805bb0a4d7c4af5b1f94d10231255436d2c", + "0x8d4c6a1944ff94426151909eb5b99cfd92167b967dabe2bf3aa66bb3c26c449c13097de881b2cfc1bf052862c1ef7b03", + "0x8862296162451b9b6b77f03bf32e6df71325e8d7485cf3335d66fd48b74c2a8334c241db8263033724f26269ad95b395", + "0x901aa96deb26cda5d9321190ae6624d357a41729d72ef1abfd71bebf6139af6d690798daba53b7bc5923462115ff748a", + "0x96c195ec4992728a1eb38cdde42d89a7bce150db43adbc9e61e279ea839e538deec71326b618dd39c50d589f78fc0614", + "0xb6ff8b8aa0837b99a1a8b46fb37f20ad4aecc6a98381b1308697829a59b8442ffc748637a88cb30c9b1f0f28a926c4f6", + "0x8d807e3dca9e7bef277db1d2cfb372408dd587364e8048b304eff00eacde2c723bfc84be9b98553f83cba5c7b3cba248", + "0x8800c96adb0195c4fc5b24511450dee503c32bf47044f5e2e25bd6651f514d79a2dd9b01cd8c09f3c9d3859338490f57", + "0x89fe366096097e38ec28dd1148887112efa5306cc0c3da09562aafa56f4eb000bf46ff79bf0bdd270cbde6bf0e1c8957", + "0xaf409a90c2776e1e7e3760b2042507b8709e943424606e31e791d42f17873a2710797f5baaab4cc4a19998ef648556b0", + "0x8d761863c9b6edbd232d35ab853d944f5c950c2b643f84a1a1327ebb947290800710ff01dcfa26dc8e9828481240e8b1", + "0x90b95e9be1e55c463ed857c4e0617d6dc3674e99b6aa62ed33c8e79d6dfcf7d122f4f4cc2ee3e7c5a49170cb617d2e2e", + "0xb3ff381efefabc4db38cc4727432e0301949ae4f16f8d1dea9b4f4de611cf5a36d84290a0bef160dac4e1955e516b3b0", + "0xa8a84564b56a9003adcadb3565dc512239fc79572762cda7b5901a255bc82656bb9c01212ad33d6bef4fbbce18dacc87", + "0x90a081890364b222eef54bf0075417f85e340d2fec8b7375995f598aeb33f26b44143ebf56fca7d8b4ebb36b5747b0eb", + "0xade6ee49e1293224ddf2d8ab7f14bb5be6bc6284f60fd5b3a1e0cf147b73cff57cf19763b8a36c5083badc79c606b103", + "0xb2fa99806dd2fa3de09320b615a2570c416c9bcdb052e592b0aead748bbe407ec9475a3d932ae48b71c2627eb81986a6", + "0x91f3b7b73c8ccc9392542711c45fe6f236057e6efad587d661ad5cb4d6e88265f86b807bb1151736b1009ab74fd7acb4", + "0x8800e2a46af96696dfbdcbf2ca2918b3dcf28ad970170d2d1783b52b8d945a9167d052beeb55f56c126da7ffa7059baa", + "0x9862267a1311c385956b977c9aa08548c28d758d7ba82d43dbc3d0a0fd1b7a221d39e8399997fea9014ac509ff510ac4", + "0xb7d24f78886fd3e2d283e18d9ad5a25c1a904e7d9b9104bf47da469d74f34162e27e531380dbbe0a9d051e6ffd51d6e7", + "0xb0f445f9d143e28b9df36b0f2c052da87ee2ca374d9d0fbe2eff66ca6fe5fe0d2c1951b428d58f7314b7e74e45d445ea", + "0xb63fc4083eabb8437dafeb6a904120691dcb53ce2938b820bb553da0e1eecd476f72495aacb72600cf9cad18698fd3db", + "0xb9ffd8108eaebd582d665f8690fe8bb207fd85185e6dd9f0b355a09bac1bbff26e0fdb172bc0498df025414e88fe2eda", + "0x967ed453e1f1a4c5b7b6834cc9f75c13f6889edc0cc91dc445727e9f408487bbf05c337103f61397a10011dfbe25d61d", + "0x98ceb673aff36e1987d5521a3984a07079c3c6155974bb8b413e8ae1ce84095fe4f7862fba7aefa14753eb26f2a5805f", + "0x85f01d28603a8fdf6ce6a50cb5c44f8a36b95b91302e3f4cd95c108ce8f4d212e73aec1b8d936520d9226802a2bd9136", + "0x88118e9703200ca07910345fbb789e7a8f92bd80bbc79f0a9e040e8767d33df39f6eded403a9b636eabf9101e588482a", + "0x90833a51eef1b10ed74e8f9bbd6197e29c5292e469c854eed10b0da663e2bceb92539710b1858bbb21887bd538d28d89", + "0xb513b905ec19191167c6193067b5cfdf5a3d3828375360df1c7e2ced5815437dfd37f0c4c8f009d7fb29ff3c8793f560", + "0xb1b6d405d2d18f9554b8a358cc7e2d78a3b34269737d561992c8de83392ac9a2857be4bf15de5a6c74e0c9d0f31f393c", + "0xb828bd3e452b797323b798186607849f85d1fb20c616833c0619360dfd6b3e3aa000fd09dafe4b62d74abc41072ff1a9", + "0x8efde67d0cca56bb2c464731879c9ac46a52e75bac702a63200a5e192b4f81c641f855ca6747752b84fe469cb7113b6c", + "0xb2762ba1c89ac3c9a983c242e4d1c2610ff0528585ed5c0dfc8a2c0253551142af9b59f43158e8915a1da7cc26b9df67", + "0x8a3f1157fb820d1497ef6b25cd70b7e16bb8b961b0063ad340d82a79ee76eb2359ca9e15e6d42987ed7f154f5eeaa2da", + "0xa75e29f29d38f09c879f971c11beb5368affa084313474a5ecafa2896180b9e47ea1995c2733ec46f421e395a1d9cffe", + "0x8e8c3dd3e7196ef0b4996b531ec79e4a1f211db5d5635e48ceb80ff7568b2ff587e845f97ee703bb23a60945ad64314a", + "0x8e7f32f4a3e3c584af5e3d406924a0aa34024c42eca74ef6cc2a358fd3c9efaf25f1c03aa1e66bb94b023a2ee2a1cace", + "0xab7dce05d59c10a84feb524fcb62478906b3fa045135b23afbede3bb32e0c678d8ebe59feabccb5c8f3550ea76cae44b", + "0xb38bb4b44d827f6fd3bd34e31f9186c59e312dbfadd4a7a88e588da10146a78b1f8716c91ad8b806beb8da65cab80c4c", + "0x9490ce9442bbbd05438c7f5c4dea789f74a7e92b1886a730544b55ba377840740a3ae4f2f146ee73f47c9278b0e233bc", + "0x83c003fab22a7178eed1a668e0f65d4fe38ef3900044e9ec63070c23f2827d36a1e73e5c2b883ec6a2afe2450171b3b3", + "0x9982f02405978ddc4fca9063ebbdb152f524c84e79398955e66fe51bc7c1660ec1afc3a86ec49f58d7b7dde03505731c", + "0xab337bd83ccdd2322088ffa8d005f450ced6b35790f37ab4534313315ee84312adc25e99cce052863a8bedee991729ed", + "0x8312ce4bec94366d88f16127a17419ef64285cd5bf9e5eda010319b48085966ed1252ed2f5a9fd3e0259b91bb65f1827", + "0xa60d5a6327c4041b0c00a1aa2f0af056520f83c9ce9d9ccd03a0bd4d9e6a1511f26a422ea86bd858a1f77438adf07e6c", + "0xb84a0a0b030bdad83cf5202aa9afe58c9820e52483ab41f835f8c582c129ee3f34aa096d11c1cd922eda02ea1196a882", + "0x8077d105317f4a8a8f1aadeb05e0722bb55f11abcb490c36c0904401107eb3372875b0ac233144829e734f0c538d8c1d", + "0x9202503bd29a6ec198823a1e4e098f9cfe359ed51eb5174d1ca41368821bfeebcbd49debfd02952c41359d1c7c06d2b1", + "0xabc28c155e09365cb77ffead8dc8f602335ef93b2f44e4ef767ce8fc8ef9dd707400f3a722e92776c2e0b40192c06354", + "0xb0f6d1442533ca45c9399e0a63a11f85ff288d242cea6cb3b68c02e77bd7d158047cae2d25b3bcd9606f8f66d9b32855", + "0xb01c3d56a0db84dc94575f4b6ee2de4beca3230e86bed63e2066beb22768b0a8efb08ebaf8ac3dedb5fe46708b084807", + "0x8c8634b0432159f66feaabb165842d1c8ac378f79565b1b90c381aa8450eb4231c3dad11ec9317b9fc2b155c3a771e32", + "0x8e67f623d69ecd430c9ee0888520b6038f13a2b6140525b056dc0951f0cfed2822e62cf11d952a483107c5c5acac4826", + "0x9590bb1cba816dd6acd5ac5fba5142c0a19d53573e422c74005e0bcf34993a8138c83124cad35a3df65879dba6134edd", + "0x801cd96cde0749021a253027118d3ea135f3fcdbe895db08a6c145641f95ebd368dd6a1568d995e1d0084146aebe224a", + "0x848b5d196427f6fc1f762ee3d36e832b64a76ec1033cfedc8b985dea93932a7892b8ef1035c653fb9dcd9ab2d9a44ac8", + "0xa1017eb83d5c4e2477e7bd2241b2b98c4951a3b391081cae7d75965cadc1acaec755cf350f1f3d29741b0828e36fedea", + "0x8d6d2785e30f3c29aad17bd677914a752f831e96d46caf54446d967cb2432be2c849e26f0d193a60bee161ea5c6fe90a", + "0x935c0ba4290d4595428e034b5c8001cbd400040d89ab00861108e8f8f4af4258e41f34a7e6b93b04bc253d3b9ffc13bf", + "0xaac02257146246998477921cef2e9892228590d323b839f3e64ea893b991b463bc2f47e1e5092ddb47e70b2f5bce7622", + "0xb921fde9412970a5d4c9a908ae8ce65861d06c7679af577cf0ad0d5344c421166986bee471fd6a6cecb7d591f06ec985", + "0x8ef4c37487b139d6756003060600bb6ebac7ea810b9c4364fc978e842f13ac196d1264fbe5af60d76ff6d9203d8e7d3f", + "0x94b65e14022b5cf6a9b95f94be5ace2711957c96f4211c3f7bb36206bd39cfbd0ea82186cab5ad0577a23214a5c86e9e", + "0xa31c166d2a2ca1d5a75a5920fef7532681f62191a50d8555fdaa63ba4581c3391cc94a536fc09aac89f64eafceec3f90", + "0x919a8cc128de01e9e10f5d83b08b52293fdd41bde2b5ae070f3d95842d4a16e5331cf2f3d61c765570c8022403610fa4", + "0xb23d6f8331eef100152d60483cfa14232a85ee712c8538c9b6417a5a7c5b353c2ac401390c6c215cb101f5cee6b5f43e", + "0xab357160c08a18319510a571eafff154298ce1020de8e1dc6138a09fcb0fcbcdd8359f7e9386bda00b7b9cdea745ffdc", + "0xab55079aea34afa5c0bd1124b9cdfe01f325b402fdfa017301bf87812eaa811ea5798c3aaf818074d420d1c782b10ada", + "0xade616010dc5009e7fc4f8d8b00dc716686a5fa0a7816ad9e503e15839d3b909b69d9dd929b7575376434ffec0d2bea8", + "0x863997b97ed46898a8a014599508fa3079f414b1f4a0c4fdc6d74ae8b444afa350f327f8bfc2a85d27f9e2d049c50135", + "0x8d602ff596334efd4925549ed95f2aa762b0629189f0df6dbb162581657cf3ea6863cd2287b4d9c8ad52813d87fcd235", + "0xb70f68c596dcdeed92ad5c6c348578b26862a51eb5364237b1221e840c47a8702f0fbc56eb520a22c0eed99795d3903e", + "0x9628088f8e0853cefadee305a8bf47fa990c50fa96a82511bbe6e5dc81ef4b794e7918a109070f92fc8384d77ace226f", + "0x97e26a46e068b605ce96007197ecd943c9a23881862f4797a12a3e96ba2b8d07806ad9e2a0646796b1889c6b7d75188c", + "0xb1edf467c068cc163e2d6413cc22b16751e78b3312fe47b7ea82b08a1206d64415b2c8f2a677fa89171e82cc49797150", + "0xa44d15ef18745b251429703e3cab188420e2d974de07251501799b016617f9630643fcd06f895634d8ecdd579e1bf000", + "0xabd126df3917ba48c618ee4dbdf87df506193462f792874439043fa1b844466f6f4e0ff2e42516e63b5b23c0892b2695", + "0xa2a67f57c4aa3c2aa1eeddbfd5009a89c26c2ce8fa3c96a64626aba19514beb125f27df8559506f737de3eae0f1fc18f", + "0xa633e0132197e6038197304b296ab171f1d8e0d0f34dcf66fe9146ac385b0239232a8470b9205a4802ab432389f4836d", + "0xa914b3a28509a906c3821463b936455d58ff45dcbe158922f9efb2037f2eb0ce8e92532d29b5d5a3fcd0d23fa773f272", + "0xa0e1412ce4505daf1a2e59ce4f0fc0e0023e335b50d2b204422f57cd65744cc7a8ed35d5ef131a42c70b27111d3115b7", + "0xa2339e2f2b6072e88816224fdd612c04d64e7967a492b9f8829db15367f565745325d361fd0607b0def1be384d010d9e", + "0xa7309fc41203cb99382e8193a1dcf03ac190a7ce04835304eb7e341d78634e83ea47cb15b885601956736d04cdfcaa01", + "0x81f3ccd6c7f5b39e4e873365f8c37b214e8ab122d04a606fbb7339dc3298c427e922ec7418002561d4106505b5c399ee", + "0x92c121cf914ca549130e352eb297872a63200e99b148d88fbc9506ad882bec9d0203d65f280fb5b0ba92e336b7f932e8", + "0xa4b330cf3f064f5b131578626ad7043ce2a433b6f175feb0b52d36134a454ca219373fd30d5e5796410e005b69082e47", + "0x86fe5774112403ad83f9c55d58317eeb17ad8e1176d9f2f69c2afb7ed83bc718ed4e0245ceab4b377f5f062dcd4c00e7", + "0x809d152a7e2654c7fd175b57f7928365a521be92e1ed06c05188a95864ddb25f7cab4c71db7d61bbf4cae46f3a1d96ce", + "0xb82d663e55c2a5ada7e169e9b1a87bc1c0177baf1ec1c96559b4cb1c5214ce1ddf2ab8d345014cab6402f3774235cf5a", + "0x86580af86df1bd2c385adb8f9a079e925981b7184db66fc5fe5b14cddb82e7d836b06eaeef14924ac529487b23dae111", + "0xb5f5f4c5c94944ecc804df6ab8687d64e27d988cbfeae1ba7394e0f6adbf778c5881ead7cd8082dd7d68542b9bb4ecd5", + "0xa6016916146c2685c46e8fdd24186394e2d5496e77e08c0c6a709d4cd7dfa97f1efcef94922b89196819076a91ad37b5", + "0xb778e7367ded3b6eab53d5fc257f7a87e8faf74a593900f2f517220add2125be3f6142022660d8181df8d164ad9441ce", + "0x8581b2d36abe6f553add4d24be761bec1b8efaa2929519114346615380b3c55b59e6ad86990e312f7e234d0203bdf59b", + "0x9917e74fd45c3f71a829ff5498a7f6b5599b48c098dda2339bf04352bfc7f368ccf1a407f5835901240e76452ae807d7", + "0xafd196ce6f9335069138fd2e3d133134da253978b4ce373152c0f26affe77a336505787594022e610f8feb722f7cc1fb", + "0xa477491a1562e329764645e8f24d8e228e5ef28c9f74c6b5b3abc4b6a562c15ffb0f680d372aed04d9e1bf944dece7be", + "0x9767440d58c57d3077319d3a330e5322b9ba16981ec74a5a14d53462eab59ae7fd2b14025bfc63b268862094acb444e6", + "0x80986d921be3513ef69264423f351a61cb48390c1be8673aee0f089076086aaebea7ebe268fd0aa7182695606116f679", + "0xa9554c5c921c07b450ee04e34ec58e054ac1541b26ce2ce5a393367a97348ba0089f53db6660ad76b60278b66fd12e3e", + "0x95097e7d2999b3e84bf052c775581cf361325325f4a50192521d8f4693c830bed667d88f482dc1e3f833aa2bd22d2cbf", + "0x9014c91d0f85aefd28436b5228c12f6353c055a9326c7efbf5e071e089e2ee7c070fcbc84c5fafc336cbb8fa6fec1ca1", + "0x90f57ba36ee1066b55d37384942d8b57ae00f3cf9a3c1d6a3dfee1d1af42d4b5fa9baeb0cd7e46687d1d6d090ddb931d", + "0x8e4b1db12fd760a17214c9e47f1fce6e43c0dbb4589a827a13ac61aaae93759345697bb438a00edab92e0b7b62414683", + "0x8022a959a513cdc0e9c705e0fc04eafd05ff37c867ae0f31f6d01cddd5df86138a426cab2ff0ac8ff03a62e20f7e8f51", + "0x914e9a38829834c7360443b8ed86137e6f936389488eccf05b4b4db7c9425611705076ecb3f27105d24b85c852be7511", + "0x957fb10783e2bd0db1ba66b18e794df710bc3b2b05776be146fa5863c15b1ebdd39747b1a95d9564e1772cdfc4f37b8a", + "0xb6307028444daed8ed785ac9d0de76bc3fe23ff2cc7e48102553613bbfb5afe0ebe45e4212a27021c8eb870721e62a1f", + "0x8f76143597777d940b15a01b39c5e1b045464d146d9a30a6abe8b5d3907250e6c7f858ff2308f8591e8b0a7b3f3c568a", + "0x96163138ac0ce5fd00ae9a289648fd9300a0ca0f63a88481d703ecd281c06a52a3b5178e849e331f9c85ca4ba398f4cc", + "0xa63ef47c3e18245b0482596a09f488a716df3cbd0f9e5cfabed0d742843e65db8961c556f45f49762f3a6ac8b627b3ef", + "0x8cb595466552e7c4d42909f232d4063e0a663a8ef6f6c9b7ce3a0542b2459cde04e0e54c7623d404acb5b82775ac04f6", + "0xb47fe69960eb45f399368807cff16d941a5a4ebad1f5ec46e3dc8a2e4d598a7e6114d8f0ca791e9720fd786070524e2b", + "0x89eb5ff83eea9df490e5beca1a1fbbbbcf7184a37e2c8c91ede7a1e654c81e8cd41eceece4042ea7918a4f4646b67fd6", + "0xa84f5d155ed08b9054eecb15f689ba81e44589e6e7207a99790c598962837ca99ec12344105b16641ca91165672f7153", + "0xa6cc8f25c2d5b2d2f220ec359e6a37a52b95fa6af6e173c65e7cd55299eff4aa9e6d9e6f2769e6459313f1f2aecb0fab", + "0xafcde944411f017a9f7979755294981e941cc41f03df5e10522ef7c7505e5f1babdd67b3bf5258e8623150062eb41d9b", + "0x8fab39f39c0f40182fcd996ade2012643fe7731808afbc53f9b26900b4d4d1f0f5312d9d40b3df8baa4739970a49c732", + "0xae193af9726da0ebe7df1f9ee1c4846a5b2a7621403baf8e66c66b60f523e719c30c6b4f897bb14b27d3ff3da8392eeb", + "0x8ac5adb82d852eba255764029f42e6da92dcdd0e224d387d1ef94174038db9709ac558d90d7e7c57ad4ce7f89bbfc38c", + "0xa2066b3458fdf678ee487a55dd5bfb74fde03b54620cb0e25412a89ee28ad0d685e309a51e3e4694be2fa6f1593a344c", + "0x88d031745dd0ae07d61a15b594be5d4b2e2a29e715d081649ad63605e3404b0c3a5353f0fd9fad9c05c18e93ce674fa1", + "0x8283cfb0ef743a043f2b77ecaeba3005e2ca50435585b5dd24777ee6bce12332f85e21b446b536da38508807f0f07563", + "0xb376de22d5f6b0af0b59f7d9764561f4244cf8ffe22890ecd3dcf2ff1832130c9b821e068c9d8773136f4796721e5963", + "0xae3afc50c764f406353965363840bf28ee85e7064eb9d5f0bb3c31c64ab10f48c853e942ee2c9b51bae59651eaa08c2f", + "0x948b204d103917461a01a6c57a88f2d66b476eae5b00be20ec8c747650e864bc8a83aee0aff59cb7584b7a3387e0ee48", + "0x81ab098a082b07f896c5ffd1e4446cb7fb44804cbbf38d125208b233fc82f8ec9a6a8d8dd1c9a1162dc28ffeec0dde50", + "0xa149c6f1312821ced2969268789a3151bdda213451760b397139a028da609c4134ac083169feb0ee423a0acafd10eceb", + "0xb0ac9e27a5dadaf523010f730b28f0ebac01f460d3bbbe277dc9d44218abb5686f4fac89ae462682fef9edbba663520a", + "0x8d0e0073cca273daaaa61b6fc54bfe5a009bc3e20ae820f6c93ba77b19eca517d457e948a2de5e77678e4241807157cb", + "0xad61d3a2edf7c7533a04964b97499503fd8374ca64286dba80465e68fe932e96749b476f458c6fc57cb1a7ca85764d11", + "0x90eb5e121ae46bc01a30881eaa556f46bd8457a4e80787cf634aab355082de34ac57d7f497446468225f7721e68e2a47", + "0x8cdac557de7c42d1f3780e33dec1b81889f6352279be81c65566cdd4952d4c15d79e656cbd46035ab090b385e90245ef", + "0x82b67e61b88b84f4f4d4f65df37b3e3dcf8ec91ea1b5c008fdccd52da643adbe6468a1cfdb999e87d195afe2883a3b46", + "0x8503b467e8f5d6048a4a9b78496c58493a462852cab54a70594ae3fd064cfd0deb4b8f336a262155d9fedcaa67d2f6fd", + "0x8db56c5ac763a57b6ce6832930c57117058e3e5a81532b7d19346346205e2ec614eb1a2ee836ef621de50a7bc9b7f040", + "0xad344699198f3c6e8c0a3470f92aaffc805b76266734414c298e10b5b3797ca53578de7ccb2f458f5e0448203f55282b", + "0x80602032c43c9e2a09154cc88b83238343b7a139f566d64cb482d87436b288a98f1ea244fd3bff8da3c398686a900c14", + "0xa6385bd50ecd548cfb37174cdbb89e10025b5cadaf3cff164c95d7aef5a33e3d6a9bf0c681b9e11db9ef54ebeee2a0c1", + "0xabf2d95f4aa34b0581eb9257a0cc8462b2213941a5deb8ba014283293e8b36613951b61261cc67bbd09526a54cbbff76", + "0xa3d5de52f48df72c289ff713e445991f142390798cd42bd9d9dbefaee4af4f5faf09042d126b975cf6b98711c3072553", + "0x8e627302ff3d686cff8872a1b7c2a57b35f45bf2fc9aa42b049d8b4d6996a662b8e7cbac6597f0cb79b0cc4e29fbf133", + "0x8510702e101b39a1efbf4e504e6123540c34b5689645e70d0bac1ecc1baf47d86c05cef6c4317a4e99b4edaeb53f2d00", + "0xaa173f0ecbcc6088f878f8726d317748c81ebf501bba461f163b55d66099b191ec7c55f7702f351a9c8eb42cfa3280e2", + "0xb560a697eafab695bcef1416648a0a664a71e311ecbe5823ae903bd0ed2057b9d7574b9a86d3fe22aa3e6ddce38ea513", + "0x8df6304a3d9cf40100f3f687575419c998cd77e5cc27d579cf4f8e98642de3609af384a0337d145dd7c5635172d26a71", + "0x8105c7f3e4d30a29151849673853b457c1885c186c132d0a98e63096c3774bc9deb956cf957367e633d0913680bda307", + "0x95373fc22c0917c3c2044ac688c4f29a63ed858a45c0d6d2d0fe97afd6f532dcb648670594290c1c89010ecc69259bef", + "0x8c2fae9bcadab341f49b55230310df93cac46be42d4caa0d42e45104148a91e527af1b4209c0d972448162aed28fab64", + "0xb05a77baab70683f76209626eaefdda2d36a0b66c780a20142d23c55bd479ddd4ad95b24579384b6cf62c8eb4c92d021", + "0x8e6bc6a7ea2755b4aaa19c1c1dee93811fcde514f03485fdc3252f0ab7f032c315614f6336e57cea25dcfb8fb6084eeb", + "0xb656a27d06aade55eadae2ad2a1059198918ea6cc3fd22c0ed881294d34d5ac7b5e4700cc24350e27d76646263b223aa", + "0xa296469f24f6f56da92d713afcd4dd606e7da1f79dc4e434593c53695847eefc81c7c446486c4b3b8c8d00c90c166f14", + "0x87a326f57713ac2c9dffeb3af44b9f3c613a8f952676fc46343299122b47ee0f8d792abaa4b5db6451ced5dd153aabd0", + "0xb689e554ba9293b9c1f6344a3c8fcb6951d9f9eac4a2e2df13de021aade7c186be27500e81388e5b8bcab4c80f220a31", + "0x87ae0aa0aa48eac53d1ca5a7b93917de12db9e40ceabf8fdb40884ae771cfdf095411deef7c9f821af0b7070454a2608", + "0xa71ffa7eae8ace94e6c3581d4cb2ad25d48cbd27edc9ec45baa2c8eb932a4773c3272b2ffaf077b40f76942a1f3af7f2", + "0x94c218c91a9b73da6b7a495b3728f3028df8ad9133312fc0c03e8c5253b7ccb83ed14688fd4602e2fd41f29a0bc698bd", + "0xae1e77b90ca33728af07a4c03fb2ef71cd92e2618e7bf8ed4d785ce90097fc4866c29999eb84a6cf1819d75285a03af2", + "0xb7a5945b277dab9993cf761e838b0ac6eaa903d7111fca79f9fde3d4285af7a89bf6634a71909d095d7619d913972c9c", + "0x8c43b37be02f39b22029b20aca31bff661abce4471dca88aa3bddefd9c92304a088b2dfc8c4795acc301ca3160656af2", + "0xb32e5d0fba024554bd5fe8a793ebe8003335ddd7f585876df2048dcf759a01285fecb53daae4950ba57f3a282a4d8495", + "0x85ea7fd5e10c7b659df5289b2978b2c89e244f269e061b9a15fcab7983fc1962b63546e82d5731c97ec74b6804be63ef", + "0x96b89f39181141a7e32986ac02d7586088c5a9662cec39843f397f3178714d02f929af70630c12cbaba0268f8ba2d4fa", + "0x929ab1a2a009b1eb37a2817c89696a06426529ebe3f306c586ab717bd34c35a53eca2d7ddcdef36117872db660024af9", + "0xa696dccf439e9ca41511e16bf3042d7ec0e2f86c099e4fc8879d778a5ea79e33aa7ce96b23dc4332b7ba26859d8e674d", + "0xa8fe69a678f9a194b8670a41e941f0460f6e2dbc60470ab4d6ae2679cc9c6ce2c3a39df2303bee486dbfde6844e6b31a", + "0x95f58f5c82de2f2a927ca99bf63c9fc02e9030c7e46d0bf6b67fe83a448d0ae1c99541b59caf0e1ccab8326231af09a5", + "0xa57badb2c56ca2c45953bd569caf22968f76ed46b9bac389163d6fe22a715c83d5e94ae8759b0e6e8c2f27bff7748f3f", + "0x868726fd49963b24acb5333364dffea147e98f33aa19c7919dc9aca0fd26661cfaded74ede7418a5fadbe7f5ae67b67b", + "0xa8d8550dcc64d9f1dd7bcdab236c4122f2b65ea404bb483256d712c7518f08bb028ff8801f1da6aed6cbfc5c7062e33b", + "0x97e25a87dae23155809476232178538d4bc05d4ff0882916eb29ae515f2a62bfce73083466cc0010ca956aca200aeacc", + "0xb4ea26be3f4bd04aa82d7c4b0913b97bcdf5e88b76c57eb1a336cbd0a3eb29de751e1bc47c0e8258adec3f17426d0c71", + "0x99ee555a4d9b3cf2eb420b2af8e3bc99046880536116d0ce7193464ac40685ef14e0e3c442f604e32f8338cb0ef92558", + "0x8c64efa1da63cd08f319103c5c7a761221080e74227bbc58b8fb35d08aa42078810d7af3e60446cbaff160c319535648", + "0x8d9fd88040076c28420e3395cbdfea402e4077a3808a97b7939d49ecbcf1418fe50a0460e1c1b22ac3f6e7771d65169a", + "0xae3c19882d7a9875d439265a0c7003c8d410367627d21575a864b9cb4918de7dbdb58a364af40c5e045f3df40f95d337", + "0xb4f7bfacab7b2cafe393f1322d6dcc6f21ffe69cd31edc8db18c06f1a2b512c27bd0618091fd207ba8df1808e9d45914", + "0x94f134acd0007c623fb7934bcb65ef853313eb283a889a3ffa79a37a5c8f3665f3d5b4876bc66223610c21dc9b919d37", + "0xaa15f74051171daacdc1f1093d3f8e2d13da2833624b80a934afec86fc02208b8f55d24b7d66076444e7633f46375c6a", + "0xa32d6bb47ef9c836d9d2371807bafbbbbb1ae719530c19d6013f1d1f813c49a60e4fa51d83693586cba3a840b23c0404", + "0xb61b3599145ea8680011aa2366dc511a358b7d67672d5b0c5be6db03b0efb8ca5a8294cf220ea7409621f1664e00e631", + "0x859cafc3ee90b7ececa1ed8ef2b2fc17567126ff10ca712d5ffdd16aa411a5a7d8d32c9cab1fbf63e87dce1c6e2f5f53", + "0xa2fef1b0b2874387010e9ae425f3a9676d01a095d017493648bcdf3b31304b087ccddb5cf76abc4e1548b88919663b6b", + "0x939e18c73befc1ba2932a65ede34c70e4b91e74cc2129d57ace43ed2b3af2a9cc22a40fbf50d79a63681b6d98852866d", + "0xb3b4259d37b1b14aee5b676c9a0dd2d7f679ab95c120cb5f09f9fbf10b0a920cb613655ddb7b9e2ba5af4a221f31303c", + "0x997255fe51aaca6e5a9cb3359bcbf25b2bb9e30649bbd53a8a7c556df07e441c4e27328b38934f09c09d9500b5fabf66", + "0xabb91be2a2d860fd662ed4f1c6edeefd4da8dc10e79251cf87f06029906e7f0be9b486462718f0525d5e049472692cb7", + "0xb2398e593bf340a15f7801e1d1fbda69d93f2a32a889ec7c6ae5e8a37567ac3e5227213c1392ee86cfb3b56ec2787839", + "0x8ddf10ccdd72922bed36829a36073a460c2118fc7a56ff9c1ac72581c799b15c762cb56cb78e3d118bb9f6a7e56cb25e", + "0x93e6bc0a4708d16387cacd44cf59363b994dc67d7ada7b6d6dbd831c606d975247541b42b2a309f814c1bfe205681fc6", + "0xb93fc35c05998cffda2978e12e75812122831523041f10d52f810d34ff71944979054b04de0117e81ddf5b0b4b3e13c0", + "0x92221631c44d60d68c6bc7b287509f37ee44cbe5fdb6935cee36b58b17c7325098f98f7910d2c3ca5dc885ad1d6dabc7", + "0xa230124424a57fad3b1671f404a94d7c05f4c67b7a8fbacfccea28887b78d7c1ed40b92a58348e4d61328891cd2f6cee", + "0xa6a230edb8518a0f49d7231bc3e0bceb5c2ac427f045819f8584ba6f3ae3d63ed107a9a62aad543d7e1fcf1f20605706", + "0x845be1fe94223c7f1f97d74c49d682472585d8f772762baad8a9d341d9c3015534cc83d102113c51a9dea2ab10d8d27b", + "0xb44262515e34f2db597c8128c7614d33858740310a49cdbdf9c8677c5343884b42c1292759f55b8b4abc4c86e4728033", + "0x805592e4a3cd07c1844bc23783408310accfdb769cca882ad4d07d608e590a288b7370c2cb327f5336e72b7083a0e30f", + "0x95153e8b1140df34ee864f4ca601cb873cdd3efa634af0c4093fbaede36f51b55571ab271e6a133020cd34db8411241f", + "0x82878c1285cfa5ea1d32175c9401f3cc99f6bb224d622d3fd98cc7b0a27372f13f7ab463ce3a33ec96f9be38dbe2dfe3", + "0xb7588748f55783077c27fc47d33e20c5c0f5a53fc0ac10194c003aa09b9f055d08ec971effa4b7f760553997a56967b3", + "0xb36b4de6d1883b6951f59cfae381581f9c6352fcfcf1524fccdab1571a20f80441d9152dc6b48bcbbf00371337ca0bd5", + "0x89c5523f2574e1c340a955cbed9c2f7b5fbceb260cb1133160dabb7d41c2f613ec3f6e74bbfab3c4a0a6f0626dbe068f", + "0xa52f58cc39f968a9813b1a8ddc4e83f4219e4dd82c7aa1dd083bea7edf967151d635aa9597457f879771759b876774e4", + "0x8300a67c2e2e123f89704abfde095463045dbd97e20d4c1157bab35e9e1d3d18f1f4aaba9cbe6aa2d544e92578eaa1b6", + "0xac6a7f2918768eb6a43df9d3a8a04f8f72ee52f2e91c064c1c7d75cad1a3e83e5aba9fe55bb94f818099ac91ccf2e961", + "0x8d64a2b0991cf164e29835c8ddef6069993a71ec2a7de8157bbfa2e00f6367be646ed74cbaf524f0e9fe13fb09fa15fd", + "0x8b2ffe5a545f9f680b49d0a9797a4a11700a2e2e348c34a7a985fc278f0f12def6e06710f40f9d48e4b7fbb71e072229", + "0x8ab8f71cd337fa19178924e961958653abf7a598e3f022138b55c228440a2bac4176cea3aea393549c03cd38a13eb3fc", + "0x8419d28318c19ea4a179b7abb43669fe96347426ef3ac06b158d79c0acf777a09e8e770c2fb10e14b3a0421705990b23", + "0x8bacdac310e1e49660359d0a7a17fe3d334eb820e61ae25e84cb52f863a2f74cbe89c2e9fc3283745d93a99b79132354", + "0xb57ace3fa2b9f6b2db60c0d861ace7d7e657c5d35d992588aeed588c6ce3a80b6f0d49f8a26607f0b17167ab21b675e4", + "0x83e265cde477f2ecc164f49ddc7fb255bb05ff6adc347408353b7336dc3a14fdedc86d5a7fb23f36b8423248a7a67ed1", + "0xa60ada971f9f2d79d436de5d3d045f5ab05308cae3098acaf5521115134b2a40d664828bb89895840db7f7fb499edbc5", + "0xa63eea12efd89b62d3952bf0542a73890b104dd1d7ff360d4755ebfa148fd62de668edac9eeb20507967ea37fb220202", + "0xa0275767a270289adc991cc4571eff205b58ad6d3e93778ddbf95b75146d82517e8921bd0d0564e5b75fa0ccdab8e624", + "0xb9b03fd3bf07201ba3a039176a965d736b4ef7912dd9e9bf69fe1b57c330a6aa170e5521fe8be62505f3af81b41d7806", + "0xa95f640e26fb1106ced1729d6053e41a16e4896acac54992279ff873e5a969aad1dcfa10311e28b8f409ac1dab7f03bb", + "0xb144778921742418053cb3c70516c63162c187f00db2062193bb2c14031075dbe055d020cde761b26e8c58d0ea6df2c1", + "0x8432fbb799e0435ef428d4fefc309a05dd589bce74d7a87faf659823e8c9ed51d3e42603d878e80f439a38be4321c2fa", + "0xb08ddef14e42d4fd5d8bf39feb7485848f0060d43b51ed5bdda39c05fe154fb111d29719ee61a23c392141358c0cfcff", + "0x8ae3c5329a5e025b86b5370e06f5e61177df4bda075856fade20a17bfef79c92f54ed495f310130021ba94fb7c33632b", + "0x92b6d3c9444100b4d7391febfc1dddaa224651677c3695c47a289a40d7a96d200b83b64e6d9df51f534564f272a2c6c6", + "0xb432bc2a3f93d28b5e506d68527f1efeb2e2570f6be0794576e2a6ef9138926fdad8dd2eabfa979b79ab7266370e86bc", + "0x8bc315eacedbcfc462ece66a29662ca3dcd451f83de5c7626ef8712c196208fb3d8a0faf80b2e80384f0dd9772f61a23", + "0xa72375b797283f0f4266dec188678e2b2c060dfed5880fc6bb0c996b06e91a5343ea2b695adaab0a6fd183b040b46b56", + "0xa43445036fbaa414621918d6a897d3692fdae7b2961d87e2a03741360e45ebb19fcb1703d23f1e15bb1e2babcafc56ac", + "0xb9636b2ffe305e63a1a84bd44fb402442b1799bd5272638287aa87ca548649b23ce8ce7f67be077caed6aa2dbc454b78", + "0x99a30bf0921d854c282b83d438a79f615424f28c2f99d26a05201c93d10378ab2cd94a792b571ddae5d4e0c0013f4006", + "0x8648e3c2f93d70b392443be116b48a863e4b75991bab5db656a4ef3c1e7f645e8d536771dfe4e8d1ceda3be8d32978b0", + "0xab50dc9e6924c1d2e9d2e335b2d679fc7d1a7632e84964d3bac0c9fe57e85aa5906ec2e7b0399d98ddd022e9b19b5904", + "0xab729328d98d295f8f3272afaf5d8345ff54d58ff9884da14f17ecbdb7371857fdf2f3ef58080054e9874cc919b46224", + "0x83fa5da7592bd451cad3ad7702b4006332b3aae23beab4c4cb887fa6348317d234bf62a359e665b28818e5410c278a09", + "0x8bdbff566ae9d368f114858ef1f009439b3e9f4649f73efa946e678d6c781d52c69af195df0a68170f5f191b2eac286b", + "0x91245e59b4425fd4edb2a61d0d47c1ccc83d3ced8180de34887b9655b5dcda033d48cde0bdc3b7de846d246c053a02e8", + "0xa2cb00721e68f1cad8933947456f07144dc69653f96ceed845bd577d599521ba99cdc02421118971d56d7603ed118cbf", + "0xaf8cd66d303e808b22ec57860dd909ca64c27ec2c60e26ffecfdc1179d8762ffd2739d87b43959496e9fee4108df71df", + "0x9954136812dffcd5d3f167a500e7ab339c15cfc9b3398d83f64b0daa3dd5b9a851204f424a3493b4e326d3de81e50a62", + "0x93252254d12511955f1aa464883ad0da793f84d900fea83e1df8bca0f2f4cf5b5f9acbaec06a24160d33f908ab5fea38", + "0x997cb55c26996586ba436a95566bd535e9c22452ca5d2a0ded2bd175376557fa895f9f4def4519241ff386a063f2e526", + "0xa12c78ad451e0ac911260ade2927a768b50cb4125343025d43474e7f465cdc446e9f52a84609c5e7e87ae6c9b3f56cda", + "0xa789d4ca55cbba327086563831b34487d63d0980ba8cf55197c016702ed6da9b102b1f0709ce3da3c53ff925793a3d73", + "0xa5d76acbb76741ce85be0e655b99baa04f7f587347947c0a30d27f8a49ae78cce06e1cde770a8b618d3db402be1c0c4b", + "0x873c0366668c8faddb0eb7c86f485718d65f8c4734020f1a18efd5fa123d3ea8a990977fe13592cd01d17e60809cb5ff", + "0xb659b71fe70f37573ff7c5970cc095a1dc0da3973979778f80a71a347ef25ad5746b2b9608bad4ab9a4a53a4d7df42d7", + "0xa34cbe05888e5e5f024a2db14cb6dcdc401a9cbd13d73d3c37b348f68688f87c24ca790030b8f84fef9e74b4eab5e412", + "0x94ce8010f85875c045b0f014db93ef5ab9f1f6842e9a5743dce9e4cb872c94affd9e77c1f1d1ab8b8660b52345d9acb9", + "0xadefa9b27a62edc0c5b019ddd3ebf45e4de846165256cf6329331def2e088c5232456d3de470fdce3fa758bfdd387512", + "0xa6b83821ba7c1f83cc9e4529cf4903adb93b26108e3d1f20a753070db072ad5a3689643144bdd9c5ea06bb9a7a515cd0", + "0xa3a9ddedc2a1b183eb1d52de26718151744db6050f86f3580790c51d09226bf05f15111691926151ecdbef683baa992c", + "0xa64bac89e7686932cdc5670d07f0b50830e69bfb8c93791c87c7ffa4913f8da881a9d8a8ce8c1a9ce5b6079358c54136", + "0xa77b5a63452cb1320b61ab6c7c2ef9cfbcade5fd4727583751fb2bf3ea330b5ca67757ec1f517bf4d503ec924fe32fbd", + "0x8746fd8d8eb99639d8cd0ca34c0d9c3230ed5a312aab1d3d925953a17973ee5aeb66e68667e93caf9cb817c868ea8f3d", + "0x88a2462a26558fc1fbd6e31aa8abdc706190a17c27fdc4217ffd2297d1b1f3321016e5c4b2384c5454d5717dc732ed03", + "0xb78893a97e93d730c8201af2e0d3b31cb923d38dc594ffa98a714e627c473d42ea82e0c4d2eeb06862ee22a9b2c54588", + "0x920cc8b5f1297cf215a43f6fc843e379146b4229411c44c0231f6749793d40f07b9af7699fd5d21fd69400b97febe027", + "0xa0f0eafce1e098a6b58c7ad8945e297cd93aaf10bc55e32e2e32503f02e59fc1d5776936577d77c0b1162cb93b88518b", + "0x98480ba0064e97a2e7a6c4769b4d8c2a322cfc9a3b2ca2e67e9317e2ce04c6e1108169a20bd97692e1cb1f1423b14908", + "0x83dbbb2fda7e287288011764a00b8357753a6a44794cc8245a2275237f11affdc38977214e463ad67aec032f3dfa37e9", + "0x86442fff37598ce2b12015ff19b01bb8a780b40ad353d143a0f30a06f6d23afd5c2b0a1253716c855dbf445cc5dd6865", + "0xb8a4c60c5171189414887847b9ed9501bff4e4c107240f063e2d254820d2906b69ef70406c585918c4d24f1dd052142b", + "0x919f33a98e84015b2034b57b5ffe9340220926b2c6e45f86fd79ec879dbe06a148ae68b77b73bf7d01bd638a81165617", + "0x95c13e78d89474a47fbc0664f6f806744b75dede95a479bbf844db4a7f4c3ae410ec721cb6ffcd9fa9c323da5740d5ae", + "0xab7151acc41fffd8ec6e90387700bcd7e1cde291ea669567295bea1b9dd3f1df2e0f31f3588cd1a1c08af8120aca4921", + "0x80e74c5c47414bd6eeef24b6793fb1fa2d8fb397467045fcff887c52476741d5bc4ff8b6d3387cb53ad285485630537f", + "0xa296ad23995268276aa351a7764d36df3a5a3cffd7dbeddbcea6b1f77adc112629fdeffa0918b3242b3ccd5e7587e946", + "0x813d2506a28a2b01cb60f49d6bd5e63c9b056aa56946faf2f33bd4f28a8d947569cfead3ae53166fc65285740b210f86", + "0x924b265385e1646287d8c09f6c855b094daaee74b9e64a0dddcf9ad88c6979f8280ba30c8597b911ef58ddb6c67e9fe3", + "0x8d531513c70c2d3566039f7ca47cd2352fd2d55b25675a65250bdb8b06c3843db7b2d29c626eed6391c238fc651cf350", + "0x82b338181b62fdc81ceb558a6843df767b6a6e3ceedc5485664b4ea2f555904b1a45fbb35f6cf5d96f27da10df82a325", + "0x92e62faaedea83a37f314e1d3cb4faaa200178371d917938e59ac35090be1db4b4f4e0edb78b9c991de202efe4f313d8", + "0x99d645e1b642c2dc065bac9aaa0621bc648c9a8351efb6891559c3a41ba737bd155fb32d7731950514e3ecf4d75980e4", + "0xb34a13968b9e414172fb5d5ece9a39cf2eb656128c3f2f6cc7a9f0c69c6bae34f555ecc8f8837dc34b5e470e29055c78", + "0xa2a0bb7f3a0b23a2cbc6585d59f87cd7e56b2bbcb0ae48f828685edd9f7af0f5edb4c8e9718a0aaf6ef04553ba71f3b7", + "0x8e1a94bec053ed378e524b6685152d2b52d428266f2b6eadd4bcb7c4e162ed21ab3e1364879673442ee2162635b7a4d8", + "0x9944adaff14a85eab81c73f38f386701713b52513c4d4b838d58d4ffa1d17260a6d056b02334850ea9a31677c4b078bd", + "0xa450067c7eceb0854b3eca3db6cf38669d72cb7143c3a68787833cbca44f02c0be9bfbe082896f8a57debb13deb2afb1", + "0x8be4ad3ac9ef02f7df09254d569939757101ee2eda8586fefcd8c847adc1efe5bdcb963a0cafa17651befaafb376a531", + "0x90f6de91ea50255f148ac435e08cf2ac00c772a466e38155bd7e8acf9197af55662c7b5227f88589b71abe9dcf7ba343", + "0x86e5a24f0748b106dee2d4d54e14a3b0af45a96cbee69cac811a4196403ebbee17fd24946d7e7e1b962ac7f66dbaf610", + "0xafdd96fbcda7aa73bf9eeb2292e036c25753d249caee3b9c013009cc22e10d3ec29e2aa6ddbb21c4e949b0c0bccaa7f4", + "0xb5a4e7436d5473647c002120a2cb436b9b28e27ad4ebdd7c5f122b91597c507d256d0cbd889d65b3a908531936e53053", + "0xb632414c3da704d80ac2f3e5e0e9f18a3637cdc2ebeb613c29300745582427138819c4e7b0bec3099c1b8739dac1807b", + "0xa28df1464d3372ce9f37ef1db33cc010f752156afae6f76949d98cd799c0cf225c20228ae86a4da592d65f0cffe3951b", + "0x898b93d0a31f7d3f11f253cb7a102db54b669fd150da302d8354d8e02b1739a47cb9bd88015f3baf12b00b879442464e", + "0x96fb88d89a12049091070cb0048a381902965e67a8493e3991eaabe5d3b7ff7eecd5c94493a93b174df3d9b2c9511755", + "0xb899cb2176f59a5cfba3e3d346813da7a82b03417cad6342f19cc8f12f28985b03bf031e856a4743fd7ebe16324805b0", + "0xa60e2d31bc48e0c0579db15516718a03b73f5138f15037491f4dae336c904e312eda82d50862f4debd1622bb0e56d866", + "0x979fc8b987b5cef7d4f4b58b53a2c278bd25a5c0ea6f41c715142ea5ff224c707de38451b0ad3aa5e749aa219256650a", + "0xb2a75bff18e1a6b9cf2a4079572e41205741979f57e7631654a3c0fcec57c876c6df44733c9da3d863db8dff392b44a3", + "0xb7a0f0e811222c91e3df98ff7f286b750bc3b20d2083966d713a84a2281744199e664879401e77470d44e5a90f3e5181", + "0x82b74ba21c9d147fbc338730e8f1f8a6e7fc847c3110944eb17a48bea5e06eecded84595d485506d15a3e675fd0e5e62", + "0xa7f44eef817d5556f0d1abcf420301217d23c69dd2988f44d91ea1f1a16c322263cbacd0f190b9ba22b0f141b9267b4f", + "0xaadb68164ede84fc1cb3334b3194d84ba868d5a88e4c9a27519eef4923bc4abf81aab8114449496c073c2a6a0eb24114", + "0xb5378605fabe9a8c12a5dc55ef2b1de7f51aedb61960735c08767a565793cea1922a603a6983dc25f7cea738d0f7c40d", + "0xa97a4a5cd8d51302e5e670aee78fe6b5723f6cc892902bbb4f131e82ca1dfd5de820731e7e3367fb0c4c1922a02196e3", + "0x8bdfeb15c29244d4a28896f2b2cb211243cd6a1984a3f5e3b0ebe5341c419beeab3304b390a009ffb47588018034b0ea", + "0xa9af3022727f2aa2fca3b096968e97edad3f08edcbd0dbca107b892ae8f746a9c0485e0d6eb5f267999b23a845923ed0", + "0x8e7594034feef412f055590fbb15b6322dc4c6ab7a4baef4685bd13d71a83f7d682b5781bdfa0d1c659489ce9c2b8000", + "0x84977ca6c865ebee021c58106c1a4ad0c745949ecc5332948002fd09bd9b890524878d0c29da96fd11207621136421fe", + "0x8687551a79158e56b2375a271136756313122132a6670fa51f99a1b5c229ed8eea1655a734abae13228b3ebfd2a825dd", + "0xa0227d6708979d99edfc10f7d9d3719fd3fc68b0d815a7185b60307e4c9146ad2f9be2b8b4f242e320d4288ceeb9504c", + "0x89f75583a16735f9dd8b7782a130437805b34280ccea8dac6ecaee4b83fe96947e7b53598b06fecfffdf57ffc12cc445", + "0xa0056c3353227f6dd9cfc8e3399aa5a8f1d71edf25d3d64c982910f50786b1e395c508d3e3727ac360e3e040c64b5298", + "0xb070e61a6d813626144b312ded1788a6d0c7cec650a762b2f8df6e4743941dd82a2511cd956a3f141fc81e15f4e092da", + "0xb4e6db232e028a1f989bb5fc13416711f42d389f63564d60851f009dcffac01acfd54efa307aa6d4c0f932892d4e62b0", + "0x89b5991a67db90024ddd844e5e1a03ef9b943ad54194ae0a97df775dde1addf31561874f4e40fbc37a896630f3bbda58", + "0xad0e8442cb8c77d891df49cdb9efcf2b0d15ac93ec9be1ad5c3b3cca1f4647b675e79c075335c1f681d56f14dc250d76", + "0xb5d55a6ae65bb34dd8306806cb49b5ccb1c83a282ee47085cf26c4e648e19a52d9c422f65c1cd7e03ca63e926c5e92ea", + "0xb749501347e5ec07e13a79f0cb112f1b6534393458b3678a77f02ca89dca973fa7b30e55f0b25d8b92b97f6cb0120056", + "0x94144b4a3ffc5eec6ba35ce9c245c148b39372d19a928e236a60e27d7bc227d18a8cac9983851071935d8ffb64b3a34f", + "0x92bb4f9f85bc8c028a3391306603151c6896673135f8a7aefedd27acb322c04ef5dac982fc47b455d6740023e0dd3ea3", + "0xb9633a4a101461a782fc2aa092e9dbe4e2ad00987578f18cd7cf0021a909951d60fe79654eb7897806795f93c8ff4d1c", + "0x809f0196753024821b48a016eca5dbb449a7c55750f25981bb7a4b4c0e0846c09b8f6128137905055fc43a3f0deb4a74", + "0xa27dc9cdd1e78737a443570194a03d89285576d3d7f3a3cf15cc55b3013e42635d4723e2e8fe1d0b274428604b630db9", + "0x861f60f0462e04cd84924c36a28163def63e777318d00884ab8cb64c8df1df0bce5900342163edb60449296484a6c5bf", + "0xb7bc23fb4e14af4c4704a944253e760adefeca8caee0882b6bbd572c84434042236f39ae07a8f21a560f486b15d82819", + "0xb9a6eb492d6dd448654214bd01d6dc5ff12067a11537ab82023fc16167507ee25eed2c91693912f4155d1c07ed9650b3", + "0x97678af29c68f9a5e213bf0fb85c265303714482cfc4c2c00b4a1e8a76ed08834ee6af52357b143a1ca590fb0265ea5a", + "0x8a15b499e9eca5b6cac3070b5409e8296778222018ad8b53a5d1f6b70ad9bb10c68a015d105c941ed657bf3499299e33", + "0xb487fefede2e8091f2c7bfe85770db2edff1db83d4effe7f7d87bff5ab1ace35e9b823a71adfec6737fede8d67b3c467", + "0x8b51b916402aa2c437fce3bcad6dad3be8301a1a7eab9d163085b322ffb6c62abf28637636fe6114573950117fc92898", + "0xb06a2106d031a45a494adec0881cb2f82275dff9dcdd2bc16807e76f3bec28a6734edd3d54f0be8199799a78cd6228ad", + "0xaf0a185391bbe2315eb97feac98ad6dd2e5d931d012c621abd6e404a31cc188b286fef14871762190acf086482b2b5e2", + "0x8e78ee8206506dd06eb7729e32fceda3bebd8924a64e4d8621c72e36758fda3d0001af42443851d6c0aea58562870b43", + "0xa1ba52a569f0461aaf90b49b92be976c0e73ec4a2c884752ee52ffb62dd137770c985123d405dfb5de70692db454b54a", + "0x8d51b692fa1543c51f6b62b9acb8625ed94b746ef96c944ca02859a4133a5629da2e2ce84e111a7af8d9a5b836401c64", + "0xa7a20d45044cf6492e0531d0b8b26ffbae6232fa05a96ed7f06bdb64c2b0f5ca7ec59d5477038096a02579e633c7a3ff", + "0x84df867b98c53c1fcd4620fef133ee18849c78d3809d6aca0fb6f50ff993a053a455993f216c42ab6090fa5356b8d564", + "0xa7227c439f14c48e2577d5713c97a5205feb69acb0b449152842e278fa71e8046adfab468089c8b2288af1fc51fa945b", + "0x855189b3a105670779997690876dfaa512b4a25a24931a912c2f0f1936971d2882fb4d9f0b3d9daba77eaf660e9d05d5", + "0xb5696bd6706de51c502f40385f87f43040a5abf99df705d6aac74d88c913b8ecf7a99a63d7a37d9bdf3a941b9e432ff5", + "0xab997beb0d6df9c98d5b49864ef0b41a2a2f407e1687dfd6089959757ba30ed02228940b0e841afe6911990c74d536c4", + "0xb36b65f85546ebfdbe98823d5555144f96b4ab39279facd19c0de3b8919f105ba0315a0784dce4344b1bc62d8bb4a5a3", + "0xb8371f0e4450788720ac5e0f6cd3ecc5413d33895083b2c168d961ec2b5c3de411a4cc0712481cbe8df8c2fa1a7af006", + "0x98325d8026b810a8b7a114171ae59a57e8bbc9848e7c3df992efc523621729fd8c9f52114ce01d7730541a1ada6f1df1", + "0x8d0e76dbd37806259486cd9a31bc8b2306c2b95452dc395546a1042d1d17863ef7a74c636b782e214d3aa0e8d717f94a", + "0xa4e15ead76da0214d702c859fb4a8accdcdad75ed08b865842bd203391ec4cba2dcc916455e685f662923b96ee0c023f", + "0x8618190972086ebb0c4c1b4a6c94421a13f378bc961cc8267a301de7390c5e73c3333864b3b7696d81148f9d4843fd02", + "0x85369d6cc7342e1aa15b59141517d8db8baaaeb7ab9670f3ba3905353948d575923d283b7e5a05b13a30e7baf1208a86", + "0x87c51ef42233c24a6da901f28c9a075d9ba3c625687c387ad6757b72ca6b5a8885e6902a3082da7281611728b1e45f26", + "0xaa6348a4f71927a3106ad0ea8b02fc8d8c65531e4ab0bd0a17243e66f35afe252e40ab8eef9f13ae55a72566ffdaff5c", + "0x96a3bc976e9d03765cc3fee275fa05b4a84c94fed6b767e23ca689394501e96f56f7a97cffddc579a6abff632bf153be", + "0x97dbf96c6176379fdb2b888be4e757b2bca54e74124bd068d3fa1dbd82a011bbeb75079da38e0cd22a761fe208ecad9b", + "0xb70cf0a1d14089a4129ec4e295313863a59da8c7e26bf74cc0e704ed7f0ee4d7760090d0ddf7728180f1bf2c5ac64955", + "0x882d664714cc0ffe53cbc9bef21f23f3649824f423c4dbad1f893d22c4687ab29583688699efc4d5101aa08b0c3e267a", + "0x80ecb7cc963e677ccaddbe3320831dd6ee41209acf4ed41b16dc4817121a3d86a1aac9c4db3d8c08a55d28257088af32", + "0xa25ba667d832b145f9ce18c3f9b1bd00737aa36db020e1b99752c8ef7d27c6c448982bd8d352e1b6df266b8d8358a8d5", + "0x83734841c13dee12759d40bdd209b277e743b0d08cc0dd1e0b7afd2d65bfa640400eefcf6be4a52e463e5b3d885eeac6", + "0x848d16505b04804afc773aebabb51b36fd8aacfbb0e09b36c0d5d57df3c0a3b92f33e7d5ad0a7006ec46ebb91df42b8c", + "0x909a8d793f599e33bb9f1dc4792a507a97169c87cd5c087310bc05f30afcd247470b4b56dec59894c0fb1d48d39bb54e", + "0x8e558a8559df84a1ba8b244ece667f858095c50bb33a5381e60fcc6ba586b69693566d8819b4246a27287f16846c1dfa", + "0x84d6b69729f5aaa000cd710c2352087592cfbdf20d5e1166977e195818e593fa1a50d1e04566be23163a2523dc1612f1", + "0x9536d262b7a42125d89f4f32b407d737ba8d9242acfc99d965913ab3e043dcac9f7072a43708553562cac4cba841df30", + "0x9598548923ca119d6a15fd10861596601dd1dedbcccca97bb208cdc1153cf82991ea8cc17686fbaa867921065265970c", + "0xb87f2d4af6d026e4d2836bc3d390a4a18e98a6e386282ce96744603bab74974272e97ac2da281afa21885e2cbb3a8001", + "0x991ece62bf07d1a348dd22191868372904b9f8cf065ae7aa4e44fd24a53faf6d851842e35fb472895963aa1992894918", + "0xa8c53dea4c665b30e51d22ca6bc1bc78aaf172b0a48e64a1d4b93439b053877ec26cb5221c55efd64fa841bbf7d5aff4", + "0x93487ec939ed8e740f15335b58617c3f917f72d07b7a369befd479ae2554d04deb240d4a14394b26192efae4d2f4f35d", + "0xa44793ab4035443f8f2968a40e043b4555960193ffa3358d22112093aadfe2c136587e4139ffd46d91ed4107f61ea5e0", + "0xb13fe033da5f0d227c75927d3dacb06dbaf3e1322f9d5c7c009de75cdcba5e308232838785ab69a70f0bedea755e003f", + "0x970a29b075faccd0700fe60d1f726bdebf82d2cc8252f4a84543ebd3b16f91be42a75c9719a39c4096139f0f31393d58", + "0xa4c3eb1f7160f8216fc176fb244df53008ff32f2892363d85254002e66e2de21ccfe1f3b1047589abee50f29b9d507e3", + "0x8c552885eab04ba40922a8f0c3c38c96089c95ff1405258d3f1efe8d179e39e1295cbf67677894c607ae986e4e6b1fb0", + "0xb3671746fa7f848c4e2ae6946894defadd815230b906b419143523cc0597bc1d6c0a4c1e09d49b66b4a2c11cde3a4de3", + "0x937a249a95813a5e2ef428e355efd202e15a37d73e56cfb7e57ea9f943f2ce5ca8026f2f1fd25bf164ba89d07077d858", + "0x83646bdf6053a04aa9e2f112499769e5bd5d0d10f2e13db3ca89bd45c0b3b7a2d752b7d137fb3909f9c62b78166c9339", + "0xb4eac4b91e763666696811b7ed45e97fd78310377ebea1674b58a2250973f80492ac35110ed1240cd9bb2d17493d708c", + "0x82db43a99bc6573e9d92a3fd6635dbbb249ac66ba53099c3c0c8c8080b121dd8243cd5c6e36ba0a4d2525bae57f5c89c", + "0xa64d6a264a681b49d134c655d5fc7756127f1ee7c93d328820f32bca68869f53115c0d27fef35fe71f7bc4fdaed97348", + "0x8739b7a9e2b4bc1831e7f04517771bc7cde683a5e74e052542517f8375a2f64e53e0d5ac925ef722327e7bb195b4d1d9", + "0x8f337cdd29918a2493515ebb5cf702bbe8ecb23b53c6d18920cc22f519e276ca9b991d3313e2d38ae17ae8bdfa4f8b7e", + "0xb0edeab9850e193a61f138ef2739fc42ceec98f25e7e8403bfd5fa34a7bc956b9d0898250d18a69fa4625a9b3d6129da", + "0xa9920f26fe0a6d51044e623665d998745c9eca5bce12051198b88a77d728c8238f97d4196f26e43b24f8841500b998d0", + "0x86e655d61502b979eeeeb6f9a7e1d0074f936451d0a1b0d2fa4fb3225b439a3770767b649256fe481361f481a8dbc276", + "0x84d3b32fa62096831cc3bf013488a9f3f481dfe293ae209ed19585a03f7db8d961a7a9dd0db82bd7f62d612707575d9c", + "0x81c827826ec9346995ffccf62a241e3b2d32f7357acd1b1f8f7a7dbc97022d3eb51b8a1230e23ce0b401d2e535e8cd78", + "0x94a1e40c151191c5b055b21e86f32e69cbc751dcbdf759a48580951834b96a1eed75914c0d19a38aefd21fb6c8d43d0c", + "0xab890222b44bc21b71f7c75e15b6c6e16bb03371acce4f8d4353ff3b8fcd42a14026589c5ed19555a3e15e4d18bfc3a3", + "0xaccb0be851e93c6c8cc64724cdb86887eea284194b10e7a43c90528ed97e9ec71ca69c6fac13899530593756dd49eab2", + "0xb630220aa9e1829c233331413ee28c5efe94ea8ea08d0c6bfd781955078b43a4f92915257187d8526873e6c919c6a1de", + "0xadd389a4d358c585f1274b73f6c3c45b58ef8df11f9d11221f620e241bf3579fba07427b288c0c682885a700cc1fa28d", + "0xa9fe6ca8bf2961a3386e8b8dcecc29c0567b5c0b3bcf3b0f9169f88e372b80151af883871fc5229815f94f43a6f5b2b0", + "0xad839ae003b92b37ea431fa35998b46a0afc3f9c0dd54c3b3bf7a262467b13ff3c323ada1c1ae02ac7716528bdf39e3e", + "0x9356d3fd0edcbbb65713c0f2a214394f831b26f792124b08c5f26e7f734b8711a87b7c4623408da6a091c9aef1f6af3c", + "0x896b25b083c35ac67f0af3784a6a82435b0e27433d4d74cd6d1eafe11e6827827799490fb1c77c11de25f0d75f14e047", + "0x8bfa019391c9627e8e5f05c213db625f0f1e51ec68816455f876c7e55b8f17a4f13e5aae9e3fb9e1cf920b1402ee2b40", + "0x8ba3a6faa6a860a8f3ce1e884aa8769ceded86380a86520ab177ab83043d380a4f535fe13884346c5e51bee68da6ab41", + "0xa8292d0844084e4e3bb7af92b1989f841a46640288c5b220fecfad063ee94e86e13d3d08038ec2ac82f41c96a3bfe14d", + "0x8229bb030b2fc566e11fd33c7eab7a1bb7b49fed872ea1f815004f7398cb03b85ea14e310ec19e1f23e0bdaf60f8f76c", + "0x8cfbf869ade3ec551562ff7f63c2745cc3a1f4d4dc853a0cd42dd5f6fe54228f86195ea8fe217643b32e9f513f34a545", + "0xac52a3c8d3270ddfe1b5630159da9290a5ccf9ccbdef43b58fc0a191a6c03b8a5974cf6e2bbc7bd98d4a40a3581482d7", + "0xab13decb9e2669e33a7049b8eca3ca327c40dea15ad6e0e7fa63ed506db1d258bc36ac88b35f65cae0984e937eb6575d", + "0xb5e748eb1a7a1e274ff0cc56311c198f2c076fe4b7e73e5f80396fe85358549df906584e6bb2c8195b3e2be7736850a5", + "0xb5cb911325d8f963c41f691a60c37831c7d3bbd92736efa33d1f77a22b3fde7f283127256c2f47e197571e6fe0b46149", + "0x8a01dc6ed1b55f26427a014faa347130738b191a06b800e32042a46c13f60b49534520214359d68eb2e170c31e2b8672", + "0xa72fa874866e19b2efb8e069328362bf7921ec375e3bcd6b1619384c3f7ee980f6cf686f3544e9374ff54b4d17a1629c", + "0x8db21092f7c5f110fba63650b119e82f4b42a997095d65f08f8237b02dd66fdf959f788df2c35124db1dbd330a235671", + "0x8c65d50433d9954fe28a09fa7ba91a70a590fe7ba6b3060f5e4be0f6cef860b9897fa935fb4ebc42133524eb071dd169", + "0xb4614058e8fa21138fc5e4592623e78b8982ed72aa35ee4391b164f00c68d277fa9f9eba2eeefc890b4e86eba5124591", + "0xab2ad3a1bce2fbd55ca6b7c23786171fe1440a97d99d6df4d80d07dd56ac2d7203c294b32fc9e10a6c259381a73f24a1", + "0x812ae3315fdc18774a8da3713a4679e8ed10b9405edc548c00cacbe25a587d32040566676f135e4723c5dc25df5a22e9", + "0xa464b75f95d01e5655b54730334f443c8ff27c3cb79ec7af4b2f9da3c2039c609908cd128572e1fd0552eb597e8cef8d", + "0xa0db3172e93ca5138fe419e1c49a1925140999f6eff7c593e5681951ee0ec1c7e454c851782cbd2b8c9bc90d466e90e0", + "0x806db23ba7d00b87d544eed926b3443f5f9c60da6b41b1c489fba8f73593b6e3b46ebfcab671ee009396cd77d5e68aa1", + "0x8bfdf2c0044cc80260994e1c0374588b6653947b178e8b312be5c2a05e05767e98ea15077278506aee7df4fee1aaf89e", + "0x827f6558c16841b5592ff089c9c31e31eb03097623524394813a2e4093ad2d3f8f845504e2af92195aaa8a1679d8d692", + "0x925c4f8eab2531135cd71a4ec88e7035b5eea34ba9d799c5898856080256b4a15ed1a746e002552e2a86c9c157e22e83", + "0xa9f9a368f0e0b24d00a35b325964c85b69533013f9c2cfad9708be5fb87ff455210f8cb8d2ce3ba58ca3f27495552899", + "0x8ac0d3bebc1cae534024187e7c71f8927ba8fcc6a1926cb61c2b6c8f26bb7831019e635a376146c29872a506784a4aaa", + "0x97c577be2cbbfdb37ad754fae9df2ada5fc5889869efc7e18a13f8e502fbf3f4067a509efbd46fd990ab47ce9a70f5a8", + "0x935e7d82bca19f16614aa43b4a3474e4d20d064e4bfdf1cea2909e5c9ab72cfe3e54dc50030e41ee84f3588cebc524e9", + "0x941aafc08f7c0d94cebfbb1f0aad5202c02e6e37f2c12614f57e727efa275f3926348f567107ee6d8914dd71e6060271", + "0xaf0fbc1ba05b4b5b63399686df3619968be5d40073de0313cbf5f913d3d4b518d4c249cdd2176468ccaa36040a484f58", + "0xa0c414f23f46ca6d69ce74c6f8a00c036cb0edd098af0c1a7d39c802b52cfb2d5dbdf93fb0295453d4646e2af7954d45", + "0x909cf39e11b3875bb63b39687ae1b5d1f5a15445e39bf164a0b14691b4ddb39a8e4363f584ef42213616abc4785b5d66", + "0xa92bac085d1194fbd1c88299f07a061d0bdd3f980b663e81e6254dbb288bf11478c0ee880e28e01560f12c5ccb3c0103", + "0x841705cd5cd76b943e2b7c5e845b9dd3c8defe8ef67e93078d6d5e67ade33ad4b0fd413bc196f93b0a4073c855cd97d4", + "0x8e7eb8364f384a9161e81d3f1d52ceca9b65536ae49cc35b48c3e2236322ba4ae9973e0840802d9fa4f4d82ea833544f", + "0xaed3ab927548bc8bec31467ba80689c71a168e34f50dcb6892f19a33a099f5aa6b3f9cb79f5c0699e837b9a8c7f27efe", + "0xb8fbf7696210a36e20edabd77839f4dfdf50d6d015cdf81d587f90284a9bcef7d2a1ff520728d7cc69a4843d6c20dedd", + "0xa9d533769ce6830211c884ae50a82a7bf259b44ac71f9fb11f0296fdb3981e6b4c1753fe744647b247ebc433a5a61436", + "0x8b4bdf90d33360b7f428c71cde0a49fb733badba8c726876945f58c620ce7768ae0e98fc8c31fa59d8955a4823336bb1", + "0x808d42238e440e6571c59e52a35ae32547d502dc24fd1759d8ea70a7231a95859baf30b490a4ba55fa2f3aaa11204597", + "0x85594701f1d2fee6dc1956bc44c7b31db93bdeec2f3a7d622c1a08b26994760773e3d57521a44cfd7e407ac3fd430429", + "0xa66de045ce7173043a6825e9dc440ac957e2efb6df0a337f4f8003eb0c719d873a52e6eba3cb0d69d977ca37d9187674", + "0x87a1c6a1fdff993fa51efa5c3ba034c079c0928a7d599b906336af7c2dcab9721ceaf3108c646490af9dff9a754f54b3", + "0x926424223e462ceb75aed7c22ade8a7911a903b7e5dd4bc49746ddce8657f4616325cd12667d4393ac52cdd866396d0e", + "0xb5dc96106593b42b30f06f0b0a1e0c1aafc70432e31807252d3674f0b1ea5e58eac8424879d655c9488d85a879a3e572", + "0x997ca0987735cc716507cb0124b1d266d218b40c9d8e0ecbf26a1d65719c82a637ce7e8be4b4815d307df717bde7c72a", + "0x92994d3f57a569b7760324bb5ae4e8e14e1633d175dab06aa57b8e391540e05f662fdc08b8830f489a063f59b689a688", + "0xa8087fcc6aa4642cb998bea11facfe87eb33b90a9aa428ab86a4124ad032fc7d2e57795311a54ec9f55cc120ebe42df1", + "0xa9bd7d1de6c0706052ca0b362e2e70e8c8f70f1f026ea189b4f87a08ce810297ebfe781cc8004430776c54c1a05ae90c", + "0x856d33282e8a8e33a3d237fb0a0cbabaf77ba9edf2fa35a831fdafcadf620561846aa6cbb6bdc5e681118e1245834165", + "0x9524a7aa8e97a31a6958439c5f3339b19370f03e86b89b1d02d87e4887309dbbe9a3a8d2befd3b7ed5143c8da7e0a8ad", + "0x824fdf433e090f8acbd258ac7429b21f36f9f3b337c6d0b71d1416a5c88a767883e255b2888b7c906dd2e9560c4af24c", + "0x88c7fee662ca7844f42ed5527996b35723abffd0d22d4ca203b9452c639a5066031207a5ae763dbc0865b3299d19b1ec", + "0x919dca5c5595082c221d5ab3a5bc230f45da7f6dec4eb389371e142c1b9c6a2c919074842479c2844b72c0d806170c0c", + "0xb939be8175715e55a684578d8be3ceff3087f60fa875fff48e52a6e6e9979c955efef8ff67cfa2b79499ea23778e33b0", + "0x873b6db725e7397d11bc9bed9ac4468e36619135be686790a79bc6ed4249058f1387c9a802ea86499f692cf635851066", + "0xaeae06db3ec47e9e5647323fa02fac44e06e59b885ad8506bf71b184ab3895510c82f78b6b22a5d978e8218e7f761e9f", + "0xb99c0a8359c72ab88448bae45d4bf98797a26bca48b0d4460cd6cf65a4e8c3dd823970ac3eb774ae5d0cea4e7fadf33e", + "0x8f10c8ec41cdfb986a1647463076a533e6b0eec08520c1562401b36bb063ac972aa6b28a0b6ce717254e35940b900e3c", + "0xa106d9be199636d7add43b942290269351578500d8245d4aae4c083954e4f27f64740a3138a66230391f2d0e6043a8de", + "0xa469997908244578e8909ff57cffc070f1dbd86f0098df3cfeb46b7a085cfecc93dc69ee7cad90ff1dc5a34d50fe580c", + "0xa4ef087bea9c20eb0afc0ee4caba7a9d29dfa872137828c721391273e402fb6714afc80c40e98bbd8276d3836bffa080", + "0xb07a013f73cd5b98dae0d0f9c1c0f35bff8a9f019975c4e1499e9bee736ca6fcd504f9bc32df1655ff333062382cff04", + "0xb0a77188673e87cc83348c4cc5db1eecf6b5184e236220c8eeed7585e4b928db849944a76ec60ef7708ef6dac02d5592", + "0xb1284b37e59b529f0084c0dacf0af6c0b91fc0f387bf649a8c74819debf606f7b07fc3e572500016fb145ec2b24e9f17", + "0x97b20b5b4d6b9129da185adfbf0d3d0b0faeba5b9715f10299e48ea0521709a8296a9264ce77c275a59c012b50b6519a", + "0xb9d37e946fae5e4d65c1fbfacc8a62e445a1c9d0f882e60cca649125af303b3b23af53c81d7bac544fb7fcfc7a314665", + "0x8e5acaac379f4bb0127efbef26180f91ff60e4c525bc9b798fc50dfaf4fe8a5aa84f18f3d3cfb8baead7d1e0499af753", + "0xb0c0b8ab1235bf1cda43d4152e71efc1a06c548edb964eb4afceb201c8af24240bf8ab5cae30a08604e77432b0a5faf0", + "0x8cc28d75d5c8d062d649cbc218e31c4d327e067e6dbd737ec0a35c91db44fbbd0d40ec424f5ed79814add16947417572", + "0x95ae6219e9fd47efaa9cb088753df06bc101405ba50a179d7c9f7c85679e182d3033f35b00dbba71fdcd186cd775c52e", + "0xb5d28fa09f186ebc5aa37453c9b4d9474a7997b8ae92748ecb940c14868792292ac7d10ade01e2f8069242b308cf97e5", + "0x8c922a0faa14cc6b7221f302df3342f38fc8521ec6c653f2587890192732c6da289777a6cd310747ea7b7d104af95995", + "0xb9ad5f660b65230de54de535d4c0fcae5bc6b59db21dea5500fdc12eea4470fb8ea003690fdd16d052523418d5e01e8c", + "0xa39a9dd41a0ff78c82979483731f1cd68d3921c3e9965869662c22e02dde3877802e180ba93f06e7346f96d9fa9261d2", + "0x8b32875977ec372c583b24234c27ed73aef00cdff61eb3c3776e073afbdeade548de9497c32ec6d703ff8ad0a5cb7fe4", + "0x9644cbe755a5642fe9d26cfecf170d3164f1848c2c2e271d5b6574a01755f3980b3fc870b98cf8528fef6ecef4210c16", + "0x81ea9d1fdd9dd66d60f40ce0712764b99da9448ae0b300f8324e1c52f154e472a086dda840cb2e0b9813dc8ce8afd4b5", + "0x906aaa4a7a7cdf01909c5cfbc7ded2abc4b869213cbf7c922d4171a4f2e637e56f17020b852ad339d83b8ac92f111666", + "0x939b5f11acbdeff998f2a080393033c9b9d8d5c70912ea651c53815c572d36ee822a98d6dfffb2e339f29201264f2cf4", + "0xaba4898bf1ccea9b9e2df1ff19001e05891581659c1cbbde7ee76c349c7fc7857261d9785823c9463a8aea3f40e86b38", + "0x83ca1a56b8a0be4820bdb5a9346357c68f9772e43f0b887729a50d2eb2a326bbcede676c8bf2e51d7c89bbd8fdb778a6", + "0x94e86e9fe6addfe2c3ee3a547267ed921f4230d877a85bb4442c2d9350c2fa9a9c54e6fe662de82d1a2407e4ab1691c2", + "0xa0cc3bdef671a59d77c6984338b023fa2b431b32e9ed2abe80484d73edc6540979d6f10812ecc06d4d0c5d4eaca7183c", + "0xb5343413c1b5776b55ea3c7cdd1f3af1f6bd802ea95effe3f2b91a523817719d2ecc3f8d5f3cc2623ace7e35f99ca967", + "0x92085d1ed0ed28d8cabe3e7ff1905ed52c7ceb1eac5503760c52fb5ee3a726aba7c90b483c032acc3f166b083d7ec370", + "0x8ec679520455275cd957fca8122724d287db5df7d29f1702a322879b127bff215e5b71d9c191901465d19c86c8d8d404", + "0xb65eb2c63d8a30332eb24ee8a0c70156fc89325ebbb38bacac7cf3f8636ad8a472d81ccca80423772abc00192d886d8a", + "0xa9fe1c060b974bee4d590f2873b28635b61bfcf614e61ff88b1be3eee4320f4874e21e8d666d8ac8c9aba672efc6ecae", + "0xb3fe2a9a389c006a831dea7e777062df84b5c2803f9574d7fbe10b7e1c125817986af8b6454d6be9d931a5ac94cfe963", + "0x95418ad13b734b6f0d33822d9912c4c49b558f68d08c1b34a0127fcfa666bcae8e6fda8832d2c75bb9170794a20e4d7c", + "0xa9a7df761e7f18b79494bf429572140c8c6e9d456c4d4e336184f3f51525a65eb9582bea1e601bdb6ef8150b7ca736a5", + "0xa0de03b1e75edf7998c8c1ac69b4a1544a6fa675a1941950297917366682e5644a4bda9cdeedfaf9473d7fccd9080b0c", + "0xa61838af8d95c95edf32663a68f007d95167bf6e41b0c784a30b22d8300cfdd5703bd6d16e86396638f6db6ae7e42a85", + "0x8866d62084d905c145ff2d41025299d8b702ac1814a7dec4e277412c161bc9a62fed735536789cb43c88693c6b423882", + "0x91da22c378c81497fe363e7f695c0268443abee50f8a6625b8a41e865638a643f07b157ee566de09ba09846934b4e2d7", + "0x941d21dd57c9496aa68f0c0c05507405fdd413acb59bc668ce7e92e1936c68ec4b065c3c30123319884149e88228f0b2", + "0xa77af9b094bc26966ddf2bf9e1520c898194a5ccb694915950dadc204facbe3066d3d89f50972642d76b14884cfbaa21", + "0x8e76162932346869f4618bde744647f7ab52ab498ad654bdf2a4feeb986ac6e51370841e5acbb589e38b6e7142bb3049", + "0xb60979ace17d6937ece72e4f015da4657a443dd01cebc7143ef11c09e42d4aa8855999a65a79e2ea0067f31c9fc2ab0f", + "0xb3e2ffdd5ee6fd110b982fd4fad4b93d0fca65478f986d086eeccb0804960bfaa1919afa743c2239973ea65091fe57d2", + "0x8ce0ce05e7d7160d44574011da687454dbd3c8b8290aa671731b066e2c82f8cf2d63cb8e932d78c6122ec610e44660e6", + "0xab005dd8d297045c39e2f72fb1c48edb501ccf3575d3d04b9817b3afee3f0bb0f3f53f64bda37d1d9cde545aae999bae", + "0x95bd7edb4c4cd60e3cb8a72558845a3cce6bb7032ccdf33d5a49ebb6ddf203bc3c79e7b7e550735d2d75b04c8b2441e8", + "0x889953ee256206284094e4735dbbb17975bafc7c3cb94c9fbfee4c3e653857bfd49e818f64a47567f721b98411a3b454", + "0xb188423e707640ab0e75a061e0b62830cde8afab8e1ad3dae30db69ffae4e2fc005bababbdcbd7213b918ed4f70e0c14", + "0xa97e0fafe011abd70d4f99a0b36638b3d6e7354284588f17a88970ed48f348f88392779e9a038c6cbc9208d998485072", + "0x87db11014a91cb9b63e8dfaa82cdebca98272d89eb445ee1e3ff9dbaf2b3fad1a03b888cffc128e4fe208ed0dddece0f", + "0xaad2e40364edd905d66ea4ac9d51f9640d6fda9a54957d26ba233809851529b32c85660fa401dbee3679ec54fa6dd966", + "0x863e99336ca6edf03a5a259e59a2d0f308206e8a2fb320cfc0be06057366df8e0f94b33a28f574092736b3c5ada84270", + "0xb34bcc56a057589f34939a1adc51de4ff6a9f4fee9c7fa9aa131e28d0cf0759a0c871b640162acdfbf91f3f1b59a3703", + "0x935dd28f2896092995c5eff1618e5b6efe7a40178888d7826da9b0503c2d6e68a28e7fac1a334e166d0205f0695ef614", + "0xb842cd5f8f5de5ca6c68cb4a5c1d7b451984930eb4cc18fd0934d52fdc9c3d2d451b1c395594d73bc3451432bfba653f", + "0x9014537885ce2debad736bc1926b25fdab9f69b216bf024f589c49dc7e6478c71d595c3647c9f65ff980b14f4bb2283b", + "0x8e827ccca1dd4cd21707140d10703177d722be0bbe5cac578db26f1ef8ad2909103af3c601a53795435b27bf95d0c9ed", + "0x8a0b8ad4d466c09d4f1e9167410dbe2edc6e0e6229d4b3036d30f85eb6a333a18b1c968f6ca6d6889bb08fecde017ef4", + "0x9241ee66c0191b06266332dc9161dede384c4bb4e116dbd0890f3c3790ec5566da4568243665c4725b718ac0f6b5c179", + "0xaeb4d5fad81d2b505d47958a08262b6f1b1de9373c2c9ba6362594194dea3e002ab03b8cbb43f867be83065d3d370f19", + "0x8781bc83bb73f7760628629fe19e4714b494dbed444c4e4e4729b7f6a8d12ee347841a199888794c2234f51fa26fc2b9", + "0xb58864f0acd1c2afa29367e637cbde1968d18589245d9936c9a489c6c495f54f0113ecdcbe4680ac085dd3c397c4d0c3", + "0x94a24284afaeead61e70f3e30f87248d76e9726759445ca18cdb9360586c60cc9f0ec1c397f9675083e0b56459784e2e", + "0xaed358853f2b54dcbddf865e1816c2e89be12e940e1abfa661e2ee63ffc24a8c8096be2072fa83556482c0d89e975124", + "0xb95374e6b4fc0765708e370bc881e271abf2e35c08b056a03b847e089831ef4fe3124b9c5849d9c276eb2e35b3daf264", + "0xb834cdbcfb24c8f84bfa4c552e7fadc0028a140952fd69ed13a516e1314a4cd35d4b954a77d51a1b93e1f5d657d0315d", + "0x8fb6d09d23bfa90e7443753d45a918d91d75d8e12ec7d016c0dfe94e5c592ba6aaf483d2f16108d190822d955ad9cdc3", + "0xaa315cd3c60247a6ad4b04f26c5404c2713b95972843e4b87b5a36a89f201667d70f0adf20757ebe1de1b29ae27dda50", + "0xa116862dca409db8beff5b1ccd6301cdd0c92ca29a3d6d20eb8b87f25965f42699ca66974dd1a355200157476b998f3b", + "0xb4c2f5fe173c4dc8311b60d04a65ce1be87f070ac42e13cd19c6559a2931c6ee104859cc2520edebbc66a13dc7d30693", + "0x8d4a02bf99b2260c334e7d81775c5cf582b00b0c982ce7745e5a90624919028278f5e9b098573bad5515ce7fa92a80c8", + "0x8543493bf564ce6d97bd23be9bff1aba08bd5821ca834f311a26c9139c92a48f0c2d9dfe645afa95fec07d675d1fd53b", + "0x9344239d13fde08f98cb48f1f87d34cf6abe8faecd0b682955382a975e6eed64e863fa19043290c0736261622e00045c", + "0xaa49d0518f343005ca72b9e6c7dcaa97225ce6bb8b908ebbe7b1a22884ff8bfb090890364e325a0d414ad180b8f161d1", + "0x907d7fd3e009355ab326847c4a2431f688627faa698c13c03ffdd476ecf988678407f029b8543a475dcb3dafdf2e7a9c", + "0x845f1f10c6c5dad2adc7935f5cd2e2b32f169a99091d4f1b05babe7317b9b1cdce29b5e62f947dc621b9acbfe517a258", + "0x8f3be8e3b380ea6cdf9e9c237f5e88fd5a357e5ded80ea1fc2019810814de82501273b4da38916881125b6fa0cfd4459", + "0xb9c7f487c089bf1d20c822e579628db91ed9c82d6ca652983aa16d98b4270c4da19757f216a71b9c13ddee3e6e43705f", + "0x8ba2d8c88ad2b872db104ea8ddbb006ec2f3749fd0e19298a804bb3a5d94de19285cc7fb19fee58a66f7851d1a66c39f", + "0x9375ecd3ed16786fe161af5d5c908f56eeb467a144d3bbddfc767e90065b7c94fc53431adebecba2b6c9b5821184d36e", + "0xa49e069bfadb1e2e8bff6a4286872e2a9765d62f0eaa4fcb0e5af4bbbed8be3510fb19849125a40a8a81d1e33e81c3eb", + "0x9522cc66757b386aa6b88619525c8ce47a5c346d590bb3647d12f991e6c65c3ab3c0cfc28f0726b6756c892eae1672be", + "0xa9a0f1f51ff877406fa83a807aeb17b92a283879f447b8a2159653db577848cc451cbadd01f70441e351e9ed433c18bc", + "0x8ff7533dcff6be8714df573e33f82cf8e9f2bcaaa43e939c4759d52b754e502717950de4b4252fb904560fc31dce94a4", + "0x959724671e265a28d67c29d95210e97b894b360da55e4cf16e6682e7912491ed8ca14bfaa4dce9c25a25b16af580494f", + "0x92566730c3002f4046c737032487d0833c971e775de59fe02d9835c9858e2e3bc37f157424a69764596c625c482a2219", + "0xa84b47ceff13ed9c3e5e9cdf6739a66d3e7c2bd8a6ba318fefb1a9aecf653bb2981da6733ddb33c4b0a4523acc429d23", + "0xb4ddf571317e44f859386d6140828a42cf94994e2f1dcbcc9777f4eebbfc64fc1e160b49379acc27c4672b8e41835c5d", + "0x8ab95c94072b853d1603fdd0a43b30db617d13c1d1255b99075198e1947bfa5f59aed2b1147548a1b5e986cd9173d15c", + "0x89511f2eab33894fd4b3753d24249f410ff7263052c1fef6166fc63a79816656b0d24c529e45ccce6be28de6e375d916", + "0xa0866160ca63d4f2be1b4ea050dac6b59db554e2ebb4e5b592859d8df339b46fd7cb89aaed0951c3ee540aee982c238a", + "0x8fcc5cbba1b94970f5ff2eb1922322f5b0aa7d918d4b380c9e7abfd57afd8b247c346bff7b87af82efbce3052511cd1b", + "0x99aeb2a5e846b0a2874cca02c66ed40d5569eb65ab2495bc3f964a092e91e1517941f2688e79f8cca49cd3674c4e06dc", + "0xb7a096dc3bad5ca49bee94efd884aa3ff5615cf3825cf95fbe0ce132e35f46581d6482fa82666c7ef5f1643eaee8f1ca", + "0x94393b1da6eaac2ffd186b7725eca582f1ddc8cdd916004657f8a564a7c588175cb443fc6943b39029f5bbe0add3fad8", + "0x884b85fe012ccbcd849cb68c3ad832d83b3ef1c40c3954ffdc97f103b1ed582c801e1a41d9950f6bddc1d11f19d5ec76", + "0xb00061c00131eded8305a7ce76362163deb33596569afb46fe499a7c9d7a0734c084d336b38d168024c2bb42b58e7660", + "0xa439153ac8e6ca037381e3240e7ba08d056c83d7090f16ed538df25901835e09e27de2073646e7d7f3c65056af6e4ce7", + "0x830fc9ca099097d1f38b90e6843dc86f702be9d20bdacc3e52cae659dc41df5b8d2c970effa6f83a5229b0244a86fe22", + "0xb81ea2ffaaff2bb00dd59a9ab825ba5eed4db0d8ac9c8ed1a632ce8f086328a1cddd045fbe1ace289083c1325881b7e7", + "0xb51ea03c58daf2db32c99b9c4789b183365168cb5019c72c4cc91ac30b5fb7311d3db76e6fa41b7cd4a8c81e2f6cdc94", + "0xa4170b2c6d09ca5beb08318730419b6f19215ce6c631c854116f904be3bc30dd85a80c946a8ab054d3e307afaa3f8fbc", + "0x897cc42ff28971ff54d2a55dd6b35cfb8610ac902f3c06e3a5cea0e0a257e870c471236a8e84709211c742a09c5601a6", + "0xa18f2e98d389dace36641621488664ecbb422088ab03b74e67009b8b8acacaaa24fdcf42093935f355207d934adc52a8", + "0x92adcfb678cc2ba19c866f3f2b988fdcb4610567f3ab436cc0cb9acaf5a88414848d71133ebdbec1983e38e6190f1b5f", + "0xa86d43c2ce01b366330d3b36b3ca85f000c3548b8297e48478da1ee7d70d8576d4650cba7852ed125c0d7cb6109aa7f3", + "0x8ed31ceed9445437d7732dce78a762d72ff32a7636bfb3fd7974b7ae15db414d8184a1766915244355deb354fbc5803b", + "0x9268f70032584f416e92225d65af9ea18c466ebc7ae30952d56a4e36fd9ea811dde0a126da9220ba3c596ec54d8a335e", + "0x9433b99ee94f2d3fbdd63b163a2bdf440379334c52308bd24537f7defd807145a062ff255a50d119a7f29f4b85d250e3", + "0x90ce664f5e4628a02278f5cf5060d1a34f123854634b1870906e5723ac9afd044d48289be283b267d45fcbf3f4656aaf", + "0xaaf21c4d59378bb835d42ae5c5e5ab7a3c8c36a59e75997989313197752b79a472d866a23683b329ea69b048b87fa13e", + "0xb83c0589b304cec9ede549fde54f8a7c2a468c6657da8c02169a6351605261202610b2055c639b9ed2d5b8c401fb8f56", + "0x9370f326ea0f170c2c05fe2c5a49189f20aec93b6b18a5572a818cd4c2a6adb359e68975557b349fb54f065d572f4c92", + "0xac3232fa5ce6f03fca238bef1ce902432a90b8afce1c85457a6bee5571c033d4bceefafc863af04d4e85ac72a4d94d51", + "0x80d9ea168ff821b22c30e93e4c7960ce3ad3c1e6deeebedd342a36d01bd942419b187e2f382dbfd8caa34cca08d06a48", + "0xa387a3c61676fb3381eefa2a45d82625635a666e999aba30e3b037ec9e040f414f9e1ad9652abd3bcad63f95d85038db", + "0xa1b229fe32121e0b391b0f6e0180670b9dc89d79f7337de4c77ea7ad0073e9593846f06797c20e923092a08263204416", + "0x92164a9d841a2b828cedf2511213268b698520f8d1285852186644e9a0c97512cafa4bfbe29af892c929ebccd102e998", + "0x82ee2fa56308a67c7db4fd7ef539b5a9f26a1c2cc36da8c3206ba4b08258fbb3cec6fe5cdbd111433fb1ba2a1e275927", + "0x8c77bfe9e191f190a49d46f05600603fa42345592539b82923388d72392404e0b29a493a15e75e8b068dddcd444c2928", + "0x80b927f93ccf79dcf5c5b20bcf5a7d91d7a17bc0401bb7cc9b53a6797feac31026eb114257621f5a64a52876e4474cc1", + "0xb6b68b6501c37804d4833d5a063dd108a46310b1400549074e3cac84acc6d88f73948b7ad48d686de89c1ec043ae8c1a", + "0xab3da00f9bdc13e3f77624f58a3a18fc3728956f84b5b549d62f1033ae4b300538e53896e2d943f160618e05af265117", + "0xb6830e87233b8eace65327fdc764159645b75d2fd4024bf8f313b2dd5f45617d7ecfb4a0b53ccafb5429815a9a1adde6", + "0xb9251cfe32a6dc0440615aadcd98b6b1b46e3f4e44324e8f5142912b597ee3526bea2431e2b0282bb58f71be5b63f65e", + "0xaf8d70711e81cdddfb39e67a1b76643292652584c1ce7ce4feb1641431ad596e75c9120e85f1a341e7a4da920a9cdd94", + "0x98cd4e996594e89495c078bfd52a4586b932c50a449a7c8dfdd16043ca4cda94dafbaa8ad1b44249c99bbcc52152506e", + "0xb9fc6d1c24f48404a4a64fbe3e43342738797905db46e4132aee5f086aaa4c704918ad508aaefa455cfe1b36572e6242", + "0xa365e871d30ba9291cedaba1be7b04e968905d003e9e1af7e3b55c5eb048818ae5b913514fb08b24fb4fbdccbb35d0b8", + "0x93bf99510971ea9af9f1e364f1234c898380677c8e8de9b0dd24432760164e46c787bc9ec42a7ad450500706cf247b2d", + "0xb872f825a5b6e7b9c7a9ddfeded3516f0b1449acc9b4fd29fc6eba162051c17416a31e5be6d3563f424d28e65bab8b8f", + "0xb06b780e5a5e8eb4f4c9dc040f749cf9709c8a4c9ef15e925f442b696e41e5095db0778a6c73bcd329b265f2c6955c8b", + "0x848f1a981f5fc6cd9180cdddb8d032ad32cdfa614fc750d690dbae36cc0cd355cbf1574af9b3ffc8b878f1b2fafb9544", + "0xa03f48cbff3e9e8a3a655578051a5ae37567433093ac500ed0021c6250a51b767afac9bdb194ee1e3eac38a08c0eaf45", + "0xb5be78ce638ff8c4aa84352b536628231d3f7558c5be3bf010b28feac3022e64691fa672f358c8b663904aebe24a54ed", + "0xa9d4da70ff676fa55d1728ba6ab03b471fa38b08854d99e985d88c2d050102d8ccffbe1c90249a5607fa7520b15fe791", + "0x8fe9f7092ffb0b69862c8e972fb1ecf54308c96d41354ed0569638bb0364f1749838d6d32051fff1599112978c6e229c", + "0xae6083e95f37770ecae0df1e010456f165d96cfe9a7278c85c15cffd61034081ce5723e25e2bede719dc9341ec8ed481", + "0xa260891891103089a7afbd9081ea116cfd596fd1015f5b65e10b0961eb37fab7d09c69b7ce4be8bf35e4131848fb3fe4", + "0x8d729fa32f6eb9fd2f6a140bef34e8299a2f3111bffd0fe463aa8622c9d98bfd31a1df3f3e87cd5abc52a595f96b970e", + "0xa30ec6047ae4bc7da4daa7f4c28c93aedb1112cfe240e681d07e1a183782c9ff6783ac077c155af23c69643b712a533f", + "0xac830726544bfe7b5467339e5114c1a75f2a2a8d89453ce86115e6a789387e23551cd64620ead6283dfa4538eb313d86", + "0x8445c135b7a48068d8ed3e011c6d818cfe462b445095e2fbf940301e50ded23f272d799eea47683fc027430ce14613ef", + "0x95785411715c9ae9d8293ce16a693a2aa83e3cb1b4aa9f76333d0da2bf00c55f65e21e42e50e6c5772ce213dd7b4f7a0", + "0xb273b024fa18b7568c0d1c4d2f0c4e79ec509dafac8c5951f14192d63ddbcf2d8a7512c1c1b615cc38fa3e336618e0c5", + "0xa78b9d3ea4b6a90572eb27956f411f1d105fdb577ee2ffeec9f221da9b45db84bfe866af1f29597220c75e0c37a628d8", + "0xa4be2bf058c36699c41513c4d667681ce161a437c09d81383244fc55e1c44e8b1363439d0cce90a3e44581fb31d49493", + "0xb6eef13040f17dd4eba22aaf284d2f988a4a0c4605db44b8d2f4bf9567ac794550b543cc513c5f3e2820242dd704152e", + "0x87eb00489071fa95d008c5244b88e317a3454652dcb1c441213aa16b28cd3ecaa9b22fec0bdd483c1df71c37119100b1", + "0x92d388acdcb49793afca329cd06e645544d2269234e8b0b27d2818c809c21726bc9cf725651b951e358a63c83dedee24", + "0xae27e219277a73030da27ab5603c72c8bd81b6224b7e488d7193806a41343dff2456132274991a4722fdb0ef265d04cd", + "0x97583e08ecb82bbc27c0c8476d710389fa9ffbead5c43001bd36c1b018f29faa98de778644883e51870b69c5ffb558b5", + "0x90a799a8ce73387599babf6b7da12767c0591cadd36c20a7990e7c05ea1aa2b9645654ec65308ee008816623a2757a6a", + "0xa1b47841a0a2b06efd9ab8c111309cc5fc9e1d5896b3e42ed531f6057e5ade8977c29831ce08dbda40348386b1dcc06d", + "0xb92b8ef59bbddb50c9457691bc023d63dfcc54e0fd88bd5d27a09e0d98ac290fc90e6a8f6b88492043bf7c87fac8f3e4", + "0xa9d6240b07d62e22ec8ab9b1f6007c975a77b7320f02504fc7c468b4ee9cfcfd945456ff0128bc0ef2174d9e09333f8d", + "0x8e96534c94693226dc32bca79a595ca6de503af635f802e86442c67e77564829756961d9b701187fe91318da515bf0e6", + "0xb6ba290623cd8dd5c2f50931c0045d1cfb0c30877bc8fe58cbc3ff61ee8da100045a39153916efa1936f4aee0892b473", + "0xb43baa7717fac02d4294f5b3bb5e58a65b3557747e3188b482410388daac7a9c177f762d943fd5dcf871273921213da8", + "0xb9cf00f8fb5e2ef2b836659fece15e735060b2ea39b8e901d3dcbdcf612be8bf82d013833718c04cd46ffaa70b85f42e", + "0x8017d0c57419e414cbba504368723e751ef990cc6f05dad7b3c2de6360adc774ad95512875ab8337d110bf39a42026fa", + "0xae7401048b838c0dcd4b26bb6c56d79d51964a0daba780970b6c97daee4ea45854ea0ac0e4139b3fe60dac189f84df65", + "0x887b237b0cd0f816b749b21db0b40072f9145f7896c36916296973f9e6990ede110f14e5976c906d08987c9836cca57f", + "0xa88c3d5770148aee59930561ca1223aceb2c832fb5417e188dca935905301fc4c6c2c9270bc1dff7add490a125eb81c6", + "0xb6cf9b02c0cd91895ad209e38c54039523f137b5848b9d3ad33ae43af6c20c98434952db375fe378de7866f2d0e8b18a", + "0x84ef3d322ff580c8ad584b1fe4fe346c60866eb6a56e982ba2cf3b021ecb1fdb75ecc6c29747adda86d9264430b3f816", + "0xa0561c27224baf0927ad144cb71e31e54a064c598373fcf0d66aebf98ab7af1d8e2f343f77baefff69a6da750a219e11", + "0xaa5cc43f5b8162b016f5e1b61214c0c9d15b1078911c650b75e6cdfb49b85ee04c6739f5b1687d15908444f691f732de", + "0xad4ac099b935589c7b8fdfdf3db332b7b82bb948e13a5beb121ebd7db81a87d278024a1434bcf0115c54ca5109585c3d", + "0x8a00466abf3f109a1dcd19e643b603d3af23d42794ef8ca2514dd507ecea44a031ac6dbc18bd02f99701168b25c1791e", + "0xb00b5900dfad79645f8bee4e5adc7b84eb22e5b1e67df77ccb505b7fc044a6c08a8ea5faca662414eb945f874f884cea", + "0x950e204e5f17112250b22ea6bb8423baf522fc0af494366f18fe0f949f51d6e6812074a80875cf1ed9c8e7420058d541", + "0x91e5cbf8bb1a1d50c81608c9727b414d0dd2fb467ebc92f100882a3772e54f94979cfdf8e373fdef7c7fcdd60fec9e00", + "0xa093f6a857b8caaff80599c2e89c962b415ecbaa70d8fd973155fa976a284c6b29a855f5f7a3521134d00d2972755188", + "0xb4d55a3551b00da54cc010f80d99ddd2544bde9219a3173dfaadf3848edc7e4056ab532fb75ac26f5f7141e724267663", + "0xa03ea050fc9b011d1b04041b5765d6f6453a93a1819cd9bd6328637d0b428f08526466912895dcc2e3008ee58822e9a7", + "0x99b12b3665e473d01bc6985844f8994fb65cb15745024fb7af518398c4a37ff215da8f054e8fdf3286984ae36a73ca5e", + "0x9972c7e7a7fb12e15f78d55abcaf322c11249cd44a08f62c95288f34f66b51f146302bce750ff4d591707075d9123bd2", + "0xa64b4a6d72354e596d87cda213c4fc2814009461570ccb27d455bbe131f8d948421a71925425b546d8cf63d5458cd64b", + "0x91c215c73b195795ede2228b7ed1f6e37892e0c6b0f4a0b5a16c57aa1100c84df9239054a173b6110d6c2b7f4bf1ce52", + "0x88807198910ec1303480f76a3683870246a995e36adaeadc29c22f0bdba8152fe705bd070b75de657b04934f7d0ccf80", + "0xb37c0026c7b32eb02cacac5b55cb5fe784b8e48b2945c64d3037af83ece556a117f0ff053a5968c2f5fa230e291c1238", + "0x94c768384ce212bc2387e91ce8b45e4ff120987e42472888a317abc9dcdf3563b62e7a61c8e98d7cdcbe272167d91fc6", + "0xa10c2564936e967a390cb14ef6e8f8b04ea9ece5214a38837eda09e79e0c7970b1f83adf017c10efd6faa8b7ffa2c567", + "0xa5085eed3a95f9d4b1269182ea1e0d719b7809bf5009096557a0674bde4201b0ddc1f0f16a908fc468846b3721748ce3", + "0x87468eb620b79a0a455a259a6b4dfbc297d0d53336537b771254dd956b145dc816b195b7002647ea218552e345818a3f", + "0xace2b77ffb87366af0a9cb5d27d6fc4a14323dbbf1643f5f3c4559306330d86461bb008894054394cbfaefeaa0bc2745", + "0xb27f56e840a54fbd793f0b7a7631aa4cee64b5947e4382b2dfb5eb1790270288884c2a19afebe5dc0c6ef335d4531c1c", + "0x876e438633931f7f895062ee16c4b9d10428875f7bc79a8e156a64d379a77a2c45bf5430c5ab94330f03da352f1e9006", + "0xa2512a252587d200d2092b44c914df54e04ff8bcef36bf631f84bde0cf5a732e3dc7f00f662842cfd74b0b0f7f24180e", + "0x827f1bc8f54a35b7a4bd8154f79bcc055e45faed2e74adf7cf21cca95df44d96899e847bd70ead6bb27b9c0ed97bbd8b", + "0xa0c92cf5a9ed843714f3aea9fe7b880f622d0b4a3bf66de291d1b745279accf6ba35097849691370f41732ba64b5966b", + "0xa63f5c1e222775658421c487b1256b52626c6f79cb55a9b7deb2352622cedffb08502042d622eb3b02c97f9c09f9c957", + "0x8cc093d52651e65fb390e186db6cc4de559176af4624d1c44cb9b0e836832419dacac7b8db0627b96288977b738d785d", + "0xaa7b6a17dfcec146134562d32a12f7bd7fe9522e300859202a02939e69dbd345ed7ff164a184296268f9984f9312e8fc", + "0x8ac76721f0d2b679f023d06cbd28c85ae5f4b43c614867ccee88651d4101d4fd352dbdb65bf36bfc3ebc0109e4b0c6f9", + "0x8d350f7c05fc0dcd9a1170748846fb1f5d39453e4cb31e6d1457bed287d96fc393b2ecc53793ca729906a33e59c6834a", + "0xb9913510dfc5056d7ec5309f0b631d1ec53e3a776412ada9aefdaf033c90da9a49fdde6719e7c76340e86599b1f0eec2", + "0x94955626bf4ce87612c5cfffcf73bf1c46a4c11a736602b9ba066328dc52ad6d51e6d4f53453d4ed55a51e0aad810271", + "0xb0fcab384fd4016b2f1e53f1aafd160ae3b1a8865cd6c155d7073ecc1664e05b1d8bca1def39c158c7086c4e1103345e", + "0x827de3f03edfbde08570b72de6662c8bfa499b066a0a27ebad9b481c273097d17a5a0a67f01553da5392ec3f149b2a78", + "0xab7940384c25e9027c55c40df20bd2a0d479a165ced9b1046958353cd69015eeb1e44ed2fd64e407805ba42df10fc7bf", + "0x8ad456f6ff8cd58bd57567d931f923d0c99141978511b17e03cab7390a72b9f62498b2893e1b05c7c22dd274e9a31919", + "0xac75399e999effe564672db426faa17a839e57c5ef735985c70cd559a377adec23928382767b55ed5a52f7b11b54b756", + "0xb17f975a00b817299ac7af5f2024ea820351805df58b43724393bfb3920a8cd747a3bbd4b8286e795521489db3657168", + "0xa2bed800a6d95501674d9ee866e7314063407231491d794f8cf57d5be020452729c1c7cefd8c50dc1540181f5caab248", + "0x9743f5473171271ffdd3cc59a3ae50545901a7b45cd4bc3570db487865f3b73c0595bebabbfe79268809ee1862e86e4a", + "0xb7eab77c2d4687b60d9d7b04e842b3880c7940140012583898d39fcc22d9b9b0a9be2c2e3788b3e6f30319b39c338f09", + "0x8e2b8f797a436a1b661140e9569dcf3e1eea0a77c7ff2bc4ff0f3e49af04ed2de95e255df8765f1d0927fb456a9926b1", + "0x8aefea201d4a1f4ff98ffce94e540bb313f2d4dfe7e9db484a41f13fc316ed02b282e1acc9bc6f56cad2dc2e393a44c9", + "0xb950c17c0e5ca6607d182144aa7556bb0efe24c68f06d79d6413a973b493bfdf04fd147a4f1ab03033a32004cc3ea66f", + "0xb7b8dcbb179a07165f2dc6aa829fad09f582a71b05c3e3ea0396bf9e6fe73076f47035c031c2101e8e38e0d597eadd30", + "0xa9d77ed89c77ec1bf8335d08d41c3c94dcca9fd1c54f22837b4e54506b212aa38d7440126c80648ab7723ff18e65ed72", + "0xa819d6dfd4aef70e52b8402fe5d135f8082d40eb7d3bb5c4d7997395b621e2bb10682a1bad2c9caa33dd818550fc3ec6", + "0x8f6ee34128fac8bbf13ce2d68b2bb363eb4fd65b297075f88e1446ddeac242500eeb4ef0735e105882ff5ba8c44c139b", + "0xb4440e48255c1644bcecf3a1e9958f1ec4901cb5b1122ee5b56ffd02cad1c29c4266999dbb85aa2605c1b125490074d4", + "0xa43304a067bede5f347775d5811cf65a6380a8d552a652a0063580b5c5ef12a0867a39c7912fa219e184f4538eba1251", + "0xa891ad67a790089ffc9f6d53e6a3d63d3556f5f693e0cd8a7d0131db06fd4520e719cfcc3934f0a8f62a95f90840f1d4", + "0xaea6df8e9bb871081aa0fc5a9bafb00be7d54012c5baf653791907d5042a326aeee966fd9012a582cc16695f5baf7042", + "0x8ffa2660dc52ed1cd4eff67d6a84a8404f358a5f713d04328922269bee1e75e9d49afeec0c8ad751620f22352a438e25", + "0x87ec6108e2d63b06abed350f8b363b7489d642486f879a6c3aa90e5b0f335efc2ff2834eef9353951a42136f8e6a1b32", + "0x865619436076c2760d9e87ddc905023c6de0a8d56eef12c98a98c87837f2ca3f27fd26a2ad752252dbcbe2b9f1d5a032", + "0x980437dce55964293cb315c650c5586ffd97e7a944a83f6618af31c9d92c37b53ca7a21bb5bc557c151b9a9e217e7098", + "0x95d128fc369df4ad8316b72aea0ca363cbc7b0620d6d7bb18f7076a8717a6a46956ff140948b0cc4f6d2ce33b5c10054", + "0x8c7212d4a67b9ec70ebbca04358ad2d36494618d2859609163526d7b3acc2fc935ca98519380f55e6550f70a9bc76862", + "0x893a2968819401bf355e85eee0f0ed0406a6d4a7d7f172d0017420f71e00bb0ba984f6020999a3cdf874d3cd8ebcd371", + "0x9103c1af82dece25d87274e89ea0acd7e68c2921c4af3d8d7c82ab0ed9990a5811231b5b06113e7fa43a6bd492b4564f", + "0x99cfd87a94eab7d35466caa4ed7d7bb45e5c932b2ec094258fb14bf205659f83c209b83b2f2c9ccb175974b2a33e7746", + "0x874b6b93e4ee61be3f00c32dd84c897ccd6855c4b6251eb0953b4023634490ed17753cd3223472873cbc6095b2945075", + "0x84a32c0dc4ea60d33aac3e03e70d6d639cc9c4cc435c539eff915017be3b7bdaba33349562a87746291ebe9bc5671f24", + "0xa7057b24208928ad67914e653f5ac1792c417f413d9176ba635502c3f9c688f7e2ee81800d7e3dc0a340c464da2fd9c5", + "0xa03fb9ed8286aacfa69fbd5d953bec591c2ae4153400983d5dbb6cd9ea37fff46ca9e5cceb9d117f73e9992a6c055ad2", + "0x863b2de04e89936c9a4a2b40380f42f20aefbae18d03750fd816c658aee9c4a03df7b12121f795c85d01f415baaeaa59", + "0x8526eb9bd31790fe8292360d7a4c3eed23be23dd6b8b8f01d2309dbfdc0cfd33ad1568ddd7f8a610f3f85a9dfafc6a92", + "0xb46ab8c5091a493d6d4d60490c40aa27950574a338ea5bbc045be3a114af87bdcb160a8c80435a9b7ad815f3cb56a3f3", + "0xaeadc47b41a8d8b4176629557646202f868b1d728b2dda58a347d937e7ffc8303f20d26d6c00b34c851b8aeec547885d", + "0xaebb19fc424d72c1f1822aa7adc744cd0ef7e55727186f8df8771c784925058c248406ebeeaf3c1a9ee005a26e9a10c6", + "0x8ff96e81c1a4a2ab1b4476c21018fae0a67e92129ee36120cae8699f2d7e57e891f5c624902cb1b845b944926a605cc3", + "0x8251b8d2c43fadcaa049a9e7aff838dae4fb32884018d58d46403ac5f3beb5c518bfd45f03b8abb710369186075eb71c", + "0xa8b2a64f865f51a5e5e86a66455c093407933d9d255d6b61e1fd81ffafc9538d73caaf342338a66ba8ee166372a3d105", + "0xaad915f31c6ba7fdc04e2aaac62e84ef434b7ee76a325f07dc430d12c84081999720181067b87d792efd0117d7ee1eab", + "0xa13db3bb60389883fd41d565c54fb5180d9c47ce2fe7a169ae96e01d17495f7f4fa928d7e556e7c74319c4c25d653eb2", + "0xa4491b0198459b3f552855d680a59214eb74e6a4d6c5fa3b309887dc50ebea2ecf6d26c040550f7dc478b452481466fb", + "0x8f017f13d4b1e3f0c087843582b52d5f8d13240912254d826dd11f8703a99a2f3166dfbdfdffd9a3492979d77524276b", + "0x96c3d5dcd032660d50d7cd9db2914f117240a63439966162b10c8f1f3cf74bc83b0f15451a43b31dbd85e4a7ce0e4bb1", + "0xb479ec4bb79573d32e0ec93b92bdd7ec8c26ddb5a2d3865e7d4209d119fd3499eaac527615ffac78c440e60ef3867ae0", + "0xb2c49c4a33aa94b52b6410b599e81ff15490aafa7e43c8031c865a84e4676354a9c81eb4e7b8be6825fdcefd1e317d44", + "0x906dc51d6a90c089b6704b47592805578a6eed106608eeb276832f127e1b8e858b72e448edcbefb497d152447e0e68ff", + "0xb0e81c63b764d7dfbe3f3fddc9905aef50f3633e5d6a4af6b340495124abedcff5700dfd1577bbbed7b6bf97d02719cb", + "0x9304c64701e3b4ed6d146e48a881f7d83a17f58357cca0c073b2bb593afd2d94f6e2a7a1ec511d0a67ad6ff4c3be5937", + "0xb6fdbd12ba05aa598d80b83f70a15ef90e5cba7e6e75fa038540ee741b644cd1f408a6cecfd2a891ef8d902de586c6b5", + "0xb80557871a6521b1b3c74a1ba083ae055b575df607f1f7b04c867ba8c8c181ea68f8d90be6031f4d25002cca27c44da2", + "0xaa7285b8e9712e06b091f64163f1266926a36607f9d624af9996856ed2aaf03a580cb22ce407d1ade436c28b44ca173f", + "0x8148d72b975238b51e6ea389e5486940d22641b48637d7dfadfa603a605bfc6d74a016480023945d0b85935e396aea5d", + "0x8a014933a6aea2684b5762af43dcf4bdbb633cd0428d42d71167a2b6fc563ece5e618bff22f1db2ddb69b845b9a2db19", + "0x990d91740041db770d0e0eb9d9d97d826f09fd354b91c41e0716c29f8420e0e8aac0d575231efba12fe831091ec38d5a", + "0x9454d0d32e7e308ddec57cf2522fb1b67a2706e33fb3895e9e1f18284129ab4f4c0b7e51af25681d248d7832c05eb698", + "0xa5bd434e75bac105cb3e329665a35bce6a12f71dd90c15165777d64d4c13a82bceedb9b48e762bd24034e0fc9fbe45f4", + "0xb09e3b95e41800d4dc29c6ffdaab2cd611a0050347f6414f154a47ee20ee59bf8cf7181454169d479ebce1eb5c777c46", + "0xb193e341d6a047d15eea33766d656d807b89393665a783a316e9ba10518e5515c8e0ade3d6e15641d917a8a172a5a635", + "0xade435ec0671b3621dde69e07ead596014f6e1daa1152707a8c18877a8b067bde2895dd47444ffa69db2bbef1f1d8816", + "0xa7fd3d6d87522dfc56fb47aef9ce781a1597c56a8bbfd796baba907afdc872f753d732bfda1d3402aee6c4e0c189f52d", + "0xa298cb4f4218d0464b2fab393e512bbc477c3225aa449743299b2c3572f065bc3a42d07e29546167ed9e1b6b3b3a3af3", + "0xa9ee57540e1fd9c27f4f0430d194b91401d0c642456c18527127d1f95e2dba41c2c86d1990432eb38a692fda058fafde", + "0x81d6c1a5f93c04e6d8e5a7e0678c1fc89a1c47a5c920bcd36180125c49fcf7c114866b90e90a165823560b19898a7c16", + "0xa4b7a1ec9e93c899b9fd9aaf264c50e42c36c0788d68296a471f7a3447af4dbc81e4fa96070139941564083ec5b5b5a1", + "0xb3364e327d381f46940c0e11e29f9d994efc6978bf37a32586636c0070b03e4e23d00650c1440f448809e1018ef9f6d8", + "0x8056e0913a60155348300e3a62e28b5e30629a90f7dd4fe11289097076708110a1d70f7855601782a3cdc5bdb1ca9626", + "0xb4980fd3ea17bac0ba9ee1c470b17e575bb52e83ebdd7d40c93f4f87bebeaff1c8a679f9d3d09d635f068d37d5bd28bd", + "0x905a9299e7e1853648e398901dfcd437aa575c826551f83520df62984f5679cb5f0ea86aa45ed3e18b67ddc0dfafe809", + "0xab99553bf31a84f2e0264eb34a08e13d8d15e2484aa9352354becf9a15999c76cc568d68274b70a65e49703fc23540d0", + "0xa43681597bc574d2dae8964c9a8dc1a07613d7a1272bdcb818d98c85d44e16d744250c33f3b5e4d552d97396b55e601f", + "0xa54e5a31716fccb50245898c99865644405b8dc920ded7a11f3d19bdc255996054b268e16f2e40273f11480e7145f41e", + "0x8134f3ad5ef2ad4ba12a8a4e4d8508d91394d2bcdc38b7c8c8c0b0a820357ac9f79d286c65220f471eb1adca1d98fc68", + "0x94e2f755e60471578ab2c1adb9e9cea28d4eec9b0e92e0140770bca7002c365fcabfe1e5fb4fe6cfe79a0413712aa3ef", + "0xad48f8d0ce7eb3cc6e2a3086ad96f562e5bed98a360721492ae2e74dc158586e77ec8c35d5fd5927376301b7741bad2b", + "0x8614f0630bdd7fbad3a31f55afd9789f1c605dc85e7dc67e2edfd77f5105f878bb79beded6e9f0b109e38ea7da67e8d5", + "0x9804c284c4c5e77dabb73f655b12181534ca877c3e1e134aa3f47c23b7ec92277db34d2b0a5d38d2b69e5d1c3008a3e3", + "0xa51b99c3088e473afdaa9e0a9f7e75a373530d3b04e44e1148da0726b95e9f5f0c7e571b2da000310817c36f84b19f7f", + "0xac4ff909933b3b76c726b0a382157cdc74ab851a1ac6cef76953c6444441804cc43abb883363f416592e8f6cfbc4550b", + "0xae7d915eb9fc928b65a29d6edbc75682d08584d0014f7bcf17d59118421ae07d26a02137d1e4de6938bcd1ab8ef48fad", + "0x852f7e453b1af89b754df6d11a40d5d41ea057376e8ecacd705aacd2f917457f4a093d6b9a8801837fa0f62986ad7149", + "0x92c6bf5ada5d0c3d4dd8058483de36c215fa98edab9d75242f3eff9db07c734ad67337da6f0eefe23a487bf75a600dee", + "0xa2b42c09d0db615853763552a48d2e704542bbd786aae016eb58acbf6c0226c844f5fb31e428cb6450b9db855f8f2a6f", + "0x880cc07968266dbfdcfbc21815cd69e0eddfee239167ac693fb0413912d816f2578a74f7716eecd6deefa68c6eccd394", + "0xb885b3ace736cd373e8098bf75ba66fa1c6943ca1bc4408cd98ac7074775c4478594f91154b8a743d9c697e1b29f5840", + "0xa51ce78de512bd87bfa0835de819941dffbf18bec23221b61d8096fc9436af64e0693c335b54e7bfc763f287bdca2db6", + "0xa3c76166a3bdb9b06ef696e57603b58871bc72883ee9d45171a30fe6e1d50e30bc9c51b4a0f5a7270e19a77b89733850", + "0xacefc5c6f8a1e7c24d7b41e0fc7f6f3dc0ede6cf3115ffb9a6e54b1d954cbca9bda8ad7a084be9be245a1b8e9770d141", + "0xb420ed079941842510e31cfad117fa11fb6b4f97dfbc6298cb840f27ebaceba23eeaf3f513bcffbf5e4aae946310182d", + "0x95c3bb5ef26c5ed2f035aa5d389c6b3c15a6705b9818a3fefaed28922158b35642b2e8e5a1a620fdad07e75ad4b43af4", + "0x825149f9081ecf07a2a4e3e8b5d21bade86c1a882475d51c55ee909330b70c5a2ac63771c8600c6f38df716af61a3ea1", + "0x873b935aae16d9f08adbc25353cee18af2f1b8d5f26dec6538d6bbddc515f2217ed7d235dcfea59ae61b428798b28637", + "0x9294150843a2bedcedb3bb74c43eb28e759cf9499582c5430bccefb574a8ddd4f11f9929257ff4c153990f9970a2558f", + "0xb619563a811cc531da07f4f04e5c4c6423010ff9f8ed7e6ec9449162e3d501b269fb1c564c09c0429431879b0f45df02", + "0x91b509b87eb09f007d839627514658c7341bc76d468920fe8a740a8cb96a7e7e631e0ea584a7e3dc1172266f641d0f5c", + "0x8b8aceace9a7b9b4317f1f01308c3904d7663856946afbcea141a1c615e21ccad06b71217413e832166e9dd915fbe098", + "0x87b3b36e725833ea0b0f54753c3728c0dbc87c52d44d705ffc709f2d2394414c652d3283bab28dcce09799504996cee0", + "0xb2670aad5691cbf308e4a6a77a075c4422e6cbe86fdba24e9f84a313e90b0696afb6a067eebb42ba2d10340d6a2f6e51", + "0x876784a9aff3d54faa89b2bacd3ff5862f70195d0b2edc58e8d1068b3c9074c0da1cfa23671fe12f35e33b8a329c0ccd", + "0x8b48b9e758e8a8eae182f5cbec96f67d20cca6d3eee80a2d09208eb1d5d872e09ef23d0df8ebbb9b01c7449d0e3e3650", + "0xb79303453100654c04a487bdcadc9e3578bc80930c489a7069a52e8ca1dba36c492c8c899ce025f8364599899baa287d", + "0x961b35a6111da54ece6494f24dacd5ea46181f55775b5f03df0e370c34a5046ac2b4082925855325bb42bc2a2c98381d", + "0xa31feb1be3f5a0247a1f7d487987eb622e34fca817832904c6ee3ee60277e5847945a6f6ea1ac24542c72e47bdf647df", + "0xa12a2aa3e7327e457e1aae30e9612715dd2cfed32892c1cd6dcda4e9a18203af8a44afb46d03b2eed89f6b9c5a2c0c23", + "0xa08265a838e69a2ca2f80fead6ccf16f6366415b920c0b22ee359bcd8d4464ecf156f400a16a7918d52e6d733dd64211", + "0xb723d6344e938d801cca1a00032af200e541d4471fd6cbd38fb9130daa83f6a1dffbbe7e67fc20f9577f884acd7594b2", + "0xa6733d83ec78ba98e72ddd1e7ff79b7adb0e559e256760d0c590a986e742445e8cdf560d44b29439c26d87edd0b07c8c", + "0xa61c2c27d3f7b9ff4695a17afedf63818d4bfba390507e1f4d0d806ce8778d9418784430ce3d4199fd3bdbc2504d2af3", + "0x8332f3b63a6dc985376e8b1b25eeae68be6160fbe40053ba7bcf6f073204f682da72321786e422d3482fd60c9e5aa034", + "0xa280f44877583fbb6b860d500b1a3f572e3ee833ec8f06476b3d8002058e25964062feaa1e5bec1536d734a5cfa09145", + "0xa4026a52d277fcea512440d2204f53047718ebfcae7b48ac57ea7f6bfbc5de9d7304db9a9a6cbb273612281049ddaec5", + "0x95cdf69c831ab2fad6c2535ede9c07e663d2ddccc936b64e0843d2df2a7b1c31f1759c3c20f1e7a57b1c8f0dbb21b540", + "0x95c96cec88806469c277ab567863c5209027cecc06c7012358e5f555689c0d9a5ffb219a464f086b45817e8536b86d2f", + "0xafe38d4684132a0f03d806a4c8df556bf589b25271fbc6fe2e1ed16de7962b341c5003755da758d0959d2e6499b06c68", + "0xa9b77784fda64987f97c3a23c5e8f61b918be0f7c59ba285084116d60465c4a2aaafc8857eb16823282cc83143eb9126", + "0xa830f05881ad3ce532a55685877f529d32a5dbe56cea57ffad52c4128ee0fad0eeaf0da4362b55075e77eda7babe70e5", + "0x992b3ad190d6578033c13ed5abfee4ef49cbc492babb90061e3c51ee4b5790cdd4c8fc1abff1fa2c00183b6b64f0bbbe", + "0xb1015424d9364aeff75de191652dc66484fdbec3e98199a9eb9671ec57bec6a13ff4b38446e28e4d8aedb58dd619cd90", + "0xa745304604075d60c9db36cada4063ac7558e7ec2835d7da8485e58d8422e817457b8da069f56511b02601289fbb8981", + "0xa5ba4330bc5cb3dbe0486ddf995632a7260a46180a08f42ae51a2e47778142132463cc9f10021a9ad36986108fefa1a9", + "0xb419e9fd4babcaf8180d5479db188bb3da232ae77a1c4ed65687c306e6262f8083070a9ac32220cddb3af2ec73114092", + "0xa49e23dc5f3468f3bf3a0bb7e4a114a788b951ff6f23a3396ae9e12cbff0abd1240878a3d1892105413dbc38818e807c", + "0xb7ecc7b4831f650202987e85b86bc0053f40d983f252e9832ef503aea81c51221ce93279da4aa7466c026b2d2070e55d", + "0x96a8c35cb87f84fa84dcd6399cc2a0fd79cc9158ef4bdde4bae31a129616c8a9f2576cd19baa3f497ca34060979aed7d", + "0x8681b2c00aa62c2b519f664a95dcb8faef601a3b961bb4ce5d85a75030f40965e2983871d41ea394aee934e859581548", + "0x85c229a07efa54a713d0790963a392400f55fbb1a43995a535dc6c929f20d6a65cf4efb434e0ad1cb61f689b8011a3bc", + "0x90856f7f3444e5ad44651c28e24cc085a5db4d2ffe79aa53228c26718cf53a6e44615f3c5cda5aa752d5f762c4623c66", + "0x978999b7d8aa3f28a04076f74d11c41ef9c89fdfe514936c4238e0f13c38ec97e51a5c078ebc6409e517bfe7ccb42630", + "0xa099914dd7ed934d8e0d363a648e9038eb7c1ec03fa04dbcaa40f7721c618c3ef947afef7a16b4d7ac8c12aa46637f03", + "0xab2a104fed3c83d16f2cda06878fa5f30c8c9411de71bfb67fd2fc9aa454dcbcf3d299d72f8cc12e919466a50fcf7426", + "0xa4471d111db4418f56915689482f6144efc4664cfb0311727f36c864648d35734351becc48875df96f4abd3cfcf820f9", + "0x83be11727cd30ea94ccc8fa31b09b81c9d6a9a5d3a4686af9da99587332fe78c1f94282f9755854bafd6033549afec91", + "0x88020ff971dc1a01a9e993cd50a5d2131ffdcbb990c1a6aaa54b20d8f23f9546a70918ea57a21530dcc440c1509c24ad", + "0xae24547623465e87905eaffa1fa5d52bb7c453a8dbd89614fa8819a2abcedaf455c2345099b7324ae36eb0ad7c8ef977", + "0xb59b0c60997de1ee00b7c388bc7101d136c9803bf5437b1d589ba57c213f4f835a3e4125b54738e78abbc21b000f2016", + "0xa584c434dfe194546526691b68fa968c831c31da42303a1d735d960901c74011d522246f37f299555416b8cf25c5a548", + "0x80408ce3724f4837d4d52376d255e10f69eb8558399ae5ca6c11b78b98fe67d4b93157d2b9b639f1b5b64198bfe87713", + "0xabb941e8d406c2606e0ddc35c113604fdd9d249eacc51cb64e2991e551b8639ce44d288cc92afa7a1e7fc599cfc84b22", + "0xb223173f560cacb1c21dba0f1713839e348ad02cbfdef0626748604c86f89e0f4c919ed40b583343795bdd519ba952c8", + "0xaf1c70512ec3a19d98b8a1fc3ff7f7f5048a27d17d438d43f561974bbdd116fcd5d5c21040f3447af3f0266848d47a15", + "0x8a44809568ebe50405bede19b4d2607199159b26a1b33e03d180e6840c5cf59d991a4fb150d111443235d75ecad085b7", + "0xb06207cdca46b125a27b3221b5b50cf27af4c527dd7c80e2dbcebbb09778a96df3af67e50f07725239ce3583dad60660", + "0x993352d9278814ec89b26a11c4a7c4941bf8f0e6781ae79559d14749ee5def672259792db4587f85f0100c7bb812f933", + "0x9180b8a718b971fd27bc82c8582d19c4b4f012453e8c0ffeeeffe745581fc6c07875ab28be3af3fa3896d19f0c89ac5b", + "0x8b8e1263eb48d0fe304032dd5ea1f30e73f0121265f7458ba9054d3626894e8a5fef665340abd2ede9653045c2665938", + "0x99a2beee4a10b7941c24b2092192faf52b819afd033e4a2de050fd6c7f56d364d0cf5f99764c3357cf32399e60fc5d74", + "0x946a4aad7f8647ea60bee2c5fcdeb6f9a58fb2cfca70c4d10e458027a04846e13798c66506151be3df9454b1e417893f", + "0xa672a88847652d260b5472d6908d1d57e200f1e492d30dd1cecc441cdfc9b76e016d9bab560efd4d7f3c30801de884a9", + "0x9414e1959c156cde1eb24e628395744db75fc24b9df4595350aaad0bc38e0246c9b4148f6443ef68b8e253a4a6bcf11c", + "0x9316e9e4ec5fab4f80d6540df0e3a4774db52f1d759d2e5b5bcd3d7b53597bb007eb1887cb7dc61f62497d51ffc8d996", + "0x902d6d77bb49492c7a00bc4b70277bc28c8bf9888f4307bb017ac75a962decdedf3a4e2cf6c1ea9f9ba551f4610cbbd7", + "0xb07025a18b0e32dd5e12ec6a85781aa3554329ea12c4cd0d3b2c22e43d777ef6f89876dd90a9c8fb097ddf61cf18adc5", + "0xb355a849ad3227caa4476759137e813505ec523cbc2d4105bc7148a4630f9e81918d110479a2d5f5e4cd9ccec9d9d3e3", + "0xb49532cfdf02ee760109881ad030b89c48ee3bb7f219ccafc13c93aead754d29bdafe345be54c482e9d5672bd4505080", + "0x9477802410e263e4f938d57fa8f2a6cac7754c5d38505b73ee35ea3f057aad958cb9722ba6b7b3cfc4524e9ca93f9cdc", + "0x9148ea83b4436339580f3dbc9ba51509e9ab13c03063587a57e125432dd0915f5d2a8f456a68f8fff57d5f08c8f34d6e", + "0xb00b6b5392b1930b54352c02b1b3b4f6186d20bf21698689bbfc7d13e86538a4397b90e9d5c93fd2054640c4dbe52a4f", + "0x926a9702500441243cd446e7cbf15dde16400259726794694b1d9a40263a9fc9e12f7bcbf12a27cb9aaba9e2d5848ddc", + "0xa0c6155f42686cbe7684a1dc327100962e13bafcf3db97971fc116d9f5c0c8355377e3d70979cdbd58fd3ea52440901c", + "0xa277f899f99edb8791889d0817ea6a96c24a61acfda3ad8c3379e7c62b9d4facc4b965020b588651672fd261a77f1bfc", + "0x8f528cebb866b501f91afa50e995234bef5bf20bff13005de99cb51eaac7b4f0bf38580cfd0470de40f577ead5d9ba0f", + "0x963fc03a44e9d502cc1d23250efef44d299befd03b898d07ce63ca607bb474b5cf7c965a7b9b0f32198b04a8393821f7", + "0xab087438d0a51078c378bf4a93bd48ef933ff0f1fa68d02d4460820df564e6642a663b5e50a5fe509527d55cb510ae04", + "0xb0592e1f2c54746bb076be0fa480e1c4bebc4225e1236bcda3b299aa3853e3afb401233bdbcfc4a007b0523a720fbf62", + "0x851613517966de76c1c55a94dc4595f299398a9808f2d2f0a84330ba657ab1f357701d0895f658c18a44cb00547f6f57", + "0xa2fe9a1dd251e72b0fe4db27be508bb55208f8f1616b13d8be288363ec722826b1a1fd729fc561c3369bf13950bf1fd6", + "0xb896cb2bc2d0c77739853bc59b0f89b2e008ba1f701c9cbe3bef035f499e1baee8f0ff1e794854a48c320586a2dfc81a", + "0xa1b60f98e5e5106785a9b81a85423452ee9ef980fa7fa8464f4366e73f89c50435a0c37b2906052b8e58e212ebd366cf", + "0xa853b0ebd9609656636df2e6acd5d8839c0fda56f7bf9288a943b06f0b67901a32b95e016ca8bc99bd7b5eab31347e72", + "0xb290fa4c1346963bd5225235e6bdf7c542174dab4c908ab483d1745b9b3a6015525e398e1761c90e4b49968d05e30eea", + "0xb0f65a33ad18f154f1351f07879a183ad62e5144ad9f3241c2d06533dad09cbb2253949daff1bb02d24d16a3569f7ef0", + "0xa00db59b8d4218faf5aeafcd39231027324408f208ec1f54d55a1c41228b463b88304d909d16b718cfc784213917b71e", + "0xb8d695dd33dc2c3bc73d98248c535b2770ad7fa31aa726f0aa4b3299efb0295ba9b4a51c71d314a4a1bd5872307534d1", + "0xb848057cca2ca837ee49c42b88422303e58ea7d2fc76535260eb5bd609255e430514e927cc188324faa8e657396d63ec", + "0x92677836061364685c2aaf0313fa32322746074ed5666fd5f142a7e8f87135f45cd10e78a17557a4067a51dfde890371", + "0xa854b22c9056a3a24ab164a53e5c5cf388616c33e67d8ebb4590cb16b2e7d88b54b1393c93760d154208b5ca822dc68f", + "0x86fff174920388bfab841118fb076b2b0cdec3fdb6c3d9a476262f82689fb0ed3f1897f7be9dbf0932bb14d346815c63", + "0x99661cf4c94a74e182752bcc4b98a8c2218a8f2765642025048e12e88ba776f14f7be73a2d79bd21a61def757f47f904", + "0x8a8893144d771dca28760cba0f950a5d634195fd401ec8cf1145146286caffb0b1a6ba0c4c1828d0a5480ce49073c64c", + "0x938a59ae761359ee2688571e7b7d54692848eb5dde57ffc572b473001ea199786886f8c6346a226209484afb61d2e526", + "0x923f68a6aa6616714cf077cf548aeb845bfdd78f2f6851d8148cba9e33a374017f2f3da186c39b82d14785a093313222", + "0xac923a93d7da7013e73ce8b4a2b14b8fd0cc93dc29d5de941a70285bdd19be4740fedfe0c56b046689252a3696e9c5bc", + "0xb49b32c76d4ec1a2c68d4989285a920a805993bc6fcce6dacd3d2ddae73373050a5c44ba8422a3781050682fa0ef6ba2", + "0x8a367941c07c3bdca5712524a1411bad7945c7c48ffc7103b1d4dff2c25751b0624219d1ccde8c3f70c465f954be5445", + "0xb838f029df455efb6c530d0e370bbbf7d87d61a9aea3d2fe5474c5fe0a39cf235ceecf9693c5c6c5820b1ba8f820bd31", + "0xa8983b7c715eaac7f13a001d2abc462dfc1559dab4a6b554119c271aa8fe00ffcf6b6949a1121f324d6d26cb877bcbae", + "0xa2afb24ad95a6f14a6796315fbe0d8d7700d08f0cfaf7a2abe841f5f18d4fecf094406cbd54da7232a159f9c5b6e805e", + "0x87e8e95ad2d62f947b2766ff405a23f7a8afba14e7f718a691d95369c79955cdebe24c54662553c60a3f55e6322c0f6f", + "0x87c2cbcecb754e0cc96128e707e5c5005c9de07ffd899efa3437cadc23362f5a1d3fcdd30a1f5bdc72af3fb594398c2a", + "0x91afd6ee04f0496dc633db88b9370d41c428b04fd991002502da2e9a0ef051bcd7b760e860829a44fbe5539fa65f8525", + "0x8c50e5d1a24515a9dd624fe08b12223a75ca55196f769f24748686315329b337efadca1c63f88bee0ac292dd0a587440", + "0x8a07e8f912a38d94309f317c32068e87f68f51bdfa082d96026f5f5f8a2211621f8a3856dda8069386bf15fb2d28c18f", + "0x94ad1dbe341c44eeaf4dc133eed47d8dbfe752575e836c075745770a6679ff1f0e7883b6aa917462993a7f469d74cab5", + "0x8745f8bd86c2bb30efa7efb7725489f2654f3e1ac4ea95bd7ad0f3cfa223055d06c187a16192d9d7bdaea7b050c6a324", + "0x900d149c8d79418cda5955974c450a70845e02e5a4ecbcc584a3ca64d237df73987c303e3eeb79da1af83bf62d9e579f", + "0x8f652ab565f677fb1a7ba03b08004e3cda06b86c6f1b0b9ab932e0834acf1370abb2914c15b0d08327b5504e5990681c", + "0x9103097d088be1f75ab9d3da879106c2f597e2cc91ec31e73430647bdd5c33bcfd771530d5521e7e14df6acda44f38a6", + "0xb0fec7791cfb0f96e60601e1aeced9a92446b61fedab832539d1d1037558612d78419efa87ff5f6b7aab8fd697d4d9de", + "0xb9d2945bdb188b98958854ba287eb0480ef614199c4235ce5f15fc670b8c5ffe8eeb120c09c53ea8a543a022e6a321ac", + "0xa9461bb7d5490973ebaa51afc0bb4a5e42acdccb80e2f939e88b77ac28a98870e103e1042899750f8667a8cc9123bae9", + "0xa37fdf11d4bcb2aed74b9f460a30aa34afea93386fa4cdb690f0a71bc58f0b8df60bec56e7a24f225978b862626fa00e", + "0xa214420e183e03d531cf91661466ea2187d84b6e814b8b20b3730a9400a7d25cf23181bb85589ebc982cec414f5c2923", + "0xad09a45a698a6beb3e0915f540ef16e9af7087f53328972532d6b5dfe98ce4020555ece65c6cbad8bd6be8a4dfefe6fd", + "0xab6742800b02728c92d806976764cb027413d6f86edd08ad8bb5922a2969ee9836878cd39db70db0bd9a2646862acc4f", + "0x974ca9305bd5ea1dc1755dff3b63e8bfe9f744321046c1395659bcea2a987b528e64d5aa96ac7b015650b2253b37888d", + "0x84eee9d6bce039c52c2ebc4fccc0ad70e20c82f47c558098da4be2f386a493cbc76adc795b5488c8d11b6518c2c4fab8", + "0x875d7bda46efcb63944e1ccf760a20144df3b00d53282b781e95f12bfc8f8316dfe6492c2efbf796f1150e36e436e9df", + "0xb68a2208e0c587b5c31b5f6cb32d3e6058a9642e2d9855da4f85566e1412db528475892060bb932c55b3a80877ad7b4a", + "0xba006368ecab5febb6ab348644d9b63de202293085ed468df8bc24d992ae8ce468470aa37f36a73630c789fb9c819b30", + "0x90a196035150846cd2b482c7b17027471372a8ce7d914c4d82b6ea7fa705d8ed5817bd42d63886242585baf7d1397a1c", + "0xa223b4c85e0daa8434b015fd9170b5561fe676664b67064974a1e9325066ecf88fc81f97ab5011c59fad28cedd04b240", + "0x82e8ec43139cf15c6bbeed484b62e06cded8a39b5ce0389e4cbe9c9e9c02f2f0275d8d8d4e8dfec8f69a191bef220408", + "0x81a3fc07a7b68d92c6ee4b6d28f5653ee9ec85f7e2ee1c51c075c1b130a8c5097dc661cf10c5aff1c7114b1a6a19f11a", + "0x8ed2ef8331546d98819a5dd0e6c9f8cb2630d0847671314a28f277faf68da080b53891dd75c82cbcf7788b255490785d", + "0xacecabf84a6f9bbed6b2fc2e7e4b48f02ef2f15e597538a73aea8f98addc6badda15e4695a67ecdb505c1554e8f345ec", + "0xb8f51019b2aa575f8476e03dcadf86cc8391f007e5f922c2a36b2daa63f5a503646a468990cd5c65148d323942193051", + "0xaaa595a84b403ec65729bc1c8055a94f874bf9adddc6c507b3e1f24f79d3ad359595a672b93aab3394db4e2d4a7d8970", + "0x895144c55fcbd0f64d7dd69e6855cfb956e02b5658eadf0f026a70703f3643037268fdd673b0d21b288578a83c6338dd", + "0xa2e92ae6d0d237d1274259a8f99d4ea4912a299816350b876fba5ebc60b714490e198a916e1c38c6e020a792496fa23c", + "0xa45795fda3b5bb0ad1d3c628f6add5b2a4473a1414c1a232e80e70d1cfffd7f8a8d9861f8df2946999d7dbb56bf60113", + "0xb6659bf7f6f2fef61c39923e8c23b8c70e9c903028d8f62516d16755cd3fba2fe41c285aa9432dc75ab08f8a1d8a81fc", + "0xa735609a6bc5bfd85e58234fc439ff1f58f1ff1dd966c5921d8b649e21f006bf2b8642ad8a75063c159aaf6935789293", + "0xa3c622eb387c9d15e7bda2e3e84d007cb13a6d50d655c3f2f289758e49d3b37b9a35e4535d3cc53d8efd51f407281f19", + "0x8afe147b53ad99220f5ef9d763bfc91f9c20caecbcf823564236fb0e6ede49414c57d71eec4772c8715cc65a81af0047", + "0xb5f0203233cf71913951e9c9c4e10d9243e3e4a1f2cb235bf3f42009120ba96e04aa414c9938ea8873b63148478927e8", + "0x93c52493361b458d196172d7ba982a90a4f79f03aa8008edc322950de3ce6acf4c3977807a2ffa9e924047e02072b229", + "0xb9e72b805c8ac56503f4a86c82720afbd5c73654408a22a2ac0b2e5caccdfb0e20b59807433a6233bc97ae58cf14c70a", + "0xaf0475779b5cee278cca14c82da2a9f9c8ef222eb885e8c50cca2315fea420de6e04146590ed0dd5a29c0e0812964df5", + "0xb430ccab85690db02c2d0eb610f3197884ca12bc5f23c51e282bf3a6aa7e4a79222c3d8761454caf55d6c01a327595f9", + "0x830032937418b26ee6da9b5206f3e24dc76acd98589e37937e963a8333e5430abd6ce3dd93ef4b8997bd41440eed75d6", + "0x8820a6d73180f3fe255199f3f175c5eb770461ad5cfdde2fb11508041ed19b8c4ce66ad6ecebf7d7e836cc2318df47ca", + "0xaef1393e7d97278e77bbf52ef6e1c1d5db721ccf75fe753cf47a881fa034ca61eaa5098ee5a344c156d2b14ff9e284ad", + "0x8a4a26c07218948c1196c45d927ef4d2c42ade5e29fe7a91eaebe34a29900072ce5194cf28d51f746f4c4c649daf4396", + "0x84011dc150b7177abdcb715efbd8c201f9cb39c36e6069af5c50a096021768ba40cef45b659c70915af209f904ede3b6", + "0xb1bd90675411389bb66910b21a4bbb50edce5330850c5ab0b682393950124252766fc81f5ecfc72fb7184387238c402e", + "0x8dfdcd30583b696d2c7744655f79809f451a60c9ad5bf1226dc078b19f4585d7b3ef7fa9d54e1ac09520d95cbfd20928", + "0xb351b4dc6d98f75b8e5a48eb7c6f6e4b78451991c9ba630e5a1b9874c15ac450cd409c1a024713bf2cf82dc400e025ef", + "0xa462b8bc97ac668b97b28b3ae24b9f5de60e098d7b23ecb600d2194cd35827fb79f77c3e50d358f5bd72ee83fef18fa0", + "0xa183753265c5f7890270821880cce5f9b2965b115ba783c6dba9769536f57a04465d7da5049c7cf8b3fcf48146173c18", + "0xa8a771b81ed0d09e0da4d79f990e58eabcd2be3a2680419502dd592783fe52f657fe55125b385c41d0ba3b9b9cf54a83", + "0xa71ec577db46011689d073245e3b1c3222a9b1fe6aa5b83629adec5733dd48617ebea91346f0dd0e6cdaa86e4931b168", + "0xa334b8b244f0d598a02da6ae0f918a7857a54dce928376c4c85df15f3b0f2ba3ac321296b8b7c9dd47d770daf16c8f8c", + "0xa29037f8ef925c417c90c4df4f9fb27fb977d04e2b3dd5e8547d33e92ab72e7a00f5461de21e28835319eae5db145eb7", + "0xb91054108ae78b00e3298d667b913ebc44d8f26e531eae78a8fe26fdfb60271c97efb2dee5f47ef5a3c15c8228138927", + "0x926c13efbe90604f6244be9315a34f72a1f8d1aab7572df431998949c378cddbf2fe393502c930fff614ff06ae98a0ce", + "0x995c758fd5600e6537089b1baa4fbe0376ab274ff3e82a17768b40df6f91c2e443411de9cafa1e65ea88fb8b87d504f4", + "0x9245ba307a7a90847da75fca8d77ec03fdfc812c871e7a2529c56a0a79a6de16084258e7a9ac4ae8a3756f394336e21c", + "0x99e0cfa2bb57a7e624231317044c15e52196ecce020db567c8e8cb960354a0be9862ee0c128c60b44777e65ac315e59f", + "0xad4f6b3d27bbbb744126601053c3dc98c07ff0eb0b38a898bd80dce778372846d67e5ab8fb34fb3ad0ef3f235d77ba7f", + "0xa0f12cae3722bbbca2e539eb9cc7614632a2aefe51410430070a12b5bc5314ecec5857b7ff8f41e9980cac23064f7c56", + "0xb487f1bc59485848c98222fd3bc36c8c9bb3d2912e2911f4ceca32c840a7921477f9b1fe00877e05c96c75d3eecae061", + "0xa6033db53925654e18ecb3ce715715c36165d7035db9397087ac3a0585e587998a53973d011ac6d48af439493029cee6", + "0xa6b4d09cd01c70a3311fd131d3710ccf97bde3e7b80efd5a8c0eaeffeb48cca0f951ced905290267b115b06d46f2693b", + "0xa9dff1df0a8f4f218a98b6f818a693fb0d611fed0fc3143537cbd6578d479af13a653a8155e535548a2a0628ae24fa58", + "0xa58e469f65d366b519f9a394cacb7edaddac214463b7b6d62c2dbc1316e11c6c5184ce45c16de2d77f990dcdd8b55430", + "0x989e71734f8119103586dc9a3c5f5033ddc815a21018b34c1f876cdfc112efa868d5751bf6419323e4e59fa6a03ece1c", + "0xa2da00e05036c884369e04cf55f3de7d659cd5fa3f849092b2519dd263694efe0f051953d9d94b7e121f0aee8b6174d7", + "0x968f3c029f57ee31c4e1adea89a7f92e28483af9a74f30fbdb995dc2d40e8e657dff8f8d340d4a92bf65f54440f2859f", + "0x932778df6f60ac1639c1453ef0cbd2bf67592759dcccb3e96dcc743ff01679e4c7dd0ef2b0833dda548d32cb4eba49e2", + "0xa805a31139f8e0d6dae1ac87d454b23a3dc9fc653d4ca18d4f8ebab30fc189c16e73981c2cb7dd6f8c30454a5208109d", + "0xa9ba0991296caa2aaa4a1ceacfb205544c2a2ec97088eace1d84ee5e2767656a172f75d2f0c4e16a3640a0e0dec316e0", + "0xb1e49055c968dced47ec95ae934cf45023836d180702e20e2df57e0f62fb85d7ac60d657ba3ae13b8560b67210449459", + "0xa94e1da570a38809c71e37571066acabff7bf5632737c9ab6e4a32856924bf6211139ab3cedbf083850ff2d0e0c0fcfc", + "0x88ef1bb322000c5a5515b310c838c9af4c1cdbb32eab1c83ac3b2283191cd40e9573747d663763a28dad0d64adc13840", + "0xa987ce205f923100df0fbd5a85f22c9b99b9b9cbe6ddfa8dfda1b8fe95b4f71ff01d6c5b64ca02eb24edb2b255a14ef0", + "0x84fe8221a9e95d9178359918a108de4763ebfa7a6487facb9c963406882a08a9a93f492f8e77cf9e7ea41ae079c45993", + "0xaa1cf3dc7c5dcfa15bbbc811a4bb6dbac4fba4f97fb1ed344ab60264d7051f6eef19ea9773441d89929ee942ed089319", + "0x8f6a7d610d59d9f54689bbe6a41f92d9f6096cde919c1ab94c3c7fcecf0851423bc191e5612349e10f855121c0570f56", + "0xb5af1fa7894428a53ea520f260f3dc3726da245026b6d5d240625380bfb9c7c186df0204bb604efac5e613a70af5106e", + "0xa5bce6055ff812e72ce105f147147c7d48d7a2313884dd1f488b1240ee320f13e8a33f5441953a8e7a3209f65b673ce1", + "0xb9b55b4a1422677d95821e1d042ab81bbf0bf087496504021ec2e17e238c2ca6b44fb3b635a5c9eac0871a724b8d47c3", + "0x941c38e533ce4a673a3830845b56786585e5fe49c427f2e5c279fc6db08530c8f91db3e6c7822ec6bb4f956940052d18", + "0xa38e191d66c625f975313c7007bbe7431b5a06ed2da1290a7d5d0f2ec73770d476efd07b8e632de64597d47df175cbb0", + "0x94ba76b667abf055621db4c4145d18743a368d951565632ed4e743dd50dd3333507c0c34f286a5c5fdbf38191a2255cd", + "0xa5ca38c60be5602f2bfa6e00c687ac96ac36d517145018ddbee6f12eb0faa63dd57909b9eeed26085fe5ac44e55d10ab", + "0xb00fea3b825e60c1ed1c5deb4b551aa65a340e5af36b17d5262c9cd2c508711e4dc50dc2521a2c16c7c901902266e64a", + "0x971b86fc4033485e235ccb0997a236206ba25c6859075edbcdf3c943116a5030b7f75ebca9753d863a522ba21a215a90", + "0xb3b31f52370de246ee215400975b674f6da39b2f32514fe6bd54e747752eedca22bb840493b44a67df42a3639c5f901f", + "0xaffbbfac9c1ba7cbfa1839d2ae271dd6149869b75790bf103230637da41857fc326ef3552ff31c15bda0694080198143", + "0xa95d42aa7ef1962520845aa3688f2752d291926f7b0d73ea2ee24f0612c03b43f2b0fe3c9a9a99620ffc8d487b981bc2", + "0x914a266065caf64985e8c5b1cb2e3f4e3fe94d7d085a1881b1fefa435afef4e1b39a98551d096a62e4f5cc1a7f0fdc2e", + "0x81a0b4a96e2b75bc1bf2dbd165d58d55cfd259000a35504d1ffb18bc346a3e6f07602c683723864ffb980f840836fd8d", + "0x91c1556631cddd4c00b65b67962b39e4a33429029d311c8acf73a18600e362304fb68bccb56fde40f49e95b7829e0b87", + "0x8befbacc19e57f7c885d1b7a6028359eb3d80792fe13b92a8400df21ce48deb0bb60f2ddb50e3d74f39f85d7eab23adc", + "0x92f9458d674df6e990789690ec9ca73dacb67fc9255b58c417c555a8cc1208ace56e8e538f86ba0f3615573a0fbac00d", + "0xb4b1b3062512d6ae7417850c08c13f707d5838e43d48eb98dd4621baf62eee9e82348f80fe9b888a12874bfa538771f8", + "0xa13c4a3ac642ede37d9c883f5319e748d2b938f708c9d779714108a449b343f7b71a6e3ef4080fee125b416762920273", + "0xaf44983d5fc8cceee0551ef934e6e653f2d3efa385e5c8a27a272463a6f333e290378cc307c2b664eb923c78994e706e", + "0xa389fd6c59fe2b4031cc244e22d3991e541bd203dd5b5e73a6159e72df1ab41d49994961500dcde7989e945213184778", + "0x8d2141e4a17836c548de9598d7b298b03f0e6c73b7364979a411c464e0628e21cff6ac3d6decdba5d1c4909eff479761", + "0x980b22ef53b7bdf188a3f14bc51b0dbfdf9c758826daa3cbc1e3986022406a8aa9a6a79e400567120b88c67faa35ce5f", + "0xa28882f0a055f96df3711de5d0aa69473e71245f4f3e9aa944e9d1fb166e02caa50832e46da6d3a03b4801735fd01b29", + "0x8db106a37d7b88f5d995c126abb563934dd8de516af48e85695d02b1aea07f79217e3cdd03c6f5ca57421830186c772b", + "0xb5a7e50da0559a675c472f7dfaee456caab6695ab7870541b2be8c2b118c63752427184aad81f0e1afc61aef1f28c46f", + "0x9962118780e20fe291d10b64f28d09442a8e1b5cffd0f3dd68d980d0614050a626c616b44e9807fbee7accecae00686a", + "0xb38ddf33745e8d2ad6a991aefaf656a33c5f8cbe5d5b6b6fd03bd962153d8fd0e01b5f8f96d80ae53ab28d593ab1d4e7", + "0x857dc12c0544ff2c0c703761d901aba636415dee45618aba2e3454ff9cbc634a85c8b05565e88520ff9be2d097c8b2b1", + "0xa80d465c3f8cc63af6d74a6a5086b626c1cb4a8c0fee425964c3bd203d9d7094e299f81ce96d58afc20c8c9a029d9dae", + "0x89e1c8fbde8563763be483123a3ed702efac189c6d8ab4d16c85e74bbaf856048cc42d5d6e138633a38572ba5ec3f594", + "0x893a594cf495535f6d216508f8d03c317dcf03446668cba688da90f52d0111ac83d76ad09bf5ea47056846585ee5c791", + "0xaadbd8be0ae452f7f9450c7d2957598a20cbf10139a4023a78b4438172d62b18b0de39754dd2f8862dbd50a3a0815e53", + "0xae7d39670ecca3eb6db2095da2517a581b0e8853bdfef619b1fad9aacd443e7e6a40f18209fadd44038a55085c5fe8b2", + "0x866ef241520eacb6331593cfcb206f7409d2f33d04542e6e52cba5447934e02d44c471f6c9a45963f9307e9809ab91d9", + "0xb1a09911ad3864678f7be79a9c3c3eb5c84a0a45f8dcb52c67148f43439aeaaa9fd3ed3471276b7e588b49d6ebe3033a", + "0xadd07b7f0dbb34049cd8feeb3c18da5944bf706871cfd9f14ff72f6c59ad217ebb1f0258b13b167851929387e4e34cfe", + "0xae048892d5c328eefbdd4fba67d95901e3c14d974bfc0a1fc68155ca9f0d59e61d7ba17c6c9948b120cf35fd26e6fee9", + "0x9185b4f3b7da0ddb4e0d0f09b8a9e0d6943a4611e43f13c3e2a767ed8592d31e0ba3ebe1914026a3627680274291f6e5", + "0xa9c022d4e37b0802284ce3b7ee9258628ab4044f0db4de53d1c3efba9de19d15d65cc5e608dbe149c21c2af47d0b07b5", + "0xb24dbd5852f8f24921a4e27013b6c3fa8885b973266cb839b9c388efad95821d5d746348179dcc07542bd0d0aefad1ce", + "0xb5fb4f279300876a539a27a441348764908bc0051ebd66dc51739807305e73db3d2f6f0f294ffb91b508ab150eaf8527", + "0xace50841e718265b290c3483ed4b0fdd1175338c5f1f7530ae9a0e75d5f80216f4de37536adcbc8d8c95982e88808cd0", + "0xb19cadcde0f63bd1a9c24bd9c2806f53c14c0b9735bf351601498408ba503ddbd2037c891041cbba47f58b8c483f3b21", + "0xb6061e63558d312eb891b97b39aa552fa218568d79ee26fe6dd5b864aea9e3216d8f2e2f3b093503be274766dac41426", + "0x89730fdb2876ab6f0fe780d695f6e12090259027e789b819956d786e977518057e5d1d7f5ab24a3ae3d5d4c97773bd2b", + "0xb6fa841e81f9f2cad0163a02a63ae96dc341f7ae803b616efc6e1da2fbea551c1b96b11ad02c4afbdf6d0cc9f23da172", + "0x8fb66187182629c861ddb6896d7ed3caf2ad050c3dba8ab8eb0d7a2c924c3d44c48d1a148f9e33fb1f061b86972f8d21", + "0x86022ac339c1f84a7fa9e05358c1a5b316b4fc0b83dbe9c8c7225dc514f709d66490b539359b084ce776e301024345fa", + "0xb50b9c321468da950f01480bb62b6edafd42f83c0001d6e97f2bd523a1c49a0e8574fb66380ea28d23a7c4d54784f9f0", + "0xa31c05f7032f30d1dac06678be64d0250a071fd655e557400e4a7f4c152be4d5c7aa32529baf3e5be7c4bd49820054f6", + "0xb95ac0848cd322684772119f5b682d90a66bbf9dac411d9d86d2c34844bbd944dbaf8e47aa41380455abd51687931a78", + "0xae4a6a5ce9553b65a05f7935e61e496a4a0f6fd8203367a2c627394c9ce1e280750297b74cdc48fd1d9a31e93f97bef4", + "0xa22daf35f6e9b05e52e0b07f7bd1dbbebd2c263033fb0e1b2c804e2d964e2f11bc0ece6aca6af079dd3a9939c9c80674", + "0x902150e0cb1f16b9b59690db35281e28998ce275acb313900da8b2d8dfd29fa1795f8ca3ff820c31d0697de29df347c1", + "0xb17b5104a5dc665cdd7d47e476153d715eb78c6e5199303e4b5445c21a7fa7cf85fe7cfd08d7570f4e84e579b005428c", + "0xa03f49b81c15433f121680aa02d734bb9e363af2156654a62bcb5b2ba2218398ccb0ff61104ea5d7df5b16ea18623b1e", + "0x802101abd5d3c88876e75a27ffc2f9ddcce75e6b24f23dba03e5201281a7bd5cc7530b6a003be92d225093ca17d3c3bb", + "0xa4d183f63c1b4521a6b52226fc19106158fc8ea402461a5cccdaa35fee93669df6a8661f45c1750cd01308149b7bf08e", + "0x8d17c22e0c8403b69736364d460b3014775c591032604413d20a5096a94d4030d7c50b9fe3240e31d0311efcf9816a47", + "0x947225acfcce5992eab96276f668c3cbe5f298b90a59f2bb213be9997d8850919e8f496f182689b5cbd54084a7332482", + "0x8df6f4ed216fc8d1905e06163ba1c90d336ab991a18564b0169623eb39b84e627fa267397da15d3ed754d1f3423bff07", + "0x83480007a88f1a36dea464c32b849a3a999316044f12281e2e1c25f07d495f9b1710b4ba0d88e9560e72433addd50bc2", + "0xb3019d6e591cf5b33eb972e49e06c6d0a82a73a75d78d383dd6f6a4269838289e6e07c245f54fed67f5c9bb0fd5e1c5f", + "0x92e8ce05e94927a9fb02debadb99cf30a26172b2705003a2c0c47b3d8002bf1060edb0f6a5750aad827c98a656b19199", + "0xac2aff801448dbbfc13cca7d603fd9c69e82100d997faf11f465323b97255504f10c0c77401e4d1890339d8b224f5803", + "0xb0453d9903d08f508ee27e577445dc098baed6cde0ac984b42e0f0efed62760bd58d5816cf1e109d204607b7b175e30c", + "0xae68dc4ba5067e825d46d2c7c67f1009ceb49d68e8d3e4c57f4bcd299eb2de3575d42ea45e8722f8f28497a6e14a1cfe", + "0xb22486c2f5b51d72335ce819bbafb7fa25eb1c28a378a658f13f9fc79cd20083a7e573248d911231b45a5cf23b561ca7", + "0x89d1201d1dbd6921867341471488b4d2fd0fc773ae1d4d074c78ae2eb779a59b64c00452c2a0255826fca6b3d03be2b1", + "0xa2998977c91c7a53dc6104f5bc0a5b675e5350f835e2f0af69825db8af4aeb68435bdbcc795f3dd1f55e1dd50bc0507f", + "0xb0be4937a925b3c05056ed621910d535ccabf5ab99fd3b9335080b0e51d9607d0fd36cb5781ff340018f6acfca4a9736", + "0xaea145a0f6e0ba9df8e52e84bb9c9de2c2dc822f70d2724029b153eb68ee9c17de7d35063dcd6a39c37c59fdd12138f7", + "0x91cb4545d7165ee8ffbc74c874baceca11fdebbc7387908d1a25877ca3c57f2c5def424dab24148826832f1e880bede0", + "0xb3b579cb77573f19c571ad5eeeb21f65548d7dff9d298b8d7418c11f3e8cd3727c5b467f013cb87d6861cfaceee0d2e3", + "0xb98a1eeec2b19fecc8378c876d73645aa52fb99e4819903735b2c7a885b242787a30d1269a04bfb8573d72d9bbc5f0f0", + "0x940c1f01ed362bd588b950c27f8cc1d52276c71bb153d47f07ec85b038c11d9a8424b7904f424423e714454d5e80d1cd", + "0xaa343a8ecf09ce11599b8cf22f7279cf80f06dbf9f6d62cb05308dbbb39c46fd0a4a1240b032665fbb488a767379b91b", + "0x87c3ac72084aca5974599d3232e11d416348719e08443acaba2b328923af945031f86432e170dcdd103774ec92e988c9", + "0x91d6486eb5e61d2b9a9e742c20ec974a47627c6096b3da56209c2b4e4757f007e793ebb63b2b246857c9839b64dc0233", + "0xaebcd3257d295747dd6fc4ff910d839dd80c51c173ae59b8b2ec937747c2072fa85e3017f9060aa509af88dfc7529481", + "0xb3075ba6668ca04eff19efbfa3356b92f0ab12632dcda99cf8c655f35b7928c304218e0f9799d68ef9f809a1492ff7db", + "0x93ba7468bb325639ec2abd4d55179c69fd04eaaf39fc5340709227bbaa4ad0a54ea8b480a1a3c8d44684e3be0f8d1980", + "0xa6aef86c8c0d92839f38544d91b767c582568b391071228ff5a5a6b859c87bf4f81a7d926094a4ada1993ddbd677a920", + "0x91dcd6d14207aa569194aa224d1e5037b999b69ade52843315ca61ba26abe9a76412c9e88259bc5cf5d7b95b97d9c3bc", + "0xb3b483d31c88f78d49bd065893bc1e3d2aa637e27dedb46d9a7d60be7660ce7a10aaaa7deead362284a52e6d14021178", + "0x8e5730070acf8371461ef301cc4523e8e672aa0e3d945d438a0e0aa6bdf8cb9c685dcf38df429037b0c8aff3955c6f5b", + "0xb8c6d769890a8ee18dc4f9e917993315877c97549549b34785a92543cbeec96a08ae3a28d6e809c4aacd69de356c0012", + "0x95ca86cd384eaceaa7c077c5615736ca31f36824bd6451a16142a1edc129fa42b50724aeed7c738f08d7b157f78b569e", + "0x94df609c6d71e8eee7ab74226e371ccc77e01738fe0ef1a6424435b4570fe1e5d15797b66ed0f64eb88d4a3a37631f0e", + "0x89057b9783212add6a0690d6bb99097b182738deff2bd9e147d7fd7d6c8eacb4c219923633e6309ad993c24572289901", + "0x83a0f9f5f265c5a0e54defa87128240235e24498f20965009fef664f505a360b6fb4020f2742565dfc7746eb185bcec0", + "0x91170da5306128931349bc3ed50d7df0e48a68b8cc8420975170723ac79d8773e4fa13c5f14dc6e3fafcad78379050b1", + "0xb7178484d1b55f7e56a4cc250b6b2ec6040437d96bdfddfa7b35ed27435860f3855c2eb86c636f2911b012eb83b00db8", + "0xac0b00c4322d1e4208e09cd977b4e54d221133ff09551f75b32b0b55d0e2be80941dda26257b0e288c162e63c7e9cf68", + "0x9690ed9e7e53ed37ff362930e4096b878b12234c332fd19d5d064824084245952eda9f979e0098110d6963e468cf513e", + "0xb6fa547bb0bb83e5c5be0ed462a8783fba119041c136a250045c09d0d2af330c604331e7de960df976ff76d67f8000cd", + "0x814603907c21463bcf4e59cfb43066dfe1a50344ae04ef03c87c0f61b30836c3f4dea0851d6fa358c620045b7f9214c8", + "0x9495639e3939fad2a3df00a88603a5a180f3c3a0fe4d424c35060e2043e0921788003689887b1ed5be424d9a89bb18bb", + "0xaba4c02d8d57f2c92d5bc765885849e9ff8393d6554f5e5f3e907e5bfac041193a0d8716d7861104a4295d5a03c36b03", + "0x8ead0b56c1ca49723f94a998ba113b9058059321da72d9e395a667e6a63d5a9dac0f5717cec343f021695e8ced1f72af", + "0xb43037f7e3852c34ed918c5854cd74e9d5799eeddfe457d4f93bb494801a064735e326a76e1f5e50a339844a2f4a8ec9", + "0x99db8422bb7302199eb0ff3c3d08821f8c32f53a600c5b6fb43e41205d96adae72be5b460773d1280ad1acb806af9be8", + "0x8a9be08eae0086c0f020838925984df345c5512ff32e37120b644512b1d9d4fecf0fd30639ca90fc6cf334a86770d536", + "0x81b43614f1c28aa3713a309a88a782fb2bdfc4261dd52ddc204687791a40cf5fd6a263a8179388596582cccf0162efc2", + "0xa9f3a8b76912deb61d966c75daf5ddb868702ebec91bd4033471c8e533183df548742a81a2671de5be63a502d827437d", + "0x902e2415077f063e638207dc7e14109652e42ab47caccd6204e2870115791c9defac5425fd360b37ac0f7bd8fe7011f8", + "0xaa18e4fdc1381b59c18503ae6f6f2d6943445bd00dd7d4a2ad7e5adad7027f2263832690be30d456e6d772ad76f22350", + "0xa348b40ba3ba7d81c5d4631f038186ebd5e5f314f1ea737259151b07c3cc8cf0c6ed4201e71bcc1c22fefda81a20cde6", + "0xaa1306f7ac1acbfc47dc6f7a0cb6d03786cec8c8dc8060388ccda777bca24bdc634d03e53512c23dba79709ff64f8620", + "0x818ccfe46e700567b7f3eb400e5a35f6a5e39b3db3aa8bc07f58ace35d9ae5a242faf8dbccd08d9a9175bbce15612155", + "0xb7e3da2282b65dc8333592bb345a473f03bd6df69170055fec60222de9897184536bf22b9388b08160321144d0940279", + "0xa4d976be0f0568f4e57de1460a1729129252b44c552a69fceec44e5b97c96c711763360d11f9e5bf6d86b4976bf40d69", + "0x85d185f0397c24c2b875b09b6328a23b87982b84ee880f2677a22ff4c9a1ba9f0fea000bb3f7f66375a00d98ebafce17", + "0xb4ccbb8c3a2606bd9b87ce022704663af71d418351575f3b350d294f4efc68c26f9a2ce49ff81e6ff29c3b63d746294e", + "0x93ffd3265fddb63724dfde261d1f9e22f15ecf39df28e4d89e9fea03221e8e88b5dd9b77628bacaa783c6f91802d47cc", + "0xb1fd0f8d7a01378e693da98d03a2d2fda6b099d03454b6f2b1fa6472ff6bb092751ce6290059826b74ac0361eab00e1e", + "0xa89f440c71c561641589796994dd2769616b9088766e983c873fae0716b95c386c8483ab8a4f367b6a68b72b7456dd32", + "0xaf4fe92b01d42d03dd5d1e7fa55e96d4bbcb7bf7d4c8c197acd16b3e0f3455807199f683dcd263d74547ef9c244b35cc", + "0xa8227f6e0a344dfe76bfbe7a1861be32c4f4bed587ccce09f9ce2cf481b2dda8ae4f566154bc663d15f962f2d41761bd", + "0xa7b361663f7495939ed7f518ba45ea9ff576c4e628995b7aea026480c17a71d63fc2c922319f0502eb7ef8f14a406882", + "0x8ddcf382a9f39f75777160967c07012cfa89e67b19714a7191f0c68eaf263935e5504e1104aaabd0899348c972a8d3c6", + "0x98c95b9f6f5c91f805fb185eedd06c6fc4457d37dd248d0be45a6a168a70031715165ea20606245cbdf8815dc0ac697f", + "0x805b44f96e001e5909834f70c09be3efcd3b43632bcac5b6b66b6d227a03a758e4b1768ce2a723045681a1d34562aaeb", + "0xb0e81b07cdc45b3dca60882676d9badb99f25c461b7efe56e3043b80100bb62d29e1873ae25eb83087273160ece72a55", + "0xb0c53f0abe78ee86c7b78c82ae1f7c070bb0b9c45c563a8b3baa2c515d482d7507bb80771e60b38ac13f78b8af92b4a9", + "0xa7838ef6696a9e4d2e5dfd581f6c8d6a700467e8fd4e85adabb5f7a56f514785dd4ab64f6f1b48366f7d94728359441b", + "0x88c76f7700a1d23c30366a1d8612a796da57b2500f97f88fdf2d76b045a9d24e7426a8ffa2f4e86d3046937a841dad58", + "0xad8964baf98c1f02e088d1d9fcb3af6b1dfa44cdfe0ed2eae684e7187c33d3a3c28c38e8f4e015f9c04d451ed6f85ff6", + "0x90e9d00a098317ececaa9574da91fc149eda5b772dedb3e5a39636da6603aa007804fa86358550cfeff9be5a2cb7845e", + "0xa56ff4ddd73d9a6f5ab23bb77efa25977917df63571b269f6a999e1ad6681a88387fcc4ca3b26d57badf91b236503a29", + "0x97ad839a6302c410a47e245df84c01fb9c4dfef86751af3f9340e86ff8fc3cd52fa5ff0b9a0bd1d9f453e02ca80658a6", + "0xa4c8c44cbffa804129e123474854645107d1f0f463c45c30fd168848ebea94880f7c0c5a45183e9eb837f346270bdb35", + "0xa72e53d0a1586d736e86427a93569f52edd2f42b01e78aee7e1961c2b63522423877ae3ac1227a2cf1e69f8e1ff15bc3", + "0x8559f88a7ef13b4f09ac82ae458bbae6ab25671cfbf52dae7eac7280d6565dd3f0c3286aec1a56a8a16dc3b61d78ce47", + "0x8221503f4cdbed550876c5dc118a3f2f17800c04e8be000266633c83777b039a432d576f3a36c8a01e8fd18289ebc10b", + "0x99bfbe5f3e46d4d898a578ba86ed26de7ed23914bd3bcdf3c791c0bcd49398a52419077354a5ab75cea63b6c871c6e96", + "0xaa134416d8ff46f2acd866c1074af67566cfcf4e8be8d97329dfa0f603e1ff208488831ce5948ac8d75bfcba058ddcaa", + "0xb02609d65ebfe1fe8e52f21224a022ea4b5ea8c1bd6e7b9792eed8975fc387cdf9e3b419b8dd5bcce80703ab3a12a45f", + "0xa4f14798508698fa3852e5cac42a9db9797ecee7672a54988aa74037d334819aa7b2ac7b14efea6b81c509134a6b7ad2", + "0x884f01afecbcb987cb3e7c489c43155c416ed41340f61ecb651d8cba884fb9274f6d9e7e4a46dd220253ae561614e44c", + "0xa05523c9e71dce1fe5307cc71bd721feb3e1a0f57a7d17c7d1c9fb080d44527b7dbaa1f817b1af1c0b4322e37bc4bb1e", + "0x8560aec176a4242b39f39433dd5a02d554248c9e49d3179530815f5031fee78ba9c71a35ceeb2b9d1f04c3617c13d8f0", + "0x996aefd402748d8472477cae76d5a2b92e3f092fc834d5222ae50194dd884c9fb8b6ed8e5ccf8f6ed483ddbb4e80c747", + "0x8fd09900320000cbabc40e16893e2fcf08815d288ec19345ad7b6bb22f7d78a52b6575a3ca1ca2f8bc252d2eafc928ec", + "0x939e51f73022bc5dc6862a0adf8fb8a3246b7bfb9943cbb4b27c73743926cc20f615a036c7e5b90c80840e7f1bfee0e7", + "0xa0a6258700cadbb9e241f50766573bf9bdb7ad380b1079dc3afb4054363d838e177b869cad000314186936e40359b1f2", + "0x972699a4131c8ed27a2d0e2104d54a65a7ff1c450ad9da3a325c662ab26869c21b0a84d0700b98c8b5f6ce3b746873d7", + "0xa454c7fe870cb8aa6491eafbfb5f7872d6e696033f92e4991d057b59d70671f2acdabef533e229878b60c7fff8f748b1", + "0xa167969477214201f09c79027b10221e4707662e0c0fde81a0f628249f2f8a859ce3d30a7dcc03b8ecca8f7828ad85c7", + "0x8ff6b7265175beb8a63e1dbf18c9153fb2578c207c781282374f51b40d57a84fd2ef2ea2b9c6df4a54646788a62fd17f", + "0xa3d7ebeccde69d73d8b3e76af0da1a30884bb59729503ff0fb0c3bccf9221651b974a6e72ea33b7956fc3ae758226495", + "0xb71ef144c9a98ce5935620cb86c1590bd4f48e5a2815d25c0cdb008fde628cf628c31450d3d4f67abbfeb16178a74cfd", + "0xb5e0a16d115134f4e2503990e3f2035ed66b9ccf767063fe6747870d97d73b10bc76ed668550cb82eedc9a2ca6f75524", + "0xb30ffaaf94ee8cbc42aa2c413175b68afdb207dbf351fb20be3852cb7961b635c22838da97eaf43b103aff37e9e725cc", + "0x98aa7d52284f6c1f22e272fbddd8c8698cf8f5fbb702d5de96452141fafb559622815981e50b87a72c2b1190f59a7deb", + "0x81fbacda3905cfaf7780bb4850730c44166ed26a7c8d07197a5d4dcd969c09e94a0461638431476c16397dd7bdc449f9", + "0x95e47021c1726eac2e5853f570d6225332c6e48e04c9738690d53e07c6b979283ebae31e2af1fc9c9b3e59f87e5195b1", + "0xac024a661ba568426bb8fce21780406537f518075c066276197300841e811860696f7588188bc01d90bace7bc73d56e3", + "0xa4ebcaf668a888dd404988ab978594dee193dad2d0aec5cdc0ccaf4ec9a7a8228aa663db1da8ddc52ec8472178e40c32", + "0xa20421b8eaf2199d93b083f2aff37fb662670bd18689d046ae976d1db1fedd2c2ff897985ecc6277b396db7da68bcb27", + "0x8bc33d4b40197fd4d49d1de47489d10b90d9b346828f53a82256f3e9212b0cbc6930b895e879da9cec9fedf026aadb3e", + "0xaaafdd1bec8b757f55a0433eddc0a39f818591954fd4e982003437fcceb317423ad7ee74dbf17a2960380e7067a6b4e2", + "0xaad34277ebaed81a6ec154d16736866f95832803af28aa5625bf0461a71d02b1faba02d9d9e002be51c8356425a56867", + "0x976e9c8b150d08706079945bd0e84ab09a648ecc6f64ded9eb5329e57213149ae409ae93e8fbd8eda5b5c69f5212b883", + "0x8097fae1653247d2aed4111533bc378171d6b2c6d09cbc7baa9b52f188d150d645941f46d19f7f5e27b7f073c1ebd079", + "0x83905f93b250d3184eaba8ea7d727c4464b6bdb027e5cbe4f597d8b9dc741dcbea709630bd4fd59ce24023bec32fc0f3", + "0x8095030b7045cff28f34271386e4752f9a9a0312f8df75de4f424366d78534be2b8e1720a19cb1f9a2d21105d790a225", + "0xa7b7b73a6ae2ed1009c49960374b0790f93c74ee03b917642f33420498c188a169724945a975e5adec0a1e83e07fb1b2", + "0x856a41c54df393b6660b7f6354572a4e71c8bfca9cabaffb3d4ef2632c015e7ee2bc10056f3eccb3dbed1ad17d939178", + "0xa8f7a55cf04b38cd4e330394ee6589da3a07dc9673f74804fdf67b364e0b233f14aec42e783200a2e4666f7c5ff62490", + "0x82c529f4e543c6bca60016dc93232c115b359eaee2798a9cf669a654b800aafe6ab4ba58ea8b9cdda2b371c8d62fa845", + "0x8caab020c1baddce77a6794113ef1dfeafc5f5000f48e97f4351b588bf02f1f208101745463c480d37f588d5887e6d8c", + "0x8fa91b3cc400f48b77b6fd77f3b3fbfb3f10cdff408e1fd22d38f77e087b7683adad258804409ba099f1235b4b4d6fea", + "0x8aa02787663d6be9a35677d9d8188b725d5fcd770e61b11b64e3def8808ea5c71c0a9afd7f6630c48634546088fcd8e2", + "0xb5635b7b972e195cab878b97dea62237c7f77eb57298538582a330b1082f6207a359f2923864630136d8b1f27c41b9aa", + "0x8257bb14583551a65975946980c714ecd6e5b629672bb950b9caacd886fbd22704bc9e3ba7d30778adab65dc74f0203a", + "0xab5fe1cd12634bfa4e5c60d946e2005cbd38f1063ec9a5668994a2463c02449a0a185ef331bd86b68b6e23a8780cb3ba", + "0xa7d3487da56cda93570cc70215d438204f6a2709bfb5fda6c5df1e77e2efc80f4235c787e57fbf2c74aaff8cbb510a14", + "0xb61cff7b4c49d010e133319fb828eb900f8a7e55114fc86b39c261a339c74f630e1a7d7e1350244ada566a0ff3d46c4b", + "0x8d4d1d55d321d278db7a85522ccceca09510374ca81d4d73e3bb5249ace7674b73900c35a531ec4fa6448fabf7ad00dc", + "0x966492248aee24f0f56c8cfca3c8ec6ba3b19abb69ae642041d4c3be8523d22c65c4dafcab4c58989ccc4e0bd2f77919", + "0xb20c320a90cb220b86e1af651cdc1e21315cd215da69f6787e28157172f93fc8285dcd59b039c626ed8ca4633cba1a47", + "0xaae9e6b22f018ceb5c0950210bb8182cb8cb61014b7e14581a09d36ebd1bbfebdb2b82afb7fdb0cf75e58a293d9c456d", + "0x875547fb67951ad37b02466b79f0c9b985ccbc500cfb431b17823457dc79fb9597ec42cd9f198e15523fcd88652e63a4", + "0x92afce49773cb2e20fb21e4f86f18e0959ebb9c33361547ddb30454ee8e36b1e234019cbdca0e964cb292f7f77df6b90", + "0x8af85343dfe1821464c76ba11c216cbef697b5afc69c4d821342e55afdac047081ec2e3f7b09fc14b518d9a23b78c003", + "0xb7de4a1648fd63f3a918096ea669502af5357438e69dac77cb8102b6e6c15c76e033cfaa80dafc806e535ede5c1a20aa", + "0xac80e9b545e8bd762951d96c9ce87f629d01ffcde07efc2ef7879ca011f1d0d8a745abf26c9d452541008871304fac00", + "0xa4cf0f7ed724e481368016c38ea5816698a5f68eb21af4d3c422d2ba55f96a33e427c2aa40de1b56a7cfac7f7cf43ab0", + "0x899b0a678bb2db2cae1b44e75a661284844ebcdd87abf308fedeb2e4dbe5c5920c07db4db7284a7af806a2382e8b111a", + "0xaf0588a2a4afce2b1b13c1230816f59e8264177e774e4a341b289a101dcf6af813638fed14fb4d09cb45f35d5d032609", + "0xa4b8df79e2be76e9f5fc5845f06fe745a724cf37c82fcdb72719b77bdebea3c0e763f37909373e3a94480cc5e875cba0", + "0x83e42c46d88930c8f386b19fd999288f142d325e2ebc86a74907d6d77112cb0d449bc511c95422cc810574031a8cbba9", + "0xb5e39534070de1e5f6e27efbdd3dc917d966c2a9b8cf2d893f964256e95e954330f2442027dc148c776d63a95bcde955", + "0x958607569dc28c075e658cd4ae3927055c6bc456eef6212a6fea8205e48ed8777a8064f584cda38fe5639c371e2e7fba", + "0x812adf409fa63575113662966f5078a903212ffb65c9b0bbe62da0f13a133443a7062cb8fd70f5e5dd5559a32c26d2c8", + "0xa679f673e5ce6a3cce7fa31f22ee3785e96bcb55e5a776e2dd3467bef7440e3555d1a9b87cb215e86ee9ed13a090344b", + "0xafedbb34508b159eb25eb2248d7fe328f86ef8c7d84c62d5b5607d74aae27cc2cc45ee148eb22153b09898a835c58df4", + "0xb75505d4f6b67d31e665cfaf5e4acdb5838ae069166b7fbcd48937c0608a59e40a25302fcc1873d2e81c1782808c70f0", + "0xb62515d539ec21a155d94fc00ea3c6b7e5f6636937bce18ed5b618c12257fb82571886287fd5d1da495296c663ebc512", + "0xab8e1a9446bbdd588d1690243b1549d230e6149c28f59662b66a8391a138d37ab594df38e7720fae53217e5c3573b5be", + "0xb31e8abf4212e03c3287bb2c0a153065a7290a16764a0bac8f112a72e632185a654bb4e88fdd6053e6c7515d9719fadb", + "0xb55165477fe15b6abd2d0f4fddaa9c411710dcc4dd712daba3d30e303c9a3ee5415c256f9dc917ecf18c725b4dbab059", + "0xa0939d4f57cacaae549b78e87cc234de4ff6a35dc0d9cd5d7410abc30ebcd34c135e008651c756e5a9d2ca79c40ef42b", + "0x8cf10e50769f3443340844aad4d56ec790850fed5a41fcbd739abac4c3015f0a085a038fbe7fae9f5ad899cce5069f6b", + "0x924055e804d82a99ea4bb160041ea4dc14b568abf379010bc1922fde5d664718c31d103b8b807e3a1ae809390e708c73", + "0x8ec0f9d26f71b0f2e60a179e4fd1778452e2ffb129d50815e5d7c7cb9415fa69ae5890578086e8ef6bfde35ad2a74661", + "0x98c7f12b15ec4426b59f737f73bf5faea4572340f4550b7590dfb7f7ffedb2372e3e555977c63946d579544c53210ad0", + "0x8a935f7a955c78f69d66f18eee0092e5e833fa621781c9581058e219af4d7ceee48b84e472e159dda6199715fb2f9acf", + "0xb78d4219f95a2dbfaa7d0c8a610c57c358754f4f43c2af312ab0fe8f10a5f0177e475332fb8fd23604e474fc2abeb051", + "0x8d086a14803392b7318c28f1039a17e3cfdcece8abcaca3657ec3d0ac330842098a85c0212f889fabb296dfb133ce9aa", + "0xa53249f417aac82f2c2a50c244ce21d3e08a5e5a8bd33bec2a5ab0d6cd17793e34a17edfa3690899244ce201e2fb9986", + "0x8619b0264f9182867a1425be514dc4f1ababc1093138a728a28bd7e4ecc99b9faaff68c23792264bc6e4dce5f52a5c52", + "0x8c171edbbbde551ec19e31b2091eb6956107dd9b1f853e1df23bff3c10a3469ac77a58335eee2b79112502e8e163f3de", + "0xa9d19ec40f0ca07c238e9337c6d6a319190bdba2db76fb63902f3fb459aeeb50a1ac30db5b25ee1b4201f3ca7164a7f4", + "0xb9c6ec14b1581a03520b8d2c1fbbc31fb8ceaef2c0f1a0d0080b6b96e18442f1734bea7ef7b635d787c691de4765d469", + "0x8cb437beb4cfa013096f40ccc169a713dc17afee6daa229a398e45fd5c0645a9ad2795c3f0cd439531a7151945d7064d", + "0xa6e8740cc509126e146775157c2eb278003e5bb6c48465c160ed27888ca803fa12eee1f6a8dd7f444f571664ed87fdc1", + "0xb75c1fecc85b2732e96b3f23aefb491dbd0206a21d682aee0225838dc057d7ed3b576176353e8e90ae55663f79e986e4", + "0xad8d249b0aea9597b08358bce6c77c1fd552ef3fbc197d6a1cfe44e5e6f89b628b12a6fb04d5dcfcbacc51f46e4ae7bb", + "0xb998b2269932cbd58d04b8e898d373ac4bb1a62e8567484f4f83e224061bc0f212459f1daae95abdbc63816ae6486a55", + "0x827988ef6c1101cddc96b98f4a30365ff08eea2471dd949d2c0a9b35c3bbfa8c07054ad1f4c88c8fbf829b20bb5a9a4f", + "0x8692e638dd60babf7d9f2f2d2ce58e0ac689e1326d88311416357298c6a2bffbfebf55d5253563e7b3fbbf5072264146", + "0xa685d75b91aea04dbc14ab3c1b1588e6de96dae414c8e37b8388766029631b28dd860688079b12d09cd27f2c5af11adf", + "0xb57eced93eec3371c56679c259b34ac0992286be4f4ff9489d81cf9712403509932e47404ddd86f89d7c1c3b6391b28c", + "0xa1c8b4e42ebcbd8927669a97f1b72e236fb19249325659e72be7ddaaa1d9e81ca2abb643295d41a8c04a2c01f9c0efd7", + "0x877c33de20d4ed31674a671ba3e8f01a316581e32503136a70c9c15bf0b7cb7b1cba6cd4eb641fad165fb3c3c6c235fd", + "0xa2a469d84ec478da40838f775d11ad38f6596eb41caa139cc190d6a10b5108c09febae34ffdafac92271d2e73c143693", + "0x972f817caedb254055d52e963ed28c206848b6c4cfdb69dbc961c891f8458eaf582a6d4403ce1177d87bc2ea410ef60a", + "0xaccbd739e138007422f28536381decc54bb6bd71d93edf3890e54f9ef339f83d2821697d1a4ac1f5a98175f9a9ecb9b5", + "0x8940f8772e05389f823b62b3adc3ed541f91647f0318d7a0d3f293aeeb421013de0d0a3664ea53dd24e5fbe02d7efef6", + "0x8ecce20f3ef6212edef07ec4d6183fda8e0e8cad2c6ccd0b325e75c425ee1faba00b5c26b4d95204238931598d78f49d", + "0x97cc72c36335bd008afbed34a3b0c7225933faba87f7916d0a6d2161e6f82e0cdcda7959573a366f638ca75d30e9dab1", + "0x9105f5de8699b5bdb6bd3bb6cc1992d1eac23929c29837985f83b22efdda92af64d9c574aa9640475087201bbbe5fd73", + "0x8ffb33c4f6d05c413b9647eb6933526a350ed2e4278ca2ecc06b0e8026d8dbe829c476a40e45a6df63a633090a3f82ef", + "0x8bfc6421fdc9c2d2aaa68d2a69b1a2728c25b84944cc3e6a57ff0c94bfd210d1cbf4ff3f06702d2a8257024d8be7de63", + "0xa80e1dc1dddfb41a70220939b96dc6935e00b32fb8be5dff4eed1f1c650002ff95e4af481c43292e3827363b7ec4768a", + "0x96f714ebd54617198bd636ba7f7a7f8995a61db20962f2165078d9ed8ee764d5946ef3cbdc7ebf8435bb8d5dd4c1deac", + "0x8cdb0890e33144d66391d2ae73f5c71f5a861f72bc93bff6cc399fc25dd1f9e17d8772592b44593429718784802ac377", + "0x8ccf9a7f80800ee770b92add734ed45a73ecc31e2af0e04364eefc6056a8223834c7c0dc9dfc52495bdec6e74ce69994", + "0xaa0875f423bd68b5f10ba978ddb79d3b96ec093bfbac9ff366323193e339ed7c4578760fb60f60e93598bdf1e5cc4995", + "0xa9214f523957b59c7a4cb61a40251ad72aba0b57573163b0dc0f33e41d2df483fb9a1b85a5e7c080e9376c866790f8cb", + "0xb6224b605028c6673a536cc8ff9aeb94e7a22e686fda82cf16068d326469172f511219b68b2b3affb7933af0c1f80d07", + "0xb6d58968d8a017c6a34e24c2c09852f736515a2c50f37232ac6b43a38f8faa7572cc31dade543b594b61b5761c4781d0", + "0x8a97cefe5120020c38deeb861d394404e6c993c6cbd5989b6c9ebffe24f46ad11b4ba6348e2991cbf3949c28cfc3c99d", + "0x95bf046f8c3a9c0ce2634be4de3713024daec3fc4083e808903b25ce3ac971145af90686b451efcc72f6b22df0216667", + "0xa6a4e2f71b8fa28801f553231eff2794c0f10d12e7e414276995e21195abc9c2983a8997e41af41e78d19ff6fbb2680b", + "0x8e5e62a7ca9c2f58ebaab63db2ff1fb1ff0877ae94b7f5e2897f273f684ae639dff44cc65718f78a9c894787602ab26a", + "0x8542784383eec4f565fcb8b9fc2ad8d7a644267d8d7612a0f476fc8df3aff458897a38003d506d24142ad18f93554f2b", + "0xb7db68ba4616ea072b37925ec4fb39096358c2832cc6d35169e032326b2d6614479f765ae98913c267105b84afcb9bf2", + "0x8b31dbb9457d23d416c47542c786e07a489af35c4a87dadb8ee91bea5ac4a5315e65625d78dad2cf8f9561af31b45390", + "0xa8545a1d91ac17257732033d89e6b7111db8242e9c6ebb0213a88906d5ef407a2c6fdb444e29504b06368b6efb4f4839", + "0xb1bd85d29ebb28ccfb05779aad8674906b267c2bf8cdb1f9a0591dd621b53a4ee9f2942687ee3476740c0b4a7621a3ae", + "0xa2b54534e152e46c50d91fff03ae9cd019ff7cd9f4168b2fe7ac08ef8c3bbc134cadd3f9d6bd33d20ae476c2a8596c8a", + "0xb19b571ff4ae3e9f5d95acda133c455e72c9ea9973cae360732859836c0341c4c29ab039224dc5bc3deb824e031675d8", + "0x940b5f80478648bac025a30f3efeb47023ce20ee98be833948a248bca6979f206bb28fc0f17b90acf3bb4abd3d14d731", + "0x8f106b40588586ac11629b96d57808ad2808915d89539409c97414aded90b4ff23286a692608230a52bff696055ba5d6", + "0xae6bda03aa10da3d2abbc66d764ca6c8d0993e7304a1bdd413eb9622f3ca1913baa6da1e9f4f9e6cf847f14f44d6924d", + "0xa18e7796054a340ef826c4d6b5a117b80927afaf2ebd547794c400204ae2caf277692e2eabb55bc2f620763c9e9da66d", + "0x8d2d25180dc2c65a4844d3e66819ccfcf48858f0cc89e1c77553b463ec0f7feb9a4002ce26bc618d1142549b9850f232", + "0x863f413a394de42cc8166c1c75d513b91d545fff1de6b359037a742c70b008d34bf8e587afa2d62c844d0c6f0ea753e7", + "0x83cd0cf62d63475e7fcad18a2e74108499cdbf28af2113cfe005e3b5887794422da450b1944d0a986eb7e1f4c3b18f25", + "0xb4f8b350a6d88fea5ab2e44715a292efb12eb52df738c9b2393da3f1ddee68d0a75b476733ccf93642154bceb208f2b8", + "0xb3f52aaa4cd4221cb9fc45936cc67fd3864bf6d26bf3dd86aa85aa55ecfc05f5e392ecce5e7cf9406b4b1c4fce0398c8", + "0xb33137084422fb643123f40a6df2b498065e65230fc65dc31791c330e898c51c3a65ff738930f32c63d78f3c9315f85b", + "0x91452bfa75019363976bb7337fe3a73f1c10f01637428c135536b0cdc7da5ce558dae3dfc792aa55022292600814a8ef", + "0xad6ba94c787cd4361ca642c20793ea44f1f127d4de0bb4a77c7fbfebae0fcadbf28e2cb6f0c12c12a07324ec8c19761d", + "0x890aa6248b17f1501b0f869c556be7bf2b1d31a176f9978bb97ab7a6bd4138eed32467951c5ef1871944b7f620542f43", + "0x82111db2052194ee7dd22ff1eafffac0443cf969d3762cceae046c9a11561c0fdce9c0711f88ac01d1bed165f8a7cee3", + "0xb1527b71df2b42b55832f72e772a466e0fa05743aacc7814f4414e4bcc8d42a4010c9e0fd940e6f254cafedff3cd6543", + "0x922370fa49903679fc565f09c16a5917f8125e72acfeb060fcdbadbd1644eb9f4016229756019c93c6d609cda5d5d174", + "0xaa4c7d98a96cab138d2a53d4aee8ebff6ef903e3b629a92519608d88b3bbd94de5522291a1097e6acf830270e64c8ee1", + "0xb3dc21608a389a72d3a752883a382baaafc61ecc44083b832610a237f6a2363f24195acce529eb4aed4ef0e27a12b66e", + "0x94619f5de05e07b32291e1d7ab1d8b7337a2235e49d4fb5f3055f090a65e932e829efa95db886b32b153bdd05a53ec8c", + "0xade1e92722c2ffa85865d2426fb3d1654a16477d3abf580cfc45ea4b92d5668afc9d09275d3b79283e13e6b39e47424d", + "0xb7201589de7bed094911dd62fcd25c459a8e327ac447b69f541cdba30233063e5ddffad0b67e9c3e34adcffedfd0e13d", + "0x809d325310f862d6549e7cb40f7e5fc9b7544bd751dd28c4f363c724a0378c0e2adcb5e42ec8f912f5f49f18f3365c07", + "0xa79c20aa533de7a5d671c99eb9eb454803ba54dd4f2efa3c8fec1a38f8308e9905c71e9282955225f686146388506ff6", + "0xa85eeacb5e8fc9f3ed06a3fe2dc3108ab9f8c5877b148c73cf26e4e979bf5795edbe2e63a8d452565fd1176ed40402b2", + "0x97ef55662f8a1ec0842b22ee21391227540adf7708f491436044f3a2eb18c471525e78e1e14fa292507c99d74d7437c6", + "0x93110d64ed5886f3d16ce83b11425576a3a7a9bb831cd0de3f9a0b0f2270a730d68136b4ef7ff035ede004358f419b5c", + "0xac9ed0a071517f0ae4f61ce95916a90ba9a77a3f84b0ec50ef7298acdcd44d1b94525d191c39d6bd1bb68f4471428760", + "0x98abd6a02c7690f5a339adf292b8c9368dfc12e0f8069cf26a5e0ce54b4441638f5c66ea735142f3c28e00a0024267e6", + "0xb51efb73ba6d44146f047d69b19c0722227a7748b0e8f644d0fc9551324cf034c041a2378c56ce8b58d06038fb8a78de", + "0x8f115af274ef75c1662b588b0896b97d71f8d67986ae846792702c4742ab855952865ce236b27e2321967ce36ff93357", + "0xb3c4548f14d58b3ab03c222da09e4381a0afe47a72d18d50a94e0008797f78e39e99990e5b4757be62310d400746e35a", + "0xa9b1883bd5f31f909b8b1b6dcb48c1c60ed20aa7374b3ffa7f5b2ed036599b5bef33289d23c80a5e6420d191723b92f7", + "0x85d38dffd99487ae5bb41ab4a44d80a46157bbbe8ef9497e68f061721f74e4da513ccc3422936b059575975f6787c936", + "0xadf870fcb96e972c033ab7a35d28ae79ee795f82bc49c3bd69138f0e338103118d5529c53f2d72a9c0d947bf7d312af2", + "0xab4c7a44e2d9446c6ff303eb49aef0e367a58b22cc3bb27b4e69b55d1d9ee639c9234148d2ee95f9ca8079b1457d5a75", + "0xa386420b738aba2d7145eb4cba6d643d96bda3f2ca55bb11980b318d43b289d55a108f4bc23a9606fb0bccdeb3b3bb30", + "0x847020e0a440d9c4109773ecca5d8268b44d523389993b1f5e60e541187f7c597d79ebd6e318871815e26c96b4a4dbb1", + "0xa530aa7e5ca86fcd1bec4b072b55cc793781f38a666c2033b510a69e110eeabb54c7d8cbcb9c61fee531a6f635ffa972", + "0x87364a5ea1d270632a44269d686b2402da737948dac27f51b7a97af80b66728b0256547a5103d2227005541ca4b7ed04", + "0x8816fc6e16ea277de93a6d793d0eb5c15e9e93eb958c5ef30adaf8241805adeb4da8ce19c3c2167f971f61e0b361077d", + "0x8836a72d301c42510367181bb091e4be377777aed57b73c29ef2ce1d475feedd7e0f31676284d9a94f6db01cc4de81a2", + "0xb0d9d8b7116156d9dde138d28aa05a33e61f8a85839c1e9071ccd517b46a5b4b53acb32c2edd7150c15bc1b4bd8db9e3", + "0xae931b6eaeda790ba7f1cd674e53dc87f6306ff44951fa0df88d506316a5da240df9794ccbd7215a6470e6b31c5ea193", + "0x8c6d5bdf87bd7f645419d7c6444e244fe054d437ed1ba0c122fde7800603a5fadc061e5b836cb22a6cfb2b466f20f013", + "0x90d530c6d0cb654999fa771b8d11d723f54b8a8233d1052dc1e839ea6e314fbed3697084601f3e9bbb71d2b4eaa596df", + "0xb0d341a1422588c983f767b1ed36c18b141774f67ef6a43cff8e18b73a009da10fc12120938b8bba27f225bdfd3138f9", + "0xa131b56f9537f460d304e9a1dd75702ace8abd68cb45419695cb8dee76998139058336c87b7afd6239dc20d7f8f940cc", + "0xaa6c51fa28975f709329adee1bbd35d49c6b878041841a94465e8218338e4371f5cb6c17f44a63ac93644bf28f15d20f", + "0x88440fb584a99ebd7f9ea04aaf622f6e44e2b43bbb49fb5de548d24a238dc8f26c8da2ccf03dd43102bda9f16623f609", + "0x9777b8695b790e702159a4a750d5e7ff865425b95fa0a3c15495af385b91c90c00a6bd01d1b77bffe8c47d01baae846f", + "0x8b9d764ece7799079e63c7f01690c8eff00896a26a0d095773dea7a35967a8c40db7a6a74692f0118bf0460c26739af4", + "0x85808c65c485520609c9e61fa1bb67b28f4611d3608a9f7a5030ee61c3aa3c7e7dc17fff48af76b4aecee2cb0dbd22ac", + "0xad2783a76f5b3db008ef5f7e67391fda4e7e36abde6b3b089fc4835b5c339370287935af6bd53998bed4e399eda1136d", + "0x96f18ec03ae47c205cc4242ca58e2eff185c9dca86d5158817e2e5dc2207ab84aadda78725f8dc080a231efdc093b940", + "0x97de1ab6c6cc646ae60cf7b86df73b9cf56cc0cd1f31b966951ebf79fc153531af55ca643b20b773daa7cab784b832f7", + "0x870ba266a9bfa86ef644b1ef025a0f1b7609a60de170fe9508de8fd53170c0b48adb37f19397ee8019b041ce29a16576", + "0xad990e888d279ac4e8db90619d663d5ae027f994a3992c2fbc7d262b5990ae8a243e19157f3565671d1cb0de17fe6e55", + "0x8d9d5adcdd94c5ba3be4d9a7428133b42e485f040a28d16ee2384758e87d35528f7f9868de9bd23d1a42a594ce50a567", + "0x85a33ed75d514ece6ad78440e42f7fcdb59b6f4cff821188236d20edae9050b3a042ce9bc7d2054296e133d033e45022", + "0x92afd2f49a124aaba90de59be85ff269457f982b54c91b06650c1b8055f9b4b0640fd378df02a00e4fc91f7d226ab980", + "0x8c0ee09ec64bd831e544785e3d65418fe83ed9c920d9bb4d0bf6dd162c1264eb9d6652d2def0722e223915615931581c", + "0x8369bedfa17b24e9ad48ebd9c5afea4b66b3296d5770e09b00446c5b0a8a373d39d300780c01dcc1c6752792bccf5fd0", + "0x8b9e960782576a59b2eb2250d346030daa50bbbec114e95cdb9e4b1ba18c3d34525ae388f859708131984976ca439d94", + "0xb682bface862008fea2b5a07812ca6a28a58fd151a1d54c708fc2f8572916e0d678a9cb8dc1c10c0470025c8a605249e", + "0xa38d5e189bea540a824b36815fc41e3750760a52be0862c4cac68214febdc1a754fb194a7415a8fb7f96f6836196d82a", + "0xb9e7fbda650f18c7eb8b40e42cc42273a7298e65e8be524292369581861075c55299ce69309710e5b843cb884de171bd", + "0xb6657e5e31b3193874a1bace08f42faccbd3c502fb73ad87d15d18a1b6c2a146f1baa929e6f517db390a5a47b66c0acf", + "0xae15487312f84ed6265e4c28327d24a8a0f4d2d17d4a5b7c29b974139cf93223435aaebe3af918f5b4bb20911799715f", + "0x8bb4608beb06bc394e1a70739b872ce5a2a3ffc98c7547bf2698c893ca399d6c13686f6663f483894bccaabc3b9c56ad", + "0xb58ac36bc6847077584308d952c5f3663e3001af5ecf2e19cb162e1c58bd6c49510205d453cffc876ca1dc6b8e04a578", + "0x924f65ced61266a79a671ffb49b300f0ea44c50a0b4e3b02064faa99fcc3e4f6061ea8f38168ab118c5d47bd7804590e", + "0x8d67d43b8a06b0ff4fafd7f0483fa9ed1a9e3e658a03fb49d9d9b74e2e24858dc1bed065c12392037b467f255d4e5643", + "0xb4d4f87813125a6b355e4519a81657fa97c43a6115817b819a6caf4823f1d6a1169683fd68f8d025cdfa40ebf3069acb", + "0xa7fd4d2c8e7b59b8eed3d4332ae94b77a89a2616347402f880bc81bde072220131e6dbec8a605be3a1c760b775375879", + "0x8d4a7d8fa6f55a30df37bcf74952e2fa4fd6676a2e4606185cf154bdd84643fd01619f8fb8813a564f72e3f574f8ce30", + "0x8086fb88e6260e9a9c42e9560fde76315ff5e5680ec7140f2a18438f15bc2cc7d7d43bfb5880b180b738c20a834e6134", + "0x916c4c54721de03934fee6f43de50bb04c81f6f8dd4f6781e159e71c40c60408aa54251d457369d133d4ba3ed7c12cb4", + "0x902e5bf468f11ed9954e2a4a595c27e34abe512f1d6dc08bbca1c2441063f9af3dc5a8075ab910a10ff6c05c1c644a35", + "0xa1302953015e164bf4c15f7d4d35e3633425a78294406b861675667eec77765ff88472306531e5d3a4ec0a2ff0dd6a9e", + "0x87874461df3c9aa6c0fa91325576c0590f367075f2f0ecfeb34afe162c04c14f8ce9d608c37ac1adc8b9985bc036e366", + "0x84b50a8a61d3cc609bfb0417348133e698fe09a6d37357ce3358de189efcf35773d78c57635c2d26c3542b13cc371752", + "0xacaed2cff8633d12c1d12bb7270c54d65b0b0733ab084fd47f81d0a6e1e9b6f300e615e79538239e6160c566d8bb8d29", + "0x889e6a0e136372ca4bac90d1ab220d4e1cad425a710e8cdd48b400b73bb8137291ceb36a39440fa84305783b1d42c72f", + "0x90952e5becec45b2b73719c228429a2c364991cf1d5a9d6845ae5b38018c2626f4308daa322cab1c72e0f6c621bb2b35", + "0x8f5a97a801b6e9dcd66ccb80d337562c96f7914e7169e8ff0fda71534054c64bf2a9493bb830623d612cfe998789be65", + "0x84f3df8b9847dcf1d63ca470dc623154898f83c25a6983e9b78c6d2d90a97bf5e622445be835f32c1e55e6a0a562ea78", + "0x91d12095cd7a88e7f57f254f02fdb1a1ab18984871dead2f107404bcf8069fe68258c4e6f6ebd2477bddf738135400bb", + "0xb771a28bc04baef68604d4723791d3712f82b5e4fe316d7adc2fc01b935d8e644c06d59b83bcb542afc40ebafbee0683", + "0x872f6341476e387604a7e93ae6d6117e72d164e38ebc2b825bc6df4fcce815004d7516423c190c1575946b5de438c08d", + "0x90d6b4aa7d40a020cdcd04e8b016d041795961a8e532a0e1f4041252131089114a251791bf57794cadb7d636342f5d1c", + "0x899023ba6096a181448d927fed7a0fe858be4eac4082a42e30b3050ee065278d72fa9b9d5ce3bc1372d4cbd30a2f2976", + "0xa28f176571e1a9124f95973f414d5bdbf5794d41c3839d8b917100902ac4e2171eb940431236cec93928a60a77ede793", + "0x838dbe5bcd29c4e465d02350270fa0036cd46f8730b13d91e77afb7f5ed16525d0021d3b2ae173a76c378516a903e0cb", + "0x8e105d012dd3f5d20f0f1c4a7e7f09f0fdd74ce554c3032e48da8cce0a77260d7d47a454851387770f5c256fa29bcb88", + "0x8f4df0f9feeb7a487e1d138d13ea961459a6402fd8f8cabb226a92249a0d04ded5971f3242b9f90d08da5ff66da28af6", + "0xad1cfda4f2122a20935aa32fb17c536a3653a18617a65c6836700b5537122af5a8206befe9eaea781c1244c43778e7f1", + "0x832c6f01d6571964ea383292efc8c8fa11e61c0634a25fa180737cc7ab57bc77f25e614aac9a2a03d98f27b3c1c29de2", + "0x903f89cc13ec6685ac7728521898781fecb300e9094ef913d530bf875c18bcc3ceed7ed51e7b482d45619ab4b025c2e9", + "0xa03c474bb915aad94f171e8d96f46abb2a19c9470601f4c915512ec8b9e743c3938450a2a5b077b4618b9df8809e1dc1", + "0x83536c8456f306045a5f38ae4be2e350878fa7e164ea408d467f8c3bc4c2ee396bd5868008c089183868e4dfad7aa50b", + "0x88f26b4ea1b236cb326cd7ad7e2517ec8c4919598691474fe15d09cabcfc37a8d8b1b818f4d112432ee3a716b0f37871", + "0xa44324e3fe96e9c12b40ded4f0f3397c8c7ee8ff5e96441118d8a6bfad712d3ac990b2a6a23231a8f691491ac1fd480f", + "0xb0de4693b4b9f932191a21ee88629964878680152a82996c0019ffc39f8d9369bbe2fe5844b68d6d9589ace54af947e4", + "0x8e5d8ba948aea5fd26035351a960e87f0d23efddd8e13236cc8e4545a3dda2e9a85e6521efb8577e03772d3637d213d9", + "0x93efc82d2017e9c57834a1246463e64774e56183bb247c8fc9dd98c56817e878d97b05f5c8d900acf1fbbbca6f146556", + "0x8731176363ad7658a2862426ee47a5dce9434216cef60e6045fa57c40bb3ce1e78dac4510ae40f1f31db5967022ced32", + "0xb10c9a96745722c85bdb1a693100104d560433d45b9ac4add54c7646a7310d8e9b3ca9abd1039d473ae768a18e489845", + "0xa2ac374dfbb464bf850b4a2caf15b112634a6428e8395f9c9243baefd2452b4b4c61b0cb2836d8eae2d57d4900bf407e", + "0xb69fe3ded0c4f5d44a09a0e0f398221b6d1bf5dbb8bc4e338b93c64f1a3cac1e4b5f73c2b8117158030ec03787f4b452", + "0x8852cdbaf7d0447a8c6f211b4830711b3b5c105c0f316e3a6a18dcfbb9be08bd6f4e5c8ae0c3692da08a2dfa532f9d5c", + "0x93bbf6d7432a7d98ade3f94b57bf9f4da9bc221a180a370b113066dd42601bb9e09edd79e2e6e04e00423399339eebda", + "0xa80941c391f1eeafc1451c59e4775d6a383946ff22997aeaadf806542ba451d3b0f0c6864eeba954174a296efe2c1550", + "0xa045fe2bb011c2a2f71a0181a8f457a3078470fb74c628eab8b59aef69ffd0d649723bf74d6885af3f028bc5a104fb39", + "0xb9d8c35911009c4c8cad64692139bf3fc16b78f5a19980790cb6a7aea650a25df4231a4437ae0c351676a7e42c16134f", + "0x94c79501ded0cfcbab99e1841abe4a00a0252b3870e20774c3da16c982d74c501916ec28304e71194845be6e3113c7ab", + "0x900a66418b082a24c6348d8644ddb1817df5b25cb33044a519ef47cc8e1f7f1e38d2465b7b96d32ed472d2d17f8414c6", + "0xb26f45d393b8b2fcb29bdbb16323dc7f4b81c09618519ab3a39f8ee5bd148d0d9f3c0b5dfab55b5ce14a1cb9206d777b", + "0xaa1a87735fc493a80a96a9a57ca40a6d9c32702bfcaa9869ce1a116ae65d69cefe2f3e79a12454b4590353e96f8912b4", + "0xa922b188d3d0b69b4e4ea2a2aa076566962844637da12c0832105d7b31dea4a309eee15d12b7a336be3ea36fcbd3e3b7", + "0x8f3841fcf4105131d8c4d9885e6e11a46c448226401cf99356c291fadb864da9fa9d30f3a73c327f23f9fd99a11d633e", + "0x9791d1183fae270e226379af6c497e7da803ea854bb20afa74b253239b744c15f670ee808f708ede873e78d79a626c9a", + "0xa4cad52e3369491ada61bf28ada9e85de4516d21c882e5f1cd845bea9c06e0b2887b0c5527fcff6fc28acd3c04f0a796", + "0xb9ac86a900899603452bd11a7892a9bfed8054970bfcbeaa8c9d1930db891169e38d6977f5258c25734f96c8462eee3b", + "0xa3a154c28e5580656a859f4efc2f5ebfa7eaa84ca40e3f134fa7865e8581586db74992dbfa4036aa252fba103773ddde", + "0x95cc2a0c1885a029e094f5d737e3ecf4d26b99036453a8773c77e360101f9f98676ee246f6f732a377a996702d55691f", + "0x842651bbe99720438d8d4b0218feb60481280c05beb17750e9ca0d8c0599a60f873b7fbdcc7d8835ba9a6d57b16eec03", + "0x81ee54699da98f5620307893dcea8f64670609fa20e5622265d66283adeac122d458b3308c5898e6c57c298db2c8b24f", + "0xb97868b0b2bc98032d68352a535a1b341b9ff3c7af4e3a7f3ebc82d3419daa1b5859d6aedc39994939623c7cd878bd9b", + "0xb60325cd5d36461d07ef253d826f37f9ee6474a760f2fff80f9873d01fd2b57711543cdc8d7afa1c350aa753c2e33dea", + "0x8c205326c11d25a46717b780c639d89714c7736c974ae71287e3f4b02e6605ac2d9b4928967b1684f12be040b7bf2dd3", + "0x95a392d82db51e26ade6c2ccd3396d7e40aff68fa570b5951466580d6e56dda51775dce5cf3a74a7f28c3cb2eb551c4d", + "0x8f2cc8071eb56dffb70bda6dd433b556221dc8bba21c53353c865f00e7d4d86c9e39f119ea9a8a12ef583e9a55d9a6b6", + "0x9449a71af9672aaf8856896d7e3d788b22991a7103f75b08c0abbcc2bfe60fda4ed8ce502cea4511ff0ea52a93e81222", + "0x857090ab9fdb7d59632d068f3cc8cf27e61f0d8322d30e6b38e780a1f05227199b4cd746aac1311c36c659ef20931f28", + "0x98a891f4973e7d9aaf9ac70854608d4f7493dffc7e0987d7be9dd6029f6ea5636d24ef3a83205615ca1ff403750058e1", + "0xa486e1365bbc278dd66a2a25d258dc82f46b911103cb16aab3945b9c95ae87b386313a12b566df5b22322ede0afe25ad", + "0xa9a1eb399ed95d396dccd8d1ac718043446f8b979ec62bdce51c617c97a312f01376ab7fb87d27034e5f5570797b3c33", + "0xb7abc3858d7a74bb446218d2f5a037e0fae11871ed9caf44b29b69c500c1fa1dcfad64c9cdccc9d80d5e584f06213deb", + "0x8cfb09fe2e202faa4cebad932b1d35f5ca204e1c2a0c740a57812ac9a6792130d1312aabd9e9d4c58ca168bfebd4c177", + "0xa90a305c2cd0f184787c6be596fa67f436afd1f9b93f30e875f817ac2aae8bdd2e6e656f6be809467e6b3ad84adb86b1", + "0x80a9ef993c2b009ae172cc8f7ec036f5734cf4f4dfa06a7db4d54725e7fbfae5e3bc6f22687bdbb6961939d6f0c87537", + "0x848ade1901931e72b955d7db1893f07003e1708ff5d93174bac5930b9a732640f0578839203e9b77eb27965c700032d3", + "0x93fdf4697609c5ae9c33b9ca2f5f1af44abeb2b98dc4fdf732cf7388de086f410730dc384d9b7a7f447bb009653c8381", + "0x89ce3fb805aea618b5715c0d22a9f46da696b6fa86794f56fdf1d44155a33d42daf1920bcbe36cbacf3cf4c92df9cbc7", + "0x829ce2c342cf82aa469c65f724f308f7a750bd1494adc264609cd790c8718b8b25b5cab5858cf4ee2f8f651d569eea67", + "0xaf2f0cee7bf413204be8b9df59b9e4991bc9009e0d6dbe6815181df0ec2ca93ab8f4f3135b1c14d8f53d74bff0bd6f27", + "0xb87998cecf7b88cde93d1779f10a521edd5574a2fbd240102978639ec57433ba08cdb53849038a329cebbe74657268d2", + "0xa64542a1261a6ed3d720c2c3a802303aad8c4c110c95d0f12e05c1065e66f42da494792b6bfc5b9272363f3b1d457f58", + "0x86a6fd042e4f282fadf07a4bfee03fc96a3aea49f7a00f52bf249a20f1ec892326855410e61f37fbb27d9305eb2fc713", + "0x967ea5bc403b6db269682f7fd0df90659350d7e1aa66bc4fab4c9dfcd75ed0bba4b52f1cebc5f34dc8ba810793727629", + "0xa52990f9f3b8616ce3cdc2c74cd195029e6a969753dcf2d1630438700e7d6ebde36538532b3525ac516f5f2ce9dd27a3", + "0xa64f7ff870bab4a8bf0d4ef6f5c744e9bf1021ed08b4c80903c7ad318e80ba1817c3180cc45cb5a1cae1170f0241655f", + "0xb00f706fa4de1f663f021e8ad3d155e84ce6084a409374b6e6cd0f924a0a0b51bebaaaf1d228c77233a73b0a5a0df0e9", + "0x8b882cc3bff3e42babdb96df95fb780faded84887a0a9bab896bef371cdcf169d909f5658649e93006aa3c6e1146d62e", + "0x9332663ef1d1dcf805c3d0e4ce7a07d9863fb1731172e766b3cde030bf81682cc011e26b773fb9c68e0477b4ae2cfb79", + "0xa8aa8151348dbd4ef40aaeb699b71b4c4bfd3218560c120d85036d14f678f6736f0ec68e80ce1459d3d35feccc575164", + "0xa16cd8b729768f51881c213434aa28301fa78fcb554ddd5f9012ee1e4eae7b5cb3dd88d269d53146dea92d10790faf0b", + "0x86844f0ef9d37142faf3b1e196e44fbe280a3ba4189aa05c356778cb9e3b388a2bff95eed305ada8769935c9974e4c57", + "0xae2eec6b328fccf3b47bcdac32901ac2744a51beb410b04c81dea34dee4912b619466a4f5e2780d87ecefaebbe77b46d", + "0x915df4c38d301c8a4eb2dc5b1ba0ffaad67cbb177e0a80095614e9c711f4ef24a4cef133f9d982a63d2a943ba6c8669d", + "0xae6a2a4dedfc2d1811711a8946991fede972fdf2a389b282471280737536ffc0ac3a6d885b1f8bda0366eb0b229b9979", + "0xa9b628c63d08b8aba6b1317f6e91c34b2382a6c85376e8ef2410a463c6796740ae936fc4e9e0737cb9455d1daa287bd8", + "0x848e30bf7edf2546670b390d5cf9ab71f98fcb6add3c0b582cb34996c26a446dee5d1bde4fdcde4fc80c10936e117b29", + "0x907d6096c7c8c087d1808dd995d5d2b9169b3768c3f433475b50c2e2bd4b082f4d543afd8b0b0ddffa9c66222a72d51d", + "0xa59970a2493b07339124d763ac9d793c60a03354539ecbcf6035bc43d1ea6e35718202ae6d7060b7d388f483d971573c", + "0xb9cfef2af9681b2318f119d8611ff6d9485a68d8044581b1959ab1840cbca576dbb53eec17863d2149966e9feb21122f", + "0xad47271806161f61d3afa45cdfe2babceef5e90031a21779f83dc8562e6076680525b4970b2f11fe9b2b23c382768323", + "0x8e425a99b71677b04fe044625d338811fbb8ee32368a424f6ab2381c52e86ee7a6cecedf777dc97181519d41c351bc22", + "0x86b55b54d7adefc12954a9252ee23ae83efe8b5b4b9a7dc307904413e5d69868c7087a818b2833f9b004213d629be8ad", + "0xa14fda6b93923dd11e564ae4457a66f397741527166e0b16a8eb91c6701c244fd1c4b63f9dd3515193ec88fa6c266b35", + "0xa9b17c36ae6cd85a0ed7f6cabc5b47dc8f80ced605db327c47826476dc1fb8f8669aa7a7dc679fbd4ee3d8e8b4bd6a6f", + "0x82a0829469c1458d959c821148f15dacae9ea94bf56c59a6ab2d4dd8b3d16d73e313b5a3912a6c1f131d73a8f06730c4", + "0xb22d56d549a53eaef549595924bdb621ff807aa4513feedf3fdcbf7ba8b6b9cfa4481c2f67fc642db397a6b794a8b63a", + "0x974c59c24392e2cb9294006cbe3c52163e255f3bd0c2b457bdc68a6338e6d5b6f87f716854492f8d880a6b896ccf757c", + "0xb70d247ba7cad97c50b57f526c2ba915786e926a94e8f8c3eebc2e1be6f4255411b9670e382060049c8f4184302c40b2", + "0xad80201fe75ef21c3ddbd98cf23591e0d7a3ba1036dfe77785c32f44755a212c31f0ceb0a0b6f5ee9b6dc81f358d30c3", + "0x8c656e841f9bb90b9a42d425251f3fdbc022a604d75f5845f479ed4be23e02aaf9e6e56cde351dd7449c50574818a199", + "0x8b88dd3fa209d3063b7c5b058f7249ee9900fbc2287d16da61a0704a0a1d71e45d9c96e1cda7fdf9654534ec44558b22", + "0x961da00cc8750bd84d253c08f011970ae1b1158ad6778e8ed943d547bceaf52d6d5a212a7de3bf2706688c4389b827d2", + "0xa5dd379922549a956033e3d51a986a4b1508e575042b8eaa1df007aa77cf0b8c2ab23212f9c075702788fa9c53696133", + "0xac8fcfde3a349d1e93fc8cf450814e842005c545c4844c0401bc80e6b96cdb77f29285a14455e167c191d4f312e866cd", + "0xac63d79c799783a8466617030c59dd5a8f92ee6c5204676fd8d881ce5f7f8663bdbeb0379e480ea9b6340ab0dc88e574", + "0x805874fde19ce359041ae2bd52a39e2841acabfd31f965792f2737d7137f36d4e4722ede8340d8c95afa6af278af8acb", + "0x8d2f323a228aa8ba7b7dc1399138f9e6b41df1a16a7069003ab8104b8b68506a45141bc5fe66acf430e23e13a545190b", + "0xa1610c721a2d9af882bb6b39bea97cff1527a3aea041d25934de080214ae77c959e79957164440686d15ab301e897d4d", + "0xaba16d29a47fc36f12b654fde513896723e2c700c4190f11b26aa4011da57737ad717daa02794aa3246e4ae5f0b0cc3a", + "0xa406db2f15fdd135f346cc4846623c47edd195e80ba8c7cb447332095314d565e4040694ca924696bb5ee7f8996ea0ba", + "0x8b30e2cd9b47d75ba57b83630e40f832249af6c058d4f490416562af451993eec46f3e1f90bc4d389e4c06abd1b32a46", + "0xaacf9eb7036e248e209adbfc3dd7ce386569ea9b312caa4b240726549db3c68c4f1c8cbf8ed5ea9ea60c7e57c9df3b8e", + "0xb20fcac63bf6f5ee638a42d7f89be847f348c085ddcbec3fa318f4323592d136c230495f188ef2022aa355cc2b0da6f9", + "0x811eff750456a79ec1b1249d76d7c1547065b839d8d4aaad860f6d4528eb5b669473dcceeeea676cddbc3980b68461b7", + "0xb52d14ae33f4ab422f953392ae76a19c618cc31afc96290bd3fe2fb44c954b5c92c4789f3f16e8793f2c0c1691ade444", + "0xa7826dafeeba0db5b66c4dfcf2b17fd7b40507a5a53ac2e42942633a2cb30b95ba1739a6e9f3b7a0e0f1ec729bf274e2", + "0x8acfd83ddf7c60dd7c8b20c706a3b972c65d336b8f9b3d907bdd8926ced271430479448100050b1ef17578a49c8fa616", + "0xaf0c69f65184bb06868029ad46f8465d75c36814c621ac20a5c0b06a900d59305584f5a6709683d9c0e4b6cd08d650a6", + "0xb6cc8588191e00680ee6c3339bd0f0a17ad8fd7f4be57d5d7075bede0ea593a19e67f3d7c1a20114894ee5bfcab71063", + "0xa82fd4f58635129dbb6cc3eb9391cf2d28400018b105fc41500fbbd12bd890b918f97d3d359c29dd3b4c4e34391dfab0", + "0x92fc544ed65b4a3625cf03c41ddff7c039bc22d22c0d59dcc00efd5438401f2606adb125a1d5de294cca216ec8ac35a3", + "0x906f67e4a32582b71f15940523c0c7ce370336935e2646bdaea16a06995256d25e99df57297e39d6c39535e180456407", + "0x97510337ea5bbd5977287339197db55c60533b2ec35c94d0a460a416ae9f60e85cee39be82abeeacd5813cf54df05862", + "0x87e6894643815c0ea48cb96c607266c5ee4f1f82ba5fe352fb77f9b6ed14bfc2b8e09e80a99ac9047dfcf62b2ae26795", + "0xb6fd55dd156622ad7d5d51b7dde75e47bd052d4e542dd6449e72411f68275775c846dde301e84613312be8c7bce58b07", + "0xb98461ac71f554b2f03a94e429b255af89eec917e208a8e60edf5fc43b65f1d17a20de3f31d2ce9f0cb573c25f2f4d98", + "0x96f0dea40ca61cefbee41c4e1fe9a7d81fbe1f49bb153d083ab70f5d0488a1f717fd28cedcf6aa18d07cce2c62801898", + "0x8d7c3ab310184f7dc34b6ce4684e4d29a31e77b09940448ea4daac730b7eb308063125d4dd229046cf11bfd521b771e0", + "0x96f0564898fe96687918bbf0a6adead99cf72e3a35ea3347e124af9d006221f8e82e5a9d2fe80094d5e8d48e610f415e", + "0xad50fcb92c2675a398cf07d4c40a579e44bf8d35f27cc330b57e54d5ea59f7d898af0f75dccfe3726e5471133d70f92b", + "0x828beed62020361689ae7481dd8f116902b522fb0c6c122678e7f949fdef70ead011e0e6bffd25678e388744e17cdb69", + "0x8349decac1ca16599eee2efc95bcaabf67631107da1d34a2f917884bd70dfec9b4b08ab7bc4379d6c73b19c0b6e54fb8", + "0xb2a6a2e50230c05613ace9e58bb2e98d94127f196f02d9dddc53c43fc68c184549ca12d713cb1b025d8260a41e947155", + "0x94ff52181aadae832aed52fc3b7794536e2a31a21fc8be3ea312ca5c695750d37f08002f286b33f4023dba1e3253ecfa", + "0xa21d56153c7e5972ee9a319501be4faff199fdf09bb821ea9ce64aa815289676c00f105e6f00311b3a5b627091b0d0fc", + "0xa27a60d219f1f0c971db73a7f563b371b5c9fc3ed1f72883b2eac8a0df6698400c9954f4ca17d7e94e44bd4f95532afb", + "0xa2fc56fae99b1f18ba5e4fe838402164ce82f8a7f3193d0bbd360c2bac07c46f9330c4c7681ffb47074c6f81ee6e7ac6", + "0xb748e530cd3afb96d879b83e89c9f1a444f54e55372ab1dcd46a0872f95ce8f49cf2363fc61be82259e04f555937ed16", + "0x8bf8993e81080c7cbba1e14a798504af1e4950b2f186ab3335b771d6acaee4ffe92131ae9c53d74379d957cb6344d9cd", + "0x96774d0ef730d22d7ab6d9fb7f90b9ead44285219d076584a901960542756700a2a1603cdf72be4708b267200f6c36a9", + "0xb47703c2ab17be1e823cc7bf3460db1d6760c0e33862c90ca058845b2ff234b0f9834ddba2efb2ee1770eb261e7d8ffd", + "0x84319e67c37a9581f8b09b5e4d4ae88d0a7fb4cbb6908971ab5be28070c3830f040b1de83ee663c573e0f2f6198640e4", + "0x96811875fa83133e0b3c0e0290f9e0e28bca6178b77fdf5350eb19344d453dbd0d71e55a0ef749025a5a2ca0ad251e81", + "0x81a423423e9438343879f2bfd7ee9f1c74ebebe7ce3cfffc8a11da6f040cc4145c3b527bd3cf63f9137e714dbcb474ef", + "0xb8c3535701ddbeec2db08e17a4fa99ba6752d32ece5331a0b8743676f421fcb14798afc7c783815484f14693d2f70db8", + "0x81aee980c876949bf40782835eec8817d535f6f3f7e00bf402ddd61101fdcd60173961ae90a1cf7c5d060339a18c959d", + "0x87e67b928d97b62c49dac321ce6cb680233f3a394d4c9a899ac2e8db8ccd8e00418e66cdfd68691aa3cb8559723b580c", + "0x8eac204208d99a2b738648df96353bbb1b1065e33ee4f6bba174b540bbbd37d205855e1f1e69a6b7ff043ca377651126", + "0x848e6e7a54ad64d18009300b93ea6f459ce855971dddb419b101f5ac4c159215626fadc20cc3b9ab1701d8f6dfaddd8b", + "0x88aa123d9e0cf309d46dddb6acf634b1ade3b090a2826d6e5e78669fa1220d6df9a6697d7778cd9b627db17eea846126", + "0x9200c2a629b9144d88a61151b661b6c4256cc5dadfd1e59a8ce17a013c2d8f7e754aabe61663c3b30f1bc47784c1f8cf", + "0xb6e1a2827c3bdda91715b0e1b1f10dd363cef337e7c80cac1f34165fc0dea7c8b69747e310563db5818390146ce3e231", + "0x92c333e694f89f0d306d54105b2a5dcc912dbe7654d9e733edab12e8537350815be472b063e56cfde5286df8922fdecb", + "0xa6fac04b6d86091158ebb286586ccfec2a95c9786e14d91a9c743f5f05546073e5e3cc717635a0c602cad8334e922346", + "0xa581b4af77feebc1fb897d49b5b507c6ad513d8f09b273328efbb24ef0d91eb740d01b4d398f2738125dacfe550330cd", + "0x81c4860cccf76a34f8a2bc3f464b7bfd3e909e975cce0d28979f457738a56e60a4af8e68a3992cf273b5946e8d7f76e2", + "0x8d1eaa09a3180d8af1cbaee673db5223363cc7229a69565f592fa38ba0f9d582cedf91e15dabd06ebbf2862fc0feba54", + "0x9832f49b0147f4552402e54593cfa51f99540bffada12759b71fcb86734be8e500eea2d8b3d036710bdf04c901432de9", + "0x8bdb0e8ec93b11e5718e8c13cb4f5de545d24829fd76161216340108098dfe5148ed25e3b57a89a516f09fa79043734d", + "0xab96f06c4b9b0b2c0571740b24fca758e6976315053a7ecb20119150a9fa416db2d3a2e0f8168b390bb063f0c1caf785", + "0xab777f5c52acd62ecf4d1f168b9cc8e1a9b45d4ec6a8ff52c583e867c2239aba98d7d3af977289b367edce03d9c2dfb1", + "0xa09d3ce5e748da84802436951acc3d3ea5d8ec1d6933505ed724d6b4b0d69973ab0930daec9c6606960f6e541e4a3ce2", + "0x8ef94f7be4d85d5ad3d779a5cf4d7b2fc3e65c52fb8e1c3c112509a4af77a0b5be994f251e5e40fabeeb1f7d5615c22b", + "0xa7406a5bf5708d9e10922d3c5c45c03ef891b8d0d74ec9f28328a72be4cdc05b4f2703fa99366426659dfca25d007535", + "0xb7f52709669bf92a2e070bfe740f422f0b7127392c5589c7f0af71bb5a8428697c762d3c0d74532899da24ea7d8695c2", + "0xb9dfb0c8df84104dbf9239ccefa4672ef95ddabb8801b74997935d1b81a78a6a5669a3c553767ec19a1281f6e570f4ff", + "0xae4d5c872156061ce9195ac640190d8d71dd406055ee43ffa6f9893eb24b870075b74c94d65bc1d5a07a6573282b5520", + "0xafe6bd3eb72266d333f1807164900dcfa02a7eb5b1744bb3c86b34b3ee91e3f05e38fa52a50dc64eeb4bdb1dd62874b8", + "0x948043cf1bc2ef3c01105f6a78dc06487f57548a3e6ef30e6ebc51c94b71e4bf3ff6d0058c72b6f3ecc37efd7c7fa8c0", + "0xa22fd17c2f7ffe552bb0f23fa135584e8d2d8d75e3f742d94d04aded2a79e22a00dfe7acbb57d44e1cdb962fb22ae170", + "0x8cd0f4e9e4fb4a37c02c1bde0f69359c43ab012eb662d346487be0c3758293f1ca560122b059b091fddce626383c3a8f", + "0x90499e45f5b9c81426f3d735a52a564cafbed72711d9279fdd88de8038e953bc48c57b58cba85c3b2e4ce56f1ddb0e11", + "0x8c30e4c034c02958384564cac4f85022ef36ab5697a3d2feaf6bf105049675bbf23d01b4b6814711d3d9271abff04cac", + "0x81f7999e7eeea30f3e1075e6780bbf054f2fb6f27628a2afa4d41872a385b4216dd5f549da7ce6cf39049b2251f27fb7", + "0xb36a7191f82fc39c283ffe53fc1f5a9a00b4c64eee7792a8443475da9a4d226cf257f226ea9d66e329af15d8f04984ec", + "0xaad4da528fdbb4db504f3041c747455baff5fcd459a2efd78f15bdf3aea0bdb808343e49df88fe7a7c8620009b7964a3", + "0x99ebd8c6dd5dd299517fb6381cfc2a7f443e6e04a351440260dd7c2aee3f1d8ef06eb6c18820b394366ecdfd2a3ce264", + "0x8873725b81871db72e4ec3643084b1cdce3cbf80b40b834b092767728605825c19b6847ad3dcf328438607e8f88b4410", + "0xb008ee2f895daa6abd35bd39b6f7901ae4611a11a3271194e19da1cdcc7f1e1ea008fe5c5440e50d2c273784541ad9c5", + "0x9036feafb4218d1f576ef89d0e99124e45dacaa6d816988e34d80f454d10e96809791d5b78f7fd65f569e90d4d7238c5", + "0x92073c1d11b168e4fa50988b0288638b4868e48bbc668c5a6dddf5499875d53be23a285acb5e4bad60114f6cf6c556e9", + "0x88c87dfcb8ba6cbfe7e1be081ccfadbd589301db2cb7c99f9ee5d7db90aa297ed1538d5a867678a763f2deede5fd219a", + "0xb42a562805c661a50f5dea63108002c0f27c0da113da6a9864c9feb5552225417c0356c4209e8e012d9bcc9d182c7611", + "0x8e6317d00a504e3b79cd47feb4c60f9df186467fe9ca0f35b55c0364db30528f5ff071109dabb2fc80bb9cd4949f0c24", + "0xb7b1ea6a88694f8d2f539e52a47466695e39e43a5eb9c6f23bca15305fe52939d8755cc3ac9d6725e60f82f994a3772f", + "0xa3cd55161befe795af93a38d33290fb642b8d80da8b786c6e6fb02d393ea308fbe87f486994039cbd7c7b390414594b6", + "0xb416d2d45b44ead3b1424e92c73c2cf510801897b05d1724ff31cbd741920cd858282fb5d6040fe1f0aa97a65bc49424", + "0x950ee01291754feace97c2e933e4681e7ddfbc4fcd079eb6ff830b0e481d929c93d0c7fb479c9939c28ca1945c40da09", + "0x869bd916aee8d86efe362a49010382674825d49195b413b4b4018e88ce43fe091b475d0b863ff0ba2259400f280c2b23", + "0x9782f38cd9c9d3385ec286ebbc7cba5b718d2e65a5890b0a5906b10a89dc8ed80d417d71d7c213bf52f2af1a1f513ea7", + "0x91cd33bc2628d096269b23faf47ee15e14cb7fdc6a8e3a98b55e1031ea0b68d10ba30d97e660f7e967d24436d40fad73", + "0x8becc978129cc96737034c577ae7225372dd855da8811ae4e46328e020c803833b5bdbc4a20a93270e2b8bd1a2feae52", + "0xa36b1d8076783a9522476ce17f799d78008967728ce920531fdaf88303321bcaf97ecaa08e0c01f77bc32e53c5f09525", + "0xb4720e744943f70467983aa34499e76de6d59aa6fadf86f6b787fdce32a2f5b535b55db38fe2da95825c51002cfe142d", + "0x91ad21fc502eda3945f6de874d1b6bf9a9a7711f4d61354f9e5634fc73f9c06ada848de15ab0a75811d3250be862827d", + "0x84f78e2ebf5fc077d78635f981712daf17e2475e14c2a96d187913006ad69e234746184a51a06ef510c9455b38acb0d7", + "0x960aa7906e9a2f11db64a26b5892ac45f20d2ccb5480f4888d89973beb6fa0dfdc06d68d241ff5ffc7f1b82b1aac242d", + "0xa99365dcd1a00c66c9db6924b97c920f5c723380e823b250db85c07631b320ec4e92e586f7319e67a522a0578f7b6d6c", + "0xa25d92d7f70cf6a88ff317cfec071e13774516da664f5fac0d4ecaa65b8bf4eb87a64a4d5ef2bd97dfae98d388dbf5cc", + "0xa7af47cd0041295798f9779020a44653007444e8b4ef0712982b06d0dcdd434ec4e1f7c5f7a049326602cb605c9105b7", + "0xaefe172eac5568369a05980931cc476bebd9dea573ba276d59b9d8c4420784299df5a910033b7e324a6c2dfc62e3ef05", + "0xb69bc9d22ffa645baa55e3e02522e9892bb2daa7fff7c15846f13517d0799766883ee09ae0869df4139150c5b843ca8a", + "0x95a10856140e493354fdd12722c7fdded21b6a2ffbc78aa2697104af8ad0c8e2206f44b0bfee077ef3949d46bbf7c16b", + "0x891f2fcd2c47cbea36b7fa715968540c233313f05333f09d29aba23c193f462ed490dd4d00969656e89c53155fdfe710", + "0xa6c33e18115e64e385c843dde34e8a228222795c7ca90bc2cc085705d609025f3351d9be61822c69035a49fb3e48f2d5", + "0xb87fb12f12c0533b005adad0487f03393ff682e13575e3cb57280c3873b2c38ba96a63c49eef7a442753d26b7005230b", + "0xb905c02ba451bfd411c135036d92c27af3b0b1c9c2f1309d6948544a264b125f39dd41afeff4666b12146c545adc168a", + "0x8b29c513f43a78951cf742231cf5457a6d9d55edf45df5481a0f299a418d94effef561b15d2c1a01d1b8067e7153fda9", + "0xb9941cccd51dc645920d2781c81a317e5a33cb7cf76427b60396735912cb6d2ca9292bb4d36b6392467d390d2c58d9f3", + "0xa8546b627c76b6ef5c93c6a98538d8593dbe21cb7673fd383d5401b0c935eea0bdeeefeb1af6ad41bad8464fb87bbc48", + "0xaa286b27de2812de63108a1aec29d171775b69538dc6198640ac1e96767c2b83a50391f49259195957d457b493b667c9", + "0xa932fb229f641e9abbd8eb2bd874015d97b6658ab6d29769fc23b7db9e41dd4f850382d4c1f08af8f156c5937d524473", + "0xa1412840fcc86e2aeec175526f2fb36e8b3b8d21a78412b7266daf81e51b3f68584ed8bd42a66a43afdd8c297b320520", + "0x89c78be9efb624c97ebca4fe04c7704fa52311d183ffd87737f76b7dadc187c12c982bd8e9ed7cd8beb48cdaafd2fd01", + "0xa3f5ddec412a5bec0ce15e3bcb41c6214c2b05d4e9135a0d33c8e50a78eaba71e0a5a6ea8b45854dec5c2ed300971fc2", + "0x9721f9cec7a68b7758e3887548790de49fa6a442d0396739efa20c2f50352a7f91d300867556d11a703866def2d5f7b5", + "0xa23764e140a87e5991573521af039630dd28128bf56eed2edbed130fd4278e090b60cf5a1dca9de2910603d44b9f6d45", + "0xa1a6494a994215e48ab55c70efa8ffdddce6e92403c38ae7e8dd2f8288cad460c6c7db526bbdf578e96ca04d9fe12797", + "0xb1705ea4cb7e074efe0405fc7b8ee2ec789af0426142f3ec81241cacd4f7edcd88e39435e4e4d8e7b1df64f3880d6613", + "0x85595d061d677116089a6064418b93eb44ff79e68d12bd9625078d3bbc440a60d0b02944eff6054433ee34710ae6fbb4", + "0x9978d5e30bedb7526734f9a1febd973a70bfa20890490e7cc6f2f9328feab1e24f991285dbc3711d892514e2d7d005ad", + "0xaf30243c66ea43b9f87a061f947f7bce745f09194f6e95f379c7582b9fead920e5d6957eaf05c12ae1282ada4670652f", + "0xa1930efb473f88001e47aa0b2b2a7566848cccf295792e4544096ecd14ee5d7927c173a8576b405bfa2eec551cd67eb5", + "0xb0446d1c590ee5a45f7e22d269c044f3848c97aec1d226b44bfd0e94d9729c28a38bccddc3a1006cc5fe4e3c24f001f2", + "0xb8a8380172df3d84b06176df916cf557966d4f2f716d3e9437e415d75b646810f79f2b2b71d857181b7fc944018883a3", + "0xa563afec25b7817bfa26e19dc9908bc00aa8fc3d19be7d6de23648701659009d10e3e4486c28e9c6b13d48231ae29ac5", + "0xa5a8e80579de886fb7d6408f542791876885947b27ad6fa99a8a26e381f052598d7b4e647b0115d4b5c64297e00ce28e", + "0x8f87afcc7ad33c51ac719bade3cd92da671a37a82c14446b0a2073f4a0a23085e2c8d31913ed2d0be928f053297de8f6", + "0xa43c455ce377e0bc434386c53c752880687e017b2f5ae7f8a15c044895b242dffde4c92fb8f8bb50b18470b17351b156", + "0x8368f8b12a5bceb1dba25adb3a2e9c7dc9b1a77a1f328e5a693f5aec195cd1e06b0fe9476b554c1c25dac6c4a5b640a3", + "0x919878b27f3671fc78396f11531c032f3e2bd132d04cc234fa4858676b15fb1db3051c0b1db9b4fc49038216f11321ce", + "0xb48cd67fb7f1242696c1f877da4bdf188eac676cd0e561fbac1a537f7b8229aff5a043922441d603a26aae56a15faee4", + "0xa3e0fdfd4d29ea996517a16f0370b54787fefe543c2fe73bfc6f9e560c1fd30dad8409859e2d7fa2d44316f24746c712", + "0x8bb156ade8faf149df7bea02c140c7e392a4742ae6d0394d880a849127943e6f26312033336d3b9fdc0092d71b5efe87", + "0x8845e5d5cc555ca3e0523244300f2c8d7e4d02aaebcb5bd749d791208856c209a6f84dd99fd55968c9f0ab5f82916707", + "0xa3e90bb5c97b07789c2f32dff1aec61d0a2220928202f5ad5355ae71f8249237799d6c8a22602e32e572cb12eabe0c17", + "0xb150bcc391884c996149dc3779ce71f15dda63a759ee9cc05871f5a8379dcb62b047098922c0f26c7bd04deb394c33f9", + "0x95cd4ad88d51f0f2efcfd0c2df802fe252bb9704d1afbf9c26a248df22d55da87bdfaf41d7bc6e5df38bd848f0b13f42", + "0xa05a49a31e91dff6a52ac8b9c2cfdd646a43f0d488253f9e3cfbce52f26667166bbb9b608fc358763a65cbf066cd6d05", + "0xa59c3c1227fdd7c2e81f5e11ef5c406da44662987bac33caed72314081e2eed66055d38137e01b2268e58ec85dd986c0", + "0xb7020ec3bd73a99861f0f1d88cf5a19abab1cbe14b7de77c9868398c84bb8e18dbbe9831838a96b6d6ca06e82451c67b", + "0x98d1ff2525e9718ee59a21d8900621636fcd873d9a564b8dceb4be80a194a0148daf1232742730b3341514b2e5a5436c", + "0x886d97b635975fc638c1b6afc493e5998ca139edba131b75b65cfe5a8e814f11bb678e0eeee5e6e5cd913ad3f2fefdfc", + "0x8fb9fd928d38d5d813b671c924edd56601dd7163b686c13f158645c2f869d9250f3859aa5463a39258c90fef0f41190a", + "0xaac35e1cd655c94dec3580bb3800bd9c2946c4a9856f7d725af15fbea6a2d8ca51c8ad2772abed60ee0e3fb9cb24046b", + "0xb8d71fa0fa05ac9e443c9b4929df9e7f09a919be679692682e614d24227e04894bfc14a5c73a62fb927fedff4a0e4aa7", + "0xa45a19f11fbbb531a704badbb813ed8088ab827c884ee4e4ebf363fa1132ff7cfa9d28be9c85b143e4f7cdbc94e7cf1a", + "0x82b54703a4f295f5471b255ab59dce00f0fe90c9fb6e06b9ee48b15c91d43f4e2ef4a96c3118aeb03b08767be58181bb", + "0x8283264c8e6d2a36558f0d145c18576b6600ff45ff99cc93eca54b6c6422993cf392668633e5df396b9331e873d457e5", + "0x8c549c03131ead601bc30eb6b9537b5d3beb7472f5bb1bcbbfd1e9f3704477f7840ab3ab7f7dc13bbbbcdff886a462d4", + "0xafbb0c520ac1b5486513587700ad53e314cb74bfbc12e0b5fbdcfdaac36d342e8b59856196a0d84a25cff6e6e1d17e76", + "0x89e4c22ffb51f2829061b3c7c1983c5c750cad158e3a825d46f7cf875677da5d63f653d8a297022b5db5845c9271b32b", + "0xafb27a86c4c2373088c96b9adf4433f2ebfc78ac5c526e9f0510670b6e4e5e0057c0a4f75b185e1a30331b9e805c1c15", + "0xa18e16b57445f88730fc5d3567bf5a176861dc14c7a08ed2996fe80eed27a0e7628501bcb78a1727c5e9ac55f29c12c4", + "0x93d61bf88b192d6825cf4e1120af1c17aa0f994d158b405e25437eaeefae049f7b721a206e7cc8a04fdc29d3c42580a1", + "0xa99f2995a2e3ed2fd1228d64166112038de2f516410aa439f4c507044e2017ea388604e2d0f7121256fadf7fbe7023d1", + "0x914fd91cffc23c32f1c6d0e98bf660925090d873367d543034654389916f65f552e445b0300b71b61b721a72e9a5983c", + "0xb42a578a7787b71f924e7def425d849c1c777156b1d4170a8ee7709a4a914e816935131afd9a0412c4cb952957b20828", + "0x82fb30590e84b9e45db1ec475a39971cf554dc01bcc7050bc89265740725c02e2be5a972168c5170c86ae83e5b0ad2c0", + "0xb14f8d8e1e93a84976289e0cf0dfa6f3a1809e98da16ee5c4932d0e1ed6bf8a07697fdd4dd86a3df84fb0003353cdcc0", + "0x85d7a2f4bda31aa2cb208b771fe03291a4ebdaf6f1dc944c27775af5caec412584c1f45bc741fca2a6a85acb3f26ad7d", + "0xaf02e56ce886ff2253bc0a68faad76f25ead84b2144e5364f3fb9b648f03a50ee9dc0b2c33ebacf7c61e9e43201ef9ef", + "0x87e025558c8a0b0abd06dfc350016847ea5ced7af2d135a5c9eec9324a4858c4b21510fb0992ec52a73447f24945058e", + "0x80fff0bafcd058118f5e7a4d4f1ae0912efeb281d2cbe4d34ba8945cc3dbe5d8baf47fb077343b90b8d895c90b297aca", + "0xb6edcf3a40e7b1c3c0148f47a263cd819e585a51ef31c2e35a29ce6f04c53e413f743034c0d998d9c00a08ba00166f31", + "0xabb87ed86098c0c70a76e557262a494ff51a30fb193f1c1a32f8e35eafa34a43fcc07aa93a3b7a077d9e35afa07b1a3d", + "0xa280214cd3bb0fb7ecd2d8bcf518cbd9078417f2b91d2533ec2717563f090fb84f2a5fcfdbbeb2a2a1f8a71cc5aa5941", + "0xa63083ca7238ea2b57d15a475963cf1d4f550d8cd76db290014a0461b90351f1f26a67d674c837b0b773b330c7c3d534", + "0xa8fa39064cb585ece5263e2f42f430206476bf261bd50f18d2b694889bd79d04d56410664cecad62690e5c5a20b3f6ff", + "0x85ba52ce9d700a5dcf6c5b00559acbe599d671ce5512467ff4b6179d7fad550567ce2a9c126a50964e3096458ea87920", + "0xb913501e1008f076e5eac6d883105174f88b248e1c9801e568fefaffa1558e4909364fc6d9512aa4d125cbd7cc895f05", + "0x8eb33b5266c8f2ed4725a6ad147a322e44c9264cf261c933cbbe230a43d47fca0f29ec39756b20561dabafadd5796494", + "0x850ebc8b661a04318c9db5a0515066e6454fa73865aa4908767a837857ecd717387f614acb614a88e075d4edc53a2f5a", + "0xa08d6b92d866270f29f4ce23a3f5d99b36b1e241a01271ede02817c8ec3f552a5c562db400766c07b104a331835c0c64", + "0x8131804c89bb3e74e9718bfc4afa547c1005ff676bd4db9604335032b203390cfa54478d45c6c78d1fe31a436ed4be9f", + "0x9106d94f23cc1eacec8316f16d6f0a1cc160967c886f51981fdb9f3f12ee1182407d2bb24e5b873de58cb1a3ee915a6b", + "0xa13806bfc3eae7a7000c9d9f1bd25e10218d4e67f59ae798b145b098bca3edad2b1040e3fc1e6310e612fb8818f459ac", + "0x8c69fbca502046cb5f6db99900a47b34117aef3f4b241690cdb3b84ca2a2fc7833e149361995dc41fa78892525bce746", + "0x852c473150c91912d58ecb05769222fa18312800c3f56605ad29eec9e2d8667b0b81c379048d3d29100ed2773bb1f3c5", + "0xb1767f6074426a00e01095dbb1795beb4e4050c6411792cbad6537bc444c3165d1058bafd1487451f9c5ddd209e0ae7e", + "0x80c600a5fe99354ce59ff0f84c760923dc8ff66a30bf47dc0a086181785ceb01f9b951c4e66df800ea6d705e8bc47055", + "0xb5cf19002fbc88a0764865b82afcb4d64a50196ea361e5c71dff7de084f4dcbbc34ec94a45cc9e0247bd51da565981aa", + "0x93e67a254ea8ce25e112d93cc927fadaa814152a2c4ec7d9a56eaa1ed47aec99b7e9916b02e64452cc724a6641729bbb", + "0xace70b32491bda18eee4a4d041c3bc9effae9340fe7e6c2f5ad975ee0874c17f1a7da7c96bd85fccff9312c518fac6e9", + "0xab4cfa02065017dd7f1aadc66f2c92f78f0f11b8597c03a5d69d82cb2eaf95a4476a836ac102908f137662472c8d914b", + "0xa40b8cd8deb8ae503d20364d64cab7c2801b7728a9646ed19c65edea6a842756a2f636283494299584ad57f4bb12cd0b", + "0x8594e11d5fc2396bcd9dbf5509ce4816dbb2b7305168021c426171fb444d111da5a152d6835ad8034542277011c26c0e", + "0x8024de98c26b4c994a66628dc304bb737f4b6859c86ded552c5abb81fd4c6c2e19d5a30beed398a694b9b2fdea1dd06a", + "0x8843f5872f33f54df8d0e06166c1857d733995f67bc54abb8dfa94ad92407cf0179bc91b0a50bbb56cdc2b350d950329", + "0xb8bab44c7dd53ef9edf497dcb228e2a41282c90f00ba052fc52d57e87b5c8ab132d227af1fcdff9a12713d1f980bcaae", + "0x982b4d7b29aff22d527fd82d2a52601d95549bfb000429bb20789ed45e5abf1f4b7416c7b7c4b79431eb3574b29be658", + "0x8eb1f571b6a1878e11e8c1c757e0bc084bab5e82e897ca9be9b7f4b47b91679a8190bf0fc8f799d9b487da5442415857", + "0xa6e74b588e5af935c8b243e888582ef7718f8714569dd4992920740227518305eb35fab674d21a5551cca44b3e511ef2", + "0xa30fc2f3a4cb4f50566e82307de73cd7bd8fe2c1184e9293c136a9b9e926a018d57c6e4f308c95b9eb8299e94d90a2a1", + "0xa50c5869ca5d2b40722c056a32f918d47e0b65ca9d7863ca7d2fb4a7b64fe523fe9365cf0573733ceaadebf20b48fff8", + "0x83bbdd32c04d17581418cf360749c7a169b55d54f2427390defd9f751f100897b2d800ce6636c5bbc046c47508d60c8c", + "0xa82904bdf614de5d8deaff688c8a5e7ac5b3431687acbcda8fa53960b7c417a39c8b2e462d7af91ce6d79260f412db8e", + "0xa4362e31ff4b05d278b033cf5eebea20de01714ae16d4115d04c1da4754269873afc8171a6f56c5104bfd7b0db93c3e7", + "0xb5b8daa63a3735581e74a021b684a1038cea77168fdb7fdf83c670c2cfabcfc3ab2fc7359069b5f9048188351aef26b5", + "0xb48d723894b7782d96ac8433c48faca1bdfa5238019c451a7f47d958097cce3ae599b876cf274269236b9d6ff8b6d7ca", + "0x98ffff6a61a3a6205c7820a91ca2e7176fab5dba02bc194c4d14942ac421cb254183c705506ab279e4f8db066f941c6c", + "0xae7db24731da2eaa6efc4f7fcba2ecc26940ddd68038dce43acf2cee15b72dc4ef42a7bfdd32946d1ed78786dd7696b3", + "0xa656db14f1de9a7eb84f6301b4acb2fbf78bfe867f48a270e416c974ab92821eb4df1cb881b2d600cfed0034ac784641", + "0xaa315f8ecba85a5535e9a49e558b15f39520fce5d4bf43131bfbf2e2c9dfccc829074f9083e8d49f405fb221d0bc4c3c", + "0x90bffba5d9ff40a62f6c8e9fc402d5b95f6077ed58d030c93e321b8081b77d6b8dac3f63a92a7ddc01585cf2c127d66c", + "0xabdd733a36e0e0f05a570d0504e73801bf9b5a25ff2c78786f8b805704997acb2e6069af342538c581144d53149fa6d3", + "0xb4a723bb19e8c18a01bd449b1bb3440ddb2017f10bb153da27deb7a6a60e9bb37619d6d5435fbb1ba617687838e01dd0", + "0x870016b4678bab3375516db0187a2108b2e840bae4d264b9f4f27dbbc7cc9cac1d7dc582d7a04d6fd1ed588238e5e513", + "0x80d33d2e20e8fc170aa3cb4f69fffb72aeafb3b5bb4ea0bc79ab55da14142ca19b2d8b617a6b24d537366e3b49cb67c3", + "0xa7ee76aec273aaae03b3b87015789289551969fb175c11557da3ab77e39ab49d24634726f92affae9f4d24003050d974", + "0x8415ea4ab69d779ebd42d0fe0c6aef531d6a465a5739e429b1fcf433ec45aa8296c527e965a20f0ec9f340c9273ea3cf", + "0x8c7662520794e8b4405d0b33b5cac839784bc86a5868766c06cbc1fa306dbe334978177417b31baf90ce7b0052a29c56", + "0x902b2abecc053a3dbdea9897ee21e74821f3a1b98b2d560a514a35799f4680322550fd3a728d4f6d64e1de98033c32b8", + "0xa05e84ed9ecab8d508d670c39f2db61ad6e08d2795ec32a3c9d0d3737ef3801618f4fc2a95f90ec2f068606131e076c5", + "0x8b9208ff4d5af0c2e3f53c9375da666773ac57197dfabb0d25b1c8d0588ba7f3c15ee9661bb001297f322ea2fbf6928b", + "0xa3c827741b34a03254d4451b5ab74a96f2b9f7fb069e2f5adaf54fd97cc7a4d516d378db5ca07da87d8566d6eef13726", + "0x8509d8a3f4a0ed378e0a1e28ea02f6bf1d7f6c819c6c2f5297c7df54c895b848f841653e32ba2a2c22c2ff739571acb8", + "0xa0ce988b7d3c40b4e496aa83a09e4b5472a2d98679622f32bea23e6d607bc7de1a5374fb162bce0549a67dad948519be", + "0xaa8a3dd12bd60e3d2e05f9c683cdcb8eab17fc59134815f8d197681b1bcf65108cba63ac5c58ee632b1e5ed6bba5d474", + "0x8b955f1d894b3aefd883fb4b65f14cd37fc2b9db77db79273f1700bef9973bf3fd123897ea2b7989f50003733f8f7f21", + "0xac79c00ddac47f5daf8d9418d798d8af89fc6f1682e7e451f71ea3a405b0d36af35388dd2a332af790bc83ca7b819328", + "0xa0d44dd2a4438b809522b130d0938c3fe7c5c46379365dbd1810a170a9aa5818e1c783470dd5d0b6d4ac7edbb7330910", + "0xa30b69e39ad43dd540a43c521f05b51b5f1b9c4eed54b8162374ae11eac25da4f5756e7b70ce9f3c92c2eeceee7431ed", + "0xac43220b762c299c7951222ea19761ab938bf38e4972deef58ed84f4f9c68c230647cf7506d7cbfc08562fcca55f0485", + "0xb28233b46a8fb424cfa386a845a3b5399d8489ceb83c8f3e05c22c934798d639c93718b7b68ab3ce24c5358339e41cbb", + "0xac30d50ee8ce59a10d4b37a3a35e62cdb2273e5e52232e202ca7d7b8d09d28958ee667fae41a7bb6cdc6fe8f6e6c9c85", + "0xb199842d9141ad169f35cc7ff782b274cbaa645fdb727761e0a89edbf0d781a15f8218b4bf4eead326f2903dd88a9cc1", + "0x85e018c7ddcad34bb8285a737c578bf741ccd547e68c734bdb3808380e12c5d4ef60fc896b497a87d443ff9abd063b38", + "0x8c856e6ba4a815bdb891e1276f93545b7072f6cb1a9aa6aa5cf240976f29f4dee01878638500a6bf1daf677b96b54343", + "0xb8a47555fa8710534150e1a3f13eab33666017be6b41005397afa647ea49708565f2b86b77ad4964d140d9ced6b4d585", + "0x8cd1f1db1b2f4c85a3f46211599caf512d5439e2d8e184663d7d50166fd3008f0e9253272f898d81007988435f715881", + "0xb1f34b14612c973a3eceb716dc102b82ab18afef9de7630172c2780776679a7706a4874e1df3eaadf541fb009731807f", + "0xb25464af9cff883b55be2ff8daf610052c02df9a5e147a2cf4df6ce63edcdee6dc535c533590084cc177da85c5dc0baa", + "0x91c3c4b658b42d8d3448ae1415d4541d02379a40dc51e36a59bd6e7b9ba3ea51533f480c7c6e8405250ee9b96a466c29", + "0x86dc027b95deb74c36a58a1333a03e63cb5ae22d3b29d114cfd2271badb05268c9d0c819a977f5e0c6014b00c1512e3a", + "0xae0e6ff58eb5fa35da5107ebeacf222ab8f52a22bb1e13504247c1dfa65320f40d97b0e6b201cb6613476687cb2f0681", + "0x8f13415d960b9d7a1d93ef28afc2223e926639b63bdefce0f85e945dfc81670a55df288893a0d8b3abe13c5708f82f91", + "0x956f67ca49ad27c1e3a68c1faad5e7baf0160c459094bf6b7baf36b112de935fdfd79fa4a9ea87ea8de0ac07272969f4", + "0x835e45e4a67df9fb51b645d37840b3a15c171d571a10b03a406dd69d3c2f22df3aa9c5cbe1e73f8d767ce01c4914ea9a", + "0x919b938e56d4b32e2667469d0bdccb95d9dda3341aa907683ee70a14bbbe623035014511c261f4f59b318b610ac90aa3", + "0x96b48182121ccd9d689bf1dfdc228175564cd68dc904a99c808a7f0053a6f636c9d953e12198bdf2ea49ea92772f2e18", + "0xac5e5a941d567fa38fdbcfa8cf7f85bb304e3401c52d88752bcd516d1fa9bac4572534ea2205e38423c1df065990790f", + "0xac0bd594fb85a8d4fc26d6df0fa81f11919401f1ecf9168b891ec7f061a2d9368af99f7fd8d9b43b2ce361e7b8482159", + "0x83d92c69ca540d298fe80d8162a1c7af3fa9b49dfb69e85c1d136a3ec39fe419c9fa78e0bb6d96878771fbd37fe92e40", + "0xb35443ae8aa66c763c2db9273f908552fe458e96696b90e41dd509c17a5c04ee178e3490d9c6ba2dc0b8f793c433c134", + "0x923b2d25aa45b2e580ffd94cbb37dc8110f340f0f011217ee1bd81afb0714c0b1d5fb4db86006cdd2457563276f59c59", + "0x96c9125d38fca1a61ac21257b696f8ac3dae78def50285e44d90ea293d591d1c58f703540a7e4e99e070afe4646bbe15", + "0xb57946b2332077fbcdcb406b811779aefd54473b5559a163cd65cb8310679b7e2028aa55c12a1401fdcfcac0e6fae29a", + "0x845daedc5cf972883835d7e13c937b63753c2200324a3b8082a6c4abb4be06c5f7c629d4abe4bfaf1d80a1f073eb6ce6", + "0x91a55dfd0efefcd03dc6dacc64ec93b8d296cb83c0ee72400a36f27246e7f2a60e73b7b70ba65819e9cfb73edb7bd297", + "0x8874606b93266455fe8fdd25df9f8d2994e927460af06f2e97dd4d2d90db1e6b06d441b72c2e76504d753badca87fb37", + "0x8ee99e6d231274ff9252c0f4e84549da173041299ad1230929c3e3d32399731c4f20a502b4a307642cac9306ccd49d3c", + "0x8836497714a525118e20849d6933bb8535fb6f72b96337d49e3133d936999c90a398a740f42e772353b5f1c63581df6d", + "0xa6916945e10628f7497a6cdc5e2de113d25f7ade3e41e74d3de48ccd4fce9f2fa9ab69645275002e6f49399b798c40af", + "0x9597706983107eb23883e0812e1a2c58af7f3499d50c6e29b455946cb9812fde1aa323d9ed30d1c0ffd455abe32303cd", + "0xa24ee89f7f515cc33bdbdb822e7d5c1877d337f3b2162303cfc2dae028011c3a267c5cb4194afa63a4856a6e1c213448", + "0x8cd25315e4318801c2776824ae6e7d543cb85ed3bc2498ba5752df2e8142b37653cf9e60104d674be3aeb0a66912e97a", + "0xb5085ecbe793180b40dbeb879f4c976eaaccaca3a5246807dced5890e0ed24d35f3f86955e2460e14fb44ff5081c07ba", + "0x960188cc0b4f908633a6840963a6fa2205fc42c511c6c309685234911c5304ef4c304e3ae9c9c69daa2fb6a73560c256", + "0xa32d0a70bf15d569b4cda5aebe3e41e03c28bf99cdd34ffa6c5d58a097f322772acca904b3a47addb6c7492a7126ebac", + "0x977f72d06ad72d4aa4765e0f1f9f4a3231d9f030501f320fe7714cc5d329d08112789fa918c60dd7fdb5837d56bb7fc6", + "0x99fa038bb0470d45852bb871620d8d88520adb701712fcb1f278fed2882722b9e729e6cdce44c82caafad95e37d0e6f7", + "0xb855e8f4fc7634ada07e83b6c719a1e37acb06394bc8c7dcab7747a8c54e5df3943915f021364bd019fdea103864e55f", + "0x88bc2cd7458532e98c596ef59ea2cf640d7cc31b4c33cef9ed065c078d1d4eb49677a67de8e6229cc17ea48bace8ee5a", + "0xaaa78a3feaa836d944d987d813f9b9741afb076e6aca1ffa42682ab06d46d66e0c07b8f40b9dbd63e75e81efa1ef7b08", + "0xb7b080420cc4d808723b98b2a5b7b59c81e624ab568ecdfdeb8bf3aa151a581b6f56e983ef1b6f909661e25db40b0c69", + "0xabee85c462ac9a2c58e54f06c91b3e5cd8c5f9ab5b5deb602b53763c54826ed6deb0d6db315a8d7ad88733407e8d35e2", + "0x994d075c1527407547590df53e9d72dd31f037c763848d1662eebd4cefec93a24328c986802efa80e038cb760a5300f5", + "0xab8777640116dfb6678e8c7d5b36d01265dfb16321abbfc277da71556a34bb3be04bc4ae90124ed9c55386d2bfb3bda0", + "0x967e3a828bc59409144463bcf883a3a276b5f24bf3cbfdd7a42343348cba91e00b46ac285835a9b91eef171202974204", + "0x875a9f0c4ffe5bb1d8da5e3c8e41d0397aa6248422a628bd60bfae536a651417d4e8a7d2fb98e13f2dad3680f7bd86d3", + "0xacaa330c3e8f95d46b1880126572b238dbb6d04484d2cd4f257ab9642d8c9fc7b212188b9c7ac9e0fd135c520d46b1bf", + "0xaceb762edbb0f0c43dfcdb01ea7a1ac5918ca3882b1e7ebc4373521742f1ed5250d8966b498c00b2b0f4d13212e6dd0b", + "0x81d072b4ad258b3646f52f399bced97c613b22e7ad76373453d80b1650c0ca87edb291a041f8253b649b6e5429bb4cff", + "0x980a47d27416ac39c7c3a0ebe50c492f8c776ea1de44d5159ac7d889b6d554357f0a77f0e5d9d0ff41aae4369eba1fc2", + "0x8b4dfd5ef5573db1476d5e43aacfb5941e45d6297794508f29c454fe50ea622e6f068b28b3debe8635cf6036007de2e3", + "0xa60831559d6305839515b68f8c3bc7abbd8212cc4083502e19dd682d56ca37c9780fc3ce4ec2eae81ab23b221452dc57", + "0x951f6b2c1848ced9e8a2339c65918e00d3d22d3e59a0a660b1eca667d18f8430d737884e9805865ef3ed0fe1638a22d9", + "0xb02e38fe790b492aa5e89257c4986c9033a8b67010fa2add9787de857d53759170fdd67715ca658220b4e14b0ca48124", + "0xa51007e4346060746e6b0e4797fc08ef17f04a34fe24f307f6b6817edbb8ce2b176f40771d4ae8a60d6152cbebe62653", + "0xa510005b05c0b305075b27b243c9d64bcdce85146b6ed0e75a3178b5ff9608213f08c8c9246f2ca6035a0c3e31619860", + "0xaaff4ef27a7a23be3419d22197e13676d6e3810ceb06a9e920d38125745dc68a930f1741c9c2d9d5c875968e30f34ab5", + "0x864522a9af9857de9814e61383bebad1ba9a881696925a0ea6bfc6eff520d42c506bbe5685a9946ed710e889765be4a0", + "0xb63258c080d13f3b7d5b9f3ca9929f8982a6960bdb1b0f8676f4dca823971601672f15e653917bf5d3746bb220504913", + "0xb51ce0cb10869121ae310c7159ee1f3e3a9f8ad498827f72c3d56864808c1f21fa2881788f19ece884d3f705cd7bd0c5", + "0x95d9cecfc018c6ed510e441cf84c712d9909c778c16734706c93222257f64dcd2a9f1bd0b400ca271e22c9c487014274", + "0x8beff4d7d0140b86380ff4842a9bda94c2d2be638e20ac68a4912cb47dbe01a261857536375208040c0554929ced1ddc", + "0x891ff49258749e2b57c1e9b8e04b12c77d79c3308b1fb615a081f2aacdfb4b39e32d53e069ed136fdbd43c53b87418fa", + "0x9625cad224e163d387738825982d1e40eeff35fe816d10d7541d15fdc4d3eee48009090f3faef4024b249205b0b28f72", + "0x8f3947433d9bd01aa335895484b540a9025a19481a1c40b4f72dd676bfcf332713714fd4010bde936eaf9470fd239ed0", + "0xa00ec2d67789a7054b53f0e858a8a232706ccc29a9f3e389df7455f1a51a2e75801fd78469a13dbc25d28399ae4c6182", + "0xa3f65884506d4a62b8775a0ea0e3d78f5f46bc07910a93cd604022154eabdf1d73591e304d61edc869e91462951975e1", + "0xa14eef4fd5dfac311713f0faa9a60415e3d30b95a4590cbf95f2033dffb4d16c02e7ceff3dcd42148a4e3bc49cce2dd4", + "0x8afa11c0eef3c540e1e3460bc759bb2b6ea90743623f88e62950c94e370fe4fd01c22b6729beba4dcd4d581198d9358f", + "0xafb05548a69f0845ffcc5f5dc63e3cdb93cd270f5655173b9a950394b0583663f2b7164ba6df8d60c2e775c1d9f120af", + "0x97f179e01a947a906e1cbeafa083960bc9f1bade45742a3afee488dfb6011c1c6e2db09a355d77f5228a42ccaa7bdf8e", + "0x8447fca4d35f74b3efcbd96774f41874ca376bf85b79b6e66c92fa3f14bdd6e743a051f12a7fbfd87f319d1c6a5ce217", + "0xa57ca39c23617cd2cf32ff93b02161bd7baf52c4effb4679d9d5166406e103bc8f3c6b5209e17c37dbb02deb8bc72ddd", + "0x9667c7300ff80f0140be002b0e36caab07aaee7cce72679197c64d355e20d96196acaf54e06e1382167d081fe6f739c1", + "0x828126bb0559ce748809b622677267ca896fa2ee76360fd2c02990e6477e06a667241379ca7e65d61a5b64b96d7867de", + "0x8b8835dea6ba8cf61c91f01a4b3d2f8150b687a4ee09b45f2e5fc8f80f208ae5d142d8e3a18153f0722b90214e60c5a7", + "0xa98e8ff02049b4da386e3ee93db23bbb13dfeb72f1cfde72587c7e6d962780b7671c63e8ac3fbaeb1a6605e8d79e2f29", + "0x87a4892a0026d7e39ef3af632172b88337cb03669dea564bcdb70653b52d744730ebb5d642e20cb627acc9dbb547a26b", + "0x877352a22fc8052878a57effc159dac4d75fe08c84d3d5324c0bab6d564cdf868f33ceee515eee747e5856b62cfa0cc7", + "0x8b801ba8e2ff019ee62f64b8cb8a5f601fc35423eb0f9494b401050103e1307dc584e4e4b21249cd2c686e32475e96c3", + "0xa9e7338d6d4d9bfec91b2af28a8ed13b09415f57a3a00e5e777c93d768fdb3f8e4456ae48a2c6626b264226e911a0e28", + "0x99c05fedf40ac4726ed585d7c1544c6e79619a0d3fb6bda75a08c7f3c0008e8d5e19ed4da48de3216135f34a15eba17c", + "0xa61cce8a1a8b13a4a650fdbec0eeea8297c352a8238fb7cac95a0df18ed16ee02a3daa2de108fa122aca733bd8ad7855", + "0xb97f37da9005b440b4cb05870dd881bf8491fe735844f2d5c8281818583b38e02286e653d9f2e7fa5e74c3c3eb616540", + "0xa72164a8554da8e103f692ac5ebb4aece55d5194302b9f74b6f2a05335b6e39beede0bf7bf8c5bfd4d324a784c5fb08c", + "0xb87e8221c5341cd9cc8bb99c10fe730bc105550f25ed4b96c0d45e6142193a1b2e72f1b3857373a659b8c09be17b3d91", + "0xa41fb1f327ef91dcb7ac0787918376584890dd9a9675c297c45796e32d6e5985b12f9b80be47fc3a8596c245f419d395", + "0x90dafa3592bdbb3465c92e2a54c2531822ba0459d45d3e7a7092fa6b823f55af28357cb51896d4ec2d66029c82f08e26", + "0xa0a9adc872ebc396557f484f1dd21954d4f4a21c4aa5eec543f5fa386fe590839735c01f236574f7ff95407cd12de103", + "0xb8c5c940d58be7538acf8672852b5da3af34f82405ef2ce8e4c923f1362f97fc50921568d0fd2fe846edfb0823e62979", + "0x85aaf06a8b2d0dac89dafd00c28533f35dbd074978c2aaa5bef75db44a7b12aeb222e724f395513b9a535809a275e30b", + "0x81f3cbe82fbc7028c26a6c1808c604c63ba023a30c9f78a4c581340008dbda5ec07497ee849a2183fcd9124f7936af32", + "0xa11ac738de75fd60f15a34209d3825d5e23385796a4c7fc5931822f3f380af977dd0f7b59fbd58eed7777a071e21b680", + "0x85a279c493de03db6fa6c3e3c1b1b29adc9a8c4effc12400ae1128da8421954fa8b75ad19e5388fe4543b76fb0812813", + "0x83a217b395d59ab20db6c4adb1e9713fc9267f5f31a6c936042fe051ce8b541f579442f3dcf0fa16b9e6de9fd3518191", + "0x83a0b86e7d4ed8f9ccdc6dfc8ff1484509a6378fa6f09ed908e6ab9d1073f03011dc497e14304e4e3d181b57de06a5ab", + "0xa63ad69c9d25704ce1cc8e74f67818e5ed985f8f851afa8412248b2df5f833f83b95b27180e9e7273833ed0d07113d3b", + "0x99b1bc2021e63b561fe44ddd0af81fcc8627a91bfeecbbc989b642bc859abc0c8d636399701aad7bbaf6a385d5f27d61", + "0xb53434adb66f4a807a6ad917c6e856321753e559b1add70824e5c1e88191bf6993fccb9b8b911fc0f473fb11743acacd", + "0x97ed3b9e6fb99bf5f945d4a41f198161294866aa23f2327818cdd55cb5dc4c1a8eff29dd8b8d04902d6cd43a71835c82", + "0xb1e808260e368a18d9d10bdea5d60223ba1713b948c782285a27a99ae50cc5fc2c53d407de07155ecc16fb8a36d744a0", + "0xa3eb4665f18f71833fec43802730e56b3ee5a357ea30a888ad482725b169d6f1f6ade6e208ee081b2e2633079b82ba7d", + "0xab8beb2c8353fc9f571c18fdd02bdb977fc883313469e1277b0372fbbb33b80dcff354ca41de436d98d2ed710faa467e", + "0xaa9071cfa971e4a335a91ad634c98f2be51544cb21f040f2471d01bb97e1df2277ae1646e1ea8f55b7ba9f5c8c599b39", + "0x80b7dbfdcaf40f0678012acc634eba44ea51181475180d9deb2050dc4f2de395289edd0223018c81057ec79b04b04c49", + "0x89623d7f6cb17aa877af14de842c2d4ab7fd576d61ddd7518b5878620a01ded40b6010de0da3cdf31d837eecf30e9847", + "0xa773bb024ae74dd24761f266d4fb27d6fd366a8634febe8235376b1ae9065c2fe12c769f1d0407867dfbe9f5272c352f", + "0x8455a561c3aaa6ba64c881a5e13921c592b3a02e968f4fb24a2243c36202795d0366d9cc1a24e916f84d6e158b7aeac7", + "0x81d8bfc4b283cf702a40b87a2b96b275bdbf0def17e67d04842598610b67ea08c804d400c3e69fa09ea001eaf345b276", + "0xb8f8f82cb11fea1c99467013d7e167ff03deb0c65a677fab76ded58826d1ba29aa7cf9fcd7763615735ea3ad38e28719", + "0x89a6a04baf9cccc1db55179e1650b1a195dd91fb0aebc197a25143f0f393524d2589975e3fbfc2547126f0bced7fd6f2", + "0xb81b2162df045390f04df07cbd0962e6b6ca94275a63edded58001a2f28b2ae2af2c7a6cba4ecd753869684e77e7e799", + "0xa3757f722776e50de45c62d9c4a2ee0f5655a512344c4cbec542d8045332806568dd626a719ef21a4eb06792ca70f204", + "0x8c5590df96ec22179a4e8786de41beb44f987a1dcc508eb341eecbc0b39236fdfad47f108f852e87179ccf4e10091e59", + "0x87502f026ed4e10167419130b88c3737635c5b9074c364e1dd247cef5ef0fc064b4ae99b187e33301e438bbd2fe7d032", + "0xaf925a2165e980ced620ff12289129fe17670a90ae0f4db9d4b39bd887ccb1f5d2514ac9ecf910f6390a8fc66bd5be17", + "0x857fca899828cf5c65d26e3e8a6e658542782fc72762b3b9c73514919f83259e0f849a9d4838b40dc905fe43024d0d23", + "0x87ffebdbfb69a9e1007ebac4ffcb4090ff13705967b73937063719aa97908986effcb7262fdadc1ae0f95c3690e3245d", + "0xa9ff6c347ac6f4c6ab993b748802e96982eaf489dc69032269568412fc9a79e7c2850dfc991b28211b3522ee4454344b", + "0xa65b3159df4ec48bebb67cb3663cd744027ad98d970d620e05bf6c48f230fa45bf17527fe726fdf705419bb7a1bb913e", + "0x84b97b1e6408b6791831997b03cd91f027e7660fd492a93d95daafe61f02427371c0e237c75706412f442991dfdff989", + "0xab761c26527439b209af0ae6afccd9340bbed5fbe098734c3145b76c5d2cd7115d9227b2eb523882b7317fbb09180498", + "0xa0479a8da06d7a69c0b0fee60df4e691c19c551f5e7da286dab430bfbcabf31726508e20d26ea48c53365a7f00a3ad34", + "0xa732dfc9baa0f4f40b5756d2e8d8937742999623477458e0bc81431a7b633eefc6f53b3b7939fe0a020018549c954054", + "0x901502436a1169ba51dc479a5abe7c8d84e0943b16bc3c6a627b49b92cd46263c0005bc324c67509edd693f28e612af1", + "0xb627aee83474e7f84d1bab9b7f6b605e33b26297ac6bbf52d110d38ba10749032bd551641e73a383a303882367af429b", + "0x95108866745760baef4a46ef56f82da6de7e81c58b10126ebd2ba2cd13d339f91303bf2fb4dd104a6956aa3b13739503", + "0x899ed2ade37236cec90056f3569bc50f984f2247792defafcceb49ad0ca5f6f8a2f06573705300e07f0de0c759289ff5", + "0xa9f5eee196d608efe4bcef9bf71c646d27feb615e21252cf839a44a49fd89da8d26a758419e0085a05b1d59600e2dc42", + "0xb36c6f68fed6e6c85f1f4a162485f24817f2843ec5cbee45a1ebfa367d44892e464949c6669f7972dc7167af08d55d25", + "0xaaaede243a9a1b6162afbc8f571a52671a5a4519b4062e3f26777664e245ba873ed13b0492c5dbf0258c788c397a0e9e", + "0x972b4fb39c31cbe127bf9a32a5cc10d621ebdd9411df5e5da3d457f03b2ab2cd1f6372d8284a4a9400f0b06ecdbfd38e", + "0x8f6ca1e110e959a4b1d9a5ce5f212893cec21db40d64d5ac4d524f352d72198f923416a850bf845bc5a22a79c0ea2619", + "0xa0f3c93b22134f66f04b2553a53b738644d1665ceb196b8494b315a4c28236fb492017e4a0de4224827c78e42f9908b7", + "0x807fb5ee74f6c8735b0b5ca07e28506214fe4047dbeb00045d7c24f7849e98706aea79771241224939cb749cf1366c7d", + "0x915eb1ff034224c0b645442cdb7d669303fdc00ca464f91aaf0b6fde0b220a3a74ff0cb043c26c9f3a5667b3fdaa9420", + "0x8fda6cef56ed33fefffa9e6ac8e6f76b1af379f89761945c63dd448801f7bb8ca970504a7105fac2f74f652ccff32327", + "0x87380cffdcffb1d0820fa36b63cc081e72187f86d487315177d4d04da4533eb19a0e2ff6115ceab528887819c44a5164", + "0x8cd89e03411a18e7f16f968b89fb500c36d47d229f6487b99e62403a980058db5925ce249206743333538adfad168330", + "0x974451b1df33522ce7056de9f03e10c70bf302c44b0741a59df3d6877d53d61a7394dcee1dd46e013d7cb9d73419c092", + "0x98c35ddf645940260c490f384a49496a7352bb8e3f686feed815b1d38f59ded17b1ad6e84a209e773ed08f7b8ff1e4c2", + "0x963f386cf944bb9b2ddebb97171b64253ea0a2894ac40049bdd86cda392292315f3a3d490ca5d9628c890cfb669f0acb", + "0x8d507712152babd6d142ee682638da8495a6f3838136088df9424ef50d5ec28d815a198c9a4963610b22e49b4cdf95e9", + "0x83d4bc6b0be87c8a4f1e9c53f257719de0c73d85b490a41f7420e777311640937320557ff2f1d9bafd1daaa54f932356", + "0x82f5381c965b7a0718441131c4d13999f4cdce637698989a17ed97c8ea2e5bdb5d07719c5f7be8688edb081b23ede0f4", + "0xa6ebecab0b72a49dfd01d69fa37a7f74d34fb1d4fef0aa10e3d6fceb9eccd671225c230af89f6eb514250e41a5f91f52", + "0x846d185bdad6e11e604df7f753b7a08a28b643674221f0e750ebdb6b86ec584a29c869e131bca868972a507e61403f6a", + "0x85a98332292acb744bd1c0fd6fdcf1f889a78a2c9624d79413ffa194cc8dfa7821a4b60cde8081d4b5f71f51168dd67f", + "0x8f7d97c3b4597880d73200d074eb813d95432306e82dafc70b580b8e08cb8098b70f2d07b4b3ac6a4d77e92d57035031", + "0x8185439c8751e595825d7053518cbe121f191846a38d4dbcb558c3f9d7a3104f3153401adaaaf27843bbe2edb504bfe3", + "0xb3c00d8ece1518fca6b1215a139b0a0e26d9cba1b3a424f7ee59f30ce800a5db967279ed60958dd1f3ee69cf4dd1b204", + "0xa2e6cb6978e883f9719c3c0d44cfe8de0cc6f644b98f98858433bea8bbe7b612c8aca5952fccce4f195f9d54f9722dc2", + "0x99663087e3d5000abbec0fbda4e7342ec38846cc6a1505191fb3f1a337cb369455b7f8531a6eb8b0f7b2c4baf83cbe2b", + "0xab0836c6377a4dbc7ca6a4d6cf021d4cd60013877314dd05f351706b128d4af6337711ed3443cb6ca976f40d74070a9a", + "0x87abfd5126152fd3bac3c56230579b489436755ea89e0566aa349490b36a5d7b85028e9fb0710907042bcde6a6f5d7e3", + "0x974ba1033f75f60e0cf7c718a57ae1da3721cf9d0fb925714c46f027632bdd84cd9e6de4cf4d00bc55465b1c5ebb7384", + "0xa607b49d73689ac64f25cec71221d30d53e781e1100d19a2114a21da6507a60166166369d860bd314acb226596525670", + "0xa7c2b0b915d7beba94954f2aa7dd08ec075813661e2a3ecca5d28a0733e59583247fed9528eb28aba55b972cdbaf06eb", + "0xb8b3123e44128cc8efbe3270f2f94e50ca214a4294c71c3b851f8cbb70cb67fe9536cf07d04bf7fe380e5e3a29dd3c15", + "0xa59a07e343b62ad6445a0859a32b58c21a593f9ddbfe52049650f59628c93715aa1f4e1f45b109321756d0eeec8a5429", + "0x94f51f8a4ed18a6030d0aaa8899056744bd0e9dc9ac68f62b00355cddab11da5da16798db75f0bfbce0e5bdfe750c0b6", + "0x97460a97ca1e1fa5ce243b81425edc0ec19b7448e93f0b55bc9785eedeeafe194a3c8b33a61a5c72990edf375f122777", + "0x8fa859a089bc17d698a7ee381f37ce9beadf4e5b44fce5f6f29762bc04f96faff5d58c48c73631290325f05e9a1ecf49", + "0xabdf38f3b20fc95eff31de5aa9ef1031abfa48f1305ee57e4d507594570401503476d3bcc493838fc24d6967a3082c7f", + "0xb8914bfb82815abb86da35c64d39ab838581bc0bf08967192697d9663877825f2b9d6fbdcf9b410463482b3731361aef", + "0xa8187f9d22b193a5f578999954d6ec9aa9b32338ccadb8a3e1ce5bad5ea361d69016e1cdfac44e9d6c54e49dd88561b9", + "0xaac262cb7cba7fd62c14daa7b39677cabc1ef0947dd06dd89cac8570006a200f90d5f0353e84f5ff03179e3bebe14231", + "0xa630ef5ece9733b8c46c0a2df14a0f37647a85e69c63148e79ffdcc145707053f9f9d305c3f1cf3c7915cb46d33abd07", + "0xb102c237cb2e254588b6d53350dfda6901bd99493a3fbddb4121d45e0b475cf2663a40d7b9a75325eda83e4ba1e68cb3", + "0x86a930dd1ddcc16d1dfa00aa292cb6c2607d42c367e470aa920964b7c17ab6232a7108d1c2c11fc40fb7496547d0bbf8", + "0xa832fdc4500683e72a96cce61e62ac9ee812c37fe03527ad4cf893915ca1962cee80e72d4f82b20c8fc0b764376635a1", + "0x88ad985f448dabb04f8808efd90f273f11f5e6d0468b5489a1a6a3d77de342992a73eb842d419034968d733f101ff683", + "0x98a8538145f0d86f7fbf9a81c9140f6095c5bdd8960b1c6f3a1716428cd9cca1bf8322e6d0af24e6169abcf7df2b0ff6", + "0x9048c6eba5e062519011e177e955a200b2c00b3a0b8615bdecdebc217559d41058d3315f6d05617be531ef0f6aef0e51", + "0x833bf225ab6fc68cdcacf1ec1b50f9d05f5410e6cdcd8d56a3081dc2be8a8d07b81534d1ec93a25c2e270313dfb99e3b", + "0xa84bcd24c3da5e537e64a811b93c91bfc84d7729b9ead7f79078989a6eb76717d620c1fad17466a0519208651e92f5ff", + "0xb7cdd0a3fbd79aed93e1b5a44ca44a94e7af5ed911e4492f332e3a5ed146c7286bde01b52276a2fcc02780d2109874dd", + "0x8a19a09854e627cb95750d83c20c67442b66b35896a476358f993ba9ac114d32c59c1b3d0b8787ee3224cf3888b56c64", + "0xa9abd5afb8659ee52ada8fa5d57e7dd355f0a7350276f6160bec5fbf70d5f99234dd179eb221c913e22a49ec6d267846", + "0x8c13c4274c0d30d184e73eaf812200094bbbd57293780bdadbceb262e34dee5b453991e7f37c7333a654fc71c69d6445", + "0xa4320d73296ff8176ce0127ca1921c450e2a9c06eff936681ebaffb5a0b05b17fded24e548454de89aca2dcf6d7a9de4", + "0xb2b8b3e15c1f645f07783e5628aba614e60157889db41d8161d977606788842b67f83f361eae91815dc0abd84e09abd5", + "0xad26c3aa35ddfddc15719b8bb6c264aaec7065e88ac29ba820eb61f220fef451609a7bb037f3722d022e6c86e4f1dc88", + "0xb8615bf43e13ae5d7b8dd903ce37190800cd490f441c09b22aa29d7a29ed2c0417b7a08ead417868f1de2589deaadd80", + "0x8d3425e1482cd1e76750a76239d33c06b3554c3c3c87c15cb7ab58b1cee86a4c5c4178b44e23f36928365a1b484bde02", + "0x806893a62e38c941a7dd6f249c83af16596f69877cc737d8f73f6b8cd93cbc01177a7a276b2b8c6b0e5f2ad864db5994", + "0x86618f17fa4b0d65496b661bbb5ba3bc3a87129d30a4b7d4f515b904f4206ca5253a41f49fd52095861e5e065ec54f21", + "0x9551915da1304051e55717f4c31db761dcdcf3a1366c89a4af800a9e99aca93a357bf928307f098e62b44a02cb689a46", + "0x8f79c4ec0ec1146cb2a523b52fe33def90d7b5652a0cb9c2d1c8808a32293e00aec6969f5b1538e3a94cd1efa3937f86", + "0xa0c03e329a707300081780f1e310671315b4c6a4cedcb29697aedfabb07a9d5df83f27b20e9c44cf6b16e39d9ded5b98", + "0x86a7cfa7c8e7ce2c01dd0baec2139e97e8e090ad4e7b5f51518f83d564765003c65968f85481bbb97cb18f005ccc7d9f", + "0xa33811770c6dfda3f7f74e6ad0107a187fe622d61b444bbd84fd7ef6e03302e693b093df76f6ab39bb4e02afd84a575a", + "0x85480f5c10d4162a8e6702b5e04f801874d572a62a130be94b0c02b58c3c59bdcd48cd05f0a1c2839f88f06b6e3cd337", + "0x8e181011564b17f7d787fe0e7f3c87f6b62da9083c54c74fd6c357a1f464c123c1d3d8ade3cf72475000b464b14e2be3", + "0x8ee178937294b8c991337e0621ab37e9ffa4ca2bdb3284065c5e9c08aad6785d50cf156270ff9daf9a9127289710f55b", + "0x8bd1e8e2d37379d4b172f1aec96f2e41a6e1393158d7a3dbd9a95c8dd4f8e0b05336a42efc11a732e5f22b47fc5c271d", + "0x8f3da353cd487c13136a85677de8cedf306faae0edec733cf4f0046f82fa4639db4745b0095ff33a9766aba50de0cbcf", + "0x8d187c1e97638df0e4792b78e8c23967dac43d98ea268ca4aabea4e0fa06cb93183fd92d4c9df74118d7cc27bf54415e", + "0xa4c992f08c2f8bac0b74b3702fb0c75c9838d2ce90b28812019553d47613c14d8ce514d15443159d700b218c5a312c49", + "0xa6fd1874034a34c3ea962a316c018d9493d2b3719bb0ec4edbc7c56b240802b2228ab49bee6f04c8a3e9f6f24a48c1c2", + "0xb2efed8e799f8a15999020900dc2c58ece5a3641c90811b86a5198e593d7318b9d53b167818ccdfbe7df2414c9c34011", + "0x995ff7de6181ddf95e3ead746089c6148da3508e4e7a2323c81785718b754d356789b902e7e78e2edc6b0cbd4ff22c78", + "0x944073d24750a9068cbd020b834afc72d2dde87efac04482b3287b40678ad07588519a4176b10f2172a2c463d063a5cd", + "0x99db4b1bb76475a6fd75289986ef40367960279524378cc917525fb6ba02a145a218c1e9caeb99332332ab486a125ac0", + "0x89fce4ecd420f8e477af4353b16faabb39e063f3f3c98fde2858b1f2d1ef6eed46f0975a7c08f233b97899bf60ccd60a", + "0x8c09a4f07a02b80654798bc63aada39fd638d3e3c4236ccd8a5ca280350c31e4a89e5f4c9aafb34116e71da18c1226b8", + "0x85325cfa7ded346cc51a2894257eab56e7488dbff504f10f99f4cd2b630d913003761a50f175ed167e8073f1b6b63fb0", + "0xb678b4fbec09a8cc794dcbca185f133578f29e354e99c05f6d07ac323be20aecb11f781d12898168e86f2e0f09aca15e", + "0xa249cfcbca4d9ba0a13b5f6aac72bf9b899adf582f9746bb2ad043742b28915607467eb794fca3704278f9136f7642be", + "0x9438e036c836a990c5e17af3d78367a75b23c37f807228362b4d13e3ddcb9e431348a7b552d09d11a2e9680704a4514f", + "0x925ab70450af28c21a488bfb5d38ac994f784cf249d7fd9ad251bb7fd897a23e23d2528308c03415074d43330dc37ef4", + "0xa290563904d5a8c0058fc8330120365bdd2ba1fdbaef7a14bc65d4961bb4217acfaed11ab82669e359531f8bf589b8db", + "0xa7e07a7801b871fc9b981a71e195a3b4ba6b6313bc132b04796a125157e78fe5c11a3a46cf731a255ac2d78a4ae78cd0", + "0xb26cd2501ee72718b0eebab6fb24d955a71f363f36e0f6dff0ab1d2d7836dab88474c0cef43a2cc32701fca7e82f7df3", + "0xa1dc3b6c968f3de00f11275092290afab65b2200afbcfa8ddc70e751fa19dbbc300445d6d479a81bda3880729007e496", + "0xa9bc213e28b630889476a095947d323b9ac6461dea726f2dc9084473ae8e196d66fb792a21905ad4ec52a6d757863e7d", + "0xb25d178df8c2df8051e7c888e9fa677fde5922e602a95e966db9e4a3d6b23ce043d7dc48a5b375c6b7c78e966893e8c3", + "0xa1c8d88d72303692eaa7adf68ea41de4febec40cc14ae551bb4012afd786d7b6444a3196b5d9d5040655a3366d96b7cd", + "0xb22bd44f9235a47118a9bbe2ba5a2ba9ec62476061be2e8e57806c1a17a02f9a51403e849e2e589520b759abd0117683", + "0xb8add766050c0d69fe81d8d9ea73e1ed05f0135d093ff01debd7247e42dbb86ad950aceb3b50b9af6cdc14ab443b238f", + "0xaf2cf95f30ef478f018cf81d70d47d742120b09193d8bb77f0d41a5d2e1a80bfb467793d9e2471b4e0ad0cb2c3b42271", + "0x8af5ef2107ad284e246bb56e20fef2a255954f72de791cbdfd3be09f825298d8466064f3c98a50496c7277af32b5c0bc", + "0x85dc19558572844c2849e729395a0c125096476388bd1b14fa7f54a7c38008fc93e578da3aac6a52ff1504d6ca82db05", + "0xae8c9b43c49572e2e166d704caf5b4b621a3b47827bb2a3bcd71cdc599bba90396fd9a405261b13e831bb5d44c0827d7", + "0xa7ba7efede25f02e88f6f4cbf70643e76784a03d97e0fbd5d9437c2485283ad7ca3abb638a5f826cd9f6193e5dec0b6c", + "0x94a9d122f2f06ef709fd8016fd4b712d88052245a65a301f5f177ce22992f74ad05552b1f1af4e70d1eac62cef309752", + "0x82d999b3e7cf563833b8bc028ff63a6b26eb357dfdb3fd5f10e33a1f80a9b2cfa7814d871b32a7ebfbaa09e753e37c02", + "0xaec6edcde234df502a3268dd2c26f4a36a2e0db730afa83173f9c78fcb2b2f75510a02b80194327b792811caefda2725", + "0x94c0bfa66c9f91d462e9194144fdd12d96f9bbe745737e73bab8130607ee6ea9d740e2cfcbbd00a195746edb6369ee61", + "0xab7573dab8c9d46d339e3f491cb2826cabe8b49f85f1ede78d845fc3995537d1b4ab85140b7d0238d9c24daf0e5e2a7e", + "0x87e8b16832843251fe952dadfd01d41890ed4bb4b8fa0254550d92c8cced44368225eca83a6c3ad47a7f81ff8a80c984", + "0x9189d2d9a7c64791b19c0773ad4f0564ce6bea94aa275a917f78ad987f150fdb3e5e26e7fef9982ac184897ecc04683f", + "0xb3661bf19e2da41415396ae4dd051a9272e8a2580b06f1a1118f57b901fa237616a9f8075af1129af4eabfefedbe2f1c", + "0xaf43c86661fb15daf5d910a4e06837225e100fb5680bd3e4b10f79a2144c6ec48b1f8d6e6b98e067d36609a5d038889a", + "0x82ac0c7acaa83ddc86c5b4249aae12f28155989c7c6b91e5137a4ce05113c6cbc16f6c44948b0efd8665362d3162f16a", + "0x8f268d1195ab465beeeb112cd7ffd5d5548559a8bc01261106d3555533fc1971081b25558d884d552df0db1cddda89d8", + "0x8ef7caa5521f3e037586ce8ac872a4182ee20c7921c0065ed9986c047e3dda08294da1165f385d008b40d500f07d895f", + "0x8c2f98f6880550573fad46075d3eba26634b5b025ce25a0b4d6e0193352c8a1f0661064027a70fe8190b522405f9f4e3", + "0xb7653f353564feb164f0f89ec7949da475b8dad4a4d396d252fc2a884f6932d027b7eb2dc4d280702c74569319ed701a", + "0xa026904f4066333befd9b87a8fad791d014096af60cdd668ef919c24dbe295ff31f7a790e1e721ba40cf5105abca67f4", + "0x988f982004ada07a22dd345f2412a228d7a96b9cae2c487de42e392afe1e35c2655f829ce07a14629148ce7079a1f142", + "0x9616add009067ed135295fb74d5b223b006b312bf14663e547a0d306694ff3a8a7bb9cfc466986707192a26c0bce599f", + "0xad4c425de9855f6968a17ee9ae5b15e0a5b596411388cf976df62ecc6c847a6e2ddb2cea792a5f6e9113c2445dba3e5c", + "0xb698ac9d86afa3dc69ff8375061f88e3b0cff92ff6dfe747cebaf142e813c011851e7a2830c10993b715e7fd594604a9", + "0xa386fa189847bb3b798efca917461e38ead61a08b101948def0f82cd258b945ed4d45b53774b400af500670149e601b7", + "0x905c95abda2c68a6559d8a39b6db081c68cef1e1b4be63498004e1b2f408409be9350b5b5d86a30fd443e2b3e445640a", + "0x9116dade969e7ce8954afcdd43e5cab64dc15f6c1b8da9d2d69de3f02ba79e6c4f6c7f54d6bf586d30256ae405cd1e41", + "0xa3084d173eacd08c9b5084a196719b57e47a0179826fda73466758235d7ecdb87cbcf097bd6b510517d163a85a7c7edd", + "0x85bb00415ad3c9be99ff9ba83672cc59fdd24356b661ab93713a3c8eab34e125d8867f628a3c3891b8dc056e69cd0e83", + "0x8d58541f9f39ed2ee4478acce5d58d124031338ec11b0d55551f00a5a9a6351faa903a5d7c132dc5e4bb026e9cbd18e4", + "0xa622adf72dc250e54f672e14e128c700166168dbe0474cecb340da175346e89917c400677b1bc1c11fcc4cc26591d9db", + "0xb3f865014754b688ca8372e8448114fff87bf3ca99856ab9168894d0c4679782c1ced703f5b74e851b370630f5e6ee86", + "0xa7e490b2c40c2446fcd91861c020da9742c326a81180e38110558bb5d9f2341f1c1885e79b364e6419023d1cbdc47380", + "0xb3748d472b1062e54572badbb8e87ac36534407f74932e7fc5b8392d008e8e89758f1671d1e4d30ab0fa40551b13bb5e", + "0x89898a5c5ec4313aabc607b0049fd1ebad0e0c074920cf503c9275b564d91916c2c446d3096491c950b7af3ac5e4b0ed", + "0x8eb8c83fef2c9dd30ea44e286e9599ec5c20aba983f702e5438afe2e5b921884327ad8d1566c72395587efac79ca7d56", + "0xb92479599e806516ce21fb0bd422a1d1d925335ebe2b4a0a7e044dd275f30985a72b97292477053ac5f00e081430da80", + "0xa34ae450a324fe8a3c25a4d653a654f9580ed56bbea213b8096987bbad0f5701d809a17076435e18017fea4d69f414bc", + "0x81381afe6433d62faf62ea488f39675e0091835892ecc238e02acf1662669c6d3962a71a3db652f6fe3bc5f42a0e5dc5", + "0xa430d475bf8580c59111103316fe1aa79c523ea12f1d47a976bbfae76894717c20220e31cf259f08e84a693da6688d70", + "0xb842814c359754ece614deb7d184d679d05d16f18a14b288a401cef5dad2cf0d5ee90bad487b80923fc5573779d4e4e8", + "0x971d9a2627ff2a6d0dcf2af3d895dfbafca28b1c09610c466e4e2bff2746f8369de7f40d65b70aed135fe1d72564aa88", + "0x8f4ce1c59e22b1ce7a0664caaa7e53735b154cfba8d2c5cc4159f2385843de82ab58ed901be876c6f7fce69cb4130950", + "0x86cc9dc321b6264297987000d344fa297ef45bcc2a4df04e458fe2d907ad304c0ea2318e32c3179af639a9a56f3263cf", + "0x8229e0876dfe8f665c3fb19b250bd89d40f039bbf1b331468b403655be7be2e104c2fd07b9983580c742d5462ca39a43", + "0x99299d73066e8eb128f698e56a9f8506dfe4bd014931e86b6b487d6195d2198c6c5bf15cccb40ccf1f8ddb57e9da44a2", + "0xa3a3be37ac554c574b393b2f33d0a32a116c1a7cfeaf88c54299a4da2267149a5ecca71f94e6c0ef6e2f472b802f5189", + "0xa91700d1a00387502cdba98c90f75fbc4066fefe7cc221c8f0e660994c936badd7d2695893fde2260c8c11d5bdcdd951", + "0x8e03cae725b7f9562c5c5ab6361644b976a68bada3d7ca508abca8dfc80a469975689af1fba1abcf21bc2a190dab397d", + "0xb01461ad23b2a8fa8a6d241e1675855d23bc977dbf4714add8c4b4b7469ccf2375cec20e80cedfe49361d1a30414ac5b", + "0xa2673bf9bc621e3892c3d7dd4f1a9497f369add8cbaa3472409f4f86bd21ac67cfac357604828adfee6ada1835365029", + "0xa042dff4bf0dfc33c178ba1b335e798e6308915128de91b12e5dbbab7c4ac8d60a01f6aea028c3a6d87b9b01e4e74c01", + "0x86339e8a75293e4b3ae66b5630d375736b6e6b6b05c5cda5e73fbf7b2f2bd34c18a1d6cefede08625ce3046e77905cb8", + "0xaf2ebe1b7d073d03e3d98bc61af83bf26f7a8c130fd607aa92b75db22d14d016481b8aa231e2c9757695f55b7224a27f", + "0xa00ee882c9685e978041fd74a2c465f06e2a42ffd3db659053519925be5b454d6f401e3c12c746e49d910e4c5c9c5e8c", + "0x978a781c0e4e264e0dad57e438f1097d447d891a1e2aa0d5928f79a9d5c3faae6f258bc94fdc530b7b2fa6a9932bb193", + "0xaa4b7ce2e0c2c9e9655bf21e3e5651c8503bce27483017b0bf476be743ba06db10228b3a4c721219c0779747f11ca282", + "0xb003d1c459dacbcf1a715551311e45d7dbca83a185a65748ac74d1800bbeaba37765d9f5a1a221805c571910b34ebca8", + "0x95b6e531b38648049f0d19de09b881baa1f7ea3b2130816b006ad5703901a05da57467d1a3d9d2e7c73fb3f2e409363c", + "0xa6cf9c06593432d8eba23a4f131bb7f72b9bd51ab6b4b772a749fe03ed72b5ced835a349c6d9920dba2a39669cb7c684", + "0xaa3d59f6e2e96fbb66195bc58c8704e139fa76cd15e4d61035470bd6e305db9f98bcbf61ac1b95e95b69ba330454c1b3", + "0xb57f97959c208361de6d7e86dff2b873068adb0f158066e646f42ae90e650079798f165b5cd713141cd3a2a90a961d9a", + "0xa76ee8ed9052f6a7a8c69774bb2597be182942f08115baba03bf8faaeaee526feba86120039fe8ca7b9354c3b6e0a8e6", + "0x95689d78c867724823f564627d22d25010f278674c6d2d0cdb10329169a47580818995d1d727ce46c38a1e47943ebb89", + "0xab676d2256c6288a88e044b3d9ffd43eb9d5aaee00e8fc60ac921395fb835044c71a26ca948e557fed770f52d711e057", + "0x96351c72785c32e5d004b6f4a1259fb8153d631f0c93fed172f18e8ba438fbc5585c1618deeabd0d6d0b82173c2e6170", + "0x93dd8d3db576418e22536eba45ab7f56967c6c97c64260d6cddf38fb19c88f2ec5cd0e0156f50e70855eee8a2b879ffd", + "0xad6ff16f40f6de3d7a737f8e6cebd8416920c4ff89dbdcd75eabab414af9a6087f83ceb9aff7680aa86bff98bd09c8cc", + "0x84de53b11671abc9c38710e19540c5c403817562aeb22a88404cdaff792c1180f717dbdfe8f54940c062c4d032897429", + "0x872231b9efa1cdd447b312099a5c164c560440a9441d904e70f5abfc3b2a0d16be9a01aca5e0a2599a61e19407587e3d", + "0x88f44ac27094a2aa14e9dc40b099ee6d68f97385950f303969d889ee93d4635e34dff9239103bdf66a4b7cbba3e7eb7a", + "0xa59afebadf0260e832f6f44468443562f53fbaf7bcb5e46e1462d3f328ac437ce56edbca617659ac9883f9e13261fad7", + "0xb1990e42743a88de4deeacfd55fafeab3bc380cb95de43ed623d021a4f2353530bcab9594389c1844b1c5ea6634c4555", + "0x85051e841149a10e83f56764e042182208591396d0ce78c762c4a413e6836906df67f38c69793e158d64fef111407ba3", + "0x9778172bbd9b1f2ec6bbdd61829d7b39a7df494a818e31c654bf7f6a30139899c4822c1bf418dd4f923243067759ce63", + "0x9355005b4878c87804fc966e7d24f3e4b02bed35b4a77369d01f25a3dcbff7621b08306b1ac85b76fe7b4a3eb5f839b1", + "0x8f9dc6a54fac052e236f8f0e1f571ac4b5308a43acbe4cc8183bce26262ddaf7994e41cf3034a4cbeca2c505a151e3b1", + "0x8cc59c17307111723fe313046a09e0e32ea0cce62c13814ab7c6408c142d6a0311d801be4af53fc9240523f12045f9ef", + "0x8e6057975ed40a1932e47dd3ac778f72ee2a868d8540271301b1aa6858de1a5450f596466494a3e0488be4fbeb41c840", + "0x812145efbd6559ae13325d56a15940ca4253b17e72a9728986b563bb5acc13ec86453796506ac1a8f12bd6f9e4a288c3", + "0x911da0a6d6489eb3dab2ec4a16e36127e8a291ae68a6c2c9de33e97f3a9b1f00da57a94e270a0de79ecc5ecb45d19e83", + "0xb72ea85973f4b2a7e6e71962b0502024e979a73c18a9111130e158541fa47bbaaf53940c8f846913a517dc69982ba9e1", + "0xa7a56ad1dbdc55f177a7ad1d0af78447dc2673291e34e8ab74b26e2e2e7d8c5fe5dc89e7ef60f04a9508847b5b3a8188", + "0xb52503f6e5411db5d1e70f5fb72ccd6463fa0f197b3e51ca79c7b5a8ab2e894f0030476ada72534fa4eb4e06c3880f90", + "0xb51c7957a3d18c4e38f6358f2237b3904618d58b1de5dec53387d25a63772e675a5b714ad35a38185409931157d4b529", + "0xb86b4266e719d29c043d7ec091547aa6f65bbf2d8d831d1515957c5c06513b72aa82113e9645ad38a7bc3f5383504fa6", + "0xb95b547357e6601667b0f5f61f261800a44c2879cf94e879def6a105b1ad2bbf1795c3b98a90d588388e81789bd02681", + "0xa58fd4c5ae4673fa350da6777e13313d5d37ed1dafeeb8f4f171549765b84c895875d9d3ae6a9741f3d51006ef81d962", + "0x9398dc348d078a604aadc154e6eef2c0be1a93bb93ba7fe8976edc2840a3a318941338cc4d5f743310e539d9b46613d2", + "0x902c9f0095014c4a2f0dccaaab543debba6f4cc82c345a10aaf4e72511725dbed7a34cd393a5f4e48a3e5142b7be84ed", + "0xa7c0447849bb44d04a0393a680f6cd390093484a79a147dd238f5d878030d1c26646d88211108e59fe08b58ad20c6fbd", + "0x80db045535d6e67a422519f5c89699e37098449d249698a7cc173a26ccd06f60238ae6cc7242eb780a340705c906790c", + "0x8e52b451a299f30124505de2e74d5341e1b5597bdd13301cc39b05536c96e4380e7f1b5c7ef076f5b3005a868657f17c", + "0x824499e89701036037571761e977654d2760b8ce21f184f2879fda55d3cda1e7a95306b8abacf1caa79d3cc075b9d27f", + "0x9049b956b77f8453d2070607610b79db795588c0cec12943a0f5fe76f358dea81e4f57a4692112afda0e2c05c142b26f", + "0x81911647d818a4b5f4990bfd4bc13bf7be7b0059afcf1b6839333e8569cdb0172fd2945410d88879349f677abaed5eb3", + "0xad4048f19b8194ed45b6317d9492b71a89a66928353072659f5ce6c816d8f21e69b9d1817d793effe49ca1874daa1096", + "0x8d22f7b2ddb31458661abd34b65819a374a1f68c01fc6c9887edeba8b80c65bceadb8f57a3eb686374004b836261ef67", + "0x92637280c259bc6842884db3d6e32602a62252811ae9b019b3c1df664e8809ffe86db88cfdeb8af9f46435c9ee790267", + "0xa2f416379e52e3f5edc21641ea73dc76c99f7e29ea75b487e18bd233856f4c0183429f378d2bfc6cd736d29d6cadfa49", + "0x882cb6b76dbdc188615dcf1a8439eba05ffca637dd25197508156e03c930b17b9fed2938506fdd7b77567cb488f96222", + "0xb68b621bb198a763fb0634eddb93ed4b5156e59b96c88ca2246fd1aea3e6b77ed651e112ac41b30cd361fadc011d385e", + "0xa3cb22f6b675a29b2d1f827cacd30df14d463c93c3502ef965166f20d046af7f9ab7b2586a9c64f4eae4fad2d808a164", + "0x8302d9ce4403f48ca217079762ce42cee8bc30168686bb8d3a945fbd5acd53b39f028dce757b825eb63af2d5ae41169d", + "0xb2eef1fbd1a176f1f4cd10f2988c7329abe4eb16c7405099fb92baa724ab397bc98734ef7d4b24c0f53dd90f57520d04", + "0xa1bbef0bd684a3f0364a66bde9b29326bac7aa3dde4caed67f14fb84fed3de45c55e406702f1495a3e2864d4ee975030", + "0x976acdb0efb73e3a3b65633197692dedc2adaed674291ae3df76b827fc866d214e9cac9ca46baefc4405ff13f953d936", + "0xb9fbf71cc7b6690f601f0b1c74a19b7d14254183a2daaafec7dc3830cba5ae173d854bbfebeca985d1d908abe5ef0cda", + "0x90591d7b483598c94e38969c4dbb92710a1a894bcf147807f1bcbd8aa3ac210b9f2be65519aa829f8e1ccdc83ad9b8cf", + "0xa30568577c91866b9c40f0719d46b7b3b2e0b4a95e56196ac80898a2d89cc67880e1229933f2cd28ee3286f8d03414d7", + "0x97589a88c3850556b359ec5e891f0937f922a751ac7c95949d3bbc7058c172c387611c0f4cb06351ef02e5178b3dd9e4", + "0x98e7bbe27a1711f4545df742f17e3233fbcc63659d7419e1ca633f104cb02a32c84f2fac23ca2b84145c2672f68077ab", + "0xa7ddb91636e4506d8b7e92aa9f4720491bb71a72dadc47c7f4410e15f93e43d07d2b371951a0e6a18d1bd087aa96a5c4", + "0xa7c006692227a06db40bceac3d5b1daae60b5692dd9b54772bedb5fea0bcc91cbcdb530cac31900ffc70c5b3ffadc969", + "0x8d3ec6032778420dfa8be52066ba0e623467df33e4e1901dbadd586c5d750f4ccde499b5197e26b9ea43931214060f69", + "0x8d9a8410518ea64f89df319bfd1fc97a0971cdb9ad9b11d1f8fe834042ea7f8dce4db56eeaf179ff8dda93b6db93e5ce", + "0xa3c533e9b3aa04df20b9ff635cb1154ce303e045278fcf3f10f609064a5445552a1f93989c52ce852fd0bbd6e2b6c22e", + "0x81934f3a7f8c1ae60ec6e4f212986bcc316118c760a74155d06ce0a8c00a9b9669ec4e143ca214e1b995e41271774fd9", + "0xab8e2d01a71192093ef8fafa7485e795567cc9db95a93fb7cc4cf63a391ef89af5e2bfad4b827fffe02b89271300407f", + "0x83064a1eaa937a84e392226f1a60b7cfad4efaa802f66de5df7498962f7b2649924f63cd9962d47906380b97b9fe80e1", + "0xb4f5e64a15c6672e4b55417ee5dc292dcf93d7ea99965a888b1cc4f5474a11e5b6520eacbcf066840b343f4ceeb6bf33", + "0xa63d278b842456ef15c278b37a6ea0f27c7b3ffffefca77c7a66d2ea06c33c4631eb242bbb064d730e70a8262a7b848a", + "0x83a41a83dbcdf0d22dc049de082296204e848c453c5ab1ba75aa4067984e053acf6f8b6909a2e1f0009ed051a828a73b", + "0x819485b036b7958508f15f3c19436da069cbe635b0318ebe8c014cf1ef9ab2df038c81161b7027475bcfa6fff8dd9faf", + "0xaa40e38172806e1e045e167f3d1677ef12d5dcdc89b43639a170f68054bd196c4fae34c675c1644d198907a03f76ba57", + "0x969bae484883a9ed1fbed53b26b3d4ee4b0e39a6c93ece5b3a49daa01444a1c25727dabe62518546f36b047b311b177c", + "0x80a9e73a65da99664988b238096a090d313a0ee8e4235bc102fa79bb337b51bb08c4507814eb5baec22103ec512eaab0", + "0x86604379aec5bddda6cbe3ef99c0ac3a3c285b0b1a15b50451c7242cd42ae6b6c8acb717dcca7917838432df93a28502", + "0xa23407ee02a495bed06aa7e15f94cfb05c83e6d6fba64456a9bbabfa76b2b68c5c47de00ba169e710681f6a29bb41a22", + "0x98cff5ecc73b366c6a01b34ac9066cb34f7eeaf4f38a5429bad2d07e84a237047e2a065c7e8a0a6581017dadb4695deb", + "0x8de9f68a938f441f3b7ab84bb1f473c5f9e5c9e139e42b7ccee1d254bd57d0e99c2ccda0f3198f1fc5737f6023dd204e", + "0xb0ce48d815c2768fb472a315cad86aa033d0e9ca506f146656e2941829e0acb735590b4fbc713c2d18d3676db0a954ac", + "0x82f485cdefd5642a6af58ac6817991c49fac9c10ace60f90b27f1788cc026c2fe8afc83cf499b3444118f9f0103598a8", + "0x82c24550ed512a0d53fc56f64cc36b553823ae8766d75d772dacf038c460f16f108f87a39ceef7c66389790f799dbab3", + "0x859ffcf1fe9166388316149b9acc35694c0ea534d43f09dae9b86f4aa00a23b27144dda6a352e74b9516e8c8d6fc809c", + "0xb8f7f353eec45da77fb27742405e5ad08d95ec0f5b6842025be9def3d9892f85eb5dd0921b41e6eff373618dba215bca", + "0x8ccca4436f9017e426229290f5cd05eac3f16571a4713141a7461acfe8ae99cd5a95bf5b6df129148693c533966145da", + "0xa2c67ecc19c0178b2994846fea4c34c327a5d786ac4b09d1d13549d5be5996d8a89021d63d65cb814923388f47cc3a03", + "0xaa0ff87d676b418ec08f5cbf577ac7e744d1d0e9ebd14615b550eb86931eafd2a36d4732cc5d6fab1713fd7ab2f6f7c0", + "0x8aef4730bb65e44efd6bb9441c0ae897363a2f3054867590a2c2ecf4f0224e578c7a67f10b40f8453d9f492ac15a9b2d", + "0x86a187e13d8fba5addcfdd5b0410cedd352016c930f913addd769ee09faa6be5ca3e4b1bdb417a965c643a99bd92be42", + "0xa0a4e9632a7a094b14b29b78cd9c894218cdf6783e61671e0203865dc2a835350f465fbaf86168f28af7c478ca17bc89", + "0xa8c7b02d8deff2cd657d8447689a9c5e2cd74ef57c1314ac4d69084ac24a7471954d9ff43fe0907d875dcb65fd0d3ce5", + "0x97ded38760aa7be6b6960b5b50e83b618fe413cbf2bcc1da64c05140bcc32f5e0e709cd05bf8007949953fac5716bad9", + "0xb0d293835a24d64c2ae48ce26e550b71a8c94a0883103757fb6b07e30747f1a871707d23389ba2b2065fa6bafe220095", + "0x8f9e291bf849feaa575592e28e3c8d4b7283f733d41827262367ea1c40f298c7bcc16505255a906b62bf15d9f1ba85fb", + "0x998f4e2d12708b4fd85a61597ca2eddd750f73c9e0c9b3cf0825d8f8e01f1628fd19797dcaed3b16dc50331fc6b8b821", + "0xb30d1f8c115d0e63bf48f595dd10908416774c78b3bbb3194192995154d80ea042d2e94d858de5f8aa0261b093c401fd", + "0xb5d9c75bb41f964cbff3f00e96d9f1480c91df8913f139f0d385d27a19f57a820f838eb728e46823cbff00e21c660996", + "0xa6edec90b5d25350e2f5f0518777634f9e661ec9d30674cf5b156c4801746d62517751d90074830ac0f4b09911c262f1", + "0x82f98da1264b6b75b8fbeb6a4d96d6a05b25c24db0d57ba3a38efe3a82d0d4e331b9fc4237d6494ccfe4727206457519", + "0xb89511843453cf4ecd24669572d6371b1e529c8e284300c43e0d5bb6b3aaf35aeb634b3cb5c0a2868f0d5e959c1d0772", + "0xa82bf065676583e5c1d3b81987aaae5542f522ba39538263a944bb33ea5b514c649344a96c0205a3b197a3f930fcda6c", + "0xa37b47ea527b7e06c460776aa662d9a49ff4149d3993f1a974b0dd165f7171770d189b0e2ea54fd5fccb6a14b116e68a", + "0xa1017677f97dda818274d47556d09d0e4ccacb23a252f82a6cfe78c630ad46fb9806307445a59fb61262182de3a2b29c", + "0xb01e9fcac239ba270e6877b79273ddd768bf8a51d2ed8a051b1c11e18eff3de5920e2fcbfbd26f06d381eddd3b1f1e1b", + "0x82fcd53d803b1c8e4ed76adc339b7f3a5962d37042b9683aabac7513ac68775d4a566a9460183926a6a95dbe7d551a1f", + "0xa763e78995d55cd21cdb7ef75d9642d6e1c72453945e346ab6690c20a4e1eeec61bb848ef830ae4b56182535e3c71d8f", + "0xb769f4db602251d4b0a1186782799bdcef66de33c110999a5775c50b349666ffd83d4c89714c4e376f2efe021a5cfdb2", + "0xa59cbd1b785efcfa6e83fc3b1d8cf638820bc0c119726b5368f3fba9dce8e3414204fb1f1a88f6c1ff52e87961252f97", + "0x95c8c458fd01aa23ecf120481a9c6332ebec2e8bb70a308d0576926a858457021c277958cf79017ddd86a56cacc2d7db", + "0x82eb41390800287ae56e77f2e87709de5b871c8bdb67c10a80fc65f3acb9f7c29e8fa43047436e8933f27449ea61d94d", + "0xb3ec25e3545eb83aed2a1f3558d1a31c7edde4be145ecc13b33802654b77dc049b4f0065069dd9047b051e52ab11dcdd", + "0xb78a0c715738f56f0dc459ab99e252e3b579b208142836b3c416b704ca1de640ca082f29ebbcee648c8c127df06f6b1e", + "0xa4083149432eaaf9520188ebf4607d09cf664acd1f471d4fb654476e77a9eaae2251424ffda78d09b6cb880df35c1219", + "0x8c52857d68d6e9672df3db2df2dbf46b516a21a0e8a18eec09a6ae13c1ef8f369d03233320dd1c2c0bbe00abfc1ea18b", + "0x8c856089488803066bff3f8d8e09afb9baf20cecc33c8823c1c0836c3d45498c3de37e87c016b705207f60d2b00f8609", + "0x831a3df39be959047b2aead06b4dcd3012d7b29417f642b83c9e8ce8de24a3dbbd29c6fdf55e2db3f7ea04636c94e403", + "0xaed84d009f66544addabe404bf6d65af7779ce140dc561ff0c86a4078557b96b2053b7b8a43432ffb18cd814f143b9da", + "0x93282e4d72b0aa85212a77b336007d8ba071eea17492da19860f1ad16c1ea8867ccc27ef5c37c74b052465cc11ea4f52", + "0xa7b78b8c8d057194e8d68767f1488363f77c77bddd56c3da2bc70b6354c7aa76247c86d51f7371aa38a4aa7f7e3c0bb7", + "0xb1c77283d01dcd1bde649b5b044eac26befc98ff57cbee379fb5b8e420134a88f2fc7f0bf04d15e1fbd45d29e7590fe6", + "0xa4aa8de70330a73b2c6458f20a1067eed4b3474829b36970a8df125d53bbdda4f4a2c60063b7cccb0c80fc155527652f", + "0x948a6c79ba1b8ad7e0bed2fae2f0481c4e41b4d9bbdd9b58164e28e9065700e83f210c8d5351d0212e0b0b68b345b3a5", + "0x86a48c31dcbbf7b082c92d28e1f613a2378a910677d7db3a349dc089e4a1e24b12eee8e8206777a3a8c64748840b7387", + "0x976adb1af21e0fc34148917cf43d933d7bfd3fd12ed6c37039dcd5a4520e3c6cf5868539ba5bf082326430deb8a4458d", + "0xb93e1a4476f2c51864bb4037e7145f0635eb2827ab91732b98d49b6c07f6ac443111aa1f1da76d1888665cb897c3834e", + "0x8afd46fb23bf869999fa19784b18a432a1f252d09506b8dbb756af900518d3f5f244989b3d7c823d9029218c655d3dc6", + "0x83f1e59e3abeed18cdc632921672673f1cb6e330326e11c4e600e13e0d5bc11bdc970ae12952e15103a706fe720bf4d6", + "0x90ce4cc660714b0b673d48010641c09c00fc92a2c596208f65c46073d7f349dd8e6e077ba7dcef9403084971c3295b76", + "0x8b09b0f431a7c796561ecf1549b85048564de428dac0474522e9558b6065fede231886bc108539c104ce88ebd9b5d1b0", + "0x85d6e742e2fb16a7b0ba0df64bc2c0dbff9549be691f46a6669bca05e89c884af16822b85faefefb604ec48c8705a309", + "0xa87989ee231e468a712c66513746fcf03c14f103aadca0eac28e9732487deb56d7532e407953ab87a4bf8961588ef7b0", + "0xb00da10efe1c29ee03c9d37d5918e391ae30e48304e294696b81b434f65cf8c8b95b9d1758c64c25e534d045ba28696f", + "0x91c0e1fb49afe46c7056400baa06dbb5f6e479db78ee37e2d76c1f4e88994357e257b83b78624c4ef6091a6c0eb8254d", + "0x883fb797c498297ccbf9411a3e727c3614af4eccde41619b773dc7f3259950835ee79453debf178e11dec4d3ada687a0", + "0xa14703347e44eb5059070b2759297fcfcfc60e6893c0373eea069388eba3950aa06f1c57cd2c30984a2d6f9e9c92c79e", + "0xafebc7585b304ceba9a769634adff35940e89cd32682c78002822aab25eec3edc29342b7f5a42a56a1fec67821172ad5", + "0xaea3ff3822d09dba1425084ca95fd359718d856f6c133c5fabe2b2eed8303b6e0ba0d8698b48b93136a673baac174fd9", + "0xaf2456a09aa777d9e67aa6c7c49a1845ea5cdda2e39f4c935c34a5f8280d69d4eec570446998cbbe31ede69a91e90b06", + "0x82cada19fed16b891ef3442bafd49e1f07c00c2f57b2492dd4ee36af2bd6fd877d6cb41188a4d6ce9ec8d48e8133d697", + "0x82a21034c832287f616619a37c122cee265cc34ae75e881fcaea4ea7f689f3c2bc8150bbf7dbcfd123522bfb7f7b1d68", + "0x86877217105f5d0ec3eeff0289fc2a70d505c9fdf7862e8159553ef60908fb1a27bdaf899381356a4ef4649072a9796c", + "0x82b196e49c6e861089a427c0b4671d464e9d15555ffb90954cd0d630d7ae02eb3d98ceb529d00719c2526cd96481355a", + "0xa29b41d0d43d26ce76d4358e0db2b77df11f56e389f3b084d8af70a636218bd3ac86b36a9fe46ec9058c26a490f887f7", + "0xa4311c4c20c4d7dd943765099c50f2fd423e203ccfe98ff00087d205467a7873762510cac5fdce7a308913ed07991ed7", + "0xb1f040fc5cc51550cb2c25cf1fd418ecdd961635a11f365515f0cb4ffb31da71f48128c233e9cc7c0cf3978d757ec84e", + "0xa9ebae46f86d3bd543c5f207ed0d1aed94b8375dc991161d7a271f01592912072e083e2daf30c146430894e37325a1b9", + "0x826418c8e17ad902b5fe88736323a47e0ca7a44bce4cbe27846ec8fe81de1e8942455dda6d30e192cdcc73e11df31256", + "0x85199db563427c5edcbac21f3d39fec2357be91fb571982ddcdc4646b446ad5ced84410de008cb47b3477ee0d532daf8", + "0xb7eed9cd400b2ca12bf1d9ae008214b8561fb09c8ad9ff959e626ffde00fee5ff2f5b6612e231f2a1a9b1646fcc575e3", + "0x8b40bf12501dcbac78f5a314941326bfcddf7907c83d8d887d0bb149207f85d80cd4dfbd7935439ea7b14ea39a3fded7", + "0x83e3041af302485399ba6cd5120e17af61043977083887e8d26b15feec4a6b11171ac5c06e6ad0971d4b58a81ff12af3", + "0x8f5b9a0eecc589dbf8c35a65d5e996a659277ef6ea509739c0cb7b3e2da9895e8c8012de662e5b23c5fa85d4a8f48904", + "0x835d71ed5e919d89d8e6455f234f3ff215462c4e3720c371ac8c75e83b19dfe3ae15a81547e4dc1138e5f5997f413cc9", + "0x8b7d2e4614716b1db18e9370176ea483e6abe8acdcc3dcdf5fb1f4d22ca55d652feebdccc171c6de38398d9f7bfdec7a", + "0x93eace72036fe57d019676a02acf3d224cf376f166658c1bf705db4f24295881d477d6fdd7916efcfceff8c7a063deda", + "0xb1ac460b3d516879a84bc886c54f020a9d799e7c49af3e4d7de5bf0d2793c852254c5d8fe5616147e6659512e5ccb012", + "0xacd0947a35cb167a48bcd9667620464b54ac0e78f9316b4aa92dcaab5422d7a732087e52e1c827faa847c6b2fe6e7766", + "0x94ac33d21c3d12ff762d32557860e911cd94d666609ddcc42161b9c16f28d24a526e8b10bb03137257a92cec25ae637d", + "0x832e02058b6b994eadd8702921486241f9a19e68ed1406dad545e000a491ae510f525ccf9d10a4bba91c68f2c53a0f58", + "0x9471035d14f78ff8f463b9901dd476b587bb07225c351161915c2e9c6114c3c78a501379ab6fb4eb03194c457cbd22bf", + "0xab64593e034c6241d357fcbc32d8ea5593445a5e7c24cac81ad12bd2ef01843d477a36dc1ba21dbe63b440750d72096a", + "0x9850f3b30045e927ad3ec4123a32ed2eb4c911f572b6abb79121873f91016f0d80268de8b12e2093a4904f6e6cab7642", + "0x987212c36b4722fe2e54fa30c52b1e54474439f9f35ca6ad33c5130cd305b8b54b532dd80ffd2c274105f20ce6d79f6e", + "0x8b4d0c6abcb239b5ed47bef63bc17efe558a27462c8208fa652b056e9eae9665787cd1aee34fbb55beb045c8bfdb882b", + "0xa9f3483c6fee2fe41312d89dd4355d5b2193ac413258993805c5cbbf0a59221f879386d3e7a28e73014f10e65dd503d9", + "0xa2225da3119b9b7c83d514b9f3aeb9a6d9e32d9cbf9309cbb971fd53c4b2c001d10d880a8ad8a7c281b21d85ceca0b7c", + "0xa050be52e54e676c151f7a54453bbb707232f849beab4f3bf504b4d620f59ed214409d7c2bd3000f3ff13184ccda1c35", + "0xadbccf681e15b3edb6455a68d292b0a1d0f5a4cb135613f5e6db9943f02181341d5755875db6ee474e19ace1c0634a28", + "0x8b6eff675632a6fad0111ec72aacc61c7387380eb87933fd1d098856387d418bd38e77d897e65d6fe35951d0627c550b", + "0xaabe2328ddf90989b15e409b91ef055cb02757d34987849ae6d60bef2c902bf8251ed21ab30acf39e500d1d511e90845", + "0x92ba4eb1f796bc3d8b03515f65c045b66e2734c2da3fc507fdd9d6b5d1e19ab3893726816a32141db7a31099ca817d96", + "0x8a98b3cf353138a1810beb60e946183803ef1d39ac4ea92f5a1e03060d35a4774a6e52b14ead54f6794d5f4022b8685c", + "0x909f8a5c13ec4a59b649ed3bee9f5d13b21d7f3e2636fd2bb3413c0646573fdf9243d63083356f12f5147545339fcd55", + "0x9359d914d1267633141328ed0790d81c695fea3ddd2d406c0df3d81d0c64931cf316fe4d92f4353c99ff63e2aefc4e34", + "0xb88302031681b54415fe8fbfa161c032ea345c6af63d2fb8ad97615103fd4d4281c5a9cae5b0794c4657b97571a81d3b", + "0x992c80192a519038082446b1fb947323005b275e25f2c14c33cc7269e0ec038581cc43705894f94bad62ae33a8b7f965", + "0xa78253e3e3eece124bef84a0a8807ce76573509f6861d0b6f70d0aa35a30a123a9da5e01e84969708c40b0669eb70aa6", + "0x8d5724de45270ca91c94792e8584e676547d7ac1ac816a6bb9982ee854eb5df071d20545cdfd3771cd40f90e5ba04c8e", + "0x825a6f586726c68d45f00ad0f5a4436523317939a47713f78fd4fe81cd74236fdac1b04ecd97c2d0267d6f4981d7beb1" ], - "setup_G2": [ + "g2_monomial": [ "0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8", - "0x99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d", - "0x88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659", - "0xa2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3", - "0xaf565445d2ad54c83a75c40e8895f5ad7219a8c728bce9d58d7a83716e095432993ebbd3f6911c66415a6f920d1a4d171478509b54a114308a020b33bf4487a7a8d0aa76ae4676a9b54e765a680f562d3a4fcb2e92c58b14b49b5b2917cc258f", - "0x8aa99cfaf514cef4801599cadd780d222194ca1ad69a34779c2bcfda93e5dbeb931e13914421b5809a6c81f12cf7038b04a35257cc9e94c33761e68565b1274aa6a6f9d66477229747a66b308b138f92aa4326a3bf23df65a1fe33b3b289bfe1", - "0x99ba36d8b4f56bde026099278548b1afc0a987cbd7c9baa51fc8e6cbb8237a17636f1a44a385cec69b05a5802059956a11fe793cabb939c38800f9c239ca2518e898ade1ec2513c9ee492071a35aabd78182392a09123d28dbc233313c9120c4", - "0xa7dc40c36afccb30a2eaff250860b28b227c195cf05674704c567d77d6655c446ae835f8fc8667e71147ab02afcb2dad0babe60cbfa37d7c2cddc68d2dec54f28a4142f8353590a3902d5ddaa22066ab563dd1435dda83f276387b9767d69120", - "0x939e6cc97a8b88572852a5b7f25e4838556307f60aeafb5d2b6961edbcafd4b48cb6ac980ffbacf4be963f324ba81e3d12de4f1459d8c746d0762c66ae1b166027f7fbe641d9c48f3c7d97b06d956b0be51dcc9aab65f3e99e1388e63bdd79f9", - "0xb391e156541dfd4003d1697cdb7ec815b309807320574906b2e652ef0175828b356d215cd374b1b34d9f470b3fa0e643113e67b2273268f922f04f072cfb89008358185b25cd631f82911a3f20f90f75758ffb99bebb8076458ae1e9d1ae898c", - "0xb9ac9c84934cc2a85c876eff65577e1dfce1935cd6392c877dd881a7d2f5c3e9344f28c04f90c62a6db4237ca00f9e0d00cb5f63e3f060fc7303916e19273b6fe455f331cabbe2fe5a22d584484f0d4176120fec9819fbb0a01e6d38695acfcd", - "0x88209eb030c5d78734bf2c2a5c539653fd3c24b4c08e624f9ddc4a6550efbdc1054a56eb0c807595aad6de56fda326aa196d032a8b4b48d40140a2d77df3c7243eda6507936389a321a5811eb38e32ee433c788deeae1eb928b00940e2944bcc", - "0xa8632ddc9cf7cbc1e8b74a05b7d4a89618c64afe30367ca0c9550ae7d320bf4e51c5a69e1501a1d8bee4240d13d7835501aa39fdc401a74f4d5734e268a7ce29a1fcfdb0a8bc64e0dd4a9e8578d6985bc2bc6a3764ce7a3703f6fb2e52557a2b", - "0xa037ac67e8bb6f4193ac967e05d080a489f58ef8d3d30a89798246f3e4936121ee445b03e410a09e8ebc0db2e2477d110aad0ade99b0887f1eb016e750f42135866907f150bd6f4f99a8cb94281474166874808ebe03b118c5daab16dafdc38b", - "0xa50d9143116bffa3b237da8e1805327e81e9cd25e658289bd727d5f9e0020172cc8690dcfe31a240e5cbc48353b88c4908baa1dd7320165556e0aa633f62fcbe7870222d345a3bbcdb7ab6c07f0fd86be559964afabf56f0a8cbc0b4b91d477e", - "0xafa988ea6fa4f40c5ad07d2d580d29025ddf56d6ef1171a8b8de3464203f70b97d6f5ace72747345204b35150e06154d1477516a989ce8eea7871cc0d0de00a077c0fb23ad4837e409d0b885bf3f2dde11a30fa6273d662e68e09f461e52932f", - "0x97fa1a943ed8b81574304a3d03f4f15907f6e6e0cd36a66bd2ad2c75afafc70a61d3ff69b77ebe4dae9ca0fcedef80081062705e60bbb6ea0f1f398c84d2f8e4a3ac142ac66426c21ad5e9994ebbcc406af474c4aec5e32fadcb21875af7c9f1", - "0xb30a564614493886f14a5dd71c89457504f8c59a7ac01b665ed167e9a8f9ee5832198fd319ecd234196ee57031bdf3840bd5a923e203a1938bc795c704b5285389750e1fd10d7050061ba19db00a60a2c0384a7d661d7d48ebe6962272230859", - "0x84c8dea942cfae71cb02e705ec496d967425793ce8812e7ee53c2f23713abeaff566a658cd1c73dfd18187d16253a6ee0a623e82cd18e31cd1a1875d19c078835dc9292e141686150a88065226ada264740143e87c03a0f6c4da8c187438ebf4", - "0x8c3abae8aed60338f8c4ff80aab22f8a2ae56756a93566c906f490a97151d34a1c3318054e1c494c60cc53327ad86a2d02c6c76a406726ce4f88635bc32eff0db0b61762dc518b95fa8da82e87e4bf3de54f1d72180ef53ed7bc5413e6a9a510", - "0xa328230c92a6b1cef6a444bcb64edb992f71e3d7b93f0b6b8b408ba7c908db746d92ddb2c7588bab438ef3bc61be1c2f0dfc86ba2ff514b42b35c80f89b2e780f813ea1dfb977fbded2cd9b553b747fa952e227ebd8f071163d421fc337f04c9", - "0xb482cab423cd5f1c5df036070aade7aa016283d69619d664025c3feab866a0a5691d344b2ee2bedc5dedd1f9a73eae16003a3827c9e5bbe22ded32d848fba840ffad1141ad158f5c40bc8ae0d03781b9705d851a7f1391b096c576c0f4f2a6b0", - "0x919ee1df27fabcb21237a1b7b98f53d41d849e1b6a8f9e28c3fae2841c6b5a250e4041c737e6725476e5cd715e34d3880f58d80f61efaabc261bdc703e8750f48a923e9bf8980931b9fd9e40014c66c54b3e7c98241d76d1aa47af43313a65a1", - "0xac94830145dbe9a8f7e6e0fc1f5fb454502d22abcafdc2dd96c6933c604461fa83b2b37385f4bc454875a02a6d4157841250956783515d11c7456e7f11b745f12856d89f5feedaf6a61a483a6c33a21cd2ba0c18eb41a1a2e7fc33bb53e4c570", - "0xb209c699f1233735c5bb4bce848e4365fd76651ae2184d2279a90df0c2f69ffa2a24d84a9b9f274021072953c0d65e1a0202d490d6c37186af240114e445d87bff754b4824937e4f2c90a574061b1c4910fed88d90f698025a2a264e656cb8a4", - "0x93320dc0576b0d069de63c40e5582b4486d9adf5e69e77e3ebaf3da26976fe42147a65051501bc8383f99e7ba75479c70a6726c2cd08bf98c7481f1f819712292d833a879f21a1221a9610bc748fb5e911055122fdb4055cdc84e8bfe0f4df9b", - "0xa4380b240e998cdf668591f71a0c88ed143b0185a920787627ce65095f8223dc606fa5bce93377af100de92d663e675c0736d7f1973603a84a5c4162fb5e01c88c7493503ae1d7e9fbe8ece9b418397d68c21eeb88dae226e09875d372c646dd", - "0xaab48517d69135a16b36b685adfe9b2544a709135a21ba3e75981a2cba4ec81d1fe28ac0f72fde0c0001c15300ed6a810f58d3117bdd58d0149751d6508cf8a1a1ff7b63dd02d2730a9d6fe96c77c502fe8ed46d50a181ec4bb35e37dfbd6af4", - "0x8277265fe75ab89ce4ec65b33fb4084bec0a56d81faf2f7a9070d2ca3065678e03a790350eba56323a54e0285bc32fe8007d5259740fde226e16cbde8354eacd562294eb9b7f727ed72ffbdad86f467cf057c737b34b80a41deb92634ed866f5", - "0xaa40a24cb2ebe606d969392c03020070f044c95088d80f57f771b837c048342d2cd3474600d7660441090ffb8d2ffb7f0eddd67eb378e3e1477a6ba0bc38096d5d2d3355bc8b60f605f57f0c1899da591457440352381d2b38c0aa9acc7fe419", - "0x80815d10685808cb630820629bcd2fa9041c9b74433630c0b9c1b7f7e8edf1440b520217f76ec9a50c125cf4438aa66006a1928a9ed2321da7ea325c3d56b65462b72118ca2c99a0ea733aa11da9abbeda6cc71ffeed301ae70213a29e697dcd", - "0xac235d079f91b00b1fead7523da8f73a5409fa8970907af0c5d5e4c6a0996dccfcdb0d822d08c7fbc0c24799457d011d04312d20831825f23cf988141056a6814c8a1cac9efe37bdcbfa272aed24cd92810fea7c49b0d07683a5c53643872179", - "0xb8aa59534d75fa5ac1c2c3f963bf73899aff5210059dbde8a8635561c6249e5143affee3bd2fd57575213b52d9a73d5702525867a7dcbb1d0a49b98c2925556fc5463ff0209742046a24ab29e74257d6419401093cc4371944d811cc300b6a67", - "0x80bbfc5b816eea29a6d84e2217dee4d547306994d39e5592515e1b0807b67fe960d1d5addb0ff1a20c158bdb294c04bf093d28996121845a2c9268e2c9ac0f4067e889c6aaca62f8535d35b45036954bd069e3afa84f04721538c26003304c20", - "0xa535c17d0e151d0e03d42dd58ba8c715bee3fabca2890e0e016071d34184b6b34e770d2be29c8ec76b69bcc471d50f4d043c2c240e9b93a81cff7ee2724e02018dfd9b534e40be641fdb4884abcd83b76f517557ffba508f1ba2f56313f4de94", - "0xb237eb7465df0d325a3aa58269be2627e4978f9863f4f100ed4c303cb1f6549e606f2e3c9180824d8049191965c8dacd0a0c76cc56cb22cf1bcfdb39372c8aa29b4f7b34582b1719e6bd59c930d87d5ccd838743b585d6e229d5ed42337315c0", - "0x805c335a2a9d2de30809cf30808ef836d88e9453c510716f01696f14c72dd60505eca8f128970edc8e63a9aa1f8792ac0dd50dcc84fbf4cc8b32349c682a6a27bc7551c7aa273a94c1606d07710188d93579afe3be1781bded15a34ed6047922", - "0xb25dadf385ddd3c39bcb0a014d3d4f66127946b1aceae8809e3a03d66cc25e27142ca108316391f857fe82fdea4db2520cc73793b695eafbf3ade00ef7ec747b0457e49303f5e1a370f5263b436566fe24a0876e5fe088238c7be37a0718d65f", - "0xb0f753081cabe2c8fce73aba82ff67dbc9842598b3e7fa3ce2a1f534536f8ac63c532fe66552ac6b7adb28c73ed4c8a4184849be7c1756a4681ce29ebf5e1c3aa806b667ee6bd68f6397aba3215dc1caec6742f21d681e32cd1160d6a3b1d7ee", - "0xb798771eeb3d7a17c62ba5916cc034bba870da6b1ac14c2e1cae71af3ad4e0c0d1ff983f691e0e55289d5a33b131f2ec12430c9566dd71f4d8be9c79155357a5c30c5efcfd75bbe1bb6d5ada4d50604ea49ed838d3641f268ca6e25c9c4b6b72", - "0xb52554c017388b099804abbe565346591a086d9979e10140ddaccc0a3680e506db775d7cbeafde67563adf0f09f5c2420caf19629f4e8f03e6fe02e9416ecd5269989e482b90004a083967d1141387eb74865bac6bd17e7a6d5f58225e52d4b7", - "0xb520ff694520919023d44d53f98a7de2f78ff37b2d9193dcaa35556a6a0febf767781a4c961dce7c804bfdf81935f8f0082865253da52e79dfa1c5ff74d61495b2da76e167d46114709e877a7791a3a95e33a42f56b83f5f5afe271c67ae997c", - "0xb721401983440797a03d5b99f2088a0b249aa911969c34dd6c615b0060325da555d2ad99d931170c0868b0488a2234a4114cc0013d5163b833f5c45c5eb536421c016cf85788390176bb2dc4c196d6be26bbbfceae048b82f0d8039222e71c94", - "0xacd9d833ba0a8cbd8d1ba939a11ea0fa5607e1bc6e693ec318bdb097aedd042d76e695dcebebd142e2e4ac30b1905dff03ec36d9cc70577e4dbe5e9ed7c20c7afb13a7f0155f203c6b83b9f1ad3d20a0d4aef0fbbbcf466ffc1bcd482bc2f5e0", - "0x8cc1795de015f2b0e72116f169f3b4624b7738ceebea354e0bd9051c27b86f647ea36cad57ea6884c1a8adf9b45cd83514fa687e68878bbd613d793aa10986d5a0411f081689229e0d72133b3667b9f3f1a02211d0e680564eb1ea43393e1f36", - "0xaa9281c61113c343a108de1036570feefc72fb7a96ff11f73024de12b83f29631f5a8a5900e6f10b15227c6f7462881511271bf785ebdf95ce288100e5dab391f664f6ff76c72b65b34479a4f43e5e8eba292209d6654157286ad3242ac342db", - "0xaaf16866275082e59d415db317aa874267d048ee405a553e852e6d175711d31a1fee99912345915bce121f43bc3e00d81338e5fcd3c8a1012fb4f172a9fe15622dd368b4d9d5cb60d189f423b071791fe26cea7676aca8df07965cacf80b0cd0", - "0xaccc80b3d8a6ffa648487a3d3c0ce1aeeb5401edf3cf2e385ea4a6d5fc110054fcce38f01f1da7141bbed30eb7a0a6810c82212bbb9da75d6033082dbcf6bc6a5791f85aa0f045a10da5de015edbf369b4d23b32b0c058962d2ee88e6911f994", - "0x83f1089395a16077738cc7c9a6d6a3dc9033aac4abc508af5a1f007ca92e1a80b2e6f2dbda7fdcf0d5646de790a6201d0a9cfbcb6620a1426600e3a6a425ec004384f49fb9dcd166691a47177d45dcbcb761a11d46220b0aa09fc946131f7aa5", - "0x9246bb586d43cb817c2e15ed609156e9f1cd284ba2f4797bbfa51c0341e1ba382eaac059aa9f63fb88d228a1a932839a171e7c7d00199dc7c4d6c5ea038a02cbc3cc5297c70401520e70ebbcffacd6a703f62896f3c788f94dde3c33ab0ecbdb", - "0xa316cb7c74feb0563c56cc79015e2774fbeca458bf8e9fb07894f9d6bcd73f7fb9428e87c816e5629e4bf7f3ec567fbc091549471b75492dde08217cb334b716b4582b24384586e53388873a78a90ec01bd7c3bace9cfc52161467df16e27c33", - "0xade18c74bbe60d1d69f4a570f8e5fd8696c26cc9e02829040b6b14cb9c49a4b3263b5bd5e16ec0b29010b4be054c16ab09304e23442af7d7f5fcc60bc6c5634ab6e4aed7ef334b2785e4c7672d59a687278e42d310342db5e5975d716e6d1595", - "0xb7728800bb2039acf228fa3d8028569c426cb85d28b2b5820bbef938d5ca8c4df981d3e01a309e26ca101e8295d0f6990c03b8c239798323575874a4ee5bfe46cfe99b9657189142aacd8f8d1f26cf4c0e73c6397c31ba8f18102b9ea315b638", - "0x8fb14f2a9be193f54977ecd3021663108ea143627b9a9d9faff85d1a86b855f6c437eab435fad3304f245bd7732af07f1173494cdb802fb96e85d2db89e1643206e183f3b228ca8d3f586e71aa9308eaf0223100bf07942fc39e465016d1f775", - "0xac1e025e53d98fdb3380489dce82d9d4bd3a6c98f0a523b841cb09a6f26ddd4d22efd98776e78d10fd996995fd00e81e08d3c25dd14a54b25a9d483677a24bbb8d1cb41a443b2c71038e6893b1b30f70758424e0f2039a48060191389033ef55", - "0xa4c017311b9e930868132527a9849072b91db04fd36c619ae39c98da9e2174e6201d3c2ff1246c06b1b6815bbf3ea4a1116564f55ee2fe4c4d655e2294c0ded842cba209c255ca3d7b7f82d162f97890dfdeed087aa2f87cbfc61d61815da39d", - "0x89516315a3956b455843c2555248bd94dcb19993060fe75fdd51f7aa9c9147ab13997d8a98036a8f04bee5c91d78d2990907e35a52537a8ab3ed15f1a71afdcd38044a5b6e93f662b9d36c16933a881927cacae668c4c06ee6f004c9e3989bad", - "0xa1e78a011e210400c68ca76045f7da74119bff3cbe382efd2bd2ac76567c52d68d75536a91999d084043e1ce2d07d02e0b69fb99924101d2543521747536fbc51b0454aa9a4cbbec101121f597863a5c0fee2ca5eab35dff9b9085bef8b2b0d0", - "0x830fd8d083e39153ecab43cabb22e29d7b44a55fba467af4ddd3f069439d2972ef53c3518de788f96b3f4f64963987d0155ba27afc28643af3de8e476ff515a68285728167408f45d99e574680bda6bacdd4322e587e4aa99386e035c0e931ad", - "0xb89584da22237e3061d991b1a55a5e55dc637b8b671130d304587729348138ef87885180310efe9f9f6d3580b9d7fdcf0649e8a79d2dec8c25a9f53df0fac5d517db999029cbfdd7c2cbd3e9a5503e5d267d3d8ad752335915c92b850b14bafb", - "0x959b8030733799882c5e3735479924b013756e57b893f9792bab4043e2d362d77cf308166d782e3989caa771b8a0c0a01302cb7b5e8ca12e2d6cebd59d4cd173c9dc25f438bac597fab17b4ff44997a489c168e7204b7d7c21d0938f0a2e3b51", - "0xa0a9e5503d9afe0027891dab890c687fd5f5fac5741418490c64d7c15f59533dd603a50163c79402afa61bd02de486761983c94501da17e6bbe78c497f2122210071602f578adc0ebe7a4679f87fe77e09c8c122de69105f13455fea25f08e6f", - "0x9811487283ad620cd7c9b303ae2f348d0e6f5ee17b504baaa817ae207adb912a00d3cc36dbf48745eb899e6b6e22f09f0f9ba29d949ecd7350fbbfe87a8c7cdd5d0e687fc807751d07634aaf7c38baf3b24a0670c38fa6ccd7431436fc95525f", - "0x8a13aa5071c526e560def7d8583393942f07d88c9d8d26c98738fd65f57af2e3326dbb1edff0f39fe98eda4a13ed4fd71844254b954690154c4804e1c4a53df9dc4643f4b7b09d0860070f6b2318d0d63d28fb56bf5b6ff456a18dfc72fdfbbe", - "0xb9c90ff6bff5dd97d90aee27ea1c61c1afe64b054c258b097709561fe00710e9e616773fc4bdedcbf91fbd1a6cf139bf14d20db07297418694c12c6c9b801638eeb537cb3741584a686d69532e3b6c12d8a376837f712032421987f1e770c258" - ], - "setup_G1_lagrange": [ - "0x8d0c6eeadd3f8529d67246f77404a4ac2d9d7fd7d50cf103d3e6abb9003e5e36d8f322663ebced6707a7f46d97b7566d", - "0xa0d2392f030681c61c2a867862917e10f7678d882034bb89af3db87e6ab3883a304034643dc9688a04e41a5b831582bc", - "0x94298073048d70c74f36685e547d04b7311479daa05912e18ead64b2099a194bf48ec344273d58daf0b86b1d8f1d318d", - "0x85c4063d13499013dc2ccaa98c1606763e6b1e8cca20922d4cec12ecbaf006ea81ffabe6596d1ac7ba1daf7e63e30898", - "0x84c64bce36c6b5145c6880113366025ab9a8f88e3948d374e27be8b8f9f87402c70fec9b3c621a2d1d26764a84370d0c", - "0x8b206c823acf5294552ee54579fac0f45ea15bd273dbacd63b88cd7cddbcce23b56e52f8ea352e1e1d7dcd9b3991b413", - "0xb70aaa4038ba3f5ff306c647b4392d004950c53ad8f6713b5c9c21ac99f5c56cf57323dac500a1f4e9507c4746b07a2f", - "0x895f6d1fc70b52f838d81b24f4840729cd5988b649e9d6e6f6dbac4281d8818f39ebdae7e6ea139d7f98a832bd6f29f1", - "0xa71a2832bbaade974c9ef7505dfa24e1ba466a9951b7c2db56886be31c9c7b871f3ee76cb1fcc1aab4b906d6502bc9b5", - "0x9530ba64a21e27834609c00616bc63e8fc2dc7800e478ad728ec39c624f65bbc62cb48f59decb7fbf605ce1920d02622", - "0x8d0609affaf8619bb2f6c80699e5bc7783becbd5973630cdd227ae52d6d701c45f4270becca97701b40279fab588cf64", - "0x8f5d5b4c3bb8dc9a19e5a0f84df6322a79a00c7783c86254197d313a5b35d3965a1f7c0b9c4e39ec1e8f5d02d3aa0862", - "0x96aa47a3ba20b1cfe81eb26bef503225037fdf4c9df53bea1b520841875cd1db6aa8e0f34685da08b55a3ce7289e6de0", - "0xb4c27ee3f4b8c0031837160f0a75632f5b51b5850d52b530096443f54c2b264aeccc5c61b4fcc8de7074475f354fa0d8", - "0xacfd735cda20be1d6f425a7886629c91732fbb5a4e0350ca740a8fb5b39f2001071cec0b2a0f6ca35e1f35a5ea18d00f", - "0xae44d87b1d16d59504c602cbacde2c2791f1520391ca50154e6036d3953ca466cf93d6537da2adb729e6f9f4ffa87853", - "0x97b492872ce44941ea4668ffca83b82fac0f4021bd47e0a5ffeaaacb1b3fc924ee4d53b99f7bcafe0985caf0fbe5d1d3", - "0xb3fbe2f9103d293f49c6c6016d5913f041c9113295397388111a0fdf4245d8edd6e63b9a1a1c9c8f868d6e1988116880", - "0x805efa08fd2046c44c427b225c17bed8a1eb3320cdf94026fdc24c6d345a6cfebfd7475f85d2d1bf22018ca72d2761d3", - "0x9888bae0d83077d1dfde82fdffb1195565c31c519b80cba1e21aba58ee9ccb5677f74bfde13fa5723026514a7d839661", - "0x922e19d2646ba90c9f56278bddf74621cc4518ae2f042fb8245843e87cd82724c6d7c9a99907ac6de5f2187fd2e77cbe", - "0xa38f0e1faf97dd1e0804b44e4d150dbfa48318442d1c5255eb0c14ea56b50502f3c7cb216a0336e7c140398088dc01cf", - "0x93598ea391c8735799a1d4cd0456f34994ccdf4883fad57419f634f30fee595938bc66b066dade9ae52578818c00d899", - "0xa528dc920734cfaee9feacbc0baa5b73befb1ec6fbd422fcad09a9c1f8f8c40b5ea332b2cf04dc1d6d921e9da9ddfeb4", - "0xb38d45316bf78d11e796a34ee535814e6cde0e642f14108329c5b21f4fec18cd61f84a3025824bb8dc4cbd26b2ecc9bf", - "0x8eec35a7404c9a35dc6ad0260b7f0f7fd1bfe92a2e08bc72548b99ed9acdc378728a8ea9c6879a6e47e37edb0d28c193", - "0xa68a4446274ccd947c61bf736c5219dad680b99c6085a26719793e0d9dab26d5f8a0b28e71be6e1b9ea4ae39139f7f57", - "0xa0acb543f41ad12e3b2e096629ccdd719a001d0ff53bb151e9a37aa57852f7275a7bbd06dc2a06af9144524548164af5", - "0xb271e74cdbcf8b9143f8472174bdb068c23308ea807c60a554c185f7be6f231aac13347139837514171a876dfac5baa5", - "0x8195a460719000cd1df379ebbf7918f71301a50a2fa587505cc5b8c4534c3d2343f63d28e7ee991d7a1cebb15d380696", - "0x96202b60426773e8731dcbedbf613477f65940a19fb4be0f4f742b0c76ae9d88ecdb6d36cd4f12bb404dd5d360c819e2", - "0xb0a80fe60b71ca9e80157138de8787b8a786326179604b8a15a744e52662645987e5f859ef5c76492d560daf4624b9a7", - "0xa331ea8adf87daa5e2d458d0113c307edae1a84927bca7d484aca5f8c1b6378ab42981c44b0d916d7249f4b475f926f1", - "0xaa1a8f59ae0912abf191ea7e209ff401628278dfb2269db6d87cf33bd52af3dbffbe96513a8b210e965c853a554b787a", - "0xac4f4a0e1b1a155e1f22a9085b0b047fe54c8437dbbb8e9720fd6b0cdd76557d19ca2e885a48890f0247b1a72be0e287", - "0xa428465505eac7b9660eb0d495a7a00c8cc238de3a02ebbd2eb07e502e9868086e9584b59953cf1480c0b781295db339", - "0xb7b77e21e08f6357cbd3dcd3035c3e8ec84cdfa13c7baef6c67e0ef43095e61fd549694263d7def8b8adc3a0fdcc7987", - "0xabb991d17c5bdd264c592c55101e265cb3210c4157aee4079173fd51da1e0199eed1d6c890aab95817ec078561d771af", - "0x846a8e4f801faf5fbec078b09c362ee30a00b2b58a4871744d03cd118b913464233ff926e52b0c75fbfcf098ad25a1e6", - "0x947e91ffa32f38c1ccb72cca4bfabaee9e63ab74a16f034cabba25e462f7331ebe5a7ba393f69e91830415fa75b1b52e", - "0x8dc5e26adc693f4e300cab7385edca1a2fe14c8ee6dc0cd6d013cb5aa154dc380e9e81e259cbc59c1f38f7c4a57f1c7d", - "0x9818ef6605d6ea3b7bf4da5c6d6d8ed540bb94df4d14c974e1b79ed2fd1a0b897b8cf1ff671a181a697effd66b1644a5", - "0xb5eab6baf03af994fc32cc9dce388394c18c01cdafe7909fde948f3e00a72dc8f30d15977d0f114bd7c140f5f94cf005", - "0x83b2e9858d3b929f9a2ad66a91a2c0c44d15d288c17c12a1614301a6f2d61d31eaa540ca7781520fe4420afae0ec0208", - "0xab338fbd38bce4d1b7a759f71e5e5673746c52846eff3d0b6825e390aeeca8f9f123ee88c78fe4d520cc415cbae32bf1", - "0x81adb6322b8db95d1711304e5b59f37640ca88c03e6c7e15de932be5267dff7351fa17664113ecc528e8920f5bfdc0d1", - "0x89e2e0c0d769e4107232df741678a6bacb041d0154385450aaca8be9c3c18c42f817373962e7569d33935c35666a8a6a", - "0x8f0756fea8b34a2b471ec39e4448a6a6935e5432ec2859d222964a4c82777a340e1d702777aeb946fa405afc0438221a", - "0xa2bf90c505a6f03b3dd09d04e1e7cf301fe3415b273e263f15fdfe5d0e40f619b95e8bf00916d3eaa7d7f8c0bae41c8e", - "0x91d5c76b5542637588cd47279d0bd74a25dbda0d8ec0ff68b62d7e01e34a63fc3e06d116ee75c803864b1cf330f6c360", - "0xa9958c388d25315a979566174b0622446335cb559aff1992bd71910c47497536019c6854d31c0e22df07505963fc44ff", - "0x91d82b09d5726077eed6c19bcb398abe79d87ce16c413df6bf5932b8fd64b4c0fd19c9bf0fa8db657a4a4d4c0d8f5a2d", - "0xac6e0a86e0ee416855c3e9eef2526c43835f5245527ed0038bc83b4fcadb4ea5beb91143cc674486681a9f0e63f856b1", - "0xaaf00d6efd0c6efb9f7d6a42555abec05c5af8f324e2e579fc2ac83bdc937cc682d9bc2ffd250619c8bb098b8c84db80", - "0x963f5fcd8476d0dbeb03a62cde40e3deee25f55e7ded7572d8884975f38eddc5406fc4b0adff602a1cca90f7205a7fdc", - "0xa3805ee01512f644d2679511bd8607890ee9721e75ac9a85ab9fd6fceb1308d5b9b0e9907686b4e683b34aed0f34cd81", - "0xa483d7708465cd4e33b4407fe82c84ef6bc7fa21475d961fe2e99802d0c999b6474ef7a46dd615b219c9c7e9faec45ee", - "0xb6b5f9456f12d6781c41f17cdc9d259f9515994d5dee49bb701a33fa2e8dcbb2c8c13f822b51ad232fc5e05bff2f68ef", - "0x8766b721b0cf9b1a42614c7d29aad2d89da4996dc9e2a3baeba4b33ca74100ab0b83f55c546c963e3b6af1dcf9ca067c", - "0xac5e8da1154cf4be8df2bbd2e212b7f8077099b2010c99e739441198f65337c6f7ef0d9136453a7668fde6e1389c32c7", - "0xa9d6d2c8845e5f1fec183c5153f1f6e23421e28ce0c86b0ce993b30b87869065acad9e6d9927d9f03c590852821b2f9c", - "0xa320ca07c44f7ea3ff858fe18395a86f59559617f13ec96d1e8b4a3f01d9c066a45c8d8cf8f1f14a360bb774d55f5f18", - "0xb3adb00e1312dce73b74fbd2ea16f0fb0085bd0db10772e9c260e9ed9f8829ff690e3dfffacaddc8233d484bb69778b3", - "0x87b0c8d8a167d5199d0b0743c20fb83ec8a1c442f0204bcc53bf292ba382bef58a58a6d1e2467920e32c290fdc6dae7c", - "0xa74fa436a5adc280a68e0c56b28ac33647bdfc8c5326f4c99db6dbd1b98d91afb1f41f5fffd6bcc31c1f8789c148e2db", - "0x8a37349e4ba7558965077f7f9d839c61b7dcb857fcc7965c76a64a75e377bfea8cd09b7a269ce602cc4472affc483b69", - "0x8af813f62c5962ff96bf73e33f47fd5a8e3e55651d429e77d2ce64a63c535ecc5cfc749bb120c489b7ea1d9b2a5d233c", - "0x833021445b7d9817caa33d6853fa25efc38e9d62494d209627d26799432ea7b87a96de4694967151abc1252dd2d04dfc", - "0x8f78a715107e0ace3a41bff0385fd75c13bf1250f9e5ddecf39e81bacc1244b978e3464892f7fb2596957855b8bf9fc7", - "0xaed144134dc1cc6c671f70ebe71a3aadf7511eea382969bc5d499a678d2d8ce249ebf1a06b51183f61413eba0517012b", - "0xb39a53e82c5553943a5e45bc5116d8672ec44bed96b3541dead40344b287a7b02dbf7107372effb067edd946f47de500", - "0xb383844c3b20a8bc06098046ec6b406df9419ad86fac4a000905c01325426903a5e369af856d71ccd52fea362ed29db5", - "0x83815a7098283723eec6aa6451b5d99578bf28a02971375a1fe90c15a20963e129372ac4af7b306ee2e7316472c5d66d", - "0xb426b4e185806a31febd745fa8d26b6397832a04e33c9a7eb460cbf302b4c134a8a01d4e5e40bc9b73296c539e60b3ca", - "0xa6cabf8205711457e6363ef4379ebc1226001e1aaea3002b25bfd9e173f4368002f4461e79eeb9f4aa46f1b56c739ab9", - "0xa6e88ab01282313269cd2d8c0df1a79dada5b565d6623900af9e7e15351de2b0105cc55d3e9080e1e41efe48be32a622", - "0xb2b106db3d56d189ea57afa133ae4941b4eb1dc168357af488e46811c687713fc66bbd6f8500bbd13cdb45cb82c14d1d", - "0xb3a74780ff949d19e6438db280e53632c60dc544f41320d40297fe5bb7fcee7e7931111053c30fb1ed9019ab28965b44", - "0x8c67f32b9fdc04ec291cc0d928841ab09b08e87356e43fbbf7ac3ff0f955642628f661b6f0c8e2192a887489fddf07bb", - "0xb3be58bd628383352e6473fe9a1a27cf17242df0b1273f5867e9119e908969b9e9e7e294a83b9ea14825003cb652d80c", - "0xa867acf6ab03e50936c19a21d4040bfd97eb5a89852bd9967da0e326d67ce839937cab4e910d1149ecef9d5f1b2d8f08", - "0x8006b19126bd49cbb40d73a99a37c2e02d6d37065bbe0cfcee888280176184964bd8f222f85960667c5b36dfaee0ee35", - "0xac50967b8b7840bf9d51216d68a274f1d3431c7d4031fbac75a754befbbb707c2bb184867db6b9d957f3ba0fd0a26231", - "0xb5a794c928aff0c4271674eb0a02143ed9b4d3bc950584c7cd97b7d3c3f2e323798fd5ccc6fcc0eb2e417d87f4c542a2", - "0xa2ca3d6509f04b37091ce6697672ee6495b42d986d75bd2d2058faa100d09fd0a145350f2d280d2cb36516171bd97dbf", - "0x92cfa293469967a9207b37cd70392312faf81b52963bfbad5f9f3da00817d26e10faf469e0e720c3bb195f23dda8c696", - "0xa0dd5135da0a0e33fa922c623263b29518d7fa000e5beefc66faa4d6201516d058f155475c4806917a3259db4377c38a", - "0x8fc3ae8ea6231aa9afb245a0af437e88ebca2c9ab76850c731981afba90d5add0ea254053449355eccf39df55bd912ed", - "0x9727afe1f0804297717cec9dc96d2d27024a6ae6d352fee5d25377ee858ee801593df6124b79cb62ddc9235ec1ade4ac", - "0x8bcb2c53fcaa38e8e2e0fd0929bc4d9ddce73c0282c8675676950ff806cb9f56ebd398b269f9a8c2a6265b15faf25fca", - "0xa8bd9007fbbdd4b8c049d0eb7d3649bd6a3e5097372fa8ea4b8821ba955c9ef3f39ac8b19f39d3af98640c74b9595005", - "0x92c7e851c8bd6b09dfcbfdb644725c4f65e1c3dbd111df9d85d14a0bb2d7b657eb0c7db796b42bf447b3912ef1d3b8c3", - "0x98c499b494d5b2b8bea97d00ac3a6d826ab3045bb35424575c87117fc2a1958f3829813e266630749caf0fa6eeb76819", - "0x8df190d71e432fe8691d843f6eb563445805c372eb5b6b064ec4e939be3e07526b5b7f5a289ede44ae6116a91357b8b1", - "0xb5010243f7c760fb52a935f6d8ed8fc12c0c2f57db3de8bb01fdeedf7e1c87b08f3dd3c649b65751f9fd27afa6be34c7", - "0x889c8057402cc18649f5f943aed38d6ef609b66c583f75584f3b876c1f50c5dc7d738dc7642135742e1f13fa87be46c1", - "0x996087337f69a19a4ebe8e764acf7af8170a7ad733cd201b0e4efde6ea11039a1853e115ad11387e0fb30ab655a666d8", - "0x902732c429e767ab895f47b2e72f7facad5ef05a72c36a5f9762c2194eb559f22845bbb87c1acc985306ecb4b4fbbf79", - "0x8519b62a150ea805cdfc05788b8d4e797d8396a7306b41777c438c2e8b5c38839cfec5e7dc5d546b42b7b76e062982a7", - "0x862a53ba169e6842a72763f9082ff48fbfbb63129d5a26513917c2bca9ad6362c624ce6fc973cf464f2eb4892131eb04", - "0xb86cd67c809d75fdb9f1c9453a39870f448b138f2b4058d07a707b88bb37f29d42e33ce444f4fbe50d6be13339cae8a6", - "0x8cf5d8365dbbafc0af192feb4fc00c181e2c3babc5d253268ef5564934555fb1e9b1d85ec46f0ca4709b7d5b27169b89", - "0xb48f11a1809ec780bf6181fae3b8d14f8d4dc7d1721128854354be691c7fc7695d60624f84016c1cea29a02aaf28bfbc", - "0x8b46b695a08cb9a2f29ab9dd79ab8a39ec7f0086995b8685568e007cd73aa2cd650d4fae6c3fb109c35612f751ba225e", - "0x8d2f9f0a5a7de894d6c50baceb8d75c96082df1dcf893ac95f420a93acbbf910204903d2eb6012b1b0495f08aaf9992f", - "0xb334db00a770394a84ec55c1bd5440b7d9f2521029030ef3411b0c2e0a34c75c827fd629c561ea76bd21cd6cf47027f4", - "0x96e9ff76c42bcb36f2fb7819e9123420ed5608132f7c791f95cb657a61b13041e9ba2b36f798a0fdb484878cbe015905", - "0x99f8d701e889abd7815d43ba99e0a85776ec48311fa7cb719d049f73b5d530fa950746ffbbb7beb9e30c39d864891dc2", - "0x98169c20df7c15d7543991f9c68e40ac66607cbd43fc6195416e40009917039357e932d6e807f3a40bc4503ad01ae80a", - "0x84bd97dd9e4e2ba75d0dee7d4418c720d4746203d847ce2bdd6ed17d492023df48d7b1de27e3f5cb8660c4bb9519ae1b", - "0xa54319e06db7f5f826277a54734a875c5b3fd2fa09d36d8b73594137aa62774b7356560157bc9e3fdf1046dc57b6006a", - "0x90cfff7cd4e7c73b84f63455d31b0d428cb5eee53e378028591478511985bcc95eb94f79ad28af5b3bed864e422d7b06", - "0xa11c23cc8dce26ac35aea9abe911905a32616a259fa7da3a20f42dc853ad31b2634007aa110c360d3771ff19851f4fb4", - "0x9856fbee9095074ad0568498ff45f13fe81e84ea5edaf04127d9ee7e35e730c6d23fa7f8f49d092cf06b222f94ab7f36", - "0x818862dec89f0dc314629fffbca9b96f24dfde2d835fa8bde21b30dc99fe46d837d8f745e41b39b8cf26bfe7f338f582", - "0x831819d41524c50d19f7720bf48f65346b42fb7955ee6ecc192f7e9fed2e7010abccdfdeac2b0c7c599bc83ac70be371", - "0xb367e588eb96aa8a908d8cc354706fee97e092d1bc7a836dbcc97c6ed4de349643a783fb4ddf0dec85a32060318efa85", - "0xb7aaef729befd4ab2be5ec957d7d1dbe6178de1d05c2b230d8c4b0574a3363e2d51bc54ea0279a49cc7adffa15a5a43a", - "0xae2891d848822794ecb641e12e30701f571431821d281ceecbccaaa69b8cd8242495dc5dbf38f7d8ed98f6c6919038aa", - "0x872cf2f230d3fffce17bf6f70739084876dc13596415644d151e477ce04170d6ab5a40773557eeb3600c1ad953a0bfce", - "0xb853d0a14cef7893ba1efb8f4c0fdb61342d30fa66f8e3d2ca5208826ce1db5c8a99aa5b64c97e9d90857d53beb93d67", - "0x910b434536cec39a2c47ca396e279afdbc997a1c0192a7d8be2ba24126b4d762b4525a94cea593a7c1f707ba39f17c0c", - "0xb6511e9dea1fbccedd7b8bb0a790a71db3999bd4e3db91be2f1e25062fae9bb4e94e50d8ec0dcc67b7a0abce985200b2", - "0x936885c90ebe5a231d9c2eb0dfd8d08a55ecaa8e0db31c28b7416869b3cc0371448168cbec968d4d26d1cb5a16ebe541", - "0xb71c2ac873b27fe3da67036ca546d31ca7f7a3dc13070f1530fce566e7a707daeb22b80423d505f1835fe557173754f8", - "0x85acb64140915c940b078478b7d4dadd4d8504cde595e64f60bd6c21e426b4e422608df1ed2dd94709c190e8592c22d7", - "0xb5831c7d7c413278070a4ef1653cec9c4c029ee27a209a6ea0ad09b299309dea70a7aef4ff9c6bdeda87dcda8fa0c318", - "0xaa0e56e3205751b4b8f8fa2b6d68b25121f2b2468df9f1bd4ef55f236b031805a7d9fd6f3bba876c69cdba8c5ea5e05f", - "0xb021f5ae4ed50f9b53f66dd326e3f49a96f4314fc7986ace23c1f4be9955ec61d8f7c74961b5fdeabcd0b9bccbf92ce8", - "0x88df439f485c297469e04a1d407e738e4e6ac09a7a0e14e2df66681e562fdb637a996df4b9df4e185faab8914a5cef76", - "0x8e7ae06baa69cb23ca3575205920cb74ac3cda9eb316f4eef7b46e2bff549175a751226d5b5c65fe631a35c3f8e34d61", - "0x99b26ff174418d1efc07dfbed70be8e0cb86ac0cec84e7524677161f519977d9ca3e2bbe76face8fe9016f994dafc0ff", - "0xa5f17fe28992be57abd2d2dcaa6f7c085522795bfdf87ba9d762a0070ad4630a42aa1e809801bc9f2a5daf46a03e0c22", - "0x8d673c7934d0e072b9d844994f30c384e55cec8d37ce88d3ad21f8bb1c90ecc770a0eaf2945851e5dab697c3fc2814a9", - "0xa003ed4eb401cfe08d56405442ca572f29728cfff8f682ef4d0e56dd06557750f6a9f28a20c033bc6bbb792cc76cc1a8", - "0x8010408f845cf1185b381fed0e03c53b33b86ea4912426819d431477bd61c534df25b6d3cf40042583543093e5f4bb44", - "0x9021a1ae2eb501134e0f51093c9f9ac7d276d10b14471b14f4a9e386256e8c155bef59973a3d81c38bdab683cd5c10e0", - "0xa5abf269ceabbb1cf0b75d5b9c720a3d230d38f284ed787b6a05145d697a01909662a5b095269996e6fa021849d0f41f", - "0xb4b260af0a005220deb2266518d11dbc36d17e59fc7b4780ab20a813f2412ebd568b1f8adc45bf045fcbe0e60c65fd24", - "0xb8c4cb93bedbb75d058269dfccda44ae92fe37b3ab2ef3d95c4a907e1fadf77c3db0fa5869c19843e14b122e01e5c1f4", - "0xac818f7cdecc7b495779d8d0ff487f23ab36a61d0cf073e11000349747537b5b77044203585a55214bb34f67ef76f2d2", - "0x86215799c25356904611e71271327ca4882f19a889938839c80a30d319ddbe6c0f1dfa9d5523813a096048c4aef338cd", - "0xa9204889b9388bf713ca59ea35d288cd692285a34e4aa47f3751453589eb3b03a9cc49a40d82ec2c913c736752d8674d", - "0x893aecf973c862c71602ffb9f5ac7bf9c256db36e909c95fe093d871aab2499e7a248f924f72dea604de14abfc00e21c", - "0xb8882ee51cfe4acba958fa6f19102aa5471b1fbaf3c00292e474e3e2ec0d5b79af3748b7eea7489b17920ce29efc4139", - "0x8350813d2ec66ef35f1efa6c129e2ebaedc082c5160507bcf04018e170fc0731858ad417a017dadbd9ade78015312e7f", - "0x83f6829532be8cd92f3bf1fef264ee5b7466b96e2821d097f56cbb292d605a6fb26cd3a01d4037a3b1681d8143ae54d7", - "0x87d6258777347e4c1428ba3dcbf87fdd5113d5c30cf329e89fa3c9c1d954d031e8acacb4eed9dca8d44507c65e47e7cd", - "0xa05669a1e561b1c131b0f70e3d9fc846dc320dc0872334d07347e260d40b2e51fdbabeb0d1ae1fb89fba70af51f25a1a", - "0x819925c23fd4d851ea0eecc8c581f4a0047f5449c821d34eccc59a2911f1bd4c319dab6ece19411d028b7fdedece366b", - "0xb831b762254afd35364a04966d07b3c97e0b883c27444ff939c2ab1b649dc21ac8915b99dc6903623ed7adaae44870ac", - "0x93ec0190f47deffe74179879d3df8113a720423f5ca211d56db9654db20afe10371f3f8ec491d4e166609b9b9a82d0d4", - "0x8f4aa6313719bcfad7ca1ed0af2d2ee10424ea303177466915839f17d2c5df84cc28fcef192cbb91bb696dd383efd3b2", - "0x8d9c9fdf4b8b6a0a702959cf784ad43d550834e5ab2cd3bebede7773c0c755417ad2de7d25b7ff579f377f0800234b44", - "0x99d9427c20752f89049195a91cf85e7082f9150c3b5cb66b267be44c89d41e7cc269a66dacabacadab62f2fa00cc03be", - "0xb37709d1aca976cbbf3dc4f08d9c35924d1b8b0f1c465bd92e4c8ff9708e7d045c423183b04a0e0ab4c29efd99ef6f0e", - "0xa163f42fb371b138d59c683c2a4db4ca8cbc971ae13f9a9cc39d7f253b7ee46a207b804360e05e8938c73bf3193bab55", - "0x87a037aa558508773fc9a0b9ba18e3d368ffe47dfaf1afacee4748f72e9d3decc2f7c44b7bf0b0268873a9c2ef5fe916", - "0xa1f20cb535cc3aebd6e738491fe3446478f7609d210af56a4004d72500b3ec2236e93446783fe628c9337bcd89c1e8e1", - "0x9757aa358dfbba4f7116da00fe9af97f7ac6d390792ea07682b984aa853379ac525222ac8a83de802859c6dec9182ef7", - "0x815daca1eded189ec7cb7cbc8ad443f38e6ddb3fb1301d1e5a1b02586f1329035209b7c9232dc4dff3fc546cb5ac7835", - "0xaed86dfaf9c4f0a4b2a183f70f9041172002a773482a8ebf3d9d5f97d37ee7c6767badfda15476b3b243931235c7831c", - "0x8d032e681e89e41b29f26be02f80030fa888f6967061d2204c1ebb2279a3211d759d187bce6408c6830affa1337fb4e0", - "0x877bff5c2db06116f918a722b26422c920aeade1efa02fa61773fca77f0ea4a7e4ee0ecaaa5cfe98044c0ff91b627588", - "0xb9ee5310d0996a10a242738d846565bdb343a4049a24cd4868db318ea6168a32548efaf4ab84edfbf27ce8aec1be2d1c", - "0xb59f6928167323037c6296dd7697846e80a7a4b81320cfae9073ebd2002a03bdf6933e887f33ad83eda8468876c2c4fb", - "0x8167686245149dc116a175331c25301e18bb48a6627e2835ae3dd80dd373d029129c50ab2aebeaf2c2ccddc58dcc72ec", - "0x82b7dcc29803f916effb67c5ba96a1c067ed8ca43ad0e8d61a510ab067baefd4d6b49e3886b863da2de1d8f2979a4baa", - "0xb43824cd6f6872a576d64372dde466fef6decdbb5ad5db55791249fde0a483e4e40c6e1c221e923e096a038fe47dab5e", - "0xab1e9884cf5a8444140cf4a22b9a4311a266db11b392e06c89843ac9d027729fee410560bcd35626fd8de3aad19afc4a", - "0xa0dbd92a8d955eb1d24887ca739c639bdee8493506d7344aadb28c929f9eb3b4ebaae6bd7fd9ffe8abb83d0d29091e43", - "0x8352a47a70e343f21b55da541b8c0e35cd88731276a1550d45792c738c4d4d7dc664f447c3933daabd4dbb29bb83be4a", - "0x8ce4a1e3c4370346d6f58528a5ef1a85360d964f89e54867ba09c985c1e6c07e710a32cdda8da9fa0e3b26622d866874", - "0xb5e356d67dd70b6f01dd6181611d89f30ea00b179ae1fa42c7eadb0b077fb52b19212b0b9a075ebd6dc62c74050b2d2f", - "0xb68f2cd1db8e4ad5efdba3c6eaa60bfcc7b51c2b0ce8bb943a4bc6968995abe8a45fe7f12434e5b0076f148d942786be", - "0xb5c7b07f80cd05c0b0840a9f634845928210433b549fb0f84a36c87bf5f7d7eb854736c4083445c952348482a300226a", - "0x8cfd9ea5185ff9779dee35efe0252957d6a74693104fb7c2ea989252a1aa99d19abaab76b2d7416eb99145c6fdb89506", - "0x8cc8e2c5c6ddee7ef720052a39cab1ecc5e1d4c5f00fb6989731a23f6d87ac4b055abb47da7202a98c674684d103152a", - "0x8c95394c9ed45e1bf1b7cfe93b2694f6a01ff5fed8f6064e673ba3e67551829949f6885963d11860d005e6fabd5ac32c", - "0xadf00b86f4a295b607df157f14195d6b51e18e2757778fde0006289fabba8c0a4ab8fad5e3e68ddbb16ccb196cc5973f", - "0xb1714b95c4885aac0ee978e6bbabbc9596f92b8858cb953df077511d178527c462cbe1d97fdc898938bae2cd560f7b66", - "0xadf103f4344feb6b9c8104105d64475abc697e5f805e9b08aa874e4953d56605677ef7ff4b0b97987dc47257168ae94d", - "0xb0ce6ede9edb272d8769aed7c9c7a7c9df2fb83d31cc16771f13173bcdc209daf2f35887dcca85522d5fdae39f7b8e36", - "0xad698d1154f7eda04e2e65f66f7fcdb7b0391f248ba37d210a18db75dafd10aedc8a4d6f9299d5b6a77964c58b380126", - "0x904856cd3ecdbb1742239441f92d579beb5616a6e46a953cf2f1dd4a83a147679fc45270dcac3e9e3d346b46ab061757", - "0xb600b5b521af51cdfcb75581e1eccc666a7078d6a7f49f4fdb0d73c9b2dab4ce0ecafcbd71f6dd22636e135c634ee055", - "0xa170c5d31f6657f85078c48c7bbf11687ce032ab2ff4b9b3aee5af742baecf41ea1c2db83bcba00bccc977af7d0c5c8e", - "0xa9ef1cbb6a7acb54faf1bcbd4676cdeba36013ca5d1ac1914c3ff353954f42e152b16da2bdf4a7d423b986d62b831974", - "0xaa706d88d3bd2ce9e992547e285788295fd3e2bbf88e329fae91e772248aa68fdfdb52f0b766746a3d7991308c725f47", - "0x911a837dfff2062bae6bcd1fe41032e889eb397e8206cedadf888c9a427a0afe8c88dcb24579be7bfa502a40f6a8c1cc", - "0xae80382929b7a9b6f51fe0439528a7b1a78f97a8565ba8cddb9ee4ba488f2ab710e7923443f8759a10f670087e1292c4", - "0xb8962de382aaa844d45a882ffb7cd0cd1ab2ef073bce510a0d18a119f7a3f9088a7e06d8864a69b13dc2f66840af35ae", - "0x954538ffff65191538dca17ec1df5876cb2cd63023ff2665cc3954143e318ece7d14d64548929e939b86038f6c323fc1", - "0x89efa770de15201a41f298020d1d6880c032e3fb8de3690d482843eb859e286acabb1a6dc001c94185494759f47a0c83", - "0xa7a22d95b97c7c07b555764069adaa31b00b6738d853a5da0fe7dc47297d4912a0add87b14fa7db0a087a9de402ea281", - "0x9190d60740c0813ba2ae1a7a1400fa75d6db4d5ce88b4db0626922647f0c50796a4e724e9cc67d635b8a03c5f41978f7", - "0xab07c30b95477c65f35dc4c56d164e9346d393ad1c2f989326763a4cc04b2cb0386e263007cc5d0125631a09ad3b874c", - "0x9398d8e243147de3f70ce60f162c56c6c75f29feb7bc913512420ee3f992e3c3fb964d84ef8de70ef2c118db7d6d7fd5", - "0xb161b15b38cbd581f51ca991d1d897e0710cd6fdf672b9467af612cd26ec30e770c2553469de587af44b17e3d7fea9f7", - "0x8c5d0260b6eb71375c7ad2e243257065e4ea15501190371e9c33721a121c8111e68387db278e8f1a206c0cce478aaa2b", - "0xb54ac06a0fb7711d701c0cd25c01ef640e60e3cb669f76e530a97615680905b5c5eac3c653ce6f97ceca2b04f6248e46", - "0xb5c7f76e3ed6dc6c5d45494f851fa1b5eaf3b89adac7c34ad66c730e10488928f6ef0c399c4c26cbeb231e6e0d3d5022", - "0xb6cd90bdd011ac1370a7bbc9c111489da2968d7b50bf1c40330375d1a405c62a31e338e89842fe67982f8165b03480c7", - "0xb0afcaf8d01f5b57cdeb54393f27b27dc81922aa9eaccc411de3b03d920ae7b45295b090ef65685457b1f8045c435587", - "0xb2786c0460e5057f94d346c8ebe194f994f6556ab2904a1d1afd66c0ff36391b56f72ed769dcc58558ee5efaa2ed6785", - "0x965dbb0cb671be339afcb2d6f56e3c386fb5d28536d61d6073b420ee15dee79c205af2f089fbb07514a03c71bf54b4e2", - "0x90f2003e2286bba9cebff3a6791637ca83b6509201c6aed1d47f27097d383d5c2d8532bff9e3541d2c34259841cf26ab", - "0x902142d1224e1888ebbfef66aaf8d5b98c27927a00b950753a41d1d28a687a8286b51655da9a60db285b20dc81d5ea89", - "0xa5d364448bf0d0849e5104bdaef9cb2cc8c555f5d6d34239c68671fbe1252f7c8c75b83cea10159dee4da73298f39a12", - "0xb013a54c5b99e296d9419ad5c2aaf4545acd34405e57d13cb764e92132cc20d1a14b33e10caf22d898b608670c04f273", - "0xb92976dceda373331804d48a7847f508cafde8d15949df53dbda09d03908678db1e61ee637baad5f05b2b03ea6f5a870", - "0x968bcb308c7ad0813dc9b3170f23f419aecd7b42176f27fac698811795bf42659fea6b04dab4ef43595dcc990622041b", - "0xa9d0a20e9367ea831dccd37f4d97ea75e9aeec952947a7946d95e0d249c94024183ef79a624bdea782469824df0ee4e4", - "0x8521b9667453c3658703e5db365b13f0e0d2331ce611ff1e708f8124d8a81bb5e82871de4a66d45c1a6b0a3901bd901e", - "0xb9c88e76e69b0722c0a2f97e57dbc4a6f7456434cd694e2ff67f4e24740cffa4db03e2b18f07f22954ae7db2286e1fa2", - "0x8400e55aa9ab01d4cc0affd611127b5d8d9a9dbd897f3cb8e2050379983aa54249be17d7b7891977b2515bb44a483f65", - "0x8cbb967b4ed31dc40ea06822a94d54cbfc8845c66fbafa3474c8f5fe1ada97299ed4ca955d9d7a39af8821eabf711854", - "0xb4d266ee3fea264a6c563fd6bed46f958c2d7bd328225f6e47faf41a0916aef3b697574322f8b814dfb2f5c242022bf6", - "0x8f7c72d69a919450215ead660ffa9637642c5306354888d549fd4a42e11c649b389f67cc802a0184d10fdb261351140c", - "0xa5f9e494ea9b2393ec32c48aac76c04158ccef436d4e70ad930cba20c55fbf61e8f239f70b9d75462405c4b6317c71a1", - "0xb3befb259b52a44a6f44345859e315c20efa48c0c992b0b1621d903164a77667a93f13859790a5e4acb9f3ec6c5a3c6e", - "0xb9e4ca259b4ee490d0824207d4d05baf0910d3fe5561ff8b514d8aa5c646417ca76f36ab7c6a9d0fb04c279742f6167a", - "0x98fa8c32a39092edb3c2c65c811d2a553931010ccb18d2124d5b96debd8b637d42b8a80111289f2079d9ebca2131a6dc", - "0xa65e5aa4631ab168b0954e404006ce05ac088fd3d8692d48af2de5fd47edbf306c80e1c7529697754dbbba1b54164ba0", - "0xb94b7d37e4d970b4bb67bf324ebf80961a1b5a1fa7d9531286ab81a71d6c5f79886f8ef59d38ae35b518a10ed8176dcc", - "0xb5ed2f4b0a9ae9ace2e8f6a7fd6560d17c90ae11a74fa8bef2c6c0e38bfd2b9dd2984480633bca276cb73137467e2ce3", - "0xa18556fe291d87a2358e804ee62ddff2c1d53569858b8ae9b4949d117e3bfb4aefce1950be8b6545277f112bebeeb93d", - "0xa0d60b9def5d3c05856dff874b4b66ec6e6f0a55c7b33060cc26206c266017cdcf79b1d6f6be93ed7005a932f9c6a0b9", - "0x801fced58a3537c69c232ce846b7517efd958e57c4d7cd262dbec9038d71246dafad124aa48e47fe84ecc786433747c7", - "0xa5e9a8ea302524323aa64a7c26274f08d497df3d570676ecc86bd753c96a487a650389a85f0bc8f5ea94fe6819dc14e5", - "0xa8a2963dc9238a268045d103db101adc3b2f3ab4651b7703b2fe40ece06f66bf60af91369c712aa176df6ed3d64a82fa", - "0xa4a8ff0a9a98442357bcdd9a44665919c5d9da6a7d7d21ccdbbd8f3079b1e01125af054b43b37fc303941d0a2e7baee0", - "0x90ef893350f50d6f61ee13dfab6e3121f4a06a1908a707b5f0036cdc2fe483614de3b1445df663934036784342b0106f", - "0x84e74d5bc40aaab2cc1d52946b7e06781fbef9d8de6f8b50cd74955d6bdb724864c0e31d5ac57bf271a521db6a352bd6", - "0x832cdf653bbbd128e2e36e7360354a9e82813737c8ab194303d76667a27aa95252756c1514b9e4257db1875f70f73eb4", - "0xa0af8660ed32e6dbcc4d5d21b0a79a25ff49394224f14e6e47604cf3b00136de8f9ab92e82814a595bf65340271c16c3", - "0x9040b5caf5e4dc4118572a2df6176716b5b79d510877bbb4a1211b046596899ea193be4d889e11e464ffb445ab71907b", - "0xb9bf8354c70238ab084b028f59e379b8a65c21604034d1b8c9b975f35a476e3c0ba09dd25bf95c5d8ffb25832537319b", - "0xa7b492cc1df2a8f62c935d49770d5078586bd0fefda262eb5622033e867e0b9dc0ffc2ce61cd678136a3878d4cbb2b56", - "0x95a5ef06f38743bba187a7a977023b1d9d5ec9ef95ba4343ad149a7b8b0db0e8e528bfb268dc7e5c708bc614dc3d02c8", - "0x99dcf7f123df6c55aeff0a20885a73e84d861ec95cf9208ba90494f37a2dcaacebc8344f392547d3046616d9753c7217", - "0xb3e14f309281a3685ceb14f8921c1e021b7e93c9e9595596b9fb627e60d09ed9e5534733fcbdf2fbc8c981698f5e62ac", - "0x816a5e0463074f8c7fb2998e0f0cf89b55790bdbbb573715f6268afb0492453bd640dd07a9953d0400169d555fdf4ac8", - "0x8356d68f3fe7e02a751f579813bd888c9f4edcc568142307d1c9259caef692800e1581d14225e3a3585dac667928fa94", - "0x8d70ea3314c91bfc3f7c1dcf08328ae96f857d98c6aac12ad9eebc2f77e514afdbaf728dfcb192ed29e7ce9a0623ecbb", - "0xb68280e7f62ced834b55bc2fcc38d9ea0b1fbcd67cc1682622231894d707c51478ed5edf657d68e0b1b734d9f814b731", - "0xb712dd539e1d79a6222328615d548612eab564ace9737d0249aa2eefed556bbcf3101eba35a8d429d4a5f9828c2ac1fe", - "0x8da42ca096419f267f0680fd3067a5dbb790bc815606800ae87fe0263cae47c29a9a1d8233b19fe89f8cc8df6f64697e", - "0x8cb2ffd647e07a6754b606bde29582c0665ac4dde30ebdda0144d3479998948dae9eb0f65f82a6c5630210449fbd59f7", - "0x8064c3ef96c8e04398d49e665d6de714de6ee0fced836695baa2aa31139373fad63a7fc3d40600d69799c9df1374a791", - "0xaec99bea8ab4e6d4b246c364b5edc27631c0acc619687941d83fa5ba087dd41f8eaec024c7e5c97cf83b141b6fb135da", - "0x8db6051f48901308b08bb1feb8fd2bceaedde560548e79223bd87e485ea45d28c6dcec58030537406ed2b7a9e94e60cc", - "0xa5b812c92d0081833dcf9e54f2e1979a919b01302535d10b03b779330c6d25d2de1f374b77fe357db65d24f9cbcd5572", - "0x967d442485c44cf94971d035040e090c98264e3348f55deabd9b48366ec8fe0d5a52e4b2c9a96780a94fc1340338484e", - "0xa4b4110bef27f55d70f2765fc3f83c5ddcdfe7f8c341ea9d7c5bcee2f6341bcfbf7b170b52e51480e9b5509f3b52048f", - "0xa0d39e4eb013da967a6ac808625122a1c69bf589e3855482dedb6847bb78adc0c8366612c1886d485b31cda7304ec987", - "0xa92f756b44d44b4e22ad265b688b13c9358114557489b8fb0d9720a35e1773b3f0fa7805ac59b35d119a57fe0f596692", - "0xaa27e4b979af6742b49db8bf73c064afd83a9cfe9016131a10381f35a46169e8cfd1a466f295fcc432c217c7c9fa44a5", - "0x845961319cc10bcfbb1f3cb414a5c6a6d008fb3aac42c7d5d74e892cc998af97bc9a9120c3f794e4078135e16a416e38", - "0xa18dbe3015c26ae3e95034c01d7898e3c884d49cc82e71ddb2cf89d11cec34cc2a3dff0fafb464e8e59b82ce1a0a7a11", - "0xa954aed6d7124fa5bd5074bd65be4d28547a665fb4fe5a31c75a5313b77d1c6fc3c978e24c9591a2774f97f76632bdde", - "0x8f983b2da584bdff598fcb83c4caa367b4542f4417cc9fa05265ff11d6e12143c384b4398d3745a2d826235c72186a79", - "0xb2caa17d434982d8dd59a9427307dfe4416b0efc8df627dd5fc20d2c11046c93461d669cab2862c094eec6a9845990c6", - "0x8c2baa5a97ee3154cce9fa24f6b54b23e9d073e222220fdd0e83e210c0058fb45ce844382828b0cb21438cf4cad76ee6", - "0xb93437406e4755ccf1de89f5cbe89e939490a2a5cf1585d4363c21ae35b986cb0b981dec02be2940b4ec429cc7a64d4c", - "0xa90ac36c97b7ea2eddb65e98e0d08a61e5253019eeb138b9f68f82bb61cdbadf06245b9dfffe851dfa3aa0667c6ac4b8", - "0x8bcdd7b92f43b721ddbfd7596e104bc30b8b43bdaee098aac11222903c37f860df29d888a44aa19f6041da8400ddd062", - "0x98f62d96bdf4e93ed25b2184598081f77732795b06b3041515aa95ffda18eb2af5da1db0e7cfed3899143e4a5d5e7d6c", - "0xad541e3d7f24e4546b4ae1160c1c359f531099dab4be3c077e446c82cb41b9e20b35fa7569798a9f72c1fae312b140b4", - "0x8844a1471ff3f868c6465459a5e0f2fb4d93c65021641760f1bb84f792b151bc04b5a0421bbc72cf978e038edc046b8f", - "0xaf895aebe27f8357ae6d991c2841572c2063b8d0b05a2a35e51d9b58944c425c764f45a3f3b13f50b1b1f3d9025e52ad", - "0xadf85265bb8ee7fead68d676a8301129a6b4984149f0eb4701eae82ec50120ddad657d8798af533e2295877309366e9c", - "0x962e157fe343d7296b45f88d9495d2e5481e05ea44ca7661c1fdf8cc0ac87c403753ca81101c1294f248e09089c090eb", - "0xa7c8959548c7ae2338b083172fee07543dc14b25860538b48c76ef98ab8f2f126ecb53f8576b8a2b5813ecb152867f18", - "0xae71680366e11471e1c9a0bc7ea3095bc4d6ceb6cf15b51f1b6061b043f6d5941c9f869be7cb5513e8450dca16df2547", - "0x831290201f42ebf21f611ca769477b767cf0ee58d549fcd9e993fae39d07745813c5ce66afa61b55bb5b4664f400ece7", - "0xaf5879e992f86de4787f1bc6decbc4de7d340367b420a99a6c34ac4650d2a40cbe1cef5c6470fc6c72de8ee1fe6bcce4", - "0x8d3c27e1b2ef88d76ac0b1441d327567c761962779c8b1f746e3c976acb63b21d03e5e76589ce9bb0d9ba6e849ed3d53", - "0xab23b09c9f4151e22654d43c1523f009623b01fe1953d343107cef38b95bd10afd898964946d3cb8521bcbe893e1c84d", - "0x8a6acade9520e7a8c07f33d60a87fd53faa6fbf7f018735bffcbbb757c3bafb26f547ceb68e7b8b6bca74819bfcd521a", - "0x94db50080d557440a46b6b45ee8083bc90e9267d40489040cbed6234bebf350c788ec51557b969f95194102fde8e9713", - "0x8be8031f32504e0c44958d893649f76cec17af79efcd22bbedb78378f0a150845467e59f79a3f2a3b6a66bdf0d71d13c", - "0xa69a4ac47fd92e1926b5e14adcbebbef049848e8a00d4bb387340892e5a9333cae512f447201728d3b53c6cf980a5fdc", - "0x8fc713825277c5a8d9ef0a1f6219d141def6d8b30aff0d901026280a17d1265d563ff5192a0817e0e1a04ff447fb6643", - "0x8bf0a85569c4f0770ff09db30b8b2ea6c687630c7801302c17986c69a57c30f0781d14b3f98a10b50c4ecebc16a5b5ec", - "0x896baa4135d5621fd6b6a19c6d20b47415923c6e10f76c03a8879fd8354e853b0b98993aa44e334623d60166ba3e3ca9", - "0xb82cde1c2e75a519ef727b17f1e76f4a858857261be9d866a4429d9facf9ea71d16b8af53c26bde34739fe6ea99edc73", - "0xb1a9e1f2e34895a7c5711b983220580589713306837c14073d952fe2aef0297135de0be4b25cbfaed5e2566727fb32ef", - "0xb42ed0e9eaf02312d1dba19a044702038cf72d02944d3018960077effc6da86c5753036a85d93cd7233671f03d78d49a", - "0xa402e34849e911dbf0981328b9fe6fff834c1b8683591efd3b85aa7d249811d6b460a534d95e7a96fdd7f821a201c2c4", - "0xa774417470c1532f39923d499566af762fa176c9d533767efd457cc5e4a27f60e9217f4b84a9343ecb133d9a9aab96b7", - "0x83dc340541b9ef2eb8394d957cd07b996d2b52ac6eb5562cbba8f1a3312f941c424c12d1341a6dc19d18d289c681ef40", - "0xb2906c32d5756b5712e45dec53782494a81e80f887c6e1ef76e79c737625eccecb8fd17b20e6f84890d322b6ffde6eab", - "0xb89705c30cec4d50691bc9f4d461c902d6a4d147cf75ee2f1c542ad73e5f0dabe3d04cd41c6c04ab1422be4134cf1ad7", - "0x8c3293651f4c4fac688bf5837c208b15e5a19ce51b20dd80ffc7fca12d3e615b2773cfc3ed62a1b39c66808a116bde06", - "0x8fceb8ef481163527d1fc3abc7e1a5b3b6de2f654c3fe116d1367b177dcba2e0d2124a7216803513a3d53fc1e30435b9", - "0xb2a42c827da630aaa3eb20ed07d136aa11ba01b4c8efc0a57ebab7d5b851a15daa6ba118bcffbc20703916e430e30a87", - "0xa86340153abb3fe97414e2fde857e15aac27c9bb9b61258eea6766024f426ed0753f08f07f6b02b5375e1587ea3afcab", - "0xb006465e258e646f91ba889765113d3dc9bd657246c533cab6516d55ba054baa9d7276a3b0fa31730c3bd824845bf107", - "0xa08aadc09428719cde0050d064c0f42c5b7c4f6c158227d7636f870957d6cfe821b4c62d39279a7c98f5a75fcb7bbfba", - "0x885e7d47ce9b50d21b95116be195be25f15223a6a189387575cc76740174c3e9044f1196986d82856b3fb25cdd562049", - "0xb18c3780362d822cc06910743c4cbcef044823a22d12987fe2e56f3801e417f2e9cd31574ea1c5c6ee7673a14aa56e3e", - "0xa625570ef7d31c042d968018865aeeba34ee65a059ab1ec079c7a8ba1be9e24bce6afb7036c07d9d6c96ab014f95d661", - "0x8fc9bd4764adc4c300b5bd49a06dce885d1d8aff9bae68a47976d0cd42110aa6afa2d7b90b64e81c0f14de729f2fb851", - "0x91d88714cb669f5f00241aa5ab80dffb04109492ea9c72b59645eb1f85f3539c61db2ab418af986f42241df8b35445e9", - "0xb98f14e664df2590dd2d00b5b5c817e388e5d9fb074f718637c33b3d4969c89e82fdd12db8997f5ff3bf5bb5ca5dd839", - "0x86cb3d9f148cb2170317a4c22af7092155aa66ecff7ab1299b102fbbaa33ed2a284b97b08f529d2da9faea63fb98972c", - "0x92449f6b8a7c737ecef291c947cbd602c47d7fe47dc3426c2b413f3019169aa56e14c2a7216adce713e1c7bd5c08a83f", - "0xb08c1b9080bba88b44a65070948142d73c00730715fbdd01e13fc3415c5b4f3248ef514fa3ade4a918c9a820cccae97c", - "0xb0a05297da76e37c22be7383e60bba1cbc4f98ba650e12d4afcfcea569842003644a10ad73c9148958f7bf1ffa0a27d0", - "0x839092c1f4e9fb1ec0dde8176f013b0d706ab275079f00f8e774287dd658d1b5638d5fe206f5f2a141911a74bb120f75", - "0xa36bd669bdc055ece4b17ff6eac4c60a2f23324a5eb6d0d6c16a2fce44c39cfd52d1fa2b67f3f5e83504e36426fbfc40", - "0x8aa428323512cf769645e2913a72976d32da4c0062ffe468a6062fd009340f0f23c6b63285848a0e7631a907adb032a0", - "0x944800f7d43f41283eb56115ac39ccc5bf107ae5db6abcaba6936b896260cd09428a6b828c0bccebeb00541073dbf38e", - "0x8e700ca7c9e1538cf64e161dd8d16af56fc29d53c79648150d6d8c268b0c95c76acded723e29918690d66252bd75f5b3", - "0xb9c4ce35b5b16b4c39b6e85800c76b26e8d0999500fabc1e5b6234a7f8da18c621266ac0d5ebc085354297ff21ac89a5", - "0xa0c706d32063f1877f7e903048ce885f5d012008d4a8019dd00261a8bbc30834bffeba56cdeddc59167d54cc9e65f8fa", - "0x839813b736225087cbbcf24506ea7bf69138605036b764ec0514055ac174bbc67c786a405708eb39a6c14c8d7e0ec6ee", - "0xb1a5fef055a7e921c664f1a6d3cb8b21943c89b7e61524a307d8e45aa432e5765a27c32efdb32d88062cd80800a260de", - "0xb17f8202d9ed42f0f5cb1b1dbda60711de3b917a77f6069546fa3f86d21f372b8dd5cb86f1994b873ba9982404e08daf", - "0xb5211d54bd02d44d4d808ad57067606f3e9fa2cad244a5f2acef0edf82de3c496d2b800f7c05f175d01fa6ace28b44d1", - "0xaa9c6f8f489b35fdb7544116fe5102a34ff542de29262f156df4db4ea6e064f5ea20c4bd877d40377ed5d58114b68f19", - "0x826668b1f32e85844ff85dd7e2a8e7f4e0fd349162428bc9d91626b5ab21bdbacd1c9e30cf16f5809b8bf5da4f4fe364", - "0xb30d14917b49437f9fdbae13d50aee3d8a18da3a7f247b39e5d3e975c60bd269da32da4e4cc8844666fca0d65f4e3640", - "0x8c6918d8d94b36c6b9e772e9a432e66df16724e3b0660bde5ea397e6ef88028bb7d26184fbe266a1e86aef4a0dfe5faa", - "0x906d80ffd692c1dd03ab89be52e0a5a9e90a9cdbfc523d2b99c138ae81f45d24c34703f9cb5a666b67416e3bb6272bc4", - "0x8b07e8ba22b436e64f011cacf5e89c55cd3bfb72ae8b32a3a8922c4fccb29de6f73662d6e330da6aa6e732a2187ef3c9", - "0x9547466b4553a49adf59cc65d4c3c9401b2178947ebe3bd33c6e63cfb67d6be8729033158594f6f244b272c4487d6958", - "0xaafcccea41e05cb47223fa8dfec0dd55964268bd4d05e24469614077668655ac8a51d2ac2bfb22862f8f4fa817048c2f", - "0x870f8c1173e8fd365b0a2e55c66eea3ab55355990c311f3042377803d37e68d712edcc5a0a2e2f5a46df0c1c8e6310c2", - "0xb4288f792008f342935f18d8d9447fe4ddcfea350566e13dba451f58c68e27241af1367f2603a9dff6748e7fe0c53de4", - "0x91c58c0e537d3afdcf7783601dd9cda2aa9956e11f711b15403760cf15fc6dffb40ed643886854571da8c0f84e17adfe", - "0xa43fec8ee92febed32e7cdd4e6314a62d9d3052c7a9504057dfba6c71fdfbeff1cef945d8f087bd106b5bec7478ad51f", - "0x99cf5e0e3593a92f2ec12eb71d00eccec3eec8662333471b2cb3a7826b7daca2c4d57ffba18299189cf7364e2af5df6d", - "0xaf50f9ab890b7517ff1f1194c5b3b6f7f82eabc607687a8380be371a6a67b117aeb9b6f725556551b81f8117971706a2", - "0xaa352430887053602a54403bd0d24d6b5181b44aa976dfa190e21851699a88127dcc904c90a48ec44610056b5dcd36c4", - "0x964c821ea1902354736fa382a929c156bd67b9468d6920d47c27b9d0d304b6144118888d124c1f6785da596435ed2410", - "0xb2284a67af26b5f5aff87b4d8e12c78ab37c5eb6e92718fca8549f86f4f001b660fc4520456aff72c9bcddd686603942", - "0x83c54cbb997ea493dc75df4023071dce6da94268feaa2352373789616f012098270ba4fd60c791796a6f5062fb2cd35e", - "0x9143e8fee0b8f0f34c65c7750858093dcf165c6a83c026bfac2d5ffa746361eb4b6a14fdb43e403add901ac3735735a3", - "0x97d7748a5b278ee47b18c9e60689b12a0a05be47e58e78bf8c04b9e8b34e2e2f2d3ac3c25c76ab2e0a75e8a54777b7c8", - "0xb4e68f6f2d978a5411414c164c81ddb2a141b01ebe18c65a8626ca75d6432e5988310b50a888a78c3a0a242353525af5", - "0x8976f4cc3eaf2684718cf584712c4adaf00a4d9c521f395f937e13233b30329658b3deacfe7e29fac84c496047f2d36b", - "0xa40bcdf4b6e95f1535c88dddcbf2074ef2e746b7fd232bdfd2b88f2f6d4bbf21c6b263cf5fd3e12a03476f2f5ffe00d2", - "0x88c7b6337ee705acd8358ef6d2242d36b140afff0579a7784b3928a0c49698bd39c1f400e8a2e3eda5fbfb2e8f28fe51", - "0xa98612ba8b450a71d2075d51617ebeb7ca401ad3cbd9b8554850c65ef4f093ba78defb00638428c9f1f6f850d619287f", - "0xb7e71d3ffa18b185c1a6bd75668ff65d985efc0a0c19f3812cafde9adbfb59ffd108abeb376e6a8877fdf5061562f82b", - "0x8a3e5fd776cc26908a108a22b1b122d60cb8c4f483cbedcd8af78a85217bb5a887df3efed2b8b4ec66e68eb02a56ca93", - "0xb0d92b28b169d9422c75f9d5cb0a701e2e47b051e4eacd2fd1aa46e25581a711c16caf32f40de7c7721f5bf19f48b3f5", - "0x88895739d5152282f23e5909cf4beebda0425116eb45fc5a6a162e19207686d164506c53b745fb2e051bb493f6dbad74", - "0xadbccfed12085cd3930bd97534980888ee564dda49e510c4e3ca0c088894855ef6178d5b060bca8a8a1a427afdbec8a8", - "0x87d00674abd3d2e7047a07ed82d887e1d8b8155635887f232dd50d6a0de3fb8e45b80b5a05bc2ec0dea9497b4aa783ac", - "0x806e1d3dfadd91cbf10e0d6a5e61738d0dbff83407b523720dce8f21f8468b8a3fc8102acf6ba3cf632ca1cb2af54675", - "0x95a9dff67cf30e993071edede12623d60031fa684dfbe1654f278a1eb1eb7e1be47886d3f8a46c29b032da3176c0d857", - "0x9721973288384c70a9b191436029e85be57970ad001717edc76d44cbfa0dff74f8af61d5279c5cd5c92c9d0f6c793f63", - "0x95c22d1d9b51ef36ba30ee059dcd61d22be3c65f245d0a5179186874219c08e1a4266f687fc973e71f3e33df2b0f7fd3", - "0xb53ec083dd12cc42ae2bae46883a71f2a35443c9ce4ed43aa341eb5f616a53b64211ed5aac717fe09ef1d50f551ed9f0", - "0xa103dab6695c682400f60be8d5851ce07f12e4bd9f454d83b39c41ddcf1443bb14c719b00b4da477a03f341aa1e920cb", - "0xb522236988518e5363b1c4bb3f641ff91d3d4c4d64c5f065415b738160b4ce4b0c22e1e054a876aa6c6a52fa4a21dfa2", - "0xa6a00562f0879702cdba5befd256a09f44bf48e61780e0677ff8c3fda81d8e6dc76ba1b05e3494ca9a4cef057eba6610", - "0xb974a2ae631e0b348421f0cda5bd4ce7d73c22dd0fc30404c28852c33499818cab89fbf5c95436d56a0aab3bf2bbab51", - "0x9148cf2a7b7e773245d4df5a9d34cf6d9d42b1a26a4ca6bc3013feca6f3941d6c44f29ba9328b7fe6ce6d7f6565f8e4a", - "0xa34035c4a63e98528a135cc53bbbcfcda75572bc4c765f212507f33ac1a4f55563c1a2991624f7133c77b748bbe1a6da", - "0xa0c45923cfb7bd272ee113aecb21ae8c94dda7ad1fe051ddb37ab13d3bb7da5d52d86fff9f807273476c24f606a21521", - "0x81ec2ca57f4e7d47897d0c5b232c59d7b56fe9ce0a204be28256a7472808de93d99b43c824a0cd26391e6cac59171daa", - "0x8373852f14a3366d46c7a4fc470199f4eebe8ee40379bd5aae36e9dd3336decaead2a284975ba8c84d08236e6b87c369", - "0xb47e878a93779f71773af471ba372cb998f43baca1ae85ea7ff1b93a4dee9327e2fb79691c468ec6e61ab0eae7ceb9f1", - "0x8fc8f260f74303f26360464cfef5ee7eebcbb06073cef3b1b71dab806d7c22f6b3244ce21d0945b35c41f032f7929683", - "0x87e3c4e1dab00596e051ce780b9a8dba02ecdc358f6ddaeb4ec03c326e4b7da248404745392658eb1defff75b1ba25c8", - "0xaac95d8e3b7fe236a7ca347d12a13ec33073f2b2b5a220ecfd1986ca5c3889f0e6a9d9c377a721949aa8991c1821953a", - "0x91a483679437ae126a16f5dc3bba6e9bb199dfbba417f0dc479f22819b018c420edc79b602db6183c6591b1909df4488", - "0x94a4b2c663aa87a2417cad4daf21a88b84983a7b212ffcd18048a297b98e07dd4c059617136976fac1d9e94c8c25b8d2", - "0x83e2a690bfa93c79f878a63c0f69f57aabdd8bede16b5966ffba7903dc6ad76775df1fd5347e6f2825f6cd7640f45a45", - "0xa316af7ac11b7780d15312dc729499a1a63b61c4283e103ecce43c3b0cbb0f4bce6ff04e403f5c7cb670dee80c75ab99", - "0x8d0a911c54ee1f9f7e7794732ad87b434c3f356294d196a5e35eac871727fd32a49c27c2dfa10833f9e6f9c7ccbe0064", - "0x8b8db09028298a1f6362b346c8bfeced7cb5d13165a67c0559a9798a95b7a4a9810c02bb852289d47c59f507bd24ce77", - "0x962d57305c518f175ed5d0847fb52ddc4258ca0e4c9ddfc8c333a2ee9f8b4e48d25a3d7e644b785a5953e2e4063da224", - "0x92e0799491898271769250fe88b0cb9dadec98ac92f79de58c418d23ef8c47fcf21ddc90e0cd68bb8f1deb5da82da183", - "0x99855067125f6a6c3a3e58d3bd2700a73ef558926bd8320d2c805a68e94207b63eda6bdc5a925ec36556045900802d51", - "0xa724ae105ab4364a17ddb43d93da1e3fc6b50213f99b7be60954b24dc375c4f93a0737f4a10b4499b6f52667d5f3a64e", - "0x82070fb43a63fb50869b118f8940108f0a3e4cc5e4618948417e5cc3801996f2c869d22f90ca4ca1fdbef83c4778421a", - "0xb25c04365d6f24d5d3296c10d85a5de87d52a139ddbcbf9e0142074bc18b63a8bc5f5d135bd1e06c111702a4db4cee28", - "0x851093282dcda93e5c98d687a17a7ee828cf868f6c85d372d9ae87f55d0593d8f9f0c273d31f7afa031cf6aea6a7ef93", - "0x93f04f086fa48578210ed207065d80a40abcc82d8bfc99386a4044561d35748ff6c3da6489933c23644ad4b60726da8a", - "0x84b1b50d1e876ca5fc341bbedab5b3cc0f6a3f43ea7dd72605f74d0d9c781297b2f12b7872dd600924f1659a4cdf8089", - "0x81b0ba88c582d3956f6b49ca3e031c6400f2ec7e1cd73684f380f608101e9807f54866be0bb9a09c03953c4c74fbb3c8", - "0xa641af6ac644c41a55dee2ef55d3c37abdb19d52bc1835d88e7adda6b6ccd13987c5fd9cba9d318cabb541aa6a0c652e", - "0xa7b75b0624d04ad0901070e691eb2d2645b60f87e9d6b26e77a5fb843f846c32fc26e76ae93fd33fe3b857f87bc25162", - "0xa81ba3e2ed0f94c67cd02ba7360e134f8becf7ed2ed2db09b9f5ef0942f7073bfee74ca446067db6092f7b38f74ccc11", - "0xab80edcabab5830a24210420f880ebac4e41bf7650c11ba230f4889634dbf8e8e2309f36be892b071c67a3bab8fc7ed6", - "0x94d69b64675076fecad40fae4887fb13a8b991b325fa84e9d2d66e3b57646de71a58ad8fd8700fefb46975b18289250b", - "0xb44fc0df480cd753a041620fa655be9df74963ae03d4625847d5bb025ceb37f48d19c8c9c444546fba5fe5abb2868506", - "0xb56e2c51324d6200b3d9781b68b5b5e1617a68afccd28b3a12a4be498d2e3aafcd86514c373a9f3a001db733010c29cf", - "0xa359a0c172e5cd7ce25080dd2652d863d7c95a4a502ae277ac47f613be5991300f05978404a0acb3bcda93524dcf36e4", - "0xb01427a3dfdf8888727c0c9b01590b8ae372b7b4080d61e17ccb581bac21e61c4a58c75db7a410d1b2a367304e1e4943", - "0x95cb08be4a96c18fbf9d32a4bbf632242029d039a5fdea811488d3634cd86520d4f9806250a8c01855ee2481210f542a", - "0xb8594fe6c0717164058f08aedeed1853523f56cec5edbf0d2be271fa5e8bfd61f2974b0f3988d70f5baa2e7888c7ec1f", - "0x8f64ee89f59daf74fa1056803247c9d678783ee3917b12a201f30f7523957763e979ceaddb38bae20de40b9885728049", - "0xb6093ee4bdb837bcc59172e236f4bdbd439c0a5a50e2aa16636cbff81b51e92989eb5f80a3f75c37ae7b5b942e55b3d2", - "0x913b6fbb7b43e3e5c49e96cd8e82ed25c655e51c7b8ca82e8fbf92b01ac83c39d52f6f4efab5d39b0591a0538601a86f", - "0x81f42668479ca0bec589678dc0973bf716b632578690efe1a0f13de630f306fb4a189a98c2302572fd85d3877ee030b5", - "0x90ff89c38a9a7189f28d35a088657f52283670e7fec842fa91c265660ea2e73b0ad6c46703d649f406f787490b7a7e4b", - "0x9077b8b5f1e083183f3152ceb9c5491b5d4b86525a08879f7fb6d5e27f9f1a6867cf0d81b669a4a2d1f1654b67fa8d9c", - "0xa7a0275cf5b894adbf2e54a972310cfe113e811872111d6ee497d03750d9f6ffa5517b6c13a99b111a4a91e8e4dfeeee", - "0xa08976bf8125b7538313a584bbe710741d630cab067a204ad4501cc4938874ce7aa6a1a826259c2e82ef10a66f1f36fa", - "0x8aa45385b5b97f1f3e45f2bbf7a4f3e8ef068e628608484971c97adeb610ebd5deec31317e03eb6536808921062c04db", - "0x945b106b8f3ae85e60dfd34ef3dcc079bc6f0aab6df279ed000856efd51321462038ac0a1ca5db3ebf6379bc341e7c55", - "0xa4199c87a96f98cc9d8776fe6de131d2c706b481eb9e9a3bbc50a93d492d7fd724ea469f723fbcfb94920cb5b32c1d76", - "0xa5347b1b2f6149805de67546c5ed72253311099bf1473dbc63edcf14a0a5e68d401f5341338623fbe2e2715b8257e386", - "0xaf5dcd03ddc3769e83351d6b958d47a06d4e5224bd5b0ec40ffe6b319763fab8572002f4da294a9673d47762fd0e6e1d", - "0x82ec1031b7430419d83b3eea10a4af4c7027f32b91c3ae723de043233b4a2e0c022c9e0f5a1ac49753800f119159112d", - "0x8a744d911b67d03b69811f72e9b40d77084547e4da5c05ff33893468b029a08266fc07303f7005fd6099683ca42b3db4", - "0x93ab566bd62d3439b8fc620f3313ef0d4cb369f0f0c352cdaf8e5c9e50b9950ac3540b72f4bf5adcb9635f9f7ce74219", - "0xb2a211d72e314799bc2ac7030b8bbb8ef4c38ebd0ebb09d6cbd43bd40c6c61d80a3aad02cc73f5775a08b9657da20a48", - "0x98d60f0a98d28718e0c6dcccc35a53521ea7f2d8fe08ea474374a336b44cea4cd1c63b31f2ad10186822bfb54aca53e6", - "0x831f89cb94627cfe554d46ae1aad8c1cde7ebe86c4bd8fac4ef73ac2d5b491f5efa5dc4198cb8ffbec563e0606b91d89", - "0x8f8552583bc6cb3fb176b7202236ee4128faf0c8ec608f9150f8e011d8c80b42aab5242c434d622b6d43510eaef752c0", - "0x897bf27baaee0f9a8445200c3d688ae04789c380d1b795557841606a2031092328eb4c47fef31c27fdd64ba841d9d691", - "0xb57589a4af8184b4a8ceb6d8657a35522672229b91692c1cec3ac632951e707922a00086d55d7550d699c4828bcfaab1", - "0x98c2fe98095e026aa34074bcff1215e5a8595076167b6023311176e1c314b92b5a6d5faa9599d28fca286fadd4e3b26c", - "0xa034992e563bd31ede3360efd9987ecddc289bc31046aa8680903bb82345724805e6f6cf30f7889b6b95cf7319c3aea1", - "0x85c33d9f10cc7185f54d53c24095e621966065e0ff2689a9aa6bb3d63706796c37a95021738df990c2c19493c0d44b64", - "0xa8c1247d6de2215f45b50dd2dc24945ff9b93184bcc2159b69703b0bba246adcd1a70a12659f34c4ca4ba27dea6e3df5", - "0x83ebdad2834c97bf92aac8717bab2f5cb1f01026b964d78e2f3b44e99d7908e419165b345d2b2f125b903096584e6683", - "0xb0af6f7f81780ceb6e70adfd98e7702ec930c8ca854b50704c4a0fc8b887b9df60a6fe9038b487f3ed0eb8eb457307ea", - "0x933ec7e53882453898617f842ab2efae4756eb6f6ea0161cced5b62a0cdde4c08c7700d52f7546d4dd11a4c9e25d624e", - "0xadf6e6d4706025f85eb734f506dde66459c9537a1abf6189199cf219ae583b461e11c6242fce5f0795e4d9025270fabf", - "0x89e4316319483098761b0b065df4cfb542963b7a2556ba5425b6442fb0e596eb2a4f03e2dc8c617eebe8f243a12e7d10", - "0x90c5a147555759ebc4d0e15e957a548315f9994ef0c7a3f53f2d18da44fb93bf051d96ba8551597a6f3e701b926fd791", - "0xa151a9a5199c72c697b771cd81e550fc6f9596c752ae686ad988b316a7548360cf9785ab4645164d96cfdf9069a94020", - "0x80cba11a3977729d7948db5bcc186159f4cae7c0a835bb38bb781e287dd6c238508e748f23454405c9d5eed28e77df02", - "0xae4b92ea03cb8ad12ad3ec76869ad05acb09f9d07a3c9a87dec0e50d9a276fe5d3d515a8c446f3aa35cd7d340a22c369", - "0x8630062709a1f180f952de9f1ca3f41acce5420677f43d9619097e905a6237f1908d66db7a4dfdf1b2b92fb087e9944f", - "0x81defc33dd383d984c902c014424bddd5e53b013f67f791a919446daa103b09b972fa5242aba1b1dbe4a93149373f6c3", - "0x963891ecaea97e661bac2594642327a54f5a0beb38fcb1c642c44b0b61faab9c87b0c9f544a3369171b533d3ab22f8f1", - "0x932fadbff5f922ddcd4da942d57fe3e6da45c3d230808d800a3ca55f39b0b62f159be31a5924b395d577a259f48c6400", - "0x992ce13bd037723447f88aeb6c7722fd9510c7474192b174ea914ed57c195c44c298aec9a8cabac103f0a5b50051c70b", - "0xb032157b3e4fe69db6ce6bb10bdf706a853fbd0bee08c2ab89da51ad827425df5df498b90e7a30247a7f9e954ca986e5", - "0xb2478d4874578da3d5000893736bb65712e6aafe96e6fa5cf5878ae59ba0ce640dbe5d76ec2b5baca75af57def471719", - "0xa387c17b14dd54910fecf472f760e67cf71a95e9e965cc09484e19581ada65e79938b86136a93e287e615fbd4908e080", - "0x98f02be271d0f8841d8d561163f9e55e99b57aff121a93fba7a4654bcf15a0899811f00f5bcbfbebd98e365a0e332e97", - "0xa3c34f01d54cab52a8890391b8cf152cc9cdc16e7e53794ed11aa7b1a21e9a84d39ddcfbcb36c5df6891c12307efc2e0", - "0xa940331f491ec7ad4a9236ca581b280688d7015eb839ee6a64415827693d82d01710dc4bbd5352396be22781fea7a900", - "0xb10874ed88423731535094031c40c4b82af407160dfade4229ac8f4ef09d57b3db95c4a9d73c1a35704f6bd0d5f6c561", - "0xa9c5a4a7680261c1b0596f8ab631d73d4a7881b01e6559c628b5cdafa6dd2b6db2db64f3f2ab5841413a8a52b966a0da", - "0x8fc154564a61d5e799badc98b43a3587f804385a850adce9a115cbd2ad911f3fd4072b8e6b22fc6c025a6b7e7ea5a49f", - "0xb9caf7c6dcce3d378aa62c182b50bc9c6f651eb791d20fffa37ef4c9925962335fe0b3bc90190539312aa9ccf596b3b9", - "0x90c5b7acf5cb37596d1f64fc91dee90f625f4219fa05e03e29aebea416c8e13384f2996f8d56791bcf44ae67dc808945", - "0xab8d311fc78f8a1b98830555a447c230c03981f59089e3d8a73069d402a3c7485abe3db82faf6304aaca488a12dbe921", - "0x8a74fda6100c1f8810a8cacc41b62875dd46d5c4a869e3db46202d45a8d9c733b9299dda17ce2ad3e159122412a29372", - "0x8769dcacba90e6fc8cab8592f996c95a9991a3efecfb8646555f93c8e208af9b57cf15569e1d6e603edac0148a94eb87", - "0x854fd65eea71247df6963499bafc7d0e4e9649f970716d5c02fbd8708346dcde878253febb5797a0690bd45a2779fa04", - "0x83e12dc75ef79fd4cc0c89c99d2dace612956723fb2e888432ec15b858545f94c16fae6230561458ceee658738db55ba", - "0x8416ef9ac4e93deff8a571f10ed05588bef96a379a4bdcc1d4b31891a922951fa9580e032610ac1bb694f01cb78e099b", - "0x93aea6e5561c9470b69d6a3a1801c7eef59d792d2795a428970185c0d59b883ab12e5e30612d5b6cde60323d8b6a4619", - "0x91d383035aa4ec3d71e84675be54f763f03427d26c83afb229f9a59e748fb1919a81aca9c049f2f2b69c17207b0fb410", - "0xb1c438956f015aef0d89304beb1477a82aed7b01703c89372b0e6f114c1d6e02a1b90d961b4acbb411cd730e8cacc022", - "0xa1ee864a62ca6007681d1f859d868e0bcd9e0d27d1da220a983106dc695cb440980cfdb286e31768b0324b39ae797f18", - "0xb57881eba0712599d588258ceada1f9e59c246cc38959747d86e5a286d5780d72d09e77fd1284614122e73da30d5cf5c", - "0xa48f9ae05ba0e3a506ba2e8bbce0d04e10c9238fa3dffa273ef3ffe9ec2ed929198a46507c0c9d9b54653427f12160f9", - "0x8db18da7426c7779756790c62daf32ae40d4b797073cd07d74e5a7a3858c73850a3060f5a3506aae904c3219a149e35d", - "0xa2bf815f1a18d7be8ce0c452dfc421da00dcd17e794300cdd536e4c195b8c5b7ccc9729f78936940a527672ac538c470", - "0xa34c6f1f2398c5712acc84e2314f16d656055adcafad765575ae909f80ab706cf526d59e5a43074d671c55b3a4c3c718", - "0xb19357c82069a51a856f74cbb848d99166ce37bd9aca993467d5c480a1b54e6122ebddb6aa86d798188ea9f3087f7534", - "0xb440eac6f24d12c293d21f88e7c57c17be2bdb2a0569a593766ae90d43eccf813a884f09d45a0fb044ee0b74ff54146a", - "0xb585d42ef5c7f8d5a1f47aa1329f3b1a566c38bf812af522aa26553010a02bfd6e9cc78fdb940ef413e163c836396a5f", - "0xaca213b27f3718348e5496342c89fffc7335f6792283084458c4a1aa5fe0a1e534fcec8e7c002f36141308faae73ef2a", - "0xb24c07359769f8ffc33bb60c1f463ea2baad440687ef83d8b7c77931592d534b2c44953c405914ace5b90b65646c1913", - "0xb53dfaf381205a87ca4347328ff14a27541fa6436538f697824071d02d4a737ceb76a38dcc6e8dadef3b5bc6442f5109", - "0xb55972d8ed5197215c0a9144fc76f2cd562ca5f4e28c33a4df913363fd1388978b224c44814adb4c065c588a4ac1fe10", - "0xa3303bc650e120c2e9b8e964ad550eb6ac65ffe6b520768b3e8735565ae37eafdc00e3c15fae766d812f66956a460733", - "0xb11e53912ea0e40c3636d81d7637e10c94cc7ed9330a7e78171a66d02b7603f4cb9b3f6968104b158de254e65b81640f", - "0xb076bb9f6d396aa09c2f4706ea553b426fdfd87d7d69e438285b74d334e82f73973cb4dbd6cb1647493433dad65dbc41", - "0x9415828b1632175f0b733541e32c26a9c88fe12c721c23e595f2efceaa7f867f359e32564b7c032185686587ac935cf4", - "0x89579a112c306181c79aabdbf683e7806357febcb73bf5e8883862ae29618ef89498b62634404bb612d618fcd16da415", - "0x8761bcd55d04297c4f24899e8fb9f7c1fcd7449ae86371ee985b6a262e228f561c2584980694d9bf354bdf01543edb6a", - "0x9100c88bf5f6f00305de0c9cf73555f16a2016d71c50cb77438e8062bd549fa5407793a8a6a7e06398756777680a2069", - "0x9235dfef45aeff9c174898b0755881b7171ed86362854f0eabc3bc9256176c05a5dc27ca527c91c3fa70c0ec5fd5e160", - "0xac53b1d677cebab6a99381dd9072b8ac1abae9870ec04a1f8d2a59b6f1de797c1492b59af6948f5cf2b20599170f5bba", - "0x946542936b0c59156e8fd5c1623b41369bc2cbcc46ece80360dcb5e7cce718a3dd8a021f0b9c223062a4e43d910b634f", - "0xb1e9939b34e1fcc026e820fcfa9ce748b79499f8e81d24a3ef0457b3f507fe5fa37b975a47c143e92eb695623b4e253b", - "0x9382d9b5766f6ae960d8a8435e8b5666e57ef8e5f56219e7bfd02857afe5cb16f44d70a9e444cfb1008649ae9b863857", - "0x91770ed1215ed97dca1282b60b960be69c78e1473edb17cd833e712632f4338ff74bf435c3b257439497c72d535ae31f", - "0x8eb2cbe8681bb289781bf5250e8fa332141548234c5c428ff648700103a7cd31fdc2f17230992516c674aa0ab211af02", - "0xa823b71c82481bc6ac4f157d5c7f84b893a326bbb498c74222427ded463d231bc6e0240d572ab96266e60eb7c8486aea", - "0xa13ce4f482089d867e5babcd11c39fa9a9facd41a2c34ee2577de9ce9c249187e16f2b3a984cc55f9e45b9343462d6d2", - "0x8d80e7bc706059cf5151f9f90e761b033db35d16b80b34dc8b538adc8709d305a0c06933dcd391e96629cf3888c8bf87", - "0xabcd36cdd86c0fb57fb7c0d7a3b9af5fd9aed14e9f4e7e84b0796c5c0ad18c41585e8c46e511cef73dc486fe43f6a014", - "0xa947a5b6916f416fa5a69c31aba94add48584791148b27d0b3ed32c02a05dfc06f7fdc5006e3b2503bdf6e410e30f2fb", - "0xb158e621580659f1fa061d976b8591ac03b53ecd23d9eb2b08c1a20353d78438287749664d196020d469ef44b3b8752e", - "0x90a5a9540281e481ac4b8d29968f477cb006b56bd145529da855d65d7db0cf610062418c41a1d80c4a5a880c0abe62a0", - "0xb2c91808b6289d08a395204a5c416d4e50a8bb1a8d04a4117c596c4ad8f4dd9e3fb9ce5336d745fc6566086ae2b8e94f", - "0xaf6767c9b4a444b90aeb69dfddae5ee05d73b5d96e307ce0f3c12bccca7bc16475b237ba3bc401d8dafb413865edf71e", - "0x8dcecf624419f6517ef038748ac50797623b771d6111aa29194f7d44cfb30097ced26879e24f1b12a1f6b4591af4639b", - "0x954437559d082a718b0d6d7cec090532104ab4e85088e1fc8ee781d42e1a7f4cdb99960429707d72f195ff5d00928793", - "0x80f0b7d190baa6e6ab859dc5baab355e277b00ddcca32e5cebe192877ad1b90ead9e4e846ca0c94c26315465aeb21108", - "0xb8c29f181ed0bb6ac5f6a8d9016980303bb9a6e3bd63ce7a1a03b73829ac306d4fab306ac21c4d285e0d9acb289c8f2a", - "0xa7685079fe73ecaeabf2a0ef56bad8b8afb6aeca50f550c97bf27e6b4a8b6866601427fcd741dc9cb4ce67a223d52990", - "0xada2ebf6f2a05708d3757fbf91365ec4d8747eb4c9d7a8728de3198ceac5694516ab6fd6235568aecd8d6d21fef5ef48", - "0x846bc5da33d969c53ab98765396cab8dcdbb73b9836c9bda176470582a3427cb6de26d9732fab5395d042a66bdba704c", - "0x800a3a7ea83ce858b5ebc80820f4117efa5e3927a7350d9771cad9cb38b8299a5ad6d1593682bba281c23a48d8b2aa71", - "0xa002b18595dec90b5b7103a5e3ec55bdd7a5602ee2d3e5bd4d635730483d42745d339521c824128423dfe7571e66cbaf", - "0xb6b4e2067ac00a32f74b71007d8ab058c2ef6b7f57249cb02301085e1a1e71d5de8f24f79b463376fd5c848f2ab1c5bc", - "0xa3e03036db1b6117efe995bf238b0353ad6f12809630dca51f7daaaf69f7db18702e6b265208944bfb1e8d3897878a51", - "0xadd16712f66d48aab0885bd8f0f1fb8230227b8e0ffca751951c97077888e496d6bfab678cb8f9ffba34cee7a8027634", - "0xad211af2dd0748f85a9701b68c19edd4a7c420e497cb2e20afdc9df0e79663841e03b3c52b66d4474736f50d66c713ce", - "0x8c8a899ce0f16d797b342dc03c2212dda9ee02244c73c7511626dba845d11a0feb138441da5459c42f97209bf758cd9b", - "0xa17efc75c7d34326564ec2fdc3b7450e08ad5d1de4eb353de9d1cd919d90f4be99f7d8e236908b1f29cf07ae1ffe0f84", - "0x862d4a8b844e1b0dd9f4deff180456ebed5333b54290b84f23c0ddb2725ac20307e21cbb7343feac598756fe36d39053", - "0x9187fbb19e728a95629deda66a59e178f3fcd6e9d7877465aa5a02cea3baba2b684bd247b4afbf4aa466b64cb6460485", - "0x85ae5636688d06eab3be16e44fe148515d9448c6123af2365d2c997f511764f16830610a58d747adab6db5031bea3981", - "0x8aa8a82891f4e041ce6df3d6d5d7e5c9aaaffe08e0a345ac0a34df218272664c1b7be2450abb9bc428bd4077e6e5dcc4", - "0x8c3bcc85ea574dfe1b9ca8748565c88024e94374434612925b4e9a09fa9d49c0a56b8d0e44de7bd49a587ef71c4bff5f", - "0x9524f9dd866fe62faf8049a0a3f1572b024120d2e27d1be90ad8b8805b4e2c14a58614516281cc646c19460a6b75587c", - "0x84580d9c72cfa6726ff07e8d9628f0382dc84ce586d616c0c1bd1fd193d0a49305893eae97388de45ba79afe88052ee9", - "0xb5573e7b9e5f0e423548f0583423a5db453790ab4869bd83d4d860167e13fd78f49f9a1ffe93ddddf5d7cd6ec1402bc4", - "0xaff658033db3dad70170decb471aee2cf477cf4d7e03267a45f1af5fd18200f5505c7ce75516d70af0b0804ec5868a05", - "0x84a0eab4e732a0484c6c9ed51431e80cea807702fa99c8209f4371e55551088a12e33a11a7ef69012202b0bc2b063159", - "0xa68f8e730f8eb49420fe9d7d39bb986f0584c1775817e35bb3f7dae02fd860cddf44f1788dc9e10d5bf837886b51947f", - "0x946002dd6cf7a4fd3be4bf451440e3f3fd7e9b09f609fa4e64767180b43146095dfc4b6994287f8cfa6d1390d144be71", - "0xb7f19777d0da06f2ab53d6382751dc5e415249d2c96fce94ef971401935c1d1f7d3b678501e785cf04b237efe2fe736e", - "0x81e5c66dd404fc8ffd3ac5fe5e69ead7b32a5a7bc8605a2c19185efcc65c5073e7817be41e1c49143e191c63f35239c1", - "0xb5f49c523532dfa897034977b9151d753e8a0fc834fa326d0f3d6dacc7c7370a53fc6e80f6d5a90a3fbec9bbb61b4b7c", - "0x8fc8e78c07319877adfaa154a339e408a4ae7572c4fb33c8c5950376060667fbfc8ede31e1b067933d47e3fdbf8564d7", - "0x859cfef032a1a044532e2346975679545fbb3993a34497ce81bdcc312e8d51b021f153090724e4b08214f38276ee1e0d", - "0xae476722f456c79a9c9dfdc1c501efa37f2bff19ab33a049908409c7309d8dd2c2912aa138a57a8d5cb3790ca3c0ba2f", - "0x89acbbeffb37a19d89cfe8ed9aa8b6acf332767a4c54900428dd9ab3bf223b97315aca399c6971fe3b73a10a5e95a325", - "0x90a4a00418fdf4420a4f48e920622aae6feb5bf41fd21a54e44039378e24f0d93ccc858d2d8a302200c199987d7cb5e4", - "0xa3f316b0bd603143eba4c3d2f8efe51173c48afe3c25b4ca69d862c44922c441bd50d9a5040b7b42ba5685b44071c272", - "0xa22f4dc96fedd62b9a9f51812349e04d42d81d0103465c09295a26544e394a34abdc6ded37902d913d7f99752dbfb627", - "0xa49f51baf32d0b228f76796a0fef0fe48a0c43ec5d6af1aa437603d7332505be8b57b1c5e133bc5d413739f5ae2ce9d0", - "0xa9e4fe133057a0cd991898e119b735b31a79811307625277c97491ff5d864c428cfa42ae843601d7bb05c0313472d086", - "0xb987edfe0add1463a797ff3de10492b2b6b7ef0da67c221ab6f0f2b259445768a73fbe495de238c4abbe4d328e817c49", - "0xb7f0e4532a379a4c306bbef98b45af3b82b17175dfe0f884222ed954c12f27d8a5bdd0cdeb1df27ff5832ba42a6dd521", - "0x9471bc5ad5ec554acfd61b2eb97b752cb754536f95ae54ca2cbd1dc2b32eb618881f6d8a8b2802c1a4e58c927067d6cf", - "0xb4c84f09225cf963c7cc9d082efe51afbbbe33469dd90b072807438e6bde71db8352a31bb0efde6cd3529619812ef067", - "0x8f08005a83e716062d6659c7e86c7d3b51e27b22be70371c125046de08f10ea51db12d616fbf43e47a52e546e7acaac7", - "0xa8937e66a23f9d9b353224491f06e98750b04eca14a88021ee72caf41bdce17d128957c78127fba8ef3dc47598d768a7", - "0x80ad991de9bd3ad543cddeaa1d69ca4e749aaefb461644de9fc4bd18c3b4376c6555fc73517a8b1268d0e1e1628d3c1f", - "0xb22f98bca8fe5a048ba0e155c03e7df3e3cee2bfe8d50e110159abdb16b316d6948f983c056991a737b646b4d1807866", - "0xb0bb925c19ca875cf8cdbefa8879b950016cc98b1deb59df8b819018e8c0ad71ea7413733286f9a1db457066965ce452", - "0x95a991e66d00dd99a1f4753f6171046a5ab4f4d5d4fe0adfe9842795348a772d5a4a714dba06b4264b30f22dafa1322f", - "0xad91e781fa68527a37c7d43dd242455752da9c3f6065cd954c46ae23ce2db08f9df9fec3917e80912f391c7a7f2f7ffa", - "0xa202d3becbf28d899fe28f09a58a0a742617c1b9b03209eca1be7f072a8ada1f7eac2cc47e08788d85e1908eb9d3d8ee", - "0xa360ccb27e40d774d5a07b4ebed713e59a0d71b3ee3f02374e7582b59ec4a5ce22cc69c55e89742ba036dd9b4edd8f34", - "0xa10b897a946882b7c9e28abbb512a603ffa18f9274369843eb3491524a321df1f572eea349099ac6e749ea253c901ea0", - "0xb782a672cd344da368732ecd7e0a1476c2af04613d3eb6da0e322f80438af932bd6d49be7a6f69f7c877512731723d89", - "0xaeccee8dfd764e1adcfc4bf669e0fa87a94e7c79324333e958df47888bff5cec358b8b5bbb48db54822b54d11bbb4bc6", - "0xad4953913662a9ee8753a354864339f43916f2c2390d0a3f847c712b42718ee00ee14158d730709971941e8680d54560", - "0x92ccb31d6c9e8940c7e8a4873e7eb9de9fb2fa2bac344fa367062ea451fd49a6920a45218dca3ee968711397d2a01536", - "0x9448d9b2b3d12dde9b702f53373db8b8595f9d1f9de2ebee76de292f966f375316953aadf6bfc0e4e853e1fa12d8f02c", - "0x8919230878a7219da8c80a4b7d00b9169fb503e72d79789dd53863c243b8d0fb0a819d46fa636d805d0b9b1d15d1f2d9", - "0xb6581ab01215aac023f5e6f57419b6aa63c0743c07caf57d4e146b56b02d90ce1423f70489ac3a11e5c968cb924f937c", - "0xa793ec1b1fe56a76920296af06073caadfd6f1d7e30950f8ca13de3de45fe275ca4b361f5249d9405264c3a06ebb5502", - "0x86385b4a4e1bfb5efe7bfef8fd0dfeba7f4400852237cab60febb1dfa409e497a649e81284b5a15fe680b78927256756", - "0x85d10600de96103daa7c90657174b6cb4a1286df5379f1eda9f11c97f9df57043c290eb1ae83658530fe0fd264867b86", - "0xae01b2396d0f598c21659cd854c15edd4904a34d22278aef97c9260a14a8b250b52d972d304ac4b187c24d08795d5355", - "0xb91b3e4b6fc06e88081fe023ef1b773d82c628eb0f73a2731a9aa05b0dc89b7aeef2eea60125d302e696f45c407aeac2", - "0x986d0f478e33af7568eab6bb26a55c13ffd7cae27525b4abe2f3a994bdb11bbc73d59bdb9a2f6b6ba420a26f8f620ba6", - "0x9746f4fdeef35feaff1def0ea5366b64f21ed29749ae6349f9cb75987e7f931952f913f446100f2a6b182561f382e8eb", - "0xa34a116cfde1acbce0d7de037f72a7ca30ab126d8f4815b2b8bcb88e0e6c89015a4daaf4d4ce8eae23eb5d059cf9a5cf", - "0x80c3ea37f6a44f07cc9c9c881990f2a5deb9f9489a382718b18a287aa3c50ee6ebe8fd1b3afb84a3cf87f06556f4ca15", - "0x97cff3bc88cfc72ce5e561f7eeb95d4ffb32697e290190c7902e9570c56b3854753777fc417fd27536fc398c8fefb63b", - "0xb8807232455833e4072df9bffa388ae6e8099758c2a739194719af7d9ed4041974a6cd9605f089de8b43f0e12f181358", - "0x96f79fca72f75dc182c71f2343f0c43b06d98563fd02d2e1fbc031b96601608d8a726c811a74bb51ab8b0a3ce3632dc4", - "0xb5262761680a4235a8c1257de4735cdcadf08d5d12c6e9d4f628464d5c05dfff3884a9ef2af3b7724b5a8c97e6be74eb", - "0xb6ce0eada73433d98f8fae7d55e4ea2b9d9d7a0ae850d328dd06991f27b1f03e470868fb102800ff3efe4ee1698531b9", - "0xa37b7d9fe9d3fdfbc72c59cf6cacc7e7a89d534dea3d73121f7483331aec8ab3fbff58ffabb943b75d6f86df0ba43262", - "0x93fce9be8a27fcaa1283d90d3e87265a6221ee302ec708161a42bd00ffe8e726743d9e187e1bf4307c0e3f25afbb1d44", - "0xa4ea919021346ae7ea69d5e8f46d860b24c35c676b62f4e577c90e0c05c5646fe73721b143b7c38835dd4b443e6c3676", - "0xb79983a5948453f70dfa4c396ce1945204498fe79f40c0667291bd0fdd96ed0b9ea424571f7ade342275c854c9f03d9e", - "0x866f8e395ed730b614b70bf999cad6e87e9086c1f5aea8d69020b562ee285dd0fb93afaca0dd13a0713f74a3f9340f01", - "0xa3fef158782292c6139f9a0d01711aa4ed6f5cac11d4c499e9e65c60469ae3afbde44fb059845973a4b3bbca627b7eb7", - "0xb4a2c0321b68f056e7d8051beede396fa2f0704d8aa34224f79f7b7a62eb485fc81889cb617019622fd5b5fa604516f5", - "0x8f0e3edddbaead9059df94de4139e3a70693c9ea9bc6baaa5695dddfd67263b33926670159846292801941b9a0c6545b", - "0x9804e850f961e091dadd985d43d526ba8054d1bf9c573ed38f24bbd87aeaad4dcba4c321480abc515a16b3b28f27bb2a", - "0x95f330da28af29e362da3776f153f391703a0595323585220712dae2b54362cc6222070edd2f0dd970acfbe2e3147d5c", - "0x82d03b771231179cc31b29fe1e53379d77b5273b5c0a68d973accd7a757c7584dbb37f0507cdfde8807313ec733a6393", - "0x81b3c39a9f632086e97b7c1f0ec7e2eaf9dc3cb0d84dec18a4441dbdc9fe9878fde4bcfa686bca1a9522632a353a5566", - "0xa2db124ab2b493d5f9a1e4ca6b3144593c2fc8bfac129fd79da11dfbb7ef410a234fda9273a50a5ca05d7b37cc2088a2", - "0xaa8550633c9449228702690cc505c0fc4837ea40862058e8f9713622b34d49fdc3a979b9317993c5da53b5bb5b7f4974", - "0xae783bcf7a736fdc815d0205b4c2c2b2fee0a854765228f76c39638ba503e2d37f1e28f6bdf263923f96fead76b4187b", - "0xb5ec86092c1d250251e93bab2f24e321afd2cd24cf49adfcbed9e8bc5142343ae750206c556320551e50fc972142f0da", - "0xb3b5791b590a6e9b3f473d5148624014aa244495249322a5d75cde2c64117ff9d32f4b0698b0e4382e5e7f72933061f8", - "0x876c6a9162c17b16d6b35e6ce1ba32e26aec7dd1368bceab261ab880ad845c91e54b96a52c7d3aafbfbafc0e37139dca", - "0x902ddb5774d20b0707a704486457c29048776a5b88c377b14af6616c8ddf6cd34f49807df9c9d8866d6b39685cfb0f19", - "0x8b87f71f94bc96de927d77a5d7123fa9cdda8c76aff64a5e6112cbc2eca43b07f8376db3e330f8af6a1db9b948908a6a", - "0xa69a5922e572b13d6778218e3657f1e1eea9a9682f6eb1b731d676d03563e14a37ff69bc5e673c74090ecb0969a593f7", - "0xaff3510d78ba72f3cf5e3101847b7c4a956815aa77148689c07864e8a12dd0ef33d5f6c8cb486e0ea55850161f6afed0", - "0xaa9c459cb2a008d94cbee2c6b561d18b0d7c6ffa8a65cbf86ae2c14eec070ee9d5324f5d38f25a945ddcd70307e964c4", - "0x8310e15b050b1e40ece7530b22964bde0fd04f48dfffdec5a0d1fb8af0799a7fdc1d878139fb7cb8d043d3a52c2d1605", - "0xb8f0856ce2c4034ee4041d0383f25fb0eeefc00b82443311a466fc18608313683af2e70e333eb87e7c687e8498e8a1ce", - "0xa8200a75c158fbb78474cab8a543caecd430b5d8b9964fc45d2d494dd938021cd00c7c33413ad53aa437d508f460a42a", - "0xa310091472b5b42b02176b72d5f8120bdb173025de24b420e3ca3fb9a386c39092a1d1bb591c6f68ee97a268a7ff9e95", - "0xb23f1bf8bcec9cb5232b407115eead855fd06f5bf86ba322ad61d45460c84f0f36911aba303de788c9a0878207eac288", - "0xae4c129ad6d08be44690bb84370e48bfd92c5d87940750ee2c98c9a2604456f7f42727ab211989657bb202f6d907df04", - "0x95992057d654f3e189a859346aa9aa009f074cb193b7f5720fa70c2b7c9ce887d886f6cff93fa57c1f7c8eaa187603f6", - "0xad12d560273963da94151dd6be49c665d7624011c67d54ab41447452a866bc997e92a80bdd9ca56a03528e72c456dc76", - "0x8e4eda72e9cfcaa07265bb6a66d88e9ce3390ae1a6b8831045b36ea4156b53d23724824d0f0bca250ce850c5926fa38f", - "0x980fe29c1a267c556532c46130fb54a811944bdfea263f1afcdab248fa85591c22ac26167f4133372b18d9f5cce83707", - "0xa7da9f99ddde16c0eac63d534a6b6776ad89b48a5b9718a2f2331dce903a100a2b7855cf7b257565a326ddc76adc71a5", - "0x8ca854c55e256efd790940cb01125f293e60a390b5bd3e7a60e13ac11a24f350a7eb5ebddfa0a2890905ca0f1980b315", - "0x9440335818859b5e8f180893a8acedceabaaa44e320286506721c639a489b5bfb80b42b28902ee87237b0bd3dd49552a", - "0xb9da545a20a5e7d60fd0c376dcaf4b144f5c5a62c8ffa7b250c53ce44be69c4e0d5e4e11422ef90593ae58ae1df0e5d3", - "0xb75852a850687f477849fc51e0479703cd44428671c71bfdd27fe3e7930b97d2fc55f20348ca4e5bc08db2fc16a4f23c", - "0xb515081d8d099e4b6253c991ca2d3e42633f5832c64aa8f9cde23cb42c097c2c3717c46c5f178f16c58295f97b2b3fe7", - "0x9506c9902419243e73d3197e407985dd5113f16c6be492651bbbf9576621942710aea74522d6fb56d5b52c6ccdaa4307", - "0x952673ae27462a0f6c9545eede245c2f8e2fd6077b72a71f5672f1a5a02c263bc2a66f24f0e30376feb7a8187b715f08", - "0xa8f1e2085ed666a8f86b474d9589dc309d5c83bd53e745f8e09abe0dfbaf53e5384c68580672990344d4aa739438b4d8", - "0xad6e04d4a67a5a5529ceaf7de6e19416be5b4c436610aa576ac04aee3b73317da88f891121f966393a37f52b775a2dd8", - "0xa35a884736f08c7f76923ae7adb17fdac04e6c505178bca9502eaa2ed16d4d93fa953fb6dcf99e9e9962a6eb3eeead00", - "0xb8af72273360bab4b3ca302cf0659717cbfb335fbc9ad4ffdd3340113ece9e63b2bdbd611e5f6b740a4689286f9a452d", - "0xb1a1f4ba2640800c3ed3892e049f6e10f8a571efa3bbe21fe2d6cee8fded171c675a3bb8aa121e2d1d715de84bad2e2b", - "0x8102a6c3598b40da4d6e8eccfdd5dadc8d6262e38b69c5b211b0732f4c6e3045d79fba12770a0b2b66f1e9f4664b1510", - "0x90979587d75bf12819f63832beea7dcbef101f6814bf88db4575bfcd9cf0ea8eceba76d4d6db17630b73b46c1acfe011", - "0x8dd98f14d2beb5b5b79cc30f6825ec11ed76bd5a8864593ffc0c2baffab6872bad182e1c64b93aab8dd5adb465fa5cec", - "0x8083334dadc49c84f936c603a2857f174eda5659ab2b7214572f318aba3ebd7b1c50e7cbea57272b9edf106bd016df3b", - "0xa634d08d2e8641b852e89d7ccab1bab700c32fb143bcbea132f2a5fb2968d74ded2af4107f69818798f0128cc245a8cb", - "0x94fc2dccf746d5b3027f7cf4547edf97097cd11db8d6a304c1c2ca6b3aba28c1af17c08d2bbb66f88c14472e0196a45e", - "0xb257a6fb01424b35e414c1c002e60487abb3b889d74c60cbdbf591e222739c6f97b95f6962842401f5e2009e91b28c55", - "0x81955bdbf25741f3b85d5044898dc76ae51b1b805a51f7c72a389d3b4d94b2e3e0aa1ec271685bbcf192ed80db7367ab", - "0x86eb229b66c542514e42b113b9de7d4f146861a60f2a253264873e7de7da2ac206e156ff11f2de88491b9897174fe2f4", - "0x8b8db00533afbb56b3d7d7a9a4a6af3cebb523699ffcb974603e54f268b3ef739c41cd11850b9651d9640d72217c3402", - "0x8b7cbb72a6c4408d5f1b61001e65de459790444530245d47d4ee8e2d17716695283f21540bd7ac4f5a793a0d00bdf1d4", - "0x875920b9bab4bc1712e6af89ae2e58e9928c22095026070b07e338421b554d9f96e549ac3706c6c8d73f502913a27553", - "0x9455d192db7b039b3e8f0bc186c25ff07dfbe90dab911e3c62e3bd636db8019ed712cbb0ecd5cbb9a36c11034e102aba", - "0x8cb0b28e5d3838d69f6c12274d6b1250f8843938065d0665b347977fa3c1c685caef6930bae9483ed0d0a67005baad76", - "0x94df2e14aae1ae2882ab22a7baf3dc768c4a72b346c2d46bfd93d394458398f91315e85dc68be371f35d5720d6ca8e11", - "0xaacd94b416bfbeb5334032701214dd453ad6be312f303b7bec16a9b7d46ab95432a14c0fbf21a90f26aafb50ec7bb887", - "0xb43d26963665244633cbb9b3c000cacce068c688119e94cc0dac7df0e6ee30188e53befff255977788be888a74c60fc2", - "0xb40d67c9ad0078f61e8744be175e19c659a12065fe4363b0e88482b098b2431612e7c2fa7e519a092965de09ceafe25c", - "0x82cd4a4e547c798f89ce8b59687614aa128877e6d38b761646d03dc78f6cdd28054649fb3441bcd95c59b65a6d0dd158", - "0xa058e9700f05cef6e40c88b154d66a818298e71ae9c2cf23e2af99a0a7dc8f57fbe529d566cb4247432e3c1dee839b08", - "0x95c6f84406466346c0b4a2a7331ac266177fb08c493d9febb284c5ca0b141ccc17aa32407f579666b208fb187c0227dd", - "0x905d1d47a26b154f44d7531c53efbc3743ff70bd7dba50c9b9d26636767b0ae80de3963c56d4604399126f4ad41a0574", - "0x83dfa11c520b4abaefe1b2bc1ce117806e222f373cd4fb724f3c037c228e3379d27a364e68faa73984ba73a0845f1b9a", - "0xa16e54786ba308a9c0241aff8f1bf785dece387d93bd74aa31de0969e3431479e2c0abebff9939a6644d2b0af44f80bb", - "0x81ac565212365176f5be1c0217f4e7c9fdbc9fe90f16161367635d52edcf57af79290531d2e8b585e1223d33febd957d", - "0xa296f4b09915e5d80ff7274dc3ffc9b04f0427e049ea4ef83dca91095275e8a260ef0335c7b6585953b62682da8c8e99", - "0xa9150626208168a21ae871192ca9f11c1f7f6e41e8e02de00732de2324d0d69fe52f8762155c9913ee408a034552e49a", - "0xa42a56008ca340c6e9ff5a68c8778bb899ba5de9e7508c0cac355c157979a7ff6a6bd64f98b182114d3831cfa97ee72b", - "0xa4f05adf22c051812279258eea9eb00956b04ef095f2ca175f775ff53c710fb0020266adabd1dacaee814c4f1d965299", - "0x967492e78ac0bceb8ad726ea0d2292b760043d16d64a6b1bb896e32630a7bf405c2b20e4e00842ae519a21697ff8db2d", - "0xadbf05e9b5931ae3dd24d105b5c523c221a486a4123c727069b9e295a5bc94f3e647a3c2cde1f9f45dbd89df411453c9", - "0xa1759c0ebebd146ee3be0e5461a642938a8e6d0cdd2253ebd61645b227624c10c711e12615cd1e7ea9de9b83d63d1a25", - "0xa4c5945d635b9efc89ad51f5428862aefe3d868d8fb8661911338a6d9e12b6c4e5c15a25e8cb4a7edc889b9fa2b57592", - "0xaff127675ea6ad99cb51c6e17c055c9f8fd6c40130c195a78afdf4f9f7bc9c21eed56230adb316d681fc5cacc97187da", - "0x9071294e8ff05b246ff4526105742c8bf2d97a7e7913f4541080838ecfd2dbc67c7be664a8521af48dbc417c1b466a85", - "0x990880b0dd576b04f4b4ce6f0c5d9ff4606ec9d3f56743ac2f469ac6a78c33d25c3105cf54f675e300ac68073b61b97a", - "0xa8d1a62ce47a4648988633ed1f22b6dea50a31d11fdddf490c81de08599f6b665e785d9d2a56be05844bd27e6d2e0933", - "0x8ea5a6c06f2096ded450c9538da7d9e402a27d070f43646533c69de8ea7993545673a469c0e59c31520e973de71db1b4", - "0x99d3a098782520612b98a5b1862ae91bcb338ab97d1a75536e44b36a22885f1450a50af05c76da3dd5ca3c718e69fdd4", - "0xb987451526e0389b5fe94c8be92f4e792405745b0a76acd6f777053d0809868657ba630aa5945f4bd7ce51319f8996f7", - "0xafffccc5ddd41313888a4f9fee189f3d20d8b2918aa5ad0617009ea6d608e7968063c71bd5e6a1d7557880d9a639328d", - "0x8ac51a02505d5cadfd158dde44932ab33984c420aeceb032ed1ee3a72770d268f9e60ccf80ce8494dfc7434b440daafd", - "0xb6543e50bd9c6f8e0862850c3d89835ddd96231527681d4ab7ae039c4a3a5a0b133a6d40cdb35c8a6c8dbb8d421d3e2b", - "0xa2ba901f4fde2b62274d0c5b4dbbea8f89518571d8f95ec0705b303b91832f7027704790a30f7d9d2cdafde92f241b3e", - "0xa6974b09280591c86998a6854a7d790f2a6fbe544770e062845cfc8f25eb48c58f5dfb1b325b21f049d81998029ad221", - "0x890baeb336bbf6c16a65c839ffaab7b13dd3e55a3e7189f7732dbcb281b2901b6d8ba896650a55caa71f0c2219d9b70e", - "0xb694211e0556aebbe4baf9940326e648c34fda17a34e16aa4cefd0133558c8513ffb3b35e4ee436d9d879e11a44ec193", - "0x97cf9eb2611d467421a3e0bfe5c75382696b15346f781311e4c9192b7bca5eb8eaf24fa16156f91248053d44de8c7c6f", - "0x8247f88605bd576e97128d4115a53ab1f33a730dc646c40d76c172ca2aa8641c511dddad60ee3a6fbe1bb15cac94a36c", - "0xae7ecd1c4a5e9e6b46b67366bc85b540915623a63ab67e401d42ca1d34ae210a0d5487f2eef96d0021ebecfd8d4cd9a8", - "0xaec5123fff0e5d395babe3cb7c3813e2888eb8d9056ad4777097e4309fb9d0928f5c224c00260a006f0e881be6a3bf8f", - "0x8101724fa0ce7c40ea165e81f3c8d52aa55951cc49b4da0696d98c9fafd933e7b6c28119aa33f12928d9f2339a1075d1", - "0xa8360843bab19590e6f20694cdd8c15717a8539616f2c41a3e1690f904b5575adb0849226502a305baefb2ead2024974", - "0xade5cad933e6ed26bba796c9997b057c68821e87645c4079e38e3048ea75d8372758f8819cde85a3ab3ab8e44a7d9742", - "0xab1fe373fb2454174bd2bd1fe15251c6140b4ac07bda1a15e5eabf74b6f9a5b47581ef5f0dbd99fdf4d1c8c56a072af7", - "0xb425e1af8651e2be3891213ff47a4d92df7432b8d8ea045bb6670caf37800a4cd563931a4eb13bff77575cbcae8bc14f", - "0xb274799fe9dd410e7aed7436f0c562010b3da9106dc867405822b1e593f56478645492dbc101a871f1d20acf554c3be6", - "0xb01a62a9d529cc3156bc3e07f70e7a5614b8d005646c0d193c4feb68be0b449d02b8f0000da3404e75dbdfa9ca655186", - "0x878b95e692d938573cdb8c3a5841de0b05e5484a61e36ea14042f4eadb8b54a24038d2f09745455715d7562b38a8e0df", - "0xa89e998e979dba65c5b1a9000ad0fd9bb1b2e1c168970f2744982781306bbe338857e2fac49c8cafda23f7cc7c22f945", - "0x85880fdf30faed6acce9973225e8fe160e680a55fc77a31daacf9df185453ad0c0552eb3fd874698ad8e33c224f7f615", - "0xac28d20d4bbb35ba77366272474f90f0ed1519a0e4d5de737adee2de774ccd5f115949e309e85c5883dbc63daaa6e27b", - "0xa1758ac86db859e323f5231ad82d78acbe11d53d3ebf7e644e581b646eede079d86f90dc23b54e5de55f5b75f7ea7758", - "0xae4c0b84903f89353bf9a462370f0bf22c04628c38bb0caae23d6e2d91699a58bd064e3c2b1cbda7f0a675d129f67930", - "0x95f21a099ffc21a0f9064d9b94ce227b3ff0a8c5a2af06ff5ee6b7f3248a17a8ca2f78cd7929ef1d0784f81eddefcd48", - "0x8d06fbc1b468f12b381fd1e6108c63c0d898ddf123ea4e2e1247af115043c4f90b52796076277b722dd2b92708f80c21", - "0xa300f39039d8b2452e63b272c6d1f6d14a808b2cd646e04476545da65b71a6e29060f879409f6941c84bde9abe3c7d01", - "0xadecce1ccc5373072ba73930e47b17298e16d19dbb512eed88ad58d3046bb7eec9d90b3e6c9ba6b51e9119cf27ce53f2", - "0x941a7e03a64a2885d9e7bee604ddc186f93ff792877a04209bbee2361ab4cb2aed3291f51a39be10900a1a11479282ca", - "0xacbcb1ab19f3add61d4544c5e3c1f6022e5cc20672b5dc28586e0e653819bdae18cda221bb9017dfaa89c217f9394f63", - "0xb8d92cea7766d3562772b0f287df4d2e486657b7ab743ed31ec48fdc15b271c2b41d6264697282b359f5cb4d91200195", - "0x957360ecb5d242f06d13c1b6d4fcd19897fb50a9a27eb1bd4882b400dc3851d0871c0c52716c05c6c6cf3dee3d389002", - "0xabd2a23abbc903fbb00454c44b9fb4a03554a5ef04101b2f66b259101125058346d44d315b903c6d8d678132f30b1393", - "0xae9572beff080dd51d3c132006107a99c4271210af8fbe78beb98d24a40b782537c89308c5a2bddfdfe770f01f482550", - "0x82c7e5a5e723938eb698602dc84d629042c1999938ebd0a55411be894bccfb2c0206ac1644e11fddd7f7ab5ee3de9fdc", - "0xaba22f23c458757dc71adb1ce7ef158f50fdd1917b24d09cfc2fbbcbe430b2d60785ab141cf35ad9f3d0a2b3e2c7f058", - "0x8eff41278e6c512c7552469b74abedf29efa4632f800f1a1058a0b7a9d23da55d21d07fdbb954acb99de3a3e56f12df6", - "0x8abd591e99b7e0169459861a3c2429d1087b4f5c7b3814e8cee12ecc527a14a3bdda3472409f62f49a1eb4b473f92dbf", - "0x82dcbff4c49a9970893afc965f1264fcab9bae65e8fb057f883d4417b09e547924123493501c3d6c23a5160277d22a8e", - "0xb5a919fcb448a8203ad3a271c618e7824a33fd523ed638c9af7cfe2c23e3290e904d2cd217a7f1f7170a5545f7e49264", - "0x96d6834b592ddb9cf999ad314c89c09bedc34545eeda4698507676674b62c06cc9b5256483f4f114cd1ed9aaec2fba5e", - "0xa4e878cf4976eb5ff3b0c8f19b87de0ef10cd8ec06fe3cd0677bd6be80ba052ff721a4b836841bdffb1df79639d0446c", - "0x8e15787a8075fd45ab92503120de67beb6d37c1cc0843c4d3774e1f939ac5ed0a85dad7090d92fa217bd9d831319021b", - "0x8506c7fea5a90cd12b68fdbbae4486a630372e6fd97a96eea83a31863905def661c5cdead3cf8819515afe258dbcd4d9", - "0x952ef3bc16a93714d611072a6d54008b5e1bf138fd92e57f40a6efb1290d6a1ffcc0e55ff7e1a6f5d106702bd06807cd", - "0xa5f7761fa0be1e160470e3e9e6ab4715992587c0a81b028c9e2cf89d6f9531c2f83c31d42b71fca4cc873d85eba74f33", - "0xb4811f0df11ff05bf4c2c108a48eece601109304f48cde358400d4d2fa5c1fdaaf3627f31cb3a1bdd3c98862b221720d", - "0x9207ad280b0832f8687def16ad8686f6ce19beb1ca20c01b40dd49b1313f486f2cb837cfbbf243be64d1c2ab9d497c3f", - "0xb18a8c1e6363fadd881efb638013e980e4edb68c1313f3744e781ce38730e7777f0cba70ea97440318d93a77059d4a2b", - "0x901faf777867995aac092f23c99c61f97eeadf4ac6bcb7791c67fa3c495947baef494b2aace77077c966c5d427abbf92", - "0xa123281aca1c4f98f56cff7ff2ae36862449f234d1723b2f54ebfccd2740d83bd768f9f4008b4771e56c302d7bfc764f", - "0x8cffe1266468cad1075652d0765ff9b89f19b3d385e29b40f5395b5a3ad4b157eed62e94279ac3ec5090a6bad089d8b3", - "0x8d39870719bc4ebbcecba2c54322111b949a6ed22bda28a6cea4b150272e98c9ded48cc58fc5c6e3a6002327856726ec", - "0xb3d482c00301f6e7667aaeaf261150b322164a5a19a2fa3d7e7c7bf77dc12fa74f5b5685228ab8bf0daf4b87d9092447", - "0x801acb8e2204afb513187936d30eb7cab61f3fbb87bfd4cd69d7f3b3ddba8e232b93050616c5a2e6daa0e64cef6d106f", - "0xac11e18adda82d2a65e1363eb21bda612414b20202ecc0e2e80cc95679a9efa73029034b38fd8745ce7f85172a9ab639", - "0xb631d6990d0f975a3394f800f3df1174a850b60111567784f1c4d5bba709739d8af934acfa4efc784b8fc151e3e4e423", - "0xaeda6279b136b043415479a18b3bbff83f50e4207b113e30a9ccfd16bd1756065fc3b97553a97998a66013c6ac28f3d8", - "0x8840b305dc893f1cb7ad9dd288f40774ec29ea7545477573a6f1b23eaee11b20304939797fd4bcab8703567929ce93ad", - "0x963cc84505a28571b705166592bffa4ea5c4eeafe86be90b3e4ae7b699aaaca968a151fe3d1e89709fe0a3f0edf5d61a", - "0x8e1ec0d0e51f89afea325051fc2fa69ab77d6c7363cc762e470a9dfa28d4827de5e50f0b474c407b8c8713bad85c4acd", - "0x909f313420403cb36c11d392cf929a4c20514aa2cb2d9c80565f79029121efd5410ef74e51faba4e9ba6d06fcf9f1bd1", - "0xb2992b45da467e9c327ac4d8815467cf4d47518fc2094870d4355eb941534d102354fbda5ab7f53fbf9defa7e767ca13", - "0x9563b50feb99df160946da0b435ac26f9c8b26f4470c88a62755cdf57faebeefffff41c7bdc6711511b1f33e025f6870", - "0xa2a364d9536cd5537a4add24867deec61e38d3f5eb3490b649f61c72b20205a17545e61403d1fb0d3a6f382c75da1eb3", - "0x89b6d7c56251304b57b1d1a4255cb588bd7a851e33bf9070ee0b1d841d5c35870f359bc0fdc0c69afe4e0a99f3b16ec2", - "0xa8ae1ee0484fe46b13a627741ddcdae6a71c863b78aafe3852b49775a0e44732eaf54d81715b1dca06bb0f51a604b7e2", - "0xb814ecbfbc9645c46fc3d81c7917268e86314162d270aed649171db8c8603f2bd01370f181f77dbcbcc5caf263bedc6c", - "0x8e5d7cc8aad908f3b4e96af00e108754915fecebdb54f0d78d03153d63267b67682e72cd9b427839dca94902d2f3cda7", - "0x8fc5ff6d61dd5b1de8c94053aef5861009cb6781efcca5050172ef9502e727d648838f43df567f2e777b7d3a47c235dd", - "0x8788eea19d09e42b0e3e35eb9bcd14f643751c80c6e69a6ff3a9f1711e8031bbe82ccd854a74a5cfcf25dda663a49a62", - "0x95d441d8cd715596343182ddcecb8566d47eaa2d957d8aea1313bbed9d643a52b954443deb90a8037a7fa51c88eec942", - "0xa15efd36ef72783ccdc6336ef22a68cc46b1ecec0f660cfe8a055952a974342bf30f08cb808214bce69e516ff94c14c5", - "0xacc084d36907a16de09a5299f183391e597beaf9fa27d905f74dc227701a7678a0f5a5d1be83657de45c9270a287ec69", - "0xb3fd385764356346061570beb760ccf3808619618fd7521eb0feadc55b8153ef4986ff0cbfcbd4153ad4ea566989d72a", - "0x91ec6b26725532e8edfda109daa7ce578235f33bd858238dfa2eb6f3cd214115b44cce262a0f2f46727a96b7311d32e1", - "0x96b867ccddb73afe1049bda018c96cfe4083fff5bb499e6a4d9fd1a88a325144f9a08cb0aee310e1bb4f6a5793777e80", - "0xad10c18465910152676f1bc6a40986119607b5c272488e6422cfda2eb31da741af13a50f5de84037348014a869c8e686", - "0x86ade2dbc4cceb52b84afe1c874d1e3644691284c189761febc4804b520adf60b25817e46f3f3c08d2ab227d00b93076", - "0x998b949af82065c709fc8f63113a9fecdd1367fc84fc3b88857d92321ba795e630ce1396a39c2e056b5acd206ee011d8", - "0x8dec440bbd17b47dfd04e566c2d1b46f9133023b982fdc5eaeae51404bc83a593f8d10c30b24e13aec709549137cae47", - "0x89436ff47431b99f037cddaee08bb199be836587a7db6ed740317888638e5f4bebbb86b80549edff89678fc137dfb40a", - "0xa8e9960746769b3f76246c82cd722d46d66625e124d99a1f71a790c01cec842bcf6c23c19cc7011ec972cedf54dc8a4c", - "0x980979dafedfd75ff235b37e09e17361cfdda14a5ac3db0b90ed491abfd551916016b2254538da7f4b86ece3038b1b1c", - "0x8ec340ca7654720bb9d2f209985439ebbc3f9990ef27e7d7ae366e0c45b4ed973316943122119604ea9a87fc41ebd29f", - "0xab24440a40ab238d8cd811edb3ef99948ae0f33bf3d257b22c445204016cce22b6f06a1ca979fa72a36c4ddedc2b3195", - "0xa1bcd2473ac7cfebfa61c10e56cae5422c6b261a4a1be60b763fcbcdf2eae4ccf80695f09b062b6cf5654dfab0ee62a5", - "0x9027a613ce7bd827110a3a0e63e83f652e9bc7f4ce8da26c38b28ee893fd0c38bdb20f63a33470a73cb77f776244ab4a", - "0x86911cc8aeb628197a22bf44d95a0b49afb8332c38857fba8e390c27c527b8b45335e22b0f2e0a3395c16ced3c1ed2e8", - "0x8f0529a330a3e9967dce09357d774715fd305bd9e47b53b8b71a2a1303d390942a835aa02fb865a14cfed4f6f2f33fe6", - "0xb71ec81a64c834e7e6ef75b7f321a308943b4bad55b92f4dbaf46658613cebf7e4b5b1bc7f1cdc5d50d1a2a0690e2766", - "0x98d66aaed9fb92f4c7bb1b488ccbca5e570aa14433028867562a561d84f673ac72e971cbe2cb3cbbb0a702797dc45a7e", - "0x8380aa94d96c6b3efd178de39f92f12ca4edd49fe3fe098b2b7781e7f3e5f81ee71d196fb8e260d1d52f2e300e72e7bc", - "0x8c36296ff907893ac58cecadd957b29f5508ae75c6cc61b15ae147b789e38c0eace67963ae62eff556221b3d64a257a2", - "0x97e17676cbc0f62a93555375e82422ee49bc7cf56ad6c3d69bb1989d1dc043f9f7113d0ed84616dde310441b795db843", - "0xa952229615534c7e9a715409d68e33086cdaddf0aec51f4369c4017a94ec3d7113a045054d695fb9d7fd335527259012", - "0x817b90958246f15cbd73a9679e10192ca7f5325b41af6388b666d8436706dea94eafffbc3b8d53057f67ad726dbcd528", - "0x95776e378c8abd9223c55cd6a2608e42e851c827b6f71ad3d4dc255c400f9eccf4847c43155f2d56af0c881abef4acfa", - "0x8476c254f4b82858ecbe128ed7d4d69a6563fd9c5f7d4defc3c67e0bfa44e41cfd78b8e2a63b0773ce3076e01d3f6a7d", - "0xa64b0b189063d31bcae1d13931e92d5ab0cfc23bf40566ac34b5b8b711d0e7d941102e6beb140547512e1fe2d9342e6c", - "0x9678460acff1f6eae81a14d5c8049cdcd50779a8719b5c5861762a035b07f7fa1b1ada8b6173f9decf051fd5a55bebd8", - "0x88398758ce86ed0388b13413a73062adb8a026d6b044cd1e7f52142758bed397befee46f161f8a99900ae6a2b8f6b89f", - "0xa7dfaf40637c81d8b28358b6135bd7ad9cc59177bd9bc8e42ba54d687d974cdf56be0457638c46b6a18ceaa02d3c53f3", - "0xb0e885e5d48aa8d7af498c5e00b7862ed4be1dad52002f2135d98e8f2e89ca0b36cf95b3218aad71d5b4ada403b7045b", - "0x803b0e69a89e8de138123f8da76f6c3e433402d80d2baba98cde3b775a8eda4168530a49345962c4b25a57257ba9f0a7", - "0x8ce6ef80dadb4b1790167fbc48be10ef24248536834ff2b74887b1716c75cb5480c30aa8439c20474477f1ac69734e61", - "0x824764396e2b1e8dcc9f83827a665ef493faec007276f118b5a1f32526340b117c0df12bea630030a131bf389ec78fc3", - "0x874edb379ce4cc8247d071ef86e6efbd8890ba6fcb41ea7427942c140347ebf93e8cf369d1c91bd5f486eb69b45bce70", - "0xadadcb6eb4cafa1e2a9aef3efb5b09ffa2a5cf3ce21f886d96a136336be680dabc0a7c96ec327d172072f66d6dcdbb39", - "0xb993591b280e1f3527f083d238a8f7cf516d3cf00c3690d384881911c1495192a419b8e37872a565ce8007eb04ebe1b6", - "0xb125faaeca3f0b9af7cb51bb30a7c446adbb9a993b11600c8b533bff43c1278de5cdda8cb46a4df46f2e42adb995bce8", - "0xa7efe1b57326b57c2c01720d4fdf348d6a84d35f229d32a8f2eb5d2be4e561ef8aea4d4d0bcfcbf17da10a8e49835031", - "0xa6bd4f5a87574b90a37b44f778d5c7117d78eb38f3d7874bad15ae141b60eed4ab0a7281ed747297f92e0b3fe5f9cafa", - "0x94b5e3067ca1db3c4e82daf6189d7d00246b0360cb863940840358daa36cb33857fde4c01acd0457a90e15accee7d764", - "0xa5ff3ab12197b8a07dd80222a709271ab3b07beba453aacbaf225cfb055d729e5a17a20f0ff9e08febf307823cba4383", - "0xa76dd8aa2b6a957ed82ecec49b72085394af22843272f19360a5b5f700910c6ec65bf2a832e1d70aa53fd6baa43c24f6", - "0x8dfcbe4143ae63c6515f151e78e6690078a349a69bb1602b79f59dc51dea7d00d808cf3e9a88b3f390f29aaae6e69834", - "0x8c6134b95946a1dd54126952e805aeb682bc634c17fe642d5d3d8deffffd7693c90c4cd7d112890abfd874aa26736a93", - "0x933531875561d327c181a2e89aaaac0b53e7f506d59ef2dfc930c166446565bd3df03bab8f7d0da7c65624949cfbae2f", - "0xac6937c5e2193395e5bb69fd45aa6a9ae76b336ea7b6fd3e6aeac124365edcba7e918ec2c663fb5142df2f3ad03411a6", - "0xa8f0f968f2a61d61d2cf01625e6ac423b447d3e48378ea70d6ff38bc98c42e222fe3cbcb04662b19973a160dc9f868a2", - "0x94100a36f63d5c3a6cfb903c25a228389921684cc84f123390f38f90859f37ec9714942ffe6766f9b615101a3c009e43", - "0xb5321b07f5b1eb2c1c20b0c8ab407f72f9705b55a761ec5176c5bcc6e585a01cae78546c54117ca3428b2b63793f2e65", - "0x9922f61ed6763d1c4d12485c142b8ff02119066b5011c43e78da1ee51f10a1cf514329874061e67b55597ca01a7b92ab", - "0xa212eb2d72af0c45c9ef547d7c34ac5c4f81a4f5ec41459c4abd83d06ec6b09fdab52f801a2209b79612ae797fa4507b", - "0x8577d2d8f17c7d90a90bab477a432602d6918ca3d2af082fbb9e83644b93e21ca0bced7f90f6e9279eaa590f4e41dc4d", - "0x9002d424e3bebd908b95c5e6a47180b7e1d83e507bfb81d6ad7903aa106df4808c55f10aa34d1dccad3fab4d3f7a453e", - "0xb9050299bf9163f6ebeff57c748cb86f587aea153c2e06e334b709a7c48c4cbfba427babf6188786a0387b0c4f50b5ce", - "0x852ae1195cc657c4d4690d4b9a5dea8e0baaa59c8de363ba5fccd9e39ec50c6aa8d2087c8b7589b19248c84608f5d0a8", - "0xa02ff5781417ca0c476d82cf55b35615f9995dc7a482124bc486e29b0b06a215fbe3e79228c04547c143d32cd3bac645", - "0x8d7bc95e34bc914642e514a401448b23cf58bce767bab1277697327eb47c4a99214a78b04c92d2e3f99a654308b96e34", - "0xadb28445d3b1cc7d4e4dd1f8b992a668f6b6f777810465fdab231fd42f06b5bada290ba9ae0472110366fad033da514e", - "0xa0c72b15a609f56ff71da17b5b744d8701af24b99fbc24a88588213864f511bfa592775e9ab4d11959f4c8538dc015b8", - "0x933205a40379d5f5a7fb62cda17873fbbd99a0aaa8773ddf4cd2707966d8f3b93a107ebfe98b2bb222fe0de33ef68d03", - "0x90690c1a4635e2e165773249477fc07bf48b1fd4d27c1b41a8f83a898c8d3763efb289867f8d6b0d354d7f4c3f5c7320", - "0x99858d8c4f1be5a462e17a349b60991cb8ce9990895d6e42ae762ce144abc65b5a6f6e14df6592a4a07a680e0f103b2a", - "0xb354a7da06bd93fb5269e44925295b7c5049467b5cacce68cbb3cab60135b15e2010037a889cb927e6065053af9ccb77", - "0xaf01fc4ac396d9b15a4bbd8cc4fe7b30c32a9f544d39e88cdcb9b20c1c3056f56d92583a9781ddb039ec2eeda31fb653", - "0xa8d889fb7155f7900982cf2a65eb2121eb1cc8525bbee48fae70e5f6275c5b554e923d29ebbd9772b62109ff48fb7c99", - "0xb80edae6e26364c28749fd17c7c10eb96787053c7744a5cc6c44082ae96c5d3a4008c899a284f2747d25b72ecb9cb3d0", - "0xb495b37503d77e7aafc226fca575e974b7bb6af2b7488372b32055feecc465a9f2909729e6114b52a69d8726e08739cb", - "0xa877f18b1144ff22e10a4879539968a01321cecde898894cbe0c34348b5e6faa85e1597105c49653faed631b1e913ec7", - "0x8c235c558a065f64e06b4bb4f876fe549aab73302a25d8c06a60df9fad05843915ac91b507febca6fe78c69b51b597de", - "0xb4c31398b854ccc3847065e79329a3fdae960f200c1cce020234778d9c519a244ff1988c1fbc12eb3da2540a5fa33327", - "0xb7bd134b3460cb05abf5aed0bc3f9d0ccbfac4647324bedbdf5011da18d8b85dc4178dd128f6ddbe9d56ea58f59d0b5d", - "0x92594c786c810cf3b5d24c433c8a947f9277fe6c669e51ceb359f0ae8a2c4e513a6dad1ae71b7ded3cdca823a51e849b", - "0xb178535e043f1efcce10fbec720c05458e459fdda727753e0e412ef0114db957dc9793e58ec2c031008e8fb994145d59", - "0xb31da7189abf3e66042053f0261c248d4da142861bfd76a9aced19559be5284523d3e309ef69843772b05e03741a13fe", - "0xb190a8c1a477e4187fecff2a93033e77e02de20aae93dda1e154598814b78fdf8b9ff574c5f63047d97e736e69621462", - "0x98234bd1d079c52f404bf5e7f68b349a948ec1f770c999c3c98888a55d370982bfa976e7e32848a1ebb4c7694acc1740", - "0x99b9eeb33a6fb104bba5571a3822ebe612bf4b07d720d46bde17f0db0b8e8b52165f9b569be9356a302614e43df3e087", - "0xa1e3915b0dd90625b424303860d78e243dda73eecd01cba7c33100b30471d0a1ec378c29da0f5a297008b115be366160", - "0x975118bf6ca718671335a427b6f2946ee7ece2d09ccfb1df08aa1e98ff8863b6c8b174c608b6b2f4b1176fb3cbc1e30d", - "0x903cb1e469694b99360a5850e2ca4201cad23cfccce15de9441e9065eb3e6e87f51cba774ab9015852abd51194c25e57", - "0x821f7ff4d0b133e3be4e91d7ff241fa46c649ff61fc25a9fdcf23d685fe74cf6fade5729763f206876764a3d1a8e9b24", - "0xa1ee8db859439c17e737b4b789023d8b3ce15f3294ec39684f019e1ea94b234ec8a5402bc6e910c2ed1cd22ff3add4de", - "0xaf27383148757bdf6631c0ea8a5c382f65fc6ab09f3d342a808ca7e18401e437cd1df3b4383190fdf437a3b35cbcc069", - "0x8310551d240750cef8232cd935869bad092b81add09e2e638e41aa8a50042ce25742120b25fb54ebece0b9f9bdb3f255", - "0x8b1954e0761a6397e8da47dc07133434ebe2f32c1c80cd1f7f941f9965acdf3d0c0b1eb57f7ff45a55697d8b804e1d03", - "0x8c11612381c6be93df17851d9f516395a14a13c7816c8556d9510472b858184bf3cc5b9d14ded8d72e8fb4729f0b23ba", - "0xb413ac49121c7e8731e536b59d5f40d73a200c4e8300f8b9f2b01df95a3dc5fe85404027fc79b0e52946e8679b3a8e43", - "0x8451e5c1c83df9b590ec53d1f1717d44229ed0f0b6e7011d01ea355d8b351f572866b88032030af372bd9104124df55a", - "0x8d0a5c848ec43299bc3ea106847ed418876bc3cd09b2280c2a9b798c469661505ed147a8f4ffba33af0e1167fdb17508", - "0xa6aa97a1f10709582471000b54ec046925a6ad72f2b37c4435621c9f48026d3e332b8e205b6518f11b90b476405960a9", - "0x97696635b5a2a6c51de823eea97d529f6c94846abb0bd4c322b108825589eba9af97762484efaac04ee4847fb2fb7439", - "0x92fd142181fe6ca8d648736866fed8bc3a158af2a305084442155ba8ce85fa1dfb31af7610c1c52a1d38686ac1306b70", - "0xae3da824ecc863b5229a1a683145be51dd5b81c042b3910a5409ca5009ba63330e4983020271aa4a1304b63b2a2df69e", - "0xaecc0fe31432c577c3592110c2f4058c7681c1d15cd8ed8ffb137da4de53188a5f34ca3593160936119bdcf3502bff7c", - "0x821eac5545e7f345a865a65e54807e66de3b114a31ddeb716f38fe76fdd9d117bee0d870dd37f34b91d4c070a60d81f4", - "0x91a02abb7923f37d9d8aa9e22ded576c558188c5f6093c891c04d98ab9886893f82b25b962e9b87f3bf93d2c37a53cb9", - "0x99a96f5d6c612ee68e840d5f052bf6a90fecfd61891d8a973e64be2e2bdd5de555b1d8bffbd2d3c66621f6e8a5072106", - "0xb1d5ec8f833d8fbb0e320ff03141868d4a8fff09d6a401c22dbefadbb64323e6d65932879291090daf25658844c91f2e", - "0xa06afd66ebc68af507c7cf5ab514947ca7d6ccc89fb2e2e8cb6e5ae0f471473e5fba40bb84d05f2c0f97c87f9a50cb73", - "0x83de3ca182bcf1eac0cc1db6ad9b1c2a1ecd5e394e78add7faa36e039a1b13cb0d1d2639892489df080fbf43e5cef8d5", - "0xadf77fc7b342ff67a2eddaa4be2f04b4e6ceaca8ea89a9fc45cc892fcce8ac3cf8646cfa5aab10ac9d9706ce4c48a636", - "0x8509a430ef8dc9a0abc30ef8f8ccdb349d66d40390fb39f0d3281f3f44acb034625361270162822ef0743d458a82b836", - "0x8350fc09e8617826f708e8154a3280d8753e7dbbcf87e852f9b789fdbeb10bf3fed84fb76edd7b8239a920c449e2f4b7", - "0xa2e7a29da8391a5b2d762bf86cb6ae855cdfad49821175f83f4713dd0c342a0784beba98d4948356985a44d9b8b9d0f7", - "0xa99c50a1a88b8efe540e0f246439db73263648546d199ef0d5bc941524a07d7e02b3ef6e5b08dc9e316b0b4c6966823e", - "0xb34ba55136c341f4ca2927080a07476915b86aa820066230903f1f503afebd79f2acf52a0bc8589b148d3a9a4a99f536", - "0xaf637be5a3e71c172af1f2644d3674e022bc49c393df565ea5b05ce6401a27718c38a9232049dd18cbd5bf4f2ce65b32", - "0xa2972ba7bfa7f40c2e175bb35048a8ef9bc296d5e5a6c4ca7ab3728f4264d64f2d81d29dce518dc86849485ff9703d7d", - "0x8c9db203e8726299adeb331d6f4c235dc3873a8022138d35796fb7098887e95e06dcfad5d766ceaa2c4fb0f8857f37fa", - "0xa82bfbaa9a6379442109e89aad0c0cfc6a27d4a5db5480741a509d549c229cb847b46a974dde9f1398c6b3010530f612", - "0xb2d8ef6e091a76dfc04ab85a24dbe8b5a611c85f0ed529a752c2e4c04500de5b305c539d807184e05f120be2c4a05fc3", - "0x8c6ffc66a87d38cea485d16ee6c63ce79c56b64ae413b7593f99cc9c6d3cd78ef3fa2ab8a7943d2f0e182176642adadb", - "0xacbc92de68b2b04e3dc128109511a1cbe07518042f365d5634e8b651cb1ac435ea48eeeb2b921876239183096ef6edee", - "0x979c4e1165e0ecfa17ed59fb33f70797e000ddbb64acf5fc478cccde940451df051e51b6449c5b11a36afa7868af82e3", - "0xa5a017c5a94952aeae473976027124231abe50460cec4db3ebeb8b1290525776be7c15d108b749c2a1e4b018de827915", - "0x8b6922ab1db925eed24b2586e95f5c709b79d2408a8fa2a71057045ead3ebdd0cc72bee23d9064cd824166eda1e29318", - "0x89a991087a0b5805fcc5c6c5f6ac27e100da0d3713645aa9c90114e68ca9f185f21155eb7645a2c6c0616a47291fe129", - "0xae6ef954c942cbfd37f8f2dc58a649e2584d6777e7eb09ae6992ccde283ac4f4ec39e3a5cda7f7c60f467fb308d37f08", - "0x9335ca5ccac59b39eb2bcef09c54b778ebb690415ba13fe5c8e4b6091d9343a01cc9baa6228cefd8dba98f0710f714da", - "0xa0211c9328be2b46f90ff13614eeffb4c1285e55580db3874610653219926af1d83bda5b089fd37a7c7440a0f1d94984", - "0xa82e097dfa782c40808fac5d8ed1c4fccf6b95ef92e22276fd8d285303fcf18c46d8f752595a658ee5294088b9dc6fc0", - "0xad108fcd0ead65f7f839a1337d520f5bd0cb665ee7100fc3f0563ff1d2959eb01617de8eb7a67c9b98b7b4892082acdb", - "0xb89e6aeabcb3ee3cbf12e3c836bab29e59d49676bcf17a922f861d63141076833f4149fe9e9c3beed24edfacdf1e248b", - "0x8477501bd91211e3b1f66c3bfd399ef785271511bc9366366ce95ec5ea95d9288ab0928a6b7887aba62de4da754d3eaf", - "0xaeec40c04b279096946b743ad8171bf27988405e1321c04894d9a34e2cbd71f444ff0d14da6cda47e93aa6fe9c780d50", - "0xa703bd2d8a5c3521a8aad92afef5162aed64e9e6343d5b0096ca87b5b5d05e28ed31ba235ab1a626943533a57872dd01", - "0xb52d9dfc12c359efb548d7e2b36ddedaefdec0ef78eda8ac49a990b3eb0ed7668690a98d4d3c7bec4748a43df73f0271", - "0xaf887c008bad761ee267b9c1600054c9f17f9fc71acfe0d26d3b9b55536bca5c8aebe403a80aa66a1e3748bb150b20ef", - "0xad2f7a545ef2c2a2978f25cf2402813665c156bab52c9e436d962e54913c85d815f0ba1ce57f61e944f84d9835ce05ea", - "0x91a0a9b3cfd05baf9b7df8e1fb42577ec873f8a46bb69a777a6ac9f702735d6e75e66c9257822c781c47b9f78993a46b", - "0x939fdc380fb527f9a1ddecf9c9460f37e406cd06c59ce988e361404acbfcb6379f2664a078531705dbc0c375d724137b", - "0x8bbbe5d5a0d102b8e0c8a62e7542e13c8c8a6acb88859e78d8e1d01ec0ddff71d429fcb98099e09ff0aa673c8b399dc4", - "0xb67a70e4ef138f48258f7d905af753c962c3cc21b7b8ae8b311a2356c4753f8cd42fdee09ac5ed6de31296ead88c351a", - "0x8d21539e7dca02a271ce7d16431773bbe30e6a03f5aff517132d34cdd215ad0da2f06aa4a2a595be489234b233e0852e", - "0x892ae11513f572cc5dc8b734b716bb38c0876e50e5e942631bb380b754e9114c34b0606740301e29b27d88439fb32071", - "0xa8780dc9faa485f51b6f93a986bc4e15b166986b13d22ec2fefc6b25403b8b81c15cc9ac0025acc09d84932b15afa09b", - "0xb01af013360cd9f2bb9789a2b909c5e010fe6ff179f15997dee1a2ba9ef1ccec19545afdecfcb476f92fcdd482bb2b5a", - "0xb5202e5d5053d3af21375d50ad1ccd92538ef9916d17c60eb55c164767c3c74681886297b6f52e258c98d0304d195d3d", - "0x8f6adbcfbb0734bf3a4609d75cf2e10f74ed855a8b07cf04ac89a73d23b2e3e5cf270a1f2547b3d73e9da033a3c514b0", - "0x8abe529cd31e4cb2bd75fa2a5e45bd92cbe3b281e90ffc7dea01ba0df17c9a3df97a3fde373cce5d25b5814cf1128fed", - "0xb8bbf51187bb3bb124da3870e2dfecb326f25a9383e5cc3323813487457010b9055811669c3da87105050825dc98a743", - "0xa5c83875fe61ebbdd3fd478540d7e5a1ad0f8c790bad0b7dd3a44831e2c376c4fffbc6b988667afa1b67bfaa2dbbb256", - "0xa0606b3062e4beba9031ba2a8e6e90aa5a43ba7321003976e721fd4eedb56486f2c5b10ba7a7f5383272f4022092eacb", - "0xb485cc5e001de6bd1bbc9cd8d777098e426d88275aaa659232f317352e1ddff3478262d06b46a573c45409bc461883e1", - "0x916449580b64a9d8510e2f8c7aee0b467a0e93b11edc3d50725bcbc3ca53c2b8bb231fdc0fc0ed5270bf2df3f64750d9", - "0xb2e687caa9f148c2b20a27a91bada01a88bff47faaf6ed87815db26bb6cdd93672199661654763a6b8b4b2012f59dcca", - "0xb6933f7f9dabc8fb69197571366ac61295160d25881adf2fcc8aaabc9c5ed7cf229a493fd9e2f1c2f84facd1f55fee84", - "0xb01eb8b2cf88c75c3e31807cfc7a4d5cafded88b1974ba0a9d5aaeda95a788030898239e12843eda02873b0cabe30e2b", - "0xa3ca290fa6ce064514a3431b44ecdb390ef500629270202041f23bc2f74038147f338189c497949fb3126bae3a6e3524", - "0x93b0f8d02bd08af74918b1c22131865aa82aba9429dc47f6b51354ba72e33a8b56684b335a44661aa87774931eb85974", - "0x81eebeb9bd92546c37c98e0a5deba012c159f69331a89615cf40c5b95c73dcdbf3ceb46b8620d94ff44fcdad88020c1e", - "0xb350e497932382c453a27bb33d2a9e0dbadf4cd8a858b6b72d1f3a0921afc571371e22b051b97da3bb08694c4ca3a4e8", - "0x8c7052f63ba16f14fa85d885aa857d52f04b3a899a4108493799c90c0410de7549be85bec1f539f1608924668df48e5a", - "0xb397574d1fb43de0faaea67d1d9348d67b712b1adce300d6dc497bca94e0994eef8707c285c5c9ac0a66022655a8420b", - "0xa934661d2168ae1bd95b1143c2e5c19261708aeb795abad8ec87f23dc1b352fa436de997ebb4903d97cb875adb40dc2b", - "0xacf535fa1b77255210e1b8975e0e195624c9e9ffd150286ccd531a276cadc12047a4ded6362977891e145a2bd765e6b9", - "0x8cc32356015d7fd29738dcc13c8008cdbe487755dd87d449ab569c85d0556a1ec520dbce6c3698fc413d470c93cb0c92", - "0x8787c7b3b890e0d3734ac1c196588cacf0a3bde65e2cf42e961e23dbf784eef14c07337d3300ed430f518b03037bd558", - "0x99da90994030cbc2fb8a057350765acac66129a62514bbd3f4ec29d5aab8acdd5f4d69ca83efe7f62b96b36116181e79", - "0xa306424f71e8b58dfa0a0564b2b249f0d02c795c30eee5b0ad276db60423210bba33380fb45dbe2c7fedd6ee83794819", - "0xb207a35d31ce966282348792d53d354bbd29ac1f496f16f3d916e9adbf321dc8a14112ca44965eb67370a42f64ca1850", - "0x89e62e208147a7f57e72290eefccb9d681baa505d615ca33325dfa7b91919214646ca9bdc7749d89c9a2ce78c1b55936", - "0xac2d0ec2b26552335c6c30f56925baa7f68886a0917e41cfbc6358a7c82c1cb1b536246f59638fb2de84b9e66d2e57eb", - "0x8f1487659ecc3b383cebc23a1dc417e5e1808e5c8ae77c7c9d86d5ab705e8041ce5a906a700d1e06921f899f9f0ee615", - "0xa58f1d414f662f4b78b86cae7b0e85dfddae33c15431af47352b6e7168a96c1d307d8b93f9888871fc859f3ed61c6efc", - "0x94f3626a225ac8e38a592b9c894e3b9168f9cf7116d5e43e570368ee6ee4ab76e725a59029006a9b12d5c19ddce8f811", - "0xb5986e2601ad9b3260e691c34f78e1a015c3286fdd55101dcef7921f6cbcc910c79025d5b2b336d2b2f6fd86ee4e041e", - "0xb6e6798ddd0255fbe5cb04a551a32d4c5d21bdfd8444ff2c879afe722af8878d0a3a2fe92d63936f1f63fea2d213febf", - "0x86bea9bfffef8bc11758f93928c9fdfae916703b110c61fa7d8fe65653f8c62c6fecd4ff66a1f1a7f3c5e349492e334c", - "0x9595a4606284569f4b41d88111320840159fd3b446e00ec8afd7ddaa53dd5268db523f011074a092f8e931fc301a8081", - "0x83b540a6bc119bf604a7db5f6c0665c33b41c365c12c72ca4fa7b0724115bbb0ff1ae38532c3356e8bb3ac551285929f", - "0x92c6daf961ca4eb25293e1794cf85cda4333cf1c128207af8a434e7e0b45d365f0f5baaefc4ebd5cd9720c245139c6e2", - "0xb71465f3d7dba67990afc321384a8bb17f6d59243098dbed5abd9a6ffc7a3133b301dd0c6ca3843abbaa51d0953abbed", - "0xb15d93482d2ee5b1fec7921fcc5e218c1f4a9105a554220a4fb1895c7b1d7a41f90bbf8463d195eecf919fcbe8738c51", - "0xa79c98e70931ffd64f4dcf7157fbae601a358261e280fe607eb70cef7d87f03efa44cf6ba0f17fbb283a9c8a437d2fdb", - "0x9019d51a6873331f8fe04cb45e728a0c8724a93d904522a9915c748360ddf5cdbf426a47b24abf2005295ed2a676cbf0", - "0xb34cc339fec9a903a0c92ce265e64626029497762ff4dcaaf9bb3994298400ce80f4fb7dbe9ec55fe0c4a522c495cb69", - "0x8fda9be7abfe3b2033cad31661432300e2905aef45a6f9a884e97729224887a6ec13368075df88bd75c11d05247bef15", - "0x9417d120e70d6d5ca4b9369cba255805b5083c84d62dc8afec1a716ead1f874c71a98ad102dac4224467178fe3228f62", - "0xa0a06b64867eebb70d3ce8aaa62908a767fb55438a0af3edf9a8249cd115879cde9f7425778b66bb6778cb0afeb44512", - "0xa44309d3e1624b62754a3a4de28b4421f1969870f005ac5dc7e15183fa5b3ad182bcd09cca44924e03fbdb22f92f8cf8", - "0xaea80f1c3a8fc36cfb5c9357d59470915370b2bec05f51f1d0e1d4437657e2303ba2d1ac3f64cf88f2df412dff158160", - "0xb3f1557883d91b24485123d2f3ae0fce65caa533c09345ae6b30d2ac49953acee61c880c57975be7b4f5558d3a081305", - "0xb52cb1e56f0d147cfb58528b29c7a40bab7cfc9365f2409df7299bfc92614269ff9de3cb2500bbc4909f6a56cf4b9984", - "0xaa4f8fd0f5f87c177ee7242f7da76d352db161846cd31523a2100c069d9e4464170eec0bffc6d4da4f9e87017b415dbd", - "0xb5b61f52242985c718461a34504f82495d73cbb4bc51f9554b7fe9799491f26826d773656225f52a1531cd5bd6103cde", - "0xad12ba9697804ede96001181c048f95b24ba60761c93fb41f4b4a27e0f361e6b1434e9b61391bacaf0705fdaa4a3a90e", - "0x9319286cbda236f19192ae9eb8177e5a57a195c261082ba1385b20328fb83ed438f29d263dddae2f5278c09548830c4a", - "0x88b01ee88c3a7ae2c9f80317dddbaa2b7b0c3a3c23828f03ff196e244500410c9ac81c2e2d3e1f609d4b36ee1732738c", - "0x8e31f30600a9d629488d44a008c821c3c57f13734eaee5a19f0182a2de9e538fff7d982980d7fcc725c969f29f7c2572", - "0xb215740eea98b4bb14197a803a8975700ad2f25a25ef3628eae10166d56c823301f6dd62ce3f9ebf2d42d1f33d535004", - "0x8fb0fdb253d4bcc6693642779be13a5b816189532763dfd7da868cfacfdb87cb5ebe53b18b69dfd721f8d4baf3c1d22d", - "0x8cdd050a447f431ff792156d10381aaf83c6634a94b614dd5b428274538a9cc1f830073533b4fd0a734d6dd4f8d9c4ce", - "0x81b01ee8c72ac668ad9dd19ead2d69cac28c3525e613e036e87aa455c2da9651cc8fcc97c451a8c8a071a4eb69623cd1", - "0x8d9e02dc9ac83f861b3745bd69216232144c47cb468a7dbc49083ed961f978e34265b3f42c400339120bdc4644fe5711", - "0x89e9410455b34cba9db0a5ea738e150fae54dd000d61e614f3274a6c8102ba7cd05b0936f484a85711ad9da7946f51ea", - "0x91f9d4949678f8e6f4b8499899818bdd0f510da552b5d79d8e09bf3b69d706ab36524b5e86d3251318899b9223debf6b", - "0x8b3c38eec7e1926a4be5e6863038c2d38ab41057bcfa20f2b494e9a0c13bc74c3a44c653402eb62a98e934928d0ebccb", - "0xa5cfe465bfbf6e8bfbd19d5e2da2fc434bd71acd651371087450c041aa55e3c4f822361e113c6c3d58646ed3ba89d6da", - "0x918665b8810bcb8d573ca88b02a02c62eaa5a4a689efb5c564b0c9183f78144e75d91fd1603e17d2c77586cbe5932954", - "0x997dace0b739aeb52ba786faae5bdf1d48630a90321f9ceebfa9e86d189a3d79d7b04e459ac8e4adcfe83a5ce964eb1c", - "0xa5a1ca9f0ccc88017a616d481d912aab3f0e154b673f1131c5d9c9c3f5f147d25b6392b2c31e49f7bb7eb2697d05dbec", - "0xa76e99bec509eff01bf6767a06ac97ebc6671cb58bc3d4acc2803580a874885453dbba2e1bba26e45f8d2bda5f688860", - "0x956c1362c8123c5d9ebff7049e851235d69fa645f211ef98e2b6564f2871114a12224e0ec676738d77d23c709dd28a6c", - "0x885efede83b1a3e96417e9f2858ab0c7a576fc420e8f1f26cabf3b1abeec36bcaa63e535da177847f5e0afdb211bf347", - "0xaffca2257f292a2db52f8b1bab350093f16f27ef17e724728eeaec324e2513cd576f6d2e003cc1c6e881334cb2e8bf22", - "0x8dac963d34dcc9d479207a586715e938c232612107bb2d0af534d8da57ad678555d7c1887fadca6551c4f736ffa61739", - "0xb55e600a6bbde81f5a0384f17679d3facb93a7c62ca50c81a1d520cf6e8008ac0160e9763cb2ca6f2e65d93ca458783b", - "0x9485e6c5ab2ebfb51498017e3823547b6ab297d818521ceac85cd6c3aa2d85ae075a0a264ae748fc76ce96a601462ffa", - "0xb4d8abca786c0db304a6634fba9b2a40d055c737ed0f933e1739354befdae138dae3c8620a44138f50ebeaf13b91929f", - "0x8bde7ca39c7bda95b1677a206b16c3a752db76869ea23c4b445c2ff320f2ee01f7358d67a514982ee3d1fb92b7bd7229", - "0x8f8cd0acc689b6403ee401383e36cae5db2ff36fc2311bbadf8ebb6c31cbcc2ca4ffac4c049da5ba387761ef5ec93b02", - "0xa06f42d5f69a566ff959139c707355bbf7aa033c08d853dce43f74a9933e6d7b90e72010ef3fcb3d12e25852343d1d31", - "0xb10ece7cf6b69a76dba453b41049db0cdf13d116cf09c625312b150ee7437abd71d921eda872403d7d7ce7af1e6dccb7", - "0xa3d820318e0f3b54fba7a4567912a82d6e6adf22b67cfc39784683a8e75f77538e793d9708aae228fa48a71abb596195", - "0x8758fad55b68a260bea3bd113e078fd58d64a92f7935ff877f9f77d8adc0994b27040cfc850126c7777cfdfb2428a3e5", - "0xb504913ee96c10f00b848cd417c555a24bc549bf5c7306140eff0af2ada8cb5e76bed1adb188e494332b210fbf24e781", - "0xa00e019a40acc7aab84c1cc27c69920ad7205c2a3dc9e908a7ef59383695c9cb7093c4bcbc2945aab2655119552e3810", - "0xb1000b4c4f306672e39d634e5e2026886a99930d81b8670a5d4046db9621e44997c4b78f583374a09c60995f18a6fd4f", - "0xa6c5053c4e748540ad2b622c28896c9d4ca3978ca4784ac8f09da5314a245f5cdc5d6203c84e6e0bcb3081829720a56d", - "0x8e37e67a70205a5c7da95de94ac4d0ebd287c1c9922d60c18eec1705030dfcbf74ae179e377c008bf5a8bc29c7c07cce", - "0xa66bd7c0243319b553d5cb7013f17e3504216e8b51ba4f0947b008c53bcb6b4979286b614a4a828ee40d58b5ef83e527", - "0x97e2110b0fb485508a2d82ecc2ce1fbe9e12e188f06c7ef2ac81caeeb3aca2c00e5e6c031243b5ca870a9692e1c4e69b", - "0x8734ce8bbc862e12bea5f18d8a8d941d7b16a56ef714792fed912ca9c087497e69b6481fdf14efe1f9d1af0a77dac9b1", - "0xb441dddac94a6a6ae967e0e8d7ab9a52eb9525fb7039e42665e33d697e9a39c7dcef19c28932fb3736e5651d56944756", - "0x918b8997f2d99a3a6150d738daed2ff9eb1f5ed4a1c432d18eab4a898297f7ffbffd1e4ae9037acf589b1cd9e1185ef6", - "0xa0247b8ac4d708cf6b398dc2d5c127a291d98e8bef5f195f820c4fddb490574ba4f62647c2d725237a3e4856eec73af0", - "0xb45636e7e0a823c2a32e8529bb06fcccfd88e9964f61201ee116279223ed77458811d1b23bcb6b70508d16d4570a7afb", - "0xa99c1188fa22b30b04fda180d2733586ea6ef414618f1f766d240c71f66b453900d3645541c019361027aebe0a0f305f", - "0xb4c2f758e27fe233f7e590e8e0c6de88441164da3fcd5211a228318d3066dfdafc1d40246dd194f2b597f6fe9600b3d7", - "0x972530819445b11374c3043d7855d5f1d3c4922b3b205d0bf40162c51605375dd0b61f49cd7f3d39a533a86a13005989", - "0x992b533a13e5d790259bfdfdf1074f84a5e5a0a0d7be9cd6568cdc1662524f1a6666a46da36cea3792ba6707850f4d86", - "0x9875d130457e04dc6ea2607309bfbb900ad3cb5f3e0574f808d27b20cbf6f88389d87dca19998680c5bc30d1df30a41b", - "0xadea8494a69e83221edf360ab847272b5c47eba5404665fb743d98c0682732c30085ae3ec82bc1e8e4aba8454c9b1849", - "0x887d4c624ce05e224216c5f6fa13c5741012ac33330bc291754782f0bfe668decdc98c0e43a1ce28323effe6b639f477", - "0xab6b167aeb5e93ab155990b94895e7e7ff6dea91384854a42cc8a3b9983495b4b3c33ab1b60b2b6450ccf0418fada158", - "0xa7588d0b7c6a6bc32fc474aa0f4e51dfb8e6e010346ad32c59d6f99e6f0522424111a03a4f56ba4075da8009ee7a63e9", - "0x94d645cc3936db1563568193639badfc064dd5bda8d0631804ee00b09e141b200619e07506b5a8225130541436327194", - "0x8d695c03cc51530bdc01ee8afcd424e1460d2c009e1d7765c335368e5c563cf01a2373c32a36400c10e2bf23c185ed19", - "0xad824a0a7ed5528e1f9992cbb2050785e092b1ea73edd7fb92b174849794a5b04059e276f2941e945bc0f3e46172f2af", - "0xad6ed2af077a495d84f8eeed7d340b75c0d1c8b7c5a854dfc63ab40a3d0c2b0d45016d30b3373a13f0caae549f657976", - "0x82454126c666023c5028599a24be76d8776d49951dfe403ebf9a5739b8eb2480c6934a34010d32cd384c91c62a9aa251", - "0xb57070006793eca9fa2f5237453ed853994ad22c21deb9b835e1fb3fbc5ac73aec265a4a08de7afae1610dc8c42b7745", - "0xad94667c791cf58875eb77eb17b6ad02de44e4ba2ddc2efe4d0ff22a5e1a090c670354437847349fd61edc4ba5606f07", - "0xb2aac0c345ffc00badaab331c12a22019617b004d32c099c78fa406d683744d96d51d1237ad0842f9f54655186f8f95b", - "0x8fed51076cc939b354e3b69034a594e6c9c98425ccf546154ab087a195375128444732388d2eb28f82877de971ec2f58", - "0x8e521c0093deb9dff37888893db8ffebc139984e7701e68b94d053c544c1be0d85f0f98d84b2657933647b17e10a474c", - "0xa2c6c9a307aff9b1dea85f90fa9e3b8057fd854835055edeb73842a7ef7c5ae63d97c51fec19dd8f15d696a18a0424a6", - "0xa3390b25a9c11344ed1e8a0de44c848313026067a0f289481673c2c0e7883a8fc9f6cab6ccd9129729a6d8d0a2498dc2", - "0x82770c42b1c67bbd8698c7fe84dd38cc5f2ad69a898097a33b5d7c5638928eb1520df2cb29853d1fa86a0f1bcc1187e8", - "0xa6fdf7a4af67bc4708b1d589135df81607332a410741f6e1cc87b92362a4d7a1a791b191e145be915aa2d8531ee7a150", - "0xaecac69574188afc5b6394f48ba39607fe5bb2aa1bd606bc0848128a3630d7d27101eb2cea1fb3e6f9380353a1bb2acc", - "0xa23fd0c52c95d0dffb7c17ec45b79bf48ed3f760a3a035626f00b6fe151af2e8b83561d0b9f042eaae99fde4cbd0788d", - "0xa5f98068525cdd9b9af60e0353beb3ac5ac61e6d3bac1322e55c94b3d29909d414f7f3a3f897d5ae61f86226219215c6", - "0xb2a4d724faac0adf0637c303ff493a1d269b2cdbec5f514c027d2d81af0d740de04fb40c07344e224908f81f5e303c61", - "0xadeadb3521e1f32ef7def50512854b5d99552e540ec0a58ea8e601008de377538c44e593e99060af76f6126d40477641", - "0xa18b7fc2fcd78404fed664272e0fef08766a3e2bc2a46301451df158bd6c1c8aa8cf674dd4d5b3dedfaceb9dd8a68ae3", - "0x83bcfb49313d6db08b58c6827486224115ceef01ca96c620e105f06954298e301399cdd657a5ff6df0b0c696feec1a08", - "0x8c94391eba496e53428ec76dfe5fa38f773c55c0f34a567823316522a0664a3d92bff38ec21cf62ac061d7d1030650c5", - "0xb1fa196ccfd7d5f1535b2e1c002b5cde01165c444757c606b9848bc5f11b7960973038fb7cc3da24300fc1848e34c9af", - "0xb139f6c6449449638de220c9d294e53fc09865a171756d63bbf28ec7916bf554f587c24bddf51dd44372d15260d8fe25", - "0xb716242299d4ee72b5b218781b38ca5e005dcf52333364f85130615d1dbf56216af8ee2c9c652d82f7aab5345356538c", - "0x9909f24e4ad561aa31afd3a3b9456b2bd13a1d2e21e809a66af62fec5f95b504507ac50e81d2233da2b223f5443e7585", - "0xae863530a02cf3a757f72b945c8c0725d9f634d2ff26233478d1883595ff9a1eef69e8babffdbfa161452fc204f5b5a1", - "0x8eb82bde283b6a6e692b30236cbf41433b03eda8dad121282772edd56f144b1ebf5fb489d18c6ce8776135771cbb91e2", - "0x9296141fadf8dadc885fff4999c36efa25ec76c5637a8300a1a7dc9cf55bcedfe159e0ef33f90eee9be8c4f085734e10", - "0xb6c07f2e6fcbd6c42a8b51e52fbcd5df3aa9f7c3f0b3c31021de1aec2111d0a1c36b5ab489ba126af44fd43cf31c2594", - "0xa70ca669c357535b363d16b240fd9cb9c5ba1b648510afc21218ea034e9bf5f22717ae31ff43ef89dded95b7132fa58f", - "0xb350721f8f6b4d164fd08aca30cd4dece9b4a81aed0ac12119c9399bab691d5945814306f9a61f0106b76d4d96f7b9d6", - "0xb6886076c9d8c344bf3fb6975173d00fa82866012894f31c17e6fc784fbc0dd2d24d6a1cddd17f7379c74566a23219aa", - "0x87636e4a83ceadc170a4b2517b19525c98e2163900401996b7a995b2f3da8d6ba2ab92f909eade65074fac07cf42f6fa", - "0x8ff61d87c4699a067a54b8540e8642f4c7be09d3783ec18318bcba903c6714fcd61be69165e07e1ca561fe98e07507de", - "0x85485d6b569ac20e6b81a9e97ef724e038f4fee482f0c294c755c7b6dad91293814f143bfcfc157f6cfa50b77b677f37", - "0xa49256cb1970cc1011a7aed489128f9b6981f228c68d53b1214d28fbcfb921386cc7cf5059027e667a18073efa525a74", - "0x87bc710444b0c3e6682d19307bedc99c22952af76e2d851465ee4f60e5e1146a69f9e0f0314f38a18342e04ece8e3ed3", - "0xa671a6cabfd19121a421fdfe7732eccbb5105dfb68e8cbcf2b44ae8465c99e78c31b99730beca5bc47db6fc2f167203a", - "0xa2f3270c184629f6dfc5bf4bdd6e1b8a41e8840a1e4b152253c35c3d9e7ab4b8e3516dc999c31f567e246243e4a92141", - "0xb9795a5a44f3f68a2460be69ecacdbb4664991ebbedffed5c95952147ad739e2874c099029412b9653d980a2d4307462", - "0x959053faec9a966dd5a4a767a3154e4b8e4f56ca540ae53e373c565dda99fb626f725e5a5e3721c82918f8c5f2e9e0a3", - "0xb3ef9d6a1b3cd44a3e5112819fa91cb8a7becc3f5b164c6f759f93171d568497b01c8e743f4727b341a1296a0dbadf4f", - "0xb852dfdfbe2b8c77d938fad45f00737e14eacf71d5fecbb3e4f60052ec9efb502c38c1fcecaf71da69eabe8b33852a67", - "0x921c7007f26bdd4139e919dfe27d87b489a0bc5bd6fb341e949e4451f14c74add0489b108c9c9666a54c5455ac914a9f", - "0x86b63d73ba31c02e5337f4138e1684eccdc45ab5e4f30e952fb37d638b54ecec11010414d7a4b7aa91f7cc658f638845", - "0x853c55e0720b66708a648933407795571fc11ad5c234e97f92faabce9e592983dfb97a1705047ee803648ecf9fbb2e5c", - "0x995fe7d1dc09bb0c3c3f9557c4146534778f5ea9c1d731c57440fdcf8094f82debf19090b5d23298da1ed71c283b3ae5", - "0xb9c49c911a0c4d716b7baec130f9e615bfa7d504aa8766ed38878a93c22b1f6353503d4f7f425d4902239fb4689429df", - "0x80504d964246789a09dcd5c0298680afb6fe50bca3bb9c43d088f044df2424a1828de10e0dbdc5c0aac114fa6d9cf5d1", - "0x90249351f109f6b23a49a610aaa3b2032189fd50e5e87cdc3b20f23ed4998af3a8b292bf9fbab9bd1cbe0a1371081878", - "0xabb5f0148850f0d80b429c2b9e0038772432340ef0862ccb5dcb7347026ca95bf9a5857f538e295aebd3a6a5027adb4c", - "0xb92ac9c0f7e73150798348265e5f01f3c752480c72613c6894a95e9330bba1c642b21b9cbd8988442b5975476634b4fa", - "0xaf3fbcc825abd92c6d7ea259467f27045e288f27a505e6a3c9ec864aa08fcaca0d4123034513dbd4c82d4814075708ab", - "0xa738232a66030e0e9c78e093a92fcc545b10e62fb0ecb832bbbc71471b28eb6ec422a498c2402e2c6d74983df801e947", - "0xae60194ce2035edd1af253b9eefbb4b1b7609c9678256c89c3cb076c332a9f4442c3441ad2ecc9d73265359bdadc926c", - "0x8b2fd55e686f16725fc0addb4065f696275852320b03221fd22889825d66fae5bb986b03c47452e32b3a32c1fdfc8dfd", - "0x8e2e1a36673b7729b07e7bc5014584e1c03e9552f7440fbfda0a6a7f41953947fcdf8d666f843bfc03dcca5b06a14318", - "0x95a3df04368c069f3fd32a20b627c5f043e952167c9e80bf5914bbf2086879909c60e089bbd488725ab977c0e6051728", - "0x9856403b2211d0152d4eec10db7ec34c16ac35170714b75af3ebc398a676c171b24b6f370361de0f9057ba444293db14", - "0xa2cb484b758af5fd8e2baca7f0406f849c71255e58ef110d685cd0c1137893a25d85a4d8582e3ced7dd14287faa95476", - "0xb0f697b6a42f37916b90ab91994ae4a92c96dc71e4da527af41b9d510bc2db5a9b4f29183a758074b6437a1e62b2d1d7", - "0xb39c49266aae46f257b7ae57322972fb1483125298f9f04c30910a70fe5629dba0ec86b94cc6ba16df3537a55e06f189", - "0x86cd5595b5b769dfd9ceb68b11b451f6c5b2e7a9f6f6958eac8037db1c616e8a9defb68a0d6c2287494d1f18076072c1", - "0xb462e8fa9a372d4c1888fd20708c3bed1cb00c17f7d91a0481238d6584fbbf2d238e25931154f78a17296a12825d7053", - "0xa5ef28286628ba509bac34c9f13158d0013239fdca96b5165161f90b89d6e46295822ebdf63f22d7739911363a0e0e86", - "0xa629a95a24e2545862b41a97ecba61b1efa792fd5555dc0599c175947e9501bffc82b05a605fd5aabc06969ccf14fff4", - "0xaf83467e4b1f23a641630cc00c38d4225ff2b4277612b204d88de12a07d9de52fb4d54a2375a7fd91eb768623c255376", - "0xa630f29fb2e9a9e2096d7f3b2f6814ee046ebc515f6911d4bc54ad8a5a821a41511ff9dcfbe3176f35c444338ecd0288", - "0x950dedc11bd29e01ba9744bec681ad9462127c35e9fcadfacc9405ec86b985a1b1c4f9ac374c0f1fa248212e5e170503", - "0x82e8e7be8011ee0fd9c682d26a0ef992d0191e621d07fd46a3a5640ef93a42e1b98a33cad1f8017341a671d28caebb03", - "0xa075860554e712398dac2fb0375067a48d0e4ca655195cefc5ccb1feb8900d77124aa52a12e4f54f7dab2a8f1c905b5b", - "0x81d2183d868f08714046128df0525653a2dc2ff9e2c3b17900139c9e315b9f4f796e0fb9d1d8cbadbaa439931c0e0879", - "0x81fb1456969579515a75fb66560f873302088cde2edc67659b99a29172165482ca1f563758c750f00086b362ae405322", - "0xa13c15ab19203c89208c6af48d2734bb0873b70edb660d1d5953141f44db9012528d48fb05aa91d16638cbda2ca8f0cc", - "0x8ba46eef93e4ec8d7818124a0b9fcfe2bcf84a98db3545d2b3d0192cfadc81fc667dcc22ab833c3e71508d0f3c621fe4", - "0xb9bd60d2266a7d01e1665631a6ed6d80ffc0cd7f088f115a5d4ea785c518a8f97d955e2115b13c4960302b9825526c92", - "0xb26fa4e87142150250876083a70c229249099331410f0e09096077fdf97b31b88dc57a3e3568d2a66a39af161cf5dfec", - "0xb9d147564124728b813d8660ba15fa030c924f0e381ad51d4e0cf11cc92537c512499d3c2983dd15f2e24ca166070d70", - "0xb6fb44e1a111efb3890306fa911fafda88324335da07f7de729b2239921ef15b481630a89c80e228bec7ab6444a0b719", - "0xa6cd9c7acac052909ef0cf848b6012375486b59b7bac55b42c41f0255b332c1d45a801f6212d735be8341053bd5070b9", - "0x864258d69234786af5de874c02856fc64df51eff16d43bfb351b410402ab28f66895aec4025e370a4864f19ff30fd683", - "0x84370fa1243b64b3669dd62e1e041ff9bd62810752603486aac3cba69978bd5f525c93cbc5f120d6f2af24db31ec3638", - "0xb983c2cdc1a310446de71a7380b916f9866d16837855b7d4a3a6c56c54dab3e373a6fc6563b8309dc3b984d4e09275d6", - "0x914f8587f876470f7812fa11c6f67e2dd38bf3090e8928e91fe2fe5595bee96cbe5f93d26fdced6b4e7b94f75662b35d", - "0x8b47bcb111d91aa3d80e4ceef283824aa00d1faeb6fe4111aecd9819869c0e1f6f4b6fb2018aebb07a0f997412cda031", - "0x95b2befa98f9992450ca7ff715ae4da8c36dd8adcfef3f0097de6e3a0b68674b05cbf98734f9665051bb4562692641e0", - "0x8bcd1651a2bfce390873a958e5ff9ca62aac5edd1b2fd0f414d6bcf2f4cf5fa828e9004a9d0629621b5e80fbbd5edb90", - "0xaf79bed3c4d63239ac050e4fa1516c8ad990e2f3d5cb0930fc9d3ce36c81c1426e6b9fe26ac6a416d148bf5025d29f8b", - "0x881257e86b7ab5af385c567fde5badf67a8e7fff9b7521931b3ce3bac60485c0fe7497339194fb7d40e1fad727c5c558", - "0xa1b40b63482cd5109990dfb5a1f1084b114696cbbf444bf3b4200ab78c51dad62c84731879ea9d5d8d1220e297d6e78a", - "0xb472212baa2a31480791828ca5538c3dcc92e23f561b0412f8cc9e58839d1625ddcaf09c8078d31ac93470436843cd74", - "0x8f516d252b1863cd3608d852a2857052bb2a3570066d4332fa61cb684b10ac8d1a31c8d32f2a0d1c77eee2ad7a49643d", - "0x8d20b75c51daa56117eda2fd5d7a80a62226074b6a3ff201519f2054eecfeff0aa2b2f34b63bea3f53d7d0ce5c036db9", - "0x8282f433229e7948a286ba7f4a25deb0e0a3c5da8870562c3646757bef90ca1e8d3390b0a25b3f2bf45bf259a4569b77", - "0x8a2dbf4b55cc74f0a085d143a88ebc8c2a75a08eab2703d13a00b747eaddc259a3dd57f7330be938131835a6da9a6a68", - "0xaa0bc51617a938ea6a7b0570e98b8a80862dd9e1cf87e572b51b2a973e027bcd444ef08e0d7b5dee642e0da894435e91", - "0xaa7319ca1ac4fe3cc7835e255419eeb7d5b2d9680769cc0ca11283e6147295db75713b71a9312418a8f5505cd45b783d", - "0xab3f9c465663dc90fae327a2ee9cb7b55361a9b6fbe713540a7edd3cff1c716802fb8ad4dd8fb0c945d96b3b44c5795b", - "0x913a2ae88acffab12541fc08920ee13ab949f985a117efe9a5b2c76f69f327f60c5b5ad3fa5afa748034ac14298fc45a", - "0x9008f044183d2237b723b235953e4d8b47bec6a7b300d98075555478da173b599ba9c7c547c2f111ce1fae5ac646e7a3", - "0xa26b4cc42b353e1c18222d2e088d7f705c36be12e01179db440f10fcfa9691d31fc4fc7e7ee47876f1624e6d44be1021", - "0x995e75824f322294336bfa2c5d1a319f0d77f6a0709beabaf1b43015d8a78d62447eab907349524734170f0294d1ca7a", - "0x8b96f04a19dbe4edc71d1f2c6d3475ae77962e070ec5797752453283c027c6b29b6e58e8b7eb5c3f9770557be7e80b67", - "0x8621459865234734bcfaa492ca1b89899525198a7916ccc6f078fb24c8bf01154815bb5b12e1c3d0a10bd4f1e2ea2338", - "0xab52174541185b72650212e10a0fe2e18ccfd4b266a81233706e6988c4af751b89af87de0989875f7b5107d8d34c6108", - "0x966819d637bdd36db686be5a85065071cf17e1b2c53b0e59594897afc29354ecba73bf5fc6fa8d332959607f8c0a9c27", - "0xb7411209b5ab50b3292c3a30e16f50d46351b67b716b0efb7853f75dc4e59ec530a48c121b0b5410854cd830f6c4b3ea", - "0xa5dc04adbadce0af5dc1d6096bad47081110d4233c1bf59a5c48a8e8422858620f4be89bf1f770681be2f4684ee4cce7", - "0xaf77a8f83cffb5f8d17be0ab628dedcad63226c9b13ce4975fb047f44bfef7d85e7179aa485abb581624913eddbb27ec", - "0x82bf28dc58c893c93712ce297cc0d64f70acb73a641cb4954ccf9bf17597f6d85eecf5a77c8984ab9afbe588562a0ee9", - "0x988a7cef9a178e8edb91f3ec12f878fd68af2ac0762fa0a48a2423e24f765ed8f7837429fd8bc0e547e82e6894e63008", - "0xa5d5969311056d84b3ee87f49286fac0bd9a7220c196cea4f9dced3b858dcdba74718eab95b38bd5d38d2d1184679c98", - "0xaf4d51b3ded0aaad8f12bef66c0616e9398fc42618852ac958e6ab2984a720a6111ac55b249d7e4523051740e12b346f", - "0xac635b4a49f6fbb94a5f663660f28431ba9f7c5c18c36ebc84fd51e16077de7753595f64619b10c16510ecbc94c2052d", - "0xae25eb349735ced1fe8952c023a9b186a1f628a7ddf1a4b6f682354a88f98987ac35b80b33189b016182f3428a276936", - "0xae3ab269690fdd94134403691ba4f5ed291c837c1f5fdc56b63b44e716526e18abb54f68ca5d880e2fb7bea38e74c287", - "0xa748b03b2bd3fbc862572bc4ddc0579fa268ee7089bcfd0d07d0c5776afcd721302dbb67cb94128e0b1b25c75f28e09a", - "0x8f09a2aaa9ba3dfe7271f06648aba9cc1ea149e500a7902d94bb9c941a4b01d1bb80226fd0fd2a59ad72c4f85a2a95d0", - "0x853d55ad8446fd7034e67d79e55d73a0afcb5e473ed290e1c3c7aa5497e7f6e9bbf12d513fc29e394a3dc84158a6d630", - "0xb1610417fb404336354f384d0bf9e0eb085073005d236a0b25c515d28235cea5733d6fbd0ac0483d23d4960064306745", - "0x86de805b3d4f6fbb75233b2cf4d22fcc589faa2ac9688b26730cb5f487a3c6800c09bb041b2c6ab0807bfd61b255d4c9", - "0x893b38c72cf2566282ee558d8928588dca01def9ba665fcb9a8d0164ee00dedafbf9d7c6c13bcc6b823294b2e8a6a32c", - "0x8e50de7a70ac9a25b0b5cf4abc188d88141605e60ce16d74a17913a2aff3862dec8fbbf7c242cf956f0caae5bcc4c6bf", - "0xb5cf09886a4fb4ce9ea07d1601d648f9f9d1a435b5e1e216826c75197cd6dafd6b2b07d0425a4397a38d859a13fdb6dc", - "0x859dc05daf98e7f778a7e96591cc344159c1cbe1a7d017d77111db95b491da0a9272866d2638a731923ca559b2345ebe", - "0x8ff1792f77ecdfbd9962f791a89521561c7b82031a4e53725f32fe7d99634a97b43af04cbf3e0b0fdff4afa84c49eb99", - "0x81e2cd8a221b68ae46dd7ce97563bd58767dc4ce1192b50ff385423de92206ff585107865c693c707e9d4ed05f3149fb", - "0x8fce7da7574e915def0d1a3780aa47ef79b6d13c474192bd1f510539359494ddc07e5412f9aac4fc6c8725ade4529173", - "0xac02f5df60242734f5ead3b8a62f712fefdb33f434f019868a0b8ddf286770244e2ddfb35e04e5243ba1e42bcd98a6a5", - "0xa8d69783349a442c4a21ecb3abd478a63e2c24312cb2d2b3e10ea37829eb2226a9b8d05a8c9b56db79ffaa10d1f582d1", - "0xb25b5cca48bf01535aba6d435f0d999282845d07ac168f2ca7d5dba56ee556b37eab9221abdb1809767b2de7c01866c1", - "0x8af7e1d1f4df21857d84e5767c3abe9a04de3256652b882672b056a3ab9528e404a8597b1ad87b6644243f8c4cd3799f", - "0xa6718308dfa6992ae84fcb5361e172dbbb24a1258a6bd108fd7fc78f44cc1d91be36e423204a219a259be4ab030f27ff", - "0xb99cbe3552c1a5259e354c008b58767c53451932162e92231b1bebfc6a962eb97535966a9bd1dfd39010dfcda622d62a", - "0xa8458f6b8b259581f894e4b5ce04d865f80c5a900736ca5b7c303c64eaf11fe9cb75e094eece0424ba871b2aee9f7a46", - "0x914f763e646107b513c88f899335d0c93688ffa6e56c3d76bff6c7d35cb35a09f70dc9f2fe31673a364119c67cd21939", - "0x9210f2d39e04374f39b7650debe4aceeb21508f6110ab6fc0ab105ec7b99b825e65753d4d40f35fad283eeff22a63db0", - "0x98729cf927a4222c643b2aa45b3957b418bce3f20715dd9d07997a3c66daa48dd62355dbd95a73be9f1d1516d1910964", - "0xa602c399f1217264325b82e5467a67afed333651c9f97230baf86aec0dd4edeae1e973cafef2ea2236d6d5b26719954d", - "0xac9632921d45900bf3be122c229ba20b105b84d0f0cba208ccdce867d3e9addfb3ef6ece9955950d41e1b98e9191ef42", - "0xa76ce1f53e1dc82245679077cb3bca622558f2269f2d1a1d76b053896eba1c3fc29d6c94d67523beb38a47998b8c0aa7", - "0xb22b51fcc1b328caa67cc97fb4966cb27d0916488a43248309c745cd6e2225f55ad8736d049250fa0d647e5f8daa713c", - "0xb7645c1923a6243fa652494fe9033fa0da2d32a0fb3ab7fcb40a97d784282a1ffad3646c499961d4b16dadbc3cbb6fd6", - "0xacab12b490da690db77c4efdc8b2fe6c97ac4ba5afb5165d6647fdd743b4edbad4e78d939fc512bebcf73019c73bae40", - "0xad7a0fcd4e4ccb937a20e46232a6938fccf66c48a858cf14c8e3035d63db9d1486e68a6bf113227406087b94a0ece6a0", - "0xa78605beaa50c7db7f81ab5d77a8e64180feea00347c059b15dc44c7274f542dc4c6c3a9c3760240df5f196d40f3e78b", - "0x8763315981c8efa9b8ae531b5b21cfc1bbc3da3d6de8628a11dcc79dee8706bd8309f9524ec84915f234e685dd744b69", - "0xb4a6c48531190219bf11be8336ec32593b58ff8c789ee0b1024414179814df20402c94f5bfd3157f40eb50e4ef30c520", - "0x8dac8a3f152f608ce07b44aee9f0ed6030fa993fd902e3d12f5ac70bf19f9cde2168777d2683952a00b4b3027d7b45ea", - "0x8baf7dfae8a5840c5d94eabfe8960265f6287bb8bc9d0794a6d142266667a48bec99b11d91120907592950a0dddc97d9", - "0xb8595e6ea6b8734d8ae02118da161d3d8d47298d43128a47e13557976032dad8c2ccbfff7080261c741d84d973f65961", - "0x8b93979c51c8d49f4f3825826a5b9121c4351e0241b60434a3c94f2c84f0b46bbf8245f4d03068676166d0280cf4f90c", - "0xaceb0fdaf20bf3be6daebf53719604d3ab865807cc2523285f8fef6f3fc4f86f92a83ad65da39de5bd3d73718a9c4bd2", - "0x814dd41764a7d0f1a14a9c92e585f154a26c8dbf2f9bff7c63ae47f1ac588cec94f601ccc12e8a63a7a7fce75a4287f2", - "0xb47b711848e54fa5c73efc079d0a51a095fa6f176e1e4047e4dac4a1c609e72099df905958421aee0460a645cba14006", - "0xaaf7bd7e1282e9449c0bc3a61a4fca3e8e1f55b1c65b29e9c642bb30a8381ce6451f60c5e0403abc8cee91c121fa001f", - "0xb8b0e16e93b47f7828826e550f68e71a578a567055c83e031033c1b7f854e7fc8359662a32cc5f857b6de4aff49e8828", - "0xb3eb70b8c8743a64e1657be22a0d5aeb093070f85a5795f0c4cb35dc555958b857c6c6b7727f45bf5bedf6e6dc079f40", - "0xae68987acd1666f9d5fa8b51a6d760a7fb9f85bf9413a6c80e5a4837eb8e3651a12e4d1c5105bfb5cfa0d134d0d9cfc2", - "0xacd8fa5742b0bac8bd2e68c037b9a940f62284ff74c717f0db0c033bf8637e4f50774a25eb57f17b2db46e5a05e1d13d", - "0xa98dac386e7b00397f623f5f4b6c742c48ab3c75d619f3eaf87b1a0692baf7cb7deac13f61e7035423e339c5f9ae8abf", - "0x99169bd4d1b4c72852245ebfbc08f18a68fb5bcce6208dd6d78b512b0bc7461f5caf70472b8babf3e6be2b0276e12296", - "0x937d908967f12bf7f728fe7287988c9b3f06c1006d7cd082e079d9820d67080736910bc7e0e458df5bae77adb9a7cbc1", - "0x8c50e90ce67c6b297fd9406c8f9174058c29e861597a0f4ed2126d854a5632fa408dfa62ad9bb8b6b9b6b67b895d5a4d", - "0x8f4840a91b0a198226631a28e7a2e893fc6fed4d5eb3cb87b585aac7f4e780855a353631ad56731803296f931e68a8d0", - "0x96a4b8c64d3d29765e877345383bf0e59f4ac08798ac79dd530acd7f3e693256f85823ad3130fb373d21a546fe3ca883", - "0xb0dce7a6ab5e6e98b362442d6e365f8063ba9fef4b2461809b756b5da6f310839ac19b01d3fd96e6d6b178db4ff90ee1", - "0x8f012cb2be5f7cb842b1ffc5b9137cafef4bd807188c1791936248570138f59f646230a1876f45b38a396cbdd3d02e08", - "0x94a87b5ce36253491739ca5325e84d84aaff9556d83dcb718e93f3ff5d1eecf9ae09d0800a20b9e5c54a95dfebfcecd3", - "0xb993ec5f9e82cc9ceeb7c5755d768bc68af92cc84f109dfaf9cf5feb3aa54881e43c3f598ba74ed98e8d6163377440ca", - "0x92f845d4d06a5b27d16aef942f1e3bcbe479b10fef313f9ca995315983090511701b39ccbb86b62d0c7c90a2d1f0c071", - "0xb6ec6da0f9e7881e57fa3385f712e77f798abc523609a5b23e017bb05acc6898825541aed7fe2416c4873de129feceea", - "0x86b181183655badfe222161d4adf92a59371624a358d0ec10e72ee9fa439d8418f03d635435ec431161b79fd3fa0d611", - "0xb5e28eeed55fb5318b06a0f63dbf23e00128d3b70358f1c6549fd21c08ef34cb1372bc0d4b0906cc18005a2f4cd349bf", - "0x85c4d3fddda61dbfb802214aa0f7fc68e81230fb6a99f312848df76cddc7b6dfd02860e8a4feb085dad1c92d9c6c65e0", - "0x80f7fdec119309b2ac575562854f6c2918f80fc51346de4523ec32154d278f95364fdef6f93c7d3537a298dd88df7be6", - "0x9192c1949d058614c25f99d4db48f97d64e265a15254aa6ed429e1ef61d46aa12355769f1909a5545cd925d455a57dbe", - "0xa0b1e7d928efc4dcbd79db45df026ae59c20c1a4538d650c0415ab7cb0657bc1e9daeacc3053ee547e8f9c01bdbd59c4", - "0x893e84c41d3a56bca35652983c53c906143b9ad8d37b7c57f9dacbeb7b8dd34defc6a841f5b9857ffb90062bbd8e9dee", - "0xa7f89a448349dbc79854cf888980327f92aedc383c7fadd34fdc0eaa4f63d751315b4f979e14f188854ef4d16c9e8107", - "0x833f2774a96187805f8d6b139c22e7476bce93bc5507344d345008080fb01b36d702b96e4c045617a23a8ca1770b4901", - "0x80e46e86d68bd0a48ac6fa0b376d5bb93a5d6b14f08b3a47efa02bb604c8828c2047695f1f88fc5080e5548e1a37130f", - "0x943f42b7b4ad930059a26ad06b62e639f06c1c425d66066c55134e97c49abe412358c7cb994fcc1cf517ea296bca1f68", - "0x8b9d4fe835dc6a2cbf85738937bbfb03f0119ab8df04a7d68860716ce6ee757dbe388a1e8854ddb69fe0c9fa7ed51822", - "0x909030c7fde2591f9ea41ae6b8fa6095e6e1a14180dda478e23f9c1a87b42c082a1ea5489c98702f6ccd2ba5812d1133", - "0xa715ec1beb421b41c5155c7ef065bbb50b691d0fa76d7df7ee47683d9e4eb69b9ea3e62fc65196a405d6e5e29e6c2c60", - "0x8c9e801cb7ef780a535be5c2a59b03e56912acbfdb00447bfa22e8fc4b11dceecc528f848d5fba0eec4237d6f81f4c79", - "0xb96b6af857c3bc0344082bd08ec49a9bed478d4d35b85a2099b1849cd6997521c42225305f414cdd82aef94b9e1007d3", - "0x8764db720b4e44a4d2527f7f9b535a494a46c60e28eac06bf1569d0703c4284aefa6cb81fbba9d967286f9202d4b59ea", - "0xa66fd2f9158e1ffcdd576cba1413081f43eed00c7eb8f5919226f7b423f34ac783c1c06247819b238de150eb5a48d977", - "0x82c52e817ac3bb0833ea055dec58c276c86ca5181811cf7a483b3703a06ea1bee90ae3aeaa2cffeaeba0b15fe5bf99be", - "0x987d07cb276f7f03a492cfb82bba6d841981518286402d3e69e730a9a0e29689a3619298124030da494e2a91974e0258", - "0xb34f2c5740236bc6d4ae940920c5bc2d89ff62a3dd3a3ec9a0d904d812b16f483073db1e53b07f2b62e23f381d7bdbe5", - "0xa1c0679331ab779501516681b3db9eefb7e3c0affb689e33326306ada6d7115fafd2cc8c1c57b2fa6c2072552f90a86e", - "0x94805e30d7852fc746e0c105f36961cc62648e438e8b9182fc0140dbf566ec14a37ad6e7f61cacb82596fc82aed321e5", - "0xa42fb00b29a760141ff0faaeb7aca50b44e7bbc0a3f00e9fb8842da7abfcaae6fae9450abe6ba11e8ecf11d449cbe792", - "0x8fb36ce4cfa6187bfe8080ac86b0fa4994f20575fb853bd8ffa57c696179cc39f58ff3b4bd5a2542ff1c8b09015539df", - "0xa1c54e7aa64df7fb85ce26521ecfc319563b687ffecd7ca9b9da594bbef03f2d39f51f6aaff9a3b5872d59388c0511c6", - "0x855e48fdb8f771d4e824dbedff79f372fd2d9b71aa3c3ecf39e25bf935e2d6e0429934817d7356429d26bf5fd9f3dd79", - "0x8ae6157a8026352a564de5ee76b9abb292ae598694d0ea16c60f9379e3bb9838ce7fd21def755f331482dc1c880f2306", - "0xa78de754e826989de56fe4f52047b3ffd683c6ceaf3e569a7926f51f0a4c4203354f7b5cfa10c4880ba2a034d55a9b0d", - "0x97609477d0a1af746455bbd8cb2216adacc42f22bfd21f0d6124588cd4fec0c74d5bde2cdba04cdbfbff4ac6041b61b1", - "0xa03dc3173417381eb427a4949c2dbfa0835ef6032e038bf4f99297acf4f0ba34a5fc8ccf7e11f95d701f24ee45b70e27", - "0xaad6283e85cd1b873aeb8b5a3759b43343fdadc9c814a5bf2e8cf3137d686b3270f1ec2fb20d155bbfd38c7091f82c44", - "0x92ab94ed989203a283d9c190f84479c2b683615438d37018e9c8de29c2610bb8fccd97bb935dca000d97d91f11a98d65", - "0x8c0444a0b9feb3acb65a53014742e764fa07105e1c1db016aec84f7a3011d9adc168dbba8034da8d0d5db177a244d655", - "0x95a33d25e682f6c542d4e81716cc1c57ef19938409df38bf8f434bc03193b07cedd4e0563414ce00ab1eebbd3256f3e7", - "0x8716c30e3e4b3778f25c021946c6fb5813db765fde55e7e9083a8985c7c815e1b3d3b74925ba108d9a733ddf93b056af", - "0xa186aabc10f1fff820376fa4cc254211c850c23a224f967d602324daec041bbe0996bf359ed26806a8c18e13633a18a8", - "0xa1e8489f3db6487c81be0c93bade31e4d56ec89d1a1b00c7df847f5cd7b878671015f5eaa42ee02165087991936660b9", - "0x8f688c969c1304dfa6c1a370119d1988604026a2ab8e059016c5d33393d149aae6e56f3ee2b5d25edc20d4c6c9666ad9", - "0x91950b651fefd13d2fa383fd0fdc022138ce064ee3b0911157768ad67ed1fb862257c06211cf429fba0865e0b1d06fc8", - "0x86cff4080870d3e94ed5c51226a64d0e30266641272666c2348671a02049ae2e8530f5fb1c866c89b28740a9110e8478", - "0x88732c4d9e165d4bb40fb5f98c6d17744a91ff72ca344bc0623d4b215849a420f23338d571a03dd3e973877228334111", - "0xafcc476ad92f09cf2ac7297c5f2eb24d27896d7648ba3e78e1f538c353ceeb1e569917a2447f03f3d4d7735b92687ba5", - "0xb622aa475e70d9b47b56f8f5026e2304d207684726fb470a0f36da7cb17c30dd952813fab6c7eb9c14579aacca76f391", - "0x802cf5630c0407ae0d3c5cf3bef84e223e9eb81e7c697ea10ec12e029fc4697ce7385b5efab7014976dacc4eb834a841", - "0xa08596493f4cd1b8ac2ec8604496ee66aa77f79454bb8ab6fdf84208dc7607b81406c31845d386f6ac8326a9a90e7fc5", - "0xa54652ca9e6b7515cb16e5e60e9eabbccbc40bb52423d56f0532d0bac068aec659a16103342971f2cc68178f29f695db", - "0xa3ab54875cb4914c3a75b35d47855df50694310c49eb567f12bbc5fa56296e11f4930162700e85ba2dbfdd94c7339f91", - "0x94183a040285259c8f56bef0f03975a75d4def33222cc7f615f0463798f01b1c25756502385020750ac20ae247f649a1", - "0xb0004261cc47b0dc0b554b7c6ebf7adf3a5ece004f06e6db3bbac880634cdf100523b952256a796998a5c25359f12665", - "0xa25dfeb0e18ebe0eb47339190f6a16f8e116509ab2eef4920f0d3ff354e3ead5abe7f5050b2f74f00b0885ea75b4b590", - "0xab10ef2f5dc0ede54e20fa8b0bce4439543db8d8b31e7f8600f926b87ec5b8eea0ac2153685c7585e062ffac9e8633c3", - "0x8386eac1d34d033df85690807251e47d0eaacb5fe219df410ab492e9004e8adabb91de7c3e162de5388f30e03336d922", - "0xb6f44245a7d0cb6b1e1a68f5003a9461c3d950c60b2c802e904bc4bc976d79e051900168b17c5ac70a0aed531e442964", - "0xad12f06af4aa5030b506e6c6f3244f79f139f48aec9fc9e89bbfbd839674cfd5b74cea5b118fb8434ba035bda20180af", - "0x88511306dfe1e480a17dba764de9b11b9126b99f340ceb17598b1c1f1e5acbdd1932301806fe7e7e5e9aa487a35e85de", - "0xa17cdf656e1492e73321134a7678296a144c9c88c9a413932d1e4ca0983e63afc9cdc20fd34b5c6a545436b4db50f699", - "0xb555b11598a76de00df0f83f0a6b8c866c5b07f7ac2325f64fb4a0c2db5b84e0e094d747186c3c698ee4d0af259dc4c7", - "0x88014560587365e1138d5b95c2a69bdae5d64eb475838fee387b7eb4c41d8c11925c4402b33d6360f0da257907aa2650", - "0xb220634e6adee56e250e211e0339701b09bf1ea21cd68a6bd6ee79b37750da4efe9402001ba0b5f5cbbfcb6a29b20b0c", - "0xac5970adc08bc9acec46121b168af1b3f4697fb38a2f90a0fbc53416a2030da4c7e5864321225526662d26f162559230", - "0x97667115b459b270e6e0f42475f5bce4f143188efc886e0e0977fb6a31aba831a8e8149f39bc8f61848e19bcd60ceb52", - "0xb6c456b36c40a0914417dd7395da9ed608b1d09e228c4f0880719549367f6398116bf215db67efe2813aa2d8122048f2", - "0xab7aef0d6cda6b4e5b82d554bd8416a566d38ded953ffd61ef1fcca92df96cdcc75b99a266205ff84180ab1c3de852a4", - "0x81d354c70ce31174888c94e6cf28b426e7d5c4f324dc005cd3b13e22d3080f3881d883ca009800f21b0bb32fa323a0cf", - "0x94f3440965f12bee4916fcc46723135b56773adba612f5ce5400f58e4d4c21435e70518bdef4f81e595fa89e76d08fc6", - "0xa6683e7a1147f87cbeeb5601184cc10f81bca4c3c257fd7b796a2786c83381e7698fb5d1898eb5b5457571619e89e7d6", - "0x8ca29539600f8040793b3e25d28808127f7dc20c191827a26b830fff284739fb3fc111453ff7333d63bce334653a0875", - "0x98a69644048b63e92670e3e460f9587cf545a05882eb5cba0bcbd2d080636a0a48147048a26743509ab3729484b3cc12", - "0x84d40302889c03c3578c93aca9d09a1b072aadd51873a19ef4a371ca4427267615050c320165abece7f37c13a73d4857", - "0x87954271e3de3f0b061c6469d038108aac36f148c3c97aefb24bf1d3563f342ea6c1c1c44c703e1587a801708a5e03f8", - "0x86b6f5367e04c5caa3ec95fd5678c0df650371edac68f8719910adf1c3b9df902cc709a2bddc4b6dde334568ca8f98ac", - "0xa95fed2895a035811a5fee66ca796fdecce1157481dd422f8427033ed50c559692908d05f39cb6bea5b17f78a924633c", - "0x8ba05bdadde08a6592a506ea438dbdc3211b97ea853d1ad995681a1065ececce80f954552b1685ef8def4d2d6a72e279", - "0x90b6b7494687923e9c5eb350e4b4b2e2fa362764d9a9d2ebb60ee2ad15b761e0850c9a293123cf2ef74d087693e41015", - "0x8819ea00c5ea7b960eb96ab56a18c10a41fd77e150ab6c409258bc7f88a8d718d053e8f6cb5879825b86563e8740808d", - "0x91e42031d866a6c7b4fd336a2ae25da28f8bde7ace6ff15dc509708b693327884e270d889fff725e6403914546055c28", - "0x85763642052f21cf1d8bd15fd2dc0c2b91bba076751e4c4f7a31fbdb28787b4c6a74d434d6ef58b10f3ad5cde53ef56d", - "0x8b61c36c7342a1967a1e7b4c01cddf4dce0e2025bc4a4a827c64994825f53e45277550ceb73c34bb277323fb784aa3c6", - "0x80b9634a45c8b3770e993257bd14df6a17709243d5429969ab8b9a4645bf2a94f9b3cd3d759169887b4aa0eb50f4f78c", - "0xb5c44db9439dd8aa4edd151d95e48a25c1154e1525c337f97109f40131db81a4898344c8c3144c270bdc835c269b3477", - "0x863080fcbc227eea32d0dc844f42dc642fbda7efc398ab698be3a3c6f3bf8803dea6ba2b51fed6151f9522b4ab2a8722", - "0x8481e871129e9cb9d2d109c513cbba264053e75192e967f89659dcfcc1499de9ae7a1ac4f88f02289150231c70b4da01", - "0x834d8183698d3d2d1352c22c373222cb78d0f4c8cb15e0ad82073dde273b613515ebcd184aa020f48f8e6fc18f3e223c", - "0xa227e300f0c5bc1b8d9138411413d56c274cc014ae8747ec9713f3314d5fae48bb6f8cc896f232fd066182af12c924e4", - "0xab7242835e91ba273de1c21eb4fca8312bdda5b63b080888b96a67a819b50294a7f17a7dc0cd87fae5e7f34bc24c209a", - "0x86eb27c898a5d6c3618c3b8927acee195d45fe3f27b0991903520a26fb8021b279e2a8015fbbba5352223ae906c7c5d6", - "0xa61b1c200b0af25da8ad8e29f78d000a98683d1508ae92ee7f4326a7c88e0edb645b6cb5dde393ac74d322895e77ba24", - "0x887739318c710aae457b9fe709debff63bfbb3ffbbb48a582c758b45d6bf47a7d563f954b1f085c3bc633ffd68c93902", - "0xaacfcb0e2b0a868b1c41680487dc6600577ce00aa2edeee8c6141f4dc407217ddb4d37b79e7c9182258c750d12a91508", - "0xad8cd2cf5ccd350cd675a17f31b86a0e47499c6c4c11df640a5391bb10989c9c70df0a3ddeba9c89c51e15fedaf67644", - "0x8aba897d32c7ef615c4dfa9498436529c91c488a83efc07ba9600875c90c08b00f66a51469eb901451b6e18e7f38ffd7", - "0xaab8a600609b80e36b4a6772308bac77929a0c5d8d92bbc38e9999186a1c2bfdbef4f7a2b1efba9c17a68dc15a9373ab", - "0xb95811d1454307a30c2ac8588c8104804b06c1aec783fed75a6f12c9df626be57865850100f1ad28073e3867aca941cf", - "0x8b119d3bd4ee644469457df5d8a0020fd99b8b20bd65ab121cf95a7f55e50dd8945fcf1dff9d269d9d0b74b4edbc7726", - "0xa980b912df832ea09353fd755aa3eec9eb4cfd07ca04387f02a27feab26efa036fca54cc290bb0c04a8a42fdfd94ce2f", - "0x91288e84da1d4ee2a4dad2df712544da3a098fdb06a5470c981fb6d6f3dcc1c141b6f426d6196ff3df6f551287179820", - "0x98b0473bcffcbd478fd1b49895c61dd2311dab3cdec84f8e3402f8add126c439ffcb09cae3b7f8523754090d8487b5a9", - "0xabe76988cf3065801f62a1eb3cfe9f8185bd6ab6f126c1b4b4fde497ca9118d02a0db3fadccd4ca98826b30475fa67ef", - "0x94a316a0faa177273574e9e31989576a43e9feb4cc0f67aa14d5c1967c4e10fc99db3ef4fdca2e63800a0b75f4b84256", - "0x975ad39adadc7e69e34981be2e5dc379b325dc24dddacc0bb22311ff4a551a0020a8bdecf8ab8ac5830ca651b7b630ce", - "0x8b3bc73b640dc80ac828541b723a968fb1b51a70fa05872b5db2c2f9b16242c5fe2e8d1d01a1dbeaac67262e0088b7b0", - "0xaa8d892a6c23dbc028aae82c1534acb430a1e7891b2a9337cedb913ff286da5715209cffb4a11008eae2578f072836cb", - "0x8dee9747a3ae8ed43ce47d3b4db24905c651663e0f70e2d6d2ddb84841272848a1106c1aa6ba7800c5a9693c8ac2804e", - "0x81e2c651b8b448f7b2319173ecdc35005c2180a1263e685a7e3a8af05e27d57ec96d1b2af2cae4e16f6382b9f6ec917c", - "0x98a9a47635de61462943f4a9098747a9cf6a9072a6d71903d2173d17c073eff3fc59b2db4168515be31e6867210ecbcd", - "0x912b2398505c45b0bb4a749c3f690b1553b76f580b57007f82f7f6cce4fadd290d6df9048258978c8a95ef9c751a59a2", - "0x8ac8f0893fe642111ef98ae4e7b6378313a12041bbca52141e94d23152f78c2e4747ae50521fc9c5874f5eb06976e5cf", - "0x946b4a8eb05b529aaed56ac05e7abeb307b186a7835623fa4e85ed9eb41a4910663c09ea1bd932a2c467d28776b67811", - "0xa4be51abeddd40e1da6fdb395d1c741244988ff30e10705417b508574b32dce14d08b464486114709339549794df9254", - "0xb33b6b7d66cb013e7afeabbd7ed1e0734eb0364afe4f0f4c3093938eec15f808985fb7f3976969bf059fa95f4d8e335b", - "0xa808adbcf0049f394914482483ee0f711d9a865615ff39b5313ed997f7a0d202ad9ed6e6de5be8a5c1aaafe61df84bca", - "0x8856268be15a78465ad00b495162dc14f28d4ef4dcf2b5cba4f383472363716f66dabc961a6dbdda396e900551411e41", - "0xb16ba931e570e1bf124ea3bd3bdf79aed8aa556697ea333e6a7d3f11d41538f98dcde893d0d9ba7050442f1515fb83b1", - "0x91ecde1864c1a9c950fd28fa4c160958246b6f0aa9dda2a442f7222641433f1592d38763c77d3f036a3dbb535b8c6d8f", - "0x92cda991f69fbf8e55c6bf281b07fff5dbbb79d1222b8c55686480669247b60212aac27aa7cccd12fcee94e7a759b8af", - "0xb1d9b5b4e996b375d505d7250a54c12d32372c004a9cabf1497899054cb8b5584b1cef1105f87b6e97603ccbf2035260", - "0x86e98bde8b484fb809b100f150199f13a70c80813ad8b673bf38e291595e2e362ad1fa6470d07d6fbe2cf7aeac08effc", - "0xaa12f7c39ba0597a8b15405057822e083aca3cee6ed30c4e0861eeb22620823588d96c97bb1c3776b711041c4dc3d85d", - "0xb477b34f29334f3bae69c7781d574342b7c27326088f9a622559ab93075c7357953ae84eb40e3421f453e04e9b4d5877", - "0x9625067cb2120ce8220a469900aa1d1bb10db8fe1609988786b07eb2b88e0ddb35a3eccd4b6741e1fa2365c0db6b1134", - "0x997b92af7765f587d70ea9718e78a05498cd523fc675ad7b0e54a4aae75fbeac55d0c8d72471471439dacd5bfcfae78d", - "0x88b59eaea802e6a2cf0c0075bf3fd6891515adcb9adf480b793f87f1e38d2188c5ed61ac83d16268182771237047ec8a", - "0xa57d078b230b1532c706a81eaabfef190fb3eb2932f4764631e916a0f0d837d6014da84ede100abaf610519b01054976", - "0x94ed5c5b96f6afa9f2d5e57e1c847ae711839126ab6efb4b0cf10c4564ff63c819d206fdc706178eb6a0301df2434c01", - "0x980296511019c86cc32212bad6e4a77bc5668b82a2321a1ecabc759a8bbc516183a4787c7f75f9ee7f1338691dc426cc", - "0xb10ef97db257343474601fd95f9016c205e28bd22bf7b8f9e30c3b14aca1cc9a11e6404ff412ef269c55fb101fee5a37", - "0xb670d5d9c77fc6aa14212dd3eae100620f3510031b11a9625aa40bf31835c9fd717753b555bd159b1aa64a2104929340", - "0x862054fabf6d6d529a7584d1a48f72d2eb216caf959c782ec36c69c26aef4595415d19a28b041946811b34a629105241", - "0xae4bf2ccd7b0f3774653848b5b4d39e5517dcbcff30d8441d78bc387ff42b573f16b7b0a7366e6ca5cef1dd9f0816df9", - "0x8f810527badcb49f1542a0ccd12e3541efa084243f7106eae003458c176f4c1f01daae9d4a073c2cb2aced747e8a4576", - "0x8a32c2067aaf6baf32db67acd4974a22a6da33db5444028a7c8c4135f9c84e102dc3b2c635b15afa6dc907d0270daffb", - "0xb15fc057f306a60b20c8487125b6b334ab749cf70eb8a30c962f625bb203ebd0d2a315949ee3b7a99e3d91acec384806", - "0xa37f145d321359b21cba7be8b64dfae7c67a20b7b324f27c9db172d58e77a49fa02ed3d06d09d7644bf1fd81f4aab44b", - "0xb338d2e39a485ee4297adcf5e58e16c3cc331c5dffeade0be190907c1c5bdfed38537a6d81dc39a2cdfc1bc45e677886", - "0xb69d84d8511b3aedfdc7c7e66f68b24e12e5a2365dbbe014bddd2e99e54143428cf8b74cf12c0e71316038aa5300e87e", - "0xab210cc38661667450561a1857337879633f5d5bf2c434a3df74ff67f5c3ba69a7880872f19ae4dcbbb426462cd7d0fb", - "0x94538ef487a58a5ff93a5e9616494c5f066715d02be5b249d881a00bd0edfe2fe19dd7a5daa27f043d1dbb5ac69cf58d", - "0xafb47a899c1b25fe800241635fa05de9687a69722802ad45434f551971df91d8ca9edda0d835d82eb8f36ff9378ed7e8", - "0x827a10d7536230887283a9b1dedccc6b95ef89cb883c4ee7b9821058b0f559704d1636670c0ada2b253bf60b7cb8a820", - "0x97cc07965065d64409f19fb2c833b89ca3a249694b16b58818a6f49d3800926627ce0f87e5c0853ae868b4699cfdee5e", - "0xae0c93d44780ef48ea537cf4cb8713fd49227f4b233bc074e339d754b5953e637a7289c6f965162701e4b64e4eaec26d", - "0x80953053397c4c0ba9b8e434707f183f9ced2a4c00d5c83b7dc204e247ad7febc1855daeb906c53abfdf3fe3caca30c4", - "0x80f017e87b471b5216ebe25d807be6c027614572337f59f0b19d2d1f3125537478cb58e148f3f29b94985eac526cd92f", - "0x8a8e1c0d49801a8dd97e9e7c6955fc8b2c163a63bd6a4be90bb13e7809bb0dddc7a5025cc7d289a165d24048eac4e496", - "0x8530e5b5c551a2e513d04e046672902c29e3bb3436b54869c6dea21bab872d84c4b90465de25dff58669c87c4c7d2292", - "0xae3589d389766b94428e9bde35e937ed11aac7ead3ce1b8efe4916c9bfff231d83b7e904fe203884825b41022988897a", - "0xac02e629a900438350dd0df7134dfa33e3624169a5386ea7411177b40aa7a638e8d8aef8a528535efdbe1ca549911c0b", - "0xb1ac60b7270e789422c3871db0fa6c52946d709087b3b82e6eba0d54f478520b1dc366bb8b7f00ff4cf76e065c4146eb", - "0xa7465e1f8e57de1a087144d3c735fee2b8213fcbf2b9e987bb33c2d4f811de237bf007402e8d7f895563e88b864f7933", - "0x8ab0007ba8984dee8695ec831d3c07524c5d253e04ec074f4d9f8bd36e076b7160eb150d33d15de5dd6e6fb94f709006", - "0x9605bbe98dadd29504ce13078c1891eca955f08f366e681d8b5c691eadb74d6b1f2620220b823f90ef72eb4ab7098e16", - "0x942a083d07c9cb7f415fedef01e86af4019b14ef72d8ab39fe6bd474f61ba444b9aac7776bea7e975724adb737e6337a", - "0xb9a49a8c4e210022d013b42363ac3609f90ea94b111af014f2c5754fbc2270f6846fa6a8deb81b1513bb8a5d442ea8dc", - "0x99cd62b177d5d7ce922e980cc891b4f0a5a8fa5b96dfc3204673fbef2e7fb2d7553bbacd7b2e6eca4efb5e9a86096e2e", - "0x94e30b65b3edd7472111566dde7fab0e39a17e1f462686050f7134c7d3897e977550faf00174748cbeaec6c9c928baa8", - "0xa32fbcb29f3391d62092f2720e92b6ef4d687d8a3eae39395e0464669a64a38fe21a887f60bc9519d831b9efde27f0f4", - "0x8f1492c4890d8f9deecb4adada35656e078754dcf40b81291e7ef9666d11ba3747a478f9420a17409d7d242cecd2808f", - "0x8942960b319ef65812d74cb1d08a492334db58d41e8437e83ddf32e387d9f3ad36834f59e6a71d1afb31263773c3ec49", - "0x88d692f4976c99e763b027df9c2d95744d224724041dfbe35afc78b1f12626db60b9d0056b3673af3a1741eaf5f61b43", - "0x9920cd37eab256108249a34d3f1cc487829cc5f16d1bce3a2328fe48b4de735ebde56c8b5cf4e532a4d68792387257c5", - "0x87d34c9f5a913b806504a458c843eda9f00ff02ad982142543aa85551208cab36ebf8b3409f1c566a09a60001891a921", - "0xa2ee8339c96f790b3cf86435860219322428b03ea7909784f750fe222bc99128d1da2670ad0b1f45e71a6856c7744e09", - "0x84bd257f755de6e729cc3798777c8e688da0251a2c66d7ba2e0ce5470414db607f94572f5559f55648373ce70e0b560e", - "0x8d0e170714ddf5dde98b670846307ab7346d623f7e504874bfd19fbf2a96c85e91351ba198d09caa63489552b708fbc8", - "0x9484cc95d64f5a913ed15d380c2301a74da3d489b8689f92c03c6109a99f7431feb8a07d9f39905dcef25a8e04bcec9b", - "0xb14685f67dd781f8ef3f20b4370e8a77fef558aa212982f1014f14b1bdd8b375c8a782d1b8c79efc31b41eec5aa10731", - "0xb22fb1541aa7d2b792aa25d335d66e364193fdbf51b24a90677191cae443f0ce40a52faf5983d2cb5f91f0b62a5f20e1", - "0xb06fa9489123ab7209d85e8c34d7122eb0c35c88ee6c4c5e8ae03a5f1ae7c497c859b0d62e0e91f5e549952330aa95a4", - "0xb5cd71617ff848178650e6f54836d83947714d2e074d8954cfb361d9a01e578e8537d4a42eb345031e3566c294813f73", - "0x848d39ea2975d5de89125a5cbe421496d32414032c1e2fbc96af33501d3062745b94e27dfe1798acaf9626eabff66c79", - "0xad35955efd5a7b6d06b15d8738c32067ffa7dd21cf24afc8ea4772e11b79b657af706ce58a7adcc3947e026768d9cdaf", - "0xaff6d7c4861ff06da7cb9252e3bd447309ad553b2f529200df304953f76b712ac8b24925cf4d80a80b1adaa2396f259a", - "0xb4b88d35e03b7404fc14880b029c188feecb4d712057f7ba9dedb77a25d4023e5a2eb29c408fde2c0329718bdaf1ff63", - "0x88e96720e2f7c63236cca923e017ca665b867ba363bc72e653830caf585d802fad485199055b5dba94a4af2c3130a6f6", - "0x982675dc0299aeedba4b122b9b5f523ca06d54dc35da0f21b24f7c56c07f4280265fb64cec2f130993521272c3470504", - "0x95c77d418490e7e28293169cf7a491a7dcc138362f444c65b75d245c1b986d67c9e979a43c6bd8634dae3052df975124", - "0x8fd6c4dff54fb2edc0bdd44ccd1f18238c145859ccd40fbfbc1cf485264445b9d55ffd4089c31a9c7a0543cc411a0398", - "0xb153eb30af9807b5fe05d99735c97471d369c8a1af06b2e2f0b903b991eb787ab5a88c6e406e86225582acf8186ad5ef", - "0x826b55de54496751b0134583b35c0c2049b38de82821177e893feeeeb76ceeb747c7a18312cb79a6fc52f2c18f62f33e", - "0x91650d7205b232c495f1386bea0c36e136a22b645ffd4f5207f5870b9ce329c44524781c983adf2769f4c05b28a8f385", - "0xb8d51a39162ebb38625e341caacc030913f7971f178b3eee62dc96f979495a94763ea52152198919c6dd4733bc234f64", - "0xa1fbd3673f2ae18a61e402fe3129b7506d9142f2baca78f461579a99183c596b17d65821f00d797519e9d3c44884d8a6", - "0xb7c5f5407263398cf0ed3f0cf3e6fcebdd05c4b8fd4656a152cedcdbf9204315f265fd8a34a2206131585fad978a0d6c", - "0x94fa71804e90f0e530a3f2853164bc90929af242e8703671aa33d2baad57928f5336e67c9efdcbd92c5e32a220b4df07", - "0xb75dcea5ad5e3ed9d49062713c158ebc244c2e4455e7a930239998b16836b737dd632a00664fded275abe4f40a286952", - "0xa02f7b37fc30874898618bfcc5b8ff8d85ef19f455f2120c36f4014549d68a60a0473ddfd294530dfd47f87fbd5e992d", - "0x8b48e1626917b8ba70c945fe0d92d65cab0609f0a1371fd6614d262d49fe037f96991c697904d02031ec47aab4b32f48", - "0xb368f02c21d4af59c4d11027e583ca03ef727f2b2b7918ef623f529ceac76753a05a4ce724ce2e018da6ecc5c1c1261b", - "0xa95cba06eeae3b846fc19a36d840cbcf8036c6b0dc8c2a090afcf3434aaf5f51ef5d14b1e9189b1d8f6e4961bf39bbf8", - "0xb32ca4dfbeb1d3114163152361754e97d3300e0647d255c34ec3025d867ed99e36d67ebafe8255b8c29be41864c08edc", - "0x8e4eddefa27d4fe581f331314d203a6a0417c481085134d8376898f9260f133e2bf48576528d62adf29953ad303e63a7", - "0x92b7d5505833f00d5901ae16c87af028de6921c2d1752a4d08a594eb15446756ea905b0036ae6ffe6b8374e85eb49348", - "0xb50e9018d3c4e05ba9b28b74b6634043f622d06aa8123da7cd0bc482b3131912149214d51bdfd887484422e143c3c1c0", - "0xab980a2f5317dfcb92baa4e2b3eb64a9ac2a755da6c11094d57e781ae5cf43e351824f1dd3abb4c6df75065b3784210b", - "0xaaabb009dfcb0bae65a0aee26ed74872c226965c52a6ed0998209e020a9ee806297dba4b15845cf61e1a514de5d125db", - "0xa1fe78f67000ebb6e90fe33e1a9dd5489be6e15fedb93b2a37a961932b77137fe85d46e89a132ecf7bcfb7aa95e16757", - "0x85bc6e7d660180de2803d87b19ed719d3f195ea0a92baf9bfff6113c743f4237f51355b048549913e95be8ddf237864d", - "0x87a167968c4973105710e6d24ad550302ee47fe1f5079d0f9f9d49f829b9f5c1cd65d832d10fe63533e9ad1fa0ad20f5", - "0xb2ad1a7b95b8a89d58e0b05c8b04ae6b21b571d035ae56dc935f673d2813418e21a271cccaf9d03f0d6fa311f512d28c", - "0x8268e555319992d5ac50cb457516bd80c69888d4afa5795fcc693d48a297034f51e79f877487b6f7219cfdd34f373e14", - "0xb235411f1f6d89de3898642f9f110811e82b04ad7e960d1dd66ec7a9bf21de60e00cfabcd3004f3b5c4f89f5d9c7422a", - "0xb6963effcfe883f7ed782a3df3c40edd70f54ceca551859bcccb5d3e28fd2c1fcbdd7acc7af24a104687fd02b53c704d", - "0x862645c944e1e2909b941578cc5071afd7353fed1c2c99517e2de7573037704ef5d35accf6ec79b8269da27564209d50", - "0x90f585eeb1a053e2f18c1280c9d6a561c0bc510b5f43cd68370ed6daac4b3749852b66c371397b6a7c1ece05ee5906c9", - "0x876d9a3686feb79ce781e87ac3e3fbeef747b6ab031285e808c8a73f73f55b44507850dcaa745c0791d2cae8ad61d74e", - "0xa7ecc3b8c10de41a7bd9527228a0d3b695a651a5b5cb552a3664a887077d39ee60e649aecd68ed630da6288d9c3074ad", - "0x83529f1f2b4dc731ea05c1ee602fa2e4c3eebe2f963f3625959ba47657be30716d64e05e8b7e645a98bf71c237d9c189", - "0x834ca6b14428c30a4bc8d5a795596820af6f3606f85bee9f3008f3fb94b3adffa968d21a29e2588d7a473d8b5d3a8b42", - "0xb8d08cd8b73430984fd16e8db0525ae2b76253c92cccd7b3470add4d12d082eafb55a72bde04870924d0bdaf61f76c5d", - "0x96ef32df669690c2391f82136fc720231e4a185c90ba79eef7beaadedf7fbeb56ed264825564bdc7da01829b47f4aa88", - "0x93d637b2f04d71891a80a1ee93fd9c9046d671bc4c15c4e597cfcc36f4ae85a7efc111359628965fd10d36c39129b160", - "0x89f28dd3f7bc43749d0e3750c136385d4ffaf2c40354d3be38341416d755de7886d8108d83721b36f99feb3bccd73c88", - "0xac6392e274659f4c293e5cb19859828f101959c4c0939920a8dfed0e2df24a0cbf89a7aa983e947318c58791c893928e", - "0x83b2d4ce42c2fa0f672cd911365d1f1a3e19f1c38f32bedc82820ad665d83ae5fac4068e4eca6907bd116898966fed92", - "0xb5e0144d6e59a9d178d4ee9f8c5dba18d22747fcdf8dc4d96d4596a6e048e384cd1e211065f34109c9ed6b96010d37e5", - "0xb1a65e6b38c9e84b3937404d5b86c803c2dac2b369a97cbf532cfdd9478ee7972cf42677296ad23a094da748d910bc48", - "0x849d7f012df85c4c881b4d5c5859ab3fb12407b3258799cfc2cb0a48ae07305923d7c984ff168b3e7166698368a0653d", - "0x84d9b7ee22bf4e779c5b1dd5f2d378ef74878899e9dbb475dfdcd30c2d13460f97f71c2e142c4442160b467a84f1c57d", - "0x964e497ef289fac7e67673a6cb0e6f0462cd27fc417479ecb5eb882e83be594977fb0c15a360418886aece1aaf9f4828", - "0xae1226222098a38ce71f88ab72de6ededb2497e30580e7ae63d4829dcc9c093bdd486102b7a7441cb06253cf0df93772", - "0xa72865b66d79009b759022e53b9eedbd647ff4b1aab5d98b188100d01fc6b5d8c02b80eb6f53dc686f1fdda47d4722b8", - "0x93aa8d7d8400bdfa736521133c8485c973d6d989ec0a81db503074fe46957a3999880fd9e4e7f44de92adf6ac0abe99b", - "0xa75e5ab84399962ada1f9ebcfc29f64405a1b17cd0a983950d0595b17f66386393d95a5aa4c6c878408984141625141c", - "0x91b1e5e75f4b55ec2e8f922897537082a1414eedc2bc92608376a626d8752d5d94f22f0e78ea1970eb0e7969874ad203", - "0x83bf9c308424ef4711bfa2324d722f550d95f37d7f7b4de0487ccf952b89d7219ca94e7fa25bee60309efefd9a0e4716", - "0xa42060476c425ff7979456d3c5484bc205fb1ef2d7149554a4d483d48e2a19119f708c263e902943bcf20a47e6c7d605", - "0x8170c45ea126e6367aa5f4a44b27f7489a5dd50202cb7c69f27a2bdf86d22cf6b00613b0080d75fca22439eeaaaa9707", - "0x8e5a82da70617697e42c6b829e1889b550c9d481408fe4cf8dc9d01daccabdec01f9e1b8c27dc84902a615d539bf9bc6", - "0x80606c51401d0bf5f2700ebce694c807ab1f7d668920bdcccef2775e0939472419a8f404567bd4f9355095517eb4d628", - "0xa40314565d60d0ddf8995673e8c643b1baa77a143b3d29433263730a6871032260abc1320e95af8287b90aa316133da0", - "0xa87e07e84435f9e8a51ce155cd3096aa4b20d18e493c9dcbc0ac997ac180f3a255bf68ccd8195f2564d35ec60551a628", - "0x84d2ab98416643c457bf7ddd9f1aa82967ecea189db08f3558f56803fe7001693ed67ec6ca8574c81ec1293b84a7c542", - "0x937c3b955889ceae77f28054ce53d75f33cfe3a04f28e049cea8b8ade2a0440d5e2e8c4f377e6c1ae2115d68cc95fc16", - "0x885a911f16845fe587b15ce7cd18cc2a84295bf609732340f74e0f5275b698cffed3e9aa1440e19e6940a7fa8f24c89c", - "0xad90059a50c399996aaa0a10a8f637b7bab0dd5d9100301f0159a2c816596da55c30b2568d1717705fd2826b117a42d6", - "0x828de9ff1e095c189da1f1ee18009afe14613ac696025add6f4e330488e02d5f1a90be69edd9a17bfb3355a0ca77b525", - "0xb7aedb8394064a58dd802be6457555c0cf7b94805ed00cc66f38449773f4b1865feaee3a6f166eb51b2123b89d853a4d", - "0xb09c564ff37ccea34e90f2d50a40919a94c2e10d4fa58ffeaed656f88f9f4ae712d51c751b1b8f443dc6c9506d442301", - "0xb24882d66b2ebb0271ebb939c72308d81f653940e70d6f1bcaae352f829134aff7f37522cc42de9e7fe6243db2c4806f", - "0x8e6f8dd906e0d4eb8d883f527e926ad1d8156b500c4cfa27214450c8112267c319900de2443c87bed1e4bb4466297dd5", - "0xae42f4578e8d79b6aa2dca422ada767e63553a5ee913ff09cb18918116905b68f365720a1a8c54c62cce4475ba5cdd47", - "0xade639bcd5017ea83ec84689874175ed9835c91f4ec858039948010a50c2b62abc46b9aee66a26bf9387ab78f968b73e", - "0x8d310a57aeb123cc895ee2fd37edc3e36ce12743f1a794ad0e1a46d0f5e4c9a68b3f128719ed003e010f717ec8949f43", - "0x8606c086fcf3e2f92c1b483f7e2a4d034f08aef1a9d5db9e8a598718e544b82544268a0a54dfed65b4d0e6027a901d47", - "0x8ccd95dd673d8cfdfa5554c61bcdbe6bb5b026403a320856fe51571e7c59504fe1c035f2ad87d67827339d84c0e1a0c6", - "0x955a7cb4afcf70f2eb78756fc3a82e85ab4330eb89a87117294809beb197d1d474001e25306e8ad71daab6928abf6d64", - "0xae6b44ec6294736ea853ddeb18fc00cce0ac63b38170ff0416a7825cd9a0450e2f2b340d27a7f2e9c5ac479b4cb8a5fe", - "0xa88ec3f12b7020dd593c54376597b056e70c772c0ec62c24c5bfd258b02f772161b66e5dcd95c0c0fceb23433df9ff23", - "0xb4a83933b4de552dba45eedf3711f32714e58ae41d4dab8a6114daeb06e90a5a5732c70384150d04124ac6936ca9804b", - "0xb8b7c4fa549b0fa1dc9c1f0af0750d6573f1648767751882d41f0dd7e430e3934590757e1c8b436ac35381bdde808117", - "0xab598b911234a98cfde07234cfc0d2fddfc5cb9ea760212aa3e175a787ce012965c8fcfdf52d30347f5f1b79cf4a0f54", - "0xa9d354f9dfbd1976e5921dd80cbb56b2e15df53ce099ecb4368eff416998130d7830209282aaf1d4354129845f47eb80", - "0x8c889afff546c721969e4d8aae6e6716ad7c2e9c1914dd650e30419ee77d630efb54dfffb4ec4ff487687b1864bf5667", - "0x94ed2fa79116c7c8c554dc306b1617834dd3eab58baf8f0d085132c4688ca4a6bd38420281283678b38970a3f02b9a94", - "0x944fdc8f0516d22f1672193d183833d3e3b043e26807fb2123729a0216c299785b1c4e24b5aa56e9bbe74fa54d43e22a", - "0xa48521454a3e0c10a13d8e810fad9d0522c68eea841821a8e0e57811362f7064a8f9c50f79c780a02df7df8c277feaef", - "0x8f3d26670ab55e1bd63144e785203373b2b13b76cac305f0363e48a6339fac3364caa3fceb245527161fc2fac9890912", - "0xb4d6fe71001cb4141f6d8174dd7586d617cfccb54471e1fbce30debc2b1dead62cab29565abb140b682811c6231acb03", - "0x91dc8afc4934fcc53ef851462a055cc1c3c87d7d767e128806891738427606d2fbfa832664d2a7f95f8ffe2cf0c44dc6", - "0xb297eb432c74071764272c1b1663547ba753e66bf026643bfc0e42a9c5cdfb05a88083ad67d6ddfe6ab290678c607b29", - "0xb343d1df85be154faeb5b21741a5ac454ca93f70a0b83a98f5901d1be173a1b2969d43e646363c5d4975924e1912599e", - "0xb2d74a66e4dfc41128aee6a3f0ff1e5137a953ed7a2a0ab5a08d7ea75642f12bd150b965c8f786ad0caf55ef7c26be4f", - "0xa54141faa8dd9a567c3cd507e4fc9057535ffe352fa1e8a311538fe17e4a72df073fbf9371523e5390303db02321650e", - "0x8e229a58f1acc641202d2a7c7e120210b9924e048603b9f785a9787ad4688294140ef3f4508c8c332d2dedafff2485be", - "0x9523554c11d39b56e6a38b3b0fadb7a9a32a73c55e455efdcfda923aff1e9f457d1b7cbc859b5ecbb03094eae8b87d38", - "0xa199ffdff1812aaea10cd21a02b3e7bf3d8e80e501aa20bb2105b5f4cb3d37265abcda4fd4c298d6c555e43fa34517f8", - "0x97f1285229b07f6f9acd84559afef5daad4320de633c9898b8068c6cb3b19b4468b4445607559ddf719f97d2410e2872", - "0xa1dfff82908c90fc38ec7108c484735f104e6ce7f06097e1e80f6545702b6a0bc2a2706203cd85162edb7e9294fdedba", - "0xb12a706311c617d6c19e964e296072afce520c2711086b827cff43a18e26577e103434c0086d9d880c709df53947b48c", - "0x88503a6f48cef2f5cd3efa96a5aacc85dc3712a3b9abbb720a2cff582a6ea3c2afc49288b6832c8599f894950843ac11", - "0x83ed63e38dfbe062fe8c7e6bc2eeb5a116f1cc505c6b038990038de6051281f9062e761ea882906ccff69c9c5b8a4a25", - "0x911090d5d0231dde1189408dca939daddcb69a812ac408d1326060f0220781bcc131c9229e6015540f529d9fb33d9b0a", - "0x8a8352f1d9e5c7e80276e4448f997d420d5a7e0e2d5be58ae4106f47f867d1caa478b2e714d9c3263e93e5cc4c7be08b", - "0x9362f1ea9995f9b3850ebb7c8d5bf95927ab5ea25ee00e85d7456b3bf54459798b1fffde049d445c0d0587b0ab0a1694", - "0x8859502b391273f4a00b6c0e87e5cdae676b7baf6c402f12b3360db6a5dfb4931ece4da0e1e4d98c7a71c3d01a183a9b", - "0xa9a5edf474120f9bbec9485d8b1e6f83be68b10de3d765219b0bf3e5d2840e478f1fb2bf806d78a8b8ad22ec50cf7555", - "0x82c75daf983b06e49f0d75a042dfaae8cc92af050293d9059d6e8b01ca3ab2597e7adfc1159ed805513488944e739fa5", - "0xa5cf240f04a9bfa65b811702c923d209e01f9535e217fa55ae3e0d1eb3257d6749e5587e727091e860609d1df29a1305", - "0x95608ab8ade1c9fb814bad78d9cc99a36ad3e9562d5319830e4611ceea508ef76be04639294be9062f938667e33bce6e", - "0x8e44181f35c38b02133473de15560ae6588ac744cfdaf5cdfc34f30ca8e5ff6c85eb67dddc1c7d764f96ed7717c89f06", - "0x8007b6ddece0646b7e9b694931a6a59e65a5660c723ebdffb036cf3eb4564177725b1e858ed8bc8561220e9352f23166", - "0xa2d9d10fa3879de69c2a5325f31d36e26a7fb789dc3058ee12e6ccdda3394b8b33f6287ba1699fce7989d81f51390465", - "0x81993d0806f877ca59d7ffa97bd9b90c4ebf16455ea44b9fe894323c8de036c5cc64eacf3f53b51461f18fa701a5860d", - "0xa20030f457874d903b2940ec32fa482410efecb8a20e93f7406fc55ab444e6c93fa46561786e40e9bf1e3c7d5d130bc8", - "0x80c72d4985346ac71a231e7bbbb3e4a91bf50142af0927e8eb86069303eb4ce7fca1aa5b919d5efc82f2f09b41949acb", - "0x91b857d2f47f1408494940281127ba4b9ac93525788e700889aa43402eedea002e70eded017f5f5263741ed3ee53a36c", - "0x97445d007f08e285ea7f4d25e34890e955dac97448f87d8baa408e826763c06cbd58dd26416ba038d6c28f55bcea2d3a", - "0xa409c89526c2886f6a6439e2cd477351fc7f886d1a48acc221d628e11895a4eedd426112a368a0dbd02440cd577880a8", - "0xa2c6adc7866535f6ffc29e00be4a20fa301357e1b86dff6df5f8b395ad9fb1cdc981ff3f101a1d66672b9b22bd94ec0f", - "0x8887fc53ffc45e4335778325463b3242190f65ae5d086c294a1dd587f62dd0d6dc57ca0c784bf1acaa5bbba996af201c", - "0x9731d3261a7a0e8c7d2b11886cd7c0b6bb1f5c57816944cc146caa518565034cea250eeee44ddffaeb6e818c6b519f4d", - "0xafe91c706efb9ee9e9c871e46abde63573baa8b2ea2b61e426cd70d25de3cc8b46d94c142749094287a71f4dfadd3507", - "0xae7bdf6ecc4fc0d8d8a7fa7159aae063d035f96ca5a06b6438b6562a4eee2b48d9024dbe0a54cfd075eac39b7a517f2b", - "0xa382e5205bfa21a6259f42e9ebc11406b5da2aad47f7a722212fdd6fef39117dd158a9991ff95e82efa0826625168a1c", - "0x862760c80bf44c2d41c2a9a15c887889eaeea32acc894f92167fb6f72593377c228499f445ccb59794415597f038ac9e", - "0xb4e96595a91a611c4563d09f29a136a4c04f07be74dd71a6bbabc836617ecb95494e48971a8229f980b2189fd108d2e5", - "0xb5e7200357317c36244c2e902de660d3c86774f7da348aca126e2fc2e2ba765fa0facd29eebcb3db3d306260e91a6739", - "0xa64c7133156afee0613701189c37c1362e2b4414f7e99408e66370680c554de67832c30c211c2c678dab5cfcdcecb3f7", - "0x88f4cb67b1db497a91a0823ee3541378133eb98777842d73e43ab99efe8aa52fa02dfb611c1691be23684618394988d6", - "0x89a9382a147d7387d0ff9516ee0c75cd1f8ee23333f4a2c9693d1a8cbe03680bc5b10c43c238c2190db746cac409bf39", - "0xad510bcc067373d40b05a830bf96fac5487de1ad5b708a13f62484c09b00fba6c5b00b981004e5ab3f28e55c9a5bce26", - "0x8384156d7117675547279ad40dc6bf81e8f9a57b2d8cfebeea6b9cd1d8534dc0cf704068bc3ba0815010cd8731d93932", - "0xa818fb76e53165b2f86c7f2317d64cf5e45f48405a34560983cd88bfbd48369e258ce2952233a8ce09c464e07afcade6", - "0xab19a4ed90527e30796064634b66cdc023bc5966e2c282468f5abef7879fc52986d5bb873a796b077d10e7b374b60309", - "0xa17dafe2484d633fe295f8533662631b0bb93cdb4e7cd6115271f20336f602f7f8b073983cd23115093c7f9891c4eef5", - "0x804acbc149d0334c0b505a8b04f99c455a01592a12f64d1ec3b82b2f053ccc4107e47f418f813d6f400940c7c8700a4a", - "0x965e097a825d8511d095b247554ec736bcb3701ead3ba785bd425cbabd56f4b989764e0965a437fa63e7e16efd991fc0", - "0xb6701675ca27d7a4084f06f89bd61a250b4a292ee0521b2a857c88c32b75f2a70b97f98abce563a25d57555b631844e0", - "0xabbdf65fcbdf7d6551ccd8d6e5edc556f1ecd275ccd87ee2bda8ea577c74615f725aa66e0911e76661a77f5278e0c2b9", - "0xab715ae372c900239a0758a3524e42063afc605b8fb72f884dc82ab9b0ff16715f3fb2fd06f20f15f9e454f73a34e668", - "0xb45f41ea1d25a90af80a8a67c45dea881775fed000538a15edc72e64c7aa435a5e4375dcdedc5c652397c02b0bc61b16", - "0x86f7be9252f8ed9078e642c31a70a09639899f7ffcd7faaf1a039fec8f37e1fa318fba0ed1097f54fc55d79900265478", - "0xa30e5ed4277dd94007d58d5a3dc2f8d3e729d14d33a83d23c44ddfc31c6eac3c6fe5eb13b5b4be81b6230cfd13517163", - "0x87e723d916f5fcda13fab337af80354e8efe6b1c09ae5a8ceeb52df45bfca618eb4bec95fefef3404671fb21e80bf9db", - "0xa521b8a04dc3abd3e9e0454b9a395b3638e5394dc2d60e97fda61b0a1880d1d73a64a4633f3d7acbd379bde113240d03", - "0x851686c79c5403d5f05fbaac4959fcbfdfb51151bec55e10481b3c16e3be019e449907ae782ca154f76a805543d5755d", - "0x8ec1929e746b6c62b0c3fdd8f4e255e5c707e6e0d8d57ff9e409ae2dd6e76fdb50af923749992cf92d1b5f2f770bafbc", - "0x9175f7b6820d47205c9e44f8c684833e1e81da46c1fdf918a4dcafbc3231173f68370d442a20e45f8902bcab76a4e259", - "0xb4f66c698115333b5ac00c9fe09aa9e1e9c943fbb4cce09c7d8a6ed4f030e5d97b48e944fd6d3e69ac70f1ae49d35332", - "0xb958878b875eead61a4416a4597b1c567ddbb1eaaa971033f4a656f01a277822c1f4ea3972045156c2a5a28d159f5ddf", - "0x8188de8ad5258024d0280137a40909d24748137ac7c045dddd2bc794eac8edd5850b9d38f568fa8174b2c0593bb57e96", - "0x91152c7bafce7a0358152221081bc065796fa4736bfc7d78076a0a6845287cde2ee2a2c9b96f500297c0a00410634888", - "0xa5328ab939a2d3bd4c21e5f3894c02986b6590ad551c7734be3f4e70380eb7bc19629e9031b886ce3b4074ee4edee63a", - "0x97c4d49db40e266bcedaacb55edca4e1ebf50294679b271f3a2332c841705089b5ba96ef2064040fa56c36bb1375a8d9", - "0x85cf0514f340f9d865b32415710d7451b9d50342dbf2c99a91a502a9691c24cd3403cb20d84809101cd534408ddf74e8", - "0x950c3d167f59f03f803dcba3f34fe841d40adc31e5be7eefff2103d84e77a7cbe4f14bd9c3dfa51cde71feb3468a9c00", - "0x96a69624e29c0fde3b92caf75a63ac0f3921e483f52e398652f27a1ec4e3cc3202f17af1f66224731bc736a25638d3e4", - "0xaeac4170cf4b967227f66212f25edc76157eb4fb44c84190b520ecc2946470c37da505790e225fd1b0682bef7fc12657", - "0xa94146a04e3662c50c2580ae1dba969cbb3fb0f43a038729c9e8be6ed45860b2c7de74f248dfa50ccdbe2ecaf3f2b201", - "0x917b8e2880e85b8db723631c539992ec42536146e7091d4a3f87d37f051b5da934d84393523814f19962c78e6cb12ef8", - "0x931f140ff8f7de79e399f5cd8503558d566b5c2ab41671724dd38aed08dd378210f01ac8fa9911f3047993dbc10cf8c4", - "0x859eb9b560bc36273694f8ae1a70d25e7f206013597c4855a11328162ba1254bb736f1ae41240c8ec8dea8db035e08f2", - "0xb4ad2cb2c3a3e6ab1e174f2dbfb1787a8544f3c9109215aa6d33265ef269455e3cde9858738b4fe04711a9cf9050e7d4", - "0x8a3b342b87b19c0cdb866afff60317e722013c02dee458ba71e7123edc8b5a9f308c533b9074c7dd0d684948467502d1", - "0x89185ac5cc5ea8f10a1f2a3eb968bb5867376d3cff98ef7560b9a0060206c4046ff7001be10b9e4d7ad0836178eba7e4", - "0x845f48301f25868f6d0f55b678eab1f8458e3321137dba02b4cfbb782cbc09f736a7585bf62f485e06a4e205b54a10b7", - "0x931a6c523d4a66b51efadb7eefadba15bf639d52d1df5026d81fd1734e7f8d5b51b3f815f4370b618747e3e8eb19699c", - "0x8eb3a64fa83dcd8dd2258942aea3f11e9cf8207f2fdd7617507c6dae5ea603f9c89f19d1a75d56eaa74305a1284ce047", - "0x912a5050ed6058221d780235fb0233207c546236316176a104a9761bc332323cf03786dbac196d80a9084790506e0a88", - "0x945fe10ec8dc5e51aa6f8ba7dace6f489449810f664484e572bfe30c2fe6b64229f3c8801e2eb1a9cb92ff3c4428cdf7", - "0xb62383bf99c7822efd659e3ef667efee67956c5150aea57e412cbd6cd470807dfaad65c857fada374c82fcfca2516ad1", - "0xa727a31c45b2970d08a37e169ea578c21484dde15cb11f9c94eaaf3736652619ce9d3a44e7431d50b0e75b658ebbc1da", - "0x97bf54ea9b84b82e4616027bd903ef6152439f1c6a8e1bae6db1d10fdf016af2cac10ff539845833dfd1ddad1403aa8c", - "0xa08cf36437e010e59b2057aedb7192e04b16f1cc66382cdef3490b7ad1544ae51f03e87cba0fe43a275841c247a2a0cf", - "0xacafab9fa28c1a607df2246490b630ddda1ecf0885ad24c2ecb2c2c1b7b9c7de8066714bf5b9b25f61981d08576789ec", - "0x851f0375128d2782586223467d0a595f4c5baa79616622a32f7d6ce1f08af06f8a109bd6527f88d93367dba17be661e8", - "0xa2f1187c2a7cbf776653ff834ed703dd32e68eaf36f0700709be929f4c0ce5fa1d9930d1e3ea2aa01c7a16239e66cb33", - "0xb3721f4a5d24ca112f020cb3f849543bf0e7f84b470fb00126ae80aaaa6f2c208d8359cd82ad9fbafd3ef2ac70656fb2", - "0x98773ac3ce9528c73cfd8e7b95976ce597f67e146357642ac4fb6cb35046f3f39cf6c4a7b5af5c7740dda358aa0d2d08", - "0x92c883a5d820541692af75be1b25dd4a50a4b91f39f367a551a7d5ad6065a26b60d68221a01e4950559717b559c2626a", - "0xb82e46dd25fd1234dad26fbcd8bb5177d7b87d79d362ffb9c2f6a5c16eb2ff324d135996fcd6274d919634597869d772", - "0x82a53ed356ced5e94d77ee2a7f6e63f2ad8240aff2d17c5012cf5d1f18512c88c24793339b565dfbb659bd7c48dcbcd2", - "0x84d20c7859b35a1cae1ff2b486d50822f9e6858b6a1f089ce4c598970e63e7c0f7dfbcb3337845e897a9dedf9d449dd3", - "0x974892e5cf5ee809e9353d00e9cd5253d04826a8989d30cf488528c5dcdcad7650e23b4d228c3eb81f6647d2035a9e02", - "0xb2327854910dbf3d97fe668da5fc507e179c4bc941f39bdd62e8b6035f004449c467240f656417e501f32dee109f0365", - "0x88888f73475613d45d0b441276b1dd55835b69adfb27e26c4186936dae047b85478cca56be8dc06107b89a28f3bbb707", - "0x836ba22e40511feff81a5dace3df54e2c822b55e66874dd1a73929994ec29909ffc2a8e39bfc2d16e316b621eb4a5ec6", - "0xa754cedcccf4165a8d998f326f3f37d2989f92ca36d9da066a153c4aab5a62bb0011896bcbf90f14c18e00488d4123bd", - "0x86c26fa9584314292c4b7d6fe315f65dadd0f811c699e6e45c95a7a4ea4886c57dc5417b67edd78e597d037c7689568e", - "0xb205589648aa49ef56637712490e6867aa3b85b2b31e91437a249fb51bdb31401bff57b865c9e27293b30014b4604246", - "0xafab0843ede582e5a1898ee266235066b94ea378884eaf34919ceaacc0e2738e1074b6ed41e0a1dd9711563e24f0215d", - "0x996ed65fbcab7611eada5bd0fd592d3e44705098b8b1dfba6dcdbdcfa1382fe893fa55270a0df0be0e1938bd71ab997c", - "0x881bc448a5ef8c3756b67ecb1a378a5792525d0a5adb26cc22a36c5df69e14925f67c9cb747a2f7e5f86ba1435509d7c", - "0xb219303c02c9015c6a9a737b35fb38578ab6b85194950a0695f7d521206e1e12956cd010d4d6c3bc3fafd6415845d5d1", - "0x91748829bbd005d2ec37fc36fee97adaccb015208b74d2f89faa2e4295679f7685298f6a94b42d93c75ca9d256487427", - "0xa41d6fd33b9864ebc404d10a07b82ba9d733e904875f75526d9a1f1c1c08b27160dcdb9023c5d99b8ff8a3461d57281f", - "0xb68978d39c97d34f2b2fea61174e05e05e6e49cde587e818b584201cf59b7096cf1807b68f315119c6db8d6110b28a9f", - "0xb64e66cec798022d64ce52477475d27ea7340817fe7f570617f58c3a9c74071d7ea6b54743d4f520b62aecad9a3a6620", - "0x87b2b9e1c1786b7824f239a857024780a1457e51c64599b858118885833fb87a17d408bc09dcc0607d15ec1e53683a74", - "0x9814799bac07dab4f0c934cc3c051676ca13abd49cf8d4739864e5bb9f2a8474897695113f49239f28832a8658332846", - "0x806931a1526a843a9c2045943d616a8102b02b1f219535a1f1fbda659a1244f1bfead52ca7f1851ff8a97169b91c9ec0", - "0xb8678249595a9641c6404c35f89745b93d8e7b34d9d44da933a1b2f1606972624c5108f1c04eb42e454d0509f441ed9e", - "0x81426714851741045a4332eb32b6dfe6422a4a2e75b094fb7c3f37da85648c47ee8af1e54ba26f4e1b57ebe32d0e8392", - "0xb7a1875ea3f119fe0429fd9068548f65cf2869f8519dbbce0b143e66127cb618c81d7578e8391d676b2f3963e9d87f43", - "0x872220a803ea0c6294cdc55aceea42cfacfd7a482982bcb90c0361c351a900c46736a890609cd78f02fb5c8cc21fa04b", - "0x974f0380197b68205ff4bb2c9efe5626add52c0ad9441d7b83e6e59ddb2ed93ad4e9bbdbf33b3e0a206ed97e114ea0f2", - "0xa840f2d9a74fca343aedb32ac970a30cbb38991f010d015dc76eb38c5bb0bfe97dd8951de925a692057262e28f2b4e9d", - "0xb0913c3ce61f12f9fdc4be3366ed514c3efc438f82fc58c4de60fe76098fbc033a580ec6e4531b9799611c89a8063a66", - "0xa0180d533eee93b070dac618be1496f653a9a0e4e3455b58752bf1703ec68d0be33ec0b786f9431ef4208574b0ad316e", - "0xa4a6b871bc95d3aa57bed90e14a0a1dda6e7b92b7ae50e364593ce6773fbf736672b1f4c44e383af4c3cc33e017a545a", - "0xa3f44cf19fe52bacc4f911cab435a9accbe137bdbe05d34bdd8951531eb20b41d17e3540e8d81e6b3eea92c744562ee5", - "0xae6b6d0ff3b30ff0b7f9984ef741cba27ffb70d558de78b897199d586cf60622ec2d8a9d841712fe719cf0f97628842c", - "0x87abf72f98c81d6d3a57ab1e224fe4b502ab0d8090d8abc71791271550b721c220d4e2e7da3be94a20c0e63d98e39a50", - "0xb2f73ebdfe7133af57353052f4599776e16862905e64d97e1020c4bb84132e476d1ab79a9fb71611410f3f9d56c95433", - "0xae1a928253af2b210d31e1b64c765fcbd20a96b8d53823a6b9b6e7fc62249abf4a66c6a6aedb0b687e7384af9a845e0d", - "0x99c54398627833ca1435718154de171a47c709e4d5c58589fdabe62e72f2a7a11ae561bc31d7cbe92df4aff23e08cd0e", - "0x8a1310bbf1a31fae18189479f470977d324dec6518a5d374ab2ffcc8f64412fb765df57d2ddf69b9a6efaeb2b4c723b8", - "0x898312c6c0d3d3438229b19a8a233eca8f62f680c2897f4dd9bbcacde32c5996d56ac0e63e3e9360158761185491ce93", - "0x81b3f965815b97bc6988d945496a51e4a4d8582679c22d138f3d3bd467ed1f59545da2d66e7b4c2e0373628ae2682686", - "0xb9aca91c6e6f4199beb6976b28e0e35e36e8752618468d436b1cf00d8d23538d0747920e5b2c31f71e34dfe4d5c86a0d", - "0xb908f4aa18293295b8cacfda8f3ea731bc791074902c554764c603ab9a1de1bbc72654fd826bffc632d95ce9f79c27d9", - "0xa7316ae1baf4b1196961d53be7fe36535499287aba9bc5f3bed4323039b4121b65bb0bd15a14c1b9cd8b65ede3566da2", - "0x815e39208f205c5fac25ac9988c14a62ab01657c7737a24472d17b0e765644bc2cbb7ff1e8ea169b8b0b17b6996c4704", - "0x89a451d2b740cdaa83ccaa9efb4d0ff5822140783979a4fee89eda68329a08c018a75d58bd9325bdc648b0d08340b944", - "0x8cd08f768438c76bae6bee1809dd7be38ec42e49eb6a4d6862db7698f338bf6b4b409088e4f3d1c5bee430295b12a71f", - "0xa4bd8c312103a4bfeb25b0cfffec7a1c15e6e6513b35af685286333c1dce818ffeb52826f2f5bada6b67d109c4ab709e", - "0x93afbef5382d89fa539ca527f3e9b4a8e27ab69fd5d5023962cc6d8932b33cb4dfc5f14343e1a3749bfd5e100c9924e5", - "0x8d8e69d046992ec9ff14f21840809166cae8e0e9e7c8f14fb29daf163b05abe6611daa4010960e1141c5ab24373fb58e", - "0x96f8e72e96ba673c9265e9cc312f6b9c3b931745fc62d2444d59404bb08e5fb02ddb60715181feb9971cbd954526a616", - "0x8d444c2b8e4d0baadb79e3147a2ee20f1bfe30d72eb9a02f15d632185fb8f4e8c3116066f7de1ebfe38577aaccacb927", - "0x971410c0b10e3698f4f64148b3d2148fc6a4a22217fcf4253583530a9d6fbec77e2cf6f7bb5e819120a29c44653de3fc", - "0x99e7e1857bd5ee57007b7b99494b1f1c6bf1b0abd70c054770427d59a3c48eda71b7de7a0d7fcf6084a454469a439b41", - "0x8c8a4cd864894f7a870f35b242b01d17133cb5dfdf2e8007cd5f1753decc0d1fd41be04e1e724df89f1d727e760fdb15", - "0x890a24328bdeaaadf901b120497d1efa17d798f6f4406661e46ecdc64951f9d123d724ab1b2b49e0e9a10d532dd6f06c", - "0xa7cbe1f42981c9518608569a133b0b449e9d67c742d62f0d3358112c97e65ee3f08ec0ff4894ce538b64e134d168e5c8", - "0x87c976dea77b3b750c3a50847f25b851af95afbaad635f9bb9f7a6ba8f0c4faeb099dd777cf7eac41072a526474cb594", - "0x9882aa5e9bcc4ea2dd3de4bb5a0878a672bea924b50c58ae077563b6df0268910a60e969d3da1694ae7394ad0d9acd3d", - "0x90d35ce677327c461fb5dcb032202e851af1d205e9d21a34ed2b95635f13f8fb8dfa470ea202ccfa4b08140d0cf1d636", - "0xb3b4cbb521cce2b681e45e30a4d22078267e97ccdbdc611b2c9719705650dd87e0ca6e80cf2e174f8f8160be94232c36", - "0x95892b00478e6b27ed09efe23a2092c08e691b4120336109d51e24efbf8aba31d59abf3cf55c0cdab1c210670b9743ba", - "0x8643018957fb8ef752673ad73102d0b928796c6496e22f47b6454c9ed5df784306f4908641ae23695db46ebfcfb0b62b", - "0xb166ce57669bf0543019ecf832d85164c551c3a3a66c05b17874bccd5d0ae87245925d6f8edc62ac13dbd5db265823a2", - "0x89fb4800ce4b6c5900d58f1a216ad77a170ea186f3aa0e355840aeedcf374e92a15ae442800c9d60334544be020b17a4", - "0x8c65e586215a97bf11ffc591bce5147b4e20750e82486cc868070c7736c3de697debc1f335674aef24b7afdd41922d93", - "0x90f68ce0c97d2661d3df1040ce9c4fa106661a719e97c7b2d7c96f0a958930c57d6b78d823a2d41910261ae1f10e7b0e", - "0xadda85e1287371ccbe752aa2a3c1d5285595027ba4a47b67baf7b105a22fb8548fa2b5b3eb93ca6850ecc3995f76d3dd", - "0xb26535d218f48d6c846828f028c5b733594ce01186e22e412dd4f4a45b3d87d2ac1bfe5d54c987e4e8aaddeb86366d7d", - "0xa081bd86962ea3d4fd13df6481f3aeaabdd7ceae66f7bbb913e601131f95d016cf147d045253d28457a28b56f15643c8", - "0xb3d852cef4c8b4c7a694edbf6f0e103f3ae7f046a45945c77a1a85ec8dad3423636a89058fafc6628aabff4dbb95c2ba", - "0xb424ffc94e06e6addc90a6324e0482814229b5902e2a266d0c2d716e40651b952bc9f00d7dad9b6050377a70a72c7f24", - "0xb2cafd908cae0ca22eaa2d9a96175744897a20eb7b0a6d43b0098cb1c69e3cb55373888201e4ed32816655eb7d8a3dd7", - "0xb61177ecf1ae9d7e7852d98cbf6080d9f1e33c90f2436720b4ea4690437e8c7850c3754768fc1312cb4e838d855c5ccc", - "0x81b486644e1ae22cf0ba3a37e1df34dc186c82a99ab35ad6f475c37babdea574ddfbe5811d4aa020581292a793d66bd2", - "0x97ae848a823ea7a99f91834e537fb47208f616c08fe32c8f8fe06bd35c9b638698c513265d0b4de9e572a2f9692b98e2", - "0x81b8fef4ea5d399c65e78f40e47c559ada86d890777c549ce362e7ab81b3bfb00d5ff4ae4ee30fd7bda7ee90d28f85d8", - "0xaada6912cc748923ea40bf01922c06c84bc81b2ab0bb3664a0579b646f03d47ce88de733ac7f2cb9be4a8200584cdb71", - "0x89b48b9c79332f8f58eac9100ada5bb7decdc4b1555c5d383e2c1ce447efb0ebdff9c50bb52bc3042107f33a61ab2520", - "0xa32ecca8b870b2b6e9d10b5c1d8f925b3d629d271febad65abed316262bb283c60cade0e91047fbd0fac53ac6db372b9", - "0xb829cd1f13409e3573a8e109c9541b0a9546e98b6c879a11152b5564477ada4d8cb4b3079040e05a5cb63d75ef11eaab", - "0x91f3b100baa19e960b170fe9e03b799faac5b9c6f305c56115940bf81f6e64dcb9cda77e8de70ed73a21c0e8a74acc58", - "0xb25b5e872c84065aee04822bbcb4f3bdff57fbd7cea314c383765cc387786c17de3d5bb3de3ae3314bdede14542bfac6", - "0xa89bea9eca1f5a17a3efccfa4987d8e5366b0dba70ef1fef43aaea83c528428d1498c8b056ac27f16e8946ee93f7028e", - "0x818a1f7b0b8b06ea0514d6b4a0296da4f69cb18ac8e48c5579e6ba2880b06215fcbe81672566b8b94fcc3c0cadecb191", - "0x98dd6e6b4b4d63d9aa7464a2be08ae8babac4da7716a3f109340bc9187d59c6ca0c88e6877a67c65096f64a3ced22a4b", - "0xa2069c5bac4f6590042aefb37570cc20908b0df9d0130180f565ed8a53b4ea476a274de993561fb4d009f529fe7aa1cd", - "0x860b7ec2410f033a7b0c5ca08f88a0ad29f951a5ebd5383408a84367e92f1bd33bee3b87adef2466b7e33b47daabf30e", - "0xa408855a8414102c3cb49f47dda104edf0887e414723da59b6b6537ada7433529f6a4d1a4ad4fe311c279213cdd59356", - "0x8ca0d81dcb43b89a4c6742747d29598ede83a185a8301d78c6e7f1c02c938441360a1ab62a5e571e3eb16fe17131cbc0", - "0xaf7875a495cb4201cdb26e23b7c76492f47f8dd4c81251de2397d73d4c8d5f419cdbad69ba88ef0dc3552e460dbcd22e", - "0x80e901e433dca34f3d386f39b975e97f7fc16c7f692808221fb2ee60c1aaa8db079cc48c7d72fd548aaf8dde8d0b8f05", - "0xb6062319e13926416e57a0ffc65668bfa667e708a4e3f5cb26d8a6a32072f5b790d628052d5946c5068dd17cf4a81df8", - "0x90094b569e8975f8799863798912dbf89b12d2c2d62b3e5fac7efc245436fcd33af23b8c509ae28c6591d3f020966e06", - "0xa504f72d3d06a0c9b188a1035c7c6d80047451c378b6c5b2ffa1f8cecdb64871cb6440afb296974c0a528e5e563061a1", - "0x959061c4924e133a419e76e000e7c62204093576ff733ce0b8ae656ec6045ef94c5a1f3c934fb76fa9188c5eb397a548", - "0xa8b9d0b58de38cb86cb88fb039a7c4c0c79e9f07f03954af29013baa18fc2633883f8f9ca847209c61a8da378f9075d3", - "0xb16d8341da4ff003ed6d1bbdb3be4e35654a77277341fe604b4c4e4a1cb95e61362094fb3d20ab8482ea14661c8b9852", - "0x8ea4ca202e3aed58081a208a74b912d1a17f7b99a9aa836cfaa689a4a6aa9d9fbfe48425cad53b972000f23940db4c5c", - "0x96a372f55e9a25652db144ec077f17acc1be6aa8b4891e408f1909100cd62644a1c0296a3ddc38cd63ef46bef4e08462", - "0x87df40018ab3a47c3782e053dbd020f199fda791f3109253334a71be4159f893a197a494de8f94d6f09efa5811a99977", - "0xaff82d2ea6b3ad28d0ca1999a4b390641d727689dc2df6829a53e57d4f6418196f63a18495caf19d31fc23fdff26d5e2", - "0x9091053c4a18a22d13ad309313b6d2133a96df10fe167f96ec367f9b8c789ecca7667f47d486fc5ba8531323b9f035ac", - "0xa4842090515a1faccc3d8cadbb234b7024254eba5fdfcef0d15265c7cec9dc8727c496ad4e46565d1f08504c77e511d2", - "0xb1d8a37b1a97883d5804d0d2adaa8dbf0c2d334ef4b5095170b19613fb05e9c648484093d0c70d545cf9b043b449c707", - "0xb1ea40f3dd1c3d437072f8adf02c32024f32488dd59389d1c3dfe78aca3df0bab7767f6ded5943cc10f50555da6092f5", - "0xad219c6a8149f10391452892b65a3268743baa7402736f810a35d56cdfed83d2172b03f15c205f0dc5446baf855907a5", - "0xafe44c3e1373df9fc53a440807fa6af8ebc53f705e8ee44a162891684970b04fb55d60bc2595626b020532cb455ee868", - "0x859ae154b017eae9be9da5c02d151de747cc23094d8f96d5db7d397e529b12fb55666f55e846e2bbe5e6f5b59c9d8b05", - "0x8aa01354697de23e890fe54869cd3ec371f1be32064616ca3a556d3019541ba8e00d683f1396ca08e48988f7f7df5de4", - "0xb8f682487460b9d825302c40a7d6dd0353ff43bf24cd8807cdfa46c043e3f5a7db182b27a8350b28e91888802a015af4", - "0xb6d4d6c3ac40f8976b50be271cf64539eb66dc5d5b7cec06804dfe486d1e386037b01271cf81ef96dba5ea98a35a4b43", - "0x9385a2fd1cd3549b0056af53f9e4a6c2dfcd229801ffda266610118ade9a568b33e75b6964e52fcc49c8e3b900e1e380", - "0x98f4aa0e4ef039786cbd569536204e02b0b1338568d1d22bb5bc47b5e0633fb7ffe1da93eb9d825b40b9b7f291f84d51", - "0xb7b3460cf706dc270a773c66d50b949dabad07075021d373c41fbb56228355324d120703e523ea3f345ef7249bfff99d", - "0x81b826255f95201987513d7987cdc0ca0529524d0e043b315a47583136dbada23a114d50d885bb3f855fa8313eff801a", - "0xafdc6c35161645a14b54f7b7a799910e2e07c8a5efe1827031a2eecd5d9263b3baa367fdd867360fabc41e85ab687e74", - "0x817b361ce582153f2952f3042e235ee2d229e5a6b51c3d3da7bbe840b5c6ec2f01446125045848d15fd77dc46c8a8fe2", - "0xaeb599265398af6e5613297d97d2b70222534590fcbd534d68b24a0289b6366ac8188b753f6fd1000ee73ef44f8fb7af", - "0xa5a9e528b606557be64460c1ad302a43e741357827b92ddc50766a7e6287740fc23bd528d9faf23345ce8bff527d5bc7", - "0xa8d3b3b438d5f75efaae6ce7b67c2212899ece5b5bdc9bac655e271fd1846ea8560e646fdbded3d9363eefe29473d80d", - "0x984c7976d557e2f591e779c2885f5033da6f90d63a898d515b5da3adbffa526764cd8eb679b771573fdf7eed82c594ec", - "0x8ac748689cc3280e064807e68e27e234609e3cc87cb011f172204e1865ad7fdc78bec1672bd6e6fddcf4e7902b0f38bf", - "0x877bb392059540b1c8f45917254b8cc34fb7e423952bdc927e0a1622efec4113fa88988686b48134eb67ddebcb7c3ef4", - "0xac04b154ccd307ca20428091585e00121b61bae37b22d5d2a1565bc1134be3c81ccf3715fffebe90744164e5091b3d9a", - "0x90745c04278c3a47ceea491d9dc70a21a99d52648149b1ab623b5396b7d968fd3c4d1a2d08fc5638e8790463e0cf934e", - "0x80bf26ca7301e370f101cc69e7921e187cf5315b484fc80a872dec28bb65886569611a939958f4a3d2d3da4350011298", - "0x87cbf4d6f0c06cc5f24e0f173a5f2f9bf2083a619dcce69a8347c1a6cd1d03325544610f2984eb87a13241e6ab9a22b7", - "0x8909368817a515789ff4d19ed26afafa5729a24b303a368ea945a9287bc9facec9e1c8af19cbec8dab4acbb6a6ddf6c7", - "0xad8d2f82b08e0990dfd6b09fd54db3a30fd70aad218275550f173fd862347e1258a4716ca2bf4c40e4963850b2277eab", - "0xa9467ceacf9337cae4f2c7eeb3e03752ac7d77692b07d5e5d75c438fbe7dc2029ff84f7759372a0ddfa953b4ec7e9e38", - "0xa5feb7669e84b977cb1a50ff3a39c28f7ad1ecc33a893fdf1ddae7a0d8a4c5f6fbaff25cc56631b708af038a961f3b55", - "0x8f2e1fa07963ba18db890b44c3b9ae7f8992b702a5148679df69e4d9d4b1c082b2bd2ae53f96a4fe24b54f3dc1588f17", - "0x896778f35cbecb43f001277c306e38a9c637275101f1a09546f87378b10ccc025644bc650b3b6c36e4fd0c09fbb3df35", - "0x91dc702778176a4d089dc65502d703752dd9a766f125ffef26bdc38fe4abcae07cdea14102c3448d10f8dd6c852ee720", - "0xa5df3004cec6b68b937cadded0dd2f48bd3203a903a3e1c22498c1193f4567659ecaaf3deb7ed7cf43796da9188f5dc6", - "0xb18b4c8ffcb8599c24d9851abf8ee43047cbd4c9074c9cfbf88376a170da4554978988f550afde8a45306ca32713c204", - "0x8370bc38c84da04d236e3c5a6c063e1db6613dcc4b47239d23efdcb0cf86846955b60da3e50f17b17cd3f7e0c29302d9", - "0xab7d6bb6be10aa52ef43abbe90945e78e488561afb959dc2fe768f8fd660d267c7203a2b7bdfa1b44cd07898f4849e06", - "0x965c96047d82d76ec2cfe5035fd58d483cd2cb7f65c728ab3049562c5d1943096d6a5014c05babc697d79c07907cf284", - "0x9614f7006aef6f0478ebd37fbf17276fe48db877394590e348c724059f07c3d1da80d357120d3063cd2b2bc56c58d9d6", - "0x819c7b2a1a4bb4915b434b40a4e86dd7863ea85177b47a759bc8ecd8017f78d643982e8a091ee9a9e582f2b0208725a5", - "0x8e159a185b5790a3ed444b6daab45f430f72f4ac4026750cbd5c7cd7947b5e00f2b10eaaf5aadf8d23054c5b29245546", - "0xb48cb6f6c0aaea04833e10d735b67607846158b6663da380ef01c5bca3c9d537611716867dc2259883e5bc9daed57473", - "0x8b48ce8b5ab76b7d662c29d0f874f5eec178baf3f14221bffd5d20e952f54f3ed053182a486da1d1f400e0acef58f673", - "0xb6fd3cba177bfbcb5e7ebb1e3c1967cad5848c09c615ba2a6c277908f8b1f4f1ac5f184c33f2a401e8bdafcaed48bb88", - "0xabd8f44c4a447de8fde1c119f4fd43c75b4cc99de9c817a019d219d4b2ad2a73b60606c27e36e9856a86bf03e7fc861f", - "0xaf9f7e8b3e9e8599c7e355433c503a05171900a5754200520fd2afed072305be0e4aebb9764525d2c37a5a7eede72025", - "0xa0960a58bd2681804edd7684793e3cbb0e20d1d4bd8721b192baf9aee97266be14c4ee8b3a3715845dca157ba2fb2c1d", - "0x949a37213209adfbfa4e67c7bad591c128352efd9b881c1202cf526bf4f657140ef213acf0efeb827a0c51a1f18809c4", - "0x9192fae84a2a256f69a5e4a968d673bebf14ea9a2c3953f69fe0416f7b0fafa5166f3e4588d281f00d6deac1b6ec08bc", - "0xb1a249662f34a88d2798eae20c096268d19f1769d94879b8f1aa40a37b3764349b8e6ab970558436a88a5aa5c37e150d", - "0xaea87086dcd6de0b92886b3da0813ff271a7107ab1a3cb7021b85172c1e816a84dbb1a8fdb47e8a8eb5e6fcddd5b919a", - "0xa586b5078b3f113eec9f074430bcf9aabe4e82752e5b421c6e31d1c2a911512e34154bf8143b5197e820c5af42aa8ac7", - "0xa6eda122e400a6600f025daa383685a10f72f62317a621698bd0106b331077b05ac1afc68ece7a2e285c54a366921a3c", - "0x8875e9ba654ad7b1d57ede84e2b702600416d40f7475fe2df25dd1b95c0178a227ee187547898e5b9d1ce8ce9ebd15c9", - "0xaf2cb289f8c75f4ddae9e3ef9c1977fe4d4d513e411777b03b996f5baa372eb995b5ca96255fad9ace776168806ecc42", - "0x8d24c465d26bd93290f45ef035bb6dde4530d9d7d051baf583b1f8b98e9886de262c88b5709084710cffa7c767b4c27d", - "0x8cf35b1b28a7726645971805170392d522f5e7e6cb94157fe9c122a987051c1c90abe3c5bdb957ef97b1c45dd9bba05c", - "0x93e2bbd82a3cb872cea663f9248b21d4541d981f3f8d5af80a43920db5194857f69e2884753f6ed03b6d748dbfb33620", - "0x8b774b97657db654ebdafce3654d645f849203452e876e49dad7af562491cb6531bd056f51cb5b2e8f0a99e69bd8566b", - "0xb5333c49d3e1c4c52f70f3a52f0ad77165bed6ad9dcbfaf1364e7a8a0f24570e85a218e4c2193f63d58a7dd975ceb7a5", - "0xb4a34c443e4fdaab8e69fcda1fce5e72eaa50cf968f5d3d19084d049c5e005d63ab6e1d63dee038317da36f50ffb6b74", - "0x824a224009c6848b92d6e1c96e77cb913fee098aaac810e2c39a0e64d5adb058e626d6a99be58593d921198edd48b19c", - "0xa86f1fdd2e1ba11ebda82411b75536fc0c7d2cdb99424e0896d7db6cae0743ee9349ffa5bff8a8995e011337fa735a9d", - "0xb406b5b89b8bed7221628b0b24eb23b91f548e9079a3abd18be2ed49baf38536a2c1ec61ab1ddc17928f14b006623e7b", - "0x8a7ea88d1f7420e2aaf06ee90efa4af798e2ec7cd297aacd44141471ed500107fdd93bd43b6de540314ef576646a7535", - "0xa7a8c071e68bbae9aca110394cf56daad89404dff3e91ea3440670cd3d0423b67905e32b1ba7218fd4f24d2f8bd86ce7", - "0xb959830f152e4d31c357be1ded5782aed5d6970e823cf8809434cf4fddd364963bc7cfda15c8f6b53eda16ab20ca3451", - "0xb59232c8396c418238807ce07e0d248ad2045289e032678b811cc52730f99b480eb76f6adf985e6d5e38331d4bb2b9d5", - "0xa14092fddecc1df18847ab659f6cf7c8603769a4e96fbe386d8303b225cebbbe8f61d6ab3dca08e3ed027e7e39f2641f", - "0x941cb0632acd395439f615c6b4b7da9ed5abf39700a8f6e6f3d3b87a58a1a7dbb2478a6c9ff1990637ada7f7d883f103", - "0x951b8805ecb46c68101078847737e579206f2029e24b071bae6013e9dde8efa22bce28aa72c71708caf4e37f9789a803", - "0xb2cbf22e53f6535fa950dd8de4aa6a85e72784dd1b800c7f31ec5030709d93595768748785ff2dd196fbedf3b53cd9d7", - "0x8d84ea3a7eafb014b6bd6d57b02cab5ac3533aa7be4b86d2c5d53ce2d281304409071100d508ed276f09df81db9080ea", - "0xa2204b60836cba8bf29acd33709e6424226ae4d789ef6b280df8a62e30d940bc9f958ff44b5590d12fa99fcde2a4a7a9", - "0x86692c58214f326c70eb2aaf2d8b26eae66fb624f143a3c144fd00f0249e30e0c832733a7822fac05c8fe74293768ace", - "0xb1cb3d64eb5b9ca0e01211128f990506fba602cd1417da02237205aa42879ae2a6457386da5f06434bcb757f745f701d", - "0xb3eb4290a53d5ff9b4596e4854516f05283f2c9f616ec928a0934b81c61afc351835f7eca66704a18a8b6695571adb30", - "0xb0bfb1d44b039d067d7e0e2621e7c4444a648bce4231a6245179a58cd99758ec8c9e3f261d0adb22f9f1551fceb13e4a", - "0xa29320f71a9e23115672ea2b611764fe60df0374e0d3ff83237d78032e69c591a4bdec514e8b34f4b3aeb98181153081", - "0x8a6abe9c8a048002b2ff34154a02c2f13fc6dbae928da47c77f3e5b553ea93d8f763821a6ead3c6069677870fdff7ff3", - "0xb73ab66a62f427e1a5e315239a2e823e2a43550d245cff243c2799eb2e4701fabb7d5f9ce74a601b5ee65f6555dacf64", - "0xb64858e98b9c10de8c9264b841b87e7396ba1da52f0f25029339ca1d13f7f9d97f4de008cfe12a1e27b0a6b0f2c9e1ab", - "0x807d2440d1f79a03f7163f5669021f3518094881f190cb02922eb4e9b17312da5e729316fe7ba9bfffc21ed247b033cb", - "0xa7f06458d47ebe932c2af053823433a8a06061c48f44314fad8c34846261c8c3f7f63d585a7930937327ad7d7ca31a6f", - "0x82ac2215eba9352b37eb8980f03374f5e0a2f439c0508daa7a32cdce398dde2a600e65a36795a4f5cc95bbcf49b01936", - "0xa1882c83a2f946d54d74a008eac4aed70664db969e6799b142e0d0465e5662ba0d224a1cc33be339438d69bdad446ff6", - "0x8009776f7a34a3c8779e21511fa409b0c5a38e172d1331acc29a16114e002f5f2f001381adb5fb3427a100752d775114", - "0xb24441019af4a0df2dc68e3a736f358da0fd930c288398a18bb5a8d9a1e98ea376395f19d8e03a5f020b83fcb709f1af", - "0xac72b4de3920c4f3c9b8ea90035cd7ed74d34b79e79aab392f057c3e992ebe79050cc1c6ccf87120e4162b29419147de", - "0x973e75577cd2a131a0bd568fd44e43554ac5a9ea3bf10f02d1ad3ac6ce9dc7a8a7ea93aacf3325f7d252d094a0de1376", - "0x98a114de2a86f62c86862de37c328bf6a7fccff4d45a124addbe0eb64debe365409fcb72ce763f2a75030e1ff4060c64", - "0xaff753e1dd4707f1a359eaec06ebef1903242889a2cb705d59dd78a79eb5b894731f5a91547479506145ca5768877dec", - "0xb856e4234858b5aa515de843e8bd4141c15a4cc02c51640e98a8aaa1e40344f1ff8ef7c3b913ea2ae7411713daa558d2", - "0x863525eb2f8147a6d1d0d4304881795bfed348913cd7f38d815d929a426788b69e41f022dba5fdcaf56c85720e37fefe", - "0xa14ad76b145a6de2e0f8d4f615288c1512701a7b3010eb8a95941a2171bc23561e9c643764a08c4599040a3b4f5e936a", - "0xa18bfc66f6139dcb0485a193104fec2e7d52043837a4c0cadb95743e229712a05cf9ce4ccb482f36ff1ce021e04b574a", - "0x991c8e6678077d6e5f5733267c1819d8f7594e3b2c468b86a5c6346495a50701b1b05967e9590c15cef2f72bc10a38f9", - "0xa034e7f9b547b047c99b99a0dd45509b0ac520d09130519174611de5bcdb9998259e1543470b74dcd112d0305c058bad", - "0x95ffe0d02317b5c6d5bfddbcec7f3fdfb257b26ad1783bb5634d983012e2ea1c6b9778009e1b6d10564198562f849ac0", - "0xb3db442aa4adb33577583b2a4ad743f41efe0e1f87bfc66091d1d975333ffc00b4afc43057bcb88a7d68b0c9695d38dd", - "0xad2e97d10d7c53d231619e3f2e8155a27ea4f2fb3c0cecf5c7f14f4cfcdd21f62ea46d843b21df748b2892131633fed2", - "0x905d7aad6d3b56bad48694b6b20b27e370ebca8b91d0821e48e2f9cad39910c26cc11c77c266894db3d470485a63ed11", - "0x99bfadefca796ce6af04ede65ba5ef5bf683ff7e2852bb9c406fda77b95ef382289853dfe4d933525071e4cab8ce3936", - "0x94d9905ed4ef92107d0adb9ea38f085a2a24b8f792108bec702d747c215b1f14aafd486ea0c07ed42602b12d8f602b93", - "0xa78dce23ca09dda2d5e7fe923290062546825286d624de35ac5756b6c8ae030e211f4f9c9c8d18a924f5880e3b383d1f", - "0xabce9e2128ff51fa17e73d93e63d7134859b2f328eedbcefb337c39e752d6750d9cffe6abfcd359c135dc5a12018827b", - "0xa9ea7d91e8a3524acb3182bedd7e1614d37b48f8eb2d8f677eb682d38408b8d512786d8bb65811f4d96788b9378e59b3", - "0x912c9f804fb57dd1928f8274be58b42618f589fc72a7e5b6cb4d4b5d78c547f80737cdd77ebe5d2b71eaf60b8fd2b663", - "0xb7227ec9a62d5538974547f717fdd554ab522d8782667fc3e9962e9c79a21134ef168371bf3b67e28d0964e92cf44028", - "0x89440a781c812a19c758172bf722139598023ed0425374fbb0d91f33be7b7f62a36d7aa34696c4fb0da533bd5dd41532", - "0xb31e4a9792d6e9c625c95aa3c0cd3519410dec07940afab820ef9f63017415d237a47f957d0b591b6de399ffc2a8a893", - "0xa66ec47393df2693be161daaa88be0cf07b430c709ca97246d10a6080ae79db55c9e206b69a61f52512b868ba543e96b", - "0x90ca425dee74cc6a7e8eb1755cf9b7b76ba2a36ab851333b0fb7b35e8e6e189702456f2781ad87b4215993d62230ff4f", - "0x88b64741f93a2ae5d7b90b22a5e83c9d56bcee5c6bfcedb86f212acc776cc3ebd0b62cc025f596cd8db4f4b6a7aeebab", - "0xa1b6c7d2358bb201b42264f8fbebaa242ef105450bab21b4a2f16f368048c16ad1f3695841787eb33a0192f1f6b595eb", - "0x8a932f1cd227ceb18389791ed9ea1ff26571715ed1ab56601a994795713a8f7f031d1e8472ec3eb665b7bfbbca8ca623", - "0x8bb2e34a2bf77f9f657dfc51ff296a6279a4d7d15860924f72b184fb7d5680320c7769954b9dac73c4bfe9c698e65e58", - "0xaf54e7367891c09f2cea44cc7d908d37d058162ec40059d32ded3983a4cabfe5057953878cf23bfad5292dbd0e03c0e1", - "0x8a202532b9205385cf79f0299ddcb3156fd9fab09f9197bce762b5623f75c72ab1d74334ee6f0d289007befe222bf588", - "0x83bd0f5896eaad58cfa7c88fc5ed505cd223f815dcfe93881b7b696cdd08b8b5ede03ea5b98e195c1a99c74ac5394c1b", - "0xb4a84d9940e58e3b4f804e4dd506f8c242579cfa19323c6e59047e5a1e35150699a2fab2f4862dba2f0ee4ed1d8970f8", - "0x8c9ec477d057abebc2e2f6df5c4356a4f565bde09f499a131967d803d4bf36940ca2ed9d4a72adbe0a4a8b83fc686176", - "0x8598f43c32623fd5b563d1ec8048ffc36db3d7f9b3a784299811687976f64b60585b2a2707050a3c36523b75d1e26716", - "0xb55eb07014fe5ad3e5c9359259733945799e7429435d9bf5c72b2e0418776e329379433e17206f9f0a892d702a342917", - "0xa5ed942eda7b36a3b0f516fafd43d9133986e4c623b14c0f6405db04e29c2d0f22f1c588150f670dbb501edda6e6dd4b", - "0x92b6abb28cefab2e332c41c98bfa53d065b7d262638389603a43f4431e6caf837b986254c71f7cdacf4d6cc4064b0195", - "0xb01806178a28cc00d1561db03721eef6f6539676d93dd1fa76a13b42a31d38797e99b1848de92fd11821a342b04f3f72", - "0xa2f10303437acfbb5912e186bbff1c15b27ed194c02cbc1c5b482b0b732c41fa809136e8e314e26b5bfe57690fe3b250", - "0x9990207fcc711102e7e941b3ac105547a3e7301390e84f03086c99c6d3e14efff3a2e2b06e26227f496d88d5cdaa3af1", - "0xb903cdb0c2fd578612398c30fe76d435cd1c2bab755478761244abb1e18ba8506fd9c95b326422affbcaf237309959d7", - "0x99e0c12cae23f244f551d649302aac29bfdeb2c7b95578c591f512ad7ac562bd47e7c7317ac9bac52c9ea246617bdb48", - "0xb996d267ab5149c1c06168ee41e403be83f99c385be118928d6e2c042a782de0659d4d837f0c58b26df0ce22049a5836", - "0x989001b8414743765282f7e9517e4b8983a929341b8971d7dd8a87d246f6c8ba5e550c983566ddd932c22948f4fa5402", - "0xa0b006a2c9124375364b8fc5ddb543a7468fa6d321ea046d0fd2bfdaef79e5e3600b3d56190733491ca499add1298c7f", - "0x80881d6f3ee507089b7dfb847fc53dd443d4384ef6fce878d07d9b4a1171eefea98242580e8a6a69664699f31e675cfb", - "0xadc48ef53d88b9d70409ed89cc3be592c4bd5eb65d9b1b28f2167dc4b12406889c00f2465c554f3aff673debc2997ccf", - "0xa62f5d9f167b9f4a4aab40d9cd8c8a48c519f64a1985823e20e233191b037c02e511b0280487112a9f8b1f1503b02db7", - "0xb89aa2d4fb345a1d21133b0bd87f2326eb3285bd4da78b62174bf43d30a36340e4217dbe233afb925ab59e74c90fccf0", - "0x932ba22acdd2f9d9494da90958bf39d8793af22417647d2082d2c3e6a5e17a2d14b0c096139fa8fa3f03967ca2f84963", - "0xb67b107e71d96de1488b4154da83919d990502601c719e89feabe779049ddf7e4fb7e146eb05e754b70bbead4449efb1", - "0x84509de1b8dc35aa2966d8a48501f725d59b4c65f3abf314b2009b9a573365ae3163c1f276708c66af17de180aae0868", - "0x849153fe837a33fcb32c5fa6722c2db9753e984867c112a364eb880d87467782142d1c53a74b41df1dec7e900c877e1f", - "0x903d05c73ae043b69b18e980a058ce2254d008647a8d951175b9c47984164b34fc857108dcc29ad9df0806d7e90405f4", - "0xa6b05917ac32c0b0eeea18f1ef3af5343778c543592078fdf6a1b47165013e2676bfe6a592a24efab9d49c4bd92b8fc0", - "0x8648482f6947a5a8d892a39f098160aae1a648cb93e7724ea9e91b0d1a4f4150b91481f6e67d3bf29ff9d65ba4fa61a8", - "0xa6ecaabc38895013297ae020686f04ea739c4512d2e3d6f2d9caf3f54000fb031f202e804ee615eb3357714a18657bcf", - "0x912f5935acc2dd20d5ef42b2ad5b307c925324a84a3c78ff66bc5885751934bd92f244e9636b60a744d750a2a7621198", - "0xa0d6f261a776c5b114298f5de08d6e3372649b562051ea2470d3edfc376048793e18fc57ec84809b463dc72496d94329", - "0x940744cd3118d1598c248b38503f6f1fbdbe7a147e683e5b3635140aa91679f8d6c1472600f8e9c36117a60203be6b4e", - "0xab81737c839fe340f6f1fb7275811cb0c0d5fe8bbc265f6a56c6c68d0291bc7234eaa581ff26f8929d9a5bed4aac7002", - "0x8df47341160f1c728c3e31be17a32e42b54faaa1286ef2c7946882ca4dd46443b8428f3654616c6e4053f1cda2e11994", - "0xa721067e75c3c791f4d9f58d4810ac9621606e29c6badb593d6bb78c39968b45be1777ddb9bf03696d4d4be95b2dc1bf", - "0xa4e399213d3c4350c2d0cbe30757ba7e1f9680f58e214ff65433b36232323744c866a87d717851ba1dbd6769599f69a6", - "0xb0be851d1e43dee27abe68f85e2330d94521b5f1c1a356ad83fcd09162c0ca9c2e88bccbcc5bacfa59661764361867a3", - "0x86111bdd3dbfca232aa5802a6db41d639502e43a2e24cb06bb5d05c7f9b5ccac334d16b61d1c5eaac4fa0cab91113b46", - "0xa4f805b11c174c34250748b9beebfb7c8c243198fb13463911906ee4effe7d331258a077e374b639a0c5cdcdff166b7f", - "0x87e4cf2c6f46d2dbac726a121127502921decf0195d7165e7bbeec6f976adb2d1c375eaa57f419895a2c70193215dc4c", - "0x8ff06de2c1c4d0744483bb4f7c5c80bf9c97b4df23e86c0bb17f1498ea70e0ee3af20827da5e8cb9d7f279dc50d7bd85", - "0xab112c0116471b4dc3fd1e6d918f99158eb7a08153e891ddbba2fe5bf0eeb188209e3019176e758231c3df937438136c", - "0xa67f89194e99e028a5da57747268e5ef66fefb881144043429920d222d37aaf268ebf73ca1da659fcdac3b4e7a65092a", - "0xb4da1dcc791566140d6abeaa2923cb6b21a6e6aaa30bb4cc70011e931eefa71f96b7e05358c0654bad7ce45191ab9fa8", - "0x8283933231bca359db588c80e043ad6ea765fb0cba5ef233c5d514ba01ddd1b409efbadb368f26763402e4576dc4655f", - "0x97f568ce3edacd06f3e31a15462f5f9818a8c3fdbcf92b1ac5840b0b6e73166a154013dd52e85a18e8ead3fc9e54aca0", - "0xa9cd1601c41e5ab2018f986443914fb703ddb6b06a36c06fb58065f2fee8e1751071ef924ea3ad76f0c19baccb1b5f8b", - "0x92aad71bb7e929cc35a48020d16a5822f4f106a7f59985005a5ae5ba8e8016ec33727610393498f56b4f353b3d5161b8", - "0x89427780aa4e7ac894c681fbe2889153b94db883f17f109bc9caa93f0c259dda42aab502bbefaf572c56f70abbc42db8", - "0xaa8cf76ff847dfe59534432ed8520bb48bf412c28497747dce04d2b2a54ba843c3be1564630cb49ec0217167847ba590", - "0xa1570a6748a2303e74a31c2131d05ab372ec006ee92ef74c42f2e9a250663bebdfb3777e7ad91f50c954889a59c2d434", - "0xa4c2b1bbc48199c31ea8d8196729eab00ce0200350d4aa9f23347a3289355e5828cb2f93036a14d2d9ec575fb3835239", - "0x84819d0bedbaab5bf8afdf23f59a7ec5f50da3063cfdd1ef5fc4ca4c1fe68980b5c80e30a49f38e5816765e81dfc5a57", - "0xa57cfb5e877b88202f589be777605deafbfc85ed1357af03a18709cfb4b668a271199899243cd3750f1cb77ebc40bba7", - "0x8d95934bbb0efaf3339f27cb96de46e4486aa58a2c40dbc77c1c3ac7c27a228062824b9045c046631b2e286e8549603a", - "0xb99a8356abeee69f40cb3bd8c87e8039a1e076897dde430bfbf989dc495c48609a7122bc6c1d1c32ccac687b47d5558a", - "0xaac2edcf2fe5d3f1a84e8f1f27ece920eabe7793bf0ed5290cda380752e55d57a55a362c5253bebb71e4a55f2c437ff6", - "0xaf7c76876072c3b0091e22b9c5b27ce99bf1f0079ea1a7816ad9c06e9e5fc407595c7f4f9953e67d86fb2da656443dc3", - "0x9175b64d104f78d3310c9c02f82e04c8e9878d2044ea5ee9c799846a3d23afa5fa2aa4af7350956136c69a0eed03cb2e", - "0xb3328e953317494a3d976e7f7c3d264258a5d4b2c88e12d06786a9e7b2affd41086762ef6124c6a6e5b6b028db933c14", - "0xa49d166065e19d39299ee870229e4a04be81acd6af3a2201f3a291a025dd5f8bc3e676ee123cd4b9d8455f6a330b395b", - "0x85fa15bc8947ba03681d87b50bd2f8238b1c07849a7ed4e065053fad46aac9dd428186a6dd69dc61b5eba6ffec470831", - "0xb6fcb2f694a47d3879b374b8b2967dcd59bd82a5d67ae6289a7326c18791b1b374e12571e8c8ea16a4bfc5525ced3ec4", - "0xb6115f52566aa90ccac2aab6d2dbf46eca296d047db1eb29a1b8a2bc2eef7a24e90407f8dae528806aceb2a1e684d49e", - "0x9707e66220233f6a48a93e8dec7b253d19075eaa79238e519b82ce1ac5562cca184f8a1c14f708a96c34ad234673d646", - "0xa0822903fb3825eae07ee9d3482277c0b8fc811856dfe4a51cf24b373f603924166fc5485185f99c4547cd6476b62270", - "0x88dac6366c439daaeee2532b2ddbe206132cf6e12befbb8e99870ac684e04e62de150cba0e22e395a0b858948f40808b", - "0xa72dfba9caad3179f43fead0f75e33ba5342470d8c9cb7c86d30d2c7ce7244a8aafd1d558b0ec8e2a9436de2c2e95ccc", - "0x8d696046defcc32cc19954c559213100f0ba273ea12abb55ca7c42818071d853846bd4213af2c41ecd4442f6b4b511b1", - "0x89d6f2d52cf65414da15a2fb1911c53afbfb50bb5f2638844abfc325ff2651cd9130be4beff05dc4046adfc44394a182", - "0xafb91abd7c2a9cfe62855ede3c6960ad037fe8778364a2746ff7c214c55f84e19a474a9a0062b52a380d3170456ee9c6", - "0x87f724a16ec8fdae8c05788fa3f823ecc3613df46581a63fc79b58f7c0dc2519b6b23e3dd441a0ca6946dfe4bc6cd0ce", - "0x86760f90f6bedfba404b234e90fbf981d26c29b87f2fa272c09540afa0f22e6682d08c21627b8a153c0feb27150458e2", - "0xad4d0342f255a232252450ce4209507ba619abfd1ffcb9c5707cfa45f89be41d88f1837acea993a1c47211b110250b4d", - "0xace54b5889bccdf1d46c4ca21ed97cca57f7d12648381411d1b64afdfc64532a12d49655776ea24cf5eabe34145705ad", - "0x936dac693d0c1b1e5de1701f0bc46aef6e439e84bc368a23c0abe942eb539a2950e8929265786fcdb18d40a44bda14b9", - "0x94fafbc544decec1d489b9ad6b23410b9de4779f9f44aabd093d7fab08340a4646a8cba31633e49c04d2690b8369a1d7", - "0x98157e757f1a677c5d9d65c47759727a4dbc49fec2da4d9889c4ea90573fb42e2a8d72eaef92b782ac6f320970f09363", - "0x8eaa0498c191c810c7e1ca7398f7c80dd0a7e7d7829ed07039490f60e7c2ae108843c06fe38fa36d45d63da46cba887c", - "0xa0ae116e5b0d2dccf83f056ad876037225687904e0290fe513fdc6b2dbe4cbf5fac1d828352e64734895895840b3c57c", - "0xb592b318dbbd7ec4872aae5e64bdf2305db2e5e8cfe0ad77b691f542ba5e066dd20b09b0b08ff0d798bd79ad946ddf7f", - "0x879e50c8c3e7f414ad2b38632bc482b71759cd561aeb2215550186ebb4559e4cf744cdf980512d8321954b3458d21e11", - "0xaed5c6c7ce0407d7b2c04785fcb9deadb9b9413e37cef5b1d918f474cccc7de012fe1fa6f5fa93cb7ef9ac974d9fbc20", - "0x892274a9f0afc68fa74be276c2a16de5cec674193f96b27a80bbb9f3add163f85716b531f3c920b98577a0225f84e8ca", - "0x938fb7a53266b997a7669596577af82f5289b160b7fcf06d76eee2a094696f6f12b28c2c65b833a52529a116c42e6c7e", - "0x892083929b6067f5045b1208f3dc8f0ee25bd0533a8831f5c23bb4ff46a82d48f0a34523359df5061d84a86b718d5060", - "0x99159ae9574df6c16273eda66b6d8b79a327940e335b28c75d647f4744a009f4b5f0f385e2017bd3e7fbf59e629cd215", - "0xa03e5757ef7738eba32d396923ff7ef82db2c15bb6adc8770fcb37260b7bda3be62473bc352a9a2ef7ec8ebe0d7688bc", - "0xae3c24a85c9b1fa55158b2acd56d2016f70dca45a23f3ef7e0c6b096f4a7c54c14020d61bec7c7f87be4a595bf254209", - "0xa920a6f9cc803fe31352fca39c13f8ac1e8d494fcf11b206092227c2af38469b1fbc068b8fe014800b70f137107aafc4", - "0xb893853be57519ffa6410da605e7d3a746ebadec4788c7907f6e0dde9f20f5a6a01181148b874b3decf9b4814846a11a", - "0xb46f43918c5195729f6532439f815d1eb519e91005bc641a4a30ae88700982bf4ed07a342e77945780317c297c903755", - "0x8e431bf4497d0ef6538c93c4bdda520179301a0104eebcfd104efa1edea876818d7d31079656f01a5ff76c4f5fcd71df", - "0x92e3dbcb580dfb9cc998f878052b0c3be1c5119e5249ae9bad3538ebb0f0c4ab5a959b04033b96d61836ef07784e6b64", - "0xb712d9d63aa888156f4ec83e939c6bad53de18045f115f54fbf4261fb02f10a8a46a8d716ab43d4acbad3b02283c32fc", - "0xb2334e776988b4f772446a47c87416b4f19f9b44164a5f828424d3f35ef10baa56afe810d49b0b86b786b9c0227681a6", - "0xa3f25ad18e435ef585fa90e6cef65a8ba327e5e33701979e27e64ef7d8e09e2591e52bff9c5749d35643456d18625685", - "0xadcfa48ae43cac6fa9866b4cce10a243969965942c891d5e6c0e5b03bd4763f9b63779fbf40d26ac674534fe7cc478d7", - "0xa0eb3448e045038740e2ee666e88aa0f8b8e24b1b55d7d4964f01bfc0c581f7e9d4c0e79f8cfbfecfa8b024b216c8ea6", - "0x8110aa1d82f11965af4f4eedb4de09ee9c353481b2d7ee7a2bc2f302d2a5ae6c31ebc6451309ba7c305da41070b0f666", - "0xb074fdad419d42783ebda17f19863aa499eec71fda5aab6cdcc389276b7bf08053795d15890175ca3dc89f6d8d17758c", - "0xa14665846d95d7d5f0b5381502080c822776ec0994ccb1ae1ffbb3f19205ce9c7c9bf9c2d2ca098807ce99f29e4f07a0", - "0xb4884842670a333cb5548a842fa2971881e26b442dfab0b91d6bf3b4cbdf99adbbc9d14fe2bb46872cfcabedae85db30", - "0x94549b01cb47ba16c0cf6f7522c833545397de0b3388c25d03e60132eddada6401682f9ffd8c50d1a61b4d2dde37461f", - "0xa790c9b4cec96e4c54777f3e03cea5769b20382cdcaf1de494bac2b9425eaf453eff643c62ab284cc1af33bbd36013be", - "0xb1b45fd298ed11609aa1ae6c5ac655e365bb451de1b9fc92aad40422ba85c6a454f33b8142acabe55171328c13d92edf", - "0xa74cea9e7096e38327064f058a3cdaa34e6eafaa9c7d58f753c40be67998152380fbd612b9dc0751bda7befcdffcc749", - "0xb18978dfc5efb07b7ef992c7b0cf5d1b4ca551578b1dd13057b7aced8b1deb9f2036e1e3116248a803e922659d206545", - "0x8153c07603cdff6622835a9853b795274390abf7197d7a192193bec44acb43e8cd50b56c11a03f4a2a27124c36974f3d", - "0x86b987f30bb9a37cc91d22dffffcd346ec5773e846a6c2b8f9e03b25ffcae859c470c901c4e29695d325dfe4eee927bd", - "0xaf5e980b9507d10d5269c1a5d02bc16f4f009b663e413ea6a7c655250f3a21c608c12f4002269a05d3779907e7be7d69", - "0xa6f737fab2af9f27bfb8ca87f5fdab6ad51e73ccf074e90576db57b309dfa0a95f9624526dfa4feaef39c388802f2ae9", - "0xb7ed51f699f615f58a7ff4f99d52c4ce7a8d662843c1f4d91f1620fa119b80a0f6848f9fb6c4b9822dc019830e7dfd11", - "0xb71f27f291aa6ef0723ed79c13a1c7a1c40198ffb780a129d9d20e250406bc91f459705b2b6674c9bb412a7b5dd9ff07", - "0x9698cf8f638c3d2916fefa5f28c6050784479f84c2ee76a8aeda7e562630a6ae135b445ec4e29af8588ca5ad94a67f49", - "0x9270aa5030966a9990d8bc71b00b9a7a1d7c1ad8f4c7f78a31b3d7f86467332f21407c74a89ba4f574d723acaf0d2042", - "0xb1b82faceed8e2297cd49cc355471d15ff8dc2ccc78f6944c8f7a75d3ad1629a2e2f1d0a2ff7fa2b3c38cd19839aa5e9", - "0x8a8c4ed49dc9bd961773edf8d41d04385b11bbd3577024639a39319cc7068380236bf73fce0b83e6535bd3f95cef0e65", - "0x8d04ec1e7d148b7e66910ab45a0e6bf409612a3b560bfa784e26f2963152821c646a655cf17a0ce3d4ba4c4ebeeb4a1e", - "0x8e9d707f6186d93accb60813715ed1f6b3001ff6d2f87daf8b906bd0b988c1833b2ccd80dee9bdefb45901e81bb82971", - "0x9762317ca6a5e6fe0b2991e0fa54b5fbf419dd0550d70074957d65cd7ebf79ceba607dd40d709ed635c822b3b4da2cac", - "0x82b53cd9a1eca2f5d3256723dc4b6531ca422bd87bab36243c727d1952db58d7288ab11467305d875d172ce165b1e4a5", - "0xb4dbeafa05c87029ae257bee1ed7603645fab41f6ba7ac8b57ced5b4774a72ba3e671c2433a93acc3c498795b5cccc42", - "0xa916d3ab7f0e7cef294e11c97c910a19c338ad8e615406e6d1c8995b4a19c3b2527100cc6b97a950ec5a4f3f6db7d01a", - "0xb9a785c7123609bdc96f8dd74500c6c77831d9d246f73244de964910b4045ce3242c881271bb1a4bc207d67de7b62e97", - "0xb5f94084f695d0821c472e59c0b761e625b537c8ae3a09f11d9a57259e148cfadba1e43bf22c681b6b32390121cec208", - "0x8f91b36d8570f19a90cf3ed6d5bb25f49a3315ddb566280c091fe2795c4e25ed2c6a1ef8d2669b83f2d7bb78fc8c40f5", - "0x80f27359a73ed8fdd52762f0c7b9f676be2398b1f33c67877261480bf375f975f626c2ca3e7a9f59634db176ed672c98", - "0xb96b91e3d5148ca793edefe4ca776b949c9305acb6f3a3cf87767a684014d2c8f2937c2c672eef8510f17d2da5d51385", - "0x99c4e1ca2cabd4388ea2437dbdf809013d19be9bd09ff6088c8c0cfdb9ecf8fd514391a07b4288dd362434638b8834d9", - "0xb6fdfb812e145f74853892c14f77c29b0c877d8b00055fd084b81360425b3660cd42236ecc853eadb25253e1cd8445c4", - "0xa714af044ef500104576898b9409a9a326ef4286a45c3dae440bd9003fdf689c5f498f24a6f6d18502ce705c60a1cf14", - "0xa9444e201be4a4d8c72119b3d3b13098afee6e5d13c5448fa2e9845cc9188239778f29b208749c960571dfa02b484f05", - "0x91c826a6b8425f93ff395d9fdfa60dbfa655534c36c40a295906578540b9a0e6b94fd8d025b8b8611433022fbbc4fb0b", - "0xa355d76bc3cc48ba07026197130f25a593ec730d2ef0d5d2642bfcad745ecbe5c391324bc2485944060ff3100c952557", - "0xb5f9b5a289a6f9a7252cc1f381c892bdb6836a5998f323ee21ae387936148ad1ad7cc6eca37ecece36404b958ae01e8e", - "0xa3c7ae04a6208851f6cc40ff270047283b95218905396c5dedc490e405061cbefd1251ecf77837d08c5ec1c77d2776ce", - "0xaa02ee387dd2cc7a23cf5cd582da0bc84bb33a7158d76545cbd6e06b26a6f30565dc712d7a8594c29f0529a892138802", - "0x8aff025c841f167fadaf77a68284c355ace41d6df3a9f1e41a6e91454b336f0b69ea34cce495839b642a7c43997a8fd9", - "0x82eccf0b6b4b6460f676d677266451d50f775446df313fc89bdf4c96e082340f6811939d215a54ba0fe30c69b3e43e25", - "0xaf324d871b038ff45a04366817c31d2c1e810359776fb57ac44907c6157004e3705476574e676b405d48a48bfb596f59", - "0x9411dcca93ef5620ce375f379fea5c1017a2dd299e288e77b1ab126273631a299d7436f3bf3c860bf795e5faaaefa804", - "0x934fca809e66f582c690c3778ea49de2e7940c0aeb8d7edad68f2edccdfda853d2c4844abd366fbc2215348935e4b2e2", - "0xa1b1fa4c088418f2609d4dea0656b02a8ee664db25f40d53d8f4b1be89a55e5abecbf2c44c0499874abeb3d3a80acf71", - "0xae6ed7a0ba6280c679b0bf86111afad76fc5d930e9fb199df08134ba807f781d7e0b8b9b2c8c03b02d8cc20dbe949a28", - "0x937d200a72fe4ab8d52f6cb849e322bc5959632b85a93c89744b33e832e8dcf1dddd6ffac0c049b03c105afb8930f7f5", - "0xb4b4a46ebe0c5db16004933c08ad039d365db600a13d68be5346b1c840cce154f56c858874e866de8c3711e755c6e5dd", - "0xafcbcb7170c8caa2b77d2b3388dc2f640aeb9eff55798aeceb6eb6494438be05a2ae82f7034b2d439a45ad31d8c64b07", - "0xa2c676273081b8761f58e0b11306ddb6a4cde3d90e7c47b434468700c5b749932819b01efd7637ca820e10fc28dfb427", - "0xb445715162d834c9ee75ac2ff8932ace91c8242d67926b2a650217e4765e0531c2393c9438a52852d63dbbe2cceaafc5", - "0xa0c0ebdc1480fb238a25fbfc77fae0db6e5e74b91809f0ff20a819e56b8c3141549615d1bd7b99829898f6028e8c86be", - "0xb3d11933e9d1db8ca617934261ed26c6f5ca06ba16369e7541482bf99c4f86520d43fbb10f4effb2fdf3cc70a189fdb5", - "0x888ac610f8fd87a36b5646e1016eaf6dbca04aa0cc43f53a1046d74a658c4d2794606e79fb07fae57cf9d71ed339f4b6", - "0x979818dab00c58435dc0d0d21185943f95819d2a13531abd2d798e1773c4bbd90047f4eebe117868743db75604a50227", - "0xa6fbcd2656e475065fe44e995e8e2b5309b286b787a7597117e7acc3bb159e591a3e7304ef26f567b5720799d8ae1836", - "0xa03f0ac08d2101ec4d99ca1443eea0efa767a65448a8ecd73a7818a99e863a04392bec8c5b8e5192834e8f98d4683f13", - "0xb3c4ea8c6c3ee8aab2873d446ad702000b0e927e0991c9e30d83c6fe62a604efdc3ac92453313ff0d5e0ac6952922366", - "0xab25c857f26830631113d50145e961441b5e35d47b9e57f92466654dffebde43e4f78b0867d20929f97c2888c2f06509", - "0x98950aa5a70ef41f274775f021a284d4d801a2efe2dea38460db8a3a8c08c243836d176e69127c2cd17497b0ca393e9e", - "0xa9698113febfb6d87fcb84bad82ce52d85a279d3a2933bdd179d53cfe8d6c6c68770e549a1e2947e7528a0e82c95d582", - "0x832b504513266259db78478bd1b5a3b0f3bf2c6d25f1013e64bf0cfae9dc23da8ecd25f7f1047d2efb90e5f1d9b4b3cc", - "0xb588bba7bcc0d268ab260d5c1db2122cee7fd01583c7cc27a8ae6b48b29f34c6ea8a6acbb71b9b09c6156ec0a0766142", - "0xa73d2223c7afadc381951a2e9e7bcb7b5c232369f27108c9f3c2ced2dc173e0f49531d0ca527eb142fbb70285307433f", - "0x9152cd6b97bd3278465348dde2095892f46342aed0e3d48675848c05b9aee6ef5ad7fe26e0dcd4ab176532289d40eedd", - "0xa7812a95a43b020721f688dd726356dda8ebe4de79b4f0fdef78615795e29681bff7c6ff710ff5b2d6ae3fd81bdb8507", - "0x83724c16049e9eaae3269ea8e65caa212f0592e0190b47159bb3346208ccb9af3cfe8f6c3176fa566377da1046044ab8", - "0x877634ec37c7dcd3b83705b103c31013697012795f11e8abf88d54bc84f2c060f665f0c3b14ef8087d3c6a8a7982d64f", - "0xb3e53aaacef7a20327bdbba8cd84513534d2e12fd5e1dcf2849f43146e098143b539ebd555623d0ecc46f5ebb4051fca", - "0x952d58ecafca9b7ffc25768ee4f05ce138f0289d72978eb5e5d3b23a0daedcb17478890afdce42e30d924d680e13c561", - "0xa10dcc725f9a261de53dd3133858c126f6aa684cf26d92bce63a70e0ff5fff9610ad00d2b87e598b0a7548cfd1ffe713", - "0xb7bc5d0c6b665d5e6f4d0af1c539d8a636550a327e50a0915c898ac494c42b3100e5fae0074c282d1c5073bf4a5456fb", - "0x8adc330d3b49ddf3ed210166afc944491aaedb28cb4e67472aeb496f66ce59184c842aa583bfb1a26d67d03b85065134", - "0xb2df992a1310936394a1ebca94a7885b4c0a785638f92a7b567cfb4e68504ac5966a9e2b14891d0aa67d035a99e6583a", - "0x96f5da525d140739d19cebb706e2e1e0211edea1f518e040d361d5aca4c80f15be797f58cb4cd3908e4c360c18821243", - "0xb2c0d9173a3d4867c8842e9b58feb1fb47f139f25d1e2332d6b70a85a58811ef99324bf8e52e144e839a4fe2d484e37b", - "0xad95a7631ddb4846d9343d16533493524dfd22e8cbfc280a202343fccee86ab14446f6e7dad9bad9b4185c43fd5f862e", - "0x97f38ab82a51a7a792d459a90e7ea71c5a2f02d58e7d542eb3776d82413932737d9431bd6b74ec2a6a8b980d22d55887", - "0xad4e4c57ec3def5350c37659e8c15bd76d4c13d6de5453493123198dda2c2f40df349f20190e84d740a6b05e0b8f3deb", - "0xa691bc10810d11172a6662e46b6bbc48c351df32f325b319553377f525af44a50aaa02790c915b3a49824aa43f17fff0", - "0xa80ccac79bb4014ee366dbf6e380beb61552bd30ef649d4ec39ab307e4139b7775e776fab30831517674ff3d673566f6", - "0xb11e010b855d80e171705ab9e94364c45998e69d9120e4ca4127049b7a620c2eec1377356e7b877874e767f7c44afef4", - "0x96bfab7777769a1e00ce16ada6667a0d21d709e71bd0371c03002427d138d9172640cdd5c529c710fea74bb9d19270c7", - "0xa5bffd2c30e29633b4ecf637c1e792c0378252e2a99b385a093675940b48de2f262c275332ed4765f4a02467f98e3ddd", - "0x8d11929d67a6bd8a835b80660a89496250c766e713bddb2cd7052d67b92c39a38ce49005d38b4877856c4bef30fb9af4", - "0x8e704597a0dba1dbd1ff8c9755ddac3f334eeeb513fd1c6b78366603ebc1778231deb8e18f2889421f0091e2c24d3668", - "0x904fbb3f78a49e391a0544cf1faa96ba9402cba818359582258d00aff5319e3c214156cff8c603fbc53a45ede22443e9", - "0xaf12ac61eaa9c636481a46fd91903c8a16e7647534fc6fd9baa58ae2998c38ffbd9f03182062311c8adfef0a338aa075", - "0x87f2e544b2993349ab305ab8c3bf050e7764f47d3f3031e26e084e907523d49e1d46c63d0c97b790394f25868e12b932", - "0xa279a7bef6de9d4e183e2bedaf8c553fadfc623a9af8785fe7577cadced02b86e3dab1e97b492d4680c060ea0126abeb", - "0x8ece08667ed826f0a239cea72e11359f7e85d891826292b61d4edbdc672f8342e32c66bec3e6498016b8194168ba0e0d", - "0x90a15162586e991b302427bc0307790a957b53ab0e83c8b2216f6e6302bc496cb256f0f054ff2cccdfe042763de00976", - "0x9966c0413b086a983f031a39080efde41a9fedcaf8e92897ce92e0c573b37981f5ea266b39dc4f4fb926a1bce5e95ad7", - "0x9515be2f65a57e6960d71bfb1917d33f3f6d8b06f8f31df30fc76622949770fea90ff20be525ae3294c56bc91efb7654", - "0x86e71c9b4059dc4fd1ce7e28883e4f579a51449cab5899e371118cdb6afe2758b1485961ca637c299896dea7c732151b", - "0x8695b4ff746d573f8d150f564e69fe51c0726c5d14aa1d72d944f4195e96165eca7eba8cac583fd19d26718b0ce3eb61", - "0x813eecf402151c99c1a55b4c931716e95810fc4e6d117dfc44abbf5ef8dcdf3f971d90d7fa5e5def393681b9584637e0", - "0xa9caf7219eed1db14b7b8f626f20294a3305ed1f6c22f6a26962772c2fa3e50b5234f6d9ba7fa5c3448824c2a15271b3", - "0xb2b2ee20de9b334f2d82cbe0d2e426ca1f35f76218737d0069af9b727a1bfc12d40cf8b88d4afcbeaadf317b7f7ad418", - "0xb853960749521a17ff45f16ac46813d249c4e26e3c08fd33d31ef1ed2b2e157c9cb18bd2454fb5c62690bdd090a48f60", - "0x88772297d2972471b3db71f3ddbf5945a90154768ca49fa6729a5e2299f1795445fb3d4d969d1620e87dca618fbc8a6c", - "0xa2bb783fd13aee993e3efd3a963ebc8a8eacfc8450042f018f2040353de88c71ac784b0898bdff27f606c60a3d5ef2c6", - "0x9210903ac619edca0cb8c288ed6dcc93c472f45182cd6614a8e2390801ddea41d48a4ac04a40e2f0adfd48f91aabe2ea", - "0xa621d00f83260c22db9fa28757ea81dabcc78b10eeaaf58b06b401db6cc7a7d9a6831a16f171ead4e8506d0c46a752ca", - "0xb25c525bf6761a18bbd156ac141df2595940c7b011ed849dbb8ac3a2cd2da6b63ba4755324d70dc14c959deb29fb9ad3", - "0xa35111d0db3e862e1b06249d289e0fc6b110877d254f2ae1604fb21292c227a8b6d87dd17a7b31166038d6860b1bd249", - "0x90bf057309867d95f27637bd10ef15ceb788f07d38aca7ad7920042293d7c4a1a13d4ca1d6db202864d86d20a93e16cf", - "0xa88510e110b268d15dcd163ba1e403e44b656771399ac3a049dcb672a1201e88bf60bdd1d303158888a3d30d616cc0bd", - "0xb33b7e1f765e9cbd5eeb925e69c39b0a9ea3348ab17f1dbb84b66f4a4b3233e28cbdeb0903d6cfe49ec4fc2f27378ff9", - "0xb777da64fa64d9bc3d2d81b088933fce0e5fcc29c15536159c82af3622a2604c2b968991edea7b6882c9e6f76b544203", - "0x8ea598e402a056fd8031fbf3b9e392347999adc1bd5b68c5797a791a787d006e96918c799467af9ac7f5f57eb30b4f94", - "0xb6901a389bf3b3045e679d015c714d24f8bbe6183349b7f6b42f43409a09f0d5bd4b794012257d735c5fdf6d1812554b", - "0xb5866426336d1805447e6efc3f3deb629b945b2781f618df9a2cc48c96020846e9108f9d8507a42ba58d7617cb796c31", - "0xa18ccc6ad1caa8462fa9bec79510689dd2a68d2e8b8e0ddbeb50be4d77728e1d6a18748a11e27edd8d3336c212689a4d", - "0xabbd48c48a271b6b7c95518a9352d01a84fb165f7963b87cdc95d5891119a219571a920f0d9ceedc8f9f0de4ab9deb65", - "0x94a4e5f4d7e49229e435530b12a1ff0e9259a44a4f183fb1fe5b7b59970436e19cf932625f83f7b75702fd2456c3b801", - "0xaf0a6f2a0d0af7fc72e8cb690f0c4b4b57b82e1034cca3d627e8ef85415adec8eb5df359932c570b1ee077c1d7a5a335", - "0x9728025e03114b9e37ed43e9dcba54a2d67f1c99c34c6139e03d4f9c57c9e28b6b27941d9fca4051d32f9b89bec6537b", - "0x941601742d1e1ec8426591733a4f1c13785b0a9b0a6b2275909301a6a3c6c1e2fb1ffa5fdcc08d7fb69f836ae641ced5", - "0xb84b90480defd22f309e294379d1ca324a76b8f0ba13b8496b75a6657494e97d48b0ea5cfdb8e8ac7f2065360e4b1048", - "0x95cc438ee8e370fc857fd36c3679c5660cf6a6c870f56ef8adf671e6bf4b25d1dbad78872cc3989fdfe39b29fc30486d", - "0x8aafba32e4a30cad79c5800c8709241b4041b0c13185ea1aa9bc510858709870b931d70b5d9a629f47579b161f1d8af7", - "0x865b0155d9013e80cba57f204c21910edbd4d15e53ae4fee79992cb854dc8b8a73f0a9be92f74893e30eb70f270511bc", - "0xb9a49ce58d40b429ac7192cdbf76da31300efc88c827b1e441dd5bdb2f1c180d57808c48992492a2dc5231008629159f", - "0x8d1438b10f6cd996494d4c7b5a0841617ec7cf237c9e0956eac04fda3f9ded5110ec99776b816e3c78abd24eb4a9c635", - "0xaf2dd18211bb8a3e77c0a49d5773da6e29e4e6fa6632a6eeb56c4be233f6afe81655d977932548de2be16567c54ffbd7", - "0x92b92443f44464f2b48002a966664a4267eae559fa24051983bcf09d81bed5bcc15cb6ff95139d991707697a5d0cc1ab", - "0xa1864a2bac0c0dd5b2fb1a79913dd675fe0a5ae08603a9f69d8ca33268239ac7f2fed4f6bf6182a4775683cb9ccd92a8", - "0x948e8f1cf5bd594c5372845b940db4cb2cb5694f62f687952c73eb77532993de2e2d7d974a2ced58730d12c8255c30a2", - "0xaa825c08284fa74a99fcfc473576e8a9788277f72f8c87f29be1dd41229c286c2753ff7444c753767bd8180226763dfc", - "0x8384d8d51415e1a4d6fe4324504e958c1b86374cc0513ddf5bcbffabb3edcf4b7d401421e5d1aa9da9010f07ef502677", - "0x8b8223a42585409041d8a6e3326342df02b2fe0bcc1758ff950288e8e4677e3dc17b0641286eaf759a68e005791c249c", - "0xa98a98cc2fb14e71928da7f8ce53ab1fb339851c9f1f4bceb5f1d896c46906bd027ef5950ca53b3c8850407439efedd4", - "0x866f44d2e35a4dbffe6cd539b6ef5901924061e37f9a0e7007696fb23526379c9b8d095b417effe1eecda698de744dcb", - "0x91774f44bf15edafdf43957fdf254682a97e493eb49d0779c745cb5dbe5d313bf30b372edd343f6d2220475084430a2e", - "0xab52fc3766c499a5f5c838210aada2c3bcc1a2ec1a82f5227d4243df60809ee7be10026642010869cfbf53b335834608", - "0xa0e613af98f92467339c1f3dc4450b7af396d30cefd35713388ccd600a3d7436620e433bf294285876a92f2e845b90d0", - "0x8a1b5ca60a9ae7adc6999c2143c07a855042013d93b733595d7a78b2dc94a9daa8787e2e41b89197a0043343dbd7610f", - "0xae7e4557bc47b1a9af81667583d30d0da0d4a9bb0c922450c04ec2a4ae796c3f6b0ede7596a7a3d4e8a64c1f9ee8ff36", - "0x8d4e7368b542f9f028309c296b4f84d4bde4837350cf71cfe2fa9d4a71bce7b860f48e556db5e72bc21cf994ffdf8e13", - "0xaf6ed1fbff52dd7d67d6a0edfa193aa0aab1536979d27dba36e348759d3649779f74b559194b56e9378b41e896c4886f", - "0xa069ba90a349ac462cac0b44d02c52a4adf06f40428aef5a2ddff713de31f991f2247fc63426193a3ea1b1e50aa69ded", - "0x8750f5f4baf49a5987470f5022921108abe0ead3829ddef00e61aedd71f11b1cdd4be8c958e169440b6a8f8140f4fbf9", - "0xa0c53cefc08a8d125abd6e9731bd351d3d05f078117ff9c47ae6b71c8b8d8257f0d830481f941f0c349fc469f01c9368", - "0x94eea18c5ed056900c8285b05ba47c940dff0a4593b627fdd8f952c7d0122b2c26200861ef3e5c9688511857535be823", - "0x8e1b7bd80d13460787e5060064c65fbcdac000c989886d43c7244ccb5f62dcc771defc6eb9e00bae91b47e23aeb9a21f", - "0xb4b23f9dd17d12e145e7c9d3c6c0b0665d1b180a7cfdf7f8d1ab40b501c4b103566570dca2d2f837431b4bf698984cad", - "0x847a47c6b225a8eb5325af43026fb9ef737eede996257e63601f80302092516013fde27b93b40ff8a631887e654f7a54", - "0x9582d7afb77429461bd8ebb5781e6390a4dde12a9e710e183581031ccfacd9067686cfaf47584efaafeb1936eae495cc", - "0x8e4fd5dbd9002720202151608f49ef260b2af647bd618eb48ebeceeb903b5d855aa3e3f233632587a88dc4d12a482df9", - "0x87b99fe6a9c1d8413a06a60d110d9e56bb06d9f0268dc12e4ab0f17dd6ca088a16ade8f4fb7f15d3322cbe7bfd319ae1", - "0xb562d23002ed00386db1187f519018edd963a72fca7d2b9fcaab9a2213ac862803101b879d1d8ac28d1ccae3b4868a05", - "0xb4cc8b2acacf2ce7219a17af5d42ce50530300029bc7e8e6e2a3c14ff02a5b33f0a7fecb0bb4a7900ea63befa854a840", - "0x9789f0fe18d832ff72df45befa7cabf0a326b42ada3657d164c821c35ac7ed7b2e0eba3d67856e8c387626770059b0c3", - "0x986c6fe6771418549fa3263fa8203e48552d5ecb4e619d35483cb4e348d849851f09692821c9233ae9f16f36979c30c2", - "0xa9160182a9550c5756f35cea1fe752c647d1b64a12426a0b5b8d48af06a12896833ec5f5d9b90185764db0160905ca01", - "0x82614dbd89d54c1e0af4f6ffe8710e6e871f57ef833cbcb3d3d7c617a75ec31e2a459a89ebb716b18fc77867ff8d5d47", - "0x8fc298ffba280d903a7873d1b5232ce0d302201957226cddff120ffe8df9fee34e08420302c6b301d90e3d58f10beeb9", - "0x898da9ac8494e31705bdf684545eee1c99b564b9601877d226d0def9ec67a20e06f8c8ba2a5202cc57a643487b94af19", - "0x88218478d51c3ed2de35b310beedf2715e30208c18f046ee65e824f5e6fd9def921f6d5f75fd6dde47fa670c9520f91a", - "0x89703ae7dff9b3bc2a93b44cdbab12c3d8496063a3c658e21a7c2078e4c00be0eecae6379ee8c400c67c879748f1d909", - "0xa44d463477dece0d45abb0ebb5f130bfb9c0a3bbcd3be62adf84a47bbd6938568a89bc92a53ca638ff1a2118c1744738", - "0x95df2b4d392143ee4c39ad72f636d0ed72922de492769c6264015776a652f394a688f1d2b5cf46077d01fda8319ba265", - "0xaa989867375710ed07ad6789bfb32f85bdc71d207f6f838bd3bde9da5a169325481ac326076b72358808bd5c763ba5bb", - "0xb859d97d0173920d16bc01eb7d3ddd47273daac72f86c4c30392f8de05fee643e8d6aa8bebdbc5c2d89037bc68a8a105", - "0xb0249ec97411fa39aa06b3d9a6e04bbbcd5e99a7bc527273b6aa95e7ae5f437b495385adaefa4327231562d232c9f822", - "0x8209e156fe525d67e1c83ec2340d50d45eba5363f617f2e5738117cdcc4a829c4cc37639afd7745cbe929c66754fd486", - "0x99fd2728ceb4c62e5f0763337e6d28bf11fbe5df114217f002bc5cd3543c9f62a05a8a41b2e02295360d007eaab796a6", - "0x902ebc68b8372feeaf2e0b40bd6998a0e17981db9cc9d23f932c34fbcc680292a0d8adcea2ad3fb2c9ed89e7019445c2", - "0x8b5653f4770df67f87cb68970555b9131c3d01e597f514e0a399eec8056e4c5a7deed0371a27b3b2be426d8e860bf9f2", - "0x8f5af27fdc98a29c647de60d01b9e9fd0039013003b44ba7aa75a4b9c42c91feb41c8ae06f39e22d3aed0932a137affa", - "0x81babb9c1f5bcc0fd3b97d11dd871b1bbd9a56947794ff70ab4758ae9850122c2e78d53cb30db69ece23538dc4ee033e", - "0xb8b65d972734f8ecae10dd4e072fa73c9a1bf37484abcfa87e0d2fcecac57294695765f63be87e1ba4ec0eb95688403a", - "0xb0fe17d0e53060aef1947d776b06ab5b461a8ef41235b619ca477e3182fadaf9574f12ffc76420f074f82ac4a9aa7071", - "0xae265c0b90bf064d7a938e224cb1cd3b7eca3e348fbc4f50a29ac0930a803b96e0640992354aa14b303ea313cb523697", - "0x8bc10ffde3224e8668700a3450463ab460ec6f198e1deb016e2c9d1643cc2fe1b377319223f41ffeb0b85afd35400d40", - "0x8d5113b43aea2e0cc6f8ec740d6254698aff7881d72a6d77affd6e6b182909b4de8eb5f524714b5971b418627f15d218", - "0xae2ef0a401278b7b5d333f0588773ec62ead58807cdee679f72b1af343c1689c5f314989d9e6c9369f8da9ce76979db6", - "0xb9c1cb996a78d4f7793956daaa8d8825dd43c4c37877bc04026db4866144b1bf37aa804d2fe0a63c374cf89e55e9069f", - "0xa35f73851081f6540e536a24a28808d478a2bb1fd15ee7ff61b1562e44fbafc0004b9c92c9f96328d546b1287e523e48", - "0x82007f34e3383c628c8f490654369744592aa95a63a72be6e90848ad54f8bc2d0434b62f92a7c802c93017214ecf326e", - "0x9127db515b1ed3644c64eaf17a6656e6663838fed4c6612a444a6761636eaaeb6a27b72d0e6d438c863f67b0d3ec25c5", - "0x984c9fcc3deccf83df3bbbb9844204c68f6331f0f8742119ba30634c8c5d786cd708aa99555196cf6563c953816aec44", - "0xa0f9daf900112029474c56ddd9eb3b84af3ed2f52cd83b4eb34531cf5218e7c58b3cab4027b9fc17831e1b6078f3bf4a", - "0x90adbcc921369023866a23f5cea7b0e587d129ad71cab0449e2e2137838cea759dec27b0b922c59ac4870ef6146ea283", - "0x8c5650b6b9293c168af98cf60ad35c945a30f5545992a5a8c05d42e09f43b04d370c4d800f474b2323b4269281ca50f8", - "0x868d95be8b34a337b5da5d886651e843c073f324f9f1b4fbd1db14f74aba6559449f94c599f387856c5f8a7bc83b52a1", - "0x812df0401d299c9e95a8296f9c520ef12d9a3dd88749b51eab8c1b7cc97961608ab9fc241a7e2888a693141962c8fd6d", - "0xabda319119d8a4d089393846830eee19d5d6e65059bf78713b307d0b4aad245673608b0880aa31c27e96c8d02eff39c0", - "0x887f11ae9e488b99cb647506dcaa5e2518b169ee70a55cd49e45882fe5bfb35ffaf11feb2bf460c17d5e0490b7c1c14d", - "0xb36b6e9f95ffff917ca472a38fa7028c38dc650e1e906e384c10fe38a6f55e9b84b56ffa3a429d3b0c3e2cf8169e66a9", - "0xa0450514d20622b7c534f54be3260bab8309632ca21c6093aa0ccc975b8eed33a922cbcc30a730ccc506edf9b188a879", - "0x87cfaf7bcd5d26875ca665ac45f9decd3854701b0443332da0f9b213e69d6f5521ae0217ec375489cd4fad7b4babf724", - "0x842ad67c1baf7a9d4504c10c5c979ce0a4d1b86a263899e2b5757407c2adcdcf7ed58173ad9d156d84075ef8798cb1c4", - "0xac1a05755fe4d3fb2ab5b951bafe65cca7c7842022ca567b32cddf7741782cbf8c4990c1dd4ea05dc087a4712844aebb", - "0xa000c8cecc4fddeb926dc8dd619952bc51d00d7c662e025f973387a3fc8b1ef5c7c10b6a62e963eb785e0ec04cb1ffbe", - "0x8a573c9986dbeb469547dfd09f60078eab252d8ec17351fe373a38068af046b0037967f2b3722fa73ed73512afd038d2", - "0xb8dff15dff931f58ba05b6010716c613631d7dd9562ae5138dbec966630bcdb0e72552e4eefc0351a6a6b7912d785094", - "0x990e81fd459433522e8b475e67e847cb342c4742f0dbf71acc5754244ccd1d9ff75919168588d8f18b8aea17092dd2a4", - "0xb012f8644da2113bef7dd6cdc622a55cfa0734bd267b847d11bba2e257a97a2a465c2bb616c240e197ff7b23e2ce8d8e", - "0xa659bd590fde467766e2091c34a0b070772f79380be069eef1afecc470368a95afd9eed6520d542c09c0d1a9dca23bd0", - "0xb9239f318b849079477d1cf0a60a3d530391adacd95c449373da1c9f83f03c496c42097c3f9aca10c1b9b3dbe5d98923", - "0x851e9a6add6e4a0ee9994962178d06f6d4fbc0def97feef1ba4c86d3bcf027a59bafa0cf25876ca33e515a1e1696e5cc", - "0x803b9c5276eed78092de2f340b2f0d0165349a24d546e495bd275fe16f89a291e4c74c22fdee5185f8fce0c7fbced201", - "0x95915654ca4656d07575168fb7290f50dc5dcbbcdf55a44df9ec25a9754a6571ab8ca8a159bc27d9fa47c35ffd8f7ffd", - "0x88f865919764e8e765948780c4fdd76f79af556cd95e56105d603c257d3bfb28f11efca1dfb2ce77162f9a5b1700bac8", - "0xb1233131f666579b4cc8b37cfa160fc10551b1ec33b784b82685251464d3c095cdde53d0407c73f862520aa8667b1981", - "0xa91115a15cf4a83bda1b46f9b9719cfba14ffb8b6e77add8d5a0b61bea2e4ea8ce208e3d4ed8ca1aab50802b800e763a", - "0x93553b6c92b14546ae6011a34600a46021ce7d5b6fbfcda2a70335c232612205dbe6bfb1cc42db6d49bd4042c8919525", - "0x8c2a498e5d102e80c93786f13ccf3c9cab7f4c538ccf0aee8d8191da0dbca5d07dff4448383e0cf5146f6d7e629d64f8", - "0xa66ab92c0d2c07ea0c36787a86b63ee200499527c93b9048b4180fc77e0bb0aa919f4222c4bec46eeb3f93845ab2f657", - "0x917e4fc34081a400fc413335fdf5a076495ae19705f8542c09db2f55fa913d6958fa6d711f49ad191aec107befc2f967", - "0x940631a5118587291c48ac8576cdc7e4a904dd9272acb79407a7d3549c3742d9b3669338adbc1386724cc17ee0cc1ca3", - "0xae23ae3a531900550671fd10447a35d3653c5f03f65b0fdffe092844c1c95d0e67cab814d36e6388db5f8bd0667cd232", - "0xae545727fca94fd02f43e848f0fbbb1381fd0e568a1a082bf3929434cc73065bfbc9f2c840b270dda8cc2e08cd4d44b0", - "0x8a9bc9b90e98f55007c3a830233c7e5dc3c4760e4e09091ff30ee484b54c5c269e1292ce4e05c303f6462a2a1bd5de33", - "0xa5a2e7515ce5e5c1a05e5f4c42f99835f6fde14d47ecb4a4877b924246038f5bc1b91622e2ff97ed58737ed58319acfa", - "0x8fa9f5edf9153618b72b413586e10aaa6c4b6e5d2d9c3e8693ca6b87804c58dc4bf23a480c0f80cb821ebc3cf20ea4fc", - "0x925134501859a181913aadac9f07f73d82555058d55a7d5aaa305067fbd0c43017178702facc404e952ea5cfd39db59b", - "0x8b5ab1d9b5127cb590d6bddbf698ffe08770b6fc6527023d6c381f39754aecc43f985c47a46be23fe29f6ca170249b44", - "0xaa39c6b9626354c967d93943f4ef09d637e13c505e36352c385b66e996c19c5603b9f0488ad4014bb5fc2e051b2876cc", - "0x8e77399c6e9cb8345002195feb7408eb571e6a81c0418590d2d775af7414fc17e61fe0cd37af8e737b59b89c849d3a28", - "0xa0150aeca2ddc9627c7ea0af0dd4426726583389169bc8174fc1597cc8048299cc594b22d234a4e013dff7232b2d946c", - "0x98659422ef91f193e6104b09ff607d1ed856bb6baed2a6386c9457efbc748bd1bf436573d80465ebc54f8c340b697ea5", - "0x8d6fb015898d3672eb580e1ffdf623fc4b23076664623b66bfb18f450d29522e8cb9c90f00d28ccf00af34f730bff7ac", - "0x996a8538efa9e2937c1caad58dc6564e5c185ada6cdcef07d5ec0056eb1259b0e4cef410252a1b5dbaee0da0b98dac91", - "0xaa0ae2548149d462362a33f96c3ce9b5010ebf202602e81e0ef77e22cfc57ecf03946a3076b6171bea3d3dc9681187d7", - "0xa5ce876b29f6b89050700df46d679bed85690daf7bad5c0df65e6f3bde5673e6055e6c29a4f4dcb82b93ccecf3bad9cc", - "0x81d824bb283c2f55554340c3514e15f7f1db8e9e95dd60a912826b1cccb1096f993a6440834dad3f2a5de70071b4b4b5", - "0x914e7291da286a89dfc923749da8f0bf61a04faa3803d6d10633261a717184065dcc4980114ad852e359f79794877dd9", - "0xae49dc760db497c8e834510fe89419cc81f33fd2a2d33de3e5e680d9a95a0e6a3ccbdf7c0953beeb3d1caf0a08b3e131", - "0xb24f527d83e624d71700a4b238016835a2d06f905f3740f0005105f4b2e49fc62f7e800e33cdc900d805429267e42fc0", - "0xb03471ecaa7a3bf54503347f470a6c611e44a3cee8218ad3fcad61d286cfb7bb6a1113dad18475ec3354a71fcc4ec1e2", - "0x881289b82b30aff4c8f467c2a25fced6064e1eece97c0de083e224b21735da61c51592a60f2913e8c8ba4437801f1a83", - "0xb4ce59c0fc1e0ecad88e79b056c2fd09542d53c40f41dea0f094b7f354ad88db92c560b9aeb3c0ef48137b1a0b1c3f95", - "0xa1ffb30eb8ef0e3ea749b5f300241ebe748ed7cf480e283dfcda7380aa1c15347491be97e65bc96bdf3fe62d8b74b3ae", - "0xb8954a826c59d18c6bfab24719f8730cc901868a95438838cd61dac468a2d79b1d42f77284e86e3382bf4f2a22044927", - "0x818e7e7c59b6b5e22b3c2c19c163f2e787f2ff3758d395a4da02766948935eb44413c3ddd2bf45804a3c19744aa332f3", - "0xa29556e49866e4e6f01d4f042eed803beeda781462884a603927791bd3750331a11bc013138f3270c216ab3aa5d39221", - "0xb40885fa0287dc92859b8b030c7cca4497e96c387dcfe6ed13eb7f596b1eb18fb813e4ae139475d692f196431acb58fe", - "0x89cd634682fd99ee74843ae619832780cf7cd717f230ea30f0b1821caf2f312b41c91f459bdba723f780c7e3eed15676", - "0xb48c550db835750d45a7f3f06c58f8f3bf8766a441265ca80089ead0346f2e17cbb1a5e843557216f5611978235e0f83", - "0x90936ee810039783c09392857164ab732334be3a3b9c6776b8b19f5685379c623b1997fb0cdd43af5061d042247bc72f", - "0xa6258a6bae36525794432f058d4b3b7772ba6a37f74ef1c1106c80a380fc894cbeac4f340674b4e2f7a0f9213b001afd", - "0x8f26943a32cf239c4e2976314e97f2309a1c775777710393c672a4aab042a8c6ee8aa9ac168aed7c408a436965a47aeb", - "0x820f793573ca5cc3084fe5cef86894c5351b6078df9807d4e1b9341f9d5422dd29d19a73b0843a14ad63e8827a75d2da", - "0xa3c4fca786603cd28f2282ba02afe7cf9287529e0e924ca90d6cdfd1a3912478ebb3076b370ee72e00df5517134fe17f", - "0x8f3cdabd0b64a35b9ee9c6384d3a8426cc49ae6063632fb1a56a0ae94affa833955f458976ff309dafd0b2dd540786ae", - "0x945a0630cd8fa111cfd776471075e5d2bbe8eb7512408b5c79c8999bfaeca6c097f988fb1c38fa9c1048bac2bca19f2e", - "0x8a7f6c4e0ba1920c98d0b0235b4dda73b631f511e209b10c05c550f51e91b4ba3893996d1562f04ac7105a141464e0e9", - "0xab3c13d8b78203b4980412edc8a8f579e999bf79569e028993da9138058711d19417cf20b477ef7ed627fa4a234c727a", - "0x82b00d9a3e29ed8d14c366f7bb25b8cfe953b7be275db9590373a7d8a86ea927d56dc3070a09ef7f265f6dd99a7c896e", - "0xb6e48a282de57949821e0c06bc9ba686f79e76fb7cbf50ea8b4651ccd29bc4b6da67efea4662536ba9912d197b78d915", - "0xa749e9edcba6b4f72880d3f84a493f4e8146c845637009f6ff227ff98521dbbe556a3446340483c705a87e40d07364bc", - "0xb9b93c94bd0603ce5922e9c4c29a60066b64a767b3aed81d8f046f48539469f5886f14c09d83b5c4742f1b03f84bb619", - "0xafa70b349988f85ed438faafa982df35f242dd7869bda95ae630b7fd48b5674ef0f2b4d7a1ca8d3a2041eff9523e9333", - "0xa8e7e09b93010982f50bd0930842898c0dcd30cdb9b123923e9d5ef662b31468222fc50f559edc57fcfdc597151ebb6e", - "0x8ce73be5ac29b0c2f5ab17cae32c715a91380288137d7f8474610d2f28d06d458495d42b9cb156fb1b2a7dfdcc437e1c", - "0x85596c1d81f722826d778e62b604eb0867337b0204c9fae636399fa25bb81204b501e5a5912654d215ec28ff48b2cb07", - "0x96ff380229393ea94d9d07e96d15233f76467b43a3e245ca100cbecbdbb6ad8852046ea91b95bb03d8c91750b1dfe6e1", - "0xb7417d9860b09f788eb95ef89deb8e528befcfa24efddbc18deaf0b8b9867b92361662db49db8121aeea85a9396f64fd", - "0x97b07705332a59cdba830cc8490da53624ab938e76869b2ce56452e696dcc18eb63c95da6dffa933fb5ffb7585070e2d", - "0x971f757d08504b154f9fc1c5fd88e01396175b36acf7f7abcfed4fff0e421b859879ed268e2ac13424c043b96fbe99fc", - "0xb9adb5d3605954943a7185bddf847d4dbe7bafe970e55dc0ec84d484967124c26dd60f57800d0a8d38833b91e4da476a", - "0xb4856741667bb45cae466379d9d6e1e4191f319b5001b4f963128b0c4f01819785732d990b2f5db7a3452722a61cd8cc", - "0xa81ec9f2ab890d099fb078a0c430d64e1d06cbbe00b1f140d75fc24c99fe35c13020af22de25bbe3acf6195869429ba5", - "0x99dcea976c093a73c08e574d930d7b2ae49d7fe43064c3c52199307e54db9e048abe3a370b615798b05fe8425a260ba0", - "0xa1f7437c0588f8958b06beb07498e55cd6553429a68cd807082aa4cc031ab2d998d16305a618b3d92221f446e6cd766d", - "0x806e4e0958e0b5217996d6763293f39c4f4f77016b3373b9a88f7b1221728d14227fce01b885a43b916ff6c7a8bc2e06", - "0x8e210b7d1aff606a6fc9e02898168d48ec39bc687086a7fe4be79622dd12284a5991eb53c4adfe848251f20d5bfe9de0", - "0x82810111e10c654a6c07cbfd1aff66727039ebc3226eef8883d570f25117acf259b1683742f916ac287097223afc6343", - "0x92f0e28cca06fd543f2f620cc975303b6e9a3d7c96a760e1d65b740514ccd713dc7a27a356a4be733570ca199edd17ba", - "0x900810aa4f98a0d6e13baf5403761a0aeb6422249361380c52f98b2c79c651e3c72f7807b5b5e3a30d65d6ff7a2a9203", - "0xb0740bfefea7470c4c94e85185dbe6e20685523d870ff3ef4eb2c97735cef41a6ab9d8f074a37a81c35f3f8a7d259f0e", - "0xaf022e98f2f418efbbe2de6fefb2aa133c726174f0f36925a4eafd2c6fd6c744edb91386bafb205ce13561de4294f3a6", - "0x95e4592e21ba97e950abb463e1bc7b0d65f726e84c06a98eb200b1d8bfc75d4b8cff3f55924837009e88272542fd25ec", - "0xb13bd6b18cd8a63f76c9831d547c39bbd553bda66562c3085999c4da5e95b26b74803d7847af86b613a2e80e2f08caae", - "0xa5625658b474a95aba3e4888c57d82fb61c356859a170bc5022077aa6c1245022e94d3a800bf7bd5f2b9ab1348a8834e", - "0xa097ee9e6f1d43e686df800c6ce8cfc1962e5a39bb6de3cf5222b220a41b3d608922dae499bce5c89675c286a98fdabd", - "0x94230ba8e9a5e9749cd476257b3f14a6bf9683e534fb5c33ca21330617533c773cb80e508e96150763699ad6ecd5aee7", - "0xb5fea7e1f4448449c4bc5f9cc01ac32333d05f464d0ed222bf20e113bab0ee7b1b778cd083ceae03fdfd43d73f690728", - "0xa18a41a78a80a7db8860a6352642cdeef8a305714543b857ca53a0ee6bed70a69eeba8cfcf617b11586a5cc66af4fc4f", - "0x85d7f4b3ff9054944ac80a51ef43c04189d491e61a58abed3f0283d041f0855612b714a8a0736d3d25c27239ab08f2ec", - "0xb1da94f1e2aedd357cb35d152e265ccfc43120825d86733fa007fc1e291192e8ff8342306bef0c28183d1df0ccec99d0", - "0x852893687532527d0fbeea7543ac89a37195eadab2f8f0312a77c73bdeed4ad09d0520f008d7611539425f3e1b542cfd", - "0x99e3bd4d26df088fc9019a8c0b82611fd4769003b2a262be6b880651d687257ded4b4d18ccb102cba48c5e53891535e4", - "0x98c407bc3bbc0e8f24bedf7a24510a5d16bce1df22940515a4fbdacd20d06d522ef9405f5f9b9b55964915dd474e2b5c", - "0x80de0a12f917717c6fc9dc3ccc9732c28bae36cff4a9f229d5eaf0d3e43f0581a635ba2e38386442c973f7cb3f0fdfa7", - "0x94f9615f51466ae4bb9c8478200634b9a3d762d63f2a16366849096f9fc57f56b2e68fe0ca5d4d1327a4f737b3c30154", - "0xa3dcbe16499be5ccb822dfcd7c2c8848ba574f73f9912e9aa93d08d7f030b5076ca412ad4bf6225b6c67235e0ab6a748", - "0x98f137bf2e1aea18289750978feb2e379054021e5d574f66ca7b062410dcfe7abb521fab428f5b293bbe2268a9af3aa4", - "0x8f5021c8254ba426f646e2a15b6d96b337a588f4dfb8cbae2d593a4d49652ca2ada438878de5e7c2dbbd69b299506070", - "0x8cc3f67dd0edcdb51dfd0c390586622e4538c7a179512f3a4f84dd7368153a28b1cf343afd848ac167cb3fcaa6aee811", - "0x863690f09ac98484d6189c95bc0d9e8f3b01c489cb3f9f25bf7a13a9b6c1deaf8275ad74a95f519932149d9c2a41db42", - "0x8494e70d629543de6f937b62beca44d10a04875bd782c9a457d510f82c85c52e6d34b9c3d4415dd7a461abbcc916c3c4", - "0x925b5e1e38fbc7f20371b126d76522c0ea1649eb6f8af8efb389764ddcf2653775ef99a58a2dcf1812ce882964909798", - "0x94d0494dcc44893c65152e7d42f4fb0dc46af5dc5674d3c607227160447939a56d9f9ea2b3d3736074eef255f7ec7566", - "0xb0484d33f0ef80ff9b9d693c0721c77e518d0238918498ddf71f14133eb484defb9f9f7b9083d52bc6d6ba2012c7b036", - "0x8979e41e0bb3b501a7ebbd024567ce7f0171acfea8403a530fe9e791e6e859dfbd60b742b3186d7cf5ab264b14d34d04", - "0xaf93185677d39e94a2b5d08867b44be2ba0bb50642edca906066d80facde22df4e6a7a2bd8b2460a22bdf6a6e59c5fdd", - "0x90f0ef0d7e7ab878170a196da1b8523488d33e0fde7481f6351558b312d00fa2b6b725b38539063f035d2a56a0f5e8f1", - "0xa9ca028ccb373f9886574c2d0ea5184bc5b94d519aa07978a4814d649e1b6c93168f77ae9c6aa3872dd0eea17968ec22", - "0x82e7aa6e2b322f9f9c180af585b9213fb9d3ad153281f456a02056f2d31b20d0f1e8807ff0c85e71e7baca8283695403", - "0xaffce186f842c547e9db2dffc0f3567b175be754891f616214e8c341213cbf7345c9ecd2f704bb0f4b6eba8845c8d8a7", - "0xab119eb621fade27536e98c6d1bc596388bb8f5cad65194ea75c893edbe6b4d860006160f1a9053aea2946bd663e5653", - "0x99cd2c1c38ead1676657059dc9b43d104e8bd00ae548600d5fc5094a4d875d5b2c529fac4af601a262045e1af3892b5e", - "0xb531a43b0714cc638123487ef2f03dfb5272ff399ff1aa67e8bc6a307130d996910fb27075cbe53050c0f2902fc32ffe", - "0x923b59ac752c77d16b64a2d0a5f824e718460ef78d732b70c4c776fecc43718ecfaf35f11afbb544016232f445ecab66", - "0xa53439cd05e6e1633cdce4a14f01221efcd3f496ac1a38331365c3cadc30013e5a71600c097965927ee824b9983a79cb", - "0x8af976ffab688d2d3f9e537e2829323dda9abf7f805f973b7e0a01e25c88425b881466dee37b25fda4ea683a0e7b2c03", - "0x92e5f40230a9bfbb078fa965f58912abb753b236f6a5c28676fb35be9b7f525e25428160caeaf0e3645f2be01f1a6599", - "0x8c4e7b04e2f968be527feba16f98428508a157b7b4687399df87666a86583b4446a9f4b86358b153e1660bb80bd92e8b", - "0x97cd622d4d8e94dceb753c7a4d49ea7914f2eb7d70c9f56d1d9a6e5e5cc198a3e3e29809a1d07d563c67c1f8b8a5665a", - "0x967bfa8f411e98bec142c7e379c21f5561f6fd503aaf3af1a0699db04c716c2795d1cb909cccbcb917794916fdb849f1", - "0xb3c18a6caa5ca2be52dd500f083b02a4745e3bcaed47b6a000ce7149cee4ed7a78d2d7012bf3731b1c15c6f04cbd0bd1", - "0xb3f651f1f84026f1936872956a88f39fcfe3e5a767233349123f52af160f6c59f2c908c2b5691255561f0e70620c8998", - "0xae23b59dc2d81cec2aebcaaf607d7d29cf588f0cbf7fa768c422be911985ca1f532bb39405f3653cc5bf0dcba4194298", - "0xa1f4da396f2eec8a9b3252ea0e2d4ca205f7e003695621ae5571f62f5708d51ca3494ac09c824fca4f4d287a18beea9a", - "0xa036fa15e929abed7aac95aa2718e9f912f31e3defd224e5ed379bf6e1b43a3ad75b4b41208c43d7b2c55e8a6fedca72", - "0x80e8372d8a2979ee90afbdb842624ace72ab3803542365a9d1a778219d47f6b01531185f5a573db72213ab69e3ffa318", - "0xaf68b5cdc39e5c4587e491b2e858a728d79ae7e5817a93b1ea39d34aec23dea452687046c8feae4714def4d0ed71da16", - "0xb36658dfb756e7e9eec175918d3fe1f45b398679f296119cd53be6c6792d765ef5c7d5afadc5f3886e3f165042f4667f", - "0xad831da03b759716f51099d7c046c1a8e7bf8bb45a52d2f2bfd769e171c8c6871741ef8474f06e2aca6d2b141cf2971f", - "0x8bae1202dde053c2f59efc1b05cb8268ba9876e4bd3ff1140fa0cc5fa290b13529aede965f5efdff3f72e1a579efc9cc", - "0x86344afbc9fe077021558e43d2a032fcc83b328f72948dba1a074bb1058e8a8faec85b1c019fc9836f0d11d2585d69c8", - "0x831d1fc7aa28f069585d84c46bdc030d6cb12440cfaae28098365577fc911c4b8f566d88f80f3a3381be2ec8088bf119", - "0x899de139797ac1c8f0135f0656f04ad4f9b0fa2c83a264d320eb855a3c0b9a4907fc3dc01521d33c07b5531e6a997064", - "0x855bc752146d3e5b8ba7f382b198d7dc65321b93cdfc76250eabc28dba5bbf0ad1be8ccda1adf2024125107cb52c6a6e", - "0xaf0aeccab48eb35f8986cabf07253c5b876dd103933e1eee0d99dc0105936236b2a6c413228490ed3db4fa69aab51a80", - "0xae62e9d706fbf535319c909855909b3deba3e06eaf560803fa37bce3b5aab5ea6329f7609fea84298b9da48977c00c3b", - "0x823a8d222e8282d653082d55a9508d9eaf9703ce54d0ab7e2b3c661af745a8b6571647ec5bd3809ae6dddae96a220ea7", - "0xa4c87e0ea142fc287092bc994e013c85e884bc7c2dde771df30ca887a07f955325c387b548de3caa9efa97106da8176a", - "0xb55d925e2f614f2495651502cf4c3f17f055041fa305bb20195146d896b7b542b1e45d37fa709ca4bfc6b0d49756af92", - "0xb0ebe8947f8c68dc381d7bd460995340efcbb4a2b89f17077f5fde3a9e76aef4a9a430d1f85b2274993afc0f17fdbead", - "0x8baaa640d654e2652808afd68772f6489df7cad37b7455b9cd9456bdddae80555a3f84b68906cc04185b8462273dcfc9", - "0xadd9aa08f827e7dc292ac80e374c593cd40ac5e34ad4391708b3db2fe89550f293181ea11b5c0a341b5e3f7813512739", - "0x909e31846576c6bdd2c162f0f29eea819b6125098452caad42451491a7cde9fd257689858f815131194200bca54511f4", - "0xabc4b34098db10d71ce7297658ef03edfa7377bd7ed36b2ffbab437f8fd47a60e2bcfbc93ff74c85cfce74ca9f93106c", - "0x857dbecc5879c1b952f847139484ef207cecf80a3d879849080758ef7ac96acfe16a11afffb42daf160dc4b324279d9b", - "0xaab0b49beecbcf3af7c08fbf38a6601c21061bed7c8875d6e3c2b557ecb47fd93e2114a3b09b522a114562467fcd2f7d", - "0x94306dec35e7b93d43ed7f89468b15d3ce7d7723f5179cacc8781f0cf500f66f8c9f4e196607fd14d56257d7df7bf332", - "0x9201784d571da4a96ef5b8764f776a0b86615500d74ec72bc89e49d1e63a3763b867deca07964e2f3914e576e2ca0ded", - "0xaabe1260a638112f4280d3bdea3c84ce3c158b81266d5df480be02942cecf3de1ac1284b9964c93d2db33f3555373dcc", - "0x8ef28607ca2e0075aa07de9af5a0f2d0a97f554897cab8827dfe3623a5e9d007d92755d114b7c390d29e988b40466db9", - "0x87a9b1b097c3a7b5055cd9cb0c35ba6251c50e21c74f6a0bca1e87e6463efc38385d3acc9d839b4698dfa2eb4cb7a2ef", - "0xaee277e90d2ffce9c090295c575e7cd3bafc214d1b5794dd145e6d02d987a015cb807bd89fd6268cd4c59350e7907ee2", - "0x836ad3c9324eaa5e022e9835ff1418c8644a8f4cd8e4378bd4b7be5632b616bb6f6c53399752b96d77472f99ece123cd", - "0x8ffffdb67faa5f56887c834f9d489bb5b4dab613b72eac8abf7e4bcb799ccd0dbd88a2e73077cadf7e761cb159fb5ec5", - "0x9158f6cd4f5e88e6cdb700fddcbc5a99b2d31a7a1b37dce704bd9dd3385cca69607a615483350a2b1153345526c8e05d", - "0xa7ff0958e9f0ccff76742fc6b60d2dd91c552e408c84172c3a736f64acb133633540b2b7f33bc7970220b35ce787cd4e", - "0x8f196938892e2a79f23403e1b1fb4687a62e3a951f69a7874ec0081909eb4627973a7a983f741c65438aff004f03ba6f", - "0x97e3c1981c5cdb0a388f1e4d50b9b5b5f3b86d83417831c27b143698b432bb5dba3f2e590d6d211931ed0f3d80780e77", - "0x903a53430b87a7280d37816946245db03a49e38a789f866fe00469b7613ee7a22d455fb271d42825957282c8a4e159d9", - "0xb78955f686254c3994f610e49f1c089717f5fb030da4f9b66e9a7f82d72381ba77e230764ab593335ff29a1874848a09", - "0x938b6d04356b9d7c8c56be93b0049d0d0c61745af7790edf4ef04e64de2b4740b038069c95be5c91a0ba6a1bb38512a9", - "0xa769073b9648fe21bc66893a9ef3b8848d06f4068805a43f1c180fdd0d37c176b4546f8e5e450f7b09223c2f735b006f", - "0x863c30ebe92427cdd7e72d758f2c645ab422e51ecef6c402eb1a073fd7f715017cd58a2ad1afe7edccdf4ff01309e306", - "0xa617b0213d161964eccfc68a7ad00a3ee4365223b479576e887c41ef658f846f69edf928bd8da8785b6e9887031f6a57", - "0xa699834bf3b20d345082f13f360c5f8a86499e498e459b9e65b5a56ae8a65a9fcb5c1f93c949391b4795ef214c952e08", - "0x9921f1da00130f22e38908dd2e44c5f662ead6c4526ebb50011bc2f2819e8e3fca64c9428b5106fa8924db76b7651f35", - "0x98da928be52eb5b0287912fd1c648f8bbda00f5fd0289baf161b5a7dbda685db6ad6bdc121bc9ffa7ed6ae03a13dbee3", - "0x927b91d95676ff3c99de1312c20f19251e21878bfb47ad9f19c9791bc7fb9d6f5c03e3e61575c0760180d3445be86125", - "0xb8e4977a892100635310dfcb46d8b74931ac59ae687b06469b3cee060888a3b6b52d89de54e173d9e1641234754b32b1", - "0x98f6fd5f81ca6e2184abd7a3a59b764d4953d408cec155b4e5cf87cd1f6245d8bdd58b52e1e024e22903e85ae15273f1", - "0x909aaacbbfe30950cf7587faa190dc36c05e3c8131749cc21a0c92dc4afc4002275762ca7f66f91aa751b630ad3e324d", - "0x91712141592758f0e43398c075aaa7180f245189e5308e6605a6305d01886d2b22d144976b30460d8ce17312bb819e8f", - "0x947d85cb299b189f9116431f1c5449f0f8c3f1a70061aa9ebf962aa159ab76ee2e39b4706365d44a5dbf43120a0ac255", - "0xb39eced3e9a2e293e04d236976e7ee11e2471fe59b43e7b6dd32ab74f51a3d372afee70be1d90af017452ec635574e0e", - "0x8a4ba456491911fc17e1cadcbb3020500587c5b42cf6b538d1cb907f04c65c168add71275fbf21d3875e731404f3f529", - "0x8f6858752363e2a94c295e0448078e9144bf033ccd4d74f4f6b95d582f3a7638b6d3f921e2d89fcd6afd878b12977a9d", - "0xb7f349aa3e8feb844a56a42f82b6b00f2bfe42cab19f5a68579a6e8a57f5cf93e3cdb56cbbb9163ab4d6b599d6c0f6aa", - "0xa4a24dc618a6b4a0857fb96338ac3e10b19336efc26986e801434c8fdde42ca8777420722f45dfe7b67b9ed9d7ce8fb1", - "0xaafe4d415f939e0730512fc2e61e37d65c32e435991fb95fb73017493014e3f8278cd0d213379d2330b06902f21fe4e1", - "0x845cc6f0f0a41cc6a010d5cb938c0ef8183ff5ed623b70f7ea65a8bdbc7b512ea33c0ee8b8f31fdf5f39ec88953f0c1e", - "0x811173b4dd89d761c0bdffe224cd664ef303c4647e6cf5ef0ed665d843ed556b04882c2a4adfc77709e40af1cfdea40b", - "0x93ba1db7c20bfba22da123b6813cb38c12933b680902cef3037f01f03ab003f76260acc12e01e364c0d0cf8d45fca694", - "0xb41694db978b2cf0f4d2aa06fcfc4182d65fb7c9b5e909650705f779b28e47672c47707d0e5308cd680c5746c37e1bc7", - "0xa0e92c4c5be56a4ccf1f94d289e453a5f80e172fc90786e5b03c1c14ce2f3c392c349f76e48a7df02c8ae535326ea8fe", - "0x96cbeb1d0693f4f0b0b71ad30def5ccc7ad9ebe58dbe9d3b077f2ac16256cde10468875e4866d63e88ce82751aaf8ef6", - "0x935b87fd336f0bf366046e10f7c2f7c2a2148fa6f53af5607ad66f91f850894527ecec7d23d81118d3b2ee23351ed6ed", - "0xb7c2c1fa6295735f6b31510777b597bc8a7bfb014e71b4d1b5859be0d8d64f62a1587caafc669dfe865b365eb27bd94f", - "0xb25d93af43d8704ffd53b1e5c16953fd45e57a9a4b7acfcfa6dd4bf30ee2a8e98d2a76f3c8eba8dc7d08d9012b9694c6", - "0xb5a005cd9f891e33882f5884f6662479d5190b7e2aec1aa5a6d15a8cb60c9c983d1e7928e25e4cf43ec804eaea1d97b0", - "0x93f9f0725a06e4a0fb83892102b7375cf5438b5ebc9e7be5a655f3478d18706cf7dbb1cd1adcee7444c575516378aa1b", - "0x900d7cbf43fd6ac64961287fe593c08446874bfc1eb09231fc93de858ac7a8bca496c9c457bced5881f7bf245b6789e0", - "0x90c198526b8b265d75160ef3ed787988e7632d5f3330e8c322b8faf2ac51eef6f0ce5a45f3b3a890b90aecf1244a3436", - "0xb499707399009f9fe7617d8e73939cb1560037ad59ac9f343041201d7cc25379df250219fd73fa012b9ade0b04e92efa", - "0x94415f6c3a0705a9be6a414be19d478181d82752b9af760dda0dbd24a8ff0f873c4d89e61ad2c13ebf01de55892d07fa", - "0x90a9f0b9f1edb87751c696d390e5f253586aae6ebfc31eb3b2125d23877a497b4aa778de8b11ec85efe49969021eaa5a", - "0xa9942c56506e5cd8f9289be8205823b403a2ea233ba211cf72c2b3827064fd34cd9b61ff698a4158e7379891ca4120d8", - "0x83bb2ee8c07be1ab3a488ec06b0c85e10b83a531758a2a6741c17a3ccfa6774b34336926a50e11c8543d30b56a6ac570", - "0x8a08a3e5ebe10353e0b7fff5f887e7e25d09bb65becf7c74a03c60c166132efaada27e5aea242c8b9f43b472561ae3ed", - "0x957c7a24cefaa631fe8a28446bc44b09a3d8274591ade53ba489757b854db54820d98df47c8a0fbee0e094f8ad7a5dc4", - "0xb63556e1f47ed3ee283777ed46b69be8585d5930960d973f8a5a43508fc56000009605662224daec2de54ea52a8dcd82", - "0xabed2b3d16641f0f459113b105f884886d171519b1229758f846a488c7a474a718857323c3e239faa222c1ab24513766", - "0x882d36eed6756d86335de2f7b13d753f91c0a4d42ef50e30195cc3e5e4f1441afa5ff863022434acb66854eda5de8715", - "0xa65ea7f8745bb8a623b44e43f19158fd96e7d6b0a5406290f2c1348fc8674fbfc27beb4f724cc2b217c6042cb82bc178", - "0xa038116a0c76af090a069ca289eb2c3a615b96093efacfe68ea1610890b291a274e26b445d34f414cfec00c333906148", - "0x90294f452f8b80b0a47c3bcb6e30bdd6854e3b01deaf93f5e82a1889a4a1036d17ecb59b48efa7dc41412168d7a523dd", - "0x88faf969c8978a756f48c6114f7f33a1ca3fd7b5865c688aa9cd32578b1f7ba7c06120502f8dc9aee174ecd41597f055", - "0x8883763b2762dfff0d9be9ac19428d9fd00357ac8b805efda213993152b9b7eb7ba3b1b2623015d60778bffda07a724d", - "0xa30a1a5a9213636aa9b0f8623345dc7cf5c563b906e11cc4feb97d530a1480f23211073dcb81105b55193dcde5a381d2", - "0xb45ee93c58139a5f6be82572d6e14e937ef9fcbb6154a2d77cb4bf2e4b63c5aabc3277527ecf4e531fe3c58f521cc5e3", - "0xac5a73e4f686978e06131a333f089932adda6c7614217fcaf0e9423b96e16fd73e913e5e40bf8d7800bed4318b48d4b1", - "0xb6c1e6cdd14a48a7fe27cd370d2e3f7a52a91f3e8d80fb405f142391479f6c6f31aa5c59a4a0fdc9e88247c42688e0cf", - "0xab1760530312380152d05c650826a16c26223960fc8e3bf813161d129c01bac77583eff04ce8678ff52987a69886526b", - "0xa4252dffae7429d4f81dfaeeecc48ab922e60d6a50986cf063964f282e47407b7e9c64cf819da6f93735de000a70f0b2", - "0x94c19f96d5ecf4a15c9c5a24598802d2d21acbbd9ee8780b1bc234b794b8442437c36badc0a24e8d2cff410e892bb1d2", - "0x89fafe1799cf7b48a9ea24f707d912fccb99a8700d7287c6438a8879f3a3ca3e60a0f66640e31744722624139ba30396", - "0xb0108405df25cf421c2f1873b20b28552f4d5d1b4a0bf1c202307673927931cbd59f5781e6b8748ddb1206a5ec332c0b", - "0xaa0f0e7d09f12b48f1e44d55ec3904aa5707e263774126e0b30f912e2f83df9eb933ca073752e6b86876adaf822d14ba", - "0xb0cbe8abb58876d055c8150d9fdbde4fea881a517a2499e7c2ea4d55c518a3c2d00b3494f6a8fd1a660bfca102f86d2a", - "0xb1ef80ec903bac55f58b75933dc00f1751060690fd9dfb54cf448a7a4b779c2a80391f5fda65609274bd9e0d83f36141", - "0x8b52e05b1845498c4879bb12816097be7fc268ce1cf747f83a479c8e08a44159fc7b244cf24d55aca06dccf0b97d11e1", - "0xb632a2fc4fdb178687e983a2876ae23587fd5b7b5e0bb8c0eb4cfe6d921a2c99894762e2aaccdc5da6c48da3c3c72f6c", - "0x953ef80ab5f74274ae70667e41363ae6e2e98ccbd6b7d21f7283f0c1cafb120338b7a8b64e7c189d935a4e5b87651587", - "0xb929cfd311017c9731eed9d08d073f6cf7e9d4cd560cddd3fdcb1149ab20c6610a7674a66a3616785b13500f8f43ee86", - "0x870fb0d02704b6a328e68721fb6a4b0f8647681bfcb0d92ec3e241e94b7a53aecc365ed384e721c747b13fbf251002f1", - "0x979501159833a8ba5422ed9b86f87b5961711f5b474d8b0e891373fe2d0b98ff41a3a7a74a8b154615bb412b662a48be", - "0xb20f9c13cdeceef67f877b3878839ef425f645b16a69c785fe38f687c87a03b9de9ae31ac2edb1e1dd3a9f2c0f09d35d", - "0x8c7705ed93290731b1cf6f3bf87fc4d7159bb2c039d1a9f2246cda462d9cdf2beef62d9f658cfeea2e6aef7869a6fc00", - "0xaa439eb15705ad729b9163daee2598d98a32a8a412777c0d12fd48dc7796d422227a014705e445cc9d66f115c96bbc24", - "0xa32307e16f89749fe98b5df1effef0429801c067e0d8067794e56b01c4fef742ad5e7ab42a1a4cc4741808f47a0b7cb8", - "0xb31e65c549003c1207258a2912a72f5bad9844e18f16b0773ea7af8ff124390eb33b2f715910fc156c104572d4866b91", - "0x85608d918ed7b08a0dc03aee60ea5589713304d85eee7b4c8c762b6b34c9355d9d2e192575af0fd523318ae36e19ae1c", - "0xa6497dbaf0e7035160b7a787150971b19cf5ba272c235b0113542288611ebecefa2b22f08008d3f17db6a70a542c258d", - "0x87862adb1ac0510614ab909457c49f9ec86dc8bdf0e4682f76d2739df11f6ffcfb59975527f279e890d22964a1fba9b6", - "0x8717ac3b483b3094c3b642f3fafe4fbafc52a5d4f2f5d43c29d9cfe02a569daee34c178ee081144494f3a2ca6e67d7b1", - "0x855100ac1ec85c8b437fdd844abaa0ca4ac9830a5bdd065b68dafb37046fcf8625dd482dc0253476926e80a4c438c9ec", - "0xae74821bf265ca3c8702c557cf9ef0732ede7ef6ed658283af669d19c6f6b6055aca807cf2fa1a64785ec91c42b18ae5", - "0x812a745b1419a306f7f20429103d6813cbdea68f82ff635ac59da08630cd61bda6e0fa9a3735bfd4378f58ad179c1332", - "0x867dbbfe0d698f89451c37ca6d0585fd71ee07c3817e362ef6779b7b1d70b27c989cdd5f85ac33a0498db1c4d14521fe", - "0x84db735d3eb4ff7f16502dccc3b604338c3a4a301220ad495991d6f507659db4b9f81bba9c528c5a6114bcdba0160252", - "0xaadc83d1c4e5e32bf786cfb26f2f12a78c8024f1f5271427b086370cdef7a71d8a5bf7cd7690bae40df56c38b1ad2411", - "0xa27860eb0caaea37298095507f54f7729d8930ac1929de3b7a968df9737f4c6da3173bda9d64ff797ed4c6f3a1718092", - "0xa3cdcaa74235c0440a34171506ed03d1f72b150d55904ce60ec7b90fcd9a6f46f0e45feab0f9166708b533836686d909", - "0xb209a30bdac5c62e95924928f9d0d0b4113ebb8b346d7f3a572c024821af7f036222a3bd38bd8efd2ee1dbf9ac9556cd", - "0x83c93987eff8bc56506e7275b6bef0946672621ded641d09b28266657db08f75846dcbde80d8abc9470e1b24db4ca65b", - "0x800c09b3ee5d0251bdaef4a82a7fe8173de997cc1603a2e8df020dd688a0c368ad1ebef016b35136db63e774b266c74c", - "0x93fb52de00d9f799a9bce3e3e31aaf49e0a4fc865473feb728217bd70f1bc8a732ec37ac3582bf30ab60e8c7fdf3cb8d", - "0xa1aff6b4a50d02f079a8895c74443539231bfdf474600910febf52c9151da7b31127242334ac63f3093e83a047769146", - "0x8c4532d8e3abb5f0da851138bfa97599039bcd240d87bbdf4fd6553b2329abb4781074b63caf09bc724ceb4d36cb3952", - "0x8bd9b0ae3da5acda9eb3881172d308b03beec55014cd73b15026299541c42fd38bab4983a85c06894ebb7a2af2a23d4c", - "0x979441e7f5a0e6006812f21b0d236c5f505bb30f7d023cb4eb84ec2aa54a33ac91d87ece704b8069259d237f40901356", - "0xa1c6d2d82e89957d6a3e9fef48deb112eb00519732d66d55aa0f8161e19a01e83b9f7c42ac2b94f337dcc9865f0da837", - "0x97a0b8e04e889d18947d5bf77d06c25bbd62b19ce4be36aaa90ddbeafd93a07353308194199ba138efaadf1b928cd8d2", - "0x822f7fbe9d966b8ec3db0fc8169ab39334e91bf027e35b8cc7e1fe3ead894d8982505c092f15ddfe5d8f726b360ac058", - "0xa6e517eedd216949e3a10bf12c8c8ddbfde43cddcd2c0950565360a38444459191bdbc6c0af0e2e6e98bc6a813601c6d", - "0x858b5f15c46c074adb879b6ba5520966549420cb58721273119f1f8bc335605aeb4aa6dbe64aae9e573ca7cc1c705cdc", - "0xb5191bb105b60deb10466d8114d48fb95c4d72036164dd35939976e41406dff3ee3974c49f00391abfad51b695b3258c", - "0xb1b375353ed33c734f4a366d4afad77168c4809aff1b972a078fd2257036fd6b7a7edad569533abf71bc141144a14d62", - "0xa94c502a9cdd38c0a0e0187de1637178ad4fa0763887f97cc5bdd55cb6a840cb68a60d7dbb7e4e0e51231f7d92addcff", - "0x8fe2082c1b410486a3e24481ae0630f28eb5b488e0bb2546af3492a3d9318c0d4c52db1407e8b9b1d1f23a7ffbaf260a", - "0xb73fe7aa2b73f9cae6001af589bf8a9e73ea2bb3bb01b46743e39390c08d8e1be5e85a3d562857a9c9b802b780c78e6d", - "0x8e347f51330ae62275441ccd60f5ac14e1a925a54ced8a51893d956acc26914df1bb8595385d240aa9b0e5ada7b520ea", - "0x8dc573d6357c0113b026a0191a5807dbe42dcd2e19772d14b2ca735e1e67c70e319ef571db1f2a20e62254ed7fb5bcd6", - "0xa5dacbe51549fe412e64af100b8b5eba5ec2258cc2a7c27a34bc10177d1894baf8707886d2f2ef438f077596a07681e9", - "0x8349153c64961d637a5ff56f49003cb24106de19a5bbcf674016a466bfbe0877f5d1e74ccb7c2920665ef90a437b1b7e", - "0x96ad35429d40a262fdc8f34b379f2e05a411057d7852c3d77b9c6c01359421c71ef8620f23854e0f5d231a1d037e3a0d", - "0xb52385e40af0ed16e31c2154d73d1517e10a01435489fc801fbea65b92b3866ab46dab38d2c25e5fb603b029ae727317", - "0x8e801c7a3e8fa91d9c22ebd3e14a999023a7b5beea13ec0456f7845425d28c92452922ca35ec64012276acb3bbc93515", - "0xa8630870297d415e9b709c7f42aa4a32210b602f03a3015410123f0988aea2688d8bcfc6d07dc3602884abbf6199b23f", - "0x8cd518392e09df2a3771a736f72c05af60efc030d62dbbb9cd68dc6cbbe1fb0854eb78b6ed38337010eb1bb44a5d5d30", - "0x921aa4c66590f6c54bf2fa2b324f08cbe866329cc31f6e3477f97f73e1a1721d5eb50ed4eacc38051fe9eda76ba17632", - "0xa37e595cb63524cb033c5540b6343c3a292569fc115e813979f63fe1a3c384b554cecc2cae76b510b640fe3a18800c81", - "0xb0bb57e4e31ae3ce9f28cef158ed52dabfad5aa612f5fcc75b3f7f344b7cec56b989b5690dacd294e49c922d550ee36b", - "0xa3c618ce4d091e768c7295d37e3f9b11c44c37507ae1f89867441f564bf0108f67bf64b4cf45d73c2afc17a4dc8b2c68", - "0x999e6650eda5455e474c22a8c7a3fd5b547ec2875dc3043077ad70c332f1ccd02135e7b524fcbf3621d386dec9e614fa", - "0xb018f080888dec3c2ca7fcfeb0d3d9984699b8435d8823079fc9e1af4ca44e257fbe8da2f6f641ee6152b5c7110e3e3c", - "0xa2bcd4bcd9b40c341e9bba76b86481842f408166c9a7159205726f0776dcb7f15a033079e7589699e9e94ce24b2a77fd", - "0xb03de48f024a520bb9c54985ca356fd087ca35ac1dd6e95168694d9dae653138c9755e18d5981946a080e32004e238fe", - "0xa6c1a54973c0c32a410092441e20594aa9aa3700513ed90c8854956e98894552944b0b7ee9edf6e62e487dc4565baa2f", - "0x845d7abf577c27c4c1fafc955dcad99a1f2b84b2c978cfe4bd3cd2a6185979491f3f3b0ec693818739ed9184aba52654", - "0x9531bcfc0d3fcd4d7459484d15607d6e6181cee440ba6344b12a21daa62ff1153a4e9a0b5c3c33d373a0a56a7ad18025", - "0xa0bbf49b2dd581be423a23e8939528ceaae7fb8c04b362066fe7d754ca2546304a2a90e6ac25cdf6396bf0096fae9781", - "0xa1ec264c352e34ed2bf49681b4e294ffea7d763846be62b96b234d9a28905cdece4be310a56ec6a00fc0361d615b547c", - "0x87c575e85b5dfbfd215432cb355a86f69256fff5318e8fda457763ac513b53baa90499dc37574bdfad96b117f71cb45e", - "0x9972edfdeec56897bef4123385ee643a1b9dc24e522752b5a197ce6bd2e53d4b6b782b9d529ca50592ee65b60e4c9c3c", - "0xb8bcf8d4ab6ad37bdd6ad9913a1ba0aba160cb83d1d6f33a8524064a27ba74a33984cc64beeee9d834393c2636ff831a", - "0x83082b7ec5b224422d0ff036fbb89dc68918e6fde4077dfc0b8e2ee02595195ecadb60c9ab0ad69deb1bac9be75024fa", - "0x8b061fce6df6a0e5c486fd8d8809f6f3c93bd3378a537ff844970492384fb769d3845d0805edd7f0fcd19efabf32f197", - "0xb9597e717bb53e6afae2278dbc45d98959c7a10c87c1001ed317414803b5f707f3c559be6784119d08f0c06547ec60b1", - "0xb9d990fd7677dd80300714cfd09336e7748bbf26f4bb0597406fcb756d8828c33695743d7a3e3bd6ddf4f508149610ef", - "0xb45f7d2b00ceea3bf6131b230b5b401e13a6c63ba8d583a4795701226bf9eb5c88506f4a93219ac90ccbceef0bfd9d49", - "0xa8ccaa13ca7986bc34e4a4f5e477b11ae91abb45c8f8bf44a1f5e839289681495aba3daa8fb987e321d439bbf00be789", - "0xae0f59f7a94288a0ead9a398fdd088c2f16cccb68624de4e77b70616a17ddf7406ca9dc88769dadeb5673ff9346d6006", - "0xb28e965dcc08c07112ae3817e98f8d8b103a279ad7e1b7c3de59d9dbd14ab5a3e3266775a5b8bbf0868a14ae4ab110f1", - "0x84751c1a945a6db3df997fcbde9d4fe824bc7ba51aa6cb572bb5a8f9561bef144c952198a783b0b5e06f9dd8aa421be8", - "0xa83586db6d90ef7b4fa1cbda1de1df68ee0019f9328aded59b884329b616d888f300abb90e4964021334d6afdea058fd", - "0x8fcea1ce0abf212a56c145f0b8d47376730611e012b443b3d1563498299f55cbcbe8cbd02f10b78224818bb8cbbd9aaa", - "0x8d66c30a40c34f23bae0ea0999754d19c0eb84c6c0aa1b2cf7b0740a96f55dd44b8fee82b625e2dd6c3182c021340ac6", - "0x92c9b35076e2998f1a0f720d5a507a602bd6bd9d44ffc29ede964044b17c710d24ce3c0b4a53c12195de93278f9ec83b", - "0xa37d213913aff0b792ee93da5d7e876f211e10a027883326d582ad7c41deebdfce52f86b57d07868918585908ebd070a", - "0xa03995b4c6863f80dd02ed0169b4f1609dc48174ec736de78be1cdff386648426d031f6d81d1d2a7f2c683b31e7628c0", - "0xb08b628d481302aa68daf0fa31fd909064380d62d8ed23a49037cb38569058e4c16c80e600e84828d37a89a33c323d1f", - "0xa0ee2e2dd8e27661d7b607c61ac36f590909aa97f80bdfd5b42463ca147b610ac31a9f173cbecdd2260f0f9ea9e56033", - "0x967162fba8b69ffce9679aac49214debb691c6d9f604effd6493ce551abacbe4c8cc2b0ccee6c9927c3d3cfbdcb0be11", - "0x8deab0c5ed531ce99dadb98b8d37b3ff017f07438bc6d50840577f0f3b56be3e801181333b4e8a070135f9d82872b7f2", - "0xb1bfa00ec8c9365b3d5b4d77a718cb3a66ed6b6cf1f5cf5c5565d3aa20f63d3c06bb13d47d2524e159debf81325ba623", - "0x90109780e53aeacd540b9fe9fc9b88e83c73eaf3507e2b76edc67f97a656c06a8a9e1ec5bce58bfd98b59a6b9f81b89d", - "0x88a1009a39a40421fdcc0ffc3c78a4fbace96a4e53420b111218091223494e780a998ebecf5a0abd0243e1523df90b28", - "0x90b77146711ee8d91b0346de40eca2823f4e4671a12dad486a8ec104c01ef5ee7ab9bd0398f35b02b8cb62917455f8b3", - "0xb262c5e25f24ae7e0e321b66fdb73b3bf562ded566a2d6a0152cf8bafb56138d87b6a917a82f5ace65efc73cfc177d81", - "0xae65a438c7ea46c82925b5ec5f71314558ca5146f5d90311431d363cfeac0537223c02cbb50fa6535d72fc2d949f4482", - "0x8984208bfc193a6ef4720cc9d40c17f4be2f14595ef887980f2e61fa6927f9d73c00220937013b46290963116cbe66ac", - "0xa8f33a580508f667fac866456dce5d9246562188ad0f568eb1a2f28cf9fd3452dd20dc613adb1d07a5542319a37ecf1a", - "0xaedadd705fc086d8d2b647c62e209e2d499624ab37c8b19af80229f85e64a6e608d9cd414cb95ae38cf147d80ec3f894", - "0xae28077a235cd959f37dc3daedc3706f7a7c2ffe324e695f2e65f454bf5a9fc27b10149a6268ebfaa961ad67bb9b75d7", - "0xa234c7f5a5e0e30f2026d62657bd92d91a9907ec6a2177f91383f86abb919778121ff78afb8f52c473fe6fb731018b52", - "0x816a2ea7826b778f559a815267b6c6eb588558391c0a675d61bb19470d87489ba6c1e2486ea81dd5420a42ee7c35a8de", - "0x9218b61948c14234f549c438105ae98367ef6b727ad185f17ad69a6965c044bb857c585b84d72ef4c5fb46962974eed7", - "0xa628031217a0b1330b497351758cf72d90fb87d8bdf542ea32092e14ff32d5ef4ca700653794bb78514d4b0edfd7a8d7", - "0xab4e977141be639a78eb9ed17366f9642f9335873aca87cce2bae0dddc161621d0e23264a54a7395ae706d748c690ee9", - "0xb1538c4edff59bcf5668557d994bac77d508c757e382512c4368c1ded4242a41f6200b73fe8809fb528a7a0c1fc96feb", - "0x965caabe5590e2ff8c9f1048bbdda2817e7a2847e287944bfab40d94cb48389441ac42ff3a7b559760bfab42ff82e1e0", - "0xa64b7484d22c4b8047c7a8ef54dc88cb8d110c61ef28ba853821b61e87d318b2b4226f7f0d1f3cdf086a0e1666d0212c", - "0x8915ab7e41d974eef9a651b01c2521392e8899e6ab91c22aeee61605c78fb2b052399ba1d03473aa9cfb52d1a8ba4257", - "0x8dd26875d4a1716db2f75a621d01e971983267770e2da92399aecf08f74af1f7e73643ac6f0a9b610eda54e5460f70ed", - "0x83dabcb84c9cbce67e1a24ecbfa4473766b9519588b22288edbaa29aca34cefd9884f7310e7771f8f7a7cbced2e7eea0", - "0x956be00c67987fb4971afca261065a7f6fcef9fb6b1fcb1939f664bbc5b704223253ebfda48565624a68fb249742c2cf", - "0xa374824a24db1ab298bee759cee8d8260e0ac92cd1c196f896600fd57484a9f9be1912ded01203976ac4fab66c0e5091", - "0xa225f2ed0de4e06c500876e68e0c58be49535885378584a1442aae2140c38d3ca35c1bc41936a3baf8a78e7ab516f790", - "0x8e79c8de591a6c70e2ef2de35971888ab0ca6fd926fdb6e845fb4b63eb3831c5839f084201b951984f6d66a214b946b8", - "0x91babc849a9e67ab40192342c3d0d6ce58798101cb85c9bd7fc0ac4509ffc17b5ea19e58045cf1ca09ec0dee0e18c8f9", - "0x8b4897fc2aef5bbe0fa3c3015ca09fc9414fdb2315f54dbecc03b9ae3099be6c0767b636b007a804d8b248c56e670713", - "0x8f63ba42e7459ea191a8ad18de0b90b151d5acbf4751e2c790e7d8328e82c20de518132d6290ff3c23d2601f21c1558e", - "0xa1a035dc9b936587a16665ea25646d0bb2322f81960d9b6468c3234c9137f7c2b1e4f0b9dbe59e290a418007b0e7a138", - "0x81c4904c08f7bb2ac7b6d4ac4577f10dd98c318f35aac92fc31bab05eceb80a0556a7fc82614b8d95357af8a9c85a829", - "0x8c40e44e5e8e65f61e0a01f79057e1cb29966cc5074de790ea9c60454b25d7ea2b04c3e5decb9f27f02a7f3d3cb7014f", - "0xad8709e357094076eb1eb601539b7bcc37247a25fbc6ada5f74bb88b1b371917c2a733522190f076c44e9b8e2ae127fb", - "0x92d43cd82c943fd71b8700977244436c696df808c34d4633f0624700a3445f3ecc15b426c850f9fb60b9aa4708f2c7c0", - "0xb2cb8080697d1524a6dcb640b25e7255ae2e560613dbd27beaa8c5fc5c8d2524b7e6edd6db7ad0bb8a4e2e2735d4a6f7", - "0x971ca6393d9e312bfb5c33955f0325f34946d341ff7077151f0bcafd2e6cbd23e2ad62979454f107edc6a756a443e888", - "0xb6a563f42866afcee0df6c6c2961c800c851aa962d04543541a3cedeb3a6a2a608c1d8391cf405428cd40254e59138f3", - "0x986bd17bad9a8596f372a0185f7f9e0fb8de587cd078ae40f3cd1048305ba00954aff886b18d0d04640b718ea1f0d5a3", - "0xae32dbccfb7be8e9165f4e663b26f57c407f96750e0f3a5e8e27a7c0ca36bc89e925f64ddd116263be90ace4a27872c4", - "0x83725445ec8916c7c2dd46899241a03cf23568ac63ae2d34de3bce6d2db0bc1cfd00055d850b644a059fb26c62ed3585", - "0xa83f7e61c05b1c6797a36ad5ded01bf857a838147f088d33eb19a5f7652b88e55734e8e884d1d1103a50d4393dfcd7a8", - "0xaa010b4ec76260d88855347df9eaf036911d5d178302063d6fd7ecad009e353162177f92240fe5a239acd1704d188a9d", - "0xa88f4ba3cf4aff68ec1e3ded24622d4f1b9812350f6670d2909ea59928eb1d2e8d66935634d218aeac6d1a0fc6cae893", - "0xb819112b310b8372be40b2752c6f08426ef154b53ef2814ae7d67d58586d7023ffa29d6427a044a3b288e0c779866791", - "0xb5d1e728de5daf68e63b0bb1dee5275edae203e53614edeeeefff0f2f7ac4281191a33b7811de83b7f68111361ef42e1", - "0x953fb3ddc6f78045e53eaacfd83c5c769d32608b29391e05612e4e75725e54e82ad4960fbef96da8b2f35ba862968a3e", - "0x936471136fb2c1b3bb986a5207a225a8bf3b206a1a9db54dc3029e408e78c95bfb7539b67006d269c09df6354d7254ac", - "0xac353364b413cae799b13d7dc6fa09c322b47e60b9333e06499155e22d913929b92a45a0ad04ba90b29358f7b792d864", - "0xa0177419ead02ba3f0755a32eee3fd23ec81a13c01eab462f3b0af1e2dba42f81b47b2c8b1a90d8cec5a0afa371b7f11", - "0xb009eeb5db80d4244c130e6e3280af120917bb6fcebac73255c09f3f0c9da3b2aa718cd92d3d40e6b50737dbd23461aa", - "0xb8a43426c3746c1a5445535338c6a10b65474b684a2c81cd2f4b8ebecc91a57e2e0687df4a40add015cd12e351bbb3eb", - "0x94ff3698a6ac6e7df222675a00279c0ea42925dc6b748e3e74a62ea5d1e3fd70d5ab2d0c20b83704d389dd3a6063cf1a", - "0x90e4142e7ce15266144153e21b9893d3e14b3b4d980e5c87ce615ecd27efac87d86fa90354307857f75d7ebaeffe79ef", - "0xa5fd82c3f509ec9a36d72ba204a16f905e1e329f75cfd18aaa14fb00a212d21f3fac17e1a8e3bc5691ab0d07f8ec3cd0", - "0x962e6bfd75ea554f304a5fee1123e5bf2e048ccd3b401716b34c52740384579188ac98bc0d91269fc814de23f4b2dd34", - "0xb50b4e45c180badf9cd842cd769f78f963e077a9a4c016098dc19b18210580ad271ae1ba86de7760dd2e1f299c13f6a0", - "0x84cf08858d08eca6acc86158ffda3fbe920d1d5c04ac6f1fc677760e46e66599df697397373959acf319c31e47db115c", - "0xa697a38ba21caa66b7739ed0e74fe762a3da02144b67971fcad28c1132d7b83e0ac062cc71479f99e2219086d7d23374", - "0xad1f6d01dd7f0de814fe5fbb6f08c1190ff37f4a50754d7b6291fc547c0820506ea629aabacf749fec9c1bbfda22d2d0", - "0xb11fd7f8c120d8a370a223a1adc053a31bef7454b5522b848dec82de5482308fc68fdaf479875b7a4bc3fc94e1ea30eb", - "0x93ecf90ebfc190f30086bcaeee18cda972073a8469cf42a3b19f8c1ec5419dff2d6a5cc8ef412ccd9725b0f0a5f38f88", - "0x911f25aaa5260b56b3009fa5e1346a29f13a085cf8a61b36b2d851791f7bcf8456840eccbfc23797b63ecd312e2d5e12", - "0xa52f17a8b2db66c98291020b1db44ab23827e1790e418e078d1316185df6aa9f78292f43a12cd47131bd4b521d134060", - "0x9646fca10bf7401e91d9a49753c72f3ecb142f5ed13aba2c510a6c5ccb8d07b8e8d1581fc81321ad5e3996b6d81b5538", - "0xaa1da4a5665b91b62dda7f71bb19c8e3f6f49cc079d94fcd07b3604a74547e8334efa5a202822d0078158056bbda2822", - "0xa2432ae5feeaf38252c28aa491e92a68b47d5b4c6f44c1b3d7f3abc2f10b588f64a23c3357e742a0f5e4f216e7ca5827", - "0x83c7b47735cd0ef80658a387f34f259940096ebb9464c67919b278db4109fea294d09ea01a371b79b332cff6777c116d", - "0xa740a2959e86e413c62d6bdd1bc27efe9596ee363c2460535eab89ba1715e808b658bd9581b894b5d5997132b0c9c85c", - "0xb76947237fa9d71c3bece0b4f7119d7f94d2162d0ced52f2eac4de92b41da5b72ad332db9f31ebb2df1c02f400a76481", - "0xa20e1f2b7e9cc1443226d2b1a29696f627c83836116d64d2a5559d08b67e7e4efa9a849f5bb93a0dadb62450f5a9eaab", - "0xb44bff680fba52443a5b3bd25f69c5640006d544fca1d3dc11482ee8e03b4463aae59d1ec9d200aa6711ce72350580fb", - "0xa9490f5643bacec7e5adcda849ab3e7ff1f89026bf7597980b13a09887376f243158d0035e9d24fdee7cb6500e53ef29", - "0x96081010b82c04ad0bfc3605df622db27c10a91494685ef2e6e1839c218b91cbb56e043e9a25c7b18c5ddee7c6769517", - "0xa9522d59bcf887cbbbc130d8de3ff29a86df5d9343a918f5e52c65a28e4c33f6106ac4b48ecd849a33d39eeb2319d85b", - "0xaa5e0cea1a1db2283783788b4d77c09829563b75c503c154fdaa2247c9149918edac7737ef58c079e02dca7d8397b0eb", - "0x8c03f064e777d0c07c4f04c713a86bf581cc85155afe40e9065ead15139b47a50ead5c87ac032f01b142d63ff849758a", - "0xa34d672bf33def02ee7a63e6d6519676c052fa65ca91ed0fe5fdd785c231ba7af19f1e990fc33f5d1d17e75f6af270be", - "0x8680443393e8ac45a0b07c30a82ac18e67dcc8f20254bd5ede7bf99fc03e6123f2fcd64c0ca62f69d240f23acd777482", - "0xa4e00ab43d8ae5b13a6190f8ef5395ec17fbac4aa7dfa25b33e81b7e7bf63a4c28910b3a7dc9204dbc4168b08575a75e", - "0x8249259066ee5672b422c1889ab5ed620bddd1297f70b4197c40bb736afba05d513b91d3a82ee030336c311d952cd60c", - "0xa0651d8cf34fa971bde1ec037158a229e8e9ad4b5ca6c4a41adedb6d306a7772634f703dcfac36f9daf17289f33c23fb", - "0xb02ff6e8abff19969e265395ceaf465f43e7f1c3c9cfc91f1748042d9c352b284e49515a58078c877a37ff6915ee8bf4", - "0x927fb7351ac28254458a1a2ea7388e1fbd831fbc2feedb230818f73cc8c505b7ff61e150898ce1567fcb0d2c40881c7b", - "0xa9d3861f72090bc61382a81286bb71af93cdeefab9a83b3c59537ad21810104e0e054859eeafa13be10f8027b6fc33b8", - "0xa523306656730b1a31b9a370c45224b08baf45773d62952a0bf7d6c4684898ae78914cfafbd3e21406407cc39e12afdc", - "0x947a090e7703a3ea303a4a09b3ab6b6d3fda72912c9f42cc37627557028b4667f5398a6d64b9281fa2efbe16f6c61ed6", - "0xb41d24d40c10239c85d5b9bf1a3886d514a7a06b31ca982ea983e37162293350b12428eabc9f6a460473ad811e61ba40", - "0xb0bb9805724f4ca860e687985c0dc6b8f9017fe71147e5383cfbbbdcb2a42c93c7062ba42acdead9d992b6f48fc1d5ac", - "0xaec775aa97a78851893d3c5c209a91267f1daf4205bfb719c44a9ed2614d71854b95bb523cd04a7f818a4a70aa27d8fc", - "0xb53e52e32ca90b38987610585ad5b77ecd584bd22c55af7d7c9edf5fbcae9c9241b55200b51eaed0fbdb6f7be356368f", - "0xa2c5ac7822c2529f0201717b4922fb30fb037540ab222c97f0cdac341d09ccb1415e7908288fabef60177c0643ed21bf", - "0x92162fda0cbd1dafbed9419ae0837e470451403231ee086b49a21d20de2e3eed7ce64382153272b02cf099106688af70", - "0x8452d5df66682396718a76f219a9333a3559231e5f7f109a1f25c1970eb7c3408a5e32a479357f148af63b7a1d352451", - "0x831ea95d4feb520994bc4904017a557797e7ad455a431d94de03b873a57b24b127fcc9ff5b97c255c6c8d8e18c5c7e12", - "0x93d451d5e0885ccdbb113a267c31701e7c3d9e823d735dc9dfd6cfdcd82767012dc71396af53d3bedd2e0d9210acf57f", - "0xa2126f75a768dcc7ebddf2452aebf20ad790c844442b78e4027c0b511a054c27efb987550fcab877c46f2c7be4883ae0", - "0xaa4d2dcba2ccfc11a002639c30af6beb35e33745ecbab0627cf0f200fdae580e42d5a8569a9c971044405dfdafed4887", - "0xab13616069ef71d308e8bf6724e13737dc98b06a8f2d2631284429787d25d43c04b584793256ed358234e7cd9ad37d1f", - "0x9115ee0edc9f96a10edcafeb9771c74321106e7f74e48652df96e7ca5592a2f448659939291ff613dd41f42170b600ad", - "0x97b10a37243dc897ccc143da8c27e53ccc31f68220bffd344835729942bb5905ae16f71ccaed29ca189432d1c2cc09b1", - "0x875cf9c71ae29c3bde8cdcb9af5c7aca468fbb9243718f2b946e49314221a664959140c1ebc8622e4ed0ba81526302fd", - "0x86b193afbb7ff135ce5fc7eb0ee838a22e04806ceec7e02b3fb010e938fff733fc8e3a1d4b6cba970852d6307018b738", - "0xb3403a94f1483edce5d688e5ed4ab67933430ede39cd57e2cddb4b469479018757d37dd2687f7182b202967da12a6c16", - "0x83edfa0a6f77974c4047b03d7930e10251e939624afa2dcafbd35a9523c6bf684e1bb7915fc2e5b3ded3e6dc78daacf2", - "0x88ff3375fe33942e6d534f76ed0f1dfa35ae1d62c97c84e85f884da76092a83ecd08454096c83c3c67fac4cd966673d7", - "0xaf0726a2a92ee12a9411db66333c347e1a634c0ab8709cc0eab5043a2f4afac08a7ae3a15ce37f5042548c6764ae4cf6", - "0x81cfa33bb702e2f26169a006af0af0dcaa849cec2faf0f4784a06aa3c232d85a85b8123d49a1555cca7498d65e0317e4", - "0x910a16526176b6e01eb8fb2033ffbb8c9b48be6e65f4c52c582909681805b3d9e1c28e3b421be9b9829b32175b8d4d80", - "0x93d23befa411ca1adbdba726f762f2403e1cc740e44c9af3e895962e4047c2782ca7f2f9878512c37afd5a5a0abbd259", - "0x82fcf316027fedfe235905588b7651b41e703836f96cb7ac313b23b4e6c134bff39cd10b3bddb7458d418d2b9b3c471b", - "0x8febc47c5752c513c4e5573428ad0bb40e15a5e12dbfa4c1ef29453f0588f0b75c3591075fef698e5abcf4d50c818a27", - "0x83dab521d58b976dcea1576a8e2808dfaea9fa3e545902d0e0ce184d02dca8245d549134a238ab757950ad8bc11f56eb", - "0x898cfb9bf83c1c424eca817e8d0b99f5e482865070167adab0ecf04f3deeb3c71363b9f155c67b84d5e286c28238bef8", - "0xb845e388cc1a8e8b72a24d48219ac4fd7868ee5e30960f7074b27dada842aa206889122acfce9e28512038547b428225", - "0xb1ce4720e07e6eecc2a652f9edbad6bd5d787fbaff2a72a5ca33fa5a054dd3b4d5952563bc6db6d1ce1757a578bba480", - "0x8db6990dd10741cf5de36e47726d76a12ebe2235fdcb8957ab26dba9466e6707d4a795d4e12ec7400d961bd564bdee7e", - "0xa3ca7afd20e16c2a45f73fc36357763847ed0be11cb05bfd9722f92c7ba3fa708cf10d4e0ae726c3eccae23cc55fd2be", - "0x8701b085c45b36f3afb589207bbf245ef4c5c82aa967ecd0c334daa1f5a54093c5e0fcacd09be540801920f49766aa0f", - "0x84e3736727ba76191d9a6a2a3796f55bb3c3a8bbb6e41f58e892ea282c90530b53ab5490bbf1a066723399bb132160fb", - "0x87c02a01917333c7b8866f6b717b1e727b279894108f70574d1b6e9e8dc978eda8778342baf3c6464d6e0dd507163e76", - "0xb8da532dac81fafaed759e99c3ae011d75f3fda67a8c420c3b9747281fe32e31ac3c81e539940286440704c2c3e3b53e", - "0xa0cc63c3bef75a5c02942977a68a88cd3d103d829b6c0f070f64206da7e3638f10f42452788092de8fbbc626ce17b0d4", - "0xb5c9317b3f6b1d7ee6871506c0430cdf73e28b02c001ba6ca11061c7e121c91152d2b80c4f80e1d8f51ff5653bc0db5b", - "0xb798fb572da977dd3ef2dce64042b012a470d6bd2cb61a16267abe2b8399f74540d7c70462a6b2278d73567447e31994", - "0xb868eda58739effda68c834745cd2cf66a09f0f215607b65685bb5ca3eba71150f43a6e47b81a0c19fb58eeae3da56e8", - "0x9041c93a7e8f2c34812fd6e9744b154e898e1ef69db72bf36242c71e2c251f3db7e86cbd802da603a92cd0b06b62ea63", - "0xa834d648e974230582fc17b3a449f4f65b3297038a3a5401e975b9b60ff79b2006a33e1486d3428106580276993311e1", - "0xa3ce874da6ade9f0f854d7ae7651fc3ff63cec748a847527539fe0d67e6c99eaa3011065a4627c2192af7f9569f7ab57", - "0xae78ad16de150cc0400d3b6b424c608cd2b2d01a7a38ea9c4e504d8463c0af09613774dbefdd5198415b29904e0fbb63", - "0xb966db5a961067e743212d564595ef534e71dcd79b690a5a2c642d787059fc7959b9039b650372461a1f52910f7e857b", - "0x8069904f360af3edfd6cabd9b7f2adf5b61bd7feb0e9a040dc15c2a9d20052c3e5e0158f3065ec3200d19b91db603b71", - "0x9600917dbcd80a47f81c02c3aafecfcef77f031bf612a0f1a8bdef09de9656f4bb0f8e3e95f72ece1c22bd2824f145b6", - "0x834a0767b7b6199496c1faee0e3580c233cc0763e71eebc5d7c112a5a5e5bd95c0cf76a32ea5bb1b74f3cf00fbd2cfb4", - "0x99469a893579ed5da7d34ec228854c4666c58115d3cae86d4fc2d03d38f10d8c5dc8fb693763a96ab6be2045cc8d518b", - "0xa52cc0aecda6594de57d8ca13b146e77212cc55854929c03f2a8a6cdfa46296791c336aebcc2610d98612d5b4c0452df", - "0x97864434d55aa8a7aad0415d36f9558ce6e6c00452923db68a1e738232d0cb2d47e3b0b8f340c709112838adeaee4695", - "0xa4a7f2c45db3661b6af7ec759f9455ba043b0de6fd4787e3372cba215b9f7c641d5d817a0576e7aa28a46349d2fe0ae6", - "0x864e857652d95e1d168c1b9c294777fc9251a4d5b4b00a346b1f1c9c898af9a9b5ec0ac1f3a66f18a370b721dbd77b23", - "0xab8eac458fa8e7eb5539da3964ccd297a216448c3af4e4af0dcfed0ce29e877a85e29b9601dc7508a060b97a05f37e15", - "0xa6fd0782c5629c824fcd89ac80e81d95b97d8374c82010a1c69f30cef16ffc0f19e5da2d0648d2a36a636071cb4b69a7", - "0xad35a75fd8832643989d51d94ee6462d729e15f6444ffdf340dfb222af5d2b6b52e5df86082dbc7728fde7c1f28ac6b4", - "0x8e06831cc8a0c34245732ea610ea6aae6d02950299aa071a1b3df43b474e5baee815648784718b63acfd02a6655e8ea7", - "0x994ac097f913a4ce2a65236339fe523888ee43494499c5abf4ac3bce3e4b090f45d9abd750f4142a9f8f800a0115488c", - "0xa3e6a8e5e924f3a4f93e43f3f5aafb8b5831ce8169cddde7296c319d8964a0b6322a0aa69e1da1778fcc24b7de9d8b93", - "0x81a9bd04f4c6e75517de4b5e2713f746bd7f3f78a81a2d95adc87ba0e266d1f5e89c9cfb04b5159c1ff813f7968a27a4", - "0xb24de8f3a5b480981c6f29607b257ded665ecd8db73e2a69a32fcf44e926fdc7e6610598e10081cf270d2f879414b1ab", - "0xadc1b3f8ed1e7d5a26b0959ffe5afc19e235028b94cb7f364f6e57b6bf7f04742986f923fae9bf3802d163d4d0ebc519", - "0xa9fa5092b6dd0b4e1a338a06900b790abbc25e2f867b9fb319fdcdfb58600315a45a49584c614f0f9f8b844aa59dd785", - "0xb29c06b92b14215e7ef4120562893351ae8bf97cc5c3d64f4ecd0eb365b0e464cf27beec3f3ddac17ed5e725706b6343", - "0xadc0d532ba4c1c033da92ba31aa83c64054de79508d06ee335dcab5cabae204a05e427f6f8c2a556870a8230b4115fd0", - "0x9737150d439e6db2471d51e006891d9687593af4e38ee8e38bfa626abcefa768ca22d39133f865d0a25b8bbf7443d7db", - "0xa10d1e6a760f54d26c923c773b963534e5c2c0826c0a7462db2ea2c34d82890f9c58f0150db00aa2679aa0fdb1afcb08", - "0x816947dc6c08ee779e9c2229d73dbfd42c2b3b6749b98ec76dbad017f4b4d4f77b5916600b576691978287208c025d6f", - "0xa2dc52b6056219d999f07b11869c254e8b3977113fd9ba1a7f322377a5d20e16c2adf46efb7d8149e94989b3f063334a", - "0x8153900aae9cf48ebc7438b75c16f5478960ef9170e251708f0c2457967b7b31521c889b5fe843d2694a07c0e804fa48", - "0xa9e9d8d66c8774972cc1686809ce1fa5f0e16997ef2178b49bcd8654541b5b6e234cb55188f071477ba1cebcf770da45", - "0xb1fa775f9b2a9b05b4b1f0d6ad5635c7d7f4d3af8abaa01e28d32b62684f9921197ba040777711836bc78429bf339977", - "0xb1afbbd522b30e1ae2adf9a22993ab28b72a86a3d68d67b1833115e513632db075d047e21dfe442d6facc7b0a1b856bf", - "0x8779b7d22f42845a06ae31ac434e0044f5f9b4e704847fb93943e118e642a8b21265505ad9d6e418405d0cb529e00691", - "0xab2c6cef1c4e7c410e9e8deb74c84bedeb3c454ae98e3bc228eb13f6b7081b57977b3e849ba66346250e37c86842c10c", - "0x908d6c781d7d96aa2048c83e865896c720a66fdec7b06ab4b172192fe82f9ff6167815ffb66549d72bfb540bb35c36c6", - "0xb790440f205ece489e2703d5d1d01ba8921dd237c8814afb5cb521515ed4c3b0a6df45fd4bd65ba63592c2fe1d008df3", - "0xaec346251f9c78336b388c4e9069a1c6c3afbbb6bfaffdad050a9e70e92fb3cae3609067b4903552936f904c804b0ea6", - "0xa0e528cc2cb84b04cc91b4084e53ead4188682a6050b3857c34280899c8233aa8c1a9c6fa4fd6a7087acf1b36d67734a", - "0xaa8d7632be3e4340712a1461a0ad0ae90ba6d76e2916511c263f484c6c426939fa93ffbb702cd0341eea404d6ddffebb", - "0xa4ea871d8a1d4b925d890aefb9897847599b92e15ce14886b27ce5c879daa9edead26e02ccc33fcf37f40ff0783d4d9e", - "0xab63e4dc0dbdaf2ada03b3733aafe17e719d028b30dc9a7e5783c80933a39935dbe1ef0320bb03f9564cafdf7a4b029b", - "0x8219761bbaa39b96b835f9c2b4cec0bf53801f8e4f4a4498d19638be2fa0a193b2c1fbf94e26c1058d90a9ac145a7a12", - "0xa609ee5561828b0f634640c68a98da47cb872b714df7302ef6b24d253211e770acd0aa888802cd378e7fa036d829cd36", - "0x90793ff0736f3c80b5e0c5098b56cda8b0b2bca5032bb153d7b3aa3def277f2fc6cea60ac03edc82e3a9d06aff7d1c56", - "0x8760085283a479d15a72429971a0a5b885609fd61787a40adb3d3d7c139b97497aa6bcb11b08979e2354f1bc4dbf7a0d", - "0xb168ede8b9a528c60666057f746530fc52327546872dd03c8903f827d02c8313e58c38791fb46e154d4247ea4b859473", - "0x842c1149ca212736ebe7b6b2cb9a7c3b81ae893393c20a2f1a8c8bfef16d0a473ff865a1c130d90cc3626045f9088100", - "0xb41d0e2c7d55108a8526aa0b951a5c8d7e3734e22fe0a6a2dd25361a5d6dea45c4ab4a71440b582a2f9337940238fe20", - "0x8380bd49677e61123506dd482cdf76a8f1877ea54ed023d1deabfc05846103cfd213de2aef331cdf1baf69cfc6767be9", - "0xa026f92030666b723d937f507e5a40e3f3cfd414ad4b2712db0a7a245a31a46002504974ed8ba9d8e714f37353926a4e", - "0xb492e9e9917b29eb04cde0b012df15cbd04f3963d120b63c55dc4369e04f5ac7682b2c7dff8c03410936c26ca73ad34c", - "0x81fd9271b4ee36be0ba8f560d191e1b6616dd53c56d1d8deac8c1be7bc67bbc53d434cf70d04e7fa9de3e63415389693", - "0x835c3711abe85683d2344a3ee5f70e68342fd1aec025ad248efe66aab3e3d5790fad2f45bae0d7a53a80998fde45f0aa", - "0xb46599be80b8f7dbad0b17808dd5ca91d787929c0bef96fbbcf6c767727d07ed6785bad164d733ecb015eb6c8469a16d", - "0xb36bf5c17271d39f5ccb3d82a5e002957207a0cdf9ae7108a4946e6f3ed21a5d353fa940b6fe949c39422b452339bae9", - "0xa12f5444e602d6fb8be51a08b8bc4ec105dfd759d2afe98d51ff4edd673c92e4fc91ff32417ae8070e12169004f8aad3", - "0x892ce3ca0a2961a01f7f0149b8a98fdc0f8871c2d85e76daf7c8aed2a18624b978a4d0a84213f81f9d2a81f7ca4826d0", - "0xb1e6229ebd5b3d85e62d0474d1fed34564f1b5b9c5856fae36164dd0eff378d67d6717dda77536379006fb462bced9da", - "0xac852921dcb81e54e1e315fd6226219932f7b785c2ceb2035710e814899784d7001101f1515d68e3fb74cdbb4baf9e26", - "0x989a42d851123d708a213f3a02cfc926df15af058ec9b5a9df968fe16decbd781b5e65a4c17fbfedd2ac17126084700f", - "0xb1d0fc2f7c948e466445f307da7b64b3070057c79c07c7ebbbe6f8ed300a642b3567aed2e5f28988ac566ba62e0d2a79", - "0x83057263b41775bc29f1d59868a05b0f76d3bdf8a13c1014496feb4c0ee379bfd0d4079785252f51fbeb641e47a89b69", - "0xac9e6a208aa9c557155cf82b389bb4227db5ac4b22a0c7c8d1c3d98946df8b82b0c49d093ba55c8255e024a6d67c14b4", - "0x8294a11cd3f5111b1f8bd135be23b4de337ac45711db9566ebf6e162cd58e7859b1309eba8149b0f0a43e07f62a92411", - "0x8c15f3388b196603c05adec195c1d2cc589e3466da3169e9afd37157fa55cd34bfafbfc5ff10ac0e04aa6a0d0b2ce3db", - "0xb8faf8ba89c3115576ab6b340f6cc09edfea8f7331f5a5e8003960c584e839fcecf401113dfbb9a5c11a13721b35c263", - "0x955c63b1166514c02847402d0e92dccfe3c0dee3bc70d2375669afb061594c85651e6569f471a6969759e5f373277da4", - "0x963bd4f9ae7361d6936d209592a07d9a22cc9ef330cf0c5cb845cb4085d76e114aee66d7599bf5b9f11c6b1c05dade8d", - "0x85509b3c97e06e0db113b8b40022c8989a305cec39acab36ba3a73a4b4719573e5bdb82dc4795699c26d983465cd61b0", - "0xb870cfd7f691f88db8d1dfbe809b7b402eabd3b3299606b7dfdb7ef49415411f01d2a7e4f7ebd919ac82c7094f628166", - "0xa5533e7b58a6a9e5c25589134f501584163551247d36f50666eeb0a0745cf33e65bb8f7a9c2dc7fe7cb392414f1ece4a", - "0xb93d1ade01ff5678fcd5b5b4f06a32b706213748076cae3a375e20a97231133ec37c1c3202cbc4896b66c3410210f446", - "0x86ed3a58000a46fe2c37d4de515430a57d8f54ab4300294685534372fed1d68e192dd43d43ea190accf3dc9b22e1548b", - "0xa8c7d8dc30057bb8ad66b9cfda5e223334407730aeb0f51705922c18e7a07d960c470d463d1781899203e1b1ed1df484", - "0x8d86821d006e957e8544f95a98b110c89941bcc6985562e7a97285f5826b35b690963b2c141ff3f389d92ee18ec76d24", - "0xa4e1108cd3cf01810e74dbbf94340487011b80013b9bfdc04f019188c0d4d077a54b71a3f97a036601aad42a268531e8", - "0xa822cd61db07f64bea00de226102f5fc0adf8fa9f05a6c7478b0ff93e48f6cc3191302d22e1f369b571877d5eb96139c", - "0xb1ad4094d0bb4c325dfe072b17711962247dd7ff7e4bce4612e80a6f3c1bde04880ba1682f60d5f1451318afd4d3ba60", - "0x88e7beb0cfd7361288ea27f6b2cb18870e621152ff47994440c18d45284d21bad80d9806ed7d9d392a5cd791d5150ce2", - "0xaad3724a176cf4476595cdfb9e2c3261c37052324c0b5373a30b6cbeb481bccd303720840c49a84ddca916d470eb6929", - "0xa57983370d159e7078a273746fb22468000a6448b1a31d277272e35c6f548f97928e9015f1daf577511bd9cfee165237", - "0xa54136e9db381cdd6dfb3fff8bdec427d4dc1072f914f6fecfec13d7b8f95bb3b5f30ad7677288c008ce134edfb039a7", - "0xa25dfc4019f165db552f769f9c8e94fa7dbbf5c54a9b7cde76629cc08808c1039ecbd916560c2b6307696dd9db87d030", - "0xa917d25328b0754d70f36e795fe928e71ae77e93166c5e4788716c1ef431115c966f2aad0ce016f4bacc2649f7466647", - "0x842ce5e4ad7d8d4b8c58430e97ff40a9fce1f1c65ecba75fed2e215e101d1b2d7ab32c18df38dab722c329ab724e8866", - "0xa8eb2ed2986ff937a26a72699eb3b87ef88119179719ff1335f53094c690020123f27e44fc6b09f7a3874bf739b97629", - "0x96753c1f9c226f626122dad6981e9810a3cf3bbee15cfc88e617cfd42753e34593610861be147a7b8966bcdec55bba8d", - "0x94119d31606098f5b129931b51b4b42c4e3513a128b9bfb03cfeee78b77b9909b1c2fcf0a292e49d63bc4e5fe823dfef", - "0xa869654f5880d9c21a0af1ff4cfa926e03ec1f2d80fe5524605e04f484e09dc80d6769249f31fd378ff3926ab4cebc69", - "0xb2a539bdd8de4499c5f35cd8824974c2abb1933b3f50d0175dd044563ca829eaa0fc47bdac97eafa98434d1cd05d7c5d", - "0x85f53b2bfcde1986ce7279f3a2f5f841f87d75af5d197c897f261d4874bc6868c575ecf7556a32b7b33f7b2795454591", - "0x964f087ed02228b30f401d8aea35c1a7f76698e4075e1bb343398be74c716884e9ca1a31b81566e1ff7513cf76a2f0cd", - "0xa1c9d9c9bfbc9c4e281a2953d5991e7b22ff1a32ddaace9e8d9a42e080efb802b853d3276973b5189a5745943c9b4389", - "0xb0c45a9852663a427d7f50c608a6419fbd00f90e8452757a45269d25c0386ec29942f48a34aafc0187ef6020e581d290", - "0xaa3ca7b01862d5d2aea714fa06724b7dda7062b6608605cb712588b2c49fc3c7d89a8799e6e7c31e7a9ef28b1ad4d1f7", - "0x88f5e98ae8c5ae7add42f6d358a35667e590aa80e1869593cbf597d7ee466efa35b429f1836ba2199d8280fe7f60ce3a", - "0x8a3bff472e8008f7e50362acc1a0b53c09ac60430942544532722e938470376f0672662261992146765b7c75a380c318", - "0xb9847be7f7aee7532282c279dde928698a892a183ca3047ceda521e9e0a50d96fd3ce59f8e58f31af49508ade6d4ba51", - "0x98065dc23ea3df6d9f8459e81887d88d5752b7e7ba6050ec5c3f0dce93e463e0bf12be3c94ec74c16e2f7ba62e447845", - "0x994aff677b97ee790894dbdb21b1f9210734e008cee2aa2200c8f2579ea650b872f39776a13a8c31e95cc817091bae1c", - "0xb292811674e18912ebe79df1af4a132b04ab702c125c039e0213f735f658fafd36c38e5bbd7cad35842576431f5f3630", - "0x96520d750ec10bb10f75019f8f0e4a93ecbc6b678a710d76cd10aa27a6642ad1461bd58fc2aab8e0391b3f788339ed29", - "0x80d478da7fe246ad0e81a00141229e9d91ffb7fd1b29975c8ec358ed5e864e481bf01b927a9ba002c5ec4aa226d0cb57", - "0xae58049d93a11ae845dc5be2505e95657f83b95d83ff3591a3c565d587157be795ff4481f42d59eda95e6d523444e199", - "0x85f1f5ad988b9f8a7e24b6d6a22b9de9fb3fe408f95711389c444d7ba2243987225b04318aa97a4cde2cb4c30c05508f", - "0x922092d0cb828e764ce62f86cbc55c04dce07233cff041888fae48cfe93818780b4aec9b4ff4718275bb2bfa6bd9e9ba", - "0xa85ba97125feff0590a05fb78f19a7338639ad1748802918af4d59307bc994536c0ad638b97b9acd26a08b6b4370dfbf", - "0x8c46fcaa8d13266d650bd9366180e5ebbfa002c339e4424a030de19ed922e2daa9a353ae54921a42299607ae53feb075", - "0xb8549832230eb1ec6ee3c33c078deb47f556a0907d2a85fde7720391c82d2ed63dd753cf544a6a0a46eed4b8d1ecd9b8", - "0xb7b96f24504c7f8fbed9c1c654a2550feeee068407b809c43f1082c9558c8665806d911d5d244308169d8a531373bf56", - "0x81c483fd9d9ad7af7869d617ac592e7e951e39738da041d8c4110637689108eb29c8acadfc85366c70885cdf77b353c3", - "0xacf33bcfd9080dfdba828727fe36803327a94e8a3ee5b6e445274f0e8267ad3c943994a8dd6d09b8072912b57e1e25b8", - "0xb3475e7456ff96861bc11068198d51b69b899f5ff13022694b501d3adc8bac58a16204b12011d61e880c8459f4badbbb", - "0x8ceb9562026aa96d6e786ec2e5cd49200b5b424349a2214cd3ff5c8f1c2bf1b9872480428f5428e45cc61106cbfbd953", - "0xaf56f7e482c24a1367fd798201a20c464848ece431f2d8a31a6ef4f9bdbaa50991e748dcb4ef0c08fdac0ef8ddda3b80", - "0x896dae8b12549909d512fd5c02a2f72dde4086aef6c8007ddb26bb04dff51a707ae94ff87e45191fc10339967fa28958", - "0x8ed1c606840e07a2ac6ff16ac6e81ed3e1c90872ababfe68d56ed2dc50d9294579b9c3546dc63292874299a3162d59f9", - "0xb4d7a5c0836e419a46942281ce77d0aade8e39eb1bf1190dd274ca5070898a1c02ad9d165855629d6e1c96df1a6bd5f3", - "0xaebad8939ac117deb28b789d9846c2c80359dc260920ac8408dbae0b6228dbf496dac0023a3b4302bb9a53e8ada18e61", - "0x812d07c74a8650dc3f318c9b2dbf265f181041fb432fee989cedabd44b933dc6590e36c71dcf9dbe7b4bbf74ea0d7c50", - "0x87b131dd3489889e090839c392231e0ee198acac65bb2e9e63e7d6da322391d1685cfc8ba60699308054c4b0fd89c90c", - "0x8b12110ece0b99b2e653b4bc840a12bce5b85abf6fb953a2b23483b15b732a0068824f25fcaa100900e742886c7b4a0d", - "0x8765fc9b526a98512e5264c877bdca567e32fdcde95cdbcf4f4c88ce8501e1c7fab755f80b87b9b32d86d18856f1d005", - "0xac806a32a14019337dfdb5f781ecba5cdea8fb69b23e0e57a0f885e0082a9c330ba808621a48e24316604f6c6c550991", - "0xa711970fa40cf067c73e3edee9a111bf00cd927112205e9d36a21897529be9a051be45c336d6b56725dca3aeea0aed15", - "0x908adbc17fc18821f217d46c25656de811d4473779a41eacd70d2a0d7dd3010de4268a562378814e619e13ac594bb0c3", - "0x894251b79be5ae763f44853f6999289b3a9abda64d52797c6c7d6d31ff2a79e9b3906da72f9ebb95b61d6b29479e076f", - "0xaadcf11ea15bcb6d979c3ea320cff8dfcc23c5118ed075f35e77f71459b2141253060e3a90839adbcd3d040ad3bdc5e2", - "0xb4e55d7d2eeaaffb0267448ecce0b75166e4805dc0e261eb5634d4a3f3c08964a597302fd8f6b45ec48178619291dadc", - "0xa8e2a02c93d6bec7f42f9265269660b4b404940c3e3de9515b4d826ea7e71f18c6f90a71ce3fbe452d0713de73cb391e", - "0x8e2467accfe207cb1ba37d60662920f95338ee212927edb706228c25345734217740159310edf17687f58b333754cb65", - "0x90376b88f653381b3bab673c48c2b84fa82a091e18f710a732fef836e0d39043fcd5527aa97a3a385c0a77cf53746993", - "0xb16530e289198c235ab680f86851bcc177f0c16a58483d83a89213077b06d6840600b03834b6b7af0e22b1914f72de43", - "0x8c4fc3854f938ef1c2b5df065e4e75e9f299798afae8205706439491bdf9784c756134922e77af007e349a790afa52b7", - "0xa68aaec4341d29b92b35322f89b1ae3612e7b440c89a86135a07c261dc5799217a651460c92113d099b486817226d8cd", - "0xa653f965feefd2df24156478f0cf3755274ca395afb79e8c72d3b6e1d1f5ba7f3e4f9a4c5ee85355de6f3c81935ff579", - "0xaaf6c8d2717b57f6b14e06c742a11a3bc736bfc0327ca4b8a005b6e924f06871141d231737698a9a59286e44f244a168", - "0x8de32e3c104b4278e27aac695d224f134001c3619f15186466c57c0c46f67e2efe537501d0d9f52f4cdbc724a170b92d", - "0x8e9b5858b6d4ffe811f6498bd80e454f0d6b345d4729c946626c7cdc196c803a349a14515296aadb7258bb7a5b37e930", - "0x82fc711043aaf1d7a9c712d00eafd816a710f82eb10818ba6af09f591447f36814dbff6e6a1cb2b5c7f16c73930dbbca", - "0xb2f0205327fc8ff687f751e7b97788732afaef4fcf51bb17fd7579ed07501915790b70fc36624371fe4fb87a0179d850", - "0xadd87d5b1288d30f3449d3ccfa11cba4dc7756d85cee1cb6171b493680a625a01f273d0bb8e6332d0410250036b3acdd", - "0xa411f75ef7dd8de8062331ea40929db989e4d65ae8f33d3fa6cc19c98fa8a8ec2b7c7534a5c5eee9e5051626a6a2e47c", - "0x89d40a647781e7f2e8ab3a0f7dc7133669944c0cf627376433687a2ea15c137be26f582a6b07ff94b266ac0910009f7c", - "0xb2b5f808c26b40ed507922ed119b0fb95e0d6d8b084bbbba58ca456b4354d03110c99989b93207998334ea5d1b70fe49", - "0x8c8db028671969a1e80e595283ce5e678ee955d785043bb5fd39fdb68a00e4c15b462600a7ab1f41486b6883e725894e", - "0x958087ce0c75fe77b71770c2f645ef3360c1a9c98637693b988c5f6ce731f72b24ab8b734e8eb6258ee8b23914451f0d", - "0xaad6c00df131c1eec6c556bae642e6dcc031e70f63eee18682f711c7b2fcd9afbf1f18cf8a4af562759130add67bd4a3", - "0xb6d23c567291f019cd9008e727704e7e6679b274feb29abba0d92e036f349b1f0fa8c5271ec7384e8d70a2c3977b1f8a", - "0xa942c770e903d4150b5684e4b94bb72d0e171df2c7cae6f46e002c41c6b04d774ac6e2753ba8dccdbba3ad1e297a9ae5", - "0xaa542d1849390f86d797408ed7f6a31504aa65d583481a00e475028af20f8b69248a87a8ffab1dace0377db77fe5f9b2", - "0xa1ed3f9564a97f7cabe7c67e018eaeaa42db73a2f3d2332041ca9a7bea57436d848784d6dc402862c22a47f0692b1286", - "0x925c757750c91db8b1b3c220fcbdd80742b4a060abfb0a402071d215c780ef6b420132ec5a43043b9fd7a06bf1b323db", - "0x94e575daa7fa0bbb35b4386f510fc3877c9df57bcf15349c5923f30ad6a8df95372835cc078216b41a7192921c1e8973", - "0x9346a41174865d9ab31c7fb9a5329f322bfce06002386d3f5a2e2193de9bfff12bd0bd93307928f7b85e1097b2aaddff", - "0xa6e54c9324baa1bff7e9bf39c94fdd308ec6f210aad937112ec727565f8a6141375c04196831873bf506294854f6a20e", - "0x98d47b662504f400f1a0e14e24b43829490d022ade02a56288aaf148d466b45d89b5fc146cef67c9ba548cd37ad5e354", - "0xab690dd59a69904b6b3a4d5a42d17ea4898d9b00c6753aec216d5d4ea564f9a1642697df44d5a62f2c2ab19aaabf1532", - "0x8d0aa8d3c5ec944af49beb99e403cc0d6d1adc6003b960075358a4ff1cbfa02a83d6cb4d848d9e83b34882446a330883", - "0xaf9334b7300780c752f32eaa68f3dcecd07dc50d265083f37f9800b02c2595ba24dab89f5fc27c1ecfdbf5291b4d77bc", - "0x81c4a6aaf7d4ccee9925c512dae5da6d916a6dd59f7a4cc79d216a91201b4d300114a309e3ddb3291bb95f85bec2a8ea", - "0x8c804e810c0785789de26e12b1beff56a163769733be7a31f34f81093782d6410293768a166c9191ef8636fc8724a31e", - "0xa91222b48de238f6dfe79c84080cee618611bd0bdca15cfe44474829e42481f8511a82589e69964e19f8cba04e3f5f3f", - "0xb26a8885aa594b0c8ad4a1711d80bcf687df996442075dd1497db1b446d16c74e28bc6f0e92b2ecea9c3e15c9c7e828a", - "0x85940f45d324ad1d335bd1d7d6f81758f52213e63d5770d9fe0c0c9507d5550795e538b6a2dd463f73d789b5ce377aed", - "0x931a277c78082f416880620df3aeb6d0bff2103d19679dd092ea981f5323e438c50a0d094908034ff8a2cb47b1a44108", - "0x88dd85e4e2aa349a757b98661fc00d4538ec1d3f53daf44b16ffcf7f943dd4f2bba5b8ba3b05c529251dfeed73f6f1e9", - "0xb7fd7182cd33639710b8216c54a11bb02e199bbc54fe33492a809dbe17771a685d6238ea3ebcfc75e3b0d4ea5369bc9f", - "0x85d77194d910f8cdad7330e1bca9087529a40fece17492f1d17cc4790833891b6d01d24f036b6422175c732b438faeb5", - "0x9845265892d672d9517fbd22f88be4f225711b4abafa8327cc059f000656e4737188506051565d97912a0c19c3d063c0", - "0x90a81987aa841c7f640c298b816643a0ae00cd3609c3a31d0b01245283cc785d9bb27763131b31a4f21aeda4e50073e8", - "0x8b1256eb41a600bda8a06ac08b98a220ebfd52f89a0e4fdce32425db7a0481e9b7873ba3b7a24ad9fb782ee217dfdbf6", - "0x870548998deed85c59507cec7e69cc001c279bb2a99c45a4d030a35c107e69feb76afecb9e435e67965051d6d7a88220", - "0xb1504d194a0dd8df48d431ce991f89d7a0f72f573d21bd5bb46474c5005e43820877a44e62db555f194427ac8a4b9168", - "0xa00d7423ec2cf0c9e9da07f3dae092d09e1ff4be852e07e531aa54d62ad937bfb52c8bf44683ac3a70f6dfc125575da1", - "0x8019625ad3d218018803aacc2efcedba3a41c24aca8c5aab2005556e58fdf2ed614831277df7937aa594e97a2fc65e7d", - "0x8595596284f3add0155ecfee3fc0b66a6b6fc7923d82ca8302952e2ed906d119a1c053aed1123b51f73e1d30d93aba57", - "0xa8ba033f5e7d06177e9ae2d99c40ed4e99e14e1c1b61795997f62e21ed8af1531c4720f23d6a39b0f75c6cd91c58c700", - "0xa94f4167c0f6ae214bae75dd92c63299dd954b00b0d8b0416b8af929fe5aec6a259e44f83a183412d7ba4eb3a49728c0", - "0xa73ee3c3a0fd2a369e0a279c3e214fb662d0378eea3c95cfb91412d7213a1f05958bd0de8f2a4f80f9f80d7eef943b41", - "0x8ef6f3e241f6a761c9ab412629a49648c08b70b837c2cd8bea620bc93056ec73754e3e11f0df50f8e9fa67a9867501a9", - "0x80b473ac4ba8cb82b4ae684206cde124d10fcf619f55a6c90d035981e1b08b9e141b4e5fa9a9af0b7f0c281b355dd593", - "0xa566e2be0b41f01978dfffbb32f442b5e6706f5b9901110e645cf390f6a82869e3ca16887ffa35782a004d251d29c26e", - "0xa74e01eefa03546d00afdd24bf17015eee95d36de28c03c9b055e062cd5e8d8f20473c6d7ad21c94f9058fc5e84f9628", - "0xacefc74de146911275dfd19bbe43d72729e89e96da04aff58e5fcb90962856c0b24eb13f43e30329f5477a1b65ae9400", - "0xb5f113ef36e75de6d6d44130f38e460ad3ffc65cb9a5606828c4f7617981fecf76f5e862d7626ccb117aa757cc3c3e52", - "0x96d3aeb1d3a66b136244062b891fc7f93ce745b776478d361a375ae57bdba9b4fcb257becbae228c1a3aff4a1c4fb5e2", - "0xab26c4a110877e5495b674569a32025dad599637b5dafedcfe32f205dfa68cd46f3ddf4f132a8e5765883b5c83214a07", - "0x922a7a738066692193af32ccbab74edef067668ce3253e18a3275afcd5a6df7168deb2f5175c5fb413dc08fdaef63b17", - "0xa47542f8e4a3a35ef6049280d1a9442c920887d5f1a1483149e143ca412318495a36decb804f81c9f5a7672a14965a4c", - "0x8fde57991e72a2aebd3376b4d9fdd795943ba3833431e52b136683567e6ee2cc1c1847dc49dc9534983060c54bf22f7e", - "0xaddb041f01a99e7238ab2f9f2f94579861d0470b93b91cfb29f3a2e4c82386c868b2cfb6f3778b8a9cf908788acafe58", - "0xa8c4e1df726431c43703739776e2cc51f5ebac57051244991baf53582538120133a44ca603d0722a4b5193e1be3c5ec0", - "0x846379125968d1154376c5dc63100bdcd99b9403d182e3566fe48d79099099f51523cd81d21f0d1dcd622b715bdd851a", - "0xb828bf0d936d275abb40e3d73ef57fcd7ce97e9af35e194ae61463317bac6c1b0c3e4b40afe08a1061037bb7149108fc", - "0xabd07c71754973e698fa26c5019afd9551548f8369e2249b9902513f19a097057ee7065a1d88912e8f52e6e0fbfa6d82", - "0xa9e36b6fcc9a3cc98e76d5751c76c50e1f92b7670f8076ab6ca8a30de4ec14c34669e049fd39bd293cde8789b1ca67f0", - "0x8c060835496a04c7b51790790035862b20547e62fa8bb4e8857fb36891ec6309520af5c0f45d5ea46e3d228747d710a4", - "0x8cc472ec62b8dce244373f40a821db585628989b6a7c4d394edffbc6346c8be455f4528d528fff41f91f2c875bd9fc0f", - "0xb4a75571f84f93451f15b3a86479063d7324d2789b6d2f2f4f8af68c66fac32743dc09b51df29608d62aaba78f6904af", - "0x916484984743b5ac16d40d0544faf9184819d92f779254b7fb892eb68cefbe59e75be8a6336a585e120f6ccae0a1eeac", - "0xb906ae585a73119764024e9eb87d92e53ee0c673474fec43fec4d344a3bbf471ce3976d25e37d197604689bbc944f1ab", - "0x8552708487305f16f95db3e01fbbfb969398f5b6d116844cbb000c9befd03f15c767584bf9541a42141949a4dc787a3a", - "0xa6025a2773f78c247f78c0d895ade8a6baa76e5499085f6175935d98a05fc41c1359f7843e0c6c323f1be256c45f45e6", - "0x96dac695dd9288aeb6e32dce50e51ddf1fbd41de6146e3605c7a81f2253b17babf2bfda4f5a9d0c28352b9746c0dfa2c", - "0xa215b21f8eb2290f9d308278f2859a999eb3a31f4888f84a65f9ed05e1151c17777f91054d4d0de759ac5c3547d91929", - "0x8fd7c9a279e9b619acf927d501b35dc551979731a89eab91d38b2356c0d73569baddacb9d1096d20a75c917ecaedadd6", - "0xb985e8baa5195e2f1ea1091122d55aa321178d597f87b732b23eccb12b891638be1a992305a1ffcf5233af34339fa02c", - "0xae1a9604b7f569aa48d2daa1889e76d3d103065fc8c3deb9ae127a6d94145695cab3bef640fa781612e8082c6d616c47", - "0xa8fc67f9069f753360349eb874fa4dcadb2ec48d97c61abe568faee5f370ec3c87786c7faf0f73fc0ae7181a36eb89ca", - "0xa506d13acc3a9f80509fac936aef848cd30698631fff6130ed6217512ed9527d075f653cf6ef91f68e48a24c903eeb3a", - "0xa415093755cc012863043bf586b970bafdd87653ad14d1929672e04949bae4a753d16aa3eb5bd1afe3df3691b80f240f", - "0xace3b792a1960580348b6fae8513149242378a18382741bbc2fb2f785cb8bf87550da4b5e0df2955970ab3a31f99f5d7", - "0xa47d7fa7522664c8f9c404c18102f6f13a1db33ba8b0a56faa31a78a3decba3168c68f410115c5d9f240b3dc046dc9b4", - "0xa9c930db3ea948cd2dd6ea9d0f9a465a5018bbaf6e9958013f151f89a3040cc03ae0b8eaf74b0ff96b4e7a6cd8aa5b4f", - "0x88abd235e3e760166cdedff4be82cf6ba02d68f51c6d53b1de326769f1f635215890f9a4c35b06dd16a9b93f30f3a471", - "0x8f8d7b2fcdb70bfedde1ffd7f0b94108f0fa432f6ae81097988521dd2c4da928c10c5da3c7f33f11bd5331f2da8ec219", - "0xb7abdbd48cece30d8f795a58a94913d76842cb006892485a9382a0502826538ca4ff951cc1ef4493e45de8571360d20d", - "0xb3e7b125f350c52695f7c5ec4a30916ea6c11744f1151a18ea0510e6cf6ed6f6dba4beaa4ca56988d306bd80ec360056", - "0x9a004423c95e1f1714f98fb97ab798d6ab16cb5f6d6cad860635585d4d4b43ffcda63d8e931351189275e5a2cef28c2f", - "0xa8eab6ef917cacdc9b1932eb312309e1f85298d63e55ed9c89ab79da99d3eb60f1643d16be920e82d9285f60c7f7cab3", - "0x934df955485113d10c4dde476ec14a98771145aadf3c8b61af26b09b9948757fa1abcc945ac91466a18c18c2fdce40d0", - "0x99ed9146561597cff8add2196ff3a0f161dd5302685ceb846afca6efb5225f642e8f4a0970eecb01cdf18694fa697095", - "0xb37062dd12a81267bbbf89bc9d6e30784c0e11e713cc49c6c96440f800f2a6a2a7e7f6c7f6c9eed4bc3c8890f2787342", - "0x83a3d70055b6044e0207b3ece4da849755ab5798317b36b20c3555a392c27982f811e1c5007697554eeedc737b37f3ef", - "0xa85392c07ff8658935fbc52acec7221cd916c5fde8537a8444eefd507220e76f600350ae8f5dc3353911087b88b91045", - "0xb1ea23558ad805dde9cc1eade995cd8e7f46d9afa230908b5fbaaa09f48547f49c2bd277bff8ab176f1c240beedd2b09", - "0x8a16a48b9105d94700e8e5706b8d8a1ed14cffda5558a596974ea3191c5c3449da6e7efe2059e7baf4530a15f175ce16", - "0xac5fa54381fc565842417558e131df26e9505027759416165035357816a7e1859a7c14c228c79b4e5ba2ef6758e12ad8", - "0x8475e290c399cc9322c05264a516cf766bf5fdb6b9dec7283961da0b99012d499b244b33fc0eaf94b461ab777f2a9537", - "0xa7922f3c70e6857652805af7d435646c66d94eec174be997c4fe973d8f019990c4f757eeb730b2cfdf8154e6e97f7d5b", - "0xb90deb797fba3150cf265a23ea6bd49a382855cd4efe171cbcb1664683a9f1687cfcadfdca4e39cd971ec13aa5cdc296", - "0x91ca761dd9659007d2fe8970bbd336c19ed0d2845d0d8aaab397116affcc793de2da73d89e6625cf4dae5983cceffa56", - "0x9121ae9b60323ab1301e97555bcc74ddba0f5b1e62bfe9eaa2c239e1d685c4a614d397b32a59febed4db9968db44f38a", - "0x8477b07da4bbfe9087975f30d2c2333fccfcd7149f90e0e6fabecee627eee3ea324df31cf6a680393f5dedf68a35c9de", - "0x946a9c0f02fa6bf9f9d4933e7fc691749f4ac2f82a9b880666b5185189d4f3432da9096d0ea4d6baacbc079e19c887ce", - "0xb24663332914ea519435874d4c42d11842ea84dd3dc55292d5b0f27f64587848d095bacaec235a37003bdb5185daa6f2", - "0xb980f46f84ac21dea75b4650f9412f6123325842758589a9b47caa68545905061f03fcad23cc102e2ce8ffeb1ae634a8", - "0x90e9ebb060182d3043ea4210a2d934858559522a19eab9f0ff81a367484a05ec7cce78ee6a91dfff96145869db6a4e80", - "0xb04228a009c91847693eab29c9ea71d1d6ba07060bc2b0b3bb81c46a125baecb3e1412f6ce4305076a97d316d14e4665", - "0x8d3268370dbf38d378c7228c7b54e91f90f43cbfddc0d8468de11a4312616ca6372619209b89114152b16f334f4d2780", - "0x964a63ffae653e0249685e227d937937b079ec3da9c977dad2b2e052af5eb560ce7d175941f2ae0df90e3d0a20b77e75", - "0x855604c2910be885b14b27896e16d8dc339236b975398c771d29ac74e4278a2305fcf85203050a8faffddf64ea19cf78", - "0x8e0b1d61a4349411eec77cf3490555843187a25a93e1f45bf66ad3982b9cc141b07805f8cb252b0fcc125e0052a7c450", - "0xa03bc9588f971a1257cd0cfd2ca406c76aaeb634001864b0e4dda91e009d3361b33fc39f34922835031a423a13619a82", - "0xb703fa855c2c4e1641d2687717fe8c5061acab71cd2dab55cdb069a6865464c3080f7936ddfd320516b6791b36c64b8c", - "0xaad1cfa7295e463fc3d5374ea4b952020010d67a77c7a86fe2c351a5959cd50df6a0045ad588257567a99bfd0e9400b3", - "0x97906fb82abf5c1d9be8f72add8e6f175a6a5a4300b40295cb5ec8527cc7ec700fa03a7a494122d9605d212457452e41", - "0xa83366cf93ad9a07f617e4002a10b624270f60083559b045ab5a805aaa592ac37b90c1e8b5437158f3bd942cf33bb633", - "0xa585168e157e111bfa329d0ed6651a96509b20b30f6bb0691c6a5875d134d4a284867ab52511cdc19e360d10638e58a1", - "0xb17d480a0b39f2487b7f3878714658fda82f2147c5ecbccd4004eb92d267c4663b42c93bafb95ce24e2f2f0a9ea14b8f", - "0x9362297a1a3951d92db4fd8ea6b48c403d6d8d2f7e7b6310b9cf9b4e4ba9e84cfe1ae025830aab9466c32fd659144474", - "0xb1a62fbadfd4ea4909d8d0714c1e3ee9f95237fde20720f88d5ad25c274a6792158b99966d7b93151f769c832b6a132b", - "0x8d9af736949a33fe929548abe72384281365385862821a584f5198eed63bc5388f89fc574cda35a9eaabed0d336b86b6", - "0x90ee2235f4ec2c6089b5cb7b8a41c9bc39e4a57935022ef28bed490e2ab12680922af7395bda4f708809e2bfc62192c9", - "0x91f3a123d420bca34d3d751119bbebc435630c6605fb59a8d80d16a4895972e56cfe4cf1998e0a527c18ee38c2796617", - "0xa2c4fbb20e7fbaae103b86ca9d8dbc2828e6bf33d1d7ce153bd98e8880fe7ac62abbf7059194b1eee64f4526a36c63a9", - "0x91a7f93310ac74f385f11509f4bea9a4d74f2ce91cf2024fee32a4a44d5e636a73339c6b4027ee4d014a24b90de41ecb", - "0x914a6d405fee0a15e99704efb93fd240105572335f418d95e1f2de9afeb97f5f4b80aaf20bd5bf150b9da9abc2b6d6a5", - "0x9462cf2c7e57e224389269b9fdddc593b31e1b72ab5389346aa9759fad5d218039a4a5bc496f4bf7982481bc0086292a", - "0xb7596132d972e15dc24f2cd0cf55ee4a6cc3f5a0e66dff33021a95e5a742889e811afd1dc0cd465cee6336ad96f25162", - "0x99409bba2548f4ece04751308f815ecee71222869d8548fa142788fb19df5366d093a5131e57560237471bbd5279bbe5", - "0x8e7560988a844b5b844ad460b19c452a5a04346d8c51ca20d3b144a3670ecc60c064b2415c2eeebf140d6ae4ba5c5360", - "0x8cd9e18d311e178e00eb81ca839cfaa8e64e50a197de8461f07135fca28c1d895dd9c2401b923a4175ff711853497317", - "0x91ebf99c95e8f653402b3079ecbd533ed7cd3b6c857a710142354ce8330cebdee7cf0fd0400417883b66055bec9d0552", - "0xa9d0cf8cc6bbdc44426dcb716df667826426b4559056d73738bf3eaa6df373403861b6bbd6fa0454b1d2730e3b0015c4", - "0x928320b452ef21d2443dee360110550f531d7a4275b2cb227814150f3e9e360e05a884d6e3bc4415f202120ea5ac333e", - "0xb9551f2b2e7bb984618f2e7467e33b5b5303b8707f503f2e696e49c2990ea760c31e0944d52257c7a38b553a67cf621c", - "0xb2ec34126fe61345e5c6361fe55b8fb3218cdcc9103bba5b200252d50b758153cd549226b7aabedd265906401e755190", - "0xa8cf814926082a96a921d471036a9919a58e68d02ee671c215ea304759cd92a7c2c9ccebdd5e9ec5572164ad2abb22ad", - "0x8c0563c28c261bbe9a1ec4986f8b277324bf05b4fe5e2b79a862168e646bbea50ce7c4622b2aa7ca899c1a728c226d24", - "0xb558cdc334ea894d3a13347ea9e30f78a0a20621903d6c009c54feceba3ba81d2445a43572e088ae691f65489702e963", - "0xa62ba0b20f46c367cfd409beb300e39f1a6cd5be95e63457b6ad3cb66374aed754fd037b8e4215d651a7d8e1a442f762", - "0x8543e2c6135df471bd7a5c09f1313674c7f6847cb88f15eabf40b2bc9535d0ec606725b97103334a0c162a20d9f5bb53", - "0x8c0367d7058d63b425450f8ee9252e64234c0c2e61878c7c2d4b17bab22a72f40c75ac3bf8b64f264c00d9c5963af041", - "0xacb7207445993d563f1b6e7b179bbd6e87044399f80e6d15980acf7aaccb9d85071fecb22250afb3aba850712fbda240", - "0xb93725e66184bb03f0ab4078c737a7fb2b10294a3a09995958de3dcf5316b476ce9b5cd8d180017196d9482abdfcab88", - "0xafcb52bb7b8f45a945299da6fc6a877ba9f69f7f23d5f94b5f5d9a04c3cf3089333bbd50fc305e3907825003da73b9f6", - "0x961de781cb238cef52d43bc0dc7d8e3a75bca4c27ab37a2e9353137a9aa9403444a5841b595adeca75a3de5485ab97f6", - "0x9408c828d3ed6df40cc167d72ca9882a9c9cf8e765d6f9125e02e0d66ee0ac94f449803afb50bf1b92176feae92473d6", - "0xa85480591e7e033b9087fd0efe5cf3c88c10a75de4a5d7da4443df1cc1fa1aa59b6cde3ce7453fcabe555495e49ef6f7", - "0xa2611bd82344bc5d70d7e6cf3f0d25866b9f709ac4bf6f75d1006da2a11e2cd07a4c0ac71505e5062a04f71db7a3063b", - "0xac466aaa96febb5b810ba350c7a874797ce4bd6c9585f6b9d114d646894a67c9af9526ade4f7ec834d3a69e18ab643af", - "0xb73fc98a79fe77cdbc524c76a09cb9f2d5f8b0a5508846bed1ba5ea9ae3bb62120e01d3b8fb544d90ac9ae0c3d4ccefe", - "0xaed333c3403adc899a870082f70aadc770c9f880dc057f05a46d7400be9d893354121a0a31e5475898f437bf722eefcf", - "0x97f02133c72187178a8c48db26031f0b2c0317a6648d2be5f7450f00c37391cec935bea46b8144ec9fea5327ee959f27", - "0x940b582b41f1d0f09f0c5f51bab471e4eb143e91b1e96dde83e94650421d51f9c9baec10cc802fb83cd63b56d0b907c0", - "0xb1286a55a74a88a75da47671994916be428be1ca3f42783e497d6478eaa6aca69d50a421b210e9ed3283d578b651b8cf", - "0x97cd4e87e21c71d11f1df1c0b6518c00e1610661be4b13cdbdbb026d60fc3f4a2b8549326a648b3fdecb7de8f6aa9fb7", - "0x8f36bbcccee986c35328633bf6ee8f70b5dbf42d0f677c0f4e009d2289976e512af6af91a6ddcd87dc0df93bc4ecd02d", - "0x9253ad44ad182e67ab574d718733a69c05cd5bcc43e6292ef0519a9430460aa6a233fe26269da7298ea88cf406e733c0", - "0xb616b5ea74db0dcf8f10a2db79df6ec3566c06410f68a933eff150194608c591b2b175908d4b4ccaef1018b0fefc5693", - "0x80a712ba89394381cbb83fedcaae914cc4f21ab024b8da8a7bbad7762a22f82940451427b1a3f5d84c246d5ba0c7ccc7", - "0xa806909a5517a970879143ad789c6cb6256b82553b649f6865cdafbbc050b1f86528241b3cb600e784186e1a672b588f", - "0xb6ae801d1f0e4adf3ce57659d7c61f94abd3c8d1635ad28133a79eff0586fc48bdc195615335449e9bfee39e8a955eb2", - "0xb8a000561211844bef72adf3413f3b438a8789fcddf6676402ca6a1c2c63b9deed322030de2ae3a0aeb3cedbb89406c3", - "0x8bc3615b28e33fc24a7c989f8b4f719c914c4c65b35ad3d4cf15e2196e37c62e42ca34e8b1275e0f32589b969bdfc21b", - "0xb2f9637f370a79e7591e5056dac004f56b375f33645ae9f5a192cc6b7b6b3d8a1105cc00f10d8bc8ef250ecc2ac63c39", - "0xb51899978b9c5b737999fee1935a5b0944261e7005bea411b5903d2c16ea045a3b0bcd69395b6733752caed43bc4e343", - "0x873c71a01009dddb9885c48658f83aa6320e74bc152e09de8b631c763c2b4e2e8cbac921418a0d9085ff5c53a2b52d39", - "0x96470f48efd7d2ac2daea8753ef097c09c6fc128a54cc7ef758ff07e32c0b0ac7d122f97b53e88a29cc26874dfee5e0d", - "0x8dd2decbd3504b7961d65edb8d51b96377f4edd2e0d2cd8a4d98333f373c79a8d7ca8f8408718d0e7b5e48255857c339", - "0xb536ae387bdd0f6e40850c71fcaecb1051b2c8f7bf5cf92c6bda030de72a03e9212d00390c53a72a08e9fb2bff1249c0", - "0xb1566076f59064e3545adef74fd1acadc1bee0ae23543c30caf9e1ad1fc20ebe84ee25004c612525b26857253f5345b7", - "0xafd180e25444cb720342923b8897d38a6537bc33a0ca1fc9c6e4d524b280193618f19e2bcfbd07606b78b734fe6114ed", - "0x89b2a6c8811e5a6d07aa74c79dd854bdfc292cc104b525bc37e4c7c1f9485e19d759c8e27cd7cd73c46346f56ce3b189", - "0x8234196e196898b2501b79d0dc016f6df3d5878952cdb8a93735e4ce2ecf77d07924c701e084533a20f0c50a7d1ee376", - "0xadea7ce2efc77711f50138691ef1a2b946aaba08e7e3b21378708dd5a10bae933ed121e71834b43b14e2ea30a7b306e8", - "0xa566d406a35fae703b3d1ea1791d9207116002e5ee008d01e053a1ea4fe5af2feb63605b011ae6a14414028aa054b861", - "0xb83bbb063682386456719179b6f6bbc8cf6f791229600b7d402167737492f99437b45886695b26a28731e952e56f1ee1", - "0xa8f5fffc2c335d3ad5c7593e81f0862351413cc348392afa86d50921dabb929a5a1de20d604666af9e17a13bbc30bc3b", - "0x8d5dcdc1335f01847f6ef650ff64b26e7c4cecb934a7bbce11254e8ced9fa9e4fc87eec55248f69bf499180101c63f5a", - "0x83fec30b8bc62f9fc28301a03ef18158d6364738f1c42de311bbfba2e62b25d4c9ea9d6097698b24c84fff956a6748b9", - "0x96394fbe0c2d03cdaa56e13326aeb62344238ad3043ee2fb4f18ebf0a6f7f090f410032a2d15bfbeca9449202d59f2a0", - "0x94880f5928fe71a797362a37d05849d23e118742697f75bc87173a777e7b9d4383b8796a8a2bbee27fb781f363301dfe", - "0xaf229535896ab86fdf6d2ae676a0dbf44f868f6c7f17bd9a65567631c7aa2e29758f41de050ca5311bd1528bcc811532", - "0x8d4fa4968575b483b3ac16345e7f1ea3f81e8dad72c945a48b7b982054fe1030584be2f89b2f53af84d2490cda551b84", - "0x8052aeb115e4d242078c8726d376a13156cc832705243f14adaa3ef3889e1f2fcdfd46e087acab6fa85a74afde5f5eef", - "0xa1349c8a22788a1937a837fceecfaada9e93a63e582a09c56b53da52c9db1600254dc85f63f5eadfa30b89b31dcbdb30", - "0xa10178cdb263ff1a5e0cc034b6deaa160d00c3c3fe1fd1ff0c55fdf1ecb83d771070c10930f88832b75fef39a10024ea", - "0x938b17e4405934ea5ef29c2187d6787c5ff5d8c9a02665efb453117d462dbc50ef2c202cbc884305cd807a70b5cc177b", - "0x84f01f0da6b58c71788616be71fb3c259ceea7f8bd131a5661c5c03d0205feaff6dac2915919347b0559c381477b3d89", - "0x98787f0a2fac2b04bb7aa247ac77236bbe690aae64203e553be328a2c3bffb772e7a0244e585d27558cc64b089a5ee11", - "0xa14501d8b6b3a84b13b9006d521667e8d168f642ebf154c4e90ec8c75d11985fd0c9d86fc2efa6c7077dafecfdf0ab13", - "0x8215dee75eed04de83a3e910129bee8c48ce01cf1317ea477ff35c09a6f9e9771a8b05aa79e6b0f3e71b9874695e7a2a", - "0x85763c3072c7400a2c5668ef5cc53e6f4b8dff474146028a8be370ca9d8af9bf9ee10cd7d23d33eb6d6e257dd3af38d6", - "0x91bf62245c5a59d514d39bfb74db7f72ca7160c1c5d5be3844fff37e53e99d451e18a6747c65e33f98f48a55f38962c6", - "0x8c68817c6a6ea348d9aedce99929371c440fbad72718c2d239ffcaebb26ecc8a4e8c38c2819d945fdb7f02ffda70a5e0", - "0xa96ce2745866a22267a49faa7ea00ebf009ea8d0b0ca2c233c62759b9d5514306b5822dd2eee0124c9e28380e2f97aa4", - "0x8b18d5757c73843dcd55f0f0dc894bcd17e0ecf4c9fd901eacd38480844a15b4ce5e9598ccee039f9d93185137630cdb", - "0xa5b45c403b6735aaae14389bcee23ca10571f5437f1f5ab0c2b4e573dfd3341c638fff2cc780166af96b118d47ff2299", - "0xac849a0ccd354dd46bf55ea837d509b4ae3eefcbd5b8eb2582d301fd56c27b89950c6eefdd4e98e608ef4a6b75251311", - "0x89f13ac14bb064e9c6b49a482831ecea6344faec490bd18bb44028b83a0f22e21145861558029bd172ba7c5247c2cba7", - "0xaa57b057a2ac32c101e442c33831630c81b2e061a542e3e1d6897b2b7ca8a7241ef717a548b3f751d60d89be384ba5da", - "0x8a43db4e12682b98230364f25c75b49002f5002bd72a1674cf2a9d53197b5ef1b95e48429af98af503b0d5c3e0e017b2", - "0xa10cd7b8e1574d78c4e917cf833d3d845b878e8e8b60312e6a994bd4f391a5e8c38dcd774087b93c9241238f43f80937", - "0x8b61ccb949088286216cd628811df1a362a7f5c333654ce823e63ebd04b069d5b0f627fb6c96d54c7b853de8aab05472", - "0x887b902020ad45f70f2d5bcfa7324fcbe7be09fd2b1bd40f9ae43a89d487986e89867aee0945ea6a0fe8dfd051ffec56", - "0x822fcd260a7876cad31f54987053aab06108de336878b91b7a15d35013d6d4d6de2d4b30397bb6f1d5c1a7b48e9d1ced", - "0x80b89ff95d725858b50e84d825ea99fb6a8866f10b91a5d364671ccbb89cb292bada9537c30dbde56b989c8bdc355baa", - "0xb53cab156006c3a1766a57dd8013f4563a2e8250995dbeda99c5286a447618e8ac33ebf25704b9245266e009a0712dc5", - "0xb6e2da9c1156e68c15861a05cd572976b21773e60fc5f2f58c93f3e19c73ad6c2ee3239e6cb4654040c8e15df75a505d", - "0x8b7e187d473a0bd0b493adcdb91ca07c9310fd915dec46c2c9f36a5144eb7425dd35dfa50feb0e9ef747caed9f199944", - "0x9743ec3917e953e0a420406b53f4daa433adf4ad686207e9f296e7c83d1ffdbf81191b920ba635c85416e580178c16ff", - "0x98d1476fd4504a347c5261012298ca69c8593fec91919d37ddfdf84155b6f1c600cd8dbb92b93f3262da16cf40a0b3c6", - "0x94f50d52982a3c81ac47a7b3032dad505b4e556804f8606d63d821f2c1a4830917614630d943642ba375b30409546385", - "0xb5c0eb5f4cf3f719be1a9ad0103349269e8b798dbffe1b5b132370b9de1188a6d71dcbc3635dfdb4b888400f790b6ea4", - "0xb47fb45ec73392598866d27994c2feb0b0f3d7fc54303a2090757a64b6426d183ae41af16794ced349ede98b9b3fd48c", - "0xb5f45fd0aee6194dd207e11881694191e7538b830bfe10a9666493ae8b971d65bc72214a4d483de17c2530d24687d666", - "0xa50c149ea189387740d717290064a776e2af277deafcf5f0115bbbdc73c0840d630965a4e0214b738d1cb0d75737e822", - "0xb941afc772043928c62e5dbe5aa563fa29882bff9b5811673f72286ac04fddf9a9ed0f9faf348268fa593a57bc00ba6b", - "0x839051a7838937270bdf2f8990fd9aa7d72bfc86cffe0b057aa8eca7393abf16b70d71a6470d877f8ec6771efa5a8f26", - "0x835bc9d049418ab24dd1cbf76ed5811381e2f0b04035f15943327771f574f723b07c2b61a67a6f9ddc1a6a20b01f990d", - "0x8935cf5634d6ae7b21c797a7d56675e50f9d50240cb2461056632420f7f466fdcd944a777437dcb3342841ad4c3834bf", - "0xb5698fe3da1f9d1e176c9919fddd0d4d7376106774aa23a7a699f631566318d59b74ae8c033eba04d06f8cdcb4edbbed", - "0xad11421ba75d74c600e220f4bce2ca7eacb28e082b993b4368d91218e7b96029acfbdf15a2ab0b8133b7c8027b3c785b", - "0x886ef813644599051dafdaa65363795cf34a3009933c469bd66a676fdd47fc0d590c401cc2686d1ba61fce0f693426d4", - "0x8858fdf3e98e36d644257ab6076f7956f2e7eacc8530ec1da7f3e9001036cba7a0855fb5011925cdc95a69600de58b2d", - "0xb59eca7085a2f6dfeaa6a414b5216ff0160fbea28c0e2ad4f4ffd3d388e1cc2c23a32dbe517648221b75a92500af85e3", - "0xabec62d259bcd65b31892badad4ac8d2088366d9591cd0dab408a9b70ad517db39c2ef5df52348ba4334dce06a4e3ba5", - "0xa9acfe8f5a310779509621ed2946166ffb6168e68ecf6d5a3b2f6008df1728c8fceb811636c50d2e419b642a848a9ca9", - "0x9929bb1a3537362848fac3f1bcb7cfb503dac0a0b1bebbfd6ddf14c9a73731e2248cbaf0fbb16c7d9c40cc6737c3a555", - "0x981d06c7431e6f4654e32f1c5b27e7be89e7c38d59c4e2a872a0f0934cb852c6aeff2d2eaee8302131795590b8913f5e", - "0xa6ba9dd43354320f65fd5cdd5446cfa40080bcf3ef4a083a76ad4e6a609b0b088bcf26c4957bfab829dca6064410ca5f", - "0x9367ef28def311c79adfd87e617651fcc41ad8caf047d73ce9a1f327e8871e9b35d5b203fd0c0138e32e2ef91e20ba62", - "0x855d1bb508a9036f42116c8bbb830c576189798baee27c7c3477ef1b1fc5d7b0c2c7203457f1eb48d4b029dd6f646be2", - "0x8539a5d0528d3d601083e162b34cb33b5bf6736b4feeeab4941f10eea127c56b7e0b8d57f34b72f8f674d89c10bf302c", - "0xa3b71a9a9ac2dfcd681bfd8f6a5d9abf5df6950821705bdfb19db25f80d9b8a89fac7a922541cc681325679c629743d2", - "0x8e95929dfd4e5b56e5a8882aad6b7e783337e39055a228b36022646a13a853d574603de5fed12b6c1f2585621ead7afd", - "0x8b05c885575d6894cb67ba737db5915639a6f281bf249480df444ff9f02724e28ed7371ee7ec26d50d25f3966010f763", - "0x90f1a45de0cc0641181d54ee86630b5d182d24e7c30c2615803f16de90ec7c982a00b21f250ccebc2e94ef53a13e77e6", - "0x90f0e97a132092e51a4521c2ecaaa47e4e4f319e67a3cdbd00ed85c2f10dfb69c339bc9498e2abbffcd54b1fdc509a20", - "0xa9995234520cab9d1bdec1897b0b67571b718d5021c0fcf913140206b50ab515273b5f8a77e88fe96f718c80dd9be048", - "0xaebc6495d54d0e45a3c74388891dbcfab767f574fed0581566415af872dc5b3bd5d808c44f6e1fbdde7aa9ffd260b035", - "0xae757f8f4b1000a623a7d8e337a50c3681544520683207e09d05e08a6f39384b7aaadf72018e88b401e4a7bb636f6483", - "0xa626a28d5ce144cc0c6a30b90ec2c1412cbbc464ee96ac49035e5b3a37bb3e4ed74e8934c489b4563f2f7db1caf8b2ad", - "0x8c994e81dfd7a5c2f9d4425636611d5dd72d0b091a5862f8bec609d0cdd3c423eb95b0c999c48faa5dbb31e510c22b61", - "0xa1c0e59e076b908de760d9becff24883c6eb9f968eac356e719c75cce481f2f7bcb1a41ed983a00c1a3b9369a7ff18f9", - "0x8d7e199044fe2e552bc514668fe8171c3416515f7a5019f239c0384f0ade349e88df26cd30f6b67d02b83bf005d85de8", - "0x80190f2255199be690fb502d02ed159aa568c390a684f7840512efc3d2a62f28a49d5d1928ad99a5f975ad81a245acd5", - "0x889d84cefef33f5714e14d558f41d406072ba66b427bf27918b669c5be46261c3de0139610a2c2eadef8e6508e937bcb", - "0xa480a686d5085b854ccf9e261e7f1f2d40d978fc30b62b1a8fa9561127745529405820df21a680ee2258b8cefa5f0201", - "0xae6243400d416a8c13b80b6637726959ef07b8d9b6aff2bd3bb23aaaf97337c7a6b466c5db617bf2798e01d4ccc68e4d", - "0x85e0ff143657e465f3d934ee781de5cbd2bfd24f2fbbe6d65c698cdd93204a845f6ef1fa8941c2578463a06a8a418481", - "0x8f4f8b45f1a9f6c2a711776db70f20149dd6d0e28d125906ba9893c5e74e31c195b0906f04c922c8b556ced7cd3d611d", - "0x877b852c33483b25c4cd8da74b6b589d8aa96e217c3c4d813466c77ef83af95a94a47364aa8421f0396ce631ad87d543", - "0x852cb06bc4222ce125287a7a55a79ad0bf55596f26830dd6d79da3c60f80e3ba7b9a9b42b126dcb99d2cb9ce142783ef", - "0x810cd64c1dfce85d509eeb57a5c84efafe1d671454ef601a040de8d46fb33bc419577f6a6c404e28ffdfe315ffec558a", - "0xb60ff8bc804d101a32079b8ed52285fdbb47fd60c3c15cef17cfe7f6b0567de6b50128b9dbc49a1d9811b62b22c99143", - "0xa9df7068b26a6a58f7a499e67b17d34f2a2e8e5029c6e51e2b4c0d19324fb5cd9734c4c4d5034e1bfc274cd0c74a82d0", - "0xad93c50802ded1e21217a58b874c074ea52322492d589820691572084d8edaede8c2ce8021c6df8c0060f395f3c25ee8", - "0xa17b98e090f7ef5800477132b436c1fccc1802f34956711bfc176e36890c7df95a108e03f34659142434cbd8aee9dccd", - "0xacb14aea5575c293dc0a2b58c5350390801d57e9bcda876d87c56565043ddde1a544a88b48ad0d8ec3d41f690aef801e", - "0x88b8e26cbc83faa053fa247e26c95d1bbb77955b336e1b0e41d080633248238de8adc9b98688c98fdfc67e7286bc5be4", - "0x899f69823cf1b2204c8da91bb4f943c04d943137b08b1c46e160919e3378bd22a666a079a66e63d81c05336c742efdd2", - "0x8d7ffbc0b47a32408c9e88676ac4f87683cf37c37d214163ca630aec2d3cc014d88caff35022ff3b6d036eb8343d52a3", - "0xb7760f27db0704a6742855998a0c31333bb34d60ddebc95588e25b72445ae2030427aab088ec023f94563118980f3b74", - "0xad06ecc0f3745861c266bf93f00b30d41ed89d41e99ab63fedd795c970d3ad40560e57ab7333883a72e5575a059df39c", - "0x8687d28b1cbc8aa34a0e5dbdb540a517da9bda36160daaa7801fce99754f5d16eda3bc8e1df6b0722cfb49e177e9bcb6", - "0xa38332c3ebbd7f734c8e6ab23ae9756f47afbf7d1786fe45daebc8d7d005d6d8fd22f5dbd0fa8741e1bfb2014d3f9df7", - "0xb86f84426dee88188be9c5cc10a41599e53b7733ba6f2402392b0ea985effc7525756ca1b7b92041ae323337618b238f", - "0x958731a6f1881f652d340832728bc7fadd1acebd8daebd772b5acea634e9f7b7254b76d38a7065ea1b2cdea83b18a54f", - "0xadb90bff1f0d7d45b8ba28b536c0e0f7f4dc4b9a0354692ecf29539631d7a57d308db3e438e0f907810234c490b42153", - "0xa5188c775ad76617d3bb6e7f1f3b2449f48b7bb7a84035c316284396529564a227e3b9762a89c7114fa47b3ca7ba418a", - "0xa3826ef63c98793a5c8c5d5159e2e00cc85fb5e5124f06421b165de68c9495e93c2f23cd446adf6e6528967aa3ed3909", - "0x80eab97de89f3824ace5565b540b229adcc6ef9d2940e90de185af309234cd8aa4ae9c7ce1b409b3898c8fd10c8c2896", - "0x8824f5acd4c2330c459fdb9ece9313263a8b20419f50f8d49958dc21754c21a77bcf7fbf3e0041f78d8fb667a3342188", - "0x95091cf06911a997a09b643326c2fadbbe302555ab2521db806a762a5f4492636507ca71d7a093840236ac3c096614f7", - "0xa392c81a546196d7e78b61f3ceaadfb2771d09fe43f862c0af65f5e55ce490a0293b9ab754cb5ab03ff642a9a8213a23", - "0xafd76cce1dfa2c9e4af4f840376674f090af37d8c6541824963373f97b9dd1f405c50b2ff56165e1d4dde760e590738a", - "0x8fc4f513d3b40c10872603e1c29a4b2cf4c99320962644ce89f69ffb57f844344e1d472b2d43559119bdfb5a2c21749a", - "0x9951ca8e13b9a2b4a789e851c04c4f030470772da62f101074ef304612e9653b43b37d2c081b5d0a09196b3a167f5871", - "0xb4f16fc2a113403ab5fc1b6a9afddec77be7406413b70ee126f0e84796168a572940550d61e443e5635591d4b6c46ca9", - "0x8d71452cf39e7345c7298d514b9638a5cbe78af7652f0286d42632c5c6d7953ed284551fb40c77569a7721413cdbf79c", - "0x953625b58d52a308cb00ad87c44a3fd936786ada44000d45bb609ea9db6b156a0d0f9475e13ee5e053eaded19a09990a", - "0xa0983a3baa278ad5f5de734eb1b65a04f668408994e396fb0b054991ad2e56e27ac522b04fe37c9583b754e344f795b3", - "0x8eaa454257f77a6754b2c1c5ff0036fa5b03e214576fabc657902c737fcbf298b1795b43c5006e18894f951f5f7cd203", - "0x90183fdeae2ce2a295a567fa61b997b1f975d1be7b03d0101728cd707bb2a7111c222588ab22e573518fa1ef03719f54", - "0x8abec7f31f6b897a1d497368a42733a6bd14ffbb8b21d3e49fc4cd3c802da70e8886827c1aea0b18d1b44635f81ec461", - "0xa6d1e6fd24b0878ff264b725662e489451c590b2aadaf357d64210a3701fe763f529826fa6e0555267c1f5ecc2c52c05", - "0x8fe6d2a4ea0d91702cb2a8a1d802f5598f26d892f1a929ff056d2b928821e4b172c1c1c0505aa245813fe67074cf9834", - "0x82a026a408003583036f16268113ca6067ce13e89c6e9af0a760f4b2481851c62fadeeef0d361f51dcd9fa5674ec5750", - "0xa489a574b862d4056091ef630e089c163c16c2f104d95eb79a27ae1e898b26d6c1adc23edc1490f73bb545d3a6e3b348", - "0x939d85148547fc7b9894497841bd4430bc670bb670f0efeac424b529a9aebf2c02ac18a9d1402a12e4e590d623de09f0", - "0xa3ab52cf911a2ba7fb0cd242d7778ec0d4fa382960c9bd5b476bb1cd44ff1430a3871bbbcea0a0db2630c39ee639fd1e", - "0xb7629509d8c3a3b88b31f1af137a25c38f536284f11a5bbbe0d05b86a86bc92ebbf70f17c256dc8b0d48374e1985e6f3", - "0x8a8647ff33e0747dd6c6ceddcf7938a542656174a08a31b08337ea49b08d814e75f8363fb51676a2cd2746569e3bc14e", - "0xa7a7f8d94d32b7cee00b3ff272d644b8dca86b8da38c726f632c2bcdfa0afb13fd0a9a5685ddaeb6073df4d9cfa3d878", - "0xb7136eea8d05bfee2265b0e9addb4bdf060270894de30d593627891584b9446b363973de334b6105e0495cf8cb98e8f7", - "0xa9fcd33ea59315ad7611a3e87e8d1fd6730c8cbeeaebd254e4d59ed7d92c97670303a2d22e881ab16c58779331837529", - "0x965fd41741a0d898c2f2048945b2aefc49c735228c25deaf17fed82c4d52cf3f8e93b3fb8825ade632dc4940311b1542", - "0xb9f400a2c7ca7da8b36470ee5d26c672b529b98e6582012cbfc2a3c24b72e73f5633de4265c417c0d47c474155a603c6", - "0x85f333b0b1630a688a385f48bf0175cd13ecdd92fa5499494f4ad5aea0ef1b9d180fad8f936018538d842630ff72884c", - "0x8da95a735a1a98ed8e563099bd87d13a237dd7ec6880cfac56c6416b001e983a56f3d72dda7f68684bb33e4f64cadd30", - "0xa29b66a2095e1acce751f6aec8dfeae1e5b24187dfedb5d1635ca8deae19b580ef09329a18b3385ebb117cd71671f4dd", - "0xb001deeeaf5eaf99ac558c60677b667b9f3d57cf43a2c4d57fd74b125a6da72ea6c9dc81b110655e0df01ca7b8a7a7ed", - "0x912e11dfff77c778969836d5029747b494dd81d9f965f8be2c9db9e8b08f53858eface81862c3ee6a9aa10993d0d23f3", - "0xac166a00e9793cf86753aa002ca274cb6f62328869fe920f5632a69a5d30d8d3ce3f0c5487cb354165763ca41d83495a", - "0xb74df519ae1a8faeff2ccd29892886b327c7434360ab5c5355752667069a77d466a48cb57b1950d10b6c47c88b2a8538", - "0x8751679aeffa39da55f2c2a668f7b26fb8258f70c5454b13e2483e3ad452f3ac7cc4fa075783e72b4a121cd69936c176", - "0xae0cc16848b8bf8fffbb44047d6f1d32b52b19d3551d443a39fb25976a89d1a5d2909a4fc42ee81a98ad09d896bd90a9", - "0xa0c8acd6a2f0d4ab0e0a680fa4a67b076bbbf42b9ec512eb04be05fb2625f6d2ed7b4349eebe61eb9f7bd4f85e9de7fa", - "0x85c629ce0deeb75c18a3b1b4e14577b5666cf25453a89d27f1029a2984133a2b8e7766597e2ff9ee26a65649b816b650", - "0x938dbb477840d3ed27f903d09fd9959f6fec443fbc93324bc28300dd29e602bd3861fd29508da0dfdbb0fff7f09c5a6c", - "0xa7c76cd4a42ab7904d036fe6637471d9836ad15d0d26a07b1803b7fb8988b8c9edf522e0d337a1852131d0f658565ae7", - "0x838a30260cf341ae0cd7a9df84cbc36354c6bc7b8f50c95d154453c9e8ec5435d5f9b23de2a5d91b55adde3dbdb755b9", - "0x8f870b1f798c0516b679273c583c266c2020b8dea7e68be4b0628b85059d49e5a680709c3d6caabe767a0f03975c4626", - "0x89bad0b6499d671b362ae898fee34ad285aa8c77d33ca1d66e8f85b5d637bbd7ae2145caae7d9f47e94c25e9d16b8c4f", - "0xaf963d3dd3d983864c54b0ed1429c52b466383f07a1504215bbf998c071a099a3a1deb08d94b54630ac76d1d40cfc3da", - "0xb5686de207c3d60d4dcfe6a109c0b2f343ed1eb785941301b827b8c07a8f1311e481a56a4baab88edb3ddc4dace6a66a", - "0x95e5978739a3e875e76d927f7c68bdf7ab20966db9fa8859f46a837760dfe529afa9a371a184dfb89d2962c95d5fcf3b", - "0x96d2855e20c37ed7bd7f736e11cfba5f61bb78a68303a7ced418c4c29a889a4798c5680be721a46d548d63525637e6b0", - "0xb134bceb776cd5866e911f8e96016704c9a3caeadcabd7c0f37204497d789bc949e41b93e4c2d597e4c924853f1b21e3", - "0xa1949ff397013acde0303e5d64432bf6dd7f01caa03c5fc38e7c8ae705b9d5c2646b4b02d013004e5eb58e344703260c", - "0x8036a5f79d8aeb6df4810974cf8dbd0ac778906d2f82b969ac9dcfbe7ece832a7e8aad08a4dc520f7abeb24b1610ae84", - "0x982b6b0af8602a992c389232b525d4239edc3ae6ceea77d7729d1fffc829664dd647ff91c4cb9c7f7c25cea507f03167", - "0xb34c7d24fa56ab6acdb8af5b4fa694a1985a1741cc53a2b0c5833611e8ed6fb3b663a4d9a126bb4a1a469f2072199d66", - "0x8166366fec4ee2b3eda097dc200cdfa0533a742dfbe7082dfa14c1c1ecafc9d9fa71f518476634f29d06430869bd5e02", - "0x86c0251ac00b8200618c8b7ce696d1e88c587f91e38580b2d6ae48a3ef904e0ba1b20b7f432719ca40e7995f2281a696", - "0xafd89f3bc7843a1e45ac961e49c1971114c5238d9e21647804b1852b8f476a89c12d1edfb97fff71445e879d6bfd3b70", - "0x911d8bec4d4c3e73a2c35469b2167569f59705404425bd95440408fb788e122f96e9b1bd695f35c6b090f10135b20cd3", - "0xb3f6350ff7afaa0660f9dddd9559db7f164e89351a743fc695d987c88f89fc29136e3c5eb81963edabf2b6f2057120be", - "0xa371229680d1468777862e9c0e864156f9cd7c12ce7313a8de67b7bd34e3d1b6fa45ce891a81f8316f4afcbdecf3b6ca", - "0xa6a9a875ef9efe8ba72523e645b5773aa62c4fb41efd23da3fa38105472308b8d293be766342ee0a2f00758825bd3b6a", - "0xa840d495a184f4499b944ee08f07193a1e1bb8ab21f8ce7aa51d03bd8643f2bc2616c17b68d3fe7c0fb364136926a166", - "0xb55200ae7d6ebb0b04b748051c5907293184b126cf8a1c2f357e024f1a63220b573e2875df83d9b5e0c6e2ace9300c40", - "0xb1e0870f2e3719f42a48256ee58cc27f613308680f2d3645c0f6db0187042dddcfed0cb545423a1a0b851b3a16146d70", - "0xb43a22ff3f838ad43786dc120b7f89a399ed432c7d3aa4e2062ad4152021b6fa01d41b7698da596d6452570c49a62062", - "0x88b1dc50873564560affaa277b1c9d955aebdcdd4117dab1973306893b0e3f090899210102e7e1eef6f7cdf2f4e0e5db", - "0x9223c6246aa320b1b36eb1e28b5f9ccc2977e847850964f9762c7559da9546e508503050e5566ccb67262d570162b7a3", - "0xaeeed21b932752709f43dc0c2c7d27d20263b96a54175dd675677a40a093f02bba80e2e65afe3eb22732a7617bf4ff9d", - "0xb47cae580ae84f4e4303db8f684f559382f075ef6e95698b9a629e92b67bf004f64e7cf47e401768fa170c4259efbda1", - "0x849821e1ead81fe2dc49cd59f2bba305578c4ea0e8f4b8ae8fc275a1c4a6192f8819d5b6d7da786c94dfc16aacf3e236", - "0x8c60d9a8baefc72a3d3f9dd2e24cca40fb5ce36b19d075122391d9b371c904a0a15d2196c0f2ac9da3acf188d15b0fe8", - "0x946edfe168bbe5ddb0fa6c2890bb227d8418bfbebe2bafab84909825484f799407b610d8aab6a900c5ff9eb796cdc4bf", - "0xae7bf8ae71de5d7ea644d9541e49da1ec31eca6ff4c3fbec5480d30e07ef2c2046cc0a486af7b3615a6a908846341e99", - "0xb4d31a6f578463c9a5ccde0ea526c95b1981eb79468665395c0e550829abfdfa86689699d57830856e324092a423f231", - "0x93415ad3a732417cca9771b056ed42db7ce50879aca7c6f71883ad297eaf5a37fd4641d44a0b7e28b90c168834141340", - "0x98960617a413a3ba86d8257a7386355a69258943aa71834166bd624ea93b0af06178e86538e237f88fd039eacf7cb04a", - "0x881335200a487545e38d5b1ffda3080caf5729e1b980603bcdf9ea652cea7848335b83aeeaa321d3476ae4a8d9073582", - "0xb39e84c14666d51895b7a8341fd8319f9e0a58b2a50fc3d7925cce3037f7c75367b5fb5bf25ff4720c9992cab7b8b9f4", - "0x8ea4bab42ee3f0772d6bd24dff3643d8b61147b46ada374414d8d35c0c340e458e449d31023d96e66decf9c58e30cc34", - "0xa5198f6759a045b6a4ba28e4bc3bb638fad44c5a139064327580e285adf38ea82a7570acebf925e81a39d9025f3a6f2e", - "0x80267097e2d27c1b19ecf95d184dcff822d34e03326b9fc139a4f8b75b3f80777bb97a9dd284d9b755f14dd401d63c0e", - "0x946f346220bd3b6f733e94b61a1ad0b44e45c356fa6036dde5882d93b5613c98e23b20e91eddc6b3c5acea38085705af", - "0xa5f559e110cad99bbcae2d9362434aee7db0f3b6d72311291649dbda3f84c10e9760b66b988db3d30067bf18ae2e5238", - "0x8433b38e5c7b293ef532f8c70cef1ed9be7f31f60d5b532e65df7d2885203be78b7ad78ab3011bc54cd9f64c789bf837", - "0xa5a4c0a9b0e0b6bb912cf6ecd30738b0acc0146d77442449b486c3f32d7e60244f643a5cf9cc6da2de5408d0c5f17691", - "0xa81feb329fb51b72464bddcfcf4e02149d995b548d88c64ba143144ce16b652c9913c8ee948ee837596ec97cc43d8cc9", - "0x88e5a7e93a738d61330425bc21ade88d33d7160d124bf174eb3e12a00283654431036977c4f1a47a1bbbf2ef8449ac89", - "0xac75ad7c099383069e662bfd3624b92b64b5838246902e167fc31b9411efda89b2c6bbd1d61b9eb7d304faacf438d70b", - "0x8583bcd1c7cb9bb4bb6bcff803b0a991912b8403a63c0d997761ff77295ccc357d0292318601a8c61329ab28fed7bb83", - "0xa1f9aa0523f1dff00023a44a6c3a9e4e123be0f6722a1c6682ac3c6047efe9e62f4773daf4767e854e1fcbf8ee7339e2", - "0x85f65ebcf5c7e574174b7c4c4166a9a5368e7986b8c0ef846c2e13b75dea7311a87483503149ebfb3cb839b3ef35c82d", - "0xabc55eeb72699031a367b9675a2b91a8434e1f01467660903ced43a0b2a11a85ebdf48f95c13ff67e4e2958065a50ff3", - "0xa4ff77c9b86939a15647499b9412417b984bfb051e5bf27b35392a258a5dac297bbdbcf753a4be6729ffb16be924a2ff", - "0xaf0d41c15b5172efa801cc85ed101b76844dcd06712d0d21160893235a2dbedd15d187a9b31cf0d0ca6c14de6ab2b707", - "0x92661339199f18e5dd9a210783c1d173a26dfa315bd99a33d6f04bf506c871a2b47745c1909faa209d5e6c5c645124a4", - "0xb35813dafb52df709dfa47982bfb44e1bf704f9f46085b2a0e92511dff90e5597110f614f8915830821fc5ed69ae0083", - "0x934a05aa713fa276a4d47f1a28ef06591e5a9a69293c1651c223174df0af4927fc9cd43d374d89c1b4f7c8dc91abe44b", - "0x8f83a0ef05202c0b7170ac96f880135e2256fdf8964dae5aed5dd0f6452a6d8e123321e8c182b3aa6f1f8ab767caa735", - "0xb92db10c21c321cf1349fd34129d7180e5088daf2bbe570de6427299aab68992c011c2e2939a44247396f5427c1d914a", - "0x95ce1892d1ce25ef2bc88a23880055a4d829a3b31f3806635fd49bec32cca4e965b129b6dd3e90f7e3a2eb293ffc548d", - "0x970cf816ee7501ade36b0b59f87c7e352957f67f1f75bbacd8ed52893f9fc40572c76f49c23db44866af7e34a63cd3f9", - "0xa2fcd08581d3569fff699fd7ed1ede5f98f2b95956ecdf975a29af053d9f4f42600b3616ad6161e958c3ce60139c20a4", - "0xb032688b6cc8a7e63dcb82694f71f087b1ee74c4d5fa27323b1ead3ba21722d7fc49eda765725b5553db5260005049c3", - "0xb0b79e4329f1ad25ef6a603390baf889757cab5af10bfa6953a61f89aaace0442b9ef08e57ba778f1e97bf22f16f0ace", - "0xa2e6ac06f8973266cd0df447f82cec16614df65174c756e07f513e2c19aa82c10d8670047860960cfba3c5e4c42768c8", - "0x811e66df0f3721a1ae0293549a0e3cd789f93fb6be2cab8e16015a6d52482af9057b1b75e9456322a5a9e87235e024cd", - "0x8744a80b3d9e37da4c50c536007981a4958d7e531cb93916dbf985cdc22f4ff482a5cc4fe50915c049d2de66530f1881", - "0xb20b6e8c7be654c23c8ca440be2c37cf9cc9f4e81feedfd0cd7c56f37eda8f295fe5d415e9bac93d5f0a237edd8bc465", - "0xb33fd84377f31f7819150d464b5eb3ef66e06cb8712665cf0587d61e1b1c121d11cc647f3753bbc18604941c77edbc1f", - "0x83acb8a3ec5f477b6d44cd49f9e091bc2bf7c9dfee876cde12075a7db9262314cb66ad2e7557114e0c19373e31c6eff1", - "0xacfe4172327832ee207eb07da9cd37da3b009c776f7a8290529f0249f58da213254baddc7c3074fbaa1d226ba1e52b7c", - "0x81911b4dea863424b9d77a981987732382702e0294d8c8e1ec48e89678ecb0e64836b45205a120885fa8f8a3a4b9d4b0", - "0xb11f61b1302579a11077bb2f1f0db371ab943573b261be288dc76172eee8a5102b992a5b526092d160ffd20aac2d4856", - "0xab491f7f1e002a44944c02537f365e525ebb6d5614bba8e5e8e8bd12064c702a1759571ddbeee592a0ba8b73cfce8810", - "0x89211da3d92aed6b111de001b8b5a9231a1c2d09fb1cd2618ec457b635a6c8590fe119acca42fce76dce791c35b889c7", - "0xa5f076c8f7164bcab8af59021ef97a0afa93d0877e52241c3ff5a9a9f81227a55c119ed6a84d34b196e94ec851ca5ca0", - "0x80d91417d0d6c1adb5a3708165da1d54a83caaff482a4f65abf3fb335cbbc738c74ed19a8c451ca98befdf9b2d8b5f90", - "0xaecba33a67f66401614eec5fa945e763da284edb9dc713bad4ac03972630781a09a3e2a291aac0605a9560c5f3444de5", - "0x8a0aa1320bf5217a049b02ad02a4f892bfd6a3f5b48f472041d12f3aaab8dd197307f144f9de5f9e762c6b4971a121b4", - "0xa4120a569e446fe4129f998e51f09c1cc7b29dc2b353d6f6f05daad1a4ef99acfcbaa4950a58aacf7ee1b3fde0af33d0", - "0xaff71370d58b145758a5f24cf3c0c6667d22a1f950b8137c369fa845a5265cd645b422f24fa95e1cd7db1d68686120b6", - "0xa839f075a8a702809a51fbc94595eab4f269a2e7a027aa1f4fc472e77f586138bf5aa4e5570a560e139eb6cda4cca161", - "0x9484f1caa3e35cda0e3d36e43aff3dd8cf45a5a51fc34aafa3a63ed3543047ba9d6af2a9bc7c201c028499e6b4c41b28", - "0x84ddb374c5c9170903bb3e1054fad071b0a147a9ca2ebe2fdb491ebb2431d53b398872a39cc385f973e38579d8e60158", - "0xacaad8babaeaeb52c5b5a16ae689fa5ae15846f2d1f3596a52371bd8681819603822ee8d32ab8cda1bd5290d601e483f", - "0x946b69ca5361b60c3dc31db13669b05e5c0452f3c80e7e185f9667a36f351e9ed83bcb5c6dd2439ecd4490e3a87d260a", - "0x99f457221ac40df86f9b4bef0bf8812720b2f7218273a0aab08c4d4d4fb18a0fb0ef6ba9bf7fa53c116cc6f16742e44f", - "0x8bc0e812d8b718dbe48ead74a6bc7bac68897d01d097422be04110a25589bacd50d336d2c8b70d0dfde6c1b8bc372dc3", - "0x895d118dae2fb35a4b0de22be0d000ec0f0f317b9494db7c12f10d7db81b6f3eaf6d6f3fdfe952f86ec4143d7469368d", - "0x893bf3d7e579e800526bc317438a69590d33759931830daf965cec721baa793ea335e9624a86b84b8fed5effc3e2bbac", - "0xa112d30dda88c749ca15d6dc65bcbc7fe838b2d25329d44410a9a96db195c7ce6a6921196a61ba7c9d40efdb101a164d", - "0xb88b5340af052fc3b8e1a8cf7532206801e79d878f1fb02b32ac4f8e91b64e0ec9252d808b87c4579de15886a20aaef1", - "0x865f76475bb5da18c6a078c720c7b718e55d310876c98017c30ac31882ae347258b508ec34001918324250241d2df5b7", - "0xb6d8a15913eb1714061d5cacbd0bb05edd83ecdb848a89b864e7411598e9f7814d0c039ebe4735437c8370d2ff183751", - "0xa95fedce8351ae9c24d7fa06ebc5cd4e3aef87afaf04a7150e561a6a7f2347bdcec1e56b82d6e5f597fe7124f6cc503b", - "0x8526004ca0c802b073d50b0902ea69975949e7567b2e59ca2cf420bc53d91951d26096f2abb07a2955a51506e86488dd", - "0x99ccecaab68b6e5adadb9c848cb577de7e7ff4afc48d3b6b73bc0872730245b8a1c68cebf467074af6756d6226f4f4a7", - "0xb5497d5c0cd79b7e6022e295642e1f2161254379eb78ef45e47f02c84ef5a3f6b6297718e4fac8093bf017287e456917", - "0xb6943f30012b2093c351413c2b1b648afc14a5c4c0c338179d497e908451d2779919fe806181452ed386c1e8f8e8c25c", - "0xafdb56ce89bcd3247876c918cad68aad8da65d03c7c73ccbee0c4c39f3ad615aab87ffa0db5b3b63b4cc915d0b66deb7", - "0xa44659d7be2f11d4d4949571d7bf84a6f27f874d3281edc34ef1098d321a4dcad9a42632b39633f8f9d20a39f54a2464", - "0xa3e489b4db5832280dd58c62120262471b6fb4355c2ad307bd17c5c246b3f1e1b00f925930f5f5f6987de234fcbb7d16", - "0x87a4e3a190340ed4949597703083d338e9c17263ba8a39b67100589f0dddbc420d9557f9522c17c71ae04b76876f8db0", - "0xa35a3978e928eaac8c182a0a613c611ae7b4827c5e999f938eed06921c0294befdc21d02e68d035a2fc8d03c82641126", - "0xa6898d90265dcf0fb215629f04b07c7918e022667583efe0bfe02f258b446954876c6ca9e369ffe1bb079e2314ebda32", - "0x922fc52e648b6b2b6768c079c67ab425da72907a46add801715f8a2537280869d7071d527b833aa63ef562ce059a392b", - "0x8acbb7c4297196d8d1c131040c34cc7064656a148c2110b19c672abb094b1d084fafe967f7122ba9dd1523a4eaec3b42", - "0x82dbf2cdd581fe3b81b156792228eae2485710e6c21dd5fd14614dc341bb0afbebbc0f32340eda9f094b630afcfc17e8", - "0x907a095dca885da219e4558e9251ec765cf616e995c61546bc010963bf26f2d8adbd9b2ef61f2036e1740a627c20fbed", - "0xa7a83f849691d04640137989a2d0c90a7ed42a42b0ad328435d7e1fba557a27a58eec9170ab3d0099ec97da0c950765a", - "0xb7d435a801c2a5652cb479027f2c172eafa3df8ca0d896bbb9d49a42c42660fb382a8439bfed09ddf7e0214cb6066761", - "0x8bc6b5e79af5512589f90de8e69bc858277055cf7243f592cc4edd193f03f71d16c9300097ddafb79752c63f135c884c", - "0x913264fca800467bee58a429e1f245ef303f5dbeea90f0ce6bb3c7ae6d1bd0f99ea75d3d309634684d2178642c81b5d8", - "0x83ba558f9c23b785a123027c52924a1d7334c853a6165d4f5afd093b0b41951a36860ba0a20fa68f73d7db9df0e3ef38", - "0x875b2df7cb54ecdf7ba31181b9dc7dbe02761ab8ffb61757d42a735c8e20d44bad5b904e76dcec6bb44883fdb9f4ad84", - "0xaf3dc5d2dd29565de8f4c700d5f1ab71dadb4351f06e9ee2eb5ee7a9b5da827d0c6726c6dc780748a26aa3b4d10e6c2d", - "0xa113ff09296b25f550f6d0d3f37dd4517b14cf6d5517293bd3068aa3aea765a8640fcd4bf0ba96db5c00167267fbd574", - "0xa138c5cca485b9180ef091c9e327982bea203c165cb83564f416c36e813bea1ef1f6345f57c8a591df360541b7b758f5", - "0x85793441e917ed520d41dda6e762269fb9f9702e5ef83cee3e90652d324536bf4233425cd05b54a383609076ab84ea13", - "0xb422ac9de53d329e6321a8544c264d63cffc37965d627d7e180a999c3332644e21fedf10cd2f43cf6ba4fc542db91155", - "0xa85d31d4bfa583a493681e57bfccca677ec5b85870a53de37f7be7833b573f8c8dcf029cea4ae548d83048030d77d56d", - "0xab8a0702a371db496715a4ee8fcb6d430641b0f666d7fe3ef80c09df0bf570293cec1aa1675381c6bbd9ecc1f7cdccf9", - "0xb308ef2b87438d35957191294782e9f5014a3394fadad3e2ccaf6ebf20fd889a36dbb8ddb3634baa8e2e131618aa4e70", - "0x919e972e5b67cd65f377e937d67c27b4dd6fd42cfe394a34a70e8c253a1922f62ff36b9dcc7fbbc29b0960ad6a7fde88", - "0xa0e4d4be28301af38a910971c8391ef3ec822ce35757226a7fd96955cd79afa14accba484ef4e7073e46b4b240a5863f", - "0x9422f6d424c1736b4b9bb9762aa62944085e8662c4460319dac4877b1e705aa5cd8b6b3a91268363ec3857c185685f4b", - "0xb7cf9f2053119d284a37df4e4489b632594df64e5dc846652ee26b4715e352e6333118b125021481138e4ec3e9f9987b", - "0xaea983e81c823472df8652654be8a60a8bf40147d599f87e323397f06bf88c98e9c6db0f28414f6ea4091f3eb0f6a96d", - "0xaa20bf03cd8b6ffda09fe0ef693fc0aaa3bb372603e786700e52063a4f7ee742771c41cf5e67e6248f99b7fc73f68dbf", - "0x8748a4978198071d7d5ddc08f8c8f0675d895dc19df0889e70bd86d44c469c719b93f6526c7e7e916c7bfeb9a1379aaf", - "0xb8fcd863d55dab2f7b1c93844306e00056ba17338ddfa3f02689a0b58b30239beb687b64c79b8420ecea8d0d082d9ffa", - "0xabb1a35952dc8a74dd1cdbc8ae7294c6bfd1910edab6f05c879e9ed06c636a949fe0017ec67f8f6f73effcb5817cccae", - "0x8bef43422b1c59e354b7f46c08a8eb78e26c4d01c236a4fe781cefb7465293a4444f2bdc68c6a221cd585a2494d9a1d7", - "0x93527258940feff61befa18fcd6626fcff019d34a3ac8c6886599cbef75b15c15d689e8c1bd2177cc93c4c1792dee8d7", - "0xb7f114eea99c8278841180ec8886ad2bab1826554a1657b9eeb17aa815f31b59c3931913ddec40aa9923bc92f8975635", - "0x91a96446158b194a0a6ada2e37c8a45f3017c34034f757245f6f3b98c65d39d084e74d2a9dc271e5918faa53990ec63f", - "0xaea4ada0a853753db03f9790e20bab80d106f9b09e950f09aeaba5d869f0173bed673b866a96d6b0dd8123a539caac9a", - "0xb8e3e98ff0d3e512441e008a4a6783233045a4639e0c215c81984846b43ff98de99d7925cf717b1ca644f6229b6d16a2", - "0x8987ef81a75213894e11e0310e8ba60fe06e2b264cc61655e5b51bf41cc8c3d6c10696642ea3517770f93be360207621", - "0x8d4eff7335252f74af4a619c78625fd245df640f2086338dbb6c26b059f83fe70f3e81f5b6c12d62c0f784e572d56865", - "0xa56f6389b0bac338f20c615d7d11e16045a76cbea23ced0a9d9067f538421c378200bfd4523b7c96094ab67f47f98d42", - "0x83f5ab0727fd6ce8b3370ce3fac1f3a9c1930ea7ebbd16be61cc26f34aa1291ba4b5f16729d7d4f5924eaa4a1e31a04e", - "0x8cc62366874bf8751067a526ea32927584cef41174e2ec5a53079ee557067bc282f372b831cb2547c5e21a2f178c91b4", - "0xb609e141006dc8d8649457efc03f8710d49abb34bc26a33ed4e173e51b85d7acdf18d74aed161b074f679d88f5aa2bf3", - "0x873c7aa784c17b678443320950e494250baff8766db42619b9fc7ec4c3afa4eee290cd1f822b925d5b9e55c9cdd1af2f", - "0x859ba787f052d3665481c3dd58159ec8c238d918fb6d2787ebe275ef9acd377cb7aaa03a69820c78247bf51afee3d5bf", - "0x8eb1e6d2b0f51a3275b4a8be96957cb2d518b32c815dc0dfd5f75340c7dee73e5edc45db7c7d375c4ffaf8c59767d0c1", - "0x85f3876ff5edbb826a9592e68db3dcc975725bfdda4fcac197758a8b27e4f493e6c531b1342ba0f5a75f965273720345", - "0x8a1272f2678d4ba57e76c8758818965e6849971e8296b60ff85a522feeaaa3d23d3696c040d8bdaf1b380db392e988aa", - "0x85002b31ce31be7cc8757141a59a7cf9228b83144993d325b2241f5bfac09a02aca0c336307257f1a978c0bbf79fa4fe", - "0xb96bd26a6bbbc705c640285fd561943ef659fca73f25e8bf28cfcd21195752b40359d0edca0adc252d6e1784da267197", - "0x936cfe367b83a798ab495b220f19cfe2e5bde1b879c8a130f84516ac07e3e3addcc791dc0e83a69c3afc225bed008542", - "0xb1302f36190e204efd9b1d720bfaec162fcbba1b30400669dbcdd6e302c8c28f8b58b8bbde10f4512467dd78ed70d5e0", - "0x8291b49f56259c8d6b4fd71525725dd1f35b87858606fc3fe7e048ac48b8a23ba3f0b1907b7c0d0c5ef6fa76cddc23f0", - "0x97aca69d8e88ed8d468d538f863e624f6aed86424c6b7a861e3f45c8bf47c03e7b15d35e01f7add0a4157af171d9360c", - "0xb590d896e6b6f2e4dcffebfa67fc087fa518a9c8cb0834a5668cabe44e5c2b6f248f309b9cd74779030e172dba5d9e29", - "0x97e7099bff654bcb37b051a3e8a5a7672d6ab7e93747a97b062fc7ae00c95deef51f5ced2966499217147058e00da4be", - "0x83435b739426f1b57f54ebad423939a68ad3d520db8ca5b7e28d1142ebfb4df93f418b180a6c226c0ca28fa0651163a0", - "0x946c9144d982837c4dbc0b59544bdbc9f57e7c9ef0c82a7ad8cfddea78dedc379dbc97af54ba3ac751d844842a2990a4", - "0x90ba1eff9c25adba8c3e6ef5b0d46c13de304632fec0646ee3a7bee69da2bc29e162dd3fb98a37ed1184ae5da359cf0a", - "0xb17b7a5c0a48eb9784efb5ff8499230b45efeb801cf68e13fe16d0d308511af5aa60e3b9a5610f96d7c2242ae57d455b", - "0x9991245e5617c4ea71575e5b2efe444f09cbbed13b130da08f8e9809d62512e8298a88d41f6aa3dbf3bcbc90654ceb18", - "0xa1190c4cbccf2898a7fe025afd03f8652973a11cef59775fb47d69a6b4dcb9a5a0c554070421a5e10a75e43b63d37b79", - "0x857c0a5f291eb35a76be11543a8c3d798187bd0717e2cdee50d390b66322d0d9529520fd3377136cdc93cfee99b6403f", - "0x944d11e5f9a3493c67786df94f129352d892fbdc43e98206b8dbf83cce240f65305e1768b38e5576048a31dca5c18f31", - "0x818f361c5dae709e067a82b81beffbd9674de8df2bc1bfc3a27ddf326260e124e46b1e36697fb8de539b7736db093e9e", - "0xb07f5b737735a0d628e7ac2d335080b769bdb3acea38ad121e247a6e4307916ba1d029da5d341f079ea61eeaf7d8554e", - "0xa69e338803f3ee0fbbddc7ee481a13f6b64d25d71bae0d76f4b5145b54923cf1616c77ba0fd9ca37a3ae47208f490423", - "0xacaee66b94e226622e28a144f93f6b1b442b9c79d7a8a1740c4d53044d0675a661e7453509b9e716e469fe11ce45ee31", - "0x9402ca799d2e1cce0317ed49453ee0b2669b05e68ff101b89306db215c3941b3786ad3402d00369cb1dee020b56d3142", - "0x849440c539fc0df3c8d06e23e271e6faa50234d5c057b8561e9376415f4396e548351cc677b0abeafe4f51b855a3dc83", - "0x865b99587eb3dbc17e412647673f22b2e89185d1df1ec8ea04515585ad2edfb731be458123118dcd7b41b475026477b9", - "0x9390618833b5adbaf24bd38cf9fc6f25104717f314259bb4da5c7a1f6963ecdc04d07bed391d8cd765c3d53567b2b6b1", - "0x95383e8b1d0a629cec238b5ae2bda236a027f4e3b5f99ceace05f1d5a781ec1e7a43058f44ef0a5aee6b0db5697a0d89", - "0x91739b8946d90db3a5244f7485295cc58143ba0449c9e539df1ba3c166ecf85ff914c9941192963c32d35033ae2f0980", - "0xb5d88848d856d882db5947b9182025f0abf2bc4335b650fa0a48a578e2c87f32cc86d42d3b665ee2eab46d072bf1eccd", - "0x91f4c754549f5a53b1902ef84274ce9acf0bfd2e824e62eb127d67e3214ce05fc2430c05ea51e94dc6e8978f5d076bab", - "0x91fff8c75f8ad86afe78ec301de05e4ca71421d731419a17c747a9a0bf81129422c9499e4749107b168d1695dc90292f", - "0x99fbd7bede9cc1e2974c2a21c70788960c2dbf45a89552da8d73bb1d398b8399590707f2f4ba4b43cb356e703eb01b5e", - "0x80a51cd83e3d748c07b9ac82de1a697b09031e3edc7bf585f06cd0ffa8ea319517fcc2b735614b656677b54b4910814e", - "0x886b27de1f93311d1a31b6d698aa28b54fbd800decd8e25243d89e352ee38cb252d5648b5134a3e1ed021bae46e9da48", - "0x976e70c94db905f83b4ef72188d840874bf005814c0c772f3832aa65b1f21927403125eea7a07b6d3305b1a781b36ab7", - "0xb4adb9d1c49eb31462583580e3ffa625bea4f8b2a7d4927e4ff925c1759d4b3c1e43283d635b54fb0eabfbe1f4c12992", - "0xb66b466bd48485ebeedd47e749d86cbaa3deffbbee2e69cfaa5e9f3bd28b143d7c1c0255a7a1393a2cc1490b2c485571", - "0x8bded5bc0794513947ddb00ff6b780c5cc63a74e2a0b0284153c346a31c82e1eff07c073939da39e6f87a06c14ff1a80", - "0xaceea8c6f799589f6b7070abf69fec724e6679514e60f1eaf9a52c37e9cebb72abcc833a81d8da1a4f5194c1a7eeff63", - "0x89a9f76d053379687fd221ebcaf02c15c2c241bb673ef5298e32640a115d9e0f2331c3e185572cd65946dd6c5bd42412", - "0xa57b6f1e3fdd92eadc6220760f22d0685a82cada1c7a1bda96d36e48e2852f74f3a83c757dd8857e0aee59e978da4919", - "0x9106cf0891bb39ce87433c5f06a5c97a071d08ad44a7cbcd6918c0729c66bb317fbbee8aa45591cee332ad1234c7257d", - "0x96c18cca4a0f0299e0027ff697798085f9f698a7237052c5f191b1dba914e5a015ae356b80c17f0fdd31d08c5a939ebb", - "0xa892103c93df126c024825c07d8769bdac5f1d26ea9509ee26530dc594384b2a5095cc34e0b41ab3db0392a29792c9e8", - "0xb7c2dbc95edb6fc25802ea051803b7bea682f87a99f8a9fdcc3091c81d914b9493dfb18a8894c964805298a6c22b07f2", - "0x8e40948927d560a6840d7fb99802989ce72b43693e9dc7ed9dcda4bca7daedf75271cf656bcc22b3f999a550faad8648", - "0xb354de1c6f0603df3ed9036c610281e55b51a48950ee3ce57a00b4692232de7ca57d19722700e15cbe67a91fcec2f786", - "0xadf987b90737b933436d8036c1d3f0c9104f26c540052e22e703964f72739ac1261e4289b8f27dec47281a0f3f51378a", - "0x8ed5248e9c836fffa7c924178db593e1aaeb54bcf2e93c1983c1f3899cad538deeb2b836430fddc9b2f283e0797ea11e", - "0x907e5410e3bd5d7f55340e2f497bd1ca10bfcb4abed2c66a3cdf94dc40bbd7c43ac98754e0b4b223ea4c61eebf2f27f5", - "0x8e81b441ea0397db28840fb4b3c3bfe6d8e31418816f7bda36f9c1cfe4556daee30c43639d90a2dc9b02a3d65e5f4ab2", - "0x897085c477f5030f9fed06e181b05953a8cd2001d959dd6139738d40f1d673b2c7120b5348f678547acfdc90ffc9fcc6", - "0xb0bf2784c4b3808a04be5a00a0593035ce162b3886e1500247b48365eac8ec3d27c7e5e6372e030c779c75fb79772d0d", - "0xaf3fe6c75f2a1241ac885d5091ff3882cf01695d957d882e940f0c31f7a5b5e269c1a2bae7336e9a7cda2b1d23c03bd1", - "0xa6d94e065f85736d77080a4f775885ccb0dd5efdbe747e4595280bca0ebe12450257c1beadcbec77566ef57508c5d4df", - "0xa5c50fe56b5532bf391da639a2f2b6cbb2634fc6637416fea7c29a522dea024d4adaaa29b6d472b4d2cc3e3b85c72e2a", - "0xafc35f5a03b245a6286318ef489db05d397bbd16c17b4e92eeb56509f875246c0176c01804139eb67dc4247c2a36ff9e", - "0x99ba14ab5a9612c078f9bbaa0e68fd1d52ecceb2ed19bd9abf8f98dd4ed1f9c4fa6e4d41bcef69be2ff020b291749ca8", - "0x8018cdd3d96f331b4c470a4c3904bed44cadecbeec2544ca10e4352cf4ae1a856cf55f6383d666bf997ad3e16816006e", - "0xa9964790c318bb07b8fe61d230dd2161dd3160e186004647a925cfec4c583b4e33530bf5d93d8a14338b090055085b05", - "0xab89d8401df722101c2785cb3ef833017f58376ee82cedd3e9405b2534f259bb76063434a247652c7615a6de5194de65", - "0xa72c3d320a0d40936dee8edfb36703be633aefbb8f89530df04eb6aebe0305ef4f4b6709436f8036d417272a7e47e22a", - "0xb3457661ad62634cc25e2918921a97b0bf5c59ccc7063bc8eb53194783f07659f42f8978c589228af5b12696588d8b2f", - "0x926fa35cd3ed4c8ad78af6284b87ae53b2e25a1ff50398034142a2bbed5b989ba3181ff116838931742c0fbcd8b8a56c", - "0xae57fe506626432f27ae4f8791421c2df9efd9aaabe4b840ccf65fc3d0dd2f83e19eb63ae87bfa6898d37b5da869ddb2", - "0x99c0a26ac74211db77918156d7ae9bea6ecf48da3ce9e53829a9ad5ed41321227c94fbd7449ae2e44aae801811552b1b", - "0xabdd2635b61cb948e51b762a256cf9d159b9fcb39b2fb11ba2fed1cb53475a03fc6e024a6a824a67a689396119a36a7b", - "0xa5ca98b98da8bb8eb07b1e5e3c85a854db42addefacd141771a0c63a8e198421dccc55ef1d94662ca99a7d83b9173fc3", - "0xa821bb5cf1eb3aeae6318c8d554e2ea3137d73bb29d2e4450c9a33f441355ea77bb0e0e0ce7c819abc3ed119110a3a92", - "0x95cdfb19b3f7196c26d60586e2c1efaa93352a712f8c8ef6209f6f318cecd52d7bebdfbfee4be1f5903a1595f73bc985", - "0xaef6e6a400106e217f9888afcef0a1e1299b59017e77dc5453317dec0c32ae96873608bef3f1b504a7e4f45b06edc9c6", - "0x96399ad093299ba26dc09ae85dbec9a1801dea4a338dd5d578bcdcb91246db0059e54098ba8a56cbb24600a40095cf79", - "0xad8b018ac99857ad4b38bdf6d110bbef64029a4d9f08df85a278c6ddc362a5f64e1f3a919f798ccb2f85a7f4ca1260b4", - "0xb211f3b5dd91941d119c4fe05e2b4c7bb0ce0a8d7ef05932a96e850f549a78cd20cded0b3adb3f9f8b7058889ae2cb4e", - "0xab780dd363671765c9c9ab0f4e7096aacf5894e042b75f40a92df8eb272a6229078cd6eadcc500eead3650860aa82177", - "0xa4d96b16ab3abe77ead9b4477c81957e66a028f95557e390352743da53d1a7ba0c81d928a7ea8bc03b9900135ac36a6a", - "0xb4d4e028099bf0f28ac32141cd8de4ee7c3d62d4f519fad6abbb4ba39592750812220a4167d1da4c4f46df965f7cf43d", - "0xaa929c5f0bd8cb44a861bfb3d18340a58c61d82afa642447b71b1470a7b99fe3d5796bdd016b121838cb3594f5a92967", - "0xa038e66f0a28aba19d7079643788db3eed8e412fb9ab4c0f6cacf438af4657cc386a7c22ae97ccc8c33f19a572d6431c", - "0x89c1ff879faa80428910e00b632d31c0cebb0c67e8f5ded333d41f918032282fb59fbcbe26d3156592f9692213667560", - "0x8d899072c9d30e27065d73c79ce3130a09b6a4a4c7d9c4e4488fda4d52ad72bd5f1fd80f3a8936ef79cf362a60817453", - "0x8ffb84a897df9031f9a8e7af06855180562f7ca796489b51bb7cca8d0ca1d9766a4de197a3eb7e298b1dfb39bc6e9778", - "0x836ebd0b37e7ef4ff7b4fc5af157b75fa07a2244045c3852702eaafa119ca1260c654a872f1b3708b65671a2ece66ad2", - "0x9292dfd6d5bfc95f043f4eb9855c10cbcf90fbd03e7a256c163749b23a307b46a331bdbd202236dca0e8ea29e24906de", - "0x8bc37eaa720e293e32b7986061d2ffcbd654d8143e661aabe5602adc832ab535cffbe12a7b571d423675636a74b956e4", - "0x887455f368515340eb6f9b535f16a1cf3e22f0ceda2ead08c5caefccef4087e9f4b5d61c5b110ff3e28e4ab2ad9e97c5", - "0xa6e5ec36e7712056fec00de15b8696952b17891e48ebe2fa90c6f782c7d927b430917b36b4a25b3d8466da3ca2a4985d", - "0x895cae36ba786104ec45740c5dc4f2416b2adce6e806815e3994e98d9e1be372eaec50094fbb7089015684874631ab7e", - "0x9687444fe6250c246b1711a8f73992f15c3cac801e79c54ffd5e243ad539fdd98727043e4f62d36daf866750de1ba926", - "0xb17f75044c8e9ce311bb421a5427006b6fa1428706d04613bd31328f4549decd133e62f4b1917016e36eb02ea316a0ca", - "0x8538a84d2f9079dd272a7383ff03b7674f50b9c220e0399c794a2bcb825d643d0fc8095d972d5186b6f0fe9db0f7084f", - "0xaf07b37644cc216e7083bac1c4e6095fa898f3417699df172c1f6e55d6c13c11f5279edd4c7714d65360b5e4c3c6731e", - "0x87eed8fe7486c0794884c344c07d3964f8fc065aebb0bb3426506ab879b2e0dfaefa5cece213ec16c7b20e6f946c0bd2", - "0x8a4bf42f141d8bc47c9702779d692a72752510ef38e290d36f529f545a2295082a936c8420f59d74b200a8fff55167c4", - "0xa7170e5e00a504a3b37cb19facf399c227497a0b1e9c8a161d541cb553eb8211449c6ac26fe79a7ff7b1c17f33591d74", - "0xa9a2cc7232f07ef9f6d451680648f6b4985ecab5db0125787ac37280e4c07c8210bab254d0b758fd5e8c6bcf2ee2b9ff", - "0x8908d82ebfa78a3de5c56e052d9b5d442af67a510e88a76ba89e4919ae1620c5d15655f663810cfc0ee56c256a420737", - "0xa9d47f3d14047ca86c5db9b71f99568768eaa8a6eb327981203fdb594bdb0a8df2a4a307f22dcea19d74801f4648ea89", - "0xa7c287e0e202ebfc5be261c1279af71f7a2096614ee6526cd8b70e38bb5b0b7aca21a17140d0eddea2f2b849c251656a", - "0x97807451e61557d122f638c3f736ab4dab603538396dca0fcdf99f434a6e1f9def0521816b819b1c57ecdfa93bd077eb", - "0xa8486d60742446396c9d8bc0d4bed868171de4127e9a5a227f24cbf4efbbe5689bbd38f2105498706a6179340b00aed5", - "0xa03b97c2a543dfefa1deb316db9316191ab14e3dd58255ce1027b4e65060d02fb5cb0d6ac1a2bf45bfeac72537b26429", - "0xa7d25060f6861873410c296a4959a058174e9a1681ac41770788191df67fc1391545dab09de06b56cd73a811b676aa1b", - "0x96bb9c9aa85d205e085434d44f5021d8bbafc52cd2727b44e2a66094a4e5467b6294d24146b54c0d964c711e74a258d4", - "0xb07b17f11267e577191e920fa5966880f85ff7089ac59d5d550e46f3a5cdadd94f438a547cd1ec66f20a447e421f96c6", - "0x964e33e1571c97088fe7c8ca3430db60a8119f743a47aa0827e6e2fb9bae5ff3bf6cecd17b11dd34628546b6eb938372", - "0x82a0513a05870b96509a559164e6ff26988ea8a2227ac6da9adc96fe793485a9eb6bdcab09afac7be4aef9a5ae358199", - "0xb1185bc679623e7a37a873d90a2a6393fb5ccc86e74ba4ba6f71277df3623cde632feae4414d6429db6b4babde16dee0", - "0xb3d77504b7032b5593a674d3c0cd2efbf56b2b44ed7fe8669f752828045e4e68202a37bf441f674b9c134886d4cee1df", - "0x95ab31749ff1f7b3f165ce45af943c6ed1f1071448c37009643a5f0281875695c16c28fc8d8011a71a108a2d8758e57d", - "0xb234dee9c56c582084af6546d1853f58e158549b28670b6783b4b5d7d52f00e805e73044a8b8bd44f3d5e10816c57ecc", - "0x86da5d2343f652715c1df58a4581e4010cf4cbe27a8c72bb92e322152000d14e44cc36e37ff6a55db890b29096c599b9", - "0x8b7be904c50f36453eff8c6267edcb4086a2f4803777d4414c5c70c45b97541753def16833e691d6b68d9ef19a15cb23", - "0xb1f4e81b2cdb08bd73404a4095255fa5d28bcd1992a5fd7e5d929cfd5f35645793462805a092ec621946aaf5607ef471", - "0xa7f2ca8dacb03825ef537669baff512baf1ea39a1a0333f6af93505f37ed2e4bbd56cb9c3b246810feee7bacdf4c2759", - "0x996d0c6c0530c44c1599ffdf7042c42698e5e9efee4feb92f2674431bbddf8cf26d109f5d54208071079dfa801e01052", - "0xb99647e7d428f3baa450841f10e2dc704ce8125634cc5e7e72a8aa149bf1b6035adce8979a116a97c58c93e5774f72b7", - "0x95960a7f95ad47b4a917920f1a82fbbecd17a4050e443f7f85b325929c1e1f803cf3d812d2cedeab724d11b135dde7a3", - "0x8f9cd1efdf176b80e961c54090e114324616b2764a147a0d7538efe6b0c406ec09fd6f04a011ff40e0fa0b774dd98888", - "0xb99431d2e946ac4be383b38a49b26e92139b17e6e0f0b0dc0481b59f1ff029fb73a0fc7e6fff3e28d7c3678d6479f5a3", - "0xa888887a4241ce156bedf74f5e72bfa2c6d580a438e206932aefc020678d3d0eb7df4c9fe8142a7c27191837f46a6af6", - "0xab62224ea33b9a66722eb73cfd1434b85b63c121d92e3eebb1dff8b80dd861238acf2003f80f9341bfea6bde0bfcd38c", - "0x9115df3026971dd3efe7e33618449ff94e8fd8c165de0b08d4a9593a906bbed67ec3ed925b921752700f9e54cd00b983", - "0x95de78c37e354decd2b80f8f5a817d153309a6a8e2f0c82a9586a32051a9af03e437a1fb03d1b147f0be489ef76b578b", - "0xa7b8a6e383de7739063f24772460e36209be9e1d367fe42153ffe1bccb788a699e1c8b27336435cd7bf85d51ba6bfdd6", - "0x937a8af7ed18d1a55bf3bbe21e24363ae2cb4c8f000418047bf696501aaeec41f2ddf952fd80ef3373f61566faa276a9", - "0xab5e4931771aeb41c10fa1796d6002b06e512620e9d1c1649c282f296853c913f44e06e377a02f57192b8f09937282eb", - "0x893d88009754c84ec1c523a381d2a443cb6d3879e98a1965e41759420a088a7582e4d0456067b2f90d9d56af4ea94bba", - "0x91b2388a4146ebaaa977fec28ffbfb88ac2a1089a8a258f0451c4152877065f50402a9397ba045b896997208b46f3ebf", - "0x8ce0523192e4cc8348cd0c79354a4930137f6f08063de4a940ea66c0b31d5ea315ce9d9c5c2ec4fa6ee79d4df83840dd", - "0xb72f75c4ab77aca8df1a1b691b6ef1a3ff1c343dd9ed48212542e447d2ed3af3017c9ad6826991e9ef472348c21b72a4", - "0xaf0fa5a960f185326877daf735ad96c6bd8f8f99ab0ab22e0119c22a0939976ece5c6a878c40380497570dc397844dba", - "0xadf9f41393e1196e59b39499623da81be9f76df047ae2472ce5a45f83871bb2a0233e00233b52c5c2fa97a6870fbab0a", - "0x8d9fc3aecd8b9a9fca8951753eea8b3e6b9eb8819a31cca8c85a9606ce1bd3885edb4d8cdbc6f0c54449c12927285996", - "0x901969c1d6cac2adcdc83818d91b41dc29ef39c3d84a6f68740b262657ec9bd7871e09b0a9b156b39fa62065c61dacb1", - "0x9536a48ccd2c98f2dcbff3d81578bbb8f828bf94d8d846d985f575059cd7fb28dfa138b481d305a07b42fcb92bacfa11", - "0x8d336654833833558e01b7213dc0217d7943544d36d25b46ecc1e31a2992439679205b5b3ab36a8410311109daa5aa00", - "0x95113547163e969240701e7414bf38212140db073f90a65708c5970a6aaf3aba029590a94839618fc3f7dd4f23306734", - "0xa959d77a159b07b0d3d41a107c24a39f7514f8ce24efa046cfcf6ace852a1d948747f59c80eb06277dce1a2ba2ec8ea9", - "0x8d2cb52dd7f5c56ef479c0937b83b8519fa49eb19b13ea2ec67266a7b3d227fb8d0c2454c4618d63da1c8e5d4171ac7b", - "0x9941698c5078936d2c402d7db6756cc60c542682977f7e0497906a45df6b8d0ffe540f09a023c9593188ba1b8ce6dfcb", - "0x9631d9b7ec0fc2de8051c0a7b68c831ba5271c17644b815e8428e81bad056abb51b9ca2424d41819e09125baf7aaf2d4", - "0xa0f3d27b29a63f9626e1925eec38047c92c9ab3f72504bf1d45700a612682ad4bf4a4de41d2432e27b745b1613ff22f9", - "0x80e3701acfd01fc5b16ecfa0c6c6fd4c50fe60643c77de513f0ad7a1a2201e49479aa59056fd6c331e44292f820a6a2c", - "0xa758c81743ab68b8895db3d75030c5dd4b2ccc9f4a26e69eb54635378a2abfc21cba6ca431afb3f00be66cffba6ab616", - "0xa397acb2e119d667f1ab5f13796fd611e1813f98f554112c4c478956c6a0ebaceef3afae7ee71f279277df19e8e4543a", - "0xa95df7d52b535044a7c3cf3b95a03bafd4466bdb905f9b5f5290a6e5c2ac0f0e295136da2625df6161ab49abcdacb40f", - "0x8639fc0c48211135909d9e999459568dbdbbc7439933bab43d503e07e796a1f008930e8a8450e8346ab110ec558bcbb9", - "0xa837bcc0524614af9e7b677532fabfb48a50d8bec662578ba22f72462caabda93c35750eed6d77b936636bf165c6f14e", - "0x97d51535c469c867666e0e0d9ed8c2472aa27916370e6c3de7d6b2351a022e2a5330de6d23c112880b0dc5a4e90f2438", - "0xaadb093c06bd86bd450e3eb5aa20f542d450f9f62b4510e196f2659f2e3667b0fe026517c33e268af75a9c1b2bc45619", - "0x860cef2e0310d1a49a9dd6bc18d1ca3841ed1121d96a4f51008799b6e99eb65f48838cd1e0c134f7358a3346332f3c73", - "0xb11c4f9e7ef56db46636474a91d6416bcb4954e34b93abf509f8c3f790b98f04bd0853104ec4a1ff5401a66f27475fce", - "0x87cb52e90a96c5ee581dc8ab241e2fd5df976fe57cc08d9ffda3925a04398e7cffaf5a74c90a7319927f27c8a1f3cef5", - "0xb03831449f658a418a27fd91da32024fdf2b904baf1ba3b17bbf9400eaddc16c3d09ad62cc18a92b780c10b0543c9013", - "0x94e228af11cb38532e7256fa4a293a39ffa8f3920ed1c5ad6f39ce532e789bb262b354273af062add4ca04841f99d3aa", - "0x99eb3aeb61ec15f3719145cf80501f1336f357cc79fca6981ea14320faed1d04ebe0dbce91d710d25c4e4dc5b6461ebf", - "0x920a3c4b0d0fbe379a675e8938047ea3ec8d47b94430399b69dd4f46315ee44bd62089c9a25e7fa5a13a989612fe3d09", - "0xb6414a9a9650100a4c0960c129fa67e765fe42489e50868dd94e315e68d5471e11bfbc86faffb90670e0bec6f4542869", - "0x94b85e0b06580a85d45e57dae1cfd9d967d35bdfcd84169ef48b333c9321f2902278c2594c2e51fecd8dbcd221951e29", - "0xb2c0a0dd75e04a85def2a886ee1fda51f530e33b56f3c2cf61d1605d40217aa549eef3361d05975d565519c6079cc2ac", - "0xabb0ea261116c3f395360d5ac731a7514a3c290f29346dc82bacb024d5455d61c442fefe99cc94dddcae47e30c0e031f", - "0xa32d95ae590baa7956497eddf4c56bff5dfdc08c5817168196c794516610fcc4dbcd82cf9061716d880e151b455b01e0", - "0x8bd589fb6e3041f3ef9b8c50d29aed1a39e90719681f61b75a27489256a73c78c50c09dd9d994c83f0e75dfe40b4de84", - "0x82d01cdaf949d2c7f4db7bfadbf47e80ff9d9374c91512b5a77762488308e013689416c684528a1b16423c6b48406baf", - "0xb23e20deb7e1bbbc328cbe6e11874d6bdbb675704a55af1039b630a2866b53d4b48419db834a89b31ebed2cfc41278dd", - "0xa371559d29262abd4b13df5a6a5c23adab5a483f9a33a8d043163fcb659263322ee94f872f55b67447b0a488f88672d6", - "0x85b33ddf4a6472cacc0ed9b5ec75ed54b3157e73a2d88986c9afa8cb542e662a74797a9a4fec9111c67e5a81c54c82b3", - "0xaf1248bc47a6426c69011694f369dc0ec445f1810b3914a2ff7b830b69c7e4eaa4bafec8b10ed00b5372b0c78655a59b", - "0x94b261ed52d5637fd4c81187000bd0e5c5398ce25797b91c61b30d7b18d614ab9a2ca83d66a51faf4c3f98714e5b0ea5", - "0x953d4571c1b83279f6c5958727aaf9285d8b8cbdbfbaff51527b4a8cfdd73d3439ba862cdb0e2356e74987ff66d2c4d9", - "0xb765dae55d0651aca3b3eaef4ca477f0b0fda8d25c89dccd53a5573dd0c4be7faaadaa4e90029cdd7c09a76d4ce51b91", - "0xb6d7b7c41556c85c3894d0d350510b512a0e22089d3d1dd240ad14c2c2b0ce1f003388100f3154ad80ec50892a033294", - "0xa64561dc4b42289c2edf121f934bc6a6e283d7dce128a703f9a9555e0df7dda2825525dbd3679cd6ba7716de230a3142", - "0xa46c574721e8be4a3b10d41c71057270cca42eec94ca2268ee4ab5426c7ce894efa9fa525623252a6a1b97bcf855a0a5", - "0xa66d37f1999c9c6e071d2a961074c3d9fdcf9c94bf3e6c6ed82693095538dd445f45496e4c83b5333b9c8e0e64233adc", - "0xab13814b227a0043e7d1ff6365360e292aca65d39602d8e0a574d22d25d99ccb94417c9b73095632ff302e3d9a09d067", - "0xb2c445b69cff70d913143b722440d2564a05558d418c8ef847483b5196d7e581c094bae1dbb91c4499501cfa2c027759", - "0x87cbde089962d5f093324b71e2976edbe6ad54fb8834dd6e73da9585b8935fca1c597b4d525949699fdfa79686721616", - "0xa2c7e60966acb09c56cf9ad5bdcc820dcabf21ef7784970d10353048cf3b7df7790a40395561d1064e03109eaac0df98", - "0x8ea7b8af208678178553946b2ee9e68c0e751b34f3652409a5e66c40d3aee3a40ba6ffe2175ce16c6a81b78ecc597d02", - "0x960234239e1e3ea262e53d256ad41b2fe73f506b3d130732d0ee48819eb8a9c85bb5106a304874d8625afae682c34015", - "0x858459694c4e8fdafa6cdaee1184e1305ca6e102222b99b8e283dd9bb3ebf80e55d6c4d8831a072b813c8eceb8124d95", - "0xa30a8ce0f44aeb5590dc618c81c7cac441470ce79fd7881a8f2ea4ca5f9d848ebde762fcaee985cbd3d5990367403351", - "0xa83867643672248b07d3705813b56489453e7bc546cdba570468152d9a1bd04f0656034e7d03736ea156fc97c88dc37f", - "0xa7bb52e0fc58b940dc47ea4d0a583012ee41fad285aba1a60a6c54fa32cfe819146888c5d63222c93f90de15745efb2b", - "0x8627bcc853bdeaad37f1d0f7d6b30ada9b481ccdf79b618803673de8a142e8a4ce3e7e16caed1170a7332119bcdc10a9", - "0x8903d9dc3716b59e8e99e469bd9fde6f4bca857ce24f3a23db817012f1ea415c2b4656c7aeca31d810582bb3e1c08cc6", - "0x875169863a325b16f892ad8a7385be94d35e398408138bd0a8468923c05123d53dba4ce0e572ea48fcdadd9bd9faa47a", - "0xb255b98d46d6cc44235e6ce794cc0c1d3bd074c51d58436a7796ce6dc0ae69f4edaa3771b35d3b8a2a9acd2f6736fab3", - "0x9740c4d0ee40e79715a70890efda3455633ce3a715cbfc26a53e314ebbe61937b0346b4859df5b72eb20bcba96983870", - "0xa44ce22ab5ddc23953b02ec187a0f419db134522306a9078e1e13d5bf45d536450d48016a5e1885a346997003d024db0", - "0x90af81c08afdccd83a33f21d0dc0305898347f8bd77cc29385b9de9d2408434857044aec3b74cb72585338c122e83bb4", - "0x80e162a7656c9ae38efa91ae93e5bd6cb903f921f9f50874694b9a9e0e2d2595411963d0e3f0c2d536b86f83b6e4d6ef", - "0x8b49fa6babe47291f9d290df35e94e83be1946784b9c7867efd8bc97a12be453013939667164b24aeb53d8950288a442", - "0xa1df6435d718915df3da6dda61da1532a86e196dc7632703508679630f5f14d4cb44ce89eff489d7ff3fe599cc193940", - "0xafd44c143dbb94c71acc2a309c9c88b8847ef45d98479fccce9920db9b268e8e36f8db9f02ff4ee3cff01e548f719627", - "0xb2cf33d65d205e944b691292c2d9b0b124c9de546076dd80630742989f1ffd07102813c64d69ba2a902a928a08bce801", - "0xb9f295e9f9eca432b2d5c77d6316186027caca40a6d6713f41356497a507b6e8716fb471faf973aaa4e856983183c269", - "0xb3bd50c4b034473edce4b9be1171376a522899cb0c1a1ae7dc22dd2b52d20537cf4129797235084648ac4a3afc1fa854", - "0x8ef37683d7ca37c950ba4df72564888bedaf681931d942d0ea88ead5cc90f4cbef07985a3c55686a225f76f7d90e137d", - "0x82107855b330bc9d644129cebecf2efbfab90f81792c3928279f110250e727ce12790fd5117501c895057fa76a484fc0", - "0x816a5474c3b545fb0b58d3118cc3088a6d83aad790dbf93025ad8b94a2659cceba4fa6a6b994cb66603cc9aef683a5e3", - "0x8f633f9b31f3bb9b0b01ea1a8830f897ecd79c28f257a6417af6a5f64e6c78b66c586cf8d26586830bd007fb6279cd35", - "0xacb69d55a732b51693d4b11f7d14d21258d3a3af0936385a7ce61e9d7028a8fe0dd902bda09b33fb728bc8a1bc542035", - "0x8d099582ac1f46768c17bf5a39c13015cfe145958d7fc6ddfd2876ad3b1a55a383fbe940e797db2b2b3dc8a232f545dc", - "0x97a4dd488b70bf772348ececaca4cf87bc2875d3846f29fe6ef01190c5b030219b9e4f8137d49ea0cc50ca418024c488", - "0xb4d81148f93fa8ec0656bbfb5f9d96bbf5879fa533004a960faac9fd9f0fe541481935fdf1f9b5dd08dff38469ef81c5", - "0x8e9b2ae4fc57b817f9465610a77966caaff013229018f6c90fa695bd734cb713b78a345b2e9254b1aff87df58c1cd512", - "0x99eb7126e347c636e9a906e6bfdc7c8ca0c1d08580c08e6609889a5d515848c7ca0f32ab3a90c0e346f976a7883611f7", - "0x8ca87944aa3e398492b268bda0d97917f598bc0b28584aa629dfec1c3f5729d2874db422727d82219880577267641baa", - "0x88ab0e290dc9a6878d6b4e98891ff6bfc090e8f621d966493fcbe1336cc6848fcbb958d15abcfa77091d337da4e70e74", - "0x8956a2e1dc3ec5eb21f4f93a5e8f0600a06e409bb5ec54e062a1290dff9ce339b53fbbfc4d42b4eed21accea07b724d6", - "0x8d22220da9dc477af2bddb85c7073c742c4d43b7afee4761eba9346cadbcd522106ed8294281a7ef2e69883c28da0685", - "0x90dafd9a96db7e1d6bde424245305c94251d5d07e682198ae129cd77bd2907a86d34722cbde06683cc2ca67cebe54033", - "0xb5202e62cf8ea8e145b12394bd52fd09bda9145a5f78285b52fda4628c4e2ccfc2c208ecde4951bd0a59ac03fa8bc202", - "0x8959856793ba4acf680fb36438c9722da74d835a9fe25a08cf9e32d7800c890a8299c7d350141d2e6b9feceb2ebb636f", - "0xab0aa23c1cd2d095825a3456861871d298043b615ae03fcd9283f388f0deef3cc76899e7fde15899e3edf362b4b4657f", - "0x9603b333cc48fe39bea8d9824cfee6ac6c4e21668c162c196ecd1ff08ef4052ace96a785c36b8f7906fdcb6bc8802ddd", - "0x93bfecbc3c7cc03c563240e109850a74948f9fa078eb903b322368cda0b50888663a17953579578ba060b14dbf053024", - "0xb01f843b808cf7939a474de155a45462e159eb5044f00c6d77e0f7ec812720a3153209e971a971ccbf5ebee76ec4074f", - "0xb009e0567c3c75ed767247d06fa39049a4d95df3392d35a9808cb114accf934e78f765cd18a2290efef016f1918c7aeb", - "0xad35631df8331da3a12f059813dfa343d831225a392f9c7e641c7d23a6c1ad8df8e021201c9f6afb27c1575948d6bf68", - "0xa89c2a631d84128471c8ef3d24b6c35c97b4b9b5dad905c1a092fb9396ae0370e215a82308e13e90e7bb6ebcc455eb2a", - "0xb59c7f5fbfeb02f8f69e6cedef7ff104982551f842c890a14834f5e834b32de1148cf4b414a11809d53dd3f002b15d6a", - "0xaa6f267305b55fede2f3547bc751ba844ce189d0b4852022712b0aee474de54a257d4abcd95efe7854e33a912c774eba", - "0xafddd668f30cce70904577f49071432c49386ec27389f30a8223b5273b37e6de9db243aceb461a7dc8f1f231517463a9", - "0xb902a09da9157b3efa1d98f644371904397019d0c84915880628a646a3ad464a9d130fdc651315098179e11da643ad2e", - "0xb05f31957364b016c6f299ae4c62eede54cab8ea3871d49534828c8bdc6adbc6a04a708df268f50107d81d1384d983ae", - "0xb4c3f7284802e614ddf1f51640f29e7139aae891467d5f62778310372071793e56fbd770837b97d501191edd0da06572", - "0xb4eddb7c3775fb14fac7f63bb73b3cde0efa2f9a3b70e6a65d200765f6c4b466d3d76fcd4d329baee88e2aba183b8e69", - "0xa83e7dbae5a279f0cfd1c94e9849c58a3d4cecc6d6d44bb9b17508576ca347fca52c2c81371d946b11a09d4ed76ec846", - "0x8018ea17e2381c0233867670f9e04c8a47ace1207fdcf72dce61b6c280ba42d0a65f4b4e0b1070cc19c7bb00734974d9", - "0xaf90b541dfed22e181ff3ef4cf11f5e385fd215c1e99d988e4d247bc9dcee9f04f2182b961797c0bcc5f2aaa05c901a9", - "0xa37046e44cf35944e8b66df80c985b8a1aa7004a2fd0b81ac251638977d2ff1465f23f93ac0ce56296f88fdc591bbdd7", - "0xa735bd94d3be9d41fcd764ec0d8d7e732c9fc5038463f7728fd9d59321277e2c73a45990223bd571dab831545d46e7aa", - "0x94b32dcb86f5d7e83d70a5b48fe42c50f419be2f848f2d3d32ee78bf4181ab18077a7666eedb08607eece4de90f51a46", - "0xa7f0804cafbf513293485afc1b53117f0cbfaea10919e96d9e4eb06f0c96535e87065d93f3def1bbc42044dbb00eb523", - "0xaaaad1166d7f19f08583dd713275a71a856ab89312f84ca8078957664924bb31994b5c9a1210d0c41b085be4058ed52e", - "0xa1757aac9f64f953e68e680985a8d97c5aac8688b7d90f4db860166dd3d6119e8fca7d700a9530a2b9ba3932c5e74e33", - "0x98cada5db4a1430c272bfc1065fb685872e664ed200d84060ee9f797d0a00864f23943e0fb84ba122a961996a73dfb14", - "0xa5e609f716dc7729d1247f40f9368a2e4a15067e1dd6a231fece85eeefb7e7d4a5ac8918fb376debd79d95088750b2ca", - "0xb5365eb8caab8b1118619a626ff18ce6b2e717763f04f6fa8158cdca530c5779204efa440d088083f1a3685454aa0555", - "0xa6e01b8da5f008b3d09e51a5375d3c87c1da82dff337a212223e4d0cdb2d02576d59f4eef0652d6b5f2fc806d8c8149c", - "0xae310f613d81477d413d19084f117248ad756572c22a85b9e4c86b432e6c602c4a6db5edf2976e11f7353743d679e82a", - "0xa1f219c0b8e8bb8a9df2c6c030acbb9bbfa17ba3db0366f547da925a6abb74e1d7eb852bd5a34bae6ac61d033c37e9dc", - "0xa2087fa121c0cdd5ea495e911b4bc0e29f1d5c725aadfb497d84434d2291c350cdaa3dc8c85285f65a7d91b163789b7a", - "0x929c63c266da73d726435fa89d47041cfe39d4efa0edce7fc6eca43638740fbc82532fd44d24c7e7dd3a208536025027", - "0x91c1051dcc5f52ad89720a368dddd2621f470e184e746f5985908ba34e1d3e8078a32e47ab7132be780bea5277afecb0", - "0xae089b90ba99894d5a21016b1ea0b72a6e303d87e59fb0223f12e4bb92262e4d7e64bfdbdb71055d23344bc76e7794b2", - "0x8b69aa29a6970f9e66243494223bad07ac8f7a12845f60c19b1963e55a337171a67bdc27622153016fce9828473a3056", - "0x95ca6b08680f951f6f05fd0d180d5805d25caf7e5bda21c218c1344e661d0c723a4dfc2493642be153793c1b3b2caaa4", - "0xa4789dc0f2a07c794dab7708510d3c893d82ddbd1d7e7e4bbbeca7684d9e6f4520fb019b923a06c7efab0735f94aa471", - "0x93c4f57a3cf75085f5656b08040f4cd49c40f1aab6384a1def4c5c48a9fe4c03514f8e61aabe2cfa399ff1ccac06f869", - "0xb6c37f92c76a96b852cd41445aa46a9c371836dd40176cc92d06666f767695d2284a2780fdfd5efc34cf6b18bcfb5430", - "0x9113e4575e4b363479daa7203be662c13d7de2debcda1c142137228aeead2c1c9bc2d06d93a226302fa63cc75b7353ec", - "0xb70addeb5b842ac78c70272137f6a1cef6b1d3a551d3dd906d9a0e023c8f49f9b6a13029010f3309d0b4c8623a329faf", - "0xb976a5132b7eb42d5b759c2d06f87927ef66ecd6c94b1a08e4c9e02a4ce7feca3ac91f9479daa1f18da3d4a168c2ba77", - "0x8fdab795af64b16a7ddf3fad11ab7a85d10f4057cf7716784184960013baa54e7ba2050b0e036dc978ff8c9a25dc5832", - "0xb2c982ad13be67d5cdc1b8fac555d4d1ec5d25f84e58b0553a9836f8f9e1c37582d69ad52c086a880a08b4efcccd552e", - "0x810661d9075ae6942735215f2ab46d60763412e1f6334e4e00564b6e5f479fc48cf37225512abbccf249c0ca225fc935", - "0xa0c4bf00a20f19feff4004004f08231b4c6c86ac4ed57921eea28d7dea32034f3f4ab5b7ded7184f6c7ffbf5847232ad", - "0xb2bb5a9eea80bf067f3686a488529d9c2abd63fc9e1d4d921b1247ef86d40cd99e0a8b74f750e85c962af84e84e163a6", - "0x887ee493c96d50f619ba190ce23acddc5f31913e7a8f1895e6339d03794ecefd29da5f177d1d25bc8df8337ae963fc7b", - "0xb7966fb07029d040f2228efa2cfcd04341e4666c4cf0b653e6e5708631aa2dd0e8c2ac1a62b50c5a1219a2737b82f4f7", - "0x92234cfd6b07f210b82db868f585953aafbcbc9b07b02ded73ff57295104c6f44a16e2775ca7d7d8ee79babb20160626", - "0x8d3cd7f09c6fd1072bc326ff329e19d856e552ac2a9f20274bc9752527cd3274142aa2e32b65f285fb84bc3adaaea3cc", - "0x8caed1cb90d8cd61e7f66edc132672172f4fa315e594273bb0a7f58a75c30647ec7d52eda0394c86e6477fbc352f4fe8", - "0xae192194b09e9e17f35d8537f947b56f905766c31224e41c632c11cd73764d22496827859c72f4c1ab5fd73e26175a5d", - "0x8b7be56aac76d053969e46882d80a254e89f55c5ab434883cbafc634a2c882375898074a57bc24be3c7b2c56401a7842", - "0x98bc4a7a9b05ba19f6b85f3ee82b08bed0640fd7d24d4542eb7a7f7fde443e880bdb6f5499bd8cb64e1ddd7c5f529b19", - "0xa5a41eaa5e9c1d52b00d64ab72bc9def6b9d41972d80703e9bfe080199d4e476e8833a51079c6b0155b78c3ab195a2a7", - "0xa0823f6f66465fd9be3769c164183f8470c74e56af617f8afd99b742909d1a51f2e0f96a84397597afbd8eeaabb51996", - "0x801da41d47207bdd280cc4c4c9753a0f0e9d655e09e0be5f89aeed4ce875a904f3da952464399bf8efc2398940d5fba2", - "0xa719314085fd8c9beac4706c24875833d59a9a59b55bca5da339037c0a5fc03df46dbecb2b4efcfed67830942e3c4ea1", - "0xa75dde0a56070bb7e9237b144ea79f578d413a1cbbd1821cee04f14f533638b24f46d88a7001e92831843b37ed7a709f", - "0xa6b4ef8847a4b980146e1849e1d8ab38695635e0394ca074589f900ce41fa1bb255938dc5f37027523bac6a291779bef", - "0xb26d84dfd0b7bd60bcfdbea667350462a93dca8ff5a53d6fc226214dcb765fada0f39e446a1a87f18e4e4f4a7133155f", - "0xae7bd66cc0b72f14ac631ff329a5ca4958a80ba7597d6da049b4eb16ac3decde919ca5f6f9083e6e541b303fb336dc2f", - "0xa69306e6bfbbc10de0621cffb13c586e2fcfd1a80935e07c746c95651289aec99066126a6c33cb8eb93e87d843fc631f", - "0xa47e4815585865218d73c68ba47139568ea7ae23bfa863cb914a68454242dd79beaec760616b48eea74ceab6df2298dd", - "0xb2da3cfb07d0721cd226c9513e5f3ace98ed2bc0b198f6626b8d8582268e441fa839f5834f650e2db797655ca2afa013", - "0xb615d0819554f1a301a704d3fc4742bd259d04ad75d50bccee3a949b6226655f7d623301703506253cca464208a56232", - "0x85e06ed5797207f0e7ae85909e31776eb9dae8af2ec39cc7f6a42843d94ea1de8be2a3cdadfcbe779da59394d4ffeb45", - "0x8c3529475b5fdbc636ee21d763f5ec11b8cb040a592116fb609f8e89ca9f032b4fa158dd6e9ceab9aceb28e067419544", - "0xaccddb9c341f32be82b6fa2ef258802c9ae77cd8085c16ec6a5a83db4ab88255231b73a0e100c75b7369a330bfc82e78", - "0x93b8e4c6e7480948fa17444b59545a5b28538b8484a75ad6bc6044a1d2dbd76e7c44970757ca53188d951dc7347d6a37", - "0x90111721d68b29209f4dc4cfb2f75ab31d15c55701922e50a5d786fb01707ab53fcec08567cd366362c898df2d6e0e93", - "0xb60a349767df04bd15881c60be2e5cc5864d00075150d0be3ef8f6b778715bebca8be3be2aa9dbdc49f1a485aeb76cda", - "0xb8d5a967fdd3a9bcf89a774077db39ef72ca9316242f3e5f2a350202102d494b2952e4c22badecd56b72ba1eea25e64b", - "0x8499ebd860f31f44167183b29574447b37a7ee11efcc9e086d56e107b826b64646b1454f40f748ccac93883918c89a91", - "0x99c35e529782db30f7ccab7f31c225858cf2393571690b229ece838ec421a628f678854a1ddbd83fa57103ccebd92c7f", - "0x99817660d8b00cbe03ec363bcdc5a77885586c9e8da9e01a862aca0fc69bf900c09b4e929171bc6681681eae10450541", - "0x8055e130964c3c2ebd980d3dc327a40a416bcdbf29f480480a89a087677a1fb51c823b57392c1db72f4093597100b8d3", - "0x877eaddef845215f8e6f9ed24060c87e3ab6b1b8fbb8037d1a57e6a1e8ed34d00e64abb98d4bf75edb5c9788cbdccbef", - "0xb5432bbff60aeae47f2438b68b123196dfb4a65cc875b8e080501a4a44f834b739e121bec58d39ac36f908881e4aa8ab", - "0xb3c3f859b7d03ff269228c0f9a023b12e1231c73aba71ad1e6d86700b92adc28dfa3757c052bbc0ba2a1d11b7fda4643", - "0xab8a29f7519a465f394ef4a5b3d4924d5419ca1489e4c89455b66a63ac430c8c9d121d9d2e2ed8aa1964e02cd4ebac8c", - "0x866ae1f5c2a6e159f2e9106221402d84c059f40d166fab355d970773189241cd5ee996540d7c6fc4faf6f7bcff967dce", - "0x973a63939e8f1142a82b95e699853c1e78d6e05536782b9bb178c799b884f1bc60177163a79a9d200b5ff4628beeb9e7", - "0xa5fc84798d3e2d7632e91673e89e968f5a67b7c8bb557ea467650d6e05e7fe370e18d9f2bdd44c244978295cf312dc27", - "0xb328fe036bcd0645b0e6a15e79d1dd8a4e2eda128401a4e0a213d9f92d07c88201416fc76193bb5b1fe4cb4203bab194", - "0x99239606b3725695a570ae9b6fb0fb0a34ad2f468460031cfa87aa09a0d555ff606ff204be42c1596c4b3b9e124b8bd6", - "0xaf3432337ca9d6cce3574e23e5b7e4aa8eda11d306dc612918e970cc7e5c756836605a3391f090a630bac0e2c6c42e61", - "0x8a545b3cb962ce5f494f2de3301de99286c4d551eaa93a9a1d6fef86647321834c95bf754c62ec6c77116a21494f380d", - "0x8f9b8ea4c25469c93556f1d91be583a5f0531ac828449b793ba03c0a841c9c73f251f49dd05cbb415f5d26e6f6802c99", - "0xa87199e33628eeffd3aff114e81f53dd54fba61ba9a9a4d7efdbff64503f25bc418969ab76ef1cf9016dd344d556bb29", - "0xa2fda05a566480602274d7ffcaefdd9e94171286e307581142974f57e1db1fa21c30be9e3c1ac4c9f2b167f92e7c7768", - "0xa6235d6a23304b5c797efb2b476ed02cb0f93b6021a719ae5389eb1e1d032944ae4d69aec2f29fcd6cbc71a6d789a3ba", - "0xa7f4a73215f7e99e2182c6157dd0f22e71b288e696a8cff2450689a3998f540cfb82f16b143e90add01b386cb60d8a33", - "0x922d8f9cd55423f5f6a60d26de2f8a396ac4070a6e2dc956e50c2a911906aa364d4718aea29c5b61c12603534e331e7e", - "0x96d7fdf5465f028fc28f21fbfe14c2db2061197baf26849e6a0989a4ea7d5e09ab49a15ba43a5377b9354d01e30ce860", - "0x8f94c4255a0fc1bd0fa60e8178c17f2a8e927cac7941c5547d2f8f539e7c6ed0653cab07e9fb1f2c56cdd03bb876512a", - "0x95984c10a2917bfa6647ebce69bf5252d9e72d9d15921f79b2c6d7c15ee61342b4fb8a6d34838e07132b904f024ded04", - "0x93e65e765a574277d3a4d1d08ca2f2ff46e9921a7806ca8ca3d8055f22d6507744a649db7c78117d9168a1cbdb3bbc61", - "0x8d453b7364662dc6f36faf099aa7cbbe61151d79da7e432deba7c3ed8775cfe51eaf1ba7789779713829dde6828e189a", - "0xacffa3ee6c75160286090162df0a32a123afb1f9b21e17fd8b808c2c4d51a4270cab18fba06c91ef9d22e98a8dc26cdd", - "0xa5597cc458186efa1b3545a3926f6ecaaa6664784190e50eed1feac8de56631bee645c3bac1589fa9d0e85feb2be79d4", - "0x87ba9a898df9dfa7dabc4ab7b28450e4daf6013340e329408d1a305de959415ab7315251bad40511f917dfc43974e5f0", - "0xa598778cf01d6eef2c6aabc2678e1b5194ee8a284ebd18a2a51a3c28a64110d5117bcbf68869147934e600572a9e4c8a", - "0x84c69a4ad95861d48709f93ade5ac3800f811b177feb852ebcd056e35f5af5201f1d8a34ab318da8fe214812d0a7d964", - "0x9638a237e4aed623d80980d91eda45e24ebf48c57a25e389c57bd5f62fa6ffa7ca3fb7ae9887faf46d3e1288af2c153b", - "0x800f975721a942a4b259d913f25404d5b7b4c5bf14d1d7e30eee106a49cb833b92058dab851a32ee41faf4ef9cb0dea4", - "0xb9127a34a59fed9b5b56b6d912a29b0c7d3cb9581afc9bd174fc308b86fdb076f7d436f2abc8f61cef04c4e80cd47f59", - "0x8004eda83f3263a1ccfc8617bc4f76305325c405160fb4f8efeff0662d605e98ba2510155c74840b6fe4323704e903c4", - "0xaa857b771660d6799ff03ccad1ab8479e7f585a1624260418fc66dc3e2b8730cfa491d9e249505141103f9c52f935463", - "0x98b21083942400f34cde9adbe1977dee45ba52743dc54d99404ad9da5d48691ddea4946f08470a2faad347e9535690c7", - "0xa4b766b2faec600a6305d9b2f7317b46f425442da0dc407321fc5a63d4571c26336d2bccedf61097f0172ec90fb01f5f", - "0xb9736619578276f43583de1e4ed8632322ea8a351f3e1506c5977b5031d1c8ad0646fb464010e97c4ddb30499ddc3fb0", - "0x973444ffaff75f84c17f9a4f294a13affd10e2bceed6b4b327e4a32c07595ff891b887a9f1af34d19766d8e6cb42bfd1", - "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "0xb80c2aa3d0e52b4d8b02c0b706e54b70c3dbca80e5e5c6a354976721166ea0ca9f59c490b3e74272ef669179f53cb50d", - "0x8e52fa5096ff960c0d7da1aa4bce80e89527cdc3883eba0c21cb9a531088b9d027aa22e210d58cf7cbc82f1ec71eb44f", - "0x969f85db95f455b03114e4d3dc1f62a58996d19036513e56bee795d57bf4ed18da555722cd77a4f6e6c1a8e5efe2f5d7", - "0xab84b29b04a117e53caea394a9b452338364c45a0c4444e72c44132a71820b96a6754828e7c8b52282ad8dca612d7b6a", - "0x83e97e9ab3d9e453a139c9e856392f4cef3ec1c43bce0a879b49b27a0ce16f9c69063fd8e0debbe8fabafc0621bc200c", - "0x8c138ebdf3914a50be41be8aa8e2530088fb38af087fa5e873b58b4df8e8fd560e8090c7a337a5e36ef65566409ad8f3", - "0xa56da9db2f053516a2141c1a8ed368ae278ab33a572122450249056857376d1dffc76d1b34daf89c86b6fe1ead812a0c", - "0xa3233ea249f07531f5bc6e94e08cea085fd2b2765636d75ff5851f224f41a63085510db26f3419b031eb6b5143735914", - "0xb034bb6767ce818371c719b84066d3583087979ba405d8fbb2090b824633241e1c001b0cb0a7856b1af7a70e9a7b397e", - "0x8722803fe88877d14a4716e59b070dd2c5956bb66b7038f6b331b650e0c31230c8639c0d87ddc3c21efc005d74a4b5cc", - "0x8afe664cb202aacf3bd4810ebf820c2179c11c997f8c396692a93656aa249a0df01207c680157e851a30330a73e386b9", - "0xa999e86319395351d2b73ff3820f49c6516285e459224f82174df57deb3c4d11822fd92cbbed4fc5a0a977d01d241b19", - "0x9619408e1b58b6610d746b058d7b336d178e850065ba73906e08e748651e852f5e3aab17dcadcb47cc21ff61d1f02fcf", - "0x947cf9c2ed3417cd53ea498d3f8ae891efe1f1b5cd777e64cec05aba3d97526b8322b4558749f2d8a8f17836fb6e07aa", - "0xaec2fdae2009fda6852decb6f2ff24e4f8d8ca67c59f92f4b0cf7184be72602f23753ed781cf04495c3c72c5d1056ffe", - "0x8dba3d8c09df49fbfc9506f7a71579348c51c6024430121d1c181cad7c9f7e5e9313c1d151d46d4aa85fb0f68dd45573", - "0xb6334cb2580ae33720ebf91bb616294532a1d1640568745dcda756a3a096786e004c6375728a9c2c0fb320441e7d297a", - "0x9429224c1205d5ecd115c052b701c84c390f4e3915275bb8ce6504e08c2e9b4dd67b764dd2ea99f317b4c714f345b6ff", - "0xabe421db293f0e425cfd1b806686bdfd8fdbac67a33f4490a2dc601e0ddbf69899aa9a119360dad75de78c8c688ca08b", - "0x95c78bffed9ae3fff0f12754e2bd66eb6a9b6d66a9b7faaeb7a1c112015347374c9fe6ce14bf588f8b06a78e9a98f44c", - "0xac08f8b96b52c77d6b48999a32b337c5ad377adf197cda18dbdf6e2a50260b4ee23ca6b983f95e33f639363e11229ee4", - "0x911a0e85815b3b9f3ba417da064f760e84af94712184faeb9957ddd2991dee71c3f17e82a1a8fbeec192b0d73f0ebce7", - "0xaa640bd5cb9f050568a0ad37168f53b2f2b13a91e12b6980ca47ae40289cf14b5b89ddd0b4ca452ce9b1629da0ce4b5d", - "0x907486f31b4ecea0125c1827007ea0ecb1c55cadb638e65adc9810ca331e82bb2fd87e3064045f8d2c5d93dc6c2f5368", - "0x8cbfaf4ce0bbbf89208c980ff8b7bc8f3cfef90f0fe910f463cb1c0f8e17cce18db120142d267045a00ba6b5368f0dd3", - "0x9286f08f4e315df470d4759dec6c9f8eacef345fc0c0b533ad487bb6cfefa8c6c3821a22265c9e77d34170e0bc0d078b", - "0x94a3c088bc1a7301579a092b8ece2cefc9633671bc941904488115cd5cb01bd0e1d2deef7bdccb44553fd123201a7a53", - "0x8f3d0114fbf85e4828f34abb6d6fddfa12789d7029d9f1bb5e28bc161c37509afdab16c32c90ec346bc6a64a0b75726f", - "0xa8ed2d774414e590ec49cb9a3a726fafd674e9595dd8a1678484f2897d6ea0eea1a2ee8525afac097b1f35e5f8b16077", - "0x9878789ff33b11527355a317343f34f70c7c1aa9dc1eca16ca4a21e2e15960be8a050ec616ffb97c76d756ce4bce2e90", - "0x854e47719dae1fe5673cacf583935122139cf71a1e7936cf23e4384fbf546d48e9a7f6b65c3b7bf60028e5aa1234ba85", - "0xaf74bdda2c6772fe9a02d1b95e437787effad834c91c8174720cc6e2ea1f1f6c32a9d73094fc494c0d03eef60b1a0f05", - "0x80a3e22139029b8be32cb167d3bc9e62d16ca446a588b644e53b5846d9d8b7ab1ad921057d99179e41515df22470fb26", - "0x86c393afd9bd3c7f42008bba5fe433ec66c790ebd7aa15d4aeaf9bb39a42af3cfaf8c677f3580932bbd7ada47f406c8c", - "0x90433c95c9bb86a2c2ddcf10adccb521532ebd93db9e072671a4220f00df014e20cd9ce70c4397567a439b24893808dc", - "0x95b2c170f08c51d187270ddc4f619300b5f079bbc89dbca0656eae23eecc6339bf27fa5bf5fd0f5565d4021105e967d2", - "0x8e5eced897e2535199951d4cff8383be81703bca3818837333dd41a130aa8760156af60426ceadb436f5dea32af2814c", - "0xa254a460ebefbe91d6e32394e1c8f9075f3e7a2bb078430ac6922ab14d795b7f2df1397cb8062e667d809b506b0e28d4", - "0xac2062e8ca7b1c6afb68af0ebab31aebd56fc0a0f949ef4ea3e36baf148681619b7a908facf962441905782d26ecbdb5", - "0x8b96af45b283b3d7ffeec0a7585fc6b077ea5fd9e208e18e9f8997221b303ab0ce3b5bafa516666591f412109ce71aa5", - "0xafd73baada5a27e4fa3659f70083bf728d4dc5c882540638f85ea53bf2b1a45ddf50abc2458c79f91fb36d13998c7604", - "0xa5d2fff226e80cb2e9f456099812293333d6be31dd1899546e3ad0cd72b2a8bcb45ec5986e20faa77c2564b93983210c", - "0xa8c9b8de303328fbdaccf60f4de439cf28f5360cf4104581dc2d126bc2e706f49b7281723487ff0eaf92b4cc684bc167", - "0xa5d0d5849102bf1451f40e8261cb71fc57a49e032773cb6cd7b137f71ee32438d9e958077ffafce080a116ccc788a2d4", - "0x80716596f502d1c727d5d2f1469ce35f15e2dbd048d2713aa4975ee757d09c38d20665326bd63303cfe7e820b6de393d", - "0x97baf29b20f3719323cc1d5de23eaa4899dc4f4e58f6c356ec4c3ad3896a89317c612d74e0d3ab623fe73370c5972e2f", - "0xb58bdc9aa5061bf6e5add99a7443d7a8c7ba8f6875b8667d1acbe96fc3ecafbdcc2b4010cb6970a3b849fff84660e588", - "0xb6be68728776d30c8541d743b05a9affc191ad64918fdbd991d2ddd4b32b975c4d3377f9242defef3805c0bfb80fbac7", - "0xb0cddace33333b8a358acad84b9c83382f0569d3854b4b34450fd6f757d63c5bdab090e330b0f86e578f22c934d09c36", - "0x854bd205d6051b87f9914c8c2494075d7620e3d61421cc80f06b13cea64fd1e16c62c01f107a5987d10b8a95a8416ad9", - "0x80351254a353132300ba73a3d23a966f4d10ce9bf6eae82aedb6cdc30d71f9d08a9dd73cb6441e02a7b2ad93ad43159c", - "0x937aae24fb1b636929453fc308f23326b74c810f5755d9a0290652c9c2932ad52cc272b1c83bd3d758ef7da257897eae", - "0xb84d51ef758058d5694ffeac6d8ce70cef8d680a7902f867269c33717f55dd2e57b25347841d3c0872ae5f0d64f64281", - "0xa4b31bb7c878d5585193535b51f04135108134eff860f4eac941053155f053d8f85ff47f16268a986b2853480a6e75e6", - "0x93543f0828835186a4af1c27bdf97b5dd72b6dfa91b4bf5e759ff5327eaf93b0cb55d9797149e465a6b842c02635ffe5", - "0xafdac9e07652bf1668183664f1dd6818ef5109ee9b91827b3d7d5970f6a03e716adcc191e3e78b0c474442a18ad3fc65", - "0x9314077b965aa2977636ae914d4a2d3ce192641a976ffa1624c116828668edbfbe5a09e3a81cb3eed0694566c62a9757", - "0xb395ddcf5082de6e3536825a1c352802c557b3a5118b25c29f4c4e3565ecaaf4bdd543a3794d05156f91fc4ceadc0a11", - "0xb71f774aad394c36609b8730e5be244aaebfff22e0e849acc7ee9d33bedc3ec2e787e0b8b2ffe535560fcd9e15a0897e", - "0x92e9409fa430f943a49bce3371b35ac2efb5bc09c88f70ff7120f5e7da3258a4387dfc45c8b127f2ef2668679aeb314e", - "0x8ef55bef7b71952f05e20864b10f62be45c46e2dca0ef880a092d11069b8a4aa05f2e0251726aca1d5933d7dea98f3f8", - "0xaad3fba9e09fae885cdeef45dfafa901419f5156fb673818f92a4acc59d0e2e9870b025e711de590a63fd481164f3aa8", - "0xb444d52af545dd3a2d3dd94e6613816b154afea0c42b96468aceb0c721395de89e53e81a25db857ca2e692dcb24ba971", - "0x88b279fe173007e64fe58f2c4adba68a1f538dbd3d32d175aa0d026bbb05b72a0c9f5d02b8201a94adb75fe01f6aa8b2", - "0x88494cea4260741c198640a079e584cabfea9fcfb8bcf2520c9becd2419cde469b79021e5578a00d0f7dbc25844d2683", - "0x94f3cce58837c76584b26426b9abdb45f05fee34dd9e5914b6eae08e78b7262ed51c4317031dab1ad716f28b287f9fc2", - "0xb8c7ed564f54df01c0fbd5a0c741beed8183ce0d7842dc3a862a1b335de518810077314aa9d6054bb939663362f496da", - "0x81c153320d85210394d48340619d5eb41304daea65e927266f0262c8a7598321aba82ad6c3f78e5104db2afd2823baca", - "0xab6695a8d48a179e9cd32f205608359cf8f6a9aead016252a35b74287836aa395e76572f21a3839bec6a244aa49573e5", - "0x920ed571539b3002a9cd358095b8360400e7304e9a0717cc8c85ab4a0514a8ad3b9bf5c30cb997647066f93a7e683da9", - "0xa7ec7c194d1e5103bc976e072bf1732d9cb995984d9a8c70a8ee55ce23007f21b8549ad693f118aa974f693ed6da0291", - "0x87a042d6e40c2951a68afc3ccf9646baf031286377f37f6ac47e37a0ec04d5ac69043757d7dff7959e7cd57742017a8d", - "0xb9f054dd8117dd41b6e5b9d3af32ee4a9eebef8e4a5c6daa9b99c30a9024eabeae850ab90dbdb188ca32fd31fd071445", - "0xa8386da875799a84dc519af010eaf47cdbc4a511fe7e0808da844a95a3569ce94054efd32a4d3a371f6aba72c5993902", - "0x8b3343a7cf4ffb261d5f2dbd217fb43590e00feac82510bdf73b34595b10ee51acae878a09efebc5a597465777ef4c05", - "0x8312a5f1ea4f9e93578e0f50169286e97884a5ed17f1780275ab2b36f0a8aa1ab2e45c1de4c8bce87e99e3896af1fa45", - "0xb461198cb7572ac04c484a9454954e157bdd4db457816698b7290f93a10268d75a7e1211e757c6190df6144bbb605d91", - "0x9139764a099580d6f1d462c8bf7d339c537167be92c780e76acb6e638f94d3c54b40ed0892843f6532366861e85a515a", - "0x8bb70acb3c9e041b4fc20e92ba0f3f28f0d5c677bcb017af26f9171e07d28c3c0729bef72457231e3512f909455a13a2", - "0x93301a18e5064c55fcfe8e860fab72da1b89a824ca77c8932023b7c79e4a51df93a89665d308a8d3aa145e46ebe6a0ad", - "0xae3bca496fbd70ce44f916e2db875b2ce2e1ded84edd2cebc0503bdfdec40ec30e1d9afb4eb58c8fa23f7b44e71d88f8", - "0x93cb3a918c95c5d973c0cb7621b66081ed81fba109b09a5e71e81ca01ec6a8bb5657410fdec453585309ef5bf10d6263", - "0x95a50b9b85bb0fc8ff6d5f800d683f0f645e7c2404f7f63228a15b95ce85a1f8100e2e56c0acee19c36ed3346f190e87", - "0x816cc4d9337461caca888809b746ab3713054f5b0eac823b795a1a9de9417c58e32a9f020fef807908fa530cbf35dee8", - "0xa9c2890c2dd0d5d7aedc4cca7f92764086c50f92f0efd2642c59920d807086031bfe2d3ba574318db236c61a8f5f69c2", - "0xad0d5c8c80bddfe14bdaf507da96dc01dc9941aecc8ad3b64513d0a00d67c3f4b4659defb6839b8b18d8775e5344c107", - "0x9047c9fad6ef452e0219e58e52c686b620e2eb769571021e3524bd7eac504f03b84834b16b849d42b3d75c601fd36bb7", - "0xa04dd988fed91fb09cb747a3ac84efe639d7d355524cd7dee5477ecbcdec44d8ac1cec2c181755dcfdb77e9594fb3c5b", - "0xb0ea0c725debd1cec496ced9ce48f456f19af36e8b027094bf38fa37de9b9b2d10282363ea211a93a34a0a5387cace5d", - "0xb5fc46e2bb3e4653ea5e6884dcb3c14e401a6005685ee5a3983644b5b92300b7066289159923118df4332aac52045b8c", - "0x841fc5b26b23226e725e29802da86b35e4f5e3babc8b394f74e30fd5dec6d3840b19a9a096625ce79a4f1edae6369700", - "0x8fd2bbbeea452451def3659bbe0ceb396120ebe8f81eee1ea848691614422c81d7c3e6a7a38032b4120b25c5ffa8f0c2", - "0x9131ce3d25c3d418f50c0ab99e229d4190027ee162b8ba7c6670420ea821831dec1294ac00d66c50fac61c275a9e2c71", - "0x99ec6eafe0eb869d128158cee97b984fb589e1af07699247946e4a85db772289dff3084d224a6f208005c342f32bbd73", - "0xac100fbbe7c2bf00cc56fcd5aa1f27181f82c150c53bbb1e15d2c18a51ed13dcfa7bccab85821b8ddddf493603e38809", - "0xaffd73a458d70c0d9d221e0c2da4348fed731f6b34c0b3e2d5711ba432e85a1ec92e40b83b246a9031b61f5bc824be47", - "0x8ed30ed817816a817e9e07374ef1f94405a7e22dd0096aeaae54504382fc50e7d07b4f1186c1792fc25ea442cd7edc6b", - "0xa52370cfe99a35fa1405aeca9f922ad8d31905e41f390e514ea8d22ee66469637d6c2d4d3a7ee350d59af019ae5a10a4", - "0x8d0b439741c57b82c8e4b994cf3956b5aeaee048b17e0a1edb98253a8d7256f436d8b2f36b7e12504132dbf91f3376b1", - "0x8caac7e1a4486c35109cff63557a0f77d0e4ca94de0817e100678098a72b3787a1c5afc7244991cebcd1f468e18d91d4", - "0xa729a8e64b7405db5ebfb478bb83b51741569331b88de80680e9e283cc8299ba0de07fcf252127750f507e273dc4c576", - "0xa30545a050dad030db5583c768a6e593a7d832145b669ad6c01235813da749d38094a46ac3b965700230b8deacd91f82", - "0x9207e059a9d696c46fa95bd0925983cd8e42aefd6b3fb9d5f05420a413cbc9e7c91213648554228f76f2dd757bde0492", - "0xa83fa862ae3a8d98c1e854a8b17181c1025f4f445fbc3af265dc99e44bbd74cfa5cc25497fb63ee9a7e1f4a624c3202c", - "0x84cdfc490343b3f26b5ad9e1d4dcf2a2d373e05eb9e9c36b6b7b5de1ce29fda51383761a47dbd96deca593a441ccb28e", - "0x881a1aa0c60bb0284a58b0a44d3f9ca914d6d8fa1437315b9ad2a4351c4da3ee3e01068aa128284a8926787ea2a618d1", - "0xaace78e497b32fbff4df81b1b2de69dbc650645e790953d543282cb8d004a59caf17d9d385673a146a9be70bf08a2279", - "0xaa2da4760f1261615bffd1c3771c506965c17e6c8270c0f7c636d90428c0054e092247c3373eca2fb858211fdb17f143", - "0xacb79f291b19e0aa8edb4c4476a172834009c57e0dcc544c7ce95084488c3ad0c63ffd51c2b48855e429b6e1a9555433", - "0x814b58773a18d50a716c40317f8b80362b6c746a531776a9251c831d34fb63e9473197c899c0277838668babc4aa0ecb", - "0xb1f69522b0f7657d78bd1ee3020bcce3447116bf62c146d20684537d36cafb5a7a1531b86932b51a70e6d3ce0808a17e", - "0x8549712c251ef382f7abe5798534f8c8394aa8bcecdca9e7aa1a688dc19dc689dcd017a78b118f3bd585673514832fe4", - "0x912a04463e3240e0293cfc5234842a88513ff930c47bd6b60f22d6bc2d8404e10270d46bf6900fee338d8ac873ebb771", - "0xa327cb7c3fada842e5dd05c2eeedd6fcd8cf2bfb2f90c71c6a8819fb5783c97dd01bd2169018312d33078b2bc57e19f7", - "0xb4794f71d3eceed331024a4cee246cc427a31859c257e0287f5a3507bfbd4d3486cb7781c5c9c5537af3488d389fe03e", - "0x82ffcb418d354ed01688e2e8373a8db07197a2de702272a9f589aed08468eab0c8f14e6d0b3146e2eb8908e40e8389c5", - "0x910b73421298f1315257f19d0dfd47e79d7d2a98310fb293f704e387a4dc84909657f0f236b70b309910271b2f2b5d46", - "0xa15466397302ea22f240eb7316e14d88376677b060c0b0ae9a1c936eb8c62af8530732fc2359cfd64a339a1c564f749b", - "0xa8091975a0d94cdc82fbaff8091d5230a70d6ea461532050abbdfee324c0743d14445cfe6efe6959c89a7c844feaa435", - "0xa677d1af454c7b7731840326589a22c9e81efbbf2baf3fdeaf8ea3f263a522584fbca4405032c4cdf4a2a6109344dfc8", - "0x894e6ffa897b6e0b37237e6587a42bbc7f2dd34fb09c2e8ac79e2b25b18180e158c6dc2dd26761dba0cfed1fb4eb4080", - "0x928d31b87f4fe8fe599d2c9889b0ff837910427ba9132d2fba311685635458041321ae178a6331ed0c398efe9d7912f0", - "0xafc1c4a31f0db24b53ee71946c3c1e1a0884bd46f66b063a238e6b65f4e8a675faa844e4270892035ef0dae1b1442aa0", - "0xa294fcb23d87cf5b1e4237d478cac82ba570649d425b43b1e4feead6da1f031e3af0e4df115ca46689b9315268c92336", - "0x85d12fd4a8fcfd0d61cbf09b22a9325f0b3f41fb5eb4285b327384c9056b05422d535f74d7dc804fb4bab8fb53d556bd", - "0x91b107d9b0ea65c48128e09072acd7c5949a02dd2a68a42ff1d63cf528666966f221005c2e5ca0a4f85df28459cdede6", - "0x89aa5dc255c910f439732fcd4e21341707e8dd6689c67c60551a8b6685bd3547e3f47db4df9dfadd212405f644c4440b", - "0x8c307d6b827fa1adcf0843537f12121d68087d686e9cc283a3907b9f9f36b7b4d05625c33dab2b8e206c7f5aabd0c1e5", - "0x843f48dadf8523d2b4b0db4e01f3c0ea721a54d821098b578fcaa6433e8557cadfea50d16e85133fa78f044a3e8c1e5b", - "0x9942eb8bd88a8afa9c0e3154b3c16554428309624169f66606bfb2814e8bac1c93825780cf68607f3e7cffe7bf9be737", - "0xb7edb0c7637a5beb2332f2ae242ba4732837f9da0a83f00f9e9a77cf35516e6236eb013133ddc2f958ea09218fe260d3", - "0x9655fe4910bc1e0208afbcf0ff977a2e23faded393671218fba0d9927a70d76514a0c45d473a97ecb00cf9031b9d527c", - "0x8434bc8b4c5839d9e4404ff17865ded8dd76af56ef2a24ea194c579d41b40ed3450c4e7d52219807db93e8e6f001f8da", - "0xb6c6d844860353dab49818bed2c80536dbc932425fdaa29915405324a6368277cf94d5f4ab45ea074072fc593318edff", - "0xb2887e04047660aa5c83aad3fa29b79c5555dd4d0628832c84ba7bf1f8619df4c9591fcde122c174de16ca7e5a95d5e3", - "0x953ba5221360444b32911c8b24689078df3fbf58b53f3eec90923f53a22c0fc934db04dd9294e9ec724056076229cf42", - "0x926917529157063e4aade647990577394c34075d1cb682da1acf600639d53a350b33df6a569d5ebb753687374b86b227", - "0xb37894a918d6354dd28f850d723c1c5b839f2456e2a220f64ecadac88ae5c9e9cf9ab64b53aac7d77bf3c6dfa09632dc", - "0xb9d28148c2c15d50d1d13153071d1f6e83c7bb5cb5614adf3eb9edede6f707a36c0fa0eadb6a6135ead3c605dfb75bd1", - "0x9738d73ea0b9154ed38da9e6bd3a741be789ea882d909af93e58aa097edf0df534849f3b1ba03099a61ceb6a11f34c4d", - "0xafabbecbbf73705851382902ec5f1da88b84a06b3abfb4df8d33df6a60993867f853d0d9bd324d49a808503615c7858a", - "0xa9e395ddd855b12c87ba8fdb0ea93c5bd045e4f6f57611b27a2ee1b8129efe111e484abc27cb256ed9dcace58975d311", - "0xb501c2f3d8898934e45e456d36a8a5b0258aeea6ff7ac46f951f36da1ec01bd6d0914c4d83305eb517545f1f35e033cc", - "0x86f79688315241fe619b727b7f426dbd27bcc8f33aef043438c95c0751ada6f4cd0831b25ae3d53bcf61324d69ea01eb", - "0x83237e42fa773a4ccaa811489964f3fab100b9eea48c98bdef05fa119a61bde9efe7d0399369f87c775f4488120b4f2e", - "0xb89f437552cab77d0cd5f87aca52dd827fb6648c033351c00ab6d40ac0b1829b4fcdf8a7dad467d4408c691223987fbe", - "0x8e21061698cb1a233792976c2d8ab2eeb6e84925d59bb34434fff688be2b5b2973d737d9dda164bd407be852d48ef43f", - "0xb17a9e43aa4580f542e00c3212fbf974f1363f433c5502f034dfd5ed8c05ac88b901729d3b822bec391cca24cc9f5348", - "0xaac6d6cda3e207006c042a4d0823770632fc677e312255b4aff5ad1598dc1022cab871234ad3aa40b61dc033a5b0930b", - "0xb25e69f17b36a30dada96a39bc75c0d5b79d63e5088da62be9fcbddfd1230d11654890caa8206711d59836d6abbc3e03", - "0xaf59fe667dd9e7e4a9863c994fc4212de4714d01149a2072e97197f311be1f39e7ad3d472e446dcc439786bf21359ede", - "0x957952988f8c777516527b63e0c717fc637d89b0fd590bcb8c72d0e8a40901598930c5b2506ff7fea371c73a1b12a9be", - "0xa46becd9b541fc37d0857811062ca1c42c96181c7d285291aa48dc2f6d115fcff5f3dfdf4490d8c619da9b5ce7878440", - "0x87168fbd32c01a4e0be2b46fe58b74d6e6586e66bbb4a74ad94d5975ac09aa6fa48fd9d87f1919bd0d37b8ebe02c180c", - "0x895c4aa29de9601fc01298d54cfb62dd7b137e6f4f6c69b15dc3769778bfba5fc9cbd2fc57fd3fad78d6c5a3087f6576", - "0xb9cf19416228230319265557285f8da5b3ca503de586180f68cf055407d1588ecec2e13fc38817064425134f1c92b4d5", - "0x9302aaef005b22f7b41a0527b36d60801ff6e8aa26fe8be74685b5f3545f902012fcade71edca7aaa0560296dac5fca5", - "0xa0ccda9883027f6b29da1aaa359d8f2890ce1063492c875d34ff6bf2e7efea917e7369d0a2b35716e5afd68278e1a93a", - "0xa086ac36beeba9c0e5921f5a8afea87167f59670e72f98e788f72f4546af1e1b581b29fbdd9a83f24f44bd3ec14aee91", - "0x8be471bf799cab98edf179d0718c66bbc2507d3a4dac4b271c2799113ce65645082dc49b3a02a8c490e0ef69d7edbcb1", - "0x8a7f5b50a18baf9e9121e952b65979bda5f1c32e779117e21238fb9e7f49e15008d5c878581ac9660f6f79c73358934a", - "0xb3520a194d42b45cbab66388bee79aad895a7c2503b8d65e6483867036497d3e2e905d4d51f76871d0114ec13280d82f", - "0x8e6ca8342ec64f6dbe6523dc6d87c48065cd044ea45fa74b05fff548539fd2868eb6dd038d38d19c09d81d5a96364053", - "0xb126a0e8263a948ba8813bf5fb95d786ae7d1aa0069a63f3e847957822b5fe79a3a1afa0ce2318b9ba1025f229a92eb7", - "0x8e4461d6708cac53441a3d23ac4b5ff2b9a835b05008c26d7d9c0562a29403847cf760b7e9d0bcb24a6f498d2a8a9dd2", - "0xb280a761bab256dfe7a8d617863999e3b4255ddbdc11fe7fe5b3bb9633fc8f0cb4f28e594d3b5b0b649c8e7082c4666a", - "0xa3e3043bfd7461e38088ee6a165d2ca015de98350f1cb0efc8e39ed4fcdb12a717f0ede7fbf9dadb90496c47652cc0ce", - "0xa4c1f5b1b88ae3c397d171e64395afe0cd13c717677775a01dd0461d44a04ee30ec3da58a54c89a3ca77b19b5e51062c", - "0xa268638e0655b6d5a037061808619b9ae276bb883999d60c33a9f7f872c46d83d795d1f302b4820030c57604fa3686e7", - "0xac20176111c5c6db065668987227658c00a1572ce21fe15f25e62d816b56472c5d847dd9c781fb293c6d49cc33b1f98f", - "0xacc0e22d9b6b45c968c22fd16b4ece85e82a1b0ab72369bdd467857fee1a12b9635f5b339a9236cbd1acc791811d0e29", - "0xb56066e522bee1f31480ff8450f4d469ace8eb32730c55b7c9e8fa160070bdec618454e665b8cbc5483bc30b6cebbfb9", - "0x8c1772bdfacff85f174d35c36f2d2182ae7897ad5e06097511968bbb136b626c0c7e462b08a21aca70f8e456b0204bf8", - "0xb4de3cf4a064bf589be92513b8727df58f2da4cd891580ef79635ac8c195f15a6199327bb41864e2f614c8589b24f67e", - "0x8f3c534125613f2d17bf3e5b667c203cb3eab0dbca0638e222fe552fddf24783965aa111de844e8c3595304bfc41c33b", - "0x8e445b2711987fe0bf260521cb21a5b71db41f19396822059912743bf6ca146100c755c8b6e0e74f1bf2e34c03b19db9", - "0x87ff9adf319adb78c9393003b5bdda08421f95551d81b37520b413fe439e42acf82d47fa3b61476b53166bf4f8544f0e", - "0x83f3c00c55632e1937dcdc1857de4eccd072efa319b3953d737e1d37382b3cf8343d54a435588eb75aa05bf413b4caa0", - "0xb4d8ee1004bac0307030b8605a2e949ca2f8d237e9c1dcf1553bd1eb9b4156e2deb8c79331e84d2936ec5f1224b8b655", - "0x93b2812b6377622e67bf9a624898227b56ebe3c7a1d917487fc9e4941f735f83679f7ac137065eb4098ad1a4cfbc3892", - "0x81943d9eab6dcea8a120dde5356a0a665b1466709ebb18d1cbfa5f213a31819cb3cf2634e6d293b5b13caa158a9bb30b", - "0xa9042aae02efd4535681119e67a60211fc46851319eb389b42ebadcab1229c94199091fb1652beba3434f7b98c90785f", - "0x91db52b27fd9b1715df202106b373c4e63ce8ec7db8c818c9016ace5b08ef5f8c27e67f093395937ba4ce2f16edf9aef", - "0x83cb9b7b94bd6ead3ff2a7d40394f54612c9cb80c4e0adadffea39e301d1052305eb1fe0f7467268b5aba3b423a87246", - "0x8720fd6712a99d92dd3fdaae922743ab53fad50d183e119a59dae47cdac6fbea6064c732d02cb341eaea10723db048fa", - "0x8d40022c1254462a2ac2380a85381c370b1221e5a202d95c75bccba6d1e52972dd5585a1294a1e487bf6ae6651867167", - "0xb7bc06e08d8c72daba143627582f4b4f34cc2234b5cb5cd83536f2ef2e058631a3920468ea4d550aea01cad221d6a8a6", - "0xa6e1a6f70fba42d3b9ce5f04ffdcfca46fc94041840c0066a204030cf75ea9f9856113fea3a9f69ea0037d9a68e3a9d4", - "0x8b064c350083fce9a52da2e2e17bf44c4c9643d2d83667cbd9ad650bbeba55e2c408e746ccf693e56d08826e8a6d57fc", - "0x8d304a5405a0c0696917fcddc6795dd654567ca427f007d9b16be5de98febbf8692374e93f40822f63cf6f143c4d9499", - "0xb968db239efec353a44f20a7cf4c0d0fca4c4c2dc21e6cbb5d669e4fe624356a8341e1eec0955b70afb893f55e9a9e32", - "0x98971f745ce4ce5f1f398b1cd25d1697ada0cc7b329cee11d34b2d171e384b07aeb06ac7896c8283664a06d6dd82ec6b", - "0x881f5a20a80f728354fad9d0a32a79ffe0ba9bed644ed9d6a2d85444cda9821018159a3fa3d3d6b4fadbf6ea97e6aff6", - "0xb7c76cbb82919ec08cf0bd7430b868a74cb4021e43b5e291caa0495ca579798fab1b64855e2d301f3461dd4d153adeb6", - "0xb44c8c69b3df9b4e933fe6550982a6f76e18046e050229bd2456337e02efb75efa0dfe1b297ed9f5d7fa37fec69c8374", - "0xa5bd7781820ba857aee07e38406538b07ab5180317689a58676f77514747672dd525ea64512a0e4958896f8df85e9d4d", - "0xa8443d1dc91b4faa20a2626505b5b4ad49cc5c1fd7a240a0e65d12f52d31df1585ba52c21e604dcec65ec00b81ae21fe", - "0xa157ae42fc6302c54bcdd774e8b8bafc4f5d221717f7bf49668c620e47051b930dce262d55668e546272dd07ca7c8d3f", - "0x8732c10448b63e907ff95f53cd746f970c946fd84fcbfe4cf9ede63afbbfc66b293bbc7c470d691bbd149bb3c78bb351", - "0xa82192f4fd9a0c33489a0486b79d0f6c797c7eccb45f91f7f1e8e1dd1924ca9944b983951025b99ab5861d31841451fe", - "0x839efc6d199ddd43f34f6729b6b63f9ee05f18859bf8fd3f181fa71f4399a48bff7dde89b36e9dc1c572f1b9b6127cca", - "0x992ef084abe57adfd5eb65f880b411d5f4ed34c1aeb0d2cfac84fff4f92a9a855c521a965ba81b5eef2268e9a9e73048", - "0xa2518ab712fa652e6e0bd0840307ef3831094e9a18723fb8ec052adacbb87f488d33778c6ec3fd845003af62e75125d1", - "0xb630ac3c9e71b85dd9e9f2984bb5b762e8491d8edb99cad82c541faf5a22dd96f0fddb49d9a837b1955dea2d91284f28", - "0x8d886d1b7f818391b473deba4a9a01acce1fe2abe9152955e17ba39adc55400590c61582c4fef37a286e2151566576ed", - "0x884f100dc437639247f85e5d638fcc7583d21bf37a66ce11e05bfc12f5dbe78685b0e51b4594e10549c92bb980512e12", - "0x806d7bac2d24cfff6090ba9513698292d411cdea02976daa3c91c352b09f5a80a092cfa31304dcfcd9356eaf5164c81b", - "0x934ed65f8579ee458b9959295f69e4c7333775eb77084db69ad7096f07ad50ad88f65e31818b1942380f5b89e8d12f1b", - "0xaaf50ca5df249f0a7caf493334b6dca1700f34bd0c33fe8844fadd4afedbb87a09673426741ac7cbbb3bf4ab73f2d0f3", - "0xb2868642cfa0a4a8a2553691c2bef41dab9dff87a94d100eaa41645614ab4d0e839ec2f465cc998c50cd203f0c65df22", - "0xa326513112e0b46600d52be9aa04d8e47fe84e57b3b7263e2f3cf1a2c0e73269acb9636a99eb84417f3ae374c56e99b0", - "0x97b93efc047896ddf381e8a3003b9e1229c438cc93a6dbef174bb74be30fac47c2d7e7dc250830459bed61d950e9c924", - "0xb45e4f0a9806e44db75dbb80edc369be45f6e305352293bcae086f2193e3f55e6a75068de08d751151fdf9ebc6094fa1", - "0x87f2161c130e57e8b4bb15616e63fa1f20a1b44d3e1683967a285f0d4f0b810f9202e75af2efa9fc472687c007a163f7", - "0x8f6400a45666142752580a2dce55ef974f59235a209d32d2036c229c33a6189d51435b7ea184db36f765b0db574a9c52", - "0xa0ee079462805f91b2200417da4900227acde0d48c98e92c8011a05b01c9db78fc5c0157d15cb084b947a68588f146f4", - "0xab0612d9bb228b30366b48e8d6ae11026230695f6f0607c7fa7a6e427e520121ff0edea55d1f0880a7478c4a8060872d", - "0xad65dfde48f914de69f255bb58fa095a75afe9624fc8b7b586d23eb6cf34a4905e61186bc978e71ccb2b26b0381778a6", - "0x8c8a4847d138d221c0b6d3194879fd462fb42ed5bd99f34ebe5f5b1e1d7902903ec55e4b52c90217b8b6e65379f005a4", - "0xa41dca4449584353337aef1496b70e751502aeed9d51202de6d9723e155ca13be2d0db059748704653685a98eaa72a07", - "0xae40e5450fd994d1be245a7cd176a98dd26332b78da080159295f38802a7e7c9c17cc95da78d56558d84948cf48242cd", - "0x863878fda80ad64244b7493e3578908d4a804887ad1ad2c26f84404dcad69ea2851846ad2c6f2080e1ed64fe93bbec31", - "0xb262fb990535f162dc2b039057a1d744409a3f41dd4b70f93ff29ba41c264c11cb78a3579aad82f3fa2163b33a8ce0e1", - "0xa7f6eb552b9a1bb7c9cb50bc93d0dda4c7ecf2d4805535f10de0b6f2b3316688c5e19199d5c9ec2968e2d9e2bd0c6205", - "0xa50aa5869412dc7081c8d827299237910ecec3154587692548da73e71fa398ff035656972777950ba84e472f267ba475", - "0x924c3af750afc5dfad99d5f3ed3d6bdd359492cff81abcb6505696bb4c2b4664926cb1078a55851809f630e199955eb3", - "0xa1acffa31323ce6b9c2135fb9b5705664de8949f8235b4889803fbd1b27eb80eb3f6a81e5b7cc44e3a67b288b747cf2f", - "0x8dec9fd48db028c33c03d4d96c5eecea2b27201f2b33d22e08529e1ae06da89449fe260703ac7bb6d794be4c0c6ea432", - "0xaa6642922ccf912d60d678612fffe22ef4f77368a3c53a206c072ed07c024aa9dcde2df068c9821b4c12e5606cfe9be2", - "0xa16ddf02609038fcb9655031b1cb94afe30b801739e02a5743c6cd2f79b04b2524c2085ca32ec3a39df53de0280f555d", - "0xb067d48589e9d3428c6d6129e104c681e4af376a351f502840bbea6c3e11fcbfdf54dadf6f1729621720a75ff89786c3", - "0xb14a24079de311c729750bb4dd318590df1cd7ffc544a0a4b79432c9a2903d36a0d50ecd452b923730ade6d76a75c02c", - "0x97437bac649f70464ace93e9bec49659a7f01651bba762c4e626b5b6aa5746a3f0a8c55b555b1d0dc356d1e81f84c503", - "0xa6f4cb2ffc83564b1170e7a9a34460a58a4d6129bd514ff23371a9e38b7da6a214ac47f23181df104c1619c57dff8fe2", - "0x896d0f31dfc440cc6c8fde8831a2181f7257ffb73e1057fd39f1b7583ea35edf942ad67502cd895a1ad6091991eabc5e", - "0x9838007f920559af0de9c07e348939dfd9afe661b3c42053b4d9f11d79768cba268a2ee83bb07a655f8c970c0ee6844b", - "0xb41b8a47e3a19cadec18bff250068e1b543434ce94a414750852709cd603fc2e57cd9e840609890c8ff69217ea1f7593", - "0xa0fb4396646c0a2272059b5aeb95b513e84265b89e58c87d6103229f489e2e900f4414133ed2458ddf9528461cfa8342", - "0xae026cfa49babc1006a3e8905d6f237a56a3db9ddf7559b0e4de8d47d08c3f172bde117cdf28dfdfd7627bd47d6a3c85", - "0xa6a3f3e7006bc67290c0c40c1680bf9367982eb8aaf17ecb484a58c8e9c2a7c24932e2caa9aacc9b4fbf4c0abd087a46", - "0x9093e05bd814177a01a3b8d7b733db66294e1c688c56def6e1827c0f2d9a97cf202721641bf81fb837f8581ae68cb5ce", - "0x87feef4de24942044f47d193d4efc44e39a8c0f4042fba582f2491a063e3a4640cb81f69579b6f353b9208884a4f7ce6", - "0x975f9b94e78aac55bd4755f475e171e04f6fbddb6fd3d20a89a64a6346754a3ff64ecff8c04b612a1250e1d8d8a9e048", - "0x87cde4d0164922d654cf2dc08df009e923c62f1a2e3b905dfde30f958e9e4dd6070d9f889712acd6c658804f48f3edb1", - "0xae8e22e158dda90a185eec92602831b5d826e5a19aab8c6400dba38b024c7d31c4cf265eb7b206dd45834f020b3f53cd", - "0xa4475807adc28aa086e977b65bbd7c8512119318c89d2619ea03a6739a72c3fb90c9622451896c7113ad4d12a3004de6", - "0x97f1ae1e0d258a94532c7b73fa8ebdbbd53349a4d2d0a217fe56dfdd084dd879960bc6ff45ebb61b5dbf2054642800a4", - "0xb3c832bd3691332a658b0caaa7717db13f5b5df2b5776b38131ac334b5fd80d0b90b6993701e5d74d2b7f6b2fd1f6b9d", - "0xa4b6af590187eb1b2cb5ae2b8cffa45c5e76abdb37cec56fc9b07a457730f5af0706d9ce0a17da792bbece5056d05670", - "0x97b99a73a0e3145bf91f9dd611a67f894d608c954e9b8f5a4c77e07574064b3db47353eba8038062cebaad06a2500bab", - "0x8e5ca5a675de6e6d3916bd9ce5898bb379372afe3f310e70ff031bc8cc8fabfb7f3bfb784f409bb7eb06fdb4511ee477", - "0xaabbbee4da1f16b5bbe001c19debe04745932d36dfbbf023fbf1010a2b1d54eb92fa5e266ac1e9337e26e2ddba752f40", - "0xb13447c77496825f48e35c14f9b501c5056e6d5519f397a2580cea9a383a56a96994d88926aa681142fe2f1589c03185", - "0xb89c55db39ff0e73dde7435b61e8a4d3e10f51dd8096cbc7f678661962e6de3d16f2f17a0e729cc699234cb847f55378", - "0x82c36b7de53698a1bafbb311fefc6007fcefa47a806ebe33a4e7e0fc1c7b6b92a40a1860702cf9295a16c6b1433e3323", - "0x8daeec8c88543d09c494a15cc9a83c0b918d544311fd2a7d09e06cf39cdebfa0cfc0e8fc0e3b5954960b92332f98697c", - "0xb18e55a1a7ae16be3a453d2bfa7659a7ec2d283dd46bdc82decef6d3751eeafc4f86f2416a22955c7e750c0582d4f3eb", - "0xb50c743462e2915bf773848669e50a3bcdb5a9ac5f664e97eaccf568c7d64a6493d321be0225de16142ce82ce1e24f66", - "0xaf69c9643805fb860434424b1608aababc593aaebc6a75fc017f7f62bb2b1da932b0b9bd5e6dcbba328422dafc06efd8", - "0xb5947db4f809fd0d27af838b82eef8ab4fe78687a23ebc61c09c67eb7e8d0e6a310ecb907fd257859d5a2759a07c21cc", - "0x92c7960e163ca5bdf9196c7215102f8e9d88efc718843321c6e2a6170137b8ecec4ea5d5a5ce4c28012b6cdbd777dd01", - "0xb63f9509ed5e798add4db43b562e8f57df50d5844af6e5c7acf6c3b71637c0a2d2433f4a0627b944f0af584892208bb8", - "0x8ef28304a9bfe5220af6a9a6a942d2589606f5dc970d708ef18bc7ed08e433161020d36fb327c525398cd8ecb57002f9", - "0xb722e0410f896c4462d630a84a5a14e94289fc38ed6d513ca88a09005935cec334c480028efa1943c7a5e202ae8c8379", - "0xb56b6672b488e64d4dde43571f9ceaa7e61e336b0fd55bb769a57cd894a6300e724e5f88bad39a68bc307eb7406cb832", - "0x8bf493da411fd41502b61a47827731193652e6ce3810709e70869d9aae49e4b17a40437a7a0dcc0547dbac21f355c0da", - "0x9613b60a144c01f6a0e7d46ddde07402e2133a1fe005c049a56415ff90401765040b2fc55971d24b94c5fd69fec58941", - "0x85e2f02b291563d8eea3768cf6a4602c0ca36568ffcf3d93795d642044196ca6b0b28991ea5898e7974ee02831a0ec70", - "0xb08ef66703dd9ac46e0208487566fbf8d8654d08c00f03e46f112c204782ccc02a880a3f9dffd849088693cee33b7b6d", - "0xa0b19eeda6c71b0e83b1f95dffef4d370318bdea6ea31d0845695e6b48d5c428c3dbba1a0ded80964992c4a0695f12ee", - "0xb052642e5772d2ef6f49dd35c5e765c5f305006b2add3b4bee5909ca572161edf0e9c2bc3bc3bc7f56fd596360ef2201", - "0x8261af164c768fec80d63fca6cd07d1c0449e9ca665fe60c29babdbd8a2b20cf1f556a4b24cd7341712468a731c21b32", - "0x8a17016a1b2fc0fa0d9e3610ea80548fcf514e0a35e327f6b5f8069b425c0f0829af7e206013eab552be92b241be5ac5", - "0x8eea25c680172696f5600271761d27ef4c8cec9ab22f01f72b2c7c313a142fafaec39e6920b96fcace858883e02eff7a", - "0xb8e0c590106e125c5bca7e7a071cc408b93629da0d8d6381f1b73fbdf17024a0cf13f679f5203a99bbbcb664b4a94e88", - "0xb9943b29395258b7afdf1781cfaf131297a4f325540755df73401b2ec4a549f962952e9907413c39a95585c4aff38157", - "0x8286eab4a04f8113fb3f738a9bc9c2deaf3a22bf247151515568703da4efe6450ab3970f5c74e978a2db7e8d795331b7", - "0xa10cf383c8a7e3f0a0a5556b57532170ff46dabdcbb6a31c4617271634b99540aa575786c636d3809207cbf1d2f364d3", - "0xa5af7eb998140d01ba24baa0e8c71625aee6bd37db4c5ff607518f907892219ba8c9a03c326b273bfd7068232809b73c", - "0xaed5f461e38fccc8b3936f1328a9747efcbceb66312f6d6eddce57c59570852767159f1a7d9998f63342515fef4ba9bf", - "0xaec3e94b029aa692bfe2b8dbc6c3b0d132b504242e5ebe0cad79c065085e2fc05550e5cdaa2353892a40ff1a062dd9eb", - "0x87c23703960129396018d0347f5dd034abdbd57232b74195b6a29af34b6197b3cd63c60ac774d525add96ae54d5c0fb4", - "0x97964a7768216e1c84dece71ce9202cc64b6d483650aa6f6d67215f655f66cda14df0a0f251db55832c77bfd9b6316e2", - "0x8167aaf24c8a023d0aea16b8c24d993618b9d0c63619e11a28feab8f14952bafcb0918ed322cbc0ae1b2e1786071819b", - "0xb58318bd62852ffb712fc58f368c21b641dde7b3fa7d7269974c7a7b5b3e1641569fc7b5f32ca49de22f4f993506d92d", - "0xb172e7911d5cd3f53af388af847b928947c711185aebd3328f8e6ed1106c161ae0c1b67d3d9eb237e9e66eb0672edec0", - "0xa6834cf69b2c4433cf6e779bfbb736b12e73e71e149c38101d13dbacf6c5048db53994a6a039381df40bbd67de40fcd0", - "0x882604aa3bb19fffd6db744b5cf4a2431b157dac06d0617e0703684a118ca90b2d22a7758a1de7732a7144e68b11b7f7", - "0xaddc128ba52bf7553b9ba49eff42004d388a02c6b6e9809abe1c0d88f467e5ff6cb0c82a8fd901b80dfc9a001f7b9997", - "0xabf19604a3f0cffefa7a9ced81627f6aacb8d7267b52b825f25d813d9afa24af6d70da21450ed93eaff8b4d2a9b905a9", - "0xa3c67e7bf02dbca183d86924611a7149556ee17cb3469793624da496b6c25617a9071925dd02aab9cb028739cb79043d", - "0xb1cea4284a3ac4d5b1c6f0947c6ec8365b3281ed15495bf328a907a9a02cdd186e7cb1ef080385b3399df786855985a9", - "0xa6edb126314559e6129caf1111dc3c82ff914efce658b11f2c9b48081be1cf3f46bde482469d493379025a158d95ab1b", - "0x9843fd7dd424da1acc6f92f87fac364a8b0d4097d74b6b451386384966c85145d43fc6ecedf04271b0f963ac731fd93f", - "0x83852bedca03a97a2e63053cb102387866cbefe6707ebb6dae2d32a59c343079f1a863f299fd64d0ecbe024d0a1247d5", - "0xa570e645a0679ebc6f0ca03cc8f7367b03c3886f3d9c787992de7f3e93360a170d3ac9ae7720999c727a887b1dc762bb", - "0xad644c40555238f28844eed632c8972b63d2602098031d53b5599d1a874903e0d0c428e0ab12a209ea3fb31225578f1c", - "0xb64e9f92a14812ed31075f9fdd3324659a036ef2f293ef9ca6f6feb87d0c138e1ba74bc36a910afd22ff9b3c8ec7cfa5", - "0x8f2d75a86d517dafac09b65596f4b89c4a9c0a7003632407504153fa297c9e3228e236948a5d5224b8df49a087c8e0e3", - "0xb02d6ab9292ae336c8a74115f33765af2c9f62c331d70c087cf4c2979792bb3c2666f6699c017f8d4c6b378fd4bda86a", - "0xa923d660d2e55228b8bc74f87d966069bd77c34a776fa96f37b48539c85634482e514e2cb76cb8eb20efd85eb9c83fae", - "0x81d7ffb53090a6d512055ecfd582ca92805525a05654e39bb12653a6a8902a16e651ba7b687b36b8bea7186632c7e9e3", - "0x83e9b33e29b57ae53d9f72bd4622ff388252333b4fa32ad360a5b00f3ffc8813b9cb8a1361454d3bb7156c01b94b6a08", - "0xad7d6bffe4d67eb53b58daa3fc8a5a60790c54fa42226ae12847e94c6de3b4365b3be39855a4f6a5f12e4803cdaed96b", - "0xa7709fed85abbee5a2fa49c5238582ec565da08c132d4912821491985bf83b681eb4823634bfe826abd63a6c41a64ea7", - "0xb8fb6ed55741132a1053b6ca77bdf892e96b048488373ba4aa2f2225fae6d578724124eb6975e7518e2bf3d25d215763", - "0x85e0c53089529a09b5bce50f5760af6aeafef9395388aa4b6144ca59953169101783347ee46264ec0163713a25fe7c63", - "0x8f9e47a9c37b678e56c92b38d5b4dab05defc6b9c35b05e28431d54b1d69ac31878c82c1357d016f3e57ca07d82d9c16", - "0xa81f508136ee6ec9122c48584df51637f768ccfe8a0b812af02b122a0fafa9abcc24778bf54143abb79eccebbdde2aac", - "0x931a96d2257a4714d1ef20ac0704438481632647b993467e806b1acc4a381cc5a9dec257e63239ba285deb79f92122dd", - "0x99fb0ff747bcd44b512bf8a963b3183ce3f0e825a7b92ddd179253e65942a79494a515c0c0bc9345db136b774b0a76b0", - "0xa9dbb940b5f8ab92f2d85fc5999e982e3d990fe9df247cfc6f3a3f8934fb7b70e2d0362ba3a71edc5d0b039db2a5f705", - "0x99011a1e2670b1b142ec68b276ff6b38c1687eed310a79e2b902065bc798618c0cdee7b2009ad49623ed7ae0aa2b5219", - "0x9361e9f3aa859c07924c49f3d6e9b5d39a3df2fc1c10769202ec812955d7d3814c9e6982f4df3a8f3bdbfb4550cd1819", - "0xa8aa23f177ddc1e7a7856da3eac559791d8b3f188c0b3ae7021bcb35dfb72b0f043c3699597a9188200408bc3daf6ab7", - "0xa5a502ff673f6dab7ae4591a7b550c04ede22a45a960c6b5499644f721c62b12b9e08248e7f8b8a59a740b058d2a67e6", - "0xad374f80f0b52bc5a9491f79a547ce5e4a3ce4468a35d7dbca8a64083af35ab38eff9aa774ccba2e2e1e006e45cb0b85", - "0xab6851827125e3f869e2b7671a80e2dff3d2d01ce5bfbeb36cbaf30c3d974a2d36fd9f7c3d331bb96d24b33dbd21f307", - "0x96658f6a2d225a82f7ccee7f7a7e476967e31a0cd6c62859d3b13ee89702bb821547f70ffd31cb46a6a0d26a93158883", - "0x878f59ff2590bc3d44fdc674717589800748b78d543d3c0dbb50125b1d6011d6a083f10ab396e36b79f2d89b7cf51cdd", - "0xb8bdfb97829c5d973a15172bfe4cb39620af148d496900969bd7ca35de9b0e98eec87af4e20bef1022e5fb6c73952aa0", - "0xa292a78b452743998aee099f5a0b075e88762222da7a10398761030ffcc01128138d0f32fccf3296fcbea4f07b398b5f", - "0x85da44fdd7b852a766f66ba8804ed53e1fc54d282f9a6410106c45626df5a4380cbea2b76677fdfde32446a4d313742a", - "0x84bebf036073d121e11abc6180cba440465c6eaadc9a0c0853a5f1418f534d21cccf0cfc62533eaeae4653c7b4988046", - "0x923dec006a6af04ef675f5351afffffd2c62a17a98f4144221927c69f4553dd105e4fcc2227b5f493653d758cd7d0352", - "0xa51eda64f4a4410a1cfa080d1f8598e23b59856436eb20a241e11106989fbbb48f14c2251f608cbf9531c7c442b30bf7", - "0xac6d26ae7bab22d49b7fba7fe4b8cf6d70617977008c8290787c9da1a4759c17c5e441efb3dee706d5d64d9d2ace1de5", - "0xab5138b94d23c1bf920b2fb54039e8a3c41960a0fe6173261a5503da11ff7b3afdb43204f84a99e99888618a017aac1b", - "0x8c85647a91e652190eee4e98a1eec13a09a33f6532926427bf09e038f487e483f7930fbe6ff7a2126ccde989690dc668", - "0xa6026ab87cffec3e47b4c9673957d670cb48c9b968d2ad0e3d624d81c1082dcebbc70d0815cbd0325e0a900d703a6909", - "0xac4f6ff6baf8374a3c62bdd5a8d207d184ff993f6055bcee1e6dcc54173d756c37c24570d6462395add6f7871d60b1ae", - "0xa0dd6bc93930d0016557588f2598b7462ca48cbed637c8190be0fb4811e4576217ca9fc3c669c2a4db82e3f8bb24acaf", - "0xa67c1d79f7e7193a23e42928a5cc6a6e8e0c48b6b286607dbcfaaa0f10a7ba29ad62d1d57ca28c486794f0908bece29c", - "0x822f411bab4882202ed24e67c84e0c9a8da5b3389804ed9dfba0f672e3e1457ea76cad0cb935dbb3d7a39500fba5fe12", - "0x8a1198572323689300a9d7db2e2bcb7c519392e5d3d33e83cd64bcf1517a7dde52318a98203727b186597702c0eed258", - "0x8a84141b02f1d037c68d92567d71cda3a0b805d1e200b1d3fff3caf9902457cbfbaac33157b87ab0bb9e4fe3bac882c3", - "0x8070ace16d9eef8658fdcf21bed0d6938f948f31ca9d40b8bdb97fc20432cd2a7ef78eeefc991a87eae7f8c81adf9b19", - "0x9522e7123b733ce9ca58ab364509f308a1ead0915421ccede48071a983fd102e81e1634ffa07a9e03766f167f5c7cb5e", - "0x82cbdf97a755e952304f5a933fd4d74a3038009f242dac149595439130a815e9cc0065597c0b362130183a4c4a444173", - "0x81e904f9b65cd7049c75f64c7261e0cbb0cc15961ffcac063d09399d0d2b0553b19e7c233aca0f209f90cf50c7f5e0b2", - "0x8f5f6ea87429542ea04ad3eb5fc7eeb28fcf69c01c1a5d29b0de219524f6fba90c26069bfc9092379fe18cb46274393a", - "0xa4e5815481eb33b7990d2de1a3a591c1ab545b64fbeb4cff8c71b6bcb04d28940097899062bf43b27c5a8f899616703e", - "0xa7afe6066681e312882b3b181f462a1af2139d9bd2aefffae7976f3fc357bfd8fbd6ddd4e5e321412f107736e77f0cb6", - "0xb8ab102d7ff8d46b055095d8fb0ec2f658c9e18eee523c295b148b37f8342c120798113553b8bfebf2a11f27bc704cc4", - "0x862175ecc7e0e294c304a0352cd0f1d11b2603d326bb0e54e02b6cc8d04d01ac31c8864e9395aa1f3b90b76bc4397f5b", - "0xa4ea51ef3d82509f0e4eb6af705fa7530921cf9512cb5bf030571e69f4504a299297219a0a7e40db1b45165a5ea3a3f2", - "0xa6fb8b573e2ba6db0e8aba53a489e99bebe533c0fcd947dbfa732e00594f03f4e8609ccc44d8215986d38bc3d4e55d48", - "0x93fe8e0bdd5d66df2bd18be5963e864bddfcdcd3298590e7c3b11d99a070a4948fecef46453f19960bbfeada37979613", - "0xacbc45bc55c7080b45c69a3db80cbfc0267006dcf49c47330975aeff2a8ac07b206e1b1c3a515e50866ff510739b92c0", - "0x94a577df0983e4ee3d6b80c73d7e8e3bb78bd8390ff56fea350e51bdf5e0176b8494e7e81dc7b1d842ada961089cd1eb", - "0x81eb1fbe9e9c89f5818d0ef98e694da86e88625f0a37cfe88e6de69f90e58297e67f1d5c9d71263b523b63e42685975a", - "0xa81a2391ea4d0f65ab4325196559d67e2648b3f1e464509430b40d9948d5b0fc01c337d9b51048a93c4d62e6b73e1e8c", - "0x849a026e55ed77135138836c9df67883763e4602357d8566da2ee2505d135d44061de0c070cf333ffb9ac2e55a0894b2", - "0x8e272cc5734374c003c7b2e6ba833eb99b6be608da04e576df471c24705b6b2a790549c53e7971df2d9f0b88d0f570c6", - "0xb0f9e6d985064aa311d4a147f41007fdc576b7b9194aa4b8712bf59a76a71543fec2ee3db21bd3d30d4096f25babc543", - "0x96331837f0d74e2ba6cb1bfaddf4b1fb359bf46cb6c3c664938eb030e56bc85a5ce17bcd60b7fa7b72cb0ba1f3af0b5b", - "0xa0eaab6de4b5a551896e7d26153fb5df4bc22a37833ec864090b57b5115b0f8f1279e855cea456bb844802b294b0dbb7", - "0x955e87d3b966edff34f28137f871881c59bbbc6d69986b739867807680ca22b5e3272ced1d25854ed9700d87f133848b", - "0x9270a6db157a8ce78a1af6bfe2b5bbe7b621d56cc8f9940a03b5a5f600848b87b05d83595b2a3a315d4b7f4687c46085", - "0x9043328f2dd4dd85e14c91237a3478dc1eed239164924b53d1de9364d76c81315afa9639b58eedb1ab2122e2ae2e7cfb", - "0x857fe9f7d00b03bce367de7f789d755911a5f85d78044f18311ecd9b955e821b4a50228347260ba1205aef61219001fe", - "0xa0f878050367a7103fddf380908da66058ef4430eae1758335c46c24f5c22fefb0753991b3a47dba5c7eaafa4d598178", - "0xab5959296b1af14d2878816c7da9926484cbf8896b7eeac8a99dc255013319a67a0209025e1f8266ffd8cd7d960bdc87", - "0xabe53abc57ea46419dbe0ac1f39eee39a4feae265e58b50928eb0695e25938a16a8b00e65c1313837dc3367297e2c258", - "0x93e3e42ed6ba9c45d4e7a4bf21c1e469efafded1f3be9931a683dbb780db2494742fd76c9ad29fd7d12da2b778ede543", - "0xab3e64035c488a6e63496ddb2de9648cc63a670c5d4b610c187d8ceb144fcc50b016046f50b10e93b82937ebe932ac08", - "0xa3a8fa898f489b313d31838ad9f0c7ffe62ef7155de5da9ffe6ecd49a984fac3c6763e8cb64e675e1c4a0e45e7daf078", - "0x8356b26aa7c9fc9734b511480dad07b164cfec1324ad98eec9839a7943f2889d37c188d465515ad4e47c23df641c18c3", - "0x83c4476f829e0fe91da2353d5b58091e9335157941e89ca60ccab1d7fdd014bcf21bd55249805780ddc655c5c8c2536e", - "0x814f6e66505b2cb36de92c0de8004d6d094476522e66b9537787beff8f71a1381ed9f2b7d86778979ad016a7dae6cbac", - "0xb1cd7f6da4a625b82bea475442f65d1caa881b0f7ce0d37d4b12134d3f1beb3ad4c2f25f352811e618c446185486adb6", - "0xa71b918481b9bda667de0533292d81396853a3b7e2504edd63904400511f1a29891564d0091409f1de61276d2aebc12a", - "0xa2cd3d4104ec5fb6d75f5f34762d5e7d2ff0b261bea5f40a00deec08fbdab730721231a214e4df9b47685d5bacfe37c6", - "0x807f2d9de1399093bf284814bc4093f448f56a9bde0169407cdc0e7d2a34ff45052aef18bcb92f0ac7a0a5e54bd843e9", - "0xabeb03010c3ac38587be2547890a8476dd166ac7b2a92c50d442f031eaf273ad97114c38e57fe76d662c3e615334ac0b", - "0xb90a688da4b0bf65ff01bcf8699f0cba995b3397fcbe472e876ae1091a294463e4b94350ae8bd5c63b8441089e0884fd", - "0xad88db4afb177931788fb08eff187e15ad739edc7e1a14c8b777b6bf668aec69ca4749773f94250c1fdda3b59f705f7c", - "0x9886809f9ae952797c6527c6db297d2aa3d5209b360efe6a19970575a9f78aee3c21daadb8e8dfcbeeea5290238d16d9", - "0x930f486e95d7c053c9742e6f0b31e6d4fa2187e41229e46a074b469aafb87880aa8e972719b363049fc9fe2db8f03ce2", - "0x8d229af4fa08bd8aeb5fd9acfee47571eb03fcd2f19073b94cd27e2a6735029d31f123249d557f8d20c32ac881eae3aa", - "0x84576ed5aebe3a9c3449243a25247628993fdb2cc327072418ea2f1d11342756e56e9a82449bc3ea6e8eaecabc62e9b5", - "0xb775cb86cbec9c46a4a93d426379c62872c85dd08bccda39b21cb471222b85b93afd34a53337b6d258f4891c6458e502", - "0x8be1540e6b535b416b8d21e3ecf67dfb27a10fd4010f9f19426422edaeb0a4961d43ff3afd1db0994170056ce4d77aec", - "0xb9c7438e90a5501a4d05bbb8ab68d6db7e9baa8927231a5c58715ee2ab76ca1da0e94910a076958654869148d813d0e9", - "0xaa9bed1c4d2e7cbc2e1a884c8998773f7cc6fa9d6493c8abe8b425114a48305c3a43a1abda2292177ffd39ef02db4163", - "0x897b395356047cd86f576cfc050f7e4546ecd4df30b2c31ed8945797b81dd4ed9b9106cfbe6d7dd8bf91882e3cf1f42e", - "0x949a37e1037d9464b2ccd3ad23eda7089570d6b5ffa18025d2548a9df8829de8d62960f04a603f21eecbca5893d45284", - "0xb8a0642f68ff169ffbcd8cd684fae75d96f9bd76949472775bf155edc55a3d9c3e6f0299ee73a6cfb96289361fdbe9ee", - "0xa1273141510fcddd89b9b92c19a268dadd1528ad85744b8174684c9b56668e6b35dabb05f2b4cc6ef5611eaea6052f27", - "0x97c7415c82de83ecc066eb922268b8205ad7266c65b2b8f7e0aadac87f076c738cea72f9b0f069b8d28cf9d5438b8287", - "0xb32c7005380c848f71092a74297555dc6022369fc2a4f285e586ac8f53f6bd354fbe4b1f8a4cfb406a101103bf87bb64", - "0x91b48eeba52f02d04f536d32112038f8ba70bb34284fbb39e0f7bae2e08b3f45ad32e2f55d1beae94b949c15652d06a1", - "0x99e24f5ea378cb816a4436af2ee7891ac78a2e37c72590be0abd619244a190fee51fc701b6c1c073611b412cb76332c9", - "0x9465d1e73a1a0a5f7b1cd85f4fa4f5dee008b622b14d228d5cd5baeec174451e7ae93c5de688393d37cc24ce15df4139", - "0xa6ac3986ee01debdacb5ddc1e2550cb4f039156df15c7d5752b79f333175b840bdca89c4959a523e58cf97bbd6b2039e", - "0xb7f7a5cc1b1b6145988170d619c170c130231abbe0b5143a9bccaaebeef9ceb1c16e26749bc9dc5650fe91f92fa1b79b", - "0x854cb04f1557457383a401d79a655adfd0a4b706ea2bbc6262949c8d657efcfdc9c7960cbe1a50b5eebb361c5e378f80", - "0x8dd199dccbdc85aeca9ddcb5a78dd741a452f7a0d3ceb6546d76624bad2fce0e7e6c47ee30d60bf773f18d98503e7f9c", - "0x889e1ca9f0582be9bf5f1aede6a7312b30ea9bed45ab02d87182a013430f16007ae477ee6a823ae86c7fef7da016a0ec", - "0x892a60e63edfb3e7a6cf2d0be184413d214401fc1e6c004ca2902c3f1423728bf759a136e6e715d26d5bb229c75cc20a", - "0xa2287cd092261b39d22dcb1fa19512590b244771bb69fb62eda72f12be37d48e408b3e37a47608f68d743834edee7f15", - "0xb3b6afb950bbec0ff631bdf18af433e68adc63d02cb479704f24329ca6b6edd9a3d1d606563dbdce6038b676b85130b9", - "0x847da90f37b294509de51ab6521fdff12d5a1ec3cccaf730aa744da7e54b85fd9c70618787e87c0ba9947ce6c81387fb", - "0xad872153c00bccac75bdb30d1ab7044d814f4f8655ff26421d48fea04fb21d4dc82c1900620a57d13adc45c1062a1817", - "0x90fa5ee98fd7ec719f2a8543bbd0ff45ac69296c2416fc8666d05de3deea1017079a68aba55540a19585925803c8335d", - "0x962ba6d029e9176d0e8c80a21f2413f7322f22a9e9a32c933697a8b0e995ce25bea5264736a75718b3d330e215a58a05", - "0xa446f9530db30c5e9c1b3844d635e5c2cd311cc4537ff277fe83dd1a0382bcfa73beb07aaa0cf5a97d24c67e688086a4", - "0x8766b2053f16c72db387abe18b43d7b357a542916c9b8d530ee264e921c999494d6eb1e491352ecdf53758640c7a246d", - "0x83f32f511f7b0233662acfc14f30df345af99d2d6c777ce0b4bcdc4dd110533f30b45071df17230aaec392cc482355e1", - "0x82e3521bc9519b36f0cc020225586b263e4feb57b533b38d8e89ccf8d03f301d94da90efb4902002732fbf3876697f38", - "0xb5d1ea69c97ceaa34a720bb67af3fcf0c24293df37a5f6d06268b1eabe441531606954ac2598a1513f64231af722b3a3", - "0x956842696b411e6221c5064e6f16739e731497e074326ef9517b095671f52a19e792d93fe1b99b5a99a5dc29782a5deb", - "0xb19b5658e55c279eb4b0c19a0807865858cbec1255acd621f6d60c7e9c50e5d3ee57da76b133580899a97c09f1dd8dac", - "0x89e6a8b916d3fcc8607790e5da7e391f6bc9eae44cc7665eb326a230b02bc4eb4ef66e608ccc6031048fc682529833d0", - "0xb1a210bc8070ed68b79debd0ec8f24ec5241457b2d79fd651e5d12ceb7920e0136c3e0260bc75c7ff23a470da90d8de9", - "0x85b1954278e2c69007ad3ab9be663ad23ae37c8e7fa9bc8bd64143184d51aea913a25b954471b8badc9e49078146f5ac", - "0x98bf63c7a4b200f3ce6bf99e98543925bc02659dc76dfedebe91ec5c8877d1271973a6e75dad1d56c54d5844617313e1", - "0xb7404b6e0f320889e2a0a9c3c8238b918b5eb37bcdab6925c9c8865e22192ba9be2b7d408e1ea921a71af3f4d46806d0", - "0xb73cbbebf1d89801aa838475be27c15b901f27d1052072d8317dcae630ab2af0986e56e755431f1c93f96cd249f2c564", - "0x95b2027302f7f536e009f8a63018da6c91ec2b2733c07f526cc34cbcfa2f895ccfd3cc70be89f4e92c63c7ddc2a93370", - "0x9201d9ff5d0b1222bfa2345394f88ddf4fe9282acf51bee9b18b96bb724fdf8e736d7101acc2795a34e72f9e0545c9a8", - "0xacbff7eb160f427d8de6f29feeddfa8994674e033a0ccdc8e8c73f9243968f1a6379da670a7340f422892d50c97113c7", - "0x97ae8d03352c3729e1623e680dd9664f303b3bcfb844ef80d21e9c773a247967d27b86c9326af29db5eefd0bd3d4fac8", - "0x8e53ae5c22f5bfa5fe4c414dad6a10b28a3e5b82a22e24a94e50ce3b2bf41af31e7ba017d2968811c179017b78741ef0", - "0xb5ac7dd150247eb63dfb7dd28f64b1bf14426dc3c95c941e8e92750c206c4c7f4ad1a6b89e777cfe26ecb680dbf0acb6", - "0x99ae2e4652ea1c1c695e7ea2022fd35bd72b1a0d145c0b050da1be48ad781a413dc20fbda1b0b538881d4421e7609286", - "0xb8abe1fb3a7443f19cd8b687a45e68364842fc8c23d5af5ec85da41d73afb6840ef4b160d022b2dad1a75456d809e80b", - "0x842619c3547e44db805127c462f5964551f296a270ed2b922e271f9dc1074fdf1c5e45bb31686cec55cb816d77853c01", - "0x902dff769391de4e241a98c3ed759436e018e82b2c50b57147552bb94baddd1f66530915555e45404df9e7101b20e607", - "0x82e4f2ee7c7ca1ee8f38afa295d884e0629a509c909a5464eb9ea6b2d089205478120eed7b6049b077b2df685ec8ba48", - "0xaa21a68b0888e4a98b919002a7e71e6876b4eb42227858bf48c82daf664c3870df49e4d5f6363c05878a9a00a0bcf178", - "0xa8420cd71b1d8edd11ebc6a52ba7fc82da87dd0a1af386d5471b8b5362c4f42718338bcbc302d53794204a0a06b0671d", - "0x98c686bd3a994668fbbd80c472eed8aedd3ab5aa730c8d3ce72e63fb70742e58525437be1f260b7ecc6d9d18a43356a0", - "0xaca0b2df9ec8ede0b72f03b121cded5387d9f472b8c1f3a5f1badd5879fb2d5d0bbb6af1a2dd6bdebf758cfceadbe61d", - "0x93b1abd9cb41da1422d171b4dbf6fbcb5421189c48e85c9b8492d0597838f5845198494c13032e631c32456054598e1d", - "0xa246ab3a47f7dc5caedc26c6c2f0f3f303ed24188844ab67a3da1e793d64c7c7fe3e5cc46efafbd791b751e71de0614c", - "0xb9b52095ca98f1f07f3b0f568dd8462b4056c7350c449aa6ce10e5e8e313c2516ac4b303a4fc521fe51faf9bf7766ce9", - "0x8e2e9d26036e847c2a2e4ba25706a465ac9fbb27804a243e3f1da15dd4084f184e37808661ec929479d3c735555085ee", - "0x8b8c4f4ad5c8e57e6a7c55d70ef643083d4b8dac02716ea476d02dbbb16c702a2f2d5dd5efe3aec7704d2b8cdafe3959", - "0xa800afea30d0df333805d295bac25419b7049d70044be00c7c85a92a0503ca471001bc1e6552323f1a719eb96616fc20", - "0x868bced4560e1495b8527058ebc82a538b7cf806f8d8fe8eeed6981aba771de4d5e9f03cbfc7157d38b9f99cdea87b96", - "0x86b86258b0c1feb988cc79f6c4d4b458ff39428eda292f9608a5fc4c3765782c8c23c66f82d7538e78e092cd81d69a56", - "0x9370eac15de2555824c7d48520a678316a7bb672e66f8115ad7dbc7c7b1f35a7718e8fa0c35f37e3ef2df32dfa7ca8d1", - "0xae200bc5be0c1c8c6ec8e9fd28b4d256c6f806c0f270766099e191e256d67b9cceda2cc2fed46dfa2d410971a7408993", - "0xaf2428c77b2b9887ecde1ea835ed53c04891547fb79fe92e92f9c6009cdfffa0cb14de390532ad0ef81348b91798bd47", - "0xa9069eef0316a5d13d1aa4cef0cf9431518f99b916c8d734bd27b789828ae03e5870837163ea6ad0be67c69184b31e8d", - "0xb1b1ce6d529f5a8f80728173b2f873c8357f29644b00f619c15111224377ae31a2efb98f7e0c06f5f868030aab78ed52", - "0xb89c98beef19ee7f300e1c332a91569618ef8bf2c1d3de284fc393d45f036e2335d54917c762f7c2874a03fe4f0f6926", - "0x8264f993dceb202f8426339183157e9e0e026d4e935efe4cf957eb14cd53edcdc866305fb1334cdf0e819b69eafbaccf", - "0xaebd113f73210b11f5ac75b474f70a2005e5c349345003989175dffa19f168abd7f0e28125b18907502fff6fcc6f769b", - "0x9993ad061066ca6c2bb29fe258a645089184c5a5a2ef22c811352749a199be3a3af3a0d5ce963febf20b7d9e63508139", - "0x97952105000c6fc6c2dcae1ebdb2feae64f578d26a5523807d88e6caf1fe944b8185e49222d06a4553b3bdb48c3267a2", - "0x82dd955f208957d74693bed78d479c9663f7d911f68ff033929418eb4a5c5dc467589ca210c1ba3c2e37d18f04afe887", - "0xb816fc4763d4c8a1d64a549c4ef22918e045ea25fa394272c7e8a46dcb0c84d843d323a68cc3b2ef47a5bbb11b3913bc", - "0xa7a87ba4d12a60ee459aad306309b66b935d0c6115a5d62a8738482f89e4f80d533c7bba8503e0d53e9e11a7fd5fe72b", - "0x92b36d8fa2fdee71b7eea62a5cc739be518d0ecf5056f93e30b8169c3729a6a7ed3aa44c329aa1990809142e0e5e2b15", - "0x8835b6cf207b4499529a9034997d2d3bc2054e35937038deb9c3e2f729ebd97125f111c12816d30b716b397016133c52", - "0xacf14cd6d978ba905cf33b9839b386958b7a262b41cbd15e0d3a9d4ef191fcc598c5ab5681cf63bc722fe8acfda25ce6", - "0xb31302881969c5b283c6df90971f4fb2cc8b9a5da8073662da4029f7977fbb4aaa57dd95b003a9e509c817b739f964e7", - "0xb74669e1c3fa7f435e15b5e81f40de6cfb4ad252fcdfb29862724b0a540f373d6e26c3d600471c7421b60a1d43dbeb0f", - "0x861d01615cba6ca4e4ef86b8b90f37fa9a4cc65cef25d12370f7e3313b33bb75de0953c8e69972b3c2a54fe110f2a520", - "0xa58a56820efaf9572fd0f487542aaff37171d5db4a5d25bfb1a5c36ca975eb5df3cb3f427589e1101494abb96b5e4031", - "0xaf13d0a6869ef95cb8025367c0a12350800c6bc4ae5b5856dcb0a3ca495211d4139f30a8682d848cb7c05c14ae9f48cb", - "0x8c385767d49ba85b25a3a00026dd6a3052e09cd28809d5a1374edf4f02dc1beed367055b0dee09102c85985492b90333", - "0xb5129fc2fec76711449f0fcb057f9cf65add01b254900c425e89b593b8d395fc53bb0a83ddbd3166acc6d2c17f7fc2a4", - "0x86bd01b3417d192341518ad4abf1b59190d9c1829041e6f621068bce0bef77ec3b86875b7803cf84ff93c053c2e9aad1", - "0xa74fc276f6af05348b5fabccb03179540858e55594eb8d42417788438c574784919fb6297460f698bd0da31ce84cebfc", - "0x967ed3ec9f1fc51f76f07b956e1568d597f59840ef899472a3138f8af4b4c90861e23690c56b7db536f4dd477f23add6", - "0xb9e678206de4fc1437c62d63814d65f3496be25a7a452e53d719981d09c7e3cae75e6475f00474e7c8a589e2e0c6bfa3", - "0xb028eaffaa4ff2b1b508886ff13c522d0b6881998e60e06b83abe2ac1b69f036eece3ded0f95e9ae721aea02efff17b6", - "0x935f82de9be578c12de99707af6905c04c30a993a70e20c7e9dd2088c05660e361942fa3099db14f55a73097bfd32a44", - "0x96a1cc133997d6420a45555611af8bcd09a4c7dbddf11dbe65aab7688cc5a397485596c21d67d1c60aae9d840f2d8e48", - "0x80d117b25aa1a78e5d92ea50e8f1e932d632d8b37bebf444dcc76cc409322fb8eface74a5dddab101e793ff0a31f0a53", - "0x893229136d5ab555dc3217fb4e8c6d785b5e97a306cdaa62f98c95bad7b5558ed43e9a62a87af39630a1563abd56ec54", - "0xb7ec1973ec60bd61d34201a7f8f7d89d2bc468c8edc772a0ba4b886785f4dadc979e23d37b9f7ef3ff7d2101d3aa8947", - "0xb6080ca201d99205a90953b50fc0d1bd5efd5eadbfe5014db2aeb2e1874d645ab152fb4b0ff836f691b013b98ce7c010", - "0xb546e66ec0c39037bbaa66b2b3f4704a6a72cf1924a561550564b6fcf41fbc2930e708cd5cac1d05e12a4b8ec93ff7eb", - "0x8abeed90a01477260f4b09fff8fa00e93afe727e8eed6f111d225c872a67e6ab61d0472ab6add3fe987744e16f7c5268", - "0x8e02342d5cc1836ed21834b9ef81686172cc730f0412479db5f590b0ff7a729a0e986ffed16d6ecafd6b83d65922ca5e", - "0xb05660605cf8e8a10c8d3c77cccbe4e7179fa27cc829571f6b722a58e65e4e44d7fe977446118e9da2d2f40af146cc2d", - "0x942a00e006baba6d025cbd99297bdb0cbf3d84cddf849b1b5a9fe9ef1745352fad81313cce5d7622d6652096a8fa065c", - "0xaace8212b3d8dbe44ac97460a5938a3b803aca9bd00d8a643a859351daf391b22d1fd2a6b3e0ff83cc9ee272a1ad7686", - "0x965a9885a5259197a75a19707a2f040e0fd62505e00e35ebe5041d8467596752aedf0b7ec12111689eceb3e2e01ecfc8", - "0x81d58270a4e7ee0137cb2bf559c78c4fd5b3a613468a8157b6a9c5c0b6ca20a071b87c127d59cecc3d0359237a66d890", - "0xaf92b6354fbf35674abf005cb109edc5d95845e3d84b968e6001c4b83d548715dffc6723ac754c45a5ace8cd7dd30a24", - "0xb112caa707f9be48fdde27f1649149d9456857f928ea73e05b64bb62d597801daac0b89165fea76074f8b5770043f673", - "0xb6e7380746da358fc429f676b3d800341e7ab3f9072c271310626ae7f67b62562ff76c63bc9f5a1dbc0e0af87752408a", - "0xa45e9e8d0931207ebc75199aa0c983134aa97f771ff546a94a3367bcedf14486f761e7f572cf112e8c412018995fdaf4", - "0x854381128de5bfb79c67b3820f3005555f3ee6f1200046ebbfaee4b61b3b80a9cebf059c363a76b601ff574b8dbf0e6b", - "0xaa1b828a8b015d7c879669d5b729709f20a2614be6af6ff43b9c09b031f725f15b30cde63521edda6cd4cf9e4ab4b840", - "0x8f28f6b62c744084eeddcb756eced786c33725f0f255e5999af32b81d6c6506a3f83b99a46c68fc822643339fe1b91c5", - "0xac584e76a74cafe4298ca4954c5189ccc0cc92840c42f557c40e65a173ea2a5cd4ae9d9f9b4211c9e3dfd6471fc03a1b", - "0xa413365df01db91e6a9933d52ab3e5ed22d7f36a5585ad6054e96753b832e363484fb388c82d808d1e4dfb77f836eab9", - "0x8a68c51006d45bf1454a6c48a2923a6dbeb04bd78b720bb6921a3ca64c007043937498557f0a157262aac906f84f9bf8", - "0xb93ff8b6c8c569cc90ee00cfe2fc3c23cccea2d69cbca98a4007554878311635cb3b6582f91636006c47b97e989fe53d", - "0xb9a8a44d54592511d74c92f6a64d4a8c539a1d8949916ef3773e544f6f72c19a79577de9878433bd35bb5f14d92f411d", - "0x94f066a7e49ae88d497893e4ce6d34edc2dc0b42fe03934da5d4ed264d1620d506fcc0661faa90a6cf5083e1720beaaf", - "0xb42b102adef8f42c1059b5ca90fe3524dcd633cf49893b04b4a97a1b932ca4c7f305cebd89f466d5c79e246bad9c5ced", - "0x86b560d78d3c5fb24a81317c32912b92f6ea644e9bedfdea224a2f0e069f87d59e6680b36c18b3b955c43c52f0a9d040", - "0xa3829fa7e017c934fa999779c50618c6fb5eafb5e6dec0183f7254708a275c94ba6d2226c5ca0c0c357b2f2b053eea93", - "0x9337dda730076da88798fd50faed1efa062f7936a8879ea4658c41d4fcf18cee7120366100d574536e71f2f11271b574", - "0x853d09a30f4342f5a84c4758e4f55517a9c878b9b3f8f19e1362be9ae85ca0d79c2d4a1c0c14f5eff86010ad21476a7a", - "0xb0bc74cb69bdd8fdffca647979e693ad5cbf12a9f4ead139162fa3263bfebef3d085aab424ed8c6220b655228c63c6b1", - "0x88d8dc8faf3aab12ba7180550e6a047f00d63798775b038e4a43a3b40a421a3f5f152a7e09f28ccd7198bb8cefc40c07", - "0x88db2e3b8746415d0c3e9f5706eda69a29d0b9ee5135ad006060be7787f4f1f7069e2e2e693c5e10b7c3d5a949085ae0", - "0xb5bd830d2f1c722188dba2690d21b7b84b92cbdd873a55aaa966f1d08d217bfc8cffe8caea68868f3850b90b4ab68439", - "0xb5ad4be0c9626a33fce6c8501297bdde21b07b88531451912ed41971a4c48fdd1036d8a4994a99a7fbba4a5901a7095e", - "0xb0e1337a2a1772191faa91302f1e562e7cdc69ba5b25139e7728ce778a68a7fa9817f852ec8e04a159122cff62992ec6", - "0xb4fd4a4c1be8bc7e4e2bfd45404c35d65b75f45fb19ce55c213a8035b41f1ccbce9766f3df687c0d7cd6cdfc1abb00a5", - "0x814bf565ece6e9e2a094ffbd101f0b9fea7f315a2f4917abe2bf7d070ed8c64a2987bd288385a42fd336ed0a70a9d132", - "0xaf860af861dc80894ed69f29c8601d986917ec4add3d3f7c933a5e9d540bc8ff8e4e79d0bb01bbc08fa19ef062f2890c", - "0xb66d33fcf3cd28f15111960ffc6ed032c3b33d4bb53d035ab460cc5fa7ce78872f0476d0bb13f1d38f2672347d2d6c4d", - "0x89603ae1a5dd7c526936b86a3b69b7b1d0bdf79ba3cc9cc2e542ec801a6126d1514c075d6ad119fe6b6e95544ffe7fbe", - "0x8a1b097f46a62d85cff354d1e38df19a9619875aad055cc6313fdb17e2866d8f837a369a9ee56d4f57995e2b0a94310e", - "0x8dc165d86c7f80b0fcd4b6f90d96cd11dc62e61d4aae27594e661d5b08ef6c91156c749de8948adfaf3265b1d13e21cf", - "0x98e3173772c3b083b728040b8e0ee01dc717b74c48b79669dd9d2f7da207af64ccd7e9244bc21438a5d4ac79b88e9822", - "0x924d168099b6952d6fe615355851f2b474f6edfcd6a4bd3ad2972e6e45c31bf0a7fb6f7fca5879a0de3ea99830cfb5bc", - "0x95452f0b7efda93c9e7a99348e13f356bad4350f60fcd246a8f2aa5f595a9505d05ec9f88b1fe01b90ecd781027b9856", - "0xb95e8af516bb0941fc0767ecd651ada2bc64cc3e5c67a1f70048c634260c0f2c0e55ed22948e1870c54590b36683a977", - "0x82f7feb71e746d5ca24455e3f3e57e4eade92669ab043e877b836612efd3de82009f0555e5d8811bff9f2b75fc57a01d", - "0x87623c02caf590ea84cf4a84d1be501f89262e26eb463f2f94a2d3042889c051b058823c3367a989498e46ff25edab16", - "0xb88da847b1ef74c66f923773ce8c920ca89751335fde17b3a98c0603862069a2afbf35b1552b43ad64dccea69f040ff8", - "0x96b734758c823e5ce5b44625c252957e16fa09f87f869baac195956052dc92f933f377b288c7f63b8028751cbbdca609", - "0xa23cc5fbbe5cb7c1d33d433cec4e502f6548412e2374e285d307f75e98280b0c0af4f46bba18015be88cdf7db8b1239c", - "0x8bd5bbe04bc929ca8f546e673803ec79602f66ec24298d3e3b6bf6f2c25180fc0032ea6f86c38a6e0ec20ff4eaafc7a1", - "0xb95768ca113e5d57ad887a1cb5ef84ce89007ce34c3156cd80b9aa891f3ebaa52b74c0cb42919cfbcf0cb8bafa8085f9", - "0xa117f99045f65e88acc5a14fc944f8363f466e4a64057eb8fc64569da5dd022a01f2860c8e21b16aff98aebdf89461b7", - "0x895cda6503907c98c43477eaf71dfd26759032523691659f13662ca3a967d93bbc5be342d168223cef7e8a333987d6a0", - "0xa084d77d913d3ec0586ad5df2647610c7ed1f592e06a4993a5914f41994a29c4a8492d9dce2e14d8130c872d20722920", - "0x84a328b73c64137bb97a0a289b56b12060fa186ce178f46fe96648402f1b6a97d1c6c7b75321e4b546046c726add5a08", - "0xb7c35087b2c95127ce1470d97bceb8d873a7ad11a8034cc1cba7b60d56f7e882fc06796048435a9586eab25880787804", - "0xab05e3394375ee617c39c25c0ec76e8a7f2381954650c94fbcd11063ea6772c1823c693d2d9dd18bd540a130d7b92855", - "0x82ba5907051d84b37fd9d28f8b9abebc41fc4aaa334570516ca2e848846644016356d40fa9314543017d4f710d193901", - "0x9170517b6e23ee2b87ff7c930cb02b3e6bd8e2ae446107b5b19e269bf88f08de5ded3d81a2ff71b632ca8b8f933253a0", - "0x93dc0e3f6234b756cdbb3fe473b9214e970972e6bf70803f4e2bf25b195b60075177a1a16382f1dee612a4758aa076ee", - "0xb4b49fac49cdfccda33db991994a8e26ab97366545166cc7140aef3d965529f96a5dac14d038191af4fb9beb020ff6d5", - "0xb826537670acdf7a8a45ef4a422d5ae5a1b5416ad0b938307518d103cc7ba78e495ea200adc5941414a70158a366e8a2", - "0x8ae3588b1fbecbc769c761f0390d888e34773cf521d976ee335f6c813bf06dad38850871ac8a8e16528684f1e093d0c1", - "0xad9c00b8dccdb545315fbf26849135699c6aa3735f89581244281154c906aba80d20c1e7f18f41acc61e0565f8015a33", - "0x954ce68146c05fc1c9e536add3d4f702335d93c1650b8c1fad893722a81f915eee2d38275dad00ce87f3f5bc90ef7341", - "0x8243feaeff9a12f5aeb782e3dd68609ce04ecde897c90fd8a19c9c5dace3cf43bd5bc0f1624bf7fd2607ca0d71adbba8", - "0xa8a1be55259cd27898d9d60a61998d8da2bf2d439ba6eedb61d6d16dacc4a81ec706b9196dfa080ba20701d2cd9fa1f4", - "0xb0eac6212c7a62ef6062c30875fbe24b8e1a9d88854c035686f849a9eed4d17fbc9af27429eb7c3fd60b47a5e29f6783", - "0x878561a88412e95f19f1cb8894be9d0ea4a2cdd44f343387f87dd37445e5777bceb643cebc68c910acb5e588c509cd2e", - "0xa57b6c347955d8b0057a87494223148ff9ff12b88e79dbd9d0aae352fe55e15ea57fcfb9add3d5d269ee0001d8660f20", - "0xa07fa66340d4082585e4d72c77510c59b272e7a3345f4b1de6be7ff4a11ea95d712d035a7355fc8d2e571fa65fe8236f", - "0xb9d84a627462438e8ede6c453e3367bfaf81cff199d3e5157ef2bc582d358b28b5ccc3bc27bb73af98ef45179ea79caf", - "0xb14f26ea7ca558761cb19508e5940fbf5dcf2ad8555c5a03e8ff92481994072f523b1ab6b7176f698e2cfd83d4f8caad", - "0x800cca1cbb14e1fc230c7b420ff06864a934b082321bbf5b71f37340383923f23183d4fdc8fa2913928722b8892db28e", - "0x94790c950b92e971ec39e9396c3f32dee32a8275d78e6ea28a47130651bddc86a189ef404c5e8c210bd291186dee0df4", - "0xad7b3b3e377df64023b8726d43a7b6ec81e5a5e8c0943c5bebe5ab5ddd6597255f434a205c14ba90e9e5e3c462a1fe0c", - "0x86ff8156cc857a416e735009cf656b89da59b766b4c4e5a0c0165282b530c10657cc28cf5cb847696725c37ac48b69d7", - "0x89cb64cf9294f68f01533660a2af2aec0ec34cc0b4a0cc36a128f2e0efb3da244981f69aede962f50590faeeb9a5da01", - "0xa2ea5a94a524bb8e6f767017246cd1af9d87c9abb9894e91c4e90c34c5161be6179b49dafcab9cff877a522c76beb145", - "0xb5d9abf29ed6030a1e0f9dc19be416c45ba8cb5ed21aff5492233e114035715d77405d574cd62f2716285e49f79b9c99", - "0xac441cf6104473420babdfb74c76459cbea901f56938723de7ad3c2d3fadb0c47f19c8d9cb15a3ff374e01480b78a813", - "0xabea34bd2d36c5c15f6f1cdd906eb887f0dd89726279925dbe20546609178afd7c37676c1db9687bc7c7ea794516af03", - "0x8140abfd0ec5ca60ef21ad1f9aabbb41c4198bac0198cb4d220e8d26864eedb77af438349a89ca4c3ff0f732709d41a9", - "0xa5a25abf69f3acd7745facb275d85df23e0f1f4104e7a3d2d533c0b98af80477a26ac3cf5a73117db8954d08f9c67222", - "0xb45ac8d221a7e726ad2233ba66f46e83ed7d84dbe68182a00a0cf10020b6d4872f3707d90a6da85f6440c093914c4efa", - "0x80f586dfd0ceaa8844441c3337195ba5392c1c655403a1d6375f441e89d86ce678b207be5698c120166999576611b157", - "0xb8ce52089e687d77408d69f2d1e4f160a640778466489d93b0ec4281db68564b544ec1228b5ab03e518a12a365915e49", - "0x8990f80bae5f61542cc07cb625d988800954aa6d3b2af1997415f35bd12d3602071503b9483c27db4197f0f1f84a97ac", - "0x8329858a37285249d37225b44b68e4e70efeef45f889d2d62de4e60bd89dde32e98e40e2422f7908e244f5bd4ffc9fe2", - "0x8d70c66ea780c68735283ed8832dc10b99d3daeb18329c8a44a99611a3f49542e215bf4066ff4232d36ad72f1a17ccc3", - "0xa3b2676cc8cdf4cc9e38c6cb8482c088e5e422163357da3b7586a3768030f851ad2a138eeb31584845be9ffb8067fc00", - "0x95b1fa74e9f429c26d84a8e3c500c943c585ad8df3ce3aea1f6ab3d6c5d0ed8bb8fa5c2e50dd395fa8d4d40e30f26947", - "0xb1185f2ac7ada67b63a06d2aa42c4970ca8ef4233d4f87c8ffa14a712a211b1ffde0752916bfafdfa739be30e39af15d", - "0x8705a8f86db7c4ecd3fd8cc42dd8c9844eab06b27d66809dc1e893ece07186c57b615eab957a623a7cf3283ddc880107", - "0xaf6356b372f0280658744c355051f38ff086f5563491fc1b3b1c22cfec41d5c42b47762baeb9ee6c2d9be59efd21d2b7", - "0x86bdd4527b6fe79872740d399bc2ebf6c92c423f629cdfcd5ece58e8ed86e797378a2485ead87cbb5e2f91ba7b3fbda1", - "0xa900f0be1785b7f1fda90b8aedd17172d389c55907f01c2dfb9da07c4dc4743cb385e94f1b0fc907dd0fedb6c52e0979", - "0xa9f59f79829a9e3d9a591e4408eaec68782c30bc148d16eb6ae2efccb0e5478830bbdaa4ae6eac1f1088e7de2a60f542", - "0x99cf54a69ad5e8c8ec2c67880900e0202bcc90c9815531d66de8866c0a06489ea750745cc3e3aa1c4d5cb55dcd1e88f7", - "0x8676246a4710d6d73066f23078e09b3fa19411af067258e0b8790456525c02081727b585d6f428c8be285da4aa775a4b", - "0xb596c7014fe9214529c8e6b7602f501f796b545b8c70dbf3d47acc88e2f5afd65dccef2ef01010df31f03653566b16df", - "0xa12205c6c1780fc8aebdd98611e12180005b57750d40210b9eff0396d06023bd4ff7e45f36777123ff8bed7c5f52e7a3", - "0xae7dbd435bba81685d5eab9abc806e620253da83e56b4170952852d442648a5d8743f494a4b0fc9d606574f87895b0d6", - "0x9786257b1726b7cdc85219ca9eec415f98f5a11e78027c67c7b38f36f29fe7a56443570fdfedc1d9293a50e4c89d89f6", - "0xaaf0515070d1ca92aacdf5fac84193d98473d8eb2592381f391b8599bcd7503dbf23055324399d84f75b4278a601c8b2", - "0xb31654dbf62fbbe24db4055f750f43b47f199a2f03c4d5b7155645276b2e456a218ca133743fb29d6f1a711977323f6e", - "0x8f4d39106ecdca55c1122346bdaaac7f3589d0cf0897a6b4b69e14b4d60550fd017876399401ce7c5d35f27da95f50be", - "0x8a7bfdb48cd47afe94aff705fac65f260b3a3359223cff159b4135565c04b544dd889f6c9a6686f417e6081ad01e0685", - "0x967ba91111e5e08f9befcbaad031c4fb193776320989f8ede4018254be0e94586254432d3dbae1455014f3a2f2549d01", - "0xa9db52352feeb76715a35c8bed49fb3a8774c9c8e58838febf800285fd6c4938ec162eb8457029e6984d8397dc79ea19", - "0x811794e6bfe2539e8f6d5397c6058876e9e30763ad20dad942bb5dbcab2f16d51718ce52bfb4de17889ba91da1b85bcd", - "0xa6db0f65a6dc8b8cc2312a3e0146d8daf520255bb12f74874c05693914e64e92be0cd53d479c72cb2591e7725dfaf8b0", - "0x918d21bfa06d166e9eb5b7875c600663a0f19cc88c8e14412319d7aa982e3365f2dff79c09c915fc45013f6b3a21200d", - "0x9894852b7d5d7f8d335dd5f0f3d455b98f1525ad896fdd54c020eeaf52824cc0277ecbfa242001070dc83368e219b76d", - "0xad00acc47080c31fcc17566b29b9f1f19ccaae9e85a312a8dcc0340965c4db17e6c8bd085b327eaf867f72966bf61452", - "0x965e74649e35696744ecc8bed1589700bae9ca83978966f602cf4d9518074a9aa7c29bc81d36e868a0161293f5a96e95", - "0x961e29a239c2e0e0999b834e430b8edfe481eb024cc54ffaffd14edaf4b8522e6350dc32039465badfff90dcb2ba31cc", - "0x943dda8fa8237418a07e311efde8353c56dd8ec0bfa04889ccdd7faa3dee527e316fdc60d433a3b75a3e36ca2aa9d441", - "0xa0ed4c102e3f1d6ebf52e85a2bc863c1af2f55dc48eb94e40066f96964e4d37fff86db2cff55a8d43d517e47d49b5bd7", - "0x9045770ad4e81345bc6d9a10853ee131232bf5634ef4931b0e4ba56161585b4286876bc8a49b7b1f458d768718cb8ebf", - "0xb0dd430295ff28f81895fde7e96809630d1360009bbe555e3ac10962de217d93ead55a99fd4f84d8cadd1e8d86d7b7ef", - "0x95ced48419b870ea4d478a2c8db699b94292f03303f1bf4560b5b1e49ca9b47e7008514fe0a9cf785717f3824567e1b2", - "0xa7986e0e389e8aef6aac4a7a95e2440a9af877ae2bc5ad4c5f29d198ec66aa0db1d58c451e76ae70275a2e44c3d3fa68", - "0x85a8490faf32d15de12d6794c47cc48e02428af1e32205e0742f8299ea96b64bcd6d3b4655272afa595eec74ecbb047c", - "0xb790d7fb1307aacc2d303d9b6753a9773252b66c6b67763cf8841c690cbccc4866ffb5fec1c068b97601a7953fe0f7e8", - "0xafcc4011f8c53f10d63c29b74d9779cd75c861e01974c28a4ec2cbb909b67a1b2287ead175231343c936ad75dfa416ff", - "0x918058bffdecc1ae8779dccf1d874bb9e28edbe34c8b5954a8da64a848858d2f0776437b423baf4e731f3f5fa05a2841", - "0xab554db549aa36dfa9f966a5ed6be8267e3aa9ced348695f3dafc96333c6dbb48ef031693aafd59d1b746ecd11a89c51", - "0xac4ecf746b46b26a7af49cc9cc1d381e1e49b538dbd7fb773ce6b1df63ae31c916693cca8a90fb89f1e7ec5e0e8dd467", - "0xa8de66d48f16b016f780a25ba25bd6338fd8895a1909aabcfb6e70f04ff66f9866e6e2a339bcbfa4bfba4070a6a8db26", - "0xb4b49374eff6dac622e49b0e9c0e334ecbec513a96297f6369696ad39e5ec0de81a1417f6544be866c9f60957a9ba09a", - "0xb8023968549ebab6c1e7a8e82954a5b213bec50bbf35b36697a8d4fd75f9e12d510b365962aace4c9978c5b04da974a7", - "0x8d4bc016026dd19e4059d1c5784897cefa47f7ae2ed6dfa2b3c14a852fff2b64abc09549d106584e0daed861a2d6d6c2", - "0x85e26f433d0b657a53da4c1353485e0c2efa092484c5b8adb3f63dc72ee00be79197ebef7937b37a6a006571641cd6af", - "0xabb37a917301e68328032ff4715abc0fee32e5f5be68232ca8bf7ffb8732bc47504e75b40bcc0a7c7720b71496fa80af", - "0x9837c8d2660522c0357f5222777559d40321a1377f89ca1717215195bad4a348a14764bd87fa75f08e1f6263e9d08982", - "0x97e06f971b4c56408ed5f1de621d233e6a91c797f96ec912737be29352760a58831aaf1f64e377c3ed9f2f4dc8ad1adb", - "0xa12d211304da7b91101513d57a557b2504069b4383db8ecb88aa91e9e66e46e8139dadc1270620c0982103bc89666215", - "0xaab74ba48991c728ba65213e8c769e6824c594a31a9b73804e53d0fda9429403ff3d9f6ea5ef60884585d46356c87390", - "0x92f19be2b7adf031f73611282ad33e462852f778c5e072f689dd0e9458fa6ebccfae02f2b2dc021802c9225035862468", - "0x953bb843c48d722604576cef297123755cef8daa648c30c3a678eada8718dfdb16e71cc3e042a51fedc80577235c2563", - "0x86f509e3c1b9ee9a3b95e6da8516b47feb8c8a83403984228f4903c7ee1ee4f03addcb8fe86283af1196a54b36b9470c", - "0x903d793a377e98e2562c49de33e3fbf84bf99211925e7002a4f688470db655884e1efe92782bf970ffa55d9c418ef3b5", - "0xa41b65681ed7f10987a7bfdf9e56b010d53683819d845d880fc21b2d525540605c5823e75c434f17b5a0d08a091c1564", - "0x971be802de51cfc0d10a96be7977c037873f19334ed4ed4904b7675aec8bfa1f8956cd0150b07064caf18229ffd1ccd9", - "0xb253ebe4f82cdbefbc3ef816d40c497fe426a9f0f0f170e783fa4a05ae6dabdfa8c448817a24e723a314b43e76a7c422", - "0x86f397c95025489929ce9230b1466b5c330ec7c58a3c7e3153d6d05bcb8348a13398908e192590b8812f5c5ff09c133a", - "0xa0713983a3dc9f10b3833687cd2575de2fc63c4ad8d2f54ff85c6db23dd308daefef1bd1e51eec26732f77c1f37ba793", - "0x8249a1d53ec92f311f4fa77e777800d777f3e9d4d452df740fc767fa7b0f36c8dce603d6e6e25f464c0399b8d0b93c30", - "0xa73d0a206a62922f07b928501940d415e5a95716ee23bf6625b01ff2cd303f777adfa373d70279ba8a30fbb4c99a6f1f", - "0xb1106b407ecf234e73b95ff58ac9fdf6709ad2e763b58f0aacc5d41790226d441b5d41405ac03a0641f577848a4f5e8e", - "0xb009963ccc7b2d42792f09ab7cb0e929503dd1438f33b953104b4de43274ca3ce051554d10d7b37041b6f47d7a2dab6f", - "0xb744512a1b3c7ef9180b095c6a0c5bc16086a50020cf20dc2216bbff24d91ca99b95cb73070444dafc3ab45c3598960d", - "0xa0209669ffeddc074d35cc6aa2dac53acac8e870f8a8a5118e734482245b70c3175f760652e792118fdddac028642259", - "0x8ddd3e0d313da17292fdcc1bbc6e9d81189bb1d768411c6fe99801975eddb48dbf76699dcf785cac20ab2d48e392c8fd", - "0x8392aa285b8b734aa7a6e0f5a1850b631ddf6315922e39314916e627e7078065d705ff63adbc85e281d214ec7567863e", - "0xb655a1fff4dba544a068bf944e9de35eaaa6c9a0672d193c23926776c82bebed8aa6c07c074b352882136b17abdab04b", - "0xaf5095f40d1e345b3d37bebee3eb48c5d7b0547f12c030d5bfe8c0285943e0a7a53a186f33f791decba6a416cba0c5c9", - "0x8223527f9eb3c8ff52708613cd2ee47e64c0da039cea3a0189b211dc25e9bfa3d5367a137f024abe94f98722e5c14b67", - "0xafdb106d279273edc1ee43b4eead697f73cb0d291388f7e3fc70f0dd06513e20cc88b32056567dcc9d05364cb9ca8c58", - "0x9319eac79ff22a2d538dcd451d69bca8aa8e639979b0d1b60d494809dbd184a60e92ad03b889037a1ac29a5547423070", - "0xb79191ce22dbd356044e1777b6373b2d9d55d02b2cc23167642bc26d5f29fd9e2fb67dce5bd5cf81a602c3243bedd55c", - "0x988e0da1e96188ffd7c5460ecdf2321f07bc539d61c74a3292c34cb8c56dbafbca23eb4471a61e8e64e9a771a49fd967", - "0xb0792b6cf4b10f8af89d3401c91c9833736616bb9fe1367b5f561c09d8911fb5a43b7a4fd808927b33ab06e82dd37a28", - "0x862f68ea55206023ca470dbd08b69f0f785fcbabb575a1306ff3453c98ffcad5fd6ead42e8a1f9edf14c6fd165ffd63a", - "0x815ff0898b1330ac70610180c0f909561877888ff10def749a1e65edf9f4f7cea710a757c85241dfb13d0031efb5e54b", - "0xaa6e6ce21776ea4507d452ccdaf43a161a63687aae1cb009d340c9200e5646e9c2de4104dfd66b8e55dfa6de6ee83e4a", - "0x8e8f3d3403e0256ecc254b9b1464edca199cad3f3348002d744721c345a1a3c7f257c3587d2229774cd395e26693d1ba", - "0x90483e28985e4a0f7a3cb4bc5e865b9d408b94cd2146c04aed00b48a7ab80a28deb05efec320817d63578d4f953bd137", - "0x84fb2a762ba29193b07f1dd84b3f69153cedb679b66ad04f8a4adf01c14f115163a107e6db23aaf0f0c9687824ded197", - "0xb4a23922bf4302cc9a6583f252a1afa026c87c132b9ae44cc1f75a972cb6ae473447c500827906f9b677617ddd6fb473", - "0x809bb9edbbe3a2769165f029f2a48b6e10e833eb55d8f9107c4a09ca71f0986dc28f3bf4ead9cab498086eb54c626bbf", - "0xa0459dbb08db4155d16301933ec03df77c4f835db2aa3f9697eeb2bb6fcd03337fab45fa43372a469fecc9a8be2e3119", - "0xa638eaace7f21854de49f4db6e4ea83d2983751645e0fb200c5e56561f599fd37dac70bdbd36566fdd10d4114fbb9c2f", - "0xa3a27bc2728390643a524521bf8ef3b6437cfba6febfd8bb54f2b6ecbafafb96196d3dea279ce782efd97b212f364ef5", - "0xb86693b3ea23ea6b2c4d52554f61ef39c0ef57e514ff6da80c6e54395df8376e2e96b9d50e4ec301c59e022c5c5610db", - "0xaf4d7cd678d79e67ae19789d43331dff99346cd18efff7bab68f6170c111598d32837372e3afe3e881fd1e984648483e", - "0xb8735a555ba7fe294e7adc471145276b6525de31cda8c75aae39182915129025fb572ed10c51392e93c114f3a71bd0be", - "0xb1dfb6dbda4e0faaa90fe0154f4ddaf68ee7da19b03daad1356a8550fca78a7354a58e00adeecb364e2fd475f8242c24", - "0x9044b73c1bd19cd8bb46d778214d047f5dd89b99b42466431b661279220af5c50c0cffecebd2b64c3d0847a9c7a8b1ec", - "0x891f0d162651a0aa0d68fb1cc39fa8d77fd9f41ff98b5d6c056c969c4bac05ba8c52cbfa7fbb6ef9adfe44543a6ec416", - "0x8920ae1d5ac05bf4be6aba843e9fc1bc5b109817381cdd9aa13df53cabea319a34ee122dcb32086d880b20900ff28239", - "0xabb14023142876cbc9301336dced18c7878daa830070b5515ff4ac87b7bf358aa7ff129ebbf6fb78e827570a4142661f", - "0xa74b15e178cf91cde56eab0332e62d5ff84c05fcc849b86f45f94d7978bf9c0fc72a04f24d092a9d795ca3d976467f46", - "0x806829621a908ca9b6433f04557a305814a95d91c13152dca221e4c56bfaa3473d8bb1bacd66e5095a53070f85954278", - "0xb09a3c185e93869aa266a0593456a5d70587712bca81983dbc9eebbb0bd4b9108a38ae1643020ecf60c39c55bb3ac062", - "0xb2bbe8f5361a3ecdb19598dd02e85a4c4c87e009f66fee980b4819a75d61f0a5c5e0bdc882830606cb89554ef1f90ead", - "0x825e16cb54fc2e378187aedae84a037e32903467ac022deb302cf4142da3eda3ead5b9f3e188d44f004824a3b5d94fbe", - "0x8b39d4a11d9b8ba885d36bcdb6446b41da12cfd66cb22705be05ab86936464716954360cc403f8a0fd3db6d8b301cb59", - "0xac19d453106c9121b856c4b327ddb3e3112b3af04793df13f02d760842b93d1b1fbdff5734edc38e53103a6e429a1d1f", - "0xb1cacbb965ec563f9e07d669ffc5e84d4149f1fb9fcfbc505788c073578c8f67956fb8f603e0b9a9d65e2d41803038ce", - "0xb7612d9e7dc930bff29191d1503feb2d6451b368b69fa8ecb06353c959967daccdc262a963f01c7fb95496f1bd50d92e", - "0x93f8fceb65ea9ef2052fa8113fb6720c94f0fed3432d89014ee5ad16260aeb428aadea0d1f1e002d2f670612ba565da3", - "0xb3eb9213752156ed1fced3bca151fd0c630554215c808b9a0938b55fed42b6b89f9b76bc698f3e37c3c348d2395dbed1", - "0xb46ab3553ef172ae40fc21c51d1d7eab8599a67f2f89a32a971aa52c2f031664e268b976dd2f7dc2195458fcf4bf3860", - "0x8fb66f2c67ca5b6fb371c7d04592385a15df0c343857ba8037fe2aa9f2a5d4abc1058323ff9652653261b1c7db0edc24", - "0xa7dfdbbf0b14e4af70fdb017875cdc36ad2108f90deb30bfca49301c92cbf821645a00ade1d1ee59a1a55a346675c904", - "0x856199cad25ec80ee0327869077f272e33d59bf2af66c972e4a5839ec3b2a689e16f7fd0a03a3138bec458fcff8edbea", - "0xa2842ac5a715c2f48394988c6f84a6644c567673806feaa575838e906138c1b25d699e1b6ffdfc9be850b15da34077e4", - "0x814b448ada88f769de33054c3c19f988226317797acacdbe55ed2485b52cd259ac5bcbee13f9de057eee33930a7fa0c0", - "0xb49de8dd90da916ed374ca42665464b6abe89ff4453168921f5a7e5ddd3dcfa69422782e389e586e531fd78a1f236a8b", - "0x851f9d942b4c8ffc020c02c7fbee0f65ef42b1ab210ab4668a3db6aa0f8ab9eedb16f6fd739a542cc7e3cc03172b565b", - "0xa5128c155b8062d7fa0117412f43a6fdc2de98fa5628e1f5fc1175de0fa49fc52d015ec0aff228f060628268359e299c", - "0xb0765849127cc4ce1a1668011556367d22ce46027aa3056f741c7869287abcaccf0da726a5781a03964a9ded1febf67d", - "0x984562c64f3338ffe82f840c6a98a3dc958113f7ed28ee085af6890bbc0cd025723543a126df86f379e9c4771bb69c17", - "0x8087fe60a9a22a4333f6fbe7d070b372c428d8c5df3804bb874b6035e5602c0693757fb30a9cd5a86684b5bca6737106", - "0xa15e195b5850f7d45674cdc3bd74f972768b46fe9473182498263edc401745a8716fc532df8fc8c1375e39e391019226", - "0x858ec10208c14a67c4156ea9c147f36d36c4fa0a232195b647e976ba82c8e16262b2b68d31e3b4702070c3dc701bccb5", - "0x84bf3fb83c003380ee1158e2d6b1dca75cd14c7b2a32aec89d901f0d79e1475aa0827cb07cba1784a6bb0d37f6ca5cd4", - "0x91e69f5392648e7f7c698059a0fc4b8478ab8af166d3842fb382ec5c396daa082ee3b2cb0192da3c9d90f6523c4c039d", - "0x8f7299f451c5e641d6fd961946b7a6ba4755685b2a40164e6276c25aefc66715b92492097a191813d39bb4405dc5da36", - "0xade2cf04ff6c94c1019bfa1e0e8f580696230fa6ee9695c4772e5a44501b2fffdd765ec7cc71ba14b83559ad62cc0fc5", - "0x85fc98ecf469d6f98c8b3e441680816f764de39001a249bc7162f990c5a5354683e849164d4fc9287ee516780cdcd436", - "0x928d118188120d038c37abdbe66c05adaa87f1cf9957dee2783b09fa91c4c43a7b0d0b2b6c5f4dea57e3ec8af230e84f", - "0x8025f71cf8d3085d6ea5104dddea8fa66cdb8527e40db01472469be021632daf22721f4acf1a8698a53439fe2f82596c", - "0x83266fffb12b3c795a6b551ac2aa7d9a29c183f861e78768c11286a04e22bd423bba05a68775bd77273e3ca316a4318e", - "0x95fd0c69c2d9df4e795c7ba71ed71a9d9f2878cd7e3a64be7b671d9611649fd41d29f8bdab642ba19cbd3db660d6a7e7", - "0x92a912cb4d5ef4b639876daf4289500c4ebdbd80aff07fd93dc3eea645f084f910e5c02c10492a37f16acaa7e646d073", - "0xb3d2622c987189a0873932aaea8b92ebb6e9e67ff46e91a96bf733c3b84175fffe950f8f4622cc4fa50f116321c5537f", - "0xa98f9a40054b31023a8f7549a44cae853b379bbfe673c815b8726e43ecd11a96db40b20369d712cbf72ffab064ecfac5", - "0xb4e9a38e371fc21f4b8a3d7ad173c9ffad0554530dc053365d9555ddb60f5c9063c72ff4c65d78b091af631a9e1ee430", - "0x875a31aee4ba19e09f8c2754fab0b5530ec283c7861a4858b239a12432f09ef155a35fedb0bc33eac2117c7e62f1c7ee", - "0x95edd0d1a6e94af718590756b5c5f5492f1c3441ecc7fa22f4e37f4ec256b9fffd2fda4c11fc1a7c220daee096eb1ff8", - "0xb35fdc435adc73e15c5aaf4e2eea795f9e590d3e3ee4066cafa9c489ee5917466c2a4c897a186b2d27b848c8a65fa8a8", - "0x94a5ce56f8d72ec4d0f480cb8f03e52b22f7d43f949a4b50d4a688a928ffd2c9074ecbab37733c0c30759204a54f9a6a", - "0x987562d78ef42228c56074193f80de1b5a9ed625dd7c4c7df3bf5096e7d7b08e2ee864bd12d2ea563e24fa20ad4d30ef", - "0x95a8218405038c991ace2f45980dbb1efa9e4ad0d8153486b0213a89e4d7e3cac6d607100660784627c74f90a8e55482", - "0xb6a29d566f5a924355b7f7912f55140e1b5f99f983c614b8a92814ce261f2750e8db178866651ea3b461fb8f92890b14", - "0xafdacc0a13da0446a92455f57a42b3ba27ba707f24171727aa974d05143fae219de9e2eb7c857235dd9c7568f43be5a8", - "0x862a7dc25f7cfa4a09aeca0ed2c9c5ee66189e119e226720b19344e231981504e37bca179aa7cad238ee3ab1386aa722", - "0xa336364e76635f188e544613a47a85978073f1686e4ee7a8987f54da91c4193540ac448b91d07d1fc5c7a8538b1f1688", - "0x8f1ddca9638decd8247c1ce49c1e6cf494d03d91c4f33e48a84452d12b6736e8bd18c157068dfeff3a90977af19e5b1e", - "0x96ae91b9aaf00e437c18ddfc1aef2113ee278153ba090aedeb3f48f1e66feb8897bb1ac7f5ffeffc3be29376dd51e498", - "0x8230b5bd9067efb6089e50213f1cc84da892e6faf0b79d5e4768c29303a80b1b754cb09d17a21933aba4c5f32070878a", - "0xa79dfe217faec7b4d3cf97d8363949efbc6f3d2c6bbc25df2c7bb8b7fd2521e6d3fa76672bfc06de6f426290d0b3cc45", - "0x8290bd36552609d6b3ac9ccb57ff8668fc8290548eecdcee9a231f1125298c20bd8e60f033214dfbd42cd3c8642c699b", - "0x8945db9e8ec437c5145add028d25936ee8823ceb300a959402d262232ae0cbd9a64c1f0a1be6aed15ff152202ea9a70c", - "0x949e232b48adeaf57bd38eacb035267d3e78333c6b4524cab86651a428a730baf9c27ff42cb172526d925de863132e82", - "0x98917e7a5073a9c93a526399bb74af71c76958a74619caccf47949f8fd25962810a19e399b4efcba0c550c371bea3676", - "0xb5b144e0707aefc853ea5570bd78dedc4e690cf29edc9413080f28335ac78022139bfe7f7d6986eb1f76872bb91e82ad", - "0x949945072a08de6fd5838e9d2c3dc3200d048b5d21183020240fa13e71a1a8d30e6bfee4e6895e91d87b92f1444d0589", - "0xb351a03c7c98506ee92d7fb9476065839baa8ed8ac1dc250f5a095c0d4c8abcfab62690d29d001f0862672da29721f16", - "0xa82d81c136bc5e418d1fba614cb40a11f39dc526e66a8b1d7609f42fea4c02b63196315014400084f31f62c24b177cbd", - "0x87d51c907fdcdf528d01291b28adfee1e5b6221c6da68fd92ab66126247cd8086a6bcffff0ea17e7b57b0ba8d01bb95d", - "0xa2a9a1a91dfd918f36c1bfeeca705ea8e926ee012f8c18d633e50ec6e50f68f3380ef2ee839e5a43cf80fbb75bfb5304", - "0x86f22616caed13c9e9cd5568175b6b0a6a463f9a15c301b8766feca593efa6e5ee4c7066e1cd61b407c0be12b3d8236a", - "0xb57e0a2c42790d2fd0207ef6476a433fca0cf213d70840c4af1ad45833f23fca082d21a484f78af447a19a0b068ea55c", - "0x8ae9bda5d85e6e3600dde26379b7270abd088678098506b72196ac8f9ce5b0173bc9c7ff245c95cbab5b5b967bcb043b", - "0x95c7d11f6c874f59ba632b63ce07a7a9d917a74d0b89cefa043f52aa1a7fe2e81c38dea0b20378264b5b4f64039932bc", - "0xac7dee7479f50722526ea1c9d4e2f1a4578d1b5cce2092a07722069c96bb4da295de1c4f16e21005276e3b3f1624ac5a", - "0x89b8aaa49bd18b09f78fc5a1f3dd85d69b5dfcff28fc6d5a92b1520bc54107b8b71bb71fd6e0bde10e0a5809c633e5d2", - "0x8982cb43fe4d3488c55e8c08b935e6c8d31bb57e4f2aeb76d6319470cce99ebf7dc2f116ac15b9d845ab1bc16aa6a583", - "0xa12c63f48e27b1a1c83a32992642f37fb5b89851a35e80f6d1f9bc483cb25acd0e12b1dcf68781ae0cc861f002368bcb", - "0xaa6da92a4b4fa229afc8007abca257ce0ff5fad3b1ccfe5d836b9b52ff6b72575a0b915a759403b993733b16a47fdb15", - "0x8bf706a92fe54f15d633b9463926b874dd43e28aaeca3fe2353fb58ad7753c8a293c56b0e94176070e8a9ec7401073a1", - "0xb81e86de4bb5c1046e40cca79585c5b98c8673626fd3a28e563c5a3296256c2f7086522ae95cbabfaa8f1a8f7eae6272", - "0xad10f895b05d35cb251f78cc042d3f0969a8b6b3f289ddb4b016e0b8e06bfffc3a3e1afa9b0cc548f8c092832bb766bc", - "0xad993aceb68d5217cfb07f862956cde83d05dec5060fc7a8fbfd37c6bfd5429ba69bdaf478b6cd01c323a06793dcd9fa", - "0x83da9c9a8fcb2775df0777aceabe90642a2df1c6abc646566e954f42d6e43455b00b101ec5ef58850c8d4b3100222ca1", - "0xb55484f339fe7c7d107e70432601f4a34e1cc02ae4de5d18b99e5aa995f7b3710fc745769b85c1af803d457491dd8ce3", - "0x8009d80593e82f3e751cec9e7e495fd29ad6f45f8d3ae513bec998b43c49fed74c44229c6f27c421e80c65413b897644", - "0x9868081bbcc71192f7ff8dcf99a91dcd40f96556fbd6f285bdbfdfc785f604d8bf75c368c59db5ac8cdcc663087db53a", - "0xa04b1e91af025b4387ee0a2d790a1afb842e46f4c3717e355578efd1f84fea78782c6f7944b4961268de7f1ac71fb92b", - "0xa7b6301ddb9738b89b28a36d29d5323264a78d93d369f57ddab4cea399c36018a1fcc2cc1bfadf956a775124ae2925bd", - "0xa6cdb469014b33c590a07a728ce48f15f17c027eb92055e1858a1f9805c8deb58491a471aaa765de86a6bda62a18aef4", - "0x828a23280ec67384a8846376378896037bd0cb5a6927ff9422fca266ee10a6fde5b95d963a4acfa92efbb0309cdb17b4", - "0xb498ec16bcdb50091647ae02d199d70c783d7c91348a1354661b1c42bc1266e5a5309b542ef5fdf5281d426819a671cb", - "0x806533fb603e78b63598ff390375eebe5b68380640f5e020e89a5430037db2e519ab8ae5d0d0ad3fa041921c098448e1", - "0x9104ad119681c54cdee19f0db92ebfe1da2fa6bef4177f5a383df84512d1b0af5cbe7baf6a93ad4b89138cd51c7c5838", - "0xac695cde30d021d9f4f295109890c4013f7e213d2150c9d5c85a36d4abfdca4cdc88faee9891e927a82fc204b988dcd9", - "0xa311c244df546d5dc76eccb91fe4c47055fc9d222d310b974d4c067923a29e7a7f6d5a88bfef72fd6d317471f80d5c82", - "0x89e4518335240479ad041a0915fc4f1afaab660bd4033c5d09c6707f0cc963eb2e6872cabc4a02169893943be7f847d4", - "0xa8ad395b784c83aacf133de50d6b23bd63b4f245bb9e180c11f568faca4c897f8dbda73335ef0f80a8cb548a0c3c48fc" + "0xb5bfd7dd8cdeb128843bc287230af38926187075cbfbefa81009a2ce615ac53d2914e5870cb452d2afaaab24f3499f72185cbfee53492714734429b7b38608e23926c911cceceac9a36851477ba4c60b087041de621000edc98edada20c1def2", + "0xb5337ba0ce5d37224290916e268e2060e5c14f3f9fc9e1ec3af5a958e7a0303122500ce18f1a4640bf66525bd10e763501fe986d86649d8d45143c08c3209db3411802c226e9fe9a55716ac4a0c14f9dcef9e70b2bb309553880dc5025eab3cc", + "0xb3c1dcdc1f62046c786f0b82242ef283e7ed8f5626f72542aa2c7a40f14d9094dd1ebdbd7457ffdcdac45fd7da7e16c51200b06d791e5e43e257e45efdf0bd5b06cd2333beca2a3a84354eb48662d83aef5ecf4e67658c851c10b13d8d87c874", + "0x954d91c7688983382609fca9e211e461f488a5971fd4e40d7e2892037268eacdfd495cfa0a7ed6eb0eb11ac3ae6f651716757e7526abe1e06c64649d80996fd3105c20c4c94bc2b22d97045356fe9d791f21ea6428ac48db6f9e68e30d875280", + "0x88a6b6bb26c51cf9812260795523973bb90ce80f6820b6c9048ab366f0fb96e48437a7f7cb62aedf64b11eb4dfefebb0147608793133d32003cb1f2dc47b13b5ff45f1bb1b2408ea45770a08dbfaec60961acb8119c47b139a13b8641e2c9487", + "0x85cd7be9728bd925d12f47fb04b32d9fad7cab88788b559f053e69ca18e463113ecc8bbb6dbfb024835f901b3a957d3108d6770fb26d4c8be0a9a619f6e3a4bf15cbfd48e61593490885f6cee30e4300c5f9cf5e1c08e60a2d5b023ee94fcad0", + "0x80477dba360f04399821a48ca388c0fa81102dd15687fea792ee8c1114e00d1bc4839ad37ac58900a118d863723acfbe08126ea883be87f50e4eabe3b5e72f5d9e041db8d9b186409fd4df4a7dde38c0e0a3b1ae29b098e5697e7f110b6b27e4", + "0xb7a6aec08715a9f8672a2b8c367e407be37e59514ac19dd4f0942a68007bba3923df22da48702c63c0d6b3efd3c2d04e0fe042d8b5a54d562f9f33afc4865dcbcc16e99029e25925580e87920c399e710d438ac1ce3a6dc9b0d76c064a01f6f7", + "0xac1b001edcea02c8258aeffbf9203114c1c874ad88dae1184fadd7d94cd09053649efd0ca413400e6e9b5fa4eac33261000af88b6bd0d2abf877a4f0355d2fb4d6007adb181695201c5432e50b850b51b3969f893bddf82126c5a71b042b7686", + "0x90043fda4de53fb364fab2c04be5296c215599105ecff0c12e4917c549257125775c29f2507124d15f56e30447f367db0596c33237242c02d83dfd058735f1e3c1ff99069af55773b6d51d32a68bf75763f59ec4ee7267932ae426522b8aaab6", + "0xa8660ce853e9dc08271bf882e29cd53397d63b739584dda5263da4c7cc1878d0cf6f3e403557885f557e184700575fee016ee8542dec22c97befe1d10f414d22e84560741cdb3e74c30dda9b42eeaaf53e27822de2ee06e24e912bf764a9a533", + "0x8fe3921a96d0d065e8aa8fce9aa42c8e1461ca0470688c137be89396dd05103606dab6cdd2a4591efd6addf72026c12e065da7be276dee27a7e30afa2bd81c18f1516e7f068f324d0bad9570b95f6bd02c727cd2343e26db0887c3e4e26dceda", + "0x8ae1ad97dcb9c192c9a3933541b40447d1dc4eebf380151440bbaae1e120cc5cdf1bcea55180b128d8e180e3af623815191d063cc0d7a47d55fb7687b9d87040bf7bc1a7546b07c61db5ccf1841372d7c2fe4a5431ffff829f3c2eb590b0b710", + "0x8c2fa96870a88150f7876c931e2d3cc2adeaaaf5c73ef5fa1cf9dfa0991ae4819f9321af7e916e5057d87338e630a2f21242c29d76963cf26035b548d2a63d8ad7bd6efefa01c1df502cbdfdfe0334fb21ceb9f686887440f713bf17a89b8081", + "0xb9aa98e2f02bb616e22ee5dd74c7d1049321ac9214d093a738159850a1dbcc7138cb8d26ce09d8296368fd5b291d74fa17ac7cc1b80840fdd4ee35e111501e3fa8485b508baecda7c1ab7bd703872b7d64a2a40b3210b6a70e8a6ffe0e5127e3", + "0x9292db67f8771cdc86854a3f614a73805bf3012b48f1541e704ea4015d2b6b9c9aaed36419769c87c49f9e3165f03edb159c23b3a49c4390951f78e1d9b0ad997129b17cdb57ea1a6638794c0cca7d239f229e589c5ae4f9fe6979f7f8cba1d7", + "0x91cd9e86550f230d128664f7312591fee6a84c34f5fc7aed557bcf986a409a6de722c4330453a305f06911d2728626e611acfdf81284f77f60a3a1595053a9479964fd713117e27c0222cc679674b03bc8001501aaf9b506196c56de29429b46", + "0xa9516b73f605cc31b89c68b7675dc451e6364595243d235339437f556cf22d745d4250c1376182273be2d99e02c10eee047410a43eff634d051aeb784e76cb3605d8e079b9eb6ad1957dfdf77e1cd32ce4a573c9dfcc207ca65af6eb187f6c3d", + "0xa9667271f7d191935cc8ad59ef3ec50229945faea85bfdfb0d582090f524436b348aaa0183b16a6231c00332fdac2826125b8c857a2ed9ec66821cfe02b3a2279be2412441bc2e369b255eb98614e4be8490799c4df22f18d47d24ec70bba5f7", + "0xa4371144d2aa44d70d3cb9789096d3aa411149a6f800cb46f506461ee8363c8724667974252f28aea61b6030c05930ac039c1ee64bb4bd56532a685cae182bf2ab935eee34718cffcb46cae214c77aaca11dbb1320faf23c47247db1da04d8dc", + "0x89a7eb441892260b7e81168c386899cd84ffc4a2c5cad2eae0d1ab9e8b5524662e6f660fe3f8bfe4c92f60b060811bc605b14c5631d16709266886d7885a5eb5930097127ec6fb2ebbaf2df65909cf48f253b3d5e22ae48d3e9a2fd2b01f447e", + "0x9648c42ca97665b5eccb49580d8532df05eb5a68db07f391a2340769b55119eaf4c52fe4f650c09250fa78a76c3a1e271799b8333cc2628e3d4b4a6a3e03da1f771ecf6516dd63236574a7864ff07e319a6f11f153406280d63af9e2b5713283", + "0x9663bf6dd446ea7a90658ee458578d4196dc0b175ef7fcfa75f44d41670850774c2e46c5a6be132a2c072a3c0180a24f0305d1acac49d2d79878e5cda80c57feda3d01a6af12e78b5874e2a4b3717f11c97503b41a4474e2e95b179113726199", + "0xb212aeb4814e0915b432711b317923ed2b09e076aaf558c3ae8ef83f9e15a83f9ea3f47805b2750ab9e8106cb4dc6ad003522c84b03dc02829978a097899c773f6fb31f7fe6b8f2d836d96580f216fec20158f1590c3e0d7850622e15194db05", + "0x925f005059bf07e9ceccbe66c711b048e236ade775720d0fe479aebe6e23e8af281225ad18e62458dc1b03b42ad4ca290d4aa176260604a7aad0d9791337006fbdebe23746f8060d42876f45e4c83c3643931392fde1cd13ff8bddf8111ef974", + "0x9553edb22b4330c568e156a59ef03b26f5c326424f830fe3e8c0b602f08c124730ffc40bc745bec1a22417adb22a1a960243a10565c2be3066bfdb841d1cd14c624cd06e0008f4beb83f972ce6182a303bee3fcbcabc6cfe48ec5ae4b7941bfc", + "0x935f5a404f0a78bdcce709899eda0631169b366a669e9b58eacbbd86d7b5016d044b8dfc59ce7ed8de743ae16c2343b50e2f925e88ba6319e33c3fc76b314043abad7813677b4615c8a97eb83cc79de4fedf6ccbcfa4d4cbf759a5a84e4d9742", + "0xa5b014ab936eb4be113204490e8b61cd38d71da0dec7215125bcd131bf3ab22d0a32ce645bca93e7b3637cf0c2db3d6601a0ddd330dc46f9fae82abe864ffc12d656c88eb50c20782e5bb6f75d18760666f43943abb644b881639083e122f557", + "0x935b7298ae52862fa22bf03bfc1795b34c70b181679ae27de08a9f5b4b884f824ef1b276b7600efa0d2f1d79e4a470d51692fd565c5cf8343dd80e5d3336968fc21c09ba9348590f6206d4424eb229e767547daefa98bc3aa9f421158dee3f2a", + "0x9830f92446e708a8f6b091cc3c38b653505414f8b6507504010a96ffda3bcf763d5331eb749301e2a1437f00e2415efb01b799ad4c03f4b02de077569626255ac1165f96ea408915d4cf7955047620da573e5c439671d1fa5c833fb11de7afe6", + "0x840dcc44f673fff3e387af2bb41e89640f2a70bcd2b92544876daa92143f67c7512faf5f90a04b7191de01f3e2b1bde00622a20dc62ca23bbbfaa6ad220613deff43908382642d4d6a86999f662efd64b1df448b68c847cfa87630a3ffd2ec76", + "0x92950c895ed54f7f876b2fda17ecc9c41b7accfbdd42c210cc5b475e0737a7279f558148531b5c916e310604a1de25a80940c94fe5389ae5d6a5e9c371be67bceea1877f5401725a6595bcf77ece60905151b6dfcb68b75ed2e708c73632f4fd", + "0x8010246bf8e94c25fd029b346b5fbadb404ef6f44a58fd9dd75acf62433d8cc6db66974f139a76e0c26dddc1f329a88214dbb63276516cf325c7869e855d07e0852d622c332ac55609ba1ec9258c45746a2aeb1af0800141ee011da80af175d4", + "0xb0f1bad257ebd187bdc3f37b23f33c6a5d6a8e1f2de586080d6ada19087b0e2bf23b79c1b6da1ee82271323f5bdf3e1b018586b54a5b92ab6a1a16bb3315190a3584a05e6c37d5ca1e05d702b9869e27f513472bcdd00f4d0502a107773097da", + "0x9636d24f1ede773ce919f309448dd7ce023f424afd6b4b69cb98c2a988d849a283646dc3e469879daa1b1edae91ae41f009887518e7eb5578f88469321117303cd3ac2d7aee4d9cb5f82ab9ae3458e796dfe7c24284b05815acfcaa270ff22e2", + "0xb373feb5d7012fd60578d7d00834c5c81df2a23d42794fed91aa9535a4771fde0341c4da882261785e0caca40bf83405143085e7f17e55b64f6c5c809680c20b050409bf3702c574769127c854d27388b144b05624a0e24a1cbcc4d08467005b", + "0xb15680648949ce69f82526e9b67d9b55ce5c537dc6ab7f3089091a9a19a6b90df7656794f6edc87fb387d21573ffc847062623685931c2790a508cbc8c6b231dd2c34f4d37d4706237b1407673605a604bcf6a50cc0b1a2db20485e22b02c17e", + "0x8817e46672d40c8f748081567b038a3165f87994788ec77ee8daea8587f5540df3422f9e120e94339be67f186f50952504cb44f61e30a5241f1827e501b2de53c4c64473bcc79ab887dd277f282fbfe47997a930dd140ac08b03efac88d81075", + "0xa6e4ef6c1d1098f95aae119905f87eb49b909d17f9c41bcfe51127aa25fee20782ea884a7fdf7d5e9c245b5a5b32230b07e0dbf7c6743bf52ee20e2acc0b269422bd6cf3c07115df4aa85b11b2c16630a07c974492d9cdd0ec325a3fabd95044", + "0x8634aa7c3d00e7f17150009698ce440d8e1b0f13042b624a722ace68ead870c3d2212fbee549a2c190e384d7d6ac37ce14ab962c299ea1218ef1b1489c98906c91323b94c587f1d205a6edd5e9d05b42d591c26494a6f6a029a2aadb5f8b6f67", + "0x821a58092900bdb73decf48e13e7a5012a3f88b06288a97b855ef51306406e7d867d613d9ec738ebacfa6db344b677d21509d93f3b55c2ebf3a2f2a6356f875150554c6fff52e62e3e46f7859be971bf7dd9d5b3e1d799749c8a97c2e04325df", + "0x8dba356577a3a388f782e90edb1a7f3619759f4de314ad5d95c7cc6e197211446819c4955f99c5fc67f79450d2934e3c09adefc91b724887e005c5190362245eec48ce117d0a94d6fa6db12eda4ba8dde608fbbd0051f54dcf3bb057adfb2493", + "0xa32a690dc95c23ed9fb46443d9b7d4c2e27053a7fcc216d2b0020a8cf279729c46114d2cda5772fd60a97016a07d6c5a0a7eb085a18307d34194596f5b541cdf01b2ceb31d62d6b55515acfd2b9eec92b27d082fbc4dc59fc63b551eccdb8468", + "0xa040f7f4be67eaf0a1d658a3175d65df21a7dbde99bfa893469b9b43b9d150fc2e333148b1cb88cfd0447d88fa1a501d126987e9fdccb2852ecf1ba907c2ca3d6f97b055e354a9789854a64ecc8c2e928382cf09dda9abde42bbdf92280cdd96", + "0x864baff97fa60164f91f334e0c9be00a152a416556b462f96d7c43b59fe1ebaff42f0471d0bf264976f8aa6431176eb905bd875024cf4f76c13a70bede51dc3e47e10b9d5652d30d2663b3af3f08d5d11b9709a0321aba371d2ef13174dcfcaf", + "0x95a46f32c994133ecc22db49bad2c36a281d6b574c83cfee6680b8c8100466ca034b815cfaedfbf54f4e75188e661df901abd089524e1e0eb0bf48d48caa9dd97482d2e8c1253e7e8ac250a32fd066d5b5cb08a8641bdd64ecfa48289dca83a3", + "0xa2cce2be4d12144138cb91066e0cd0542c80b478bf467867ebef9ddaf3bd64e918294043500bf5a9f45ee089a8d6ace917108d9ce9e4f41e7e860cbce19ac52e791db3b6dde1c4b0367377b581f999f340e1d6814d724edc94cb07f9c4730774", + "0xb145f203eee1ac0a1a1731113ffa7a8b0b694ef2312dabc4d431660f5e0645ef5838e3e624cfe1228cfa248d48b5760501f93e6ab13d3159fc241427116c4b90359599a4cb0a86d0bb9190aa7fabff482c812db966fd2ce0a1b48cb8ac8b3bca", + "0xadabe5d215c608696e03861cbd5f7401869c756b3a5aadc55f41745ad9478145d44393fec8bb6dfc4ad9236dc62b9ada0f7ca57fe2bae1b71565dbf9536d33a68b8e2090b233422313cc96afc7f1f7e0907dc7787806671541d6de8ce47c4cd0", + "0xae7845fa6b06db53201c1080e01e629781817f421f28956589c6df3091ec33754f8a4bd4647a6bb1c141ac22731e3c1014865d13f3ed538dcb0f7b7576435133d9d03be655f8fbb4c9f7d83e06d1210aedd45128c2b0c9bab45a9ddde1c862a5", + "0x9159eaa826a24adfa7adf6e8d2832120ebb6eccbeb3d0459ffdc338548813a2d239d22b26451fda98cc0c204d8e1ac69150b5498e0be3045300e789bcb4e210d5cd431da4bdd915a21f407ea296c20c96608ded0b70d07188e96e6c1a7b9b86b", + "0xa9fc6281e2d54b46458ef564ffaed6944bff71e389d0acc11fa35d3fcd8e10c1066e0dde5b9b6516f691bb478e81c6b20865281104dcb640e29dc116daae2e884f1fe6730d639dbe0e19a532be4fb337bf52ae8408446deb393d224eee7cfa50", + "0x84291a42f991bfb36358eedead3699d9176a38f6f63757742fdbb7f631f2c70178b1aedef4912fed7b6cf27e88ddc7eb0e2a6aa4b999f3eb4b662b93f386c8d78e9ac9929e21f4c5e63b12991fcde93aa64a735b75b535e730ff8dd2abb16e04", + "0xa1b7fcacae181495d91765dfddf26581e8e39421579c9cbd0dd27a40ea4c54af3444a36bf85a11dda2114246eaddbdd619397424bb1eb41b5a15004b902a590ede5742cd850cf312555be24d2df8becf48f5afba5a8cd087cb7be0a521728386", + "0x92feaaf540dbd84719a4889a87cdd125b7e995a6782911931fef26da9afcfbe6f86aaf5328fe1f77631491ce6239c5470f44c7791506c6ef1626803a5794e76d2be0af92f7052c29ac6264b7b9b51f267ad820afc6f881460521428496c6a5f1", + "0xa525c925bfae1b89320a5054acc1fa11820f73d0cf28d273092b305467b2831fab53b6daf75fb926f332782d50e2522a19edcd85be5eb72f1497193c952d8cd0bcc5d43b39363b206eae4cb1e61668bde28a3fb2fc1e0d3d113f6dfadb799717", + "0x98752bb6f5a44213f40eda6aa4ff124057c1b13b6529ab42fe575b9afa66e59b9c0ed563fb20dff62130c436c3e905ee17dd8433ba02c445b1d67182ab6504a90bbe12c26a754bbf734665c622f76c62fe2e11dd43ce04fd2b91a8463679058b", + "0xa9aa9a84729f7c44219ff9e00e651e50ddea3735ef2a73fdf8ed8cd271961d8ed7af5cd724b713a89a097a3fe65a3c0202f69458a8b4c157c62a85668b12fc0d3957774bc9b35f86c184dd03bfefd5c325da717d74192cc9751c2073fe9d170e", + "0xb221c1fd335a4362eff504cd95145f122bf93ea02ae162a3fb39c75583fc13a932d26050e164da97cff3e91f9a7f6ff80302c19dd1916f24acf6b93b62f36e9665a8785413b0c7d930c7f1668549910f849bca319b00e59dd01e5dec8d2edacc", + "0xa71e2b1e0b16d754b848f05eda90f67bedab37709550171551050c94efba0bfc282f72aeaaa1f0330041461f5e6aa4d11537237e955e1609a469d38ed17f5c2a35a1752f546db89bfeff9eab78ec944266f1cb94c1db3334ab48df716ce408ef", + "0xb990ae72768779ba0b2e66df4dd29b3dbd00f901c23b2b4a53419226ef9232acedeb498b0d0687c463e3f1eead58b20b09efcefa566fbfdfe1c6e48d32367936142d0a734143e5e63cdf86be7457723535b787a9cfcfa32fe1d61ad5a2617220", + "0x8d27e7fbff77d5b9b9bbc864d5231fecf817238a6433db668d5a62a2c1ee1e5694fdd90c3293c06cc0cb15f7cbeab44d0d42be632cb9ff41fc3f6628b4b62897797d7b56126d65b694dcf3e298e3561ac8813fbd7296593ced33850426df42db", + "0xa92039a08b5502d5b211a7744099c9f93fa8c90cedcb1d05e92f01886219dd464eb5fb0337496ad96ed09c987da4e5f019035c5b01cc09b2a18b8a8dd419bc5895388a07e26958f6bd26751929c25f89b8eb4a299d822e2d26fec9ef350e0d3c", + "0x92dcc5a1c8c3e1b28b1524e3dd6dbecd63017c9201da9dbe077f1b82adc08c50169f56fc7b5a3b28ec6b89254de3e2fd12838a761053437883c3e01ba616670cea843754548ef84bcc397de2369adcca2ab54cd73c55dc68d87aec3fc2fe4f10" ] } \ No newline at end of file diff --git a/go.mod b/go.mod index 9eed6e5c78..4901030311 100644 --- a/go.mod +++ b/go.mod @@ -16,12 +16,12 @@ require ( github.com/cockroachdb/errors v1.8.1 github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 github.com/consensys/gnark-crypto v0.12.1 - github.com/crate-crypto/go-kzg-4844 v0.3.0 + github.com/crate-crypto/go-kzg-4844 v0.7.0 github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/docker/docker v24.0.5+incompatible github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum/c-kzg-4844 v0.3.1 + github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 diff --git a/go.sum b/go.sum index 44b705336a..6017c9f77e 100644 --- a/go.sum +++ b/go.sum @@ -147,8 +147,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHH github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80 h1:DuBDHVjgGMPki7bAyh91+3cF1Vh34sAEdH8JQgbc2R0= github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80/go.mod h1:gzbVz57IDJgQ9rLQwfSk696JGWof8ftznEL9GoAv3NI= -github.com/crate-crypto/go-kzg-4844 v0.3.0 h1:UBlWE0CgyFqqzTI+IFyCzA7A3Zw4iip6uzRv5NIXG0A= -github.com/crate-crypto/go-kzg-4844 v0.3.0/go.mod h1:SBP7ikXEgDnUPONgm33HtuDZEDtWa3L4QtN1ocJSEQ4= +github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= +github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -183,8 +183,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum/c-kzg-4844 v0.3.1 h1:sR65+68+WdnMKxseNWxSJuAv2tsUrihTpVBTfM/U5Zg= -github.com/ethereum/c-kzg-4844 v0.3.1/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= +github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= From ffc6a0f36edda396a8421cf7a3c0feb88be20d0b Mon Sep 17 00:00:00 2001 From: Inphi Date: Sun, 22 Oct 2023 11:37:56 -0400 Subject: [PATCH 015/223] event: fix Resubscribe deadlock when unsubscribing after inner sub ends (#28359) A goroutine is used to manage the lifetime of subscriptions managed by resubscriptions. When the subscription ends with no error, the resub goroutine ends as well. However, the resub goroutine needs to live long enough to read from the unsub channel. Otheriwse, an Unsubscribe call deadlocks when writing to the unsub channel. This is fixed by adding a buffer to the unsub channel. --- event/subscription.go | 2 +- event/subscription_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/event/subscription.go b/event/subscription.go index 6c62874719..07e059c6db 100644 --- a/event/subscription.go +++ b/event/subscription.go @@ -120,7 +120,7 @@ func ResubscribeErr(backoffMax time.Duration, fn ResubscribeErrFunc) Subscriptio backoffMax: backoffMax, fn: fn, err: make(chan error), - unsub: make(chan struct{}), + unsub: make(chan struct{}, 1), } go s.loop() return s diff --git a/event/subscription_test.go b/event/subscription_test.go index ba081705c4..743d0bf67d 100644 --- a/event/subscription_test.go +++ b/event/subscription_test.go @@ -154,3 +154,27 @@ func TestResubscribeWithErrorHandler(t *testing.T) { t.Fatalf("unexpected subscription errors %v, want %v", subErrs, expectedSubErrs) } } + +func TestResubscribeWithCompletedSubscription(t *testing.T) { + t.Parallel() + + quitProducerAck := make(chan struct{}) + quitProducer := make(chan struct{}) + + sub := ResubscribeErr(100*time.Millisecond, func(ctx context.Context, lastErr error) (Subscription, error) { + return NewSubscription(func(unsubscribed <-chan struct{}) error { + select { + case <-quitProducer: + quitProducerAck <- struct{}{} + return nil + case <-unsubscribed: + return nil + } + }), nil + }) + + // Ensure producer has started and exited before Unsubscribe + close(quitProducer) + <-quitProducerAck + sub.Unsubscribe() +} From 6c6982163bb56c3764aba99bff0bf3d65ba73cc8 Mon Sep 17 00:00:00 2001 From: aaronbuchwald Date: Mon, 23 Oct 2023 01:24:32 -0400 Subject: [PATCH 016/223] core/state/pruner: track number of skipped items during state pruning (#28368) --- core/state/pruner/pruner.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/core/state/pruner/pruner.go b/core/state/pruner/pruner.go index 5acf54f642..a0f95078d0 100644 --- a/core/state/pruner/pruner.go +++ b/core/state/pruner/pruner.go @@ -125,12 +125,12 @@ func prune(snaptree *snapshot.Tree, root common.Hash, maindb ethdb.Database, sta // dangling node is the state root is super low. So the dangling nodes in // theory will never ever be visited again. var ( - count int - size common.StorageSize - pstart = time.Now() - logged = time.Now() - batch = maindb.NewBatch() - iter = maindb.NewIterator(nil, nil) + skipped, count int + size common.StorageSize + pstart = time.Now() + logged = time.Now() + batch = maindb.NewBatch() + iter = maindb.NewIterator(nil, nil) ) for iter.Next() { key := iter.Key() @@ -149,6 +149,7 @@ func prune(snaptree *snapshot.Tree, root common.Hash, maindb ethdb.Database, sta log.Debug("Forcibly delete the middle state roots", "hash", common.BytesToHash(checkKey)) } else { if stateBloom.Contain(checkKey) { + skipped += 1 continue } } @@ -165,7 +166,7 @@ func prune(snaptree *snapshot.Tree, root common.Hash, maindb ethdb.Database, sta eta = time.Duration(left/speed) * time.Millisecond } if time.Since(logged) > 8*time.Second { - log.Info("Pruning state data", "nodes", count, "size", size, + log.Info("Pruning state data", "nodes", count, "skipped", skipped, "size", size, "elapsed", common.PrettyDuration(time.Since(pstart)), "eta", common.PrettyDuration(eta)) logged = time.Now() } From 54f35c68be666addf2d5d625ff2dbbb391383aca Mon Sep 17 00:00:00 2001 From: kaliubuntu0206 <139627505+kaliubuntu0206@users.noreply.github.com> Date: Mon, 23 Oct 2023 22:06:05 +0900 Subject: [PATCH 017/223] ethstats: fix bug in block reporting (#28398) Fixes a bug where the ethstats omits to report full block contents. This bug was a side-effect of https://github.com/ethereum/go-ethereum/pull/26777, where `CurrentBlock` was changed to return a header instead of a block, leading to a failed type assertion. --- ethstats/ethstats.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go index e059844a17..84a6722806 100644 --- a/ethstats/ethstats.go +++ b/ethstats/ethstats.go @@ -76,12 +76,18 @@ type backend interface { // reporting to ethstats type fullNodeBackend interface { backend - Miner() *miner.Miner BlockByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Block, error) - CurrentBlock() *types.Block + CurrentBlock() *types.Header SuggestGasTipCap(ctx context.Context) (*big.Int, error) } +// miningNodeBackend encompasses the functionality necessary for a mining node +// reporting to ethstats +type miningNodeBackend interface { + fullNodeBackend + Miner() *miner.Miner +} + // Service implements an Ethereum netstats reporting daemon that pushes local // chain statistics up to a monitoring server. type Service struct { @@ -634,7 +640,8 @@ func (s *Service) assembleBlockStats(block *types.Block) *blockStats { fullBackend, ok := s.backend.(fullNodeBackend) if ok { if block == nil { - block = fullBackend.CurrentBlock() + head := fullBackend.CurrentBlock() + block, _ = fullBackend.BlockByNumber(context.Background(), rpc.BlockNumber(head.Number.Uint64())) } header = block.Header() td = fullBackend.GetTd(context.Background(), header.Hash()) @@ -779,10 +786,11 @@ func (s *Service) reportStats(conn *connWrapper) error { gasprice int ) // check if backend is a full node - fullBackend, ok := s.backend.(fullNodeBackend) - if ok { - mining = fullBackend.Miner().Mining() - hashrate = int(fullBackend.Miner().Hashrate()) + if fullBackend, ok := s.backend.(fullNodeBackend); ok { + if miningBackend, ok := s.backend.(miningNodeBackend); ok { + mining = miningBackend.Miner().Mining() + hashrate = int(miningBackend.Miner().Hashrate()) + } sync := fullBackend.SyncProgress() syncing = fullBackend.CurrentHeader().Number.Uint64() >= sync.HighestBlock From 062598bb40434a3cf9d37bca411eaa80d6a2808d Mon Sep 17 00:00:00 2001 From: hyunchel <3271191+hyunchel@users.noreply.github.com> Date: Mon, 23 Oct 2023 09:23:41 -0400 Subject: [PATCH 018/223] core/blockchain: fix typos and grammar (#28295) --- core/blockchain.go | 7 +++---- core/blockchain_test.go | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index fc5c249ce2..f458da8257 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -344,7 +344,7 @@ func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, genesis *Genesis if head.Number.Uint64() == 0 { // The genesis state is missing, which is only possible in the path-based // scheme. This situation occurs when the initial state sync is not finished - // yet, or the chain head is rewound below the pivot point. In both scenario, + // yet, or the chain head is rewound below the pivot point. In both scenarios, // there is no possible recovery approach except for rerunning a snap sync. // Do nothing here until the state syncer picks it up. log.Info("Genesis state is missing, wait state sync") @@ -666,9 +666,8 @@ func (bc *BlockChain) setHeadBeyondRoot(head uint64, time uint64, root common.Ha log.Error("Gap in the chain, rewinding to genesis", "number", header.Number, "hash", header.Hash()) newHeadBlock = bc.genesisBlock } else { - // Block exists, keep rewinding until we find one with state, - // keeping rewinding until we exceed the optional threshold - // root hash + // Block exists. Keep rewinding until either we find one with state + // or until we exceed the optional threshold root hash beyondRoot := (root == common.Hash{}) // Flag whether we're beyond the requested root (no root, always true) for { diff --git a/core/blockchain_test.go b/core/blockchain_test.go index 992f8d168f..bc6f8112f0 100644 --- a/core/blockchain_test.go +++ b/core/blockchain_test.go @@ -49,7 +49,7 @@ var ( ) // newCanonical creates a chain database, and injects a deterministic canonical -// chain. Depending on the full flag, if creates either a full block chain or a +// chain. Depending on the full flag, it creates either a full block chain or a // header only chain. The database and genesis specification for block generation // are also returned in case more test blocks are needed later. func newCanonical(engine consensus.Engine, n int, full bool, scheme string) (ethdb.Database, *Genesis, *BlockChain, error) { From 3853f500824080b17183633fc4dad2e16cd68574 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Mon, 23 Oct 2023 21:46:39 +0800 Subject: [PATCH 019/223] trie/triedb/pathdb, core/rawdb: enhance error message in freezer (#28198) This PR adds more error message for debugging purpose. --- core/rawdb/freezer_resettable.go | 2 ++ core/rawdb/freezer_table.go | 21 ++++++++++---- trie/triedb/pathdb/history.go | 22 +++++++++++++-- trie/triedb/pathdb/history_test.go | 44 ++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 7 deletions(-) diff --git a/core/rawdb/freezer_resettable.go b/core/rawdb/freezer_resettable.go index 0a3892bcdf..1df6411a39 100644 --- a/core/rawdb/freezer_resettable.go +++ b/core/rawdb/freezer_resettable.go @@ -22,6 +22,7 @@ import ( "sync" "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" ) const tmpSuffix = ".tmp" @@ -224,6 +225,7 @@ func cleanup(path string) error { } for _, name := range names { if name == filepath.Base(path)+tmpSuffix { + log.Info("Removed leftover freezer directory", "name", name) return os.RemoveAll(filepath.Join(parent, name)) } } diff --git a/core/rawdb/freezer_table.go b/core/rawdb/freezer_table.go index cb32d61ae8..e3353cc7d5 100644 --- a/core/rawdb/freezer_table.go +++ b/core/rawdb/freezer_table.go @@ -257,6 +257,12 @@ func (t *freezerTable) repair() error { t.index.ReadAt(buffer, offsetsSize-indexEntrySize) lastIndex.unmarshalBinary(buffer) } + // Print an error log if the index is corrupted due to an incorrect + // last index item. While it is theoretically possible to have a zero offset + // by storing all zero-size items, it is highly unlikely to occur in practice. + if lastIndex.offset == 0 && offsetsSize%indexEntrySize > 1 { + log.Error("Corrupted index file detected", "lastOffset", lastIndex.offset, "items", offsetsSize%indexEntrySize-1) + } if t.readonly { t.head, err = t.openFile(lastIndex.filenum, openFreezerFileForReadOnly) } else { @@ -349,7 +355,7 @@ func (t *freezerTable) repair() error { return err } if verbose { - t.logger.Info("Chain freezer table opened", "items", t.items.Load(), "size", t.headBytes) + t.logger.Info("Chain freezer table opened", "items", t.items.Load(), "deleted", t.itemOffset.Load(), "hidden", t.itemHidden.Load(), "tailId", t.tailId, "headId", t.headId, "size", t.headBytes) } else { t.logger.Debug("Chain freezer table opened", "items", t.items.Load(), "size", common.StorageSize(t.headBytes)) } @@ -522,6 +528,10 @@ func (t *freezerTable) truncateTail(items uint64) error { if err := t.meta.Sync(); err != nil { return err } + // Close the index file before shorten it. + if err := t.index.Close(); err != nil { + return err + } // Truncate the deleted index entries from the index file. err = copyFrom(t.index.Name(), t.index.Name(), indexEntrySize*(newDeleted-deleted+1), func(f *os.File) error { tailIndex := indexEntry{ @@ -535,13 +545,14 @@ func (t *freezerTable) truncateTail(items uint64) error { return err } // Reopen the modified index file to load the changes - if err := t.index.Close(); err != nil { - return err - } t.index, err = openFreezerFileForAppend(t.index.Name()) if err != nil { return err } + // Sync the file to ensure changes are flushed to disk + if err := t.index.Sync(); err != nil { + return err + } // Release any files before the current tail t.tailId = newTailId t.itemOffset.Store(newDeleted) @@ -774,7 +785,7 @@ func (t *freezerTable) retrieveItems(start, count, maxBytes uint64) ([]byte, []i return fmt.Errorf("missing data file %d", fileId) } if _, err := dataFile.ReadAt(output[len(output)-length:], int64(start)); err != nil { - return err + return fmt.Errorf("%w, fileid: %d, start: %d, length: %d", err, fileId, start, length) } return nil } diff --git a/trie/triedb/pathdb/history.go b/trie/triedb/pathdb/history.go index ce82532507..6f33b61859 100644 --- a/trie/triedb/pathdb/history.go +++ b/trie/triedb/pathdb/history.go @@ -581,7 +581,16 @@ func truncateFromHead(db ethdb.Batcher, freezer *rawdb.ResettableFreezer, nhead if err != nil { return 0, err } - if ohead <= nhead { + otail, err := freezer.Tail() + if err != nil { + return 0, err + } + // Ensure that the truncation target falls within the specified range. + if ohead < nhead || nhead < otail { + return 0, fmt.Errorf("out of range, tail: %d, head: %d, target: %d", otail, ohead, nhead) + } + // Short circuit if nothing to truncate. + if ohead == nhead { return 0, nil } // Load the meta objects in range [nhead+1, ohead] @@ -610,11 +619,20 @@ func truncateFromHead(db ethdb.Batcher, freezer *rawdb.ResettableFreezer, nhead // truncateFromTail removes the extra state histories from the tail with the given // parameters. It returns the number of items removed from the tail. func truncateFromTail(db ethdb.Batcher, freezer *rawdb.ResettableFreezer, ntail uint64) (int, error) { + ohead, err := freezer.Ancients() + if err != nil { + return 0, err + } otail, err := freezer.Tail() if err != nil { return 0, err } - if otail >= ntail { + // Ensure that the truncation target falls within the specified range. + if otail > ntail || ntail > ohead { + return 0, fmt.Errorf("out of range, tail: %d, head: %d, target: %d", otail, ohead, ntail) + } + // Short circuit if nothing to truncate. + if otail == ntail { return 0, nil } // Load the meta objects in range [otail+1, ntail] diff --git a/trie/triedb/pathdb/history_test.go b/trie/triedb/pathdb/history_test.go index 677103e2b0..a3257441de 100644 --- a/trie/triedb/pathdb/history_test.go +++ b/trie/triedb/pathdb/history_test.go @@ -224,6 +224,50 @@ func TestTruncateTailHistories(t *testing.T) { } } +func TestTruncateOutOfRange(t *testing.T) { + var ( + hs = makeHistories(10) + db = rawdb.NewMemoryDatabase() + freezer, _ = openFreezer(t.TempDir(), false) + ) + defer freezer.Close() + + for i := 0; i < len(hs); i++ { + accountData, storageData, accountIndex, storageIndex := hs[i].encode() + rawdb.WriteStateHistory(freezer, uint64(i+1), hs[i].meta.encode(), accountIndex, storageIndex, accountData, storageData) + rawdb.WriteStateID(db, hs[i].meta.root, uint64(i+1)) + } + truncateFromTail(db, freezer, uint64(len(hs)/2)) + + // Ensure of-out-range truncations are rejected correctly. + head, _ := freezer.Ancients() + tail, _ := freezer.Tail() + + cases := []struct { + mode int + target uint64 + expErr error + }{ + {0, head, nil}, // nothing to delete + {0, head + 1, fmt.Errorf("out of range, tail: %d, head: %d, target: %d", tail, head, head+1)}, + {0, tail - 1, fmt.Errorf("out of range, tail: %d, head: %d, target: %d", tail, head, tail-1)}, + {1, tail, nil}, // nothing to delete + {1, head + 1, fmt.Errorf("out of range, tail: %d, head: %d, target: %d", tail, head, head+1)}, + {1, tail - 1, fmt.Errorf("out of range, tail: %d, head: %d, target: %d", tail, head, tail-1)}, + } + for _, c := range cases { + var gotErr error + if c.mode == 0 { + _, gotErr = truncateFromHead(db, freezer, c.target) + } else { + _, gotErr = truncateFromTail(db, freezer, c.target) + } + if !reflect.DeepEqual(gotErr, c.expErr) { + t.Errorf("Unexpected error, want: %v, got: %v", c.expErr, gotErr) + } + } +} + // openFreezer initializes the freezer instance for storing state histories. func openFreezer(datadir string, readOnly bool) (*rawdb.ResettableFreezer, error) { return rawdb.NewStateFreezer(datadir, readOnly) From 43e6a3c1965085d31dcb8ba4df05f94803366a14 Mon Sep 17 00:00:00 2001 From: Delweng Date: Mon, 23 Oct 2023 23:25:26 +0800 Subject: [PATCH 020/223] graphql: return error if block from>to (#28393) As per discussion in ethereum/execution-apis#475 --- graphql/graphql.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/graphql/graphql.go b/graphql/graphql.go index 8304a64cf4..ec7382f80a 100644 --- a/graphql/graphql.go +++ b/graphql/graphql.go @@ -41,7 +41,8 @@ import ( ) var ( - errBlockInvariant = errors.New("block objects must be instantiated with at least one of num or hash") + errBlockInvariant = errors.New("block objects must be instantiated with at least one of num or hash") + errInvalidBlockRange = errors.New("invalid from and to block combination: from > to") ) type Long int64 @@ -1333,7 +1334,7 @@ func (r *Resolver) Blocks(ctx context.Context, args struct { to = rpc.BlockNumber(r.backend.CurrentBlock().Number.Int64()) } if to < from { - return []*Block{}, nil + return nil, errInvalidBlockRange } var ret []*Block for i := from; i <= to; i++ { From ab04aeb855605de51dd1e933f45eb84ad877e715 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Mon, 23 Oct 2023 23:31:56 +0800 Subject: [PATCH 021/223] core, eth, trie: filter out boundary nodes and remove dangling nodes in stacktrie (#28327) * core, eth, trie: filter out boundary nodes in stacktrie * eth/protocol/snap: add comments * Update trie/stacktrie.go Co-authored-by: Martin Holst Swende * eth, trie: remove onBoundary callback * eth/protocols/snap: keep complete boundary nodes * eth/protocols/snap: skip healing if the storage trie is already complete * eth, trie: add more metrics * eth, trie: address comment --------- Co-authored-by: Martin Holst Swende --- eth/protocols/snap/metrics.go | 28 ++++++++++ eth/protocols/snap/sync.go | 99 +++++++++++++++++++++++++++++++++-- trie/stacktrie.go | 83 ++++++++++++++++++++++++++--- trie/stacktrie_test.go | 87 ++++++++++++++++++++++++++++++ trie/sync.go | 26 +++++++++ 5 files changed, 312 insertions(+), 11 deletions(-) diff --git a/eth/protocols/snap/metrics.go b/eth/protocols/snap/metrics.go index a9f35ca447..a7d071953f 100644 --- a/eth/protocols/snap/metrics.go +++ b/eth/protocols/snap/metrics.go @@ -26,4 +26,32 @@ var ( IngressRegistrationErrorMeter = metrics.NewRegisteredMeter(ingressRegistrationErrorName, nil) EgressRegistrationErrorMeter = metrics.NewRegisteredMeter(egressRegistrationErrorName, nil) + + // deletionGauge is the metric to track how many trie node deletions + // are performed in total during the sync process. + deletionGauge = metrics.NewRegisteredGauge("eth/protocols/snap/sync/delete", nil) + + // lookupGauge is the metric to track how many trie node lookups are + // performed to determine if node needs to be deleted. + lookupGauge = metrics.NewRegisteredGauge("eth/protocols/snap/sync/lookup", nil) + + // boundaryAccountNodesGauge is the metric to track how many boundary trie + // nodes in account trie are met. + boundaryAccountNodesGauge = metrics.NewRegisteredGauge("eth/protocols/snap/sync/boundary/account", nil) + + // boundaryAccountNodesGauge is the metric to track how many boundary trie + // nodes in storage tries are met. + boundaryStorageNodesGauge = metrics.NewRegisteredGauge("eth/protocols/snap/sync/boundary/storage", nil) + + // smallStorageGauge is the metric to track how many storages are small enough + // to retrieved in one or two request. + smallStorageGauge = metrics.NewRegisteredGauge("eth/protocols/snap/sync/storage/small", nil) + + // largeStorageGauge is the metric to track how many storages are large enough + // to retrieved concurrently. + largeStorageGauge = metrics.NewRegisteredGauge("eth/protocols/snap/sync/storage/large", nil) + + // skipStorageHealingGauge is the metric to track how many storages are retrieved + // in multiple requests but healing is not necessary. + skipStorageHealingGauge = metrics.NewRegisteredGauge("eth/protocols/snap/sync/storage/noheal", nil) ) diff --git a/eth/protocols/snap/sync.go b/eth/protocols/snap/sync.go index 041bf32b99..887a50775d 100644 --- a/eth/protocols/snap/sync.go +++ b/eth/protocols/snap/sync.go @@ -716,6 +716,19 @@ func (s *Syncer) Sync(root common.Hash, cancel chan struct{}) error { } } +// cleanPath is used to remove the dangling nodes in the stackTrie. +func (s *Syncer) cleanPath(batch ethdb.Batch, owner common.Hash, path []byte) { + if owner == (common.Hash{}) && rawdb.ExistsAccountTrieNode(s.db, path) { + rawdb.DeleteAccountTrieNode(batch, path) + deletionGauge.Inc(1) + } + if owner != (common.Hash{}) && rawdb.ExistsStorageTrieNode(s.db, owner, path) { + rawdb.DeleteStorageTrieNode(batch, owner, path) + deletionGauge.Inc(1) + } + lookupGauge.Inc(1) +} + // loadSyncStatus retrieves a previously aborted sync status from the database, // or generates a fresh one if none is available. func (s *Syncer) loadSyncStatus() { @@ -742,6 +755,17 @@ func (s *Syncer) loadSyncStatus() { options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(task.genBatch, common.Hash{}, path, hash, blob, s.scheme) }) + if s.scheme == rawdb.PathScheme { + // Configure the dangling node cleaner and also filter out boundary nodes + // only in the context of the path scheme. Deletion is forbidden in the + // hash scheme, as it can disrupt state completeness. + options = options.WithCleaner(func(path []byte) { + s.cleanPath(task.genBatch, common.Hash{}, path) + }) + // Skip the left boundary if it's not the first range. + // Skip the right boundary if it's not the last range. + options = options.WithSkipBoundary(task.Next != (common.Hash{}), task.Last != common.MaxHash, boundaryAccountNodesGauge) + } task.genTrie = trie.NewStackTrie(options) for accountHash, subtasks := range task.SubTasks { for _, subtask := range subtasks { @@ -758,6 +782,17 @@ func (s *Syncer) loadSyncStatus() { options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(subtask.genBatch, owner, path, hash, blob, s.scheme) }) + if s.scheme == rawdb.PathScheme { + // Configure the dangling node cleaner and also filter out boundary nodes + // only in the context of the path scheme. Deletion is forbidden in the + // hash scheme, as it can disrupt state completeness. + options = options.WithCleaner(func(path []byte) { + s.cleanPath(subtask.genBatch, owner, path) + }) + // Skip the left boundary if it's not the first range. + // Skip the right boundary if it's not the last range. + options = options.WithSkipBoundary(subtask.Next != common.Hash{}, subtask.Last != common.MaxHash, boundaryStorageNodesGauge) + } subtask.genTrie = trie.NewStackTrie(options) } } @@ -814,6 +849,17 @@ func (s *Syncer) loadSyncStatus() { options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(batch, common.Hash{}, path, hash, blob, s.scheme) }) + if s.scheme == rawdb.PathScheme { + // Configure the dangling node cleaner and also filter out boundary nodes + // only in the context of the path scheme. Deletion is forbidden in the + // hash scheme, as it can disrupt state completeness. + options = options.WithCleaner(func(path []byte) { + s.cleanPath(batch, common.Hash{}, path) + }) + // Skip the left boundary if it's not the first range. + // Skip the right boundary if it's not the last range. + options = options.WithSkipBoundary(next != common.Hash{}, last != common.MaxHash, boundaryAccountNodesGauge) + } s.tasks = append(s.tasks, &accountTask{ Next: next, Last: last, @@ -1968,6 +2014,7 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { if res.subTask == nil && res.mainTask.needState[j] && (i < len(res.hashes)-1 || !res.cont) { res.mainTask.needState[j] = false res.mainTask.pend-- + smallStorageGauge.Inc(1) } // If the last contract was chunked, mark it as needing healing // to avoid writing it out to disk prematurely. @@ -2003,7 +2050,11 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { log.Debug("Chunked large contract", "initiators", len(keys), "tail", lastKey, "chunks", chunks) } r := newHashRange(lastKey, chunks) - + if chunks == 1 { + smallStorageGauge.Inc(1) + } else { + largeStorageGauge.Inc(1) + } // Our first task is the one that was just filled by this response. batch := ethdb.HookedBatch{ Batch: s.db.NewBatch(), @@ -2016,6 +2067,14 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(batch, owner, path, hash, blob, s.scheme) }) + if s.scheme == rawdb.PathScheme { + options = options.WithCleaner(func(path []byte) { + s.cleanPath(batch, owner, path) + }) + // Keep the left boundary as it's the first range. + // Skip the right boundary if it's not the last range. + options = options.WithSkipBoundary(false, r.End() != common.MaxHash, boundaryStorageNodesGauge) + } tasks = append(tasks, &storageTask{ Next: common.Hash{}, Last: r.End(), @@ -2034,6 +2093,17 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(batch, owner, path, hash, blob, s.scheme) }) + if s.scheme == rawdb.PathScheme { + // Configure the dangling node cleaner and also filter out boundary nodes + // only in the context of the path scheme. Deletion is forbidden in the + // hash scheme, as it can disrupt state completeness. + options = options.WithCleaner(func(path []byte) { + s.cleanPath(batch, owner, path) + }) + // Skip the left boundary as it's not the first range + // Skip the right boundary if it's not the last range. + options = options.WithSkipBoundary(true, r.End() != common.MaxHash, boundaryStorageNodesGauge) + } tasks = append(tasks, &storageTask{ Next: r.Start(), Last: r.End(), @@ -2089,6 +2159,17 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { rawdb.WriteTrieNode(batch, account, path, hash, blob, s.scheme) }) + if s.scheme == rawdb.PathScheme { + // Configure the dangling node cleaner only in the context of the + // path scheme. Deletion is forbidden in the hash scheme, as it can + // disrupt state completeness. + // + // Notably, boundary nodes can be also kept because the whole storage + // trie is complete. + options = options.WithCleaner(func(path []byte) { + s.cleanPath(batch, account, path) + }) + } tr := trie.NewStackTrie(options) for j := 0; j < len(res.hashes[i]); j++ { tr.Update(res.hashes[i][j][:], res.slots[i][j]) @@ -2112,16 +2193,24 @@ func (s *Syncer) processStorageResponse(res *storageResponse) { if res.subTask != nil { if res.subTask.done { root := res.subTask.genTrie.Commit() - if root == res.subTask.root { - // If the chunk's root is an overflown but full delivery, clear the heal request + if err := res.subTask.genBatch.Write(); err != nil { + log.Error("Failed to persist stack slots", "err", err) + } + res.subTask.genBatch.Reset() + + // If the chunk's root is an overflown but full delivery, + // clear the heal request. + accountHash := res.accounts[len(res.accounts)-1] + if root == res.subTask.root && rawdb.HasStorageTrieNode(s.db, accountHash, nil, root) { for i, account := range res.mainTask.res.hashes { - if account == res.accounts[len(res.accounts)-1] { + if account == accountHash { res.mainTask.needHeal[i] = false + skipStorageHealingGauge.Inc(1) } } } } - if res.subTask.genBatch.ValueSize() > ethdb.IdealBatchSize || res.subTask.done { + if res.subTask.genBatch.ValueSize() > ethdb.IdealBatchSize { if err := res.subTask.genBatch.Write(); err != nil { log.Error("Failed to persist stack slots", "err", err) } diff --git a/trie/stacktrie.go b/trie/stacktrie.go index 09c3402663..423afdec88 100644 --- a/trie/stacktrie.go +++ b/trie/stacktrie.go @@ -17,11 +17,13 @@ package trie import ( + "bytes" "sync" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/metrics" ) var ( @@ -31,7 +33,12 @@ var ( // StackTrieOptions contains the configured options for manipulating the stackTrie. type StackTrieOptions struct { - Writer func(path []byte, hash common.Hash, blob []byte) // The function to commit the dirty nodes + Writer func(path []byte, hash common.Hash, blob []byte) // The function to commit the dirty nodes + Cleaner func(path []byte) // The function to clean up dangling nodes + + SkipLeftBoundary bool // Flag whether the nodes on the left boundary are skipped for committing + SkipRightBoundary bool // Flag whether the nodes on the right boundary are skipped for committing + boundaryGauge metrics.Gauge // Gauge to track how many boundary nodes are met } // NewStackTrieOptions initializes an empty options for stackTrie. @@ -43,6 +50,22 @@ func (o *StackTrieOptions) WithWriter(writer func(path []byte, hash common.Hash, return o } +// WithCleaner configures the cleaner in the option for removing dangling nodes. +func (o *StackTrieOptions) WithCleaner(cleaner func(path []byte)) *StackTrieOptions { + o.Cleaner = cleaner + return o +} + +// WithSkipBoundary configures whether the left and right boundary nodes are +// filtered for committing, along with a gauge metrics to track how many +// boundary nodes are met. +func (o *StackTrieOptions) WithSkipBoundary(skipLeft, skipRight bool, gauge metrics.Gauge) *StackTrieOptions { + o.SkipLeftBoundary = skipLeft + o.SkipRightBoundary = skipRight + o.boundaryGauge = gauge + return o +} + // StackTrie is a trie implementation that expects keys to be inserted // in order. Once it determines that a subtree will no longer be inserted // into, it will hash it and free up the memory it uses. @@ -50,6 +73,9 @@ type StackTrie struct { options *StackTrieOptions root *stNode h *hasher + + first []byte // The (hex-encoded without terminator) key of first inserted entry, tracked as left boundary. + last []byte // The (hex-encoded without terminator) key of last inserted entry, tracked as right boundary. } // NewStackTrie allocates and initializes an empty trie. @@ -72,6 +98,15 @@ func (t *StackTrie) Update(key, value []byte) error { } k = k[:len(k)-1] // chop the termination flag + // track the first and last inserted entries. + if t.first == nil { + t.first = append([]byte{}, k...) + } + if t.last == nil { + t.last = append([]byte{}, k...) // allocate key slice + } else { + t.last = append(t.last[:0], k...) // reuse key slice + } t.insert(t.root, k, value, nil) return nil } @@ -88,6 +123,8 @@ func (t *StackTrie) MustUpdate(key, value []byte) { func (t *StackTrie) Reset() { t.options = NewStackTrieOptions() t.root = stPool.Get().(*stNode) + t.first = nil + t.last = nil } // stNode represents a node within a StackTrie @@ -306,8 +343,10 @@ func (t *StackTrie) insert(st *stNode, key, value []byte, path []byte) { // // This method also sets 'st.type' to hashedNode, and clears 'st.key'. func (t *StackTrie) hash(st *stNode, path []byte) { - var blob []byte // RLP-encoded node blob - + var ( + blob []byte // RLP-encoded node blob + internal [][]byte // List of node paths covered by the extension node + ) switch st.typ { case hashedNode: return @@ -342,6 +381,15 @@ func (t *StackTrie) hash(st *stNode, path []byte) { // recursively hash and commit child as the first step t.hash(st.children[0], append(path, st.key...)) + // Collect the path of internal nodes between shortNode and its **in disk** + // child. This is essential in the case of path mode scheme to avoid leaving + // danging nodes within the range of this internal path on disk, which would + // break the guarantee for state healing. + if len(st.children[0].val) >= 32 && t.options.Cleaner != nil { + for i := 1; i < len(st.key); i++ { + internal = append(internal, append(path, st.key[:i]...)) + } + } // encode the extension node n := shortNode{Key: hexToCompactInPlace(st.key)} if len(st.children[0].val) < 32 { @@ -378,10 +426,33 @@ func (t *StackTrie) hash(st *stNode, path []byte) { // input values. st.val = t.h.hashData(blob) - // Commit the trie node if the writer is configured. - if t.options.Writer != nil { - t.options.Writer(path, common.BytesToHash(st.val), blob) + // Short circuit if the stack trie is not configured for writing. + if t.options.Writer == nil { + return + } + // Skip committing if the node is on the left boundary and stackTrie is + // configured to filter the boundary. + if t.options.SkipLeftBoundary && bytes.HasPrefix(t.first, path) { + if t.options.boundaryGauge != nil { + t.options.boundaryGauge.Inc(1) + } + return + } + // Skip committing if the node is on the right boundary and stackTrie is + // configured to filter the boundary. + if t.options.SkipRightBoundary && bytes.HasPrefix(t.last, path) { + if t.options.boundaryGauge != nil { + t.options.boundaryGauge.Inc(1) + } + return + } + // Clean up the internal dangling nodes covered by the extension node. + // This should be done before writing the node to adhere to the committing + // order from bottom to top. + for _, path := range internal { + t.options.Cleaner(path) } + t.options.Writer(path, common.BytesToHash(st.val), blob) } // Hash will firstly hash the entire trie if it's still not hashed and then commit diff --git a/trie/stacktrie_test.go b/trie/stacktrie_test.go index 0e52781c62..629586e2b1 100644 --- a/trie/stacktrie_test.go +++ b/trie/stacktrie_test.go @@ -19,11 +19,14 @@ package trie import ( "bytes" "math/big" + "math/rand" "testing" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/trie/testutil" + "golang.org/x/exp/slices" ) func TestStackTrieInsertAndHash(t *testing.T) { @@ -376,3 +379,87 @@ func TestStacktrieNotModifyValues(t *testing.T) { } } } + +func buildPartialTree(entries []*kv, t *testing.T) map[string]common.Hash { + var ( + options = NewStackTrieOptions() + nodes = make(map[string]common.Hash) + ) + var ( + first int + last = len(entries) - 1 + + noLeft bool + noRight bool + ) + // Enter split mode if there are at least two elements + if rand.Intn(5) != 0 { + for { + first = rand.Intn(len(entries)) + last = rand.Intn(len(entries)) + if first <= last { + break + } + } + if first != 0 { + noLeft = true + } + if last != len(entries)-1 { + noRight = true + } + } + options = options.WithSkipBoundary(noLeft, noRight, nil) + options = options.WithWriter(func(path []byte, hash common.Hash, blob []byte) { + nodes[string(path)] = hash + }) + tr := NewStackTrie(options) + + for i := first; i <= last; i++ { + tr.MustUpdate(entries[i].k, entries[i].v) + } + tr.Commit() + return nodes +} + +func TestPartialStackTrie(t *testing.T) { + for round := 0; round < 100; round++ { + var ( + n = rand.Intn(100) + 1 + entries []*kv + ) + for i := 0; i < n; i++ { + var val []byte + if rand.Intn(3) == 0 { + val = testutil.RandBytes(3) + } else { + val = testutil.RandBytes(32) + } + entries = append(entries, &kv{ + k: testutil.RandBytes(32), + v: val, + }) + } + slices.SortFunc(entries, (*kv).cmp) + + var ( + nodes = make(map[string]common.Hash) + options = NewStackTrieOptions().WithWriter(func(path []byte, hash common.Hash, blob []byte) { + nodes[string(path)] = hash + }) + ) + tr := NewStackTrie(options) + + for i := 0; i < len(entries); i++ { + tr.MustUpdate(entries[i].k, entries[i].v) + } + tr.Commit() + + for j := 0; j < 100; j++ { + for path, hash := range buildPartialTree(entries, t) { + if nodes[path] != hash { + t.Errorf("%v, want %x, got %x", []byte(path), nodes[path], hash) + } + } + } + } +} diff --git a/trie/sync.go b/trie/sync.go index 6939aed76d..8eaed9f21a 100644 --- a/trie/sync.go +++ b/trie/sync.go @@ -51,6 +51,18 @@ var ( // lookupGauge is the metric to track how many trie node lookups are // performed to determine if node needs to be deleted. lookupGauge = metrics.NewRegisteredGauge("trie/sync/lookup", nil) + + // accountNodeSyncedGauge is the metric to track how many account trie + // node are written during the sync. + accountNodeSyncedGauge = metrics.NewRegisteredGauge("trie/sync/nodes/account", nil) + + // storageNodeSyncedGauge is the metric to track how many account trie + // node are written during the sync. + storageNodeSyncedGauge = metrics.NewRegisteredGauge("trie/sync/nodes/storage", nil) + + // codeSyncedGauge is the metric to track how many contract codes are + // written during the sync. + codeSyncedGauge = metrics.NewRegisteredGauge("trie/sync/codes", nil) ) // SyncPath is a path tuple identifying a particular trie node either in a single @@ -362,10 +374,22 @@ func (s *Sync) ProcessNode(result NodeSyncResult) error { // storage, returning any occurred error. func (s *Sync) Commit(dbw ethdb.Batch) error { // Flush the pending node writes into database batch. + var ( + account int + storage int + ) for path, value := range s.membatch.nodes { owner, inner := ResolvePath([]byte(path)) + if owner == (common.Hash{}) { + account += 1 + } else { + storage += 1 + } rawdb.WriteTrieNode(dbw, owner, inner, s.membatch.hashes[path], value, s.scheme) } + accountNodeSyncedGauge.Inc(int64(account)) + storageNodeSyncedGauge.Inc(int64(storage)) + // Flush the pending node deletes into the database batch. // Please note that each written and deleted node has a // unique path, ensuring no duplication occurs. @@ -377,6 +401,8 @@ func (s *Sync) Commit(dbw ethdb.Batch) error { for hash, value := range s.membatch.codes { rawdb.WriteCode(dbw, hash, value) } + codeSyncedGauge.Inc(int64(len(s.membatch.codes))) + s.membatch = newSyncMemBatch() // reset the batch return nil } From a8617c6d4dbe0df8c67e1f5c2ecd76c3200dc18d Mon Sep 17 00:00:00 2001 From: moomin <67548026+nothingmin@users.noreply.github.com> Date: Tue, 24 Oct 2023 00:36:11 +0900 Subject: [PATCH 022/223] txpool/legacypool: remove already known error in legacypool (#28400) --- core/txpool/legacypool/legacypool.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index e71204185f..0e33923274 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -54,10 +54,6 @@ const ( ) var ( - // ErrAlreadyKnown is returned if the transactions is already contained - // within the pool. - ErrAlreadyKnown = errors.New("already known") - // ErrTxPoolOverflow is returned if the transaction pool is full and can't accept // another remote transaction. ErrTxPoolOverflow = errors.New("txpool is full") @@ -660,7 +656,7 @@ func (pool *LegacyPool) add(tx *types.Transaction, local bool) (replaced bool, e if pool.all.Get(hash) != nil { log.Trace("Discarding already known transaction", "hash", hash) knownTxMeter.Mark(1) - return false, ErrAlreadyKnown + return false, txpool.ErrAlreadyKnown } // Make the local flag. If it's from local source or it's from the network but // the sender is marked as local previously, treat it as the local transaction. @@ -971,7 +967,7 @@ func (pool *LegacyPool) Add(txs []*types.Transaction, local, sync bool) []error for i, tx := range txs { // If the transaction is known, pre-set the error slot if pool.all.Get(tx.Hash()) != nil { - errs[i] = ErrAlreadyKnown + errs[i] = txpool.ErrAlreadyKnown knownTxMeter.Mark(1) continue } From 300df874d789eba38fe652d270c8998c8759937c Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Wed, 25 Oct 2023 14:08:52 +0200 Subject: [PATCH 023/223] cmd/evm: make t8ntool handle transaction decoding errors better (#28397) This change closes https://github.com/ethereum/go-ethereum/issues/27730 . By using an iterator instead of a slice of transactions, we can better handle the case when an individual transaction (within an otherwise well-formed RLP-list) cannot be decoded. --- cmd/evm/internal/t8ntool/execution.go | 37 +++-- cmd/evm/internal/t8ntool/transition.go | 130 +--------------- cmd/evm/internal/t8ntool/tx_iterator.go | 194 ++++++++++++++++++++++++ cmd/evm/t8n_test.go | 8 + cmd/evm/testdata/30/README.txt | 77 ++++++++++ cmd/evm/testdata/30/alloc.json | 23 +++ cmd/evm/testdata/30/env.json | 23 +++ cmd/evm/testdata/30/exp.json | 64 ++++++++ cmd/evm/testdata/30/txs.rlp | 1 + cmd/evm/testdata/30/txs_more.rlp | 1 + 10 files changed, 420 insertions(+), 138 deletions(-) create mode 100644 cmd/evm/internal/t8ntool/tx_iterator.go create mode 100644 cmd/evm/testdata/30/README.txt create mode 100644 cmd/evm/testdata/30/alloc.json create mode 100644 cmd/evm/testdata/30/env.json create mode 100644 cmd/evm/testdata/30/exp.json create mode 100644 cmd/evm/testdata/30/txs.rlp create mode 100644 cmd/evm/testdata/30/txs_more.rlp diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index 312f427d4c..5cac5f07f8 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -116,8 +116,8 @@ type rejectedTx struct { // Apply applies a set of transactions to a pre-state func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, - txs types.Transactions, miningReward int64, - getTracerFn func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error)) (*state.StateDB, *ExecutionResult, error) { + txIt txIterator, miningReward int64, + getTracerFn func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error)) (*state.StateDB, *ExecutionResult, []byte, error) { // Capture errors for BLOCKHASH operation, if we haven't been supplied the // required blockhashes var hashError error @@ -190,25 +190,39 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, core.ProcessBeaconBlockRoot(*beaconRoot, evm, statedb) } var blobGasUsed uint64 - for i, tx := range txs { + + for i := 0; txIt.Next(); i++ { + tx, err := txIt.Tx() + if err != nil { + log.Warn("rejected tx", "index", i, "error", err) + rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()}) + continue + } if tx.Type() == types.BlobTxType && vmContext.BlobBaseFee == nil { errMsg := "blob tx used but field env.ExcessBlobGas missing" log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", errMsg) rejectedTxs = append(rejectedTxs, &rejectedTx{i, errMsg}) continue } - if tx.Type() == types.BlobTxType { - blobGasUsed += uint64(params.BlobTxBlobGasPerBlob * len(tx.BlobHashes())) - } msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee) if err != nil { log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", err) rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()}) continue } + if tx.Type() == types.BlobTxType { + txBlobGas := uint64(params.BlobTxBlobGasPerBlob * len(tx.BlobHashes())) + if used, max := blobGasUsed+txBlobGas, uint64(params.MaxBlobGasPerBlock); used > max { + err := fmt.Errorf("blob gas (%d) would exceed maximum allowance %d", used, max) + log.Warn("rejected tx", "index", i, "err", err) + rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()}) + continue + } + blobGasUsed += txBlobGas + } tracer, err := getTracerFn(txIndex, tx.Hash()) if err != nil { - return nil, nil, err + return nil, nil, nil, err } vmConfig.Tracer = tracer statedb.SetTxContext(tx.Hash(), txIndex) @@ -231,7 +245,7 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, } includedTxs = append(includedTxs, tx) if hashError != nil { - return nil, nil, NewError(ErrorMissingBlockhash, hashError) + return nil, nil, nil, NewError(ErrorMissingBlockhash, hashError) } gasUsed += msgResult.UsedGas @@ -306,7 +320,7 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, // Commit block root, err := statedb.Commit(vmContext.BlockNumber.Uint64(), chainConfig.IsEIP158(vmContext.BlockNumber)) if err != nil { - return nil, nil, NewError(ErrorEVM, fmt.Errorf("could not commit state: %v", err)) + return nil, nil, nil, NewError(ErrorEVM, fmt.Errorf("could not commit state: %v", err)) } execRs := &ExecutionResult{ StateRoot: root, @@ -332,9 +346,10 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, // for accessing latest states. statedb, err = state.New(root, statedb.Database(), nil) if err != nil { - return nil, nil, NewError(ErrorEVM, fmt.Errorf("could not reopen state: %v", err)) + return nil, nil, nil, NewError(ErrorEVM, fmt.Errorf("could not reopen state: %v", err)) } - return statedb, execRs, nil + body, _ := rlp.EncodeToBytes(includedTxs) + return statedb, execRs, body, nil } func MakePreState(db ethdb.Database, accounts core.GenesisAlloc) *state.StateDB { diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index 600bc460f7..d517592e5c 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -17,14 +17,12 @@ package t8ntool import ( - "crypto/ecdsa" "encoding/json" "errors" "fmt" "math/big" "os" "path" - "strings" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -33,11 +31,9 @@ import ( "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/tests" "github.com/urfave/cli/v2" ) @@ -147,7 +143,7 @@ func Transition(ctx *cli.Context) error { // Check if anything needs to be read from stdin var ( prestate Prestate - txs types.Transactions // txs to apply + txIt txIterator // txs to apply allocStr = ctx.String(InputAllocFlag.Name) envStr = ctx.String(InputEnvFlag.Name) @@ -192,7 +188,7 @@ func Transition(ctx *cli.Context) error { // Set the chain id chainConfig.ChainID = big.NewInt(ctx.Int64(ChainIDFlag.Name)) - if txs, err = loadTransactions(txStr, inputData, prestate.Env, chainConfig); err != nil { + if txIt, err = loadTransactions(txStr, inputData, prestate.Env, chainConfig); err != nil { return err } if err := applyLondonChecks(&prestate.Env, chainConfig); err != nil { @@ -208,136 +204,16 @@ func Transition(ctx *cli.Context) error { return err } // Run the test and aggregate the result - s, result, err := prestate.Apply(vmConfig, chainConfig, txs, ctx.Int64(RewardFlag.Name), getTracer) + s, result, body, err := prestate.Apply(vmConfig, chainConfig, txIt, ctx.Int64(RewardFlag.Name), getTracer) if err != nil { return err } - body, _ := rlp.EncodeToBytes(txs) // Dump the excution result collector := make(Alloc) s.DumpToCollector(collector, nil) return dispatchOutput(ctx, baseDir, result, collector, body) } -// txWithKey is a helper-struct, to allow us to use the types.Transaction along with -// a `secretKey`-field, for input -type txWithKey struct { - key *ecdsa.PrivateKey - tx *types.Transaction - protected bool -} - -func (t *txWithKey) UnmarshalJSON(input []byte) error { - // Read the metadata, if present - type txMetadata struct { - Key *common.Hash `json:"secretKey"` - Protected *bool `json:"protected"` - } - var data txMetadata - if err := json.Unmarshal(input, &data); err != nil { - return err - } - if data.Key != nil { - k := data.Key.Hex()[2:] - if ecdsaKey, err := crypto.HexToECDSA(k); err != nil { - return err - } else { - t.key = ecdsaKey - } - } - if data.Protected != nil { - t.protected = *data.Protected - } else { - t.protected = true - } - // Now, read the transaction itself - var tx types.Transaction - if err := json.Unmarshal(input, &tx); err != nil { - return err - } - t.tx = &tx - return nil -} - -// signUnsignedTransactions converts the input txs to canonical transactions. -// -// The transactions can have two forms, either -// 1. unsigned or -// 2. signed -// -// For (1), r, s, v, need so be zero, and the `secretKey` needs to be set. -// If so, we sign it here and now, with the given `secretKey` -// If the condition above is not met, then it's considered a signed transaction. -// -// To manage this, we read the transactions twice, first trying to read the secretKeys, -// and secondly to read them with the standard tx json format -func signUnsignedTransactions(txs []*txWithKey, signer types.Signer) (types.Transactions, error) { - var signedTxs []*types.Transaction - for i, tx := range txs { - var ( - v, r, s = tx.tx.RawSignatureValues() - signed *types.Transaction - err error - ) - if tx.key == nil || v.BitLen()+r.BitLen()+s.BitLen() != 0 { - // Already signed - signedTxs = append(signedTxs, tx.tx) - continue - } - // This transaction needs to be signed - if tx.protected { - signed, err = types.SignTx(tx.tx, signer, tx.key) - } else { - signed, err = types.SignTx(tx.tx, types.FrontierSigner{}, tx.key) - } - if err != nil { - return nil, NewError(ErrorJson, fmt.Errorf("tx %d: failed to sign tx: %v", i, err)) - } - signedTxs = append(signedTxs, signed) - } - return signedTxs, nil -} - -func loadTransactions(txStr string, inputData *input, env stEnv, chainConfig *params.ChainConfig) (types.Transactions, error) { - var txsWithKeys []*txWithKey - var signed types.Transactions - if txStr != stdinSelector { - data, err := os.ReadFile(txStr) - if err != nil { - return nil, NewError(ErrorIO, fmt.Errorf("failed reading txs file: %v", err)) - } - if strings.HasSuffix(txStr, ".rlp") { // A file containing an rlp list - var body hexutil.Bytes - if err := json.Unmarshal(data, &body); err != nil { - return nil, err - } - // Already signed transactions - if err := rlp.DecodeBytes(body, &signed); err != nil { - return nil, err - } - return signed, nil - } - if err := json.Unmarshal(data, &txsWithKeys); err != nil { - return nil, NewError(ErrorJson, fmt.Errorf("failed unmarshaling txs-file: %v", err)) - } - } else { - if len(inputData.TxRlp) > 0 { - // Decode the body of already signed transactions - body := common.FromHex(inputData.TxRlp) - // Already signed transactions - if err := rlp.DecodeBytes(body, &signed); err != nil { - return nil, err - } - return signed, nil - } - // JSON encoded transactions - txsWithKeys = inputData.Txs - } - // We may have to sign the transactions. - signer := types.LatestSignerForChainID(chainConfig.ChainID) - return signUnsignedTransactions(txsWithKeys, signer) -} - func applyLondonChecks(env *stEnv, chainConfig *params.ChainConfig) error { if !chainConfig.IsLondon(big.NewInt(int64(env.Number))) { return nil diff --git a/cmd/evm/internal/t8ntool/tx_iterator.go b/cmd/evm/internal/t8ntool/tx_iterator.go new file mode 100644 index 0000000000..8f28dc7022 --- /dev/null +++ b/cmd/evm/internal/t8ntool/tx_iterator.go @@ -0,0 +1,194 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . + +package t8ntool + +import ( + "bytes" + "crypto/ecdsa" + "encoding/json" + "fmt" + "io" + "os" + "strings" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" +) + +// txWithKey is a helper-struct, to allow us to use the types.Transaction along with +// a `secretKey`-field, for input +type txWithKey struct { + key *ecdsa.PrivateKey + tx *types.Transaction + protected bool +} + +func (t *txWithKey) UnmarshalJSON(input []byte) error { + // Read the metadata, if present + type txMetadata struct { + Key *common.Hash `json:"secretKey"` + Protected *bool `json:"protected"` + } + var data txMetadata + if err := json.Unmarshal(input, &data); err != nil { + return err + } + if data.Key != nil { + k := data.Key.Hex()[2:] + if ecdsaKey, err := crypto.HexToECDSA(k); err != nil { + return err + } else { + t.key = ecdsaKey + } + } + if data.Protected != nil { + t.protected = *data.Protected + } else { + t.protected = true + } + // Now, read the transaction itself + var tx types.Transaction + if err := json.Unmarshal(input, &tx); err != nil { + return err + } + t.tx = &tx + return nil +} + +// signUnsignedTransactions converts the input txs to canonical transactions. +// +// The transactions can have two forms, either +// 1. unsigned or +// 2. signed +// +// For (1), r, s, v, need so be zero, and the `secretKey` needs to be set. +// If so, we sign it here and now, with the given `secretKey` +// If the condition above is not met, then it's considered a signed transaction. +// +// To manage this, we read the transactions twice, first trying to read the secretKeys, +// and secondly to read them with the standard tx json format +func signUnsignedTransactions(txs []*txWithKey, signer types.Signer) (types.Transactions, error) { + var signedTxs []*types.Transaction + for i, tx := range txs { + var ( + v, r, s = tx.tx.RawSignatureValues() + signed *types.Transaction + err error + ) + if tx.key == nil || v.BitLen()+r.BitLen()+s.BitLen() != 0 { + // Already signed + signedTxs = append(signedTxs, tx.tx) + continue + } + // This transaction needs to be signed + if tx.protected { + signed, err = types.SignTx(tx.tx, signer, tx.key) + } else { + signed, err = types.SignTx(tx.tx, types.FrontierSigner{}, tx.key) + } + if err != nil { + return nil, NewError(ErrorJson, fmt.Errorf("tx %d: failed to sign tx: %v", i, err)) + } + signedTxs = append(signedTxs, signed) + } + return signedTxs, nil +} + +func loadTransactions(txStr string, inputData *input, env stEnv, chainConfig *params.ChainConfig) (txIterator, error) { + var txsWithKeys []*txWithKey + if txStr != stdinSelector { + data, err := os.ReadFile(txStr) + if err != nil { + return nil, NewError(ErrorIO, fmt.Errorf("failed reading txs file: %v", err)) + } + if strings.HasSuffix(txStr, ".rlp") { // A file containing an rlp list + var body hexutil.Bytes + if err := json.Unmarshal(data, &body); err != nil { + return nil, err + } + return newRlpTxIterator(body), nil + } + if err := json.Unmarshal(data, &txsWithKeys); err != nil { + return nil, NewError(ErrorJson, fmt.Errorf("failed unmarshaling txs-file: %v", err)) + } + } else { + if len(inputData.TxRlp) > 0 { + // Decode the body of already signed transactions + return newRlpTxIterator(common.FromHex(inputData.TxRlp)), nil + } + // JSON encoded transactions + txsWithKeys = inputData.Txs + } + // We may have to sign the transactions. + signer := types.LatestSignerForChainID(chainConfig.ChainID) + txs, err := signUnsignedTransactions(txsWithKeys, signer) + return newSliceTxIterator(txs), err +} + +type txIterator interface { + // Next returns true until EOF + Next() bool + // Tx returns the next transaction, OR an error. + Tx() (*types.Transaction, error) +} + +type sliceTxIterator struct { + idx int + txs []*types.Transaction +} + +func newSliceTxIterator(transactions types.Transactions) txIterator { + return &sliceTxIterator{0, transactions} +} + +func (ait *sliceTxIterator) Next() bool { + return ait.idx < len(ait.txs) +} + +func (ait *sliceTxIterator) Tx() (*types.Transaction, error) { + if ait.idx < len(ait.txs) { + ait.idx++ + return ait.txs[ait.idx-1], nil + } + return nil, io.EOF +} + +type rlpTxIterator struct { + in *rlp.Stream +} + +func newRlpTxIterator(rlpData []byte) txIterator { + in := rlp.NewStream(bytes.NewBuffer(rlpData), 1024*1024) + in.List() + return &rlpTxIterator{in} +} + +func (it *rlpTxIterator) Next() bool { + return it.in.MoreDataInList() +} + +func (it *rlpTxIterator) Tx() (*types.Transaction, error) { + var a types.Transaction + if err := it.in.Decode(&a); err != nil { + return nil, err + } + return &a, nil +} diff --git a/cmd/evm/t8n_test.go b/cmd/evm/t8n_test.go index ad09a6b4d6..efacbe95ae 100644 --- a/cmd/evm/t8n_test.go +++ b/cmd/evm/t8n_test.go @@ -275,6 +275,14 @@ func TestT8n(t *testing.T) { output: t8nOutput{alloc: true, result: true}, expOut: "exp.json", }, + { // More cancun test, plus example of rlp-transaction that cannot be decoded properly + base: "./testdata/30", + input: t8nInput{ + "alloc.json", "txs_more.rlp", "env.json", "Cancun", "", + }, + output: t8nOutput{alloc: true, result: true}, + expOut: "exp.json", + }, } { args := []string{"t8n"} args = append(args, tc.output.get()...) diff --git a/cmd/evm/testdata/30/README.txt b/cmd/evm/testdata/30/README.txt new file mode 100644 index 0000000000..84c92de853 --- /dev/null +++ b/cmd/evm/testdata/30/README.txt @@ -0,0 +1,77 @@ +This example comes from https://github.com/ethereum/go-ethereum/issues/27730. +The input transactions contain three transactions, number `0` and `2` are taken from +`testdata/13`, whereas number `1` is taken from #27730. + +The problematic second transaction cannot be RLP-decoded, and the expectation is +that that particular transaction should be rejected, but number `0` and `1` should +still be accepted. + +``` +$ go run . t8n --input.alloc=./testdata/30/alloc.json --input.txs=./testdata/30/txs_more.rlp --input.env=./testdata/30/env.json --output.result=stdout --output.alloc=stdout --state.fork=Cancun +WARN [10-22|15:38:03.283] rejected tx index=1 error="rlp: input string too short for common.Address, decoding into (types.Transaction)(types.BlobTx).To" +INFO [10-22|15:38:03.284] Trie dumping started root=348312..915c93 +INFO [10-22|15:38:03.284] Trie dumping complete accounts=3 elapsed="160.831µs" +{ + "alloc": { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87": { + "code": "0x60004960005500", + "balance": "0xde0b6b3a7640000" + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": { + "balance": "0xde0b6b3a7640000" + }, + "0xd02d72e067e77158444ef2020ff2d325f929b363": { + "balance": "0xfffffffb8390", + "nonce": "0x3" + } + }, + "result": { + "stateRoot": "0x3483124b6710486c9fb3e07975669c66924697c88cccdcc166af5e1218915c93", + "txRoot": "0x013509c8563d41c0ae4bf38f2d6d19fc6512a1d0d6be045079c8c9f68bf45f9d", + "receiptsRoot": "0x75308898d571eafb5cd8cde8278bf5b3d13c5f6ec074926de3bb895b519264e1", + "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "receipts": [ + { + "type": "0x2", + "root": "0x", + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logs": null, + "transactionHash": "0xa98a24882ea90916c6a86da650fbc6b14238e46f0af04a131ce92be897507476", + "contractAddress": "0x0000000000000000000000000000000000000000", + "gasUsed": "0x5208", + "effectiveGasPrice": null, + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "transactionIndex": "0x0" + }, + { + "type": "0x2", + "root": "0x", + "status": "0x1", + "cumulativeGasUsed": "0xa410", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logs": null, + "transactionHash": "0x36bad80acce7040c45fd32764b5c2b2d2e6f778669fb41791f73f546d56e739a", + "contractAddress": "0x0000000000000000000000000000000000000000", + "gasUsed": "0x5208", + "effectiveGasPrice": null, + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "transactionIndex": "0x1" + } + ], + "rejected": [ + { + "index": 1, + "error": "rlp: input string too short for common.Address, decoding into (types.Transaction)(types.BlobTx).To" + } + ], + "currentDifficulty": null, + "gasUsed": "0xa410", + "currentBaseFee": "0x7", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" + } +} + +``` \ No newline at end of file diff --git a/cmd/evm/testdata/30/alloc.json b/cmd/evm/testdata/30/alloc.json new file mode 100644 index 0000000000..6bc93d2552 --- /dev/null +++ b/cmd/evm/testdata/30/alloc.json @@ -0,0 +1,23 @@ +{ + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x0de0b6b3a7640000", + "code" : "0x60004960005500", + "nonce" : "0x00", + "storage" : { + } + }, + "0xd02d72e067e77158444ef2020ff2d325f929b363" : { + "balance": "0x01000000000000", + "code": "0x", + "nonce": "0x01", + "storage": { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a7640000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + } +} \ No newline at end of file diff --git a/cmd/evm/testdata/30/env.json b/cmd/evm/testdata/30/env.json new file mode 100644 index 0000000000..4acd9794be --- /dev/null +++ b/cmd/evm/testdata/30/env.json @@ -0,0 +1,23 @@ +{ + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "currentGasLimit" : "0x1000000000", + "previousHash" : "0xe4e2a30b340bec696242b67584264f878600dce98354ae0b6328740fd4ff18da", + "currentDataGasUsed" : "0x2000", + "parentTimestamp" : "0x00", + "parentDifficulty" : "0x00", + "parentUncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "parentBeaconBlockRoot" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "currentRandom" : "0x0000000000000000000000000000000000000000000000000000000000020000", + "withdrawals" : [ + ], + "parentBaseFee" : "0x08", + "parentGasUsed" : "0x00", + "parentGasLimit" : "0x1000000000", + "parentExcessBlobGas" : "0x1000", + "parentBlobGasUsed" : "0x2000", + "blockHashes" : { + "0" : "0xe4e2a30b340bec696242b67584264f878600dce98354ae0b6328740fd4ff18da" + } +} \ No newline at end of file diff --git a/cmd/evm/testdata/30/exp.json b/cmd/evm/testdata/30/exp.json new file mode 100644 index 0000000000..f0b19c6b3d --- /dev/null +++ b/cmd/evm/testdata/30/exp.json @@ -0,0 +1,64 @@ +{ + "alloc": { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87": { + "code": "0x60004960005500", + "balance": "0xde0b6b3a7640000" + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": { + "balance": "0xde0b6b3a7640000" + }, + "0xd02d72e067e77158444ef2020ff2d325f929b363": { + "balance": "0xfffffffb8390", + "nonce": "0x3" + } + }, + "result": { + "stateRoot": "0x3483124b6710486c9fb3e07975669c66924697c88cccdcc166af5e1218915c93", + "txRoot": "0x013509c8563d41c0ae4bf38f2d6d19fc6512a1d0d6be045079c8c9f68bf45f9d", + "receiptsRoot": "0x75308898d571eafb5cd8cde8278bf5b3d13c5f6ec074926de3bb895b519264e1", + "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "receipts": [ + { + "type": "0x2", + "root": "0x", + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logs": null, + "transactionHash": "0xa98a24882ea90916c6a86da650fbc6b14238e46f0af04a131ce92be897507476", + "contractAddress": "0x0000000000000000000000000000000000000000", + "gasUsed": "0x5208", + "effectiveGasPrice": null, + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "transactionIndex": "0x0" + }, + { + "type": "0x2", + "root": "0x", + "status": "0x1", + "cumulativeGasUsed": "0xa410", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logs": null, + "transactionHash": "0x36bad80acce7040c45fd32764b5c2b2d2e6f778669fb41791f73f546d56e739a", + "contractAddress": "0x0000000000000000000000000000000000000000", + "gasUsed": "0x5208", + "effectiveGasPrice": null, + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "transactionIndex": "0x1" + } + ], + "rejected": [ + { + "index": 1, + "error": "rlp: input string too short for common.Address, decoding into (types.Transaction)(types.BlobTx).To" + } + ], + "currentDifficulty": null, + "gasUsed": "0xa410", + "currentBaseFee": "0x7", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "currentExcessBlobGas": "0x0", + "blobGasUsed": "0x0" + } +} \ No newline at end of file diff --git a/cmd/evm/testdata/30/txs.rlp b/cmd/evm/testdata/30/txs.rlp new file mode 100644 index 0000000000..620c1a13ac --- /dev/null +++ b/cmd/evm/testdata/30/txs.rlp @@ -0,0 +1 @@ +"0xf8dbb8d903f8d601800285012a05f200833d090080830186a000f85bf85994095e7baea6a6c7c4c2dfeb977efac326af552d87f842a00000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000010ae1a001a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d880a0fc12b67159a3567f8bdbc49e0be369a2e20e09d57a51c41310543a4128409464a02de0cfe5495c4f58ff60645ceda0afd67a4c90a70bc89fe207269435b35e5b67" \ No newline at end of file diff --git a/cmd/evm/testdata/30/txs_more.rlp b/cmd/evm/testdata/30/txs_more.rlp new file mode 100644 index 0000000000..35af8d1f23 --- /dev/null +++ b/cmd/evm/testdata/30/txs_more.rlp @@ -0,0 +1 @@ +"0xf901adb86702f864010180820fa08284d09411111111111111111111111111111111111111118080c001a0b7dfab36232379bb3d1497a4f91c1966b1f932eae3ade107bf5d723b9cb474e0a06261c359a10f2132f126d250485b90cf20f30340801244a08ef6142ab33d1904b8d903f8d601800285012a05f200833d090080830186a000f85bf85994095e7baea6a6c7c4c2dfeb977efac326af552d87f842a00000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000010ae1a001a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d880a0fc12b67159a3567f8bdbc49e0be369a2e20e09d57a51c41310543a4128409464a02de0cfe5495c4f58ff60645ceda0afd67a4c90a70bc89fe207269435b35e5b67b86702f864010280820fa08284d09411111111111111111111111111111111111111118080c080a0d4ec563b6568cd42d998fc4134b36933c6568d01533b5adf08769270243c6c7fa072bf7c21eac6bbeae5143371eef26d5e279637f3bd73482b55979d76d935b1e9" \ No newline at end of file From 96b75033c08c4edbfd3b3aa356f3e7d4cce4f2b8 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Wed, 25 Oct 2023 14:53:50 +0200 Subject: [PATCH 024/223] trie: use explicit errors in stacktrie (instead of panic) (#28361) This PR removes panics from stacktrie (mostly), and makes the Update return errors instead. While adding tests for this, I also found that one case of possible corruption was not caught, which is now fixed. --- core/state/snapshot/generate.go | 4 +++- trie/stacktrie.go | 9 ++++++--- trie/stacktrie_test.go | 22 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/core/state/snapshot/generate.go b/core/state/snapshot/generate.go index 204584c956..adeaa1daa0 100644 --- a/core/state/snapshot/generate.go +++ b/core/state/snapshot/generate.go @@ -230,7 +230,9 @@ func (dl *diskLayer) proveRange(ctx *generatorContext, trieId *trie.ID, prefix [ if origin == nil && !diskMore { stackTr := trie.NewStackTrie(nil) for i, key := range keys { - stackTr.Update(key, vals[i]) + if err := stackTr.Update(key, vals[i]); err != nil { + return nil, err + } } if gotRoot := stackTr.Hash(); gotRoot != root { return &proofResult{ diff --git a/trie/stacktrie.go b/trie/stacktrie.go index 423afdec88..f2f5355c49 100644 --- a/trie/stacktrie.go +++ b/trie/stacktrie.go @@ -18,6 +18,7 @@ package trie import ( "bytes" + "errors" "sync" "github.com/ethereum/go-ethereum/common" @@ -92,12 +93,14 @@ func NewStackTrie(options *StackTrieOptions) *StackTrie { // Update inserts a (key, value) pair into the stack trie. func (t *StackTrie) Update(key, value []byte) error { - k := keybytesToHex(key) if len(value) == 0 { - panic("deletion not supported") + return errors.New("trying to insert empty (deletion)") } + k := keybytesToHex(key) k = k[:len(k)-1] // chop the termination flag - + if bytes.Compare(t.last, k) >= 0 { + return errors.New("non-ascending key order") + } // track the first and last inserted entries. if t.first == nil { t.first = append([]byte{}, k...) diff --git a/trie/stacktrie_test.go b/trie/stacktrie_test.go index 629586e2b1..909a77062a 100644 --- a/trie/stacktrie_test.go +++ b/trie/stacktrie_test.go @@ -26,6 +26,7 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/trie/testutil" + "github.com/stretchr/testify/assert" "golang.org/x/exp/slices" ) @@ -463,3 +464,24 @@ func TestPartialStackTrie(t *testing.T) { } } } + +func TestStackTrieErrors(t *testing.T) { + s := NewStackTrie(nil) + // Deletion + if err := s.Update(nil, nil); err == nil { + t.Fatal("expected error") + } + if err := s.Update(nil, []byte{}); err == nil { + t.Fatal("expected error") + } + if err := s.Update([]byte{0xa}, []byte{}); err == nil { + t.Fatal("expected error") + } + // Non-ascending keys (going backwards or repeating) + assert.Nil(t, s.Update([]byte{0xaa}, []byte{0xa})) + assert.NotNil(t, s.Update([]byte{0xaa}, []byte{0xa}), "repeat insert same key") + assert.NotNil(t, s.Update([]byte{0xaa}, []byte{0xb}), "repeat insert same key") + assert.Nil(t, s.Update([]byte{0xab}, []byte{0xa})) + assert.NotNil(t, s.Update([]byte{0x10}, []byte{0xb}), "out of order insert") + assert.NotNil(t, s.Update([]byte{0xaa}, []byte{0xb}), "repeat insert same key") +} From f7b62e550696c3a7379d17228744c65e2dd29e7b Mon Sep 17 00:00:00 2001 From: Delweng Date: Wed, 25 Oct 2023 21:20:23 +0800 Subject: [PATCH 025/223] graphql: logs return error if from block > to (#28412) As per discussion in ethereum/execution-apis#475 Signed-off-by: jsvisa --- graphql/graphql.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/graphql/graphql.go b/graphql/graphql.go index ec7382f80a..50f0c6ca47 100644 --- a/graphql/graphql.go +++ b/graphql/graphql.go @@ -1417,6 +1417,9 @@ func (r *Resolver) Logs(ctx context.Context, args struct{ Filter FilterCriteria if args.Filter.ToBlock != nil { end = int64(*args.Filter.ToBlock) } + if begin > 0 && end > 0 && begin > end { + return nil, errInvalidBlockRange + } var addresses []common.Address if args.Filter.Addresses != nil { addresses = *args.Filter.Addresses From d8c6ae054c8e120c72d20eeac805f1b95e5802a2 Mon Sep 17 00:00:00 2001 From: Adrian Sutton Date: Wed, 25 Oct 2023 23:52:42 +1000 Subject: [PATCH 026/223] rpc: use correct stringer-method for serializing BlockNumberOrHash (#28358) The String() version of BlockNumberOrHash uses decimal for all block numbers, including negative ones used to indicate labels. Switch to using BlockNumber.String() which encodes it correctly for use in the JSON-RPC API. --- rpc/types.go | 3 +-- rpc/types_test.go | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/rpc/types.go b/rpc/types.go index 34a1451dea..f88c37c59d 100644 --- a/rpc/types.go +++ b/rpc/types.go @@ -21,7 +21,6 @@ import ( "encoding/json" "fmt" "math" - "strconv" "strings" "github.com/ethereum/go-ethereum/common" @@ -221,7 +220,7 @@ func (bnh *BlockNumberOrHash) Number() (BlockNumber, bool) { func (bnh *BlockNumberOrHash) String() string { if bnh.BlockNumber != nil { - return strconv.Itoa(int(*bnh.BlockNumber)) + return bnh.BlockNumber.String() } if bnh.BlockHash != nil { return bnh.BlockHash.String() diff --git a/rpc/types_test.go b/rpc/types_test.go index f110dee7c6..617f441d91 100644 --- a/rpc/types_test.go +++ b/rpc/types_test.go @@ -153,3 +153,24 @@ func TestBlockNumberOrHash_WithNumber_MarshalAndUnmarshal(t *testing.T) { }) } } + +func TestBlockNumberOrHash_StringAndUnmarshal(t *testing.T) { + tests := []BlockNumberOrHash{ + BlockNumberOrHashWithNumber(math.MaxInt64), + BlockNumberOrHashWithNumber(PendingBlockNumber), + BlockNumberOrHashWithNumber(LatestBlockNumber), + BlockNumberOrHashWithNumber(EarliestBlockNumber), + BlockNumberOrHashWithNumber(32), + BlockNumberOrHashWithHash(common.Hash{0xaa}, false), + } + for _, want := range tests { + marshalled, _ := json.Marshal(want.String()) + var have BlockNumberOrHash + if err := json.Unmarshal(marshalled, &have); err != nil { + t.Fatalf("cannot unmarshal (%v): %v", string(marshalled), err) + } + if !reflect.DeepEqual(want, have) { + t.Fatalf("wrong result: have %v, want %v", have, want) + } + } +} From 58ae1df6840e512b263a4fc2e021e1ec5637ca21 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Wed, 25 Oct 2023 17:57:12 +0200 Subject: [PATCH 027/223] cmd/geth: test for logging-output (#28373) This PR is a bit in preparation for the slog work in #28187 . Our current test re logging mostly test the internals, but we have no real end-to-end test of the logging output. This PR introduces a simple reexec-based log tester. This also relies upon a special mode in geth, which can be made to eject a set of predefined log messages (only available if the build-tag `integrationtests` is used e.g. go run --tags=integrationtests ./cmd/geth --log.format terminal logtest While working on this, I also noticed a quirk in the setup: when geth was configured to use a file output, then two separate handlers were used (one handler for the file, one handler for the console). Using two separate handlers means that two formatters are used, thus the formatting of any/all records happened twice. This PR changes the mechanism to use two separate io.Writers instead, which is both more optimal and fixes a bug which occurs due to a global statefulness in the formatter. --- build/ci.go | 3 + cmd/geth/logging_test.go | 185 ++++++++++++++++++ cmd/geth/logtestcmd_active.go | 134 +++++++++++++ cmd/geth/logtestcmd_inactive.go | 23 +++ cmd/geth/main.go | 3 + cmd/geth/testdata/logging/logtest-logfmt.txt | 39 ++++ .../testdata/logging/logtest-terminal.txt | 40 ++++ internal/debug/flags.go | 20 +- log/format.go | 8 + log/format_test.go | 139 ------------- 10 files changed, 445 insertions(+), 149 deletions(-) create mode 100644 cmd/geth/logging_test.go create mode 100644 cmd/geth/logtestcmd_active.go create mode 100644 cmd/geth/logtestcmd_inactive.go create mode 100644 cmd/geth/testdata/logging/logtest-logfmt.txt create mode 100644 cmd/geth/testdata/logging/logtest-terminal.txt diff --git a/build/ci.go b/build/ci.go index 46f1ac2812..afe1c332b8 100644 --- a/build/ci.go +++ b/build/ci.go @@ -307,6 +307,9 @@ func doTest(cmdline []string) { // Enable CKZG backend in CI. gotest.Args = append(gotest.Args, "-tags=ckzg") + // Enable integration-tests + gotest.Args = append(gotest.Args, "-tags=integrationtests") + // Test a single package at a time. CI builders are slow // and some tests run into timeouts under load. gotest.Args = append(gotest.Args, "-p", "1") diff --git a/cmd/geth/logging_test.go b/cmd/geth/logging_test.go new file mode 100644 index 0000000000..cc951d6e97 --- /dev/null +++ b/cmd/geth/logging_test.go @@ -0,0 +1,185 @@ +//go:build integrationtests + +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . + +package main + +import ( + "bufio" + "bytes" + "fmt" + "io" + "math/rand" + "os" + "os/exec" + "strings" + "testing" + + "github.com/docker/docker/pkg/reexec" +) + +func runSelf(args ...string) ([]byte, error) { + cmd := &exec.Cmd{ + Path: reexec.Self(), + Args: append([]string{"geth-test"}, args...), + } + return cmd.CombinedOutput() +} + +func split(input io.Reader) []string { + var output []string + scanner := bufio.NewScanner(input) + scanner.Split(bufio.ScanLines) + for scanner.Scan() { + output = append(output, strings.TrimSpace(scanner.Text())) + } + return output +} + +func censor(input string, start, end int) string { + if len(input) < end { + return input + } + return input[:start] + strings.Repeat("X", end-start) + input[end:] +} + +func TestLogging(t *testing.T) { + testConsoleLogging(t, "terminal", 6, 24) + testConsoleLogging(t, "logfmt", 2, 26) +} + +func testConsoleLogging(t *testing.T, format string, tStart, tEnd int) { + haveB, err := runSelf("--log.format", format, "logtest") + if err != nil { + t.Fatal(err) + } + readFile, err := os.Open(fmt.Sprintf("testdata/logging/logtest-%v.txt", format)) + if err != nil { + t.Fatal(err) + } + wantLines := split(readFile) + haveLines := split(bytes.NewBuffer(haveB)) + for i, want := range wantLines { + if i > len(haveLines)-1 { + t.Fatalf("format %v, line %d missing, want:%v", format, i, want) + } + have := haveLines[i] + for strings.Contains(have, "Unknown config environment variable") { + // This can happen on CI runs. Drop it. + haveLines = append(haveLines[:i], haveLines[i+1:]...) + have = haveLines[i] + } + + // Black out the timestamp + have = censor(have, tStart, tEnd) + want = censor(want, tStart, tEnd) + if have != want { + t.Logf(nicediff([]byte(have), []byte(want))) + t.Fatalf("format %v, line %d\nhave %v\nwant %v", format, i, have, want) + } + } + if len(haveLines) != len(wantLines) { + t.Errorf("format %v, want %d lines, have %d", format, len(haveLines), len(wantLines)) + } +} + +func TestVmodule(t *testing.T) { + checkOutput := func(level int, want, wantNot string) { + t.Helper() + output, err := runSelf("--log.format", "terminal", "--verbosity=0", "--log.vmodule", fmt.Sprintf("logtestcmd_active.go=%d", level), "logtest") + if err != nil { + t.Fatal(err) + } + if len(want) > 0 && !strings.Contains(string(output), want) { // trace should be present at 5 + t.Errorf("failed to find expected string ('%s') in output", want) + } + if len(wantNot) > 0 && strings.Contains(string(output), wantNot) { // trace should be present at 5 + t.Errorf("string ('%s') should not be present in output", wantNot) + } + } + checkOutput(5, "log at level trace", "") // trace should be present at 5 + checkOutput(4, "log at level debug", "log at level trace") // debug should be present at 4, but trace should be missing + checkOutput(3, "log at level info", "log at level debug") // info should be present at 3, but debug should be missing + checkOutput(2, "log at level warn", "log at level info") // warn should be present at 2, but info should be missing + checkOutput(1, "log at level error", "log at level warn") // error should be present at 1, but warn should be missing +} + +func nicediff(have, want []byte) string { + var i = 0 + for ; i < len(have) && i < len(want); i++ { + if want[i] != have[i] { + break + } + } + var end = i + 40 + var start = i - 50 + if start < 0 { + start = 0 + } + var h, w string + if end < len(have) { + h = string(have[start:end]) + } else { + h = string(have[start:]) + } + if end < len(want) { + w = string(want[start:end]) + } else { + w = string(want[start:]) + } + return fmt.Sprintf("have vs want:\n%q\n%q\n", h, w) +} + +func TestFileOut(t *testing.T) { + var ( + have, want []byte + err error + path = fmt.Sprintf("%s/test_file_out-%d", os.TempDir(), rand.Int63()) + ) + t.Cleanup(func() { os.Remove(path) }) + if want, err = runSelf(fmt.Sprintf("--log.file=%s", path), "logtest"); err != nil { + t.Fatal(err) + } + if have, err = os.ReadFile(path); err != nil { + t.Fatal(err) + } + if !bytes.Equal(have, want) { + // show an intelligent diff + t.Logf(nicediff(have, want)) + t.Errorf("file content wrong") + } +} + +func TestRotatingFileOut(t *testing.T) { + var ( + have, want []byte + err error + path = fmt.Sprintf("%s/test_file_out-%d", os.TempDir(), rand.Int63()) + ) + t.Cleanup(func() { os.Remove(path) }) + if want, err = runSelf(fmt.Sprintf("--log.file=%s", path), "--log.rotate", "logtest"); err != nil { + t.Fatal(err) + } + if have, err = os.ReadFile(path); err != nil { + t.Fatal(err) + } + if !bytes.Equal(have, want) { + // show an intelligent diff + t.Logf(nicediff(have, want)) + t.Errorf("file content wrong") + } +} diff --git a/cmd/geth/logtestcmd_active.go b/cmd/geth/logtestcmd_active.go new file mode 100644 index 0000000000..c66013517a --- /dev/null +++ b/cmd/geth/logtestcmd_active.go @@ -0,0 +1,134 @@ +//go:build integrationtests + +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . + +package main + +import ( + "fmt" + "math" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + "github.com/holiman/uint256" + "github.com/urfave/cli/v2" +) + +var logTestCommand = &cli.Command{ + Action: logTest, + Name: "logtest", + Usage: "Print some log messages", + ArgsUsage: " ", + Description: ` +This command is only meant for testing. +`} + +// logTest is an entry point which spits out some logs. This is used by testing +// to verify expected outputs +func logTest(ctx *cli.Context) error { + log.ResetGlobalState() + { // big.Int + ba, _ := new(big.Int).SetString("111222333444555678999", 10) // "111,222,333,444,555,678,999" + bb, _ := new(big.Int).SetString("-111222333444555678999", 10) // "-111,222,333,444,555,678,999" + bc, _ := new(big.Int).SetString("11122233344455567899900", 10) // "11,122,233,344,455,567,899,900" + bd, _ := new(big.Int).SetString("-11122233344455567899900", 10) // "-11,122,233,344,455,567,899,900" + log.Info("big.Int", "111,222,333,444,555,678,999", ba) + log.Info("-big.Int", "-111,222,333,444,555,678,999", bb) + log.Info("big.Int", "11,122,233,344,455,567,899,900", bc) + log.Info("-big.Int", "-11,122,233,344,455,567,899,900", bd) + } + { //uint256 + ua, _ := uint256.FromDecimal("111222333444555678999") + ub, _ := uint256.FromDecimal("11122233344455567899900") + log.Info("uint256", "111,222,333,444,555,678,999", ua) + log.Info("uint256", "11,122,233,344,455,567,899,900", ub) + } + { // int64 + log.Info("int64", "1,000,000", int64(1000000)) + log.Info("int64", "-1,000,000", int64(-1000000)) + log.Info("int64", "9,223,372,036,854,775,807", int64(math.MaxInt64)) + log.Info("int64", "-9,223,372,036,854,775,808", int64(math.MinInt64)) + } + { // uint64 + log.Info("uint64", "1,000,000", uint64(1000000)) + log.Info("uint64", "18,446,744,073,709,551,615", uint64(math.MaxUint64)) + } + { // Special characters + log.Info("Special chars in value", "key", "special \r\n\t chars") + log.Info("Special chars in key", "special \n\t chars", "value") + + log.Info("nospace", "nospace", "nospace") + log.Info("with space", "with nospace", "with nospace") + + log.Info("Bash escapes in value", "key", "\u001b[1G\u001b[K\u001b[1A") + log.Info("Bash escapes in key", "\u001b[1G\u001b[K\u001b[1A", "value") + + log.Info("Bash escapes in message \u001b[1G\u001b[K\u001b[1A end", "key", "value") + + colored := fmt.Sprintf("\u001B[%dmColored\u001B[0m[", 35) + log.Info(colored, colored, colored) + } + { // Custom Stringer() - type + log.Info("Custom Stringer value", "2562047h47m16.854s", common.PrettyDuration(time.Duration(9223372036854775807))) + } + { // Lazy eval + log.Info("Lazy evaluation of value", "key", log.Lazy{Fn: func() interface{} { return "lazy value" }}) + } + { // Multi-line message + log.Info("A message with wonky \U0001F4A9 characters") + log.Info("A multiline message \nINFO [10-18|14:11:31.106] with wonky characters \U0001F4A9") + log.Info("A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above") + } + { // Miscellaneous json-quirks + // This will check if the json output uses strings or json-booleans to represent bool values + log.Info("boolean", "true", true, "false", false) + // Handling of duplicate keys. + // This is actually ill-handled by the current handler: the format.go + // uses a global 'fieldPadding' map and mixes up the two keys. If 'alpha' + // is shorter than beta, it sometimes causes erroneous padding -- and what's more + // it causes _different_ padding in multi-handler context, e.g. both file- + // and console output, making the two mismatch. + log.Info("repeated-key 1", "foo", "alpha", "foo", "beta") + log.Info("repeated-key 2", "xx", "short", "xx", "longer") + } + { // loglevels + log.Debug("log at level debug") + log.Trace("log at level trace") + log.Info("log at level info") + log.Warn("log at level warn") + log.Error("log at level error") + } + { + // The current log formatter has a global map of paddings, storing the + // longest seen padding per key in a map. This results in a statefulness + // which has some odd side-effects. Demonstrated here: + log.Info("test", "bar", "short", "a", "aligned left") + log.Info("test", "bar", "a long message", "a", 1) + log.Info("test", "bar", "short", "a", "aligned right") + } + { + // This sequence of logs should be output with alignment, so each field becoems a column. + log.Info("The following logs should align so that the key-fields make 5 columns") + log.Info("Inserted known block", "number", 1_012, "hash", common.HexToHash("0x1234"), "txs", 200, "gas", 1_123_123, "other", "first") + log.Info("Inserted new block", "number", 1, "hash", common.HexToHash("0x1235"), "txs", 2, "gas", 1_123, "other", "second") + log.Info("Inserted known block", "number", 99, "hash", common.HexToHash("0x12322"), "txs", 10, "gas", 1, "other", "third") + log.Warn("Inserted known block", "number", 1_012, "hash", common.HexToHash("0x1234"), "txs", 200, "gas", 99, "other", "fourth") + } + return nil +} diff --git a/cmd/geth/logtestcmd_inactive.go b/cmd/geth/logtestcmd_inactive.go new file mode 100644 index 0000000000..691ab5bcd8 --- /dev/null +++ b/cmd/geth/logtestcmd_inactive.go @@ -0,0 +1,23 @@ +//go:build !integrationtests + +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . + +package main + +import "github.com/urfave/cli/v2" + +var logTestCommand *cli.Command diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 4b26de05a9..2d4fe3dc06 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -234,6 +234,9 @@ func init() { // See verkle.go verkleCommand, } + if logTestCommand != nil { + app.Commands = append(app.Commands, logTestCommand) + } sort.Sort(cli.CommandsByName(app.Commands)) app.Flags = flags.Merge( diff --git a/cmd/geth/testdata/logging/logtest-logfmt.txt b/cmd/geth/testdata/logging/logtest-logfmt.txt new file mode 100644 index 0000000000..79f29e1fae --- /dev/null +++ b/cmd/geth/testdata/logging/logtest-logfmt.txt @@ -0,0 +1,39 @@ +t=2023-10-20T12:56:08+0200 lvl=info msg=big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +t=2023-10-20T12:56:08+0200 lvl=info msg=-big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 +t=2023-10-20T12:56:08+0200 lvl=info msg=big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +t=2023-10-20T12:56:08+0200 lvl=info msg=-big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 +t=2023-10-20T12:56:08+0200 lvl=info msg=uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +t=2023-10-20T12:56:08+0200 lvl=info msg=uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +t=2023-10-20T12:56:08+0200 lvl=info msg=int64 1,000,000=1,000,000 +t=2023-10-20T12:56:08+0200 lvl=info msg=int64 -1,000,000=-1,000,000 +t=2023-10-20T12:56:08+0200 lvl=info msg=int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 +t=2023-10-20T12:56:08+0200 lvl=info msg=int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 +t=2023-10-20T12:56:08+0200 lvl=info msg=uint64 1,000,000=1,000,000 +t=2023-10-20T12:56:08+0200 lvl=info msg=uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 +t=2023-10-20T12:56:08+0200 lvl=info msg="Special chars in value" key="special \r\n\t chars" +t=2023-10-20T12:56:08+0200 lvl=info msg="Special chars in key" "special \n\t chars"=value +t=2023-10-20T12:56:08+0200 lvl=info msg=nospace nospace=nospace +t=2023-10-20T12:56:08+0200 lvl=info msg="with space" "with nospace"="with nospace" +t=2023-10-20T12:56:08+0200 lvl=info msg="Bash escapes in value" key="\x1b[1G\x1b[K\x1b[1A" +t=2023-10-20T12:56:08+0200 lvl=info msg="Bash escapes in key" "\x1b[1G\x1b[K\x1b[1A"=value +t=2023-10-20T12:56:08+0200 lvl=info msg="Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value +t=2023-10-20T12:56:08+0200 lvl=info msg="\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" +t=2023-10-20T12:56:08+0200 lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s +t=2023-10-20T12:56:08+0200 lvl=info msg="Lazy evaluation of value" key="lazy value" +t=2023-10-20T12:56:08+0200 lvl=info msg="A message with wonky 💩 characters" +t=2023-10-20T12:56:08+0200 lvl=info msg="A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" +t=2023-10-20T12:56:08+0200 lvl=info msg="A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above" +t=2023-10-20T12:56:08+0200 lvl=info msg=boolean true=true false=false +t=2023-10-20T12:56:08+0200 lvl=info msg="repeated-key 1" foo=alpha foo=beta +t=2023-10-20T12:56:08+0200 lvl=info msg="repeated-key 2" xx=short xx=longer +t=2023-10-20T12:56:08+0200 lvl=info msg="log at level info" +t=2023-10-20T12:56:08+0200 lvl=warn msg="log at level warn" +t=2023-10-20T12:56:08+0200 lvl=eror msg="log at level error" +t=2023-10-20T12:56:08+0200 lvl=info msg=test bar=short a="aligned left" +t=2023-10-20T12:56:08+0200 lvl=info msg=test bar="a long message" a=1 +t=2023-10-20T12:56:08+0200 lvl=info msg=test bar=short a="aligned right" +t=2023-10-20T12:56:08+0200 lvl=info msg="The following logs should align so that the key-fields make 5 columns" +t=2023-10-20T12:56:08+0200 lvl=info msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=1,123,123 other=first +t=2023-10-20T12:56:08+0200 lvl=info msg="Inserted new block" number=1 hash=0x0000000000000000000000000000000000000000000000000000000000001235 txs=2 gas=1123 other=second +t=2023-10-20T12:56:08+0200 lvl=info msg="Inserted known block" number=99 hash=0x0000000000000000000000000000000000000000000000000000000000012322 txs=10 gas=1 other=third +t=2023-10-20T12:56:08+0200 lvl=warn msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=99 other=fourth diff --git a/cmd/geth/testdata/logging/logtest-terminal.txt b/cmd/geth/testdata/logging/logtest-terminal.txt new file mode 100644 index 0000000000..ff68b6047a --- /dev/null +++ b/cmd/geth/testdata/logging/logtest-terminal.txt @@ -0,0 +1,40 @@ +INFO [10-20|12:56:42.532] big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +INFO [10-20|12:56:42.532] -big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 +INFO [10-20|12:56:42.532] big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +INFO [10-20|12:56:42.532] -big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 +INFO [10-20|12:56:42.532] uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +INFO [10-20|12:56:42.532] uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +INFO [10-20|12:56:42.532] int64 1,000,000=1,000,000 +INFO [10-20|12:56:42.532] int64 -1,000,000=-1,000,000 +INFO [10-20|12:56:42.532] int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 +INFO [10-20|12:56:42.532] int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 +INFO [10-20|12:56:42.532] uint64 1,000,000=1,000,000 +INFO [10-20|12:56:42.532] uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 +INFO [10-20|12:56:42.532] Special chars in value key="special \r\n\t chars" +INFO [10-20|12:56:42.532] Special chars in key "special \n\t chars"=value +INFO [10-20|12:56:42.532] nospace nospace=nospace +INFO [10-20|12:56:42.532] with space "with nospace"="with nospace" +INFO [10-20|12:56:42.532] Bash escapes in value key="\x1b[1G\x1b[K\x1b[1A" +INFO [10-20|12:56:42.532] Bash escapes in key "\x1b[1G\x1b[K\x1b[1A"=value +INFO [10-20|12:56:42.532] "Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value +INFO [10-20|12:56:42.532] "\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" +INFO [10-20|12:56:42.532] Custom Stringer value 2562047h47m16.854s=2562047h47m16.854s +INFO [10-20|12:56:42.532] Lazy evaluation of value key="lazy value" +INFO [10-20|12:56:42.532] "A message with wonky 💩 characters" +INFO [10-20|12:56:42.532] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" +INFO [10-20|12:56:42.532] A multiline message +LALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above +INFO [10-20|12:56:42.532] boolean true=true false=false +INFO [10-20|12:56:42.532] repeated-key 1 foo=alpha foo=beta +INFO [10-20|12:56:42.532] repeated-key 2 xx=short xx=longer +INFO [10-20|12:56:42.532] log at level info +WARN [10-20|12:56:42.532] log at level warn +ERROR[10-20|12:56:42.532] log at level error +INFO [10-20|12:56:42.532] test bar=short a="aligned left" +INFO [10-20|12:56:42.532] test bar="a long message" a=1 +INFO [10-20|12:56:42.532] test bar=short a="aligned right" +INFO [10-20|12:56:42.532] The following logs should align so that the key-fields make 5 columns +INFO [10-20|12:56:42.532] Inserted known block number=1012 hash=000000..001234 txs=200 gas=1,123,123 other=first +INFO [10-20|12:56:42.532] Inserted new block number=1 hash=000000..001235 txs=2 gas=1123 other=second +INFO [10-20|12:56:42.532] Inserted known block number=99 hash=000000..012322 txs=10 gas=1 other=third +WARN [10-20|12:56:42.532] Inserted known block number=1012 hash=000000..001234 txs=200 gas=99 other=fourth diff --git a/internal/debug/flags.go b/internal/debug/flags.go index 736fede943..4f0f5fe860 100644 --- a/internal/debug/flags.go +++ b/internal/debug/flags.go @@ -218,10 +218,9 @@ func Setup(ctx *cli.Context) error { return fmt.Errorf("unknown log format: %v", ctx.String(logFormatFlag.Name)) } var ( - stdHandler = log.StreamHandler(output, logfmt) - ostream = stdHandler - logFile = ctx.String(logFileFlag.Name) - rotation = ctx.Bool(logRotateFlag.Name) + ostream = log.StreamHandler(output, logfmt) + logFile = ctx.String(logFileFlag.Name) + rotation = ctx.Bool(logRotateFlag.Name) ) if len(logFile) > 0 { if err := validateLogLocation(filepath.Dir(logFile)); err != nil { @@ -242,20 +241,21 @@ func Setup(ctx *cli.Context) error { } else { context = append(context, "location", filepath.Join(os.TempDir(), "geth-lumberjack.log")) } - ostream = log.MultiHandler(log.StreamHandler(&lumberjack.Logger{ + lumberWriter := &lumberjack.Logger{ Filename: logFile, MaxSize: ctx.Int(logMaxSizeMBsFlag.Name), MaxBackups: ctx.Int(logMaxBackupsFlag.Name), MaxAge: ctx.Int(logMaxAgeFlag.Name), Compress: ctx.Bool(logCompressFlag.Name), - }, logfmt), stdHandler) + } + ostream = log.StreamHandler(io.MultiWriter(output, lumberWriter), logfmt) } else if logFile != "" { - if logOutputStream, err := log.FileHandler(logFile, logfmt); err != nil { + f, err := os.OpenFile(logFile, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { return err - } else { - ostream = log.MultiHandler(logOutputStream, stdHandler) - context = append(context, "location", logFile) } + ostream = log.StreamHandler(io.MultiWriter(output, f), logfmt) + context = append(context, "location", logFile) } glogger.SetHandler(ostream) diff --git a/log/format.go b/log/format.go index 1adf79c17e..2fd1f28558 100644 --- a/log/format.go +++ b/log/format.go @@ -24,6 +24,14 @@ const ( termCtxMaxPadding = 40 ) +// ResetGlobalState resets the fieldPadding, which is useful for producing +// predictable output. +func ResetGlobalState() { + fieldPaddingLock.Lock() + fieldPadding = make(map[string]int) + fieldPaddingLock.Unlock() +} + // locationTrims are trimmed for display to avoid unwieldy log lines. var locationTrims = []string{ "github.com/ethereum/go-ethereum/", diff --git a/log/format_test.go b/log/format_test.go index e08c1d1a4a..41e1809c38 100644 --- a/log/format_test.go +++ b/log/format_test.go @@ -1,105 +1,10 @@ package log import ( - "fmt" - "math" - "math/big" "math/rand" - "strings" "testing" - - "github.com/holiman/uint256" ) -func TestPrettyInt64(t *testing.T) { - tests := []struct { - n int64 - s string - }{ - {0, "0"}, - {10, "10"}, - {-10, "-10"}, - {100, "100"}, - {-100, "-100"}, - {1000, "1000"}, - {-1000, "-1000"}, - {10000, "10000"}, - {-10000, "-10000"}, - {99999, "99999"}, - {-99999, "-99999"}, - {100000, "100,000"}, - {-100000, "-100,000"}, - {1000000, "1,000,000"}, - {-1000000, "-1,000,000"}, - {math.MaxInt64, "9,223,372,036,854,775,807"}, - {math.MinInt64, "-9,223,372,036,854,775,808"}, - } - for i, tt := range tests { - if have := FormatLogfmtInt64(tt.n); have != tt.s { - t.Errorf("test %d: format mismatch: have %s, want %s", i, have, tt.s) - } - } -} - -func TestPrettyUint64(t *testing.T) { - tests := []struct { - n uint64 - s string - }{ - {0, "0"}, - {10, "10"}, - {100, "100"}, - {1000, "1000"}, - {10000, "10000"}, - {99999, "99999"}, - {100000, "100,000"}, - {1000000, "1,000,000"}, - {math.MaxUint64, "18,446,744,073,709,551,615"}, - } - for i, tt := range tests { - if have := FormatLogfmtUint64(tt.n); have != tt.s { - t.Errorf("test %d: format mismatch: have %s, want %s", i, have, tt.s) - } - } -} - -func TestPrettyBigInt(t *testing.T) { - tests := []struct { - int string - s string - }{ - {"111222333444555678999", "111,222,333,444,555,678,999"}, - {"-111222333444555678999", "-111,222,333,444,555,678,999"}, - {"11122233344455567899900", "11,122,233,344,455,567,899,900"}, - {"-11122233344455567899900", "-11,122,233,344,455,567,899,900"}, - } - - for _, tt := range tests { - v, _ := new(big.Int).SetString(tt.int, 10) - if have := formatLogfmtBigInt(v); have != tt.s { - t.Errorf("invalid output %s, want %s", have, tt.s) - } - } -} - -func TestPrettyUint256(t *testing.T) { - tests := []struct { - int string - s string - }{ - {"111222333444555678999", "111,222,333,444,555,678,999"}, - {"11122233344455567899900", "11,122,233,344,455,567,899,900"}, - } - - for _, tt := range tests { - v := new(uint256.Int) - v.SetFromDecimal(tt.int) - if have := formatLogfmtUint256(v); have != tt.s { - t.Errorf("invalid output %s, want %s", have, tt.s) - } - } -} - var sink string func BenchmarkPrettyInt64Logfmt(b *testing.B) { @@ -115,47 +20,3 @@ func BenchmarkPrettyUint64Logfmt(b *testing.B) { sink = FormatLogfmtUint64(rand.Uint64()) } } - -func TestSanitation(t *testing.T) { - msg := "\u001b[1G\u001b[K\u001b[1A" - msg2 := "\u001b \u0000" - msg3 := "NiceMessage" - msg4 := "Space Message" - msg5 := "Enter\nMessage" - - for i, tt := range []struct { - msg string - want string - }{ - { - msg: msg, - want: fmt.Sprintf("] %q %q=%q\n", msg, msg, msg), - }, - { - msg: msg2, - want: fmt.Sprintf("] %q %q=%q\n", msg2, msg2, msg2), - }, - { - msg: msg3, - want: fmt.Sprintf("] %s %s=%s\n", msg3, msg3, msg3), - }, - { - msg: msg4, - want: fmt.Sprintf("] %s %q=%q\n", msg4, msg4, msg4), - }, - { - msg: msg5, - want: fmt.Sprintf("] %s %q=%q\n", msg5, msg5, msg5), - }, - } { - var ( - logger = New() - out = new(strings.Builder) - ) - logger.SetHandler(LvlFilterHandler(LvlInfo, StreamHandler(out, TerminalFormat(false)))) - logger.Info(tt.msg, tt.msg, tt.msg) - if have := out.String()[24:]; tt.want != have { - t.Fatalf("test %d: want / have: \n%v\n%v", i, tt.want, have) - } - } -} From abe3fca1deb0eca9245cccef3a9c637c57b79f7e Mon Sep 17 00:00:00 2001 From: Delweng Date: Thu, 26 Oct 2023 19:48:51 +0800 Subject: [PATCH 028/223] graphql: fix an issue of nil pointer panic (#28416) Signed-off-by: jsvisa --- graphql/graphql.go | 3 +++ graphql/graphql_test.go | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/graphql/graphql.go b/graphql/graphql.go index 50f0c6ca47..93313d743a 100644 --- a/graphql/graphql.go +++ b/graphql/graphql.go @@ -1325,6 +1325,9 @@ func (r *Resolver) Blocks(ctx context.Context, args struct { From *Long To *Long }) ([]*Block, error) { + if args.From == nil { + return nil, errors.New("from block number must be specified") + } from := rpc.BlockNumber(*args.From) var to rpc.BlockNumber diff --git a/graphql/graphql_test.go b/graphql/graphql_test.go index 4bbfb7251d..540a56778c 100644 --- a/graphql/graphql_test.go +++ b/graphql/graphql_test.go @@ -148,6 +148,11 @@ func TestGraphQLBlockSerialization(t *testing.T) { want: `{"data":{"block":{"number":"0xa","call":{"data":"0x","status":"0x1"}}}}`, code: 200, }, + { + body: `{"query": "{blocks {number}}"}`, + want: `{"errors":[{"message":"from block number must be specified","path":["blocks"]}],"data":null}`, + code: 400, + }, } { resp, err := http.Post(fmt.Sprintf("%s/graphql", stack.HTTPEndpoint()), "application/json", strings.NewReader(tt.body)) if err != nil { From 4cbca5178a2e5f575f1700c0d49a4324b592f09f Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Fri, 27 Oct 2023 04:15:14 +0200 Subject: [PATCH 029/223] core, cmd/geth: add --override.* flags to geth init (#28407) * core, cmd/geth: add --override.* flags to geth init * also apply overrides before genesis commit with new block * review feedback --- cmd/geth/chaincmd.go | 13 ++++++++++++- core/genesis.go | 5 +++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index a6bb2c2d2c..5663963e3c 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -50,6 +50,8 @@ var ( ArgsUsage: "", Flags: flags.Merge([]cli.Flag{ utils.CachePreimagesFlag, + utils.OverrideCancun, + utils.OverrideVerkle, }, utils.DatabaseFlags), Description: ` The init command initializes a new genesis block and definition for the network. @@ -193,6 +195,15 @@ func initGenesis(ctx *cli.Context) error { stack, _ := makeConfigNode(ctx) defer stack.Close() + var overrides core.ChainOverrides + if ctx.IsSet(utils.OverrideCancun.Name) { + v := ctx.Uint64(utils.OverrideCancun.Name) + overrides.OverrideCancun = &v + } + if ctx.IsSet(utils.OverrideVerkle.Name) { + v := ctx.Uint64(utils.OverrideVerkle.Name) + overrides.OverrideVerkle = &v + } for _, name := range []string{"chaindata", "lightchaindata"} { chaindb, err := stack.OpenDatabaseWithFreezer(name, 0, 0, ctx.String(utils.AncientFlag.Name), "", false) if err != nil { @@ -203,7 +214,7 @@ func initGenesis(ctx *cli.Context) error { triedb := utils.MakeTrieDatabase(ctx, chaindb, ctx.Bool(utils.CachePreimagesFlag.Name), false) defer triedb.Close() - _, hash, err := core.SetupGenesisBlock(chaindb, triedb, genesis) + _, hash, err := core.SetupGenesisBlockWithOverride(chaindb, triedb, genesis, &overrides) if err != nil { utils.Fatalf("Failed to write genesis block: %v", err) } diff --git a/core/genesis.go b/core/genesis.go index 0f1e8baf43..1045815fab 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -287,11 +287,11 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen } else { log.Info("Writing custom genesis block") } + applyOverrides(genesis.Config) block, err := genesis.Commit(db, triedb) if err != nil { return genesis.Config, common.Hash{}, err } - applyOverrides(genesis.Config) return genesis.Config, block.Hash(), nil } // The genesis block is present(perhaps in ancient database) while the @@ -303,6 +303,7 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen if genesis == nil { genesis = DefaultGenesisBlock() } + applyOverrides(genesis.Config) // Ensure the stored genesis matches with the given one. hash := genesis.ToBlock().Hash() if hash != stored { @@ -312,11 +313,11 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen if err != nil { return genesis.Config, hash, err } - applyOverrides(genesis.Config) return genesis.Config, block.Hash(), nil } // Check whether the genesis block is already written. if genesis != nil { + applyOverrides(genesis.Config) hash := genesis.ToBlock().Hash() if hash != stored { return genesis.Config, hash, &GenesisMismatchError{stored, hash} From 2d7dba024d76603398907a595da98ad4df81b858 Mon Sep 17 00:00:00 2001 From: Delweng Date: Fri, 27 Oct 2023 22:50:59 +0800 Subject: [PATCH 030/223] graphql: always set content-type to application/json (#28417) --------- Signed-off-by: jsvisa --- graphql/graphql_test.go | 3 +++ graphql/service.go | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/graphql/graphql_test.go b/graphql/graphql_test.go index 540a56778c..a83d6bbd46 100644 --- a/graphql/graphql_test.go +++ b/graphql/graphql_test.go @@ -169,6 +169,9 @@ func TestGraphQLBlockSerialization(t *testing.T) { if tt.code != resp.StatusCode { t.Errorf("testcase %d %s,\nwrong statuscode, have: %v, want: %v", i, tt.body, resp.StatusCode, tt.code) } + if ctype := resp.Header.Get("Content-Type"); ctype != "application/json" { + t.Errorf("testcase %d \nwrong Content-Type, have: %v, want: %v", i, ctype, "application/json") + } } } diff --git a/graphql/service.go b/graphql/service.go index f33e763058..584165bdb8 100644 --- a/graphql/service.go +++ b/graphql/service.go @@ -73,12 +73,12 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // Setting this disables gzip compression in package node. - w.Header().Set("transfer-encoding", "identity") + w.Header().Set("Transfer-Encoding", "identity") // Flush the response. Since we are writing close to the response timeout, // chunked transfer encoding must be disabled by setting content-length. - w.Header().Set("content-type", "application/json") - w.Header().Set("content-length", strconv.Itoa(len(responseJSON))) + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Content-Length", strconv.Itoa(len(responseJSON))) w.Write(responseJSON) if flush, ok := w.(http.Flusher); ok { flush.Flush() @@ -97,10 +97,10 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusInternalServerError) return } + w.Header().Set("Content-Type", "application/json") if len(response.Errors) > 0 { w.WriteHeader(http.StatusBadRequest) } - w.Header().Set("Content-Type", "application/json") w.Write(responseJSON) }) } From 233db64cc1d083e6251abe768c97e0454e2ca898 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Sat, 28 Oct 2023 00:14:43 +0200 Subject: [PATCH 031/223] all: make vendored copy of reexec (#28382) a little copying is better than a little dependency -- go proverb We have this dependency on docker, a.k.a moby: a gigantic library, and we only need ~70 LOC, so here I tried moving it inline instead. Co-authored-by: Felix Lange --- build/update-license.go | 3 +-- cmd/clef/run_test.go | 2 +- cmd/ethkey/run_test.go | 2 +- cmd/evm/t8n_test.go | 2 +- cmd/geth/logging_test.go | 2 +- cmd/geth/run_test.go | 2 +- go.mod | 2 -- go.sum | 4 ---- internal/cmdtest/test_cmd.go | 2 +- internal/reexec/reexec.go | 35 +++++++++++++++++++++++++++++++ internal/reexec/self_linux.go | 14 +++++++++++++ internal/reexec/self_others.go | 32 ++++++++++++++++++++++++++++ p2p/simulations/adapters/exec.go | 2 +- p2p/simulations/adapters/types.go | 2 +- 14 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 internal/reexec/reexec.go create mode 100644 internal/reexec/self_linux.go create mode 100644 internal/reexec/self_others.go diff --git a/build/update-license.go b/build/update-license.go index 52a54bf66a..70e2de06c7 100644 --- a/build/update-license.go +++ b/build/update-license.go @@ -65,10 +65,8 @@ var ( "vendor/", "tests/testdata/", "build/", // don't relicense vendored sources - "cmd/internal/browser", "common/bitutil/bitutil", "common/prque/", - "consensus/ethash/xor.go", "crypto/blake2b/", "crypto/bn256/", "crypto/bls12381/", @@ -78,6 +76,7 @@ var ( "log/", "metrics/", "signer/rules/deps", + "internal/reexec", // skip special licenses "crypto/secp256k1", // Relicensed to BSD-3 via https://github.com/ethereum/go-ethereum/pull/17225 diff --git a/cmd/clef/run_test.go b/cmd/clef/run_test.go index fc3145b1e0..5fa6e02e14 100644 --- a/cmd/clef/run_test.go +++ b/cmd/clef/run_test.go @@ -21,8 +21,8 @@ import ( "os" "testing" - "github.com/docker/docker/pkg/reexec" "github.com/ethereum/go-ethereum/internal/cmdtest" + "github.com/ethereum/go-ethereum/internal/reexec" ) const registeredName = "clef-test" diff --git a/cmd/ethkey/run_test.go b/cmd/ethkey/run_test.go index 6006f6b5bb..73506e5da1 100644 --- a/cmd/ethkey/run_test.go +++ b/cmd/ethkey/run_test.go @@ -21,8 +21,8 @@ import ( "os" "testing" - "github.com/docker/docker/pkg/reexec" "github.com/ethereum/go-ethereum/internal/cmdtest" + "github.com/ethereum/go-ethereum/internal/reexec" ) type testEthkey struct { diff --git a/cmd/evm/t8n_test.go b/cmd/evm/t8n_test.go index efacbe95ae..03503d11c3 100644 --- a/cmd/evm/t8n_test.go +++ b/cmd/evm/t8n_test.go @@ -24,9 +24,9 @@ import ( "strings" "testing" - "github.com/docker/docker/pkg/reexec" "github.com/ethereum/go-ethereum/cmd/evm/internal/t8ntool" "github.com/ethereum/go-ethereum/internal/cmdtest" + "github.com/ethereum/go-ethereum/internal/reexec" ) func TestMain(m *testing.M) { diff --git a/cmd/geth/logging_test.go b/cmd/geth/logging_test.go index cc951d6e97..af50e93f94 100644 --- a/cmd/geth/logging_test.go +++ b/cmd/geth/logging_test.go @@ -29,7 +29,7 @@ import ( "strings" "testing" - "github.com/docker/docker/pkg/reexec" + "github.com/ethereum/go-ethereum/internal/reexec" ) func runSelf(args ...string) ([]byte, error) { diff --git a/cmd/geth/run_test.go b/cmd/geth/run_test.go index 0588623acb..2e03dc5eaa 100644 --- a/cmd/geth/run_test.go +++ b/cmd/geth/run_test.go @@ -23,8 +23,8 @@ import ( "testing" "time" - "github.com/docker/docker/pkg/reexec" "github.com/ethereum/go-ethereum/internal/cmdtest" + "github.com/ethereum/go-ethereum/internal/reexec" "github.com/ethereum/go-ethereum/rpc" ) diff --git a/go.mod b/go.mod index 4901030311..385d5afdc8 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,6 @@ require ( github.com/crate-crypto/go-kzg-4844 v0.7.0 github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 - github.com/docker/docker v24.0.5+incompatible github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 @@ -141,6 +140,5 @@ require ( golang.org/x/net v0.17.0 // indirect google.golang.org/protobuf v1.27.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gotest.tools/v3 v3.5.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go.sum b/go.sum index 6017c9f77e..cc38e7975f 100644 --- a/go.sum +++ b/go.sum @@ -169,8 +169,6 @@ github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwu github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/docker/docker v24.0.5+incompatible h1:WmgcE4fxyI6EEXxBRxsHnZXrO1pQ3smi0k/jho4HLeY= -github.com/docker/docker v24.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 h1:qwcF+vdFrvPSEUDSX5RVoRccG8a5DhOdWdQ4zN62zzo= github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= @@ -963,8 +961,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/internal/cmdtest/test_cmd.go b/internal/cmdtest/test_cmd.go index 43137053c1..4890d0b7c6 100644 --- a/internal/cmdtest/test_cmd.go +++ b/internal/cmdtest/test_cmd.go @@ -32,7 +32,7 @@ import ( "text/template" "time" - "github.com/docker/docker/pkg/reexec" + "github.com/ethereum/go-ethereum/internal/reexec" ) func NewTestCmd(t *testing.T, data interface{}) *TestCmd { diff --git a/internal/reexec/reexec.go b/internal/reexec/reexec.go new file mode 100644 index 0000000000..af8d347986 --- /dev/null +++ b/internal/reexec/reexec.go @@ -0,0 +1,35 @@ +// This file originates from Docker/Moby, +// https://github.com/moby/moby/blob/master/pkg/reexec/reexec.go +// Licensed under Apache License 2.0: https://github.com/moby/moby/blob/master/LICENSE +// Copyright 2013-2018 Docker, Inc. +// +// Package reexec facilitates the busybox style reexec of the docker binary that +// we require because of the forking limitations of using Go. Handlers can be +// registered with a name and the argv 0 of the exec of the binary will be used +// to find and execute custom init paths. +package reexec + +import ( + "fmt" + "os" +) + +var registeredInitializers = make(map[string]func()) + +// Register adds an initialization func under the specified name +func Register(name string, initializer func()) { + if _, exists := registeredInitializers[name]; exists { + panic(fmt.Sprintf("reexec func already registered under name %q", name)) + } + registeredInitializers[name] = initializer +} + +// Init is called as the first part of the exec process and returns true if an +// initialization function was called. +func Init() bool { + if initializer, ok := registeredInitializers[os.Args[0]]; ok { + initializer() + return true + } + return false +} diff --git a/internal/reexec/self_linux.go b/internal/reexec/self_linux.go new file mode 100644 index 0000000000..956d09326a --- /dev/null +++ b/internal/reexec/self_linux.go @@ -0,0 +1,14 @@ +// This file originates from Docker/Moby, +// https://github.com/moby/moby/blob/master/pkg/reexec/ +// Licensed under Apache License 2.0: https://github.com/moby/moby/blob/master/LICENSE +// Copyright 2013-2018 Docker, Inc. + +//go:build linux + +package reexec + +// Self returns the path to the current process's binary. +// Returns "/proc/self/exe". +func Self() string { + return "/proc/self/exe" +} diff --git a/internal/reexec/self_others.go b/internal/reexec/self_others.go new file mode 100644 index 0000000000..a9f502ca87 --- /dev/null +++ b/internal/reexec/self_others.go @@ -0,0 +1,32 @@ +// This file originates from Docker/Moby, +// https://github.com/moby/moby/blob/master/pkg/reexec/ +// Licensed under Apache License 2.0: https://github.com/moby/moby/blob/master/LICENSE +// Copyright 2013-2018 Docker, Inc. + +//go:build !linux + +package reexec + +import ( + "os" + "os/exec" + "path/filepath" +) + +// Self returns the path to the current process's binary. +// Uses os.Args[0]. +func Self() string { + name := os.Args[0] + if filepath.Base(name) == name { + if lp, err := exec.LookPath(name); err == nil { + return lp + } + } + // handle conversion of relative paths to absolute + if absName, err := filepath.Abs(name); err == nil { + return absName + } + // if we couldn't get absolute name, return original + // (NOTE: Go only errors on Abs() if os.Getwd fails) + return name +} diff --git a/p2p/simulations/adapters/exec.go b/p2p/simulations/adapters/exec.go index 1d812514de..5ac3379393 100644 --- a/p2p/simulations/adapters/exec.go +++ b/p2p/simulations/adapters/exec.go @@ -34,7 +34,7 @@ import ( "syscall" "time" - "github.com/docker/docker/pkg/reexec" + "github.com/ethereum/go-ethereum/internal/reexec" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p" diff --git a/p2p/simulations/adapters/types.go b/p2p/simulations/adapters/types.go index 3b4e05a901..098759599c 100644 --- a/p2p/simulations/adapters/types.go +++ b/p2p/simulations/adapters/types.go @@ -25,8 +25,8 @@ import ( "os" "strconv" - "github.com/docker/docker/pkg/reexec" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/internal/reexec" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p" From ea2e66a58e48ef63566d5274c4a875e817a1cd39 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Tue, 31 Oct 2023 17:39:55 +0800 Subject: [PATCH 032/223] trie/triedb/pathdb: improve dirty node flushing trigger (#28426) * trie/triedb/pathdb: improve dirty node flushing trigger * trie/triedb/pathdb: add tests * trie/triedb/pathdb: address comment --- trie/triedb/pathdb/database_test.go | 51 ++++++++++++++++++++----- trie/triedb/pathdb/disklayer.go | 58 +++++++++++++++++++++-------- trie/triedb/pathdb/history.go | 26 ++++--------- 3 files changed, 93 insertions(+), 42 deletions(-) diff --git a/trie/triedb/pathdb/database_test.go b/trie/triedb/pathdb/database_test.go index 912364f7f4..5509682c39 100644 --- a/trie/triedb/pathdb/database_test.go +++ b/trie/triedb/pathdb/database_test.go @@ -96,11 +96,15 @@ type tester struct { snapStorages map[common.Hash]map[common.Hash]map[common.Hash][]byte } -func newTester(t *testing.T) *tester { +func newTester(t *testing.T, historyLimit uint64) *tester { var ( disk, _ = rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false) - db = New(disk, &Config{CleanCacheSize: 256 * 1024, DirtyCacheSize: 256 * 1024}) - obj = &tester{ + db = New(disk, &Config{ + StateHistory: historyLimit, + CleanCacheSize: 256 * 1024, + DirtyCacheSize: 256 * 1024, + }) + obj = &tester{ db: db, preimages: make(map[common.Hash]common.Address), accounts: make(map[common.Hash][]byte), @@ -376,7 +380,7 @@ func (t *tester) bottomIndex() int { func TestDatabaseRollback(t *testing.T) { // Verify state histories - tester := newTester(t) + tester := newTester(t, 0) defer tester.release() if err := tester.verifyHistory(); err != nil { @@ -402,7 +406,7 @@ func TestDatabaseRollback(t *testing.T) { func TestDatabaseRecoverable(t *testing.T) { var ( - tester = newTester(t) + tester = newTester(t, 0) index = tester.bottomIndex() ) defer tester.release() @@ -440,7 +444,7 @@ func TestDatabaseRecoverable(t *testing.T) { } func TestDisable(t *testing.T) { - tester := newTester(t) + tester := newTester(t, 0) defer tester.release() _, stored := rawdb.ReadAccountTrieNode(tester.db.diskdb, nil) @@ -476,7 +480,7 @@ func TestDisable(t *testing.T) { } func TestCommit(t *testing.T) { - tester := newTester(t) + tester := newTester(t, 0) defer tester.release() if err := tester.db.Commit(tester.lastHash(), false); err != nil { @@ -500,7 +504,7 @@ func TestCommit(t *testing.T) { } func TestJournal(t *testing.T) { - tester := newTester(t) + tester := newTester(t, 0) defer tester.release() if err := tester.db.Journal(tester.lastHash()); err != nil { @@ -524,7 +528,7 @@ func TestJournal(t *testing.T) { } func TestCorruptedJournal(t *testing.T) { - tester := newTester(t) + tester := newTester(t, 0) defer tester.release() if err := tester.db.Journal(tester.lastHash()); err != nil { @@ -553,6 +557,35 @@ func TestCorruptedJournal(t *testing.T) { } } +// TestTailTruncateHistory function is designed to test a specific edge case where, +// when history objects are removed from the end, it should trigger a state flush +// if the ID of the new tail object is even higher than the persisted state ID. +// +// For example, let's say the ID of the persistent state is 10, and the current +// history objects range from ID(5) to ID(15). As we accumulate six more objects, +// the history will expand to cover ID(11) to ID(21). ID(11) then becomes the +// oldest history object, and its ID is even higher than the stored state. +// +// In this scenario, it is mandatory to update the persistent state before +// truncating the tail histories. This ensures that the ID of the persistent state +// always falls within the range of [oldest-history-id, latest-history-id]. +func TestTailTruncateHistory(t *testing.T) { + tester := newTester(t, 10) + defer tester.release() + + tester.db.Close() + tester.db = New(tester.db.diskdb, &Config{StateHistory: 10}) + + head, err := tester.db.freezer.Ancients() + if err != nil { + t.Fatalf("Failed to obtain freezer head") + } + stored := rawdb.ReadPersistentStateID(tester.db.diskdb) + if head != stored { + t.Fatalf("Failed to truncate excess history object above, stored: %d, head: %d", stored, head) + } +} + // copyAccounts returns a deep-copied account set of the provided one. func copyAccounts(set map[common.Hash][]byte) map[common.Hash][]byte { copied := make(map[common.Hash][]byte, len(set)) diff --git a/trie/triedb/pathdb/disklayer.go b/trie/triedb/pathdb/disklayer.go index d3b6419cc5..ef697cbce8 100644 --- a/trie/triedb/pathdb/disklayer.go +++ b/trie/triedb/pathdb/disklayer.go @@ -172,37 +172,65 @@ func (dl *diskLayer) commit(bottom *diffLayer, force bool) (*diskLayer, error) { dl.lock.Lock() defer dl.lock.Unlock() - // Construct and store the state history first. If crash happens - // after storing the state history but without flushing the - // corresponding states(journal), the stored state history will - // be truncated in the next restart. + // Construct and store the state history first. If crash happens after storing + // the state history but without flushing the corresponding states(journal), + // the stored state history will be truncated from head in the next restart. + var ( + overflow bool + oldest uint64 + ) if dl.db.freezer != nil { - err := writeHistory(dl.db.diskdb, dl.db.freezer, bottom, dl.db.config.StateHistory) + err := writeHistory(dl.db.freezer, bottom) if err != nil { return nil, err } + // Determine if the persisted history object has exceeded the configured + // limitation, set the overflow as true if so. + tail, err := dl.db.freezer.Tail() + if err != nil { + return nil, err + } + limit := dl.db.config.StateHistory + if limit != 0 && bottom.stateID()-tail > limit { + overflow = true + oldest = bottom.stateID() - limit + 1 // track the id of history **after truncation** + } } // Mark the diskLayer as stale before applying any mutations on top. dl.stale = true - // Store the root->id lookup afterwards. All stored lookups are - // identified by the **unique** state root. It's impossible that - // in the same chain blocks are not adjacent but have the same - // root. + // Store the root->id lookup afterwards. All stored lookups are identified + // by the **unique** state root. It's impossible that in the same chain + // blocks are not adjacent but have the same root. if dl.id == 0 { rawdb.WriteStateID(dl.db.diskdb, dl.root, 0) } rawdb.WriteStateID(dl.db.diskdb, bottom.rootHash(), bottom.stateID()) - // Construct a new disk layer by merging the nodes from the provided - // diff layer, and flush the content in disk layer if there are too - // many nodes cached. The clean cache is inherited from the original - // disk layer for reusing. + // Construct a new disk layer by merging the nodes from the provided diff + // layer, and flush the content in disk layer if there are too many nodes + // cached. The clean cache is inherited from the original disk layer. ndl := newDiskLayer(bottom.root, bottom.stateID(), dl.db, dl.cleans, dl.buffer.commit(bottom.nodes)) - err := ndl.buffer.flush(ndl.db.diskdb, ndl.cleans, ndl.id, force) - if err != nil { + + // In a unique scenario where the ID of the oldest history object (after tail + // truncation) surpasses the persisted state ID, we take the necessary action + // of forcibly committing the cached dirty nodes to ensure that the persisted + // state ID remains higher. + if !force && rawdb.ReadPersistentStateID(dl.db.diskdb) < oldest { + force = true + } + if err := ndl.buffer.flush(ndl.db.diskdb, ndl.cleans, ndl.id, force); err != nil { return nil, err } + // To remove outdated history objects from the end, we set the 'tail' parameter + // to 'oldest-1' due to the offset between the freezer index and the history ID. + if overflow { + pruned, err := truncateFromTail(ndl.db.diskdb, ndl.db.freezer, oldest-1) + if err != nil { + return nil, err + } + log.Debug("Pruned state history", "items", pruned, "tailid", oldest) + } return ndl, nil } diff --git a/trie/triedb/pathdb/history.go b/trie/triedb/pathdb/history.go index 6f33b61859..6e3f3faaed 100644 --- a/trie/triedb/pathdb/history.go +++ b/trie/triedb/pathdb/history.go @@ -512,38 +512,28 @@ func readHistory(freezer *rawdb.ResettableFreezer, id uint64) (*history, error) return &dec, nil } -// writeHistory writes the state history with provided state set. After -// storing the corresponding state history, it will also prune the stale -// histories from the disk with the given threshold. -func writeHistory(db ethdb.KeyValueStore, freezer *rawdb.ResettableFreezer, dl *diffLayer, limit uint64) error { +// writeHistory persists the state history with the provided state set. +func writeHistory(freezer *rawdb.ResettableFreezer, dl *diffLayer) error { // Short circuit if state set is not available. if dl.states == nil { return errors.New("state change set is not available") } var ( - err error - n int - start = time.Now() - h = newHistory(dl.rootHash(), dl.parentLayer().rootHash(), dl.block, dl.states) + start = time.Now() + history = newHistory(dl.rootHash(), dl.parentLayer().rootHash(), dl.block, dl.states) ) - accountData, storageData, accountIndex, storageIndex := h.encode() + accountData, storageData, accountIndex, storageIndex := history.encode() dataSize := common.StorageSize(len(accountData) + len(storageData)) indexSize := common.StorageSize(len(accountIndex) + len(storageIndex)) // Write history data into five freezer table respectively. - rawdb.WriteStateHistory(freezer, dl.stateID(), h.meta.encode(), accountIndex, storageIndex, accountData, storageData) + rawdb.WriteStateHistory(freezer, dl.stateID(), history.meta.encode(), accountIndex, storageIndex, accountData, storageData) - // Prune stale state histories based on the config. - if limit != 0 && dl.stateID() > limit { - n, err = truncateFromTail(db, freezer, dl.stateID()-limit) - if err != nil { - return err - } - } historyDataBytesMeter.Mark(int64(dataSize)) historyIndexBytesMeter.Mark(int64(indexSize)) historyBuildTimeMeter.UpdateSince(start) - log.Debug("Stored state history", "id", dl.stateID(), "block", dl.block, "data", dataSize, "index", indexSize, "pruned", n, "elapsed", common.PrettyDuration(time.Since(start))) + log.Debug("Stored state history", "id", dl.stateID(), "block", dl.block, "data", dataSize, "index", indexSize, "elapsed", common.PrettyDuration(time.Since(start))) + return nil } From 447945e43834fdb24a71885eebc72996ca451f8b Mon Sep 17 00:00:00 2001 From: Jakub Freebit <49676311+jakub-freebit@users.noreply.github.com> Date: Tue, 31 Oct 2023 20:04:45 +0900 Subject: [PATCH 033/223] core/rawdb: add logging and fix comments around AncientRange function. (#28379) This adds warning logs when the read does not match the expected count. We can also remove the size limit since the function documentation explicitly states that callers should limit the count. --- core/rawdb/accessors_chain.go | 19 ++++++++++++------- core/rawdb/freezer_resettable.go | 7 ++++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/core/rawdb/accessors_chain.go b/core/rawdb/accessors_chain.go index 97401d283c..d9a89fe90c 100644 --- a/core/rawdb/accessors_chain.go +++ b/core/rawdb/accessors_chain.go @@ -334,13 +334,18 @@ func ReadHeaderRange(db ethdb.Reader, number uint64, count uint64) []rlp.RawValu return rlpHeaders } // read remaining from ancients - max := count * 700 - data, err := db.AncientRange(ChainFreezerHeaderTable, i+1-count, count, max) - if err == nil && uint64(len(data)) == count { - // the data is on the order [h, h+1, .., n] -- reordering needed - for i := range data { - rlpHeaders = append(rlpHeaders, data[len(data)-1-i]) - } + data, err := db.AncientRange(ChainFreezerHeaderTable, i+1-count, count, 0) + if err != nil { + log.Error("Failed to read headers from freezer", "err", err) + return rlpHeaders + } + if uint64(len(data)) != count { + log.Warn("Incomplete read of headers from freezer", "wanted", count, "read", len(data)) + return rlpHeaders + } + // The data is on the order [h, h+1, .., n] -- reordering needed + for i := range data { + rlpHeaders = append(rlpHeaders, data[len(data)-1-i]) } return rlpHeaders } diff --git a/core/rawdb/freezer_resettable.go b/core/rawdb/freezer_resettable.go index 1df6411a39..7a85489738 100644 --- a/core/rawdb/freezer_resettable.go +++ b/core/rawdb/freezer_resettable.go @@ -119,9 +119,10 @@ func (f *ResettableFreezer) Ancient(kind string, number uint64) ([]byte, error) // AncientRange retrieves multiple items in sequence, starting from the index 'start'. // It will return -// - at most 'max' items, -// - at least 1 item (even if exceeding the maxByteSize), but will otherwise -// return as many items as fit into maxByteSize +// - at most 'count' items, +// - if maxBytes is specified: at least 1 item (even if exceeding the maxByteSize), +// but will otherwise return as many items as fit into maxByteSize. +// - if maxBytes is not specified, 'count' items will be returned if they are present. func (f *ResettableFreezer) AncientRange(kind string, start, count, maxBytes uint64) ([][]byte, error) { f.lock.RLock() defer f.lock.RUnlock() From bc42e88415d36861a173b6f86fe4f0d94a81683b Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Tue, 31 Oct 2023 12:39:25 +0100 Subject: [PATCH 034/223] core: add basic chain history support in GenerateChain (#28428) This change improves GenerateChain to support internal chain history access (ChainReader) for the consensus engine and EVM. GenerateChain takes a `parent` block and the number of blocks to create. With my changes, the consensus engine and EVM can now access blocks from `parent` up to the block currently being generated. This is required to make the BLOCKHASH instruction work, and also needed to create real clique chains. Clique uses chain history to figure out if the current signer is in-turn, for example. I've also added some more accessors to BlockGen. These are helpful when creating transactions: - g.Signer returns a signer instance for the current block - g.Difficulty returns the current block difficulty - g.Gas returns the remaining gas amount Another fix in this commit concerns the receipts returned by GenerateChain. The receipts now have properly derived fields (BlockHash, etc.) and should generally match what would be returned by the RPC API. --- core/bench_test.go | 4 +- core/chain_makers.go | 271 +++++++++++++++++++++++------------ core/chain_makers_test.go | 56 ++++++-- core/state_processor.go | 3 +- core/state_processor_test.go | 3 +- eth/filters/filter_test.go | 108 ++++++++------ 6 files changed, 295 insertions(+), 150 deletions(-) diff --git a/core/bench_test.go b/core/bench_test.go index 55fa980a85..c5991f10e8 100644 --- a/core/bench_test.go +++ b/core/bench_test.go @@ -84,7 +84,7 @@ func genValueTx(nbytes int) func(int, *BlockGen) { toaddr := common.Address{} data := make([]byte, nbytes) gas, _ := IntrinsicGas(data, nil, false, false, false, false) - signer := types.MakeSigner(gen.config, big.NewInt(int64(i)), gen.header.Time) + signer := gen.Signer() gasPrice := big.NewInt(0) if gen.header.BaseFee != nil { gasPrice = gen.header.BaseFee @@ -128,7 +128,7 @@ func genTxRing(naccounts int) func(int, *BlockGen) { if gen.header.BaseFee != nil { gasPrice = gen.header.BaseFee } - signer := types.MakeSigner(gen.config, big.NewInt(int64(i)), gen.header.Time) + signer := gen.Signer() for { gas -= params.TxGas if gas < params.TxGas { diff --git a/core/chain_makers.go b/core/chain_makers.go index 0f445ab3f0..31c111b73e 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -38,8 +38,8 @@ import ( // See GenerateChain for a detailed explanation. type BlockGen struct { i int + cm *chainMaker parent *types.Block - chain []*types.Block header *types.Header statedb *state.StateDB @@ -49,7 +49,6 @@ type BlockGen struct { uncles []*types.Header withdrawals []*types.Withdrawal - config *params.ChainConfig engine consensus.Engine } @@ -88,13 +87,18 @@ func (b *BlockGen) SetPoS() { b.header.Difficulty = new(big.Int) } +// Difficulty returns the currently calculated difficulty of the block. +func (b *BlockGen) Difficulty() *big.Int { + return new(big.Int).Set(b.header.Difficulty) +} + // SetParentBeaconRoot sets the parent beacon root field of the generated // block. func (b *BlockGen) SetParentBeaconRoot(root common.Hash) { b.header.ParentBeaconRoot = &root var ( - blockContext = NewEVMBlockContext(b.header, nil, &b.header.Coinbase) - vmenv = vm.NewEVM(blockContext, vm.TxContext{}, b.statedb, b.config, vm.Config{}) + blockContext = NewEVMBlockContext(b.header, b.cm, &b.header.Coinbase) + vmenv = vm.NewEVM(blockContext, vm.TxContext{}, b.statedb, b.cm.config, vm.Config{}) ) ProcessBeaconBlockRoot(root, vmenv, b.statedb) } @@ -111,7 +115,7 @@ func (b *BlockGen) addTx(bc *BlockChain, vmConfig vm.Config, tx *types.Transacti b.SetCoinbase(common.Address{}) } b.statedb.SetTxContext(tx.Hash(), len(b.txs)) - receipt, err := ApplyTransaction(b.config, bc, &b.header.Coinbase, b.gasPool, b.statedb, b.header, tx, &b.header.GasUsed, vmConfig) + receipt, err := ApplyTransaction(b.cm.config, bc, &b.header.Coinbase, b.gasPool, b.statedb, b.header, tx, &b.header.GasUsed, vmConfig) if err != nil { panic(err) } @@ -125,11 +129,11 @@ func (b *BlockGen) addTx(bc *BlockChain, vmConfig vm.Config, tx *types.Transacti // AddTx adds a transaction to the generated block. If no coinbase has // been set, the block's coinbase is set to the zero address. // -// AddTx panics if the transaction cannot be executed. In addition to -// the protocol-imposed limitations (gas limit, etc.), there are some -// further limitations on the content of transactions that can be -// added. Notably, contract code relying on the BLOCKHASH instruction -// will panic during execution. +// AddTx panics if the transaction cannot be executed. In addition to the protocol-imposed +// limitations (gas limit, etc.), there are some further limitations on the content of +// transactions that can be added. Notably, contract code relying on the BLOCKHASH +// instruction will panic during execution if it attempts to access a block number outside +// of the range created by GenerateChain. func (b *BlockGen) AddTx(tx *types.Transaction) { b.addTx(nil, vm.Config{}, tx) } @@ -137,11 +141,10 @@ func (b *BlockGen) AddTx(tx *types.Transaction) { // AddTxWithChain adds a transaction to the generated block. If no coinbase has // been set, the block's coinbase is set to the zero address. // -// AddTxWithChain panics if the transaction cannot be executed. In addition to -// the protocol-imposed limitations (gas limit, etc.), there are some -// further limitations on the content of transactions that can be -// added. If contract code relies on the BLOCKHASH instruction, -// the block in chain will be returned. +// AddTxWithChain panics if the transaction cannot be executed. In addition to the +// protocol-imposed limitations (gas limit, etc.), there are some further limitations on +// the content of transactions that can be added. If contract code relies on the BLOCKHASH +// instruction, the block in chain will be returned. func (b *BlockGen) AddTxWithChain(bc *BlockChain, tx *types.Transaction) { b.addTx(bc, vm.Config{}, tx) } @@ -158,8 +161,7 @@ func (b *BlockGen) GetBalance(addr common.Address) *big.Int { return b.statedb.GetBalance(addr) } -// AddUncheckedTx forcefully adds a transaction to the block without any -// validation. +// AddUncheckedTx forcefully adds a transaction to the block without any validation. // // AddUncheckedTx will cause consensus failures when used during real // chain processing. This is best used in conjunction with raw block insertion. @@ -182,6 +184,16 @@ func (b *BlockGen) BaseFee() *big.Int { return new(big.Int).Set(b.header.BaseFee) } +// Gas returns the amount of gas left in the current block. +func (b *BlockGen) Gas() uint64 { + return b.header.GasLimit - b.header.GasUsed +} + +// Signer returns a valid signer instance for the current block. +func (b *BlockGen) Signer() types.Signer { + return types.MakeSigner(b.cm.config, b.header.Number, b.header.Time) +} + // AddUncheckedReceipt forcefully adds a receipts to the block without a // backing transaction. // @@ -207,20 +219,19 @@ func (b *BlockGen) AddUncle(h *types.Header) { var parent *types.Header for i := b.i - 1; i >= 0; i-- { - if b.chain[i].Hash() == h.ParentHash { - parent = b.chain[i].Header() + if b.cm.chain[i].Hash() == h.ParentHash { + parent = b.cm.chain[i].Header() break } } - chainreader := &fakeChainReader{config: b.config} - h.Difficulty = b.engine.CalcDifficulty(chainreader, b.header.Time, parent) + h.Difficulty = b.engine.CalcDifficulty(b.cm, b.header.Time, parent) // The gas limit and price should be derived from the parent h.GasLimit = parent.GasLimit - if b.config.IsLondon(h.Number) { - h.BaseFee = eip1559.CalcBaseFee(b.config, parent) - if !b.config.IsLondon(parent.Number) { - parentGasLimit := parent.GasLimit * b.config.ElasticityMultiplier() + if b.cm.config.IsLondon(h.Number) { + h.BaseFee = eip1559.CalcBaseFee(b.cm.config, parent) + if !b.cm.config.IsLondon(parent.Number) { + parentGasLimit := parent.GasLimit * b.cm.config.ElasticityMultiplier() h.GasLimit = CalcGasLimit(parentGasLimit, parentGasLimit) } } @@ -242,12 +253,12 @@ func (b *BlockGen) nextWithdrawalIndex() uint64 { return b.withdrawals[len(b.withdrawals)-1].Index + 1 } for i := b.i - 1; i >= 0; i-- { - if wd := b.chain[i].Withdrawals(); len(wd) != 0 { + if wd := b.cm.chain[i].Withdrawals(); len(wd) != 0 { return wd[len(wd)-1].Index + 1 } if i == 0 { // Correctly set the index if no parent had withdrawals. - if wd := b.parent.Withdrawals(); len(wd) != 0 { + if wd := b.cm.bottom.Withdrawals(); len(wd) != 0 { return wd[len(wd)-1].Index + 1 } } @@ -263,9 +274,9 @@ func (b *BlockGen) PrevBlock(index int) *types.Block { panic(fmt.Errorf("block index %d out of range (%d,%d)", index, -1, b.i)) } if index == -1 { - return b.parent + return b.cm.bottom } - return b.chain[index] + return b.cm.chain[index] } // OffsetTime modifies the time instance of a block, implicitly changing its @@ -273,11 +284,10 @@ func (b *BlockGen) PrevBlock(index int) *types.Block { // tied to chain length directly. func (b *BlockGen) OffsetTime(seconds int64) { b.header.Time += uint64(seconds) - if b.header.Time <= b.parent.Header().Time { + if b.header.Time <= b.cm.bottom.Header().Time { panic("block time out of range") } - chainreader := &fakeChainReader{config: b.config} - b.header.Difficulty = b.engine.CalcDifficulty(chainreader, b.header.Time, b.parent.Header()) + b.header.Difficulty = b.engine.CalcDifficulty(b.cm, b.header.Time, b.parent.Header()) } // GenerateChain creates a chain of n blocks. The first block's @@ -296,11 +306,14 @@ func GenerateChain(config *params.ChainConfig, parent *types.Block, engine conse if config == nil { config = params.TestChainConfig } - blocks, receipts := make(types.Blocks, n), make([]types.Receipts, n) - chainreader := &fakeChainReader{config: config} + if engine == nil { + panic("nil consensus engine") + } + cm := newChainMaker(parent, config, engine) + genblock := func(i int, parent *types.Block, triedb *trie.Database, statedb *state.StateDB) (*types.Block, types.Receipts) { - b := &BlockGen{i: i, chain: blocks, parent: parent, statedb: statedb, config: config, engine: engine} - b.header = makeHeader(chainreader, parent, statedb, b.engine) + b := &BlockGen{i: i, cm: cm, parent: parent, statedb: statedb, engine: engine} + b.header = cm.makeHeader(parent, statedb, b.engine) // Set the difficulty for clique block. The chain maker doesn't have access // to a chain, so the difficulty will be left unset (nil). Set it here to the @@ -330,24 +343,23 @@ func GenerateChain(config *params.ChainConfig, parent *types.Block, engine conse if gen != nil { gen(i, b) } - if b.engine != nil { - block, err := b.engine.FinalizeAndAssemble(chainreader, b.header, statedb, b.txs, b.uncles, b.receipts, b.withdrawals) - if err != nil { - panic(err) - } - // Write state changes to db - root, err := statedb.Commit(b.header.Number.Uint64(), config.IsEIP158(b.header.Number)) - if err != nil { - panic(fmt.Sprintf("state write error: %v", err)) - } - if err = triedb.Commit(root, false); err != nil { - panic(fmt.Sprintf("trie write error: %v", err)) - } - return block, b.receipts + block, err := b.engine.FinalizeAndAssemble(cm, b.header, statedb, b.txs, b.uncles, b.receipts, b.withdrawals) + if err != nil { + panic(err) } - return nil, nil + + // Write state changes to db + root, err := statedb.Commit(b.header.Number.Uint64(), config.IsEIP158(b.header.Number)) + if err != nil { + panic(fmt.Sprintf("state write error: %v", err)) + } + if err = triedb.Commit(root, false); err != nil { + panic(fmt.Sprintf("trie write error: %v", err)) + } + return block, b.receipts } + // Forcibly use hash-based state scheme for retaining all nodes in disk. triedb := trie.NewDatabase(db, trie.HashDefaults) defer triedb.Close() @@ -357,12 +369,36 @@ func GenerateChain(config *params.ChainConfig, parent *types.Block, engine conse if err != nil { panic(err) } - block, receipt := genblock(i, parent, triedb, statedb) - blocks[i] = block - receipts[i] = receipt + block, receipts := genblock(i, parent, triedb, statedb) + + // Post-process the receipts. + // Here we assign the final block hash and other info into the receipt. + // In order for DeriveFields to work, the transaction and receipt lists need to be + // of equal length. If AddUncheckedTx or AddUncheckedReceipt are used, there will be + // extra ones, so we just trim the lists here. + receiptsCount := len(receipts) + txs := block.Transactions() + if len(receipts) > len(txs) { + receipts = receipts[:len(txs)] + } else if len(receipts) < len(txs) { + txs = txs[:len(receipts)] + } + var blobGasPrice *big.Int + if block.ExcessBlobGas() != nil { + blobGasPrice = eip4844.CalcBlobFee(*block.ExcessBlobGas()) + } + if err := receipts.DeriveFields(config, block.Hash(), block.NumberU64(), block.Time(), block.BaseFee(), blobGasPrice, txs); err != nil { + panic(err) + } + + // Re-expand to ensure all receipts are returned. + receipts = receipts[:receiptsCount] + + // Advance the chain. + cm.add(block, receipts) parent = block } - return blocks, receipts + return cm.chain, cm.receipts } // GenerateChainWithGenesis is a wrapper of GenerateChain which will initialize @@ -380,35 +416,26 @@ func GenerateChainWithGenesis(genesis *Genesis, engine consensus.Engine, n int, return db, blocks, receipts } -func makeHeader(chain consensus.ChainReader, parent *types.Block, state *state.StateDB, engine consensus.Engine) *types.Header { - var time uint64 - if parent.Time() == 0 { - time = 10 - } else { - time = parent.Time() + 10 // block time is fixed at 10 seconds - } +func (cm *chainMaker) makeHeader(parent *types.Block, state *state.StateDB, engine consensus.Engine) *types.Header { + time := parent.Time() + 10 // block time is fixed at 10 seconds header := &types.Header{ - Root: state.IntermediateRoot(chain.Config().IsEIP158(parent.Number())), + Root: state.IntermediateRoot(cm.config.IsEIP158(parent.Number())), ParentHash: parent.Hash(), Coinbase: parent.Coinbase(), - Difficulty: engine.CalcDifficulty(chain, time, &types.Header{ - Number: parent.Number(), - Time: time - 10, - Difficulty: parent.Difficulty(), - UncleHash: parent.UncleHash(), - }), - GasLimit: parent.GasLimit(), - Number: new(big.Int).Add(parent.Number(), common.Big1), - Time: time, + Difficulty: engine.CalcDifficulty(cm, time, parent.Header()), + GasLimit: parent.GasLimit(), + Number: new(big.Int).Add(parent.Number(), common.Big1), + Time: time, } - if chain.Config().IsLondon(header.Number) { - header.BaseFee = eip1559.CalcBaseFee(chain.Config(), parent.Header()) - if !chain.Config().IsLondon(parent.Number()) { - parentGasLimit := parent.GasLimit() * chain.Config().ElasticityMultiplier() + + if cm.config.IsLondon(header.Number) { + header.BaseFee = eip1559.CalcBaseFee(cm.config, parent.Header()) + if !cm.config.IsLondon(parent.Number()) { + parentGasLimit := parent.GasLimit() * cm.config.ElasticityMultiplier() header.GasLimit = CalcGasLimit(parentGasLimit, parentGasLimit) } } - if chain.Config().IsCancun(header.Number, header.Time) { + if cm.config.IsCancun(header.Number, header.Time) { var ( parentExcessBlobGas uint64 parentBlobGasUsed uint64 @@ -461,18 +488,86 @@ func makeBlockChainWithGenesis(genesis *Genesis, n int, engine consensus.Engine, return db, blocks } -type fakeChainReader struct { - config *params.ChainConfig +// chainMaker contains the state of chain generation. +type chainMaker struct { + bottom *types.Block + engine consensus.Engine + config *params.ChainConfig + chain []*types.Block + chainByHash map[common.Hash]*types.Block + receipts []types.Receipts } -// Config returns the chain configuration. -func (cr *fakeChainReader) Config() *params.ChainConfig { - return cr.config +func newChainMaker(bottom *types.Block, config *params.ChainConfig, engine consensus.Engine) *chainMaker { + return &chainMaker{ + bottom: bottom, + config: config, + engine: engine, + chainByHash: make(map[common.Hash]*types.Block), + } +} + +func (cm *chainMaker) add(b *types.Block, r []*types.Receipt) { + cm.chain = append(cm.chain, b) + cm.chainByHash[b.Hash()] = b + cm.receipts = append(cm.receipts, r) +} + +func (cm *chainMaker) blockByNumber(number uint64) *types.Block { + if number == cm.bottom.NumberU64() { + return cm.bottom + } + cur := cm.CurrentHeader().Number.Uint64() + lowest := cm.bottom.NumberU64() + 1 + if number < lowest || number > cur { + return nil + } + return cm.chain[number-lowest] +} + +// ChainReader/ChainContext implementation + +// Config returns the chain configuration (for consensus.ChainReader). +func (cm *chainMaker) Config() *params.ChainConfig { + return cm.config +} + +// Engine returns the consensus engine (for ChainContext). +func (cm *chainMaker) Engine() consensus.Engine { + return cm.engine +} + +func (cm *chainMaker) CurrentHeader() *types.Header { + if len(cm.chain) == 0 { + return cm.bottom.Header() + } + return cm.chain[len(cm.chain)-1].Header() } -func (cr *fakeChainReader) CurrentHeader() *types.Header { return nil } -func (cr *fakeChainReader) GetHeaderByNumber(number uint64) *types.Header { return nil } -func (cr *fakeChainReader) GetHeaderByHash(hash common.Hash) *types.Header { return nil } -func (cr *fakeChainReader) GetHeader(hash common.Hash, number uint64) *types.Header { return nil } -func (cr *fakeChainReader) GetBlock(hash common.Hash, number uint64) *types.Block { return nil } -func (cr *fakeChainReader) GetTd(hash common.Hash, number uint64) *big.Int { return nil } +func (cm *chainMaker) GetHeaderByNumber(number uint64) *types.Header { + b := cm.blockByNumber(number) + if b == nil { + return nil + } + return b.Header() +} + +func (cm *chainMaker) GetHeaderByHash(hash common.Hash) *types.Header { + b := cm.chainByHash[hash] + if b == nil { + return nil + } + return b.Header() +} + +func (cm *chainMaker) GetHeader(hash common.Hash, number uint64) *types.Header { + return cm.GetHeaderByNumber(number) +} + +func (cm *chainMaker) GetBlock(hash common.Hash, number uint64) *types.Block { + return cm.blockByNumber(number) +} + +func (cm *chainMaker) GetTd(hash common.Hash, number uint64) *big.Int { + return nil // not supported +} diff --git a/core/chain_makers_test.go b/core/chain_makers_test.go index 018151cb0c..84148841f5 100644 --- a/core/chain_makers_test.go +++ b/core/chain_makers_test.go @@ -19,8 +19,10 @@ package core import ( "fmt" "math/big" + "reflect" "testing" + "github.com/davecgh/go-spew/spew" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/consensus/ethash" @@ -52,9 +54,8 @@ func TestGeneratePOSChain(t *testing.T) { Difficulty: common.Big1, GasLimit: 5_000_000, } - gendb = rawdb.NewMemoryDatabase() - signer = types.LatestSigner(gspec.Config) - db = rawdb.NewMemoryDatabase() + gendb = rawdb.NewMemoryDatabase() + db = rawdb.NewMemoryDatabase() ) config.TerminalTotalDifficultyPassed = true @@ -82,10 +83,20 @@ func TestGeneratePOSChain(t *testing.T) { } genesis := gspec.MustCommit(gendb, trie.NewDatabase(gendb, trie.HashDefaults)) - chain, _ := GenerateChain(gspec.Config, genesis, beacon.NewFaker(), gendb, 4, func(i int, gen *BlockGen) { + genchain, genreceipts := GenerateChain(gspec.Config, genesis, beacon.NewFaker(), gendb, 4, func(i int, gen *BlockGen) { gen.SetParentBeaconRoot(common.Hash{byte(i + 1)}) - tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(address), address, big.NewInt(1000), params.TxGas, new(big.Int).Add(gen.BaseFee(), common.Big1), nil), signer, key) + + // Add value transfer tx. + tx := types.MustSignNewTx(key, gen.Signer(), &types.LegacyTx{ + Nonce: gen.TxNonce(address), + To: &address, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: new(big.Int).Add(gen.BaseFee(), common.Big1), + }) gen.AddTx(tx) + + // Add withdrawals. if i == 1 { gen.AddWithdrawal(&types.Withdrawal{ Validator: 42, @@ -116,20 +127,39 @@ func TestGeneratePOSChain(t *testing.T) { blockchain, _ := NewBlockChain(db, nil, gspec, nil, beacon.NewFaker(), vm.Config{}, nil, nil) defer blockchain.Stop() - if i, err := blockchain.InsertChain(chain); err != nil { - fmt.Printf("insert error (block %d): %v\n", chain[i].NumberU64(), err) - return + if i, err := blockchain.InsertChain(genchain); err != nil { + t.Fatalf("insert error (block %d): %v\n", genchain[i].NumberU64(), err) } // enforce that withdrawal indexes are monotonically increasing from 0 var ( withdrawalIndex uint64 - head = blockchain.CurrentBlock().Number.Uint64() ) - for i := 0; i < int(head); i++ { - block := blockchain.GetBlockByNumber(uint64(i)) + for i := range genchain { + blocknum := genchain[i].NumberU64() + block := blockchain.GetBlockByNumber(blocknum) if block == nil { - t.Fatalf("block %d not found", i) + t.Fatalf("block %d not found", blocknum) + } + + // Verify receipts. + genBlockReceipts := genreceipts[i] + for _, r := range genBlockReceipts { + if r.BlockNumber.Cmp(block.Number()) != 0 { + t.Errorf("receipt has wrong block number %d, want %d", r.BlockNumber, block.Number()) + } + if r.BlockHash != block.Hash() { + t.Errorf("receipt has wrong block hash %v, want %v", r.BlockHash, block.Hash()) + } + + // patch up empty logs list to make DeepEqual below work + if r.Logs == nil { + r.Logs = []*types.Log{} + } + } + blockchainReceipts := blockchain.GetReceiptsByHash(block.Hash()) + if !reflect.DeepEqual(genBlockReceipts, blockchainReceipts) { + t.Fatalf("receipts mismatch\ngenerated: %s\nblockchain: %s", spew.Sdump(genBlockReceipts), spew.Sdump(blockchainReceipts)) } // Verify withdrawals. @@ -144,7 +174,7 @@ func TestGeneratePOSChain(t *testing.T) { } // Verify parent beacon root. - want := common.Hash{byte(i)} + want := common.Hash{byte(blocknum)} if got := block.BeaconRoot(); *got != want { t.Fatalf("block %d, wrong parent beacon root: got %s, want %s", i, got, want) } diff --git a/core/state_processor.go b/core/state_processor.go index 7dd81487d5..9a4333f723 100644 --- a/core/state_processor.go +++ b/core/state_processor.go @@ -165,7 +165,8 @@ func ApplyTransaction(config *params.ChainConfig, bc ChainContext, author *commo } // Create a new context to be used in the EVM environment blockContext := NewEVMBlockContext(header, bc, author) - vmenv := vm.NewEVM(blockContext, vm.TxContext{BlobHashes: tx.BlobHashes()}, statedb, config, cfg) + txContext := NewEVMTxContext(msg) + vmenv := vm.NewEVM(blockContext, txContext, statedb, config, cfg) return applyTransaction(msg, config, gp, statedb, header.Number, header.Hash(), tx, usedGas, vmenv) } diff --git a/core/state_processor_test.go b/core/state_processor_test.go index 6c6ef5adfd..e80bc288c3 100644 --- a/core/state_processor_test.go +++ b/core/state_processor_test.go @@ -359,7 +359,8 @@ func TestStateProcessorErrors(t *testing.T) { func GenerateBadBlock(parent *types.Block, engine consensus.Engine, txs types.Transactions, config *params.ChainConfig) *types.Block { difficulty := big.NewInt(0) if !config.TerminalTotalDifficultyPassed { - difficulty = engine.CalcDifficulty(&fakeChainReader{config}, parent.Time()+10, &types.Header{ + fakeChainReader := newChainMaker(nil, config, engine) + difficulty = engine.CalcDifficulty(fakeChainReader, parent.Time()+10, &types.Header{ Number: parent.Number(), Time: parent.Time(), Difficulty: parent.Difficulty(), diff --git a/eth/filters/filter_test.go b/eth/filters/filter_test.go index a076fb7377..4e09a9038b 100644 --- a/eth/filters/filter_test.go +++ b/eth/filters/filter_test.go @@ -123,35 +123,35 @@ func TestFilters(t *testing.T) { pragma solidity >=0.7.0 <0.9.0; contract Logger { - function log0() external { - assembly { - log0(0, 0) - } - } + function log0() external { + assembly { + log0(0, 0) + } + } - function log1(uint t1) external { - assembly { - log1(0, 0, t1) - } - } + function log1(uint t1) external { + assembly { + log1(0, 0, t1) + } + } - function log2(uint t1, uint t2) external { - assembly { - log2(0, 0, t1, t2) - } - } + function log2(uint t1, uint t2) external { + assembly { + log2(0, 0, t1, t2) + } + } - function log3(uint t1, uint t2, uint t3) external { - assembly { - log3(0, 0, t1, t2, t3) - } - } + function log3(uint t1, uint t2, uint t3) external { + assembly { + log3(0, 0, t1, t2, t3) + } + } - function log4(uint t1, uint t2, uint t3, uint t4) external { - assembly { - log4(0, 0, t1, t2, t3, t4) - } - } + function log4(uint t1, uint t2, uint t3, uint t4) external { + assembly { + log4(0, 0, t1, t2, t3, t4) + } + } } */ bytecode = common.FromHex("608060405234801561001057600080fd5b50600436106100575760003560e01c80630aa731851461005c5780632a4c08961461006657806378b9a1f314610082578063c670f8641461009e578063c683d6a3146100ba575b600080fd5b6100646100d6565b005b610080600480360381019061007b9190610143565b6100dc565b005b61009c60048036038101906100979190610196565b6100e8565b005b6100b860048036038101906100b391906101d6565b6100f2565b005b6100d460048036038101906100cf9190610203565b6100fa565b005b600080a0565b808284600080a3505050565b8082600080a25050565b80600080a150565b80828486600080a450505050565b600080fd5b6000819050919050565b6101208161010d565b811461012b57600080fd5b50565b60008135905061013d81610117565b92915050565b60008060006060848603121561015c5761015b610108565b5b600061016a8682870161012e565b935050602061017b8682870161012e565b925050604061018c8682870161012e565b9150509250925092565b600080604083850312156101ad576101ac610108565b5b60006101bb8582860161012e565b92505060206101cc8582860161012e565b9150509250929050565b6000602082840312156101ec576101eb610108565b5b60006101fa8482850161012e565b91505092915050565b6000806000806080858703121561021d5761021c610108565b5b600061022b8782880161012e565b945050602061023c8782880161012e565b935050604061024d8782880161012e565b925050606061025e8782880161012e565b9150509295919450925056fea264697066735822122073a4b156f487e59970dc1ef449cc0d51467268f676033a17188edafcee861f9864736f6c63430008110033") @@ -287,53 +287,71 @@ func TestFilters(t *testing.T) { { f: sys.NewBlockFilter(chain[2].Hash(), []common.Address{contract}, nil), want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696332","0x0000000000000000000000000000000000000000000000000000746f70696331"],"data":"0x","blockNumber":"0x3","transactionHash":"0xdefe471992a07a02acdfbe33edaae22fbb86d7d3cec3f1b8e4e77702fb3acc1d","transactionIndex":"0x0","blockHash":"0x7a7556792ca7d37882882e2b001fe14833eaf81c2c7f865c9c771ec37a024f6b","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(0, int64(rpc.LatestBlockNumber), []common.Address{contract}, [][]common.Hash{{hash1, hash2, hash3, hash4}}), want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696331"],"data":"0x","blockNumber":"0x2","transactionHash":"0xa8028c655b6423204c8edfbc339f57b042d6bec2b6a61145d76b7c08b4cccd42","transactionIndex":"0x0","blockHash":"0x24417bb49ce44cfad65da68f33b510bf2a129c0d89ccf06acb6958b8585ccf34","logIndex":"0x0","removed":false},{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696332","0x0000000000000000000000000000000000000000000000000000746f70696331"],"data":"0x","blockNumber":"0x3","transactionHash":"0xdefe471992a07a02acdfbe33edaae22fbb86d7d3cec3f1b8e4e77702fb3acc1d","transactionIndex":"0x0","blockHash":"0x7a7556792ca7d37882882e2b001fe14833eaf81c2c7f865c9c771ec37a024f6b","logIndex":"0x0","removed":false},{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696334"],"data":"0x","blockNumber":"0x3e8","transactionHash":"0x9a87842100a638dfa5da8842b4beda691d2fd77b0c84b57f24ecfa9fb208f747","transactionIndex":"0x0","blockHash":"0xb360bad5265261c075ece02d3bf0e39498a6a76310482cdfd90588748e6c5ee0","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(900, 999, []common.Address{contract}, [][]common.Hash{{hash3}}), - }, { + }, + { f: sys.NewRangeFilter(990, int64(rpc.LatestBlockNumber), []common.Address{contract2}, [][]common.Hash{{hash3}}), want: `[{"address":"0xff00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696333"],"data":"0x","blockNumber":"0x3e7","transactionHash":"0x53e3675800c6908424b61b35a44e51ca4c73ca603e58a65b32c67968b4f42200","transactionIndex":"0x0","blockHash":"0x2e4620a2b426b0612ec6cad9603f466723edaed87f98c9137405dd4f7a2409ff","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(1, 10, []common.Address{contract}, [][]common.Hash{{hash2}, {hash1}}), want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696332","0x0000000000000000000000000000000000000000000000000000746f70696331"],"data":"0x","blockNumber":"0x3","transactionHash":"0xdefe471992a07a02acdfbe33edaae22fbb86d7d3cec3f1b8e4e77702fb3acc1d","transactionIndex":"0x0","blockHash":"0x7a7556792ca7d37882882e2b001fe14833eaf81c2c7f865c9c771ec37a024f6b","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(1, 10, nil, [][]common.Hash{{hash1, hash2}}), want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696331"],"data":"0x","blockNumber":"0x2","transactionHash":"0xa8028c655b6423204c8edfbc339f57b042d6bec2b6a61145d76b7c08b4cccd42","transactionIndex":"0x0","blockHash":"0x24417bb49ce44cfad65da68f33b510bf2a129c0d89ccf06acb6958b8585ccf34","logIndex":"0x0","removed":false},{"address":"0xff00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696331"],"data":"0x","blockNumber":"0x2","transactionHash":"0xdba3e2ea9a7d690b722d70ee605fd67ba4c00d1d3aecd5cf187a7b92ad8eb3df","transactionIndex":"0x1","blockHash":"0x24417bb49ce44cfad65da68f33b510bf2a129c0d89ccf06acb6958b8585ccf34","logIndex":"0x1","removed":false},{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696332","0x0000000000000000000000000000000000000000000000000000746f70696331"],"data":"0x","blockNumber":"0x3","transactionHash":"0xdefe471992a07a02acdfbe33edaae22fbb86d7d3cec3f1b8e4e77702fb3acc1d","transactionIndex":"0x0","blockHash":"0x7a7556792ca7d37882882e2b001fe14833eaf81c2c7f865c9c771ec37a024f6b","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(0, int64(rpc.LatestBlockNumber), nil, [][]common.Hash{{common.BytesToHash([]byte("fail"))}}), - }, { + }, + { f: sys.NewRangeFilter(0, int64(rpc.LatestBlockNumber), []common.Address{common.BytesToAddress([]byte("failmenow"))}, nil), - }, { + }, + { f: sys.NewRangeFilter(0, int64(rpc.LatestBlockNumber), nil, [][]common.Hash{{common.BytesToHash([]byte("fail"))}, {hash1}}), - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.LatestBlockNumber), int64(rpc.LatestBlockNumber), nil, nil), want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696334"],"data":"0x","blockNumber":"0x3e8","transactionHash":"0x9a87842100a638dfa5da8842b4beda691d2fd77b0c84b57f24ecfa9fb208f747","transactionIndex":"0x0","blockHash":"0xb360bad5265261c075ece02d3bf0e39498a6a76310482cdfd90588748e6c5ee0","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.FinalizedBlockNumber), int64(rpc.LatestBlockNumber), nil, nil), want: `[{"address":"0xff00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696333"],"data":"0x","blockNumber":"0x3e7","transactionHash":"0x53e3675800c6908424b61b35a44e51ca4c73ca603e58a65b32c67968b4f42200","transactionIndex":"0x0","blockHash":"0x2e4620a2b426b0612ec6cad9603f466723edaed87f98c9137405dd4f7a2409ff","logIndex":"0x0","removed":false},{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696334"],"data":"0x","blockNumber":"0x3e8","transactionHash":"0x9a87842100a638dfa5da8842b4beda691d2fd77b0c84b57f24ecfa9fb208f747","transactionIndex":"0x0","blockHash":"0xb360bad5265261c075ece02d3bf0e39498a6a76310482cdfd90588748e6c5ee0","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.FinalizedBlockNumber), int64(rpc.FinalizedBlockNumber), nil, nil), want: `[{"address":"0xff00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696333"],"data":"0x","blockNumber":"0x3e7","transactionHash":"0x53e3675800c6908424b61b35a44e51ca4c73ca603e58a65b32c67968b4f42200","transactionIndex":"0x0","blockHash":"0x2e4620a2b426b0612ec6cad9603f466723edaed87f98c9137405dd4f7a2409ff","logIndex":"0x0","removed":false}]`, - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.LatestBlockNumber), int64(rpc.FinalizedBlockNumber), nil, nil), - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.SafeBlockNumber), int64(rpc.LatestBlockNumber), nil, nil), err: "safe header not found", - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.SafeBlockNumber), int64(rpc.SafeBlockNumber), nil, nil), err: "safe header not found", - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.LatestBlockNumber), int64(rpc.SafeBlockNumber), nil, nil), err: "safe header not found", - }, { + }, + { f: sys.NewRangeFilter(int64(rpc.PendingBlockNumber), int64(rpc.PendingBlockNumber), nil, nil), - want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696335"],"data":"0x","blockNumber":"0x3e9","transactionHash":"0x4110587c1b8d86edc85dce929a34127f1cb8809515a9f177c91c866de3eb0638","transactionIndex":"0x0","blockHash":"0xc7245899e5817f16fa99cf5ad2d9c1e4b98443a565a673ec9c764640443ef037","logIndex":"0x0","removed":false}]`, - }, { + want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696335"],"data":"0x","blockNumber":"0x3e9","transactionHash":"0x4110587c1b8d86edc85dce929a34127f1cb8809515a9f177c91c866de3eb0638","transactionIndex":"0x0","blockHash":"0xd5e8d4e4eb51a2a2a6ec20ef68a4c2801240743c8deb77a6a1d118ac3eefb725","logIndex":"0x0","removed":false}]`, + }, + { f: sys.NewRangeFilter(int64(rpc.LatestBlockNumber), int64(rpc.PendingBlockNumber), nil, nil), - want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696334"],"data":"0x","blockNumber":"0x3e8","transactionHash":"0x9a87842100a638dfa5da8842b4beda691d2fd77b0c84b57f24ecfa9fb208f747","transactionIndex":"0x0","blockHash":"0xb360bad5265261c075ece02d3bf0e39498a6a76310482cdfd90588748e6c5ee0","logIndex":"0x0","removed":false},{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696335"],"data":"0x","blockNumber":"0x3e9","transactionHash":"0x4110587c1b8d86edc85dce929a34127f1cb8809515a9f177c91c866de3eb0638","transactionIndex":"0x0","blockHash":"0xc7245899e5817f16fa99cf5ad2d9c1e4b98443a565a673ec9c764640443ef037","logIndex":"0x0","removed":false}]`, - }, { + want: `[{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696334"],"data":"0x","blockNumber":"0x3e8","transactionHash":"0x9a87842100a638dfa5da8842b4beda691d2fd77b0c84b57f24ecfa9fb208f747","transactionIndex":"0x0","blockHash":"0xb360bad5265261c075ece02d3bf0e39498a6a76310482cdfd90588748e6c5ee0","logIndex":"0x0","removed":false},{"address":"0xfe00000000000000000000000000000000000000","topics":["0x0000000000000000000000000000000000000000000000000000746f70696335"],"data":"0x","blockNumber":"0x3e9","transactionHash":"0x4110587c1b8d86edc85dce929a34127f1cb8809515a9f177c91c866de3eb0638","transactionIndex":"0x0","blockHash":"0xd5e8d4e4eb51a2a2a6ec20ef68a4c2801240743c8deb77a6a1d118ac3eefb725","logIndex":"0x0","removed":false}]`, + }, + { f: sys.NewRangeFilter(int64(rpc.PendingBlockNumber), int64(rpc.LatestBlockNumber), nil, nil), err: "invalid block range", }, From 285202aae2a580b82f30ebd909c1819b22d90066 Mon Sep 17 00:00:00 2001 From: Mario Vega Date: Tue, 31 Oct 2023 08:23:51 -0600 Subject: [PATCH 035/223] cmd/evm: add --run option to blocktest command (#28421) Co-authored-by: lightclient --- cmd/evm/blockrunner.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cmd/evm/blockrunner.go b/cmd/evm/blockrunner.go index 42be6726b5..ff65574586 100644 --- a/cmd/evm/blockrunner.go +++ b/cmd/evm/blockrunner.go @@ -21,6 +21,7 @@ import ( "errors" "fmt" "os" + "regexp" "sort" "github.com/ethereum/go-ethereum/core/rawdb" @@ -30,11 +31,18 @@ import ( "github.com/urfave/cli/v2" ) +var RunFlag = &cli.StringFlag{ + Name: "run", + Value: ".*", + Usage: "Run only those tests matching the regular expression.", +} + var blockTestCommand = &cli.Command{ Action: blockTestCmd, Name: "blocktest", Usage: "executes the given blockchain tests", ArgsUsage: "", + Flags: []cli.Flag{RunFlag}, } func blockTestCmd(ctx *cli.Context) error { @@ -61,13 +69,21 @@ func blockTestCmd(ctx *cli.Context) error { if err = json.Unmarshal(src, &tests); err != nil { return err } - // run them in order + re, err := regexp.Compile(ctx.String(RunFlag.Name)) + if err != nil { + return fmt.Errorf("invalid regex -%s: %v", RunFlag.Name, err) + } + + // Run them in order var keys []string for key := range tests { keys = append(keys, key) } sort.Strings(keys) for _, name := range keys { + if !re.MatchString(name) { + continue + } test := tests[name] if err := test.Run(false, rawdb.HashScheme, tracer); err != nil { return fmt.Errorf("test %v: %w", name, err) From f4ac548619e12e5be31543a72e995ab2b3904214 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Wed, 1 Nov 2023 00:19:31 +0800 Subject: [PATCH 036/223] ethdb/pebble: cap memory table size as maxMemTableSize-1 (#28444) --- ethdb/pebble/pebble.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ethdb/pebble/pebble.go b/ethdb/pebble/pebble.go index 691aa73299..d713e2863e 100644 --- a/ethdb/pebble/pebble.go +++ b/ethdb/pebble/pebble.go @@ -160,8 +160,15 @@ func New(file string, cache int, handles int, namespace string, readonly bool, e // including a frozen memory table and another live one. memTableLimit := 2 memTableSize := cache * 1024 * 1024 / 2 / memTableLimit - if memTableSize > maxMemTableSize { - memTableSize = maxMemTableSize + + // The memory table size is currently capped at maxMemTableSize-1 due to a + // known bug in the pebble where maxMemTableSize is not recognized as a + // valid size. + // + // TODO use the maxMemTableSize as the maximum table size once the issue + // in pebble is fixed. + if memTableSize >= maxMemTableSize { + memTableSize = maxMemTableSize - 1 } db := &Database{ fn: file, From a3be38127c87ef8827a8dc3561caca3866de85d2 Mon Sep 17 00:00:00 2001 From: lmittmann <3458786+lmittmann@users.noreply.github.com> Date: Thu, 2 Nov 2023 07:54:28 +0100 Subject: [PATCH 037/223] core/vm: performance tweak of `OpCode.String()` (#28453) make `opCodeToString` a `[256]string` array Co-authored-by: lmittmann --- core/vm/opcodes.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/core/vm/opcodes.go b/core/vm/opcodes.go index a11cf05a15..c7a3a163be 100644 --- a/core/vm/opcodes.go +++ b/core/vm/opcodes.go @@ -224,8 +224,7 @@ const ( SELFDESTRUCT OpCode = 0xff ) -// Since the opcodes aren't all in order we can't use a regular slice. -var opCodeToString = map[OpCode]string{ +var opCodeToString = [256]string{ // 0x0 range - arithmetic ops. STOP: "STOP", ADD: "ADD", @@ -399,12 +398,10 @@ var opCodeToString = map[OpCode]string{ } func (op OpCode) String() string { - str := opCodeToString[op] - if len(str) == 0 { - return fmt.Sprintf("opcode %#x not defined", int(op)) + if s := opCodeToString[op]; s != "" { + return s } - - return str + return fmt.Sprintf("opcode %#x not defined", int(op)) } var stringToOp = map[string]OpCode{ From b1cec853bef98acc750298b1c9b8165f2ac6ce5a Mon Sep 17 00:00:00 2001 From: Alvaro Sevilla Date: Fri, 3 Nov 2023 10:28:27 +0100 Subject: [PATCH 038/223] eth/tracers: add position field for callTracer logs (#28389) Currently, one can use the "withLogs" parameter to include logs in the callTracer results, which allows the user to see at which trace level was each log emitted. This commit adds a position field to the logs which determine the exact ordering of a call's logs and its subcalls. This would be useful e.g. for explorers wishing to display the flow of execution. Co-authored-by: jsvisa --- .../internal/tracetest/calltrace_test.go | 9 +- .../call_tracer_withLog/calldata.json | 6 +- .../call_tracer_withLog/delegatecall.json | 15 +- .../call_tracer_withLog/multi_contracts.json | 96 +++++++---- .../call_tracer_withLog/multilogs.json | 150 ++++++++++++------ .../testdata/call_tracer_withLog/notopic.json | 6 +- .../testdata/call_tracer_withLog/simple.json | 3 +- .../tx_partial_failed.json | 3 +- eth/tracers/native/call.go | 10 +- 9 files changed, 200 insertions(+), 98 deletions(-) diff --git a/eth/tracers/internal/tracetest/calltrace_test.go b/eth/tracers/internal/tracetest/calltrace_test.go index 6df49a90c1..5c74baacd1 100644 --- a/eth/tracers/internal/tracetest/calltrace_test.go +++ b/eth/tracers/internal/tracetest/calltrace_test.go @@ -47,9 +47,10 @@ type callContext struct { // callLog is the result of LOG opCode type callLog struct { - Address common.Address `json:"address"` - Topics []common.Hash `json:"topics"` - Data hexutil.Bytes `json:"data"` + Address common.Address `json:"address"` + Topics []common.Hash `json:"topics"` + Data hexutil.Bytes `json:"data"` + Position hexutil.Uint `json:"position"` } // callTrace is the result of a callTracer run. @@ -324,7 +325,7 @@ func TestInternals(t *testing.T) { byte(vm.LOG0), }, tracer: mkTracer("callTracer", json.RawMessage(`{ "withLog": true }`)), - want: `{"from":"0x000000000000000000000000000000000000feed","gas":"0x13880","gasUsed":"0x5b9e","to":"0x00000000000000000000000000000000deadbeef","input":"0x","logs":[{"address":"0x00000000000000000000000000000000deadbeef","topics":[],"data":"0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}],"value":"0x0","type":"CALL"}`, + want: `{"from":"0x000000000000000000000000000000000000feed","gas":"0x13880","gasUsed":"0x5b9e","to":"0x00000000000000000000000000000000deadbeef","input":"0x","logs":[{"address":"0x00000000000000000000000000000000deadbeef","topics":[],"data":"0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","position":"0x0"}],"value":"0x0","type":"CALL"}`, }, { // Leads to OOM on the prestate tracer diff --git a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/calldata.json b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/calldata.json index 9264f1e2fd..dbece7229d 100644 --- a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/calldata.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/calldata.json @@ -95,14 +95,16 @@ "topics": [ "0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda" ], - "data": "0x0000000000000000000000004f5777744b500616697cb655dcb02ee6cd51deb5be96016bb57376da7a6d296e0a405ee1501778227dfa604df0a81cb1ae018598" + "data": "0x0000000000000000000000004f5777744b500616697cb655dcb02ee6cd51deb5be96016bb57376da7a6d296e0a405ee1501778227dfa604df0a81cb1ae018598", + "position": "0x0" }, { "address": "0x200edd17f30485a8735878661960cd7a9a95733f", "topics": [ "0xacbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "position": "0x0" } ], "value": "0x8ac7230489e80000", diff --git a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/delegatecall.json b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/delegatecall.json index f63dbd47dc..2b03dbb8dd 100644 --- a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/delegatecall.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/delegatecall.json @@ -257,7 +257,8 @@ "0x0000000000000000000000003de712784baf97260455ae25fb74f574ec9c1add", "0x0000000000000000000000006ca7f214ab2ddbb9a8e1a1e2c8550e3164e9dba5" ], - "data": "0x00000000000000000000000000000000000000000000000080d29fa5cccfadac" + "data": "0x00000000000000000000000000000000000000000000000080d29fa5cccfadac", + "position": "0x0" } ], "value": "0x0", @@ -278,7 +279,8 @@ "0x0000000000000000000000006ca7f214ab2ddbb9a8e1a1e2c8550e3164e9dba5", "0x0000000000000000000000005aae5c59d642e5fd45b427df6ed478b49d55fefd" ], - "data": "0x00000000000000000000000000000000000000000000000080d29fa5cccfadac" + "data": "0x00000000000000000000000000000000000000000000000080d29fa5cccfadac", + "position": "0x0" } ], "value": "0x0", @@ -307,7 +309,8 @@ "0x0000000000000000000000006ca7f214ab2ddbb9a8e1a1e2c8550e3164e9dba5", "0x0000000000000000000000005aae5c59d642e5fd45b427df6ed478b49d55fefd" ], - "data": "0x00000000000000000000000000000000000000000000000080d29fa5cccfadac" + "data": "0x00000000000000000000000000000000000000000000000080d29fa5cccfadac", + "position": "0x0" } ], "value": "0x0", @@ -328,7 +331,8 @@ "0x0000000000000000000000005aae5c59d642e5fd45b427df6ed478b49d55fefd", "0x000000000000000000000000950ca4a06c78934a148b7a3ff3ea8fc366f77a06" ], - "data": "0x0000000000000000000000000000000000000000000000000041f50e27d56848" + "data": "0x0000000000000000000000000000000000000000000000000041f50e27d56848", + "position": "0x0" } ], "value": "0x0", @@ -391,7 +395,8 @@ "0x0000000000000000000000006ca7f214ab2ddbb9a8e1a1e2c8550e3164e9dba5", "0x0000000000000000000000003de712784baf97260455ae25fb74f574ec9c1add" ], - "data": "0x000000000000000000000000000000000000000000000000de0b6b3a76400000" + "data": "0x000000000000000000000000000000000000000000000000de0b6b3a76400000", + "position": "0x0" } ], "type": "DELEGATECALL", diff --git a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multi_contracts.json b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multi_contracts.json index 5e5d953867..263e88d6e1 100644 --- a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multi_contracts.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multi_contracts.json @@ -357,7 +357,8 @@ "0x000000000000000000000000c0ee9db1a9e07ca63e4ff0d5fb6f86bf68d47b89", "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd" ], - "data": "0x00000000000000000000000000000000000000000001819451f999d617dafa93" + "data": "0x00000000000000000000000000000000000000000001819451f999d617dafa93", + "position": "0x0" } ], "value": "0x0", @@ -370,7 +371,8 @@ "topics": [ "0x69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de2" ], - "data": "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd00000000000000000000000000000000000000000001819451f999d617dafa93" + "data": "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd00000000000000000000000000000000000000000001819451f999d617dafa93", + "position": "0x1" } ], "value": "0x0", @@ -491,7 +493,8 @@ "0x000000000000000000000000f835a0247b0063c04ef22006ebe57c5f11977cc4", "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd" ], - "data": "0x00000000000000000000000000000000000000000001819451f999d617dafa76" + "data": "0x00000000000000000000000000000000000000000001819451f999d617dafa76", + "position": "0x0" } ], "value": "0x0", @@ -504,7 +507,8 @@ "topics": [ "0x69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de2" ], - "data": "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd00000000000000000000000000000000000000000001819451f999d617dafa76" + "data": "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd00000000000000000000000000000000000000000001819451f999d617dafa76", + "position": "0x1" } ], "value": "0x0", @@ -692,7 +696,8 @@ "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd", "0x0000000000000000000000006e715ab4f598eacf0016b9b35ef33e4141844ccc" ], - "data": "0x0000000000000000000000000000000000000000000181a7ae53ea2f0bef8ccd" + "data": "0x0000000000000000000000000000000000000000000181a7ae53ea2f0bef8ccd", + "position": "0x0" } ], "value": "0x0", @@ -874,7 +879,8 @@ "0x0000000000000000000000006e715ab4f598eacf0016b9b35ef33e4141844ccc", "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd" ], - "data": "0x0000000000000000000000000000000000000000000181a7ae53ea2f0bef8ccc" + "data": "0x0000000000000000000000000000000000000000000181a7ae53ea2f0bef8ccc", + "position": "0x0" } ], "value": "0x0", @@ -892,7 +898,8 @@ "0x9735b0cb909f3d21d5c16bbcccd272d85fa11446f6d679f6ecb170d2dabfecfc", "0x0000000000000000000000006e715ab4f598eacf0016b9b35ef33e4141844ccc" ], - "data": "0x0000000000000000000000000000000000000000000000022b1c8c12279fffff" + "data": "0x0000000000000000000000000000000000000000000000022b1c8c12279fffff", + "position": "0x1" } ], "value": "0x0", @@ -914,7 +921,8 @@ "0x9735b0cb909f3d21d5c16bbcccd272d85fa11446f6d679f6ecb170d2dabfecfc", "0x0000000000000000000000006e715ab4f598eacf0016b9b35ef33e4141844ccc" ], - "data": "0x0000000000000000000000000000000000000000000000022b1c8c12279fffff" + "data": "0x0000000000000000000000000000000000000000000000022b1c8c12279fffff", + "position": "0x1" } ], "value": "0x0", @@ -939,7 +947,8 @@ "0x0000000000000000000000006e715ab4f598eacf0016b9b35ef33e4141844ccc", "0x0000000000000000000000006dbfc63479ffc031f23e94dc91befa38bec2c25f" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "position": "0x0" } ], "value": "0x0", @@ -952,14 +961,16 @@ "topics": [ "0x07cf7e805770612a8b2ee8e0bcbba8aa908df5f85fbc4f9e2ef384cf75315038" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "position": "0x6" }, { "address": "0x6e715ab4f598eacf0016b9b35ef33e4141844ccc", "topics": [ "0x7027eecbd2a688fc1fa281702b311ed7168571514adfd17014a55d828cb43382" ], - "data": "0x000000000000000000000000000000000000000000000004563918244f400000" + "data": "0x000000000000000000000000000000000000000000000004563918244f400000", + "position": "0x8" } ], "value": "0x0", @@ -1035,7 +1046,8 @@ "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd", "0x0000000000000000000000006dbfc63479ffc031f23e94dc91befa38bec2c25f" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000063" + "data": "0x0000000000000000000000000000000000000000000000000000000000000063", + "position": "0x0" } ], "value": "0x0", @@ -1162,7 +1174,8 @@ "0x0000000000000000000000006dbfc63479ffc031f23e94dc91befa38bec2c25f", "0x000000000000000000000000da4a4626d3e16e094de3225a751aab7128e96526" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000064" + "data": "0x0000000000000000000000000000000000000000000000000000000000000064", + "position": "0x0" } ], "value": "0x0", @@ -1175,14 +1188,16 @@ "topics": [ "0x4b0bc4f25f8d0b92d2e12b686ba96cd75e4e69325e6cf7b1f3119d14eaf2cbdf" ], - "data": "0x000000000000000000000000da4a4626d3e16e094de3225a751aab7128e96526" + "data": "0x000000000000000000000000da4a4626d3e16e094de3225a751aab7128e96526", + "position": "0x6" }, { "address": "0x6dbfc63479ffc031f23e94dc91befa38bec2c25f", "topics": [ "0xf340c079d598119636d42046c6a2d2faf7a68c04aecee516f0e0b8a9e79b8666" ], - "data": "0x000000000000000000000000da4a4626d3e16e094de3225a751aab7128e9652600000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000da4a4626d3e16e094de3225a751aab7128e9652600000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000", + "position": "0x9" } ], "value": "0x0", @@ -1231,7 +1246,8 @@ "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd", "0x0000000000000000000000007498bb5749c9801f1f7e490baf5f966dbfe4e97b" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "position": "0x0" } ], "value": "0x0", @@ -1324,7 +1340,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -1417,7 +1434,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000002" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -1510,7 +1528,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000003" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -1603,7 +1622,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000004" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -1696,7 +1716,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000005" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -1789,7 +1810,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000006" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -1882,7 +1904,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000007" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -1975,7 +1998,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000008" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -2068,7 +2092,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x0000000000000000000000000000000000000000000000000000000000000009" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -2161,7 +2186,8 @@ "0x5790de2c279e58269b93b12828f56fd5f2bc8ad15e61ce08572585c81a38756f", "0x000000000000000000000000000000000000000000000000000000000000000a" ], - "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000be3ae5cb97c253dda67181c6e34e43f5c275e08b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", + "position": "0x2" } ], "value": "0x0", @@ -2213,7 +2239,8 @@ "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd", "0x0000000000000000000000007ccbc69292c7a6d7b538c91f3b283de97906cf30" ], - "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c" + "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c", + "position": "0x0" } ], "value": "0x0", @@ -2234,7 +2261,8 @@ "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd", "0x0000000000000000000000001b9ec8ba24630b75a7a958153ffff56dd6d4b6a2" ], - "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c" + "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c", + "position": "0x0" } ], "value": "0x0", @@ -2255,7 +2283,8 @@ "0x0000000000000000000000004fd27b205895e698fa350f7ea57cec8a21927fcd", "0x000000000000000000000000c3a2c744ad1f5253c736875b93bacce5b01b060b" ], - "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c" + "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c", + "position": "0x0" } ], "value": "0x0", @@ -2268,21 +2297,24 @@ "topics": [ "0xc6d8c0af6d21f291e7c359603aa97e0ed500f04db6e983b9fce75a91c6b8da6b" ], - "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c" + "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c", + "position": "0x2" }, { "address": "0x4fd27b205895e698fa350f7ea57cec8a21927fcd", "topics": [ "0xc6d8c0af6d21f291e7c359603aa97e0ed500f04db6e983b9fce75a91c6b8da6b" ], - "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c" + "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c", + "position": "0x3" }, { "address": "0x4fd27b205895e698fa350f7ea57cec8a21927fcd", "topics": [ "0xc6d8c0af6d21f291e7c359603aa97e0ed500f04db6e983b9fce75a91c6b8da6b" ], - "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c" + "data": "0x00000000000000000000000000000000000000000001010d8bfbbbe40fe7518c", + "position": "0x4" } ], "value": "0x0", diff --git a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multilogs.json b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multilogs.json index 1ffffd240e..66d4582008 100644 --- a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multilogs.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/multilogs.json @@ -178,350 +178,400 @@ "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebebeb0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebebeb0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8888880000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8888880000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb3b3b30000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb3b3b30000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3e3e30000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3e3e30000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3e3e3e0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3e3e3e0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbdbdb0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbdbdb0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4f4f40000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4f4f40000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002ff000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000341000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0b0b00000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0b0b00000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0a0a00000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0a0a00000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b5b5b0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b5b5b0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbababa0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbababa0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaeaea0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaeaea0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa9a9a90000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa9a9a90000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb9b9b90000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb9b9b90000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbababa0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbababa0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f9f90000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f9f90000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaeaea0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaeaea0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f80000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f80000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fe000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x0000000000000000000000000000000000000000000000000000000000000342000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4d4e530000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4d4e530000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000034300000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x000000000000000000000000000000000000000000000000000000000000034300000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" }, { "address": "0x350e0ffc780a6a75b44cc52e1ff9092870668945", "topics": [ "0xcacb62d8acea4678658eb5dc4aaa889b34d893b967c96a5f8c066e6549fa3f42" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4f494b0000000000000000000000000000000000000000000000000011c37937e08000" + "data": "0x00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fcb0342353c541e210013aaddc2e740b9a33d08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4f494b0000000000000000000000000000000000000000000000000011c37937e08000", + "position": "0x0" } ], "value": "0x3782dace9d90000", diff --git a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/notopic.json b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/notopic.json index 116606b3c7..762ccbe58f 100644 --- a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/notopic.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/notopic.json @@ -266,7 +266,8 @@ "topics": [ "0xaf30e4d66b2f1f23e63ef4591058a897f67e6867233e33ca3508b982dcc4129b" ], - "data": "0x00000000000000000000000050739060a2c32dc076e507ae1a893aab28ecfe68d1b13c1538a940417bf0e73b2498634436753c854c7fb971224d971bd2ae3e8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000249f011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000355524c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000436a736f6e2868747470733a2f2f6170692e72616e646f6d2e6f72672f6a736f6e2d7270632f312f696e766f6b65292e726573756c742e72616e646f6d2e646174612e300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c4244584a68725670424a35336f3243786c4a526c51745a4a4b5a714c5974354951652b37335944533448744e6a5335486f64624942337476666f773755717579416b303835566b4c6e4c3945704b67777157517a375a4c64477673516c526432734b78496f6c4e673944626e6650737047714c684c62625953566e4e38437776736a7041586353536f33632b34634e774339307946346f4e69626b764433797461706f5a37676f5453796f5559546677536a6e773374692b484a5648374e332b633069774f43715a6a4464734751556358336d33532f494857624f4f5151356f734f344c626a33476730783155644e7466557a5943465937396e7a596757495145464375524249306e364e42764251573732372b4f73445259304a2f392f676a74387563696248576963303d0000000000000000000000000000000000000000" + "data": "0x00000000000000000000000050739060a2c32dc076e507ae1a893aab28ecfe68d1b13c1538a940417bf0e73b2498634436753c854c7fb971224d971bd2ae3e8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000249f011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000355524c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000436a736f6e2868747470733a2f2f6170692e72616e646f6d2e6f72672f6a736f6e2d7270632f312f696e766f6b65292e726573756c742e72616e646f6d2e646174612e300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c4244584a68725670424a35336f3243786c4a526c51745a4a4b5a714c5974354951652b37335944533448744e6a5335486f64624942337476666f773755717579416b303835566b4c6e4c3945704b67777157517a375a4c64477673516c526432734b78496f6c4e673944626e6650737047714c684c62625953566e4e38437776736a7041586353536f33632b34634e774339307946346f4e69626b764433797461706f5a37676f5453796f5559546677536a6e773374692b484a5648374e332b633069774f43715a6a4464734751556358336d33532f494857624f4f5151356f734f344c626a33476730783155644e7466557a5943465937396e7a596757495145464375524249306e364e42764251573732372b4f73445259304a2f392f676a74387563696248576963303d0000000000000000000000000000000000000000", + "position": "0x4" } ], "value": "0x179d63013c5654", @@ -277,7 +278,8 @@ { "address": "0x50739060a2c32dc076e507ae1a893aab28ecfe68", "topics": [], - "data": "0x62616e6b726f6c6c5f6d69736d61746368" + "data": "0x62616e6b726f6c6c5f6d69736d61746368", + "position": "0x2" } ], "value": "0x429d069189e0000", diff --git a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/simple.json b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/simple.json index 30f1777067..64941dd4db 100644 --- a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/simple.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/simple.json @@ -75,7 +75,8 @@ "0x000000000000000000000000d1220a0cf47c7b9be7a2e6ba89f429762e7b9adb", "0x000000000000000000000000dbf03b407c01e7cd3cbea99509d93f8dddc8c6fb" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000989680" + "data": "0x0000000000000000000000000000000000000000000000000000000000989680", + "position": "0x0" } ], "value": "0x0", diff --git a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/tx_partial_failed.json b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/tx_partial_failed.json index eb2514427c..6faf898a0f 100644 --- a/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/tx_partial_failed.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_withLog/tx_partial_failed.json @@ -98,7 +98,8 @@ "topics": [ "0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004" ], - "data": "0x00000000000000000000000001115b41bd2731353dd3e6abf44818fdc035aaf10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c1894130000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000008861393035396362623030303030303030303030303030303030303030303030303930643363313831326465323636396266383037626437373538636562316533343937616337653430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303031633662663532363334303030" + "data": "0x00000000000000000000000001115b41bd2731353dd3e6abf44818fdc035aaf10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c1894130000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000008861393035396362623030303030303030303030303030303030303030303030303930643363313831326465323636396266383037626437373538636562316533343937616337653430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303031633662663532363334303030", + "position": "0x0" } ], "value": "0x0", diff --git a/eth/tracers/native/call.go b/eth/tracers/native/call.go index 34cf027aca..f85cf6206a 100644 --- a/eth/tracers/native/call.go +++ b/eth/tracers/native/call.go @@ -40,6 +40,9 @@ type callLog struct { Address common.Address `json:"address"` Topics []common.Hash `json:"topics"` Data hexutil.Bytes `json:"data"` + // Position of the log relative to subcalls within the same trace + // See https://github.com/ethereum/go-ethereum/pull/28389 for details + Position hexutil.Uint `json:"position"` } type callFrame struct { @@ -188,7 +191,12 @@ func (t *callTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, sco return } - log := callLog{Address: scope.Contract.Address(), Topics: topics, Data: hexutil.Bytes(data)} + log := callLog{ + Address: scope.Contract.Address(), + Topics: topics, + Data: hexutil.Bytes(data), + Position: hexutil.Uint(len(t.callstack[len(t.callstack)-1].Calls)), + } t.callstack[len(t.callstack)-1].Logs = append(t.callstack[len(t.callstack)-1].Logs, log) } } From e91cdb49beb4b2a3872b5f2548bf2d6559e4f561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Fri, 3 Nov 2023 19:40:37 +0200 Subject: [PATCH 039/223] ethclient: fix forwarding 1559 gas fields (#28462) --- ethclient/ethclient.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go index 83c89a2fd4..e8a201f71b 100644 --- a/ethclient/ethclient.go +++ b/ethclient/ethclient.go @@ -658,6 +658,12 @@ func toCallArg(msg ethereum.CallMsg) interface{} { if msg.GasPrice != nil { arg["gasPrice"] = (*hexutil.Big)(msg.GasPrice) } + if msg.GasFeeCap != nil { + arg["maxFeePerGas"] = (*hexutil.Big)(msg.GasFeeCap) + } + if msg.GasTipCap != nil { + arg["maxPriorityFeePerGas"] = (*hexutil.Big)(msg.GasTipCap) + } return arg } From 51b5ad3da311c8a9c831b453d107cebb4840fb2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Tue, 7 Nov 2023 12:35:03 +0200 Subject: [PATCH 040/223] .travis: enable cross building to macos arm64 (#28474) Co-authored-by: Felix Lange --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 4f5d482c65..141a5233cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -104,6 +104,8 @@ jobs: script: - go run build/ci.go install -dlgo - go run build/ci.go archive -type tar -signer OSX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds + - go run build/ci.go install -dlgo -arch arm64 + - go run build/ci.go archive -arch arm64 -type tar -signer OSX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds # These builders run the tests - stage: build From 97ae32441e481b3afb9170ef355c2b54640482ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Tue, 7 Nov 2023 13:00:31 +0200 Subject: [PATCH 041/223] travis: use newer builder image (#28475) --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 141a5233cb..c2bfc3f2bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -96,6 +96,7 @@ jobs: - stage: build if: type = push os: osx + osx_image: xcode14.2 go: 1.21.x env: - azure-osx From f20b334f214cd6e079cd193f01834b392375727f Mon Sep 17 00:00:00 2001 From: Delweng Date: Tue, 7 Nov 2023 19:41:19 +0800 Subject: [PATCH 042/223] eth/filters: eth_getLogs fast exit for invalid block range (#28386) --- eth/filters/api.go | 8 ++++++-- eth/filters/filter_system.go | 3 +-- eth/filters/filter_system_test.go | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/eth/filters/api.go b/eth/filters/api.go index cc08b442e8..22dff6c59e 100644 --- a/eth/filters/api.go +++ b/eth/filters/api.go @@ -34,8 +34,9 @@ import ( ) var ( - errInvalidTopic = errors.New("invalid topic(s)") - errFilterNotFound = errors.New("filter not found") + errInvalidTopic = errors.New("invalid topic(s)") + errFilterNotFound = errors.New("filter not found") + errInvalidBlockRange = errors.New("invalid block range params") ) // filter is a helper struct that holds meta information over the filter type @@ -347,6 +348,9 @@ func (api *FilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*type if crit.ToBlock != nil { end = crit.ToBlock.Int64() } + if begin > 0 && end > 0 && begin > end { + return nil, errInvalidBlockRange + } // Construct the range filter filter = api.sys.NewRangeFilter(begin, end, crit.Addresses, crit.Topics) } diff --git a/eth/filters/filter_system.go b/eth/filters/filter_system.go index 35e396c23e..a9b5f2e079 100644 --- a/eth/filters/filter_system.go +++ b/eth/filters/filter_system.go @@ -20,7 +20,6 @@ package filters import ( "context" - "errors" "fmt" "sync" "sync/atomic" @@ -332,7 +331,7 @@ func (es *EventSystem) SubscribeLogs(crit ethereum.FilterQuery, logs chan []*typ if from >= 0 && to == rpc.LatestBlockNumber { return es.subscribeLogs(crit, logs), nil } - return nil, errors.New("invalid from and to block combination: from > to") + return nil, errInvalidBlockRange } // subscribeMinedPendingLogs creates a subscription that returned mined and diff --git a/eth/filters/filter_system_test.go b/eth/filters/filter_system_test.go index f7e5327c56..93cbf01830 100644 --- a/eth/filters/filter_system_test.go +++ b/eth/filters/filter_system_test.go @@ -429,7 +429,10 @@ func TestInvalidLogFilterCreation(t *testing.T) { } } +// TestLogFilterUninstall tests invalid getLogs requests func TestInvalidGetLogsRequest(t *testing.T) { + t.Parallel() + var ( db = rawdb.NewMemoryDatabase() _, sys = newTestFilterSystem(t, db, Config{}) @@ -451,6 +454,21 @@ func TestInvalidGetLogsRequest(t *testing.T) { } } +// TestInvalidGetRangeLogsRequest tests getLogs with invalid block range +func TestInvalidGetRangeLogsRequest(t *testing.T) { + t.Parallel() + + var ( + db = rawdb.NewMemoryDatabase() + _, sys = newTestFilterSystem(t, db, Config{}) + api = NewFilterAPI(sys, false) + ) + + if _, err := api.GetLogs(context.Background(), FilterCriteria{FromBlock: big.NewInt(2), ToBlock: big.NewInt(1)}); err != errInvalidBlockRange { + t.Errorf("Expected Logs for invalid range return error, but got: %v", err) + } +} + // TestLogFilter tests whether log filters match the correct logs that are posted to the event feed. func TestLogFilter(t *testing.T) { t.Parallel() From 4d9f3cd5d751efccd501b08ab6cf38a83b5e2858 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 7 Nov 2023 14:21:46 +0100 Subject: [PATCH 043/223] eth: set networkID to chainID by default (#28250) Co-authored-by: Felix Lange --- eth/backend.go | 12 ++++++++---- eth/ethconfig/config.go | 7 ++++--- ethclient/ethclient_test.go | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index c6787870ca..09559f0ac1 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -152,6 +152,10 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if err != nil { return nil, err } + networkID := config.NetworkId + if networkID == 0 { + networkID = chainConfig.ChainID.Uint64() + } eth := &Ethereum{ config: config, merger: consensus.NewMerger(chainDb), @@ -160,7 +164,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { accountManager: stack.AccountManager(), engine: engine, closeBloomHandler: make(chan struct{}), - networkID: config.NetworkId, + networkID: networkID, gasPrice: config.Miner.GasPrice, etherbase: config.Miner.Etherbase, bloomRequests: make(chan chan *bloombits.Retrieval), @@ -173,7 +177,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if bcVersion != nil { dbVer = fmt.Sprintf("%d", *bcVersion) } - log.Info("Initialising Ethereum protocol", "network", config.NetworkId, "dbversion", dbVer) + log.Info("Initialising Ethereum protocol", "network", networkID, "dbversion", dbVer) if !config.SkipBcVersionCheck { if bcVersion != nil && *bcVersion > core.BlockChainVersion { @@ -236,7 +240,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { Chain: eth.blockchain, TxPool: eth.txPool, Merger: eth.merger, - Network: config.NetworkId, + Network: networkID, Sync: config.SyncMode, BloomCache: uint64(cacheLimit), EventMux: eth.eventMux, @@ -270,7 +274,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { } // Start the RPC service - eth.netRPCService = ethapi.NewNetAPI(eth.p2pServer, config.NetworkId) + eth.netRPCService = ethapi.NewNetAPI(eth.p2pServer, networkID) // Register the backend on the node stack.RegisterAPIs(eth.APIs()) diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index bfb1df3fb1..5e8f58efdb 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -59,7 +59,7 @@ var LightClientGPO = gasprice.Config{ // Defaults contains default settings for use on the Ethereum main net. var Defaults = Config{ SyncMode: downloader.SnapSync, - NetworkId: 1, + NetworkId: 0, // enable auto configuration of networkID == chainID TxLookupLimit: 2350000, TransactionHistory: 2350000, StateHistory: params.FullImmutabilityThreshold, @@ -87,8 +87,9 @@ type Config struct { // If nil, the Ethereum main net block is used. Genesis *core.Genesis `toml:",omitempty"` - // Protocol options - NetworkId uint64 // Network ID to use for selecting peers to connect to + // Network ID separates blockchains on the peer-to-peer networking level. When left + // zero, the chain ID is used as network ID. + NetworkId uint64 SyncMode downloader.SyncMode // This can be set to list of enrtree:// URLs which will be queried for diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index 4aa25759fb..0f87ad5f5c 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -481,7 +481,7 @@ func testStatusFunctions(t *testing.T, client *rpc.Client) { if err != nil { t.Fatalf("unexpected error: %v", err) } - if networkID.Cmp(big.NewInt(0)) != 0 { + if networkID.Cmp(big.NewInt(1337)) != 0 { t.Fatalf("unexpected networkID: %v", networkID) } From 470dba8fc1890938a65bbf4293a4759a9b9615a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Wed, 8 Nov 2023 11:22:08 +0200 Subject: [PATCH 044/223] core/vm: set basefee to 0 internally on eth_call (#28470) * core/vm: set basefee to 0 internally on eth_call * core: nicer 0-basefee, make it work for blob fees too * internal/ethapi: make tests a bit more complex * core: fix blob fee checker * core: make code a bit more readable * core: fix some test error strings * core/vm: Get rid of weird comment * core: dict wrong typo --- core/evm.go | 6 +++++- core/state_processor_test.go | 9 ++++---- core/state_transition.go | 22 +++++++++++-------- core/vm/evm.go | 26 +++++++++++++---------- core/vm/runtime/env.go | 1 + core/vm/runtime/runtime.go | 3 ++- internal/ethapi/api_test.go | 41 ++++++++++++++++++++++++++++++++++++ 7 files changed, 82 insertions(+), 26 deletions(-) diff --git a/core/evm.go b/core/evm.go index 46dcb31462..c4801dc797 100644 --- a/core/evm.go +++ b/core/evm.go @@ -77,11 +77,15 @@ func NewEVMBlockContext(header *types.Header, chain ChainContext, author *common // NewEVMTxContext creates a new transaction context for a single transaction. func NewEVMTxContext(msg *Message) vm.TxContext { - return vm.TxContext{ + ctx := vm.TxContext{ Origin: msg.From, GasPrice: new(big.Int).Set(msg.GasPrice), BlobHashes: msg.BlobHashes, } + if msg.BlobGasFeeCap != nil { + ctx.BlobFeeCap = new(big.Int).Set(msg.BlobGasFeeCap) + } + return ctx } // GetHashFn returns a GetHashFunc which retrieves header hashes by number diff --git a/core/state_processor_test.go b/core/state_processor_test.go index e80bc288c3..5ff9353bd9 100644 --- a/core/state_processor_test.go +++ b/core/state_processor_test.go @@ -95,7 +95,7 @@ func TestStateProcessorErrors(t *testing.T) { }), signer, key1) return tx } - var mkBlobTx = func(nonce uint64, to common.Address, gasLimit uint64, gasTipCap, gasFeeCap *big.Int, hashes []common.Hash) *types.Transaction { + var mkBlobTx = func(nonce uint64, to common.Address, gasLimit uint64, gasTipCap, gasFeeCap, blobGasFeeCap *big.Int, hashes []common.Hash) *types.Transaction { tx, err := types.SignTx(types.NewTx(&types.BlobTx{ Nonce: nonce, GasTipCap: uint256.MustFromBig(gasTipCap), @@ -103,6 +103,7 @@ func TestStateProcessorErrors(t *testing.T) { Gas: gasLimit, To: to, BlobHashes: hashes, + BlobFeeCap: uint256.MustFromBig(blobGasFeeCap), Value: new(uint256.Int), }), signer, key1) if err != nil { @@ -196,7 +197,7 @@ func TestStateProcessorErrors(t *testing.T) { txs: []*types.Transaction{ mkDynamicTx(0, common.Address{}, params.TxGas, big.NewInt(0), big.NewInt(0)), }, - want: "could not apply tx 0 [0xc4ab868fef0c82ae0387b742aee87907f2d0fc528fc6ea0a021459fb0fc4a4a8]: max fee per gas less than block base fee: address 0x71562b71999873DB5b286dF957af199Ec94617F7, maxFeePerGas: 0 baseFee: 875000000", + want: "could not apply tx 0 [0xc4ab868fef0c82ae0387b742aee87907f2d0fc528fc6ea0a021459fb0fc4a4a8]: max fee per gas less than block base fee: address 0x71562b71999873DB5b286dF957af199Ec94617F7, maxFeePerGas: 0, baseFee: 875000000", }, { // ErrTipVeryHigh txs: []*types.Transaction{ @@ -247,9 +248,9 @@ func TestStateProcessorErrors(t *testing.T) { }, { // ErrBlobFeeCapTooLow txs: []*types.Transaction{ - mkBlobTx(0, common.Address{}, params.TxGas, big.NewInt(1), big.NewInt(1), []common.Hash{(common.Hash{1})}), + mkBlobTx(0, common.Address{}, params.TxGas, big.NewInt(1), big.NewInt(1), big.NewInt(0), []common.Hash{(common.Hash{1})}), }, - want: "could not apply tx 0 [0x6c11015985ce82db691d7b2d017acda296db88b811c3c60dc71449c76256c716]: max fee per gas less than block base fee: address 0x71562b71999873DB5b286dF957af199Ec94617F7, maxFeePerGas: 1 baseFee: 875000000", + want: "could not apply tx 0 [0x6c11015985ce82db691d7b2d017acda296db88b811c3c60dc71449c76256c716]: max fee per gas less than block base fee: address 0x71562b71999873DB5b286dF957af199Ec94617F7, maxFeePerGas: 1, baseFee: 875000000", }, } { block := GenerateBadBlock(gspec.ToBlock(), beacon.New(ethash.NewFaker()), tt.txs, gspec.Config) diff --git a/core/state_transition.go b/core/state_transition.go index fb03c48aab..612fdd7813 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -287,11 +287,11 @@ func (st *StateTransition) preCheck() error { msg.From.Hex(), codeHash) } } - // Make sure that transaction gasFeeCap is greater than the baseFee (post london) if st.evm.ChainConfig().IsLondon(st.evm.Context.BlockNumber) { // Skip the checks if gas fields are zero and baseFee was explicitly disabled (eth_call) - if !st.evm.Config.NoBaseFee || msg.GasFeeCap.BitLen() > 0 || msg.GasTipCap.BitLen() > 0 { + skipCheck := st.evm.Config.NoBaseFee && msg.GasFeeCap.BitLen() == 0 && msg.GasTipCap.BitLen() == 0 + if !skipCheck { if l := msg.GasFeeCap.BitLen(); l > 256 { return fmt.Errorf("%w: address %v, maxFeePerGas bit length: %d", ErrFeeCapVeryHigh, msg.From.Hex(), l) @@ -307,7 +307,7 @@ func (st *StateTransition) preCheck() error { // This will panic if baseFee is nil, but basefee presence is verified // as part of header validation. if msg.GasFeeCap.Cmp(st.evm.Context.BaseFee) < 0 { - return fmt.Errorf("%w: address %v, maxFeePerGas: %s baseFee: %s", ErrFeeCapTooLow, + return fmt.Errorf("%w: address %v, maxFeePerGas: %s, baseFee: %s", ErrFeeCapTooLow, msg.From.Hex(), msg.GasFeeCap, st.evm.Context.BaseFee) } } @@ -324,17 +324,21 @@ func (st *StateTransition) preCheck() error { } } } - + // Check that the user is paying at least the current blob fee if st.evm.ChainConfig().IsCancun(st.evm.Context.BlockNumber, st.evm.Context.Time) { if st.blobGasUsed() > 0 { - // Check that the user is paying at least the current blob fee - blobFee := st.evm.Context.BlobBaseFee - if st.msg.BlobGasFeeCap.Cmp(blobFee) < 0 { - return fmt.Errorf("%w: address %v have %v want %v", ErrBlobFeeCapTooLow, st.msg.From.Hex(), st.msg.BlobGasFeeCap, blobFee) + // Skip the checks if gas fields are zero and blobBaseFee was explicitly disabled (eth_call) + skipCheck := st.evm.Config.NoBaseFee && msg.BlobGasFeeCap.BitLen() == 0 + if !skipCheck { + // This will panic if blobBaseFee is nil, but blobBaseFee presence + // is verified as part of header validation. + if msg.BlobGasFeeCap.Cmp(st.evm.Context.BlobBaseFee) < 0 { + return fmt.Errorf("%w: address %v blobGasFeeCap: %v, blobBaseFee: %v", ErrBlobFeeCapTooLow, + msg.From.Hex(), msg.BlobGasFeeCap, st.evm.Context.BlobBaseFee) + } } } } - return st.buyGas() } diff --git a/core/vm/evm.go b/core/vm/evm.go index 2c6cc7d484..088b18aaa4 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -72,8 +72,8 @@ type BlockContext struct { BlockNumber *big.Int // Provides information for NUMBER Time uint64 // Provides information for TIME Difficulty *big.Int // Provides information for DIFFICULTY - BaseFee *big.Int // Provides information for BASEFEE - BlobBaseFee *big.Int // Provides information for BLOBBASEFEE + BaseFee *big.Int // Provides information for BASEFEE (0 if vm runs with NoBaseFee flag and 0 gas price) + BlobBaseFee *big.Int // Provides information for BLOBBASEFEE (0 if vm runs with NoBaseFee flag and 0 blob gas price) Random *common.Hash // Provides information for PREVRANDAO } @@ -82,8 +82,9 @@ type BlockContext struct { type TxContext struct { // Message information Origin common.Address // Provides information for ORIGIN - GasPrice *big.Int // Provides information for GASPRICE + GasPrice *big.Int // Provides information for GASPRICE (and is used to zero the basefee if NoBaseFee is set) BlobHashes []common.Hash // Provides information for BLOBHASH + BlobFeeCap *big.Int // Is used to zero the blobbasefee if NoBaseFee is set } // EVM is the Ethereum Virtual Machine base object and provides @@ -125,6 +126,17 @@ type EVM struct { // NewEVM returns a new EVM. The returned EVM is not thread safe and should // only ever be used *once*. func NewEVM(blockCtx BlockContext, txCtx TxContext, statedb StateDB, chainConfig *params.ChainConfig, config Config) *EVM { + // If basefee tracking is disabled (eth_call, eth_estimateGas, etc), and no + // gas prices were specified, lower the basefee to 0 to avoid breaking EVM + // invariants (basefee < feecap) + if config.NoBaseFee { + if txCtx.GasPrice.BitLen() == 0 { + blockCtx.BaseFee = new(big.Int) + } + if txCtx.BlobFeeCap != nil && txCtx.BlobFeeCap.BitLen() == 0 { + blockCtx.BlobBaseFee = new(big.Int) + } + } evm := &EVM{ Context: blockCtx, TxContext: txCtx, @@ -160,14 +172,6 @@ func (evm *EVM) Interpreter() *EVMInterpreter { return evm.interpreter } -// SetBlockContext updates the block context of the EVM. -func (evm *EVM) SetBlockContext(blockCtx BlockContext) { - evm.Context = blockCtx - num := blockCtx.BlockNumber - timestamp := blockCtx.Time - evm.chainRules = evm.chainConfig.Rules(num, blockCtx.Random != nil, timestamp) -} - // Call executes the contract associated with the addr with the given input as // parameters. It also handles any necessary value transfer required and takes // the necessary steps to create accounts and reverses the state in case of an diff --git a/core/vm/runtime/env.go b/core/vm/runtime/env.go index 64aa550a25..34335b8e9e 100644 --- a/core/vm/runtime/env.go +++ b/core/vm/runtime/env.go @@ -26,6 +26,7 @@ func NewEnv(cfg *Config) *vm.EVM { Origin: cfg.Origin, GasPrice: cfg.GasPrice, BlobHashes: cfg.BlobHashes, + BlobFeeCap: cfg.BlobFeeCap, } blockContext := vm.BlockContext{ CanTransfer: core.CanTransfer, diff --git a/core/vm/runtime/runtime.go b/core/vm/runtime/runtime.go index cfd7e4dbc4..d10457e7fa 100644 --- a/core/vm/runtime/runtime.go +++ b/core/vm/runtime/runtime.go @@ -46,6 +46,7 @@ type Config struct { BaseFee *big.Int BlobBaseFee *big.Int BlobHashes []common.Hash + BlobFeeCap *big.Int Random *common.Hash State *state.StateDB @@ -97,7 +98,7 @@ func setDefaults(cfg *Config) { cfg.BaseFee = big.NewInt(params.InitialBaseFee) } if cfg.BlobBaseFee == nil { - cfg.BlobBaseFee = new(big.Int) + cfg.BlobBaseFee = big.NewInt(params.BlobTxMinBlobGasprice) } } diff --git a/internal/ethapi/api_test.go b/internal/ethapi/api_test.go index 59882cd6bb..a67bd1203b 100644 --- a/internal/ethapi/api_test.go +++ b/internal/ethapi/api_test.go @@ -678,6 +678,47 @@ func TestEstimateGas(t *testing.T) { }, expectErr: core.ErrInsufficientFunds, }, + // Test for a bug where the gas price was set to zero but the basefee non-zero + // + // contract BasefeeChecker { + // constructor() { + // require(tx.gasprice >= block.basefee); + // if (tx.gasprice > 0) { + // require(block.basefee > 0); + // } + // } + //} + { + blockNumber: rpc.LatestBlockNumber, + call: TransactionArgs{ + From: &accounts[0].addr, + Input: hex2Bytes("6080604052348015600f57600080fd5b50483a1015601c57600080fd5b60003a111560315760004811603057600080fd5b5b603f80603e6000396000f3fe6080604052600080fdfea264697066735822122060729c2cee02b10748fae5200f1c9da4661963354973d9154c13a8e9ce9dee1564736f6c63430008130033"), + GasPrice: (*hexutil.Big)(big.NewInt(1_000_000_000)), // Legacy as pricing + }, + expectErr: nil, + want: 67617, + }, + { + blockNumber: rpc.LatestBlockNumber, + call: TransactionArgs{ + From: &accounts[0].addr, + Input: hex2Bytes("6080604052348015600f57600080fd5b50483a1015601c57600080fd5b60003a111560315760004811603057600080fd5b5b603f80603e6000396000f3fe6080604052600080fdfea264697066735822122060729c2cee02b10748fae5200f1c9da4661963354973d9154c13a8e9ce9dee1564736f6c63430008130033"), + MaxFeePerGas: (*hexutil.Big)(big.NewInt(1_000_000_000)), // 1559 gas pricing + }, + expectErr: nil, + want: 67617, + }, + { + blockNumber: rpc.LatestBlockNumber, + call: TransactionArgs{ + From: &accounts[0].addr, + Input: hex2Bytes("6080604052348015600f57600080fd5b50483a1015601c57600080fd5b60003a111560315760004811603057600080fd5b5b603f80603e6000396000f3fe6080604052600080fdfea264697066735822122060729c2cee02b10748fae5200f1c9da4661963354973d9154c13a8e9ce9dee1564736f6c63430008130033"), + GasPrice: nil, // No legacy gas pricing + MaxFeePerGas: nil, // No 1559 gas pricing + }, + expectErr: nil, + want: 67595, + }, } for i, tc := range testSuite { result, err := api.EstimateGas(context.Background(), tc.call, &rpc.BlockNumberOrHash{BlockNumber: &tc.blockNumber}, &tc.overrides) From 7ea860d665d03315ad2fa2ba21410bf80839d0bf Mon Sep 17 00:00:00 2001 From: Delweng Date: Thu, 9 Nov 2023 16:36:27 +0800 Subject: [PATCH 045/223] graphql: type of yParity from Long to BigInt (#28456) Signed-off-by: jsvisa --- graphql/graphql.go | 4 ++-- graphql/schema.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/graphql/graphql.go b/graphql/graphql.go index 93313d743a..49be23af69 100644 --- a/graphql/graphql.go +++ b/graphql/graphql.go @@ -615,13 +615,13 @@ func (t *Transaction) V(ctx context.Context) hexutil.Big { return hexutil.Big(*v) } -func (t *Transaction) YParity(ctx context.Context) (*hexutil.Uint64, error) { +func (t *Transaction) YParity(ctx context.Context) (*hexutil.Big, error) { tx, _ := t.resolve(ctx) if tx == nil || tx.Type() == types.LegacyTxType { return nil, nil } v, _, _ := tx.RawSignatureValues() - ret := hexutil.Uint64(v.Int64()) + ret := hexutil.Big(*v) return &ret, nil } diff --git a/graphql/schema.go b/graphql/schema.go index 5738923fc1..8264f1c286 100644 --- a/graphql/schema.go +++ b/graphql/schema.go @@ -157,7 +157,7 @@ const schema string = ` r: BigInt! s: BigInt! v: BigInt! - yParity: Long + yParity: BigInt # Envelope transaction support type: Long accessList: [AccessTuple!] From b77a9b127c6f69ab10521a4cd71a06904d5d70ad Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Thu, 9 Nov 2023 10:46:48 +0100 Subject: [PATCH 046/223] cmd/geth: more testcases for logging (#28501) * cmd/geth: more testcases for logging This adds more edgecases around logging, particularly around handling of different types of nil-values as concrete types and within interfaces. Also adds tests with 'reserved' values which breaks json/logfmt formats. The json output is checked in, but not actively used by any testcase at the moment. * cmd/geth/testdata: remove timestamps --- cmd/geth/logtestcmd_active.go | 25 ++++++ cmd/geth/testdata/logging/logtest-json.txt | 49 ++++++++++ cmd/geth/testdata/logging/logtest-logfmt.txt | 88 ++++++++++-------- .../testdata/logging/logtest-terminal.txt | 90 ++++++++++--------- 4 files changed, 173 insertions(+), 79 deletions(-) create mode 100644 cmd/geth/testdata/logging/logtest-json.txt diff --git a/cmd/geth/logtestcmd_active.go b/cmd/geth/logtestcmd_active.go index c66013517a..ebcc8de976 100644 --- a/cmd/geth/logtestcmd_active.go +++ b/cmd/geth/logtestcmd_active.go @@ -130,5 +130,30 @@ func logTest(ctx *cli.Context) error { log.Info("Inserted known block", "number", 99, "hash", common.HexToHash("0x12322"), "txs", 10, "gas", 1, "other", "third") log.Warn("Inserted known block", "number", 1_012, "hash", common.HexToHash("0x1234"), "txs", 200, "gas", 99, "other", "fourth") } + { // Various types of nil + type customStruct struct { + A string + B *uint64 + } + log.Info("(*big.Int)(nil)", "", (*big.Int)(nil)) + log.Info("(*uint256.Int)(nil)", "", (*uint256.Int)(nil)) + log.Info("(fmt.Stringer)(nil)", "res", (fmt.Stringer)(nil)) + log.Info("nil-concrete-stringer", "res", (*time.Time)(nil)) + + log.Info("error(nil) ", "res", error(nil)) + log.Info("nil-concrete-error", "res", (*customError)(nil)) + + log.Info("nil-custom-struct", "res", (*customStruct)(nil)) + log.Info("raw nil", "res", nil) + log.Info("(*uint64)(nil)", "res", (*uint64)(nil)) + } + { // Logging with 'reserved' keys + log.Info("Using keys 't', 'lvl', 'time', 'level' and 'msg'", "t", "t", "time", "time", "lvl", "lvl", "level", "level", "msg", "msg") + } return nil } + +// customError is a type which implements error +type customError struct{} + +func (c *customError) Error() string { return "" } diff --git a/cmd/geth/testdata/logging/logtest-json.txt b/cmd/geth/testdata/logging/logtest-json.txt new file mode 100644 index 0000000000..6cb2476dbd --- /dev/null +++ b/cmd/geth/testdata/logging/logtest-json.txt @@ -0,0 +1,49 @@ +{"111,222,333,444,555,678,999":"111222333444555678999","lvl":"info","msg":"big.Int","t":"2023-11-09T08:33:19.464383209+01:00"} +{"-111,222,333,444,555,678,999":"-111222333444555678999","lvl":"info","msg":"-big.Int","t":"2023-11-09T08:33:19.46455928+01:00"} +{"11,122,233,344,455,567,899,900":"11122233344455567899900","lvl":"info","msg":"big.Int","t":"2023-11-09T08:33:19.464582073+01:00"} +{"-11,122,233,344,455,567,899,900":"-11122233344455567899900","lvl":"info","msg":"-big.Int","t":"2023-11-09T08:33:19.464594846+01:00"} +{"111,222,333,444,555,678,999":"0x607851afc94ca2517","lvl":"info","msg":"uint256","t":"2023-11-09T08:33:19.464607873+01:00"} +{"11,122,233,344,455,567,899,900":"0x25aeffe8aaa1ef67cfc","lvl":"info","msg":"uint256","t":"2023-11-09T08:33:19.464694639+01:00"} +{"1,000,000":1000000,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464708835+01:00"} +{"-1,000,000":-1000000,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464725054+01:00"} +{"9,223,372,036,854,775,807":9223372036854775807,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464735773+01:00"} +{"-9,223,372,036,854,775,808":-9223372036854775808,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464744532+01:00"} +{"1,000,000":1000000,"lvl":"info","msg":"uint64","t":"2023-11-09T08:33:19.464752807+01:00"} +{"18,446,744,073,709,551,615":18446744073709551615,"lvl":"info","msg":"uint64","t":"2023-11-09T08:33:19.464779296+01:00"} +{"key":"special \r\n\t chars","lvl":"info","msg":"Special chars in value","t":"2023-11-09T08:33:19.464794181+01:00"} +{"lvl":"info","msg":"Special chars in key","special \n\t chars":"value","t":"2023-11-09T08:33:19.464827197+01:00"} +{"lvl":"info","msg":"nospace","nospace":"nospace","t":"2023-11-09T08:33:19.464841118+01:00"} +{"lvl":"info","msg":"with space","t":"2023-11-09T08:33:19.464862818+01:00","with nospace":"with nospace"} +{"key":"\u001b[1G\u001b[K\u001b[1A","lvl":"info","msg":"Bash escapes in value","t":"2023-11-09T08:33:19.464876802+01:00"} +{"\u001b[1G\u001b[K\u001b[1A":"value","lvl":"info","msg":"Bash escapes in key","t":"2023-11-09T08:33:19.464885416+01:00"} +{"key":"value","lvl":"info","msg":"Bash escapes in message \u001b[1G\u001b[K\u001b[1A end","t":"2023-11-09T08:33:19.464906946+01:00"} +{"\u001b[35mColored\u001b[0m[":"\u001b[35mColored\u001b[0m[","lvl":"info","msg":"\u001b[35mColored\u001b[0m[","t":"2023-11-09T08:33:19.464921455+01:00"} +{"2562047h47m16.854s":"2562047h47m16.854s","lvl":"info","msg":"Custom Stringer value","t":"2023-11-09T08:33:19.464943893+01:00"} +{"key":"lazy value","lvl":"info","msg":"Lazy evaluation of value","t":"2023-11-09T08:33:19.465013552+01:00"} +{"lvl":"info","msg":"A message with wonky 💩 characters","t":"2023-11-09T08:33:19.465069437+01:00"} +{"lvl":"info","msg":"A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩","t":"2023-11-09T08:33:19.465083053+01:00"} +{"lvl":"info","msg":"A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above","t":"2023-11-09T08:33:19.465104289+01:00"} +{"false":"false","lvl":"info","msg":"boolean","t":"2023-11-09T08:33:19.465117185+01:00","true":"true"} +{"foo":"beta","lvl":"info","msg":"repeated-key 1","t":"2023-11-09T08:33:19.465143425+01:00"} +{"lvl":"info","msg":"repeated-key 2","t":"2023-11-09T08:33:19.465156323+01:00","xx":"longer"} +{"lvl":"info","msg":"log at level info","t":"2023-11-09T08:33:19.465193158+01:00"} +{"lvl":"warn","msg":"log at level warn","t":"2023-11-09T08:33:19.465228964+01:00"} +{"lvl":"eror","msg":"log at level error","t":"2023-11-09T08:33:19.465240352+01:00"} +{"a":"aligned left","bar":"short","lvl":"info","msg":"test","t":"2023-11-09T08:33:19.465247226+01:00"} +{"a":1,"bar":"a long message","lvl":"info","msg":"test","t":"2023-11-09T08:33:19.465269028+01:00"} +{"a":"aligned right","bar":"short","lvl":"info","msg":"test","t":"2023-11-09T08:33:19.465313611+01:00"} +{"lvl":"info","msg":"The following logs should align so that the key-fields make 5 columns","t":"2023-11-09T08:33:19.465328188+01:00"} +{"gas":1123123,"hash":"0x0000000000000000000000000000000000000000000000000000000000001234","lvl":"info","msg":"Inserted known block","number":1012,"other":"first","t":"2023-11-09T08:33:19.465350507+01:00","txs":200} +{"gas":1123,"hash":"0x0000000000000000000000000000000000000000000000000000000000001235","lvl":"info","msg":"Inserted new block","number":1,"other":"second","t":"2023-11-09T08:33:19.465387952+01:00","txs":2} +{"gas":1,"hash":"0x0000000000000000000000000000000000000000000000000000000000012322","lvl":"info","msg":"Inserted known block","number":99,"other":"third","t":"2023-11-09T08:33:19.465406687+01:00","txs":10} +{"gas":99,"hash":"0x0000000000000000000000000000000000000000000000000000000000001234","lvl":"warn","msg":"Inserted known block","number":1012,"other":"fourth","t":"2023-11-09T08:33:19.465433025+01:00","txs":200} +{"\u003cnil\u003e":"\u003cnil\u003e","lvl":"info","msg":"(*big.Int)(nil)","t":"2023-11-09T08:33:19.465450283+01:00"} +{"\u003cnil\u003e":"nil","lvl":"info","msg":"(*uint256.Int)(nil)","t":"2023-11-09T08:33:19.465472953+01:00"} +{"lvl":"info","msg":"(fmt.Stringer)(nil)","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465538633+01:00"} +{"lvl":"info","msg":"nil-concrete-stringer","res":"nil","t":"2023-11-09T08:33:19.465552355+01:00"} +{"lvl":"info","msg":"error(nil) ","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465601029+01:00"} +{"lvl":"info","msg":"nil-concrete-error","res":"","t":"2023-11-09T08:33:19.46561622+01:00"} +{"lvl":"info","msg":"nil-custom-struct","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465638888+01:00"} +{"lvl":"info","msg":"raw nil","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465673664+01:00"} +{"lvl":"info","msg":"(*uint64)(nil)","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465700264+01:00"} +{"level":"level","lvl":"lvl","msg":"msg","t":"t","time":"time"} diff --git a/cmd/geth/testdata/logging/logtest-logfmt.txt b/cmd/geth/testdata/logging/logtest-logfmt.txt index 79f29e1fae..c1e34d1930 100644 --- a/cmd/geth/testdata/logging/logtest-logfmt.txt +++ b/cmd/geth/testdata/logging/logtest-logfmt.txt @@ -1,39 +1,49 @@ -t=2023-10-20T12:56:08+0200 lvl=info msg=big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -t=2023-10-20T12:56:08+0200 lvl=info msg=-big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 -t=2023-10-20T12:56:08+0200 lvl=info msg=big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -t=2023-10-20T12:56:08+0200 lvl=info msg=-big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 -t=2023-10-20T12:56:08+0200 lvl=info msg=uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -t=2023-10-20T12:56:08+0200 lvl=info msg=uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -t=2023-10-20T12:56:08+0200 lvl=info msg=int64 1,000,000=1,000,000 -t=2023-10-20T12:56:08+0200 lvl=info msg=int64 -1,000,000=-1,000,000 -t=2023-10-20T12:56:08+0200 lvl=info msg=int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 -t=2023-10-20T12:56:08+0200 lvl=info msg=int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 -t=2023-10-20T12:56:08+0200 lvl=info msg=uint64 1,000,000=1,000,000 -t=2023-10-20T12:56:08+0200 lvl=info msg=uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 -t=2023-10-20T12:56:08+0200 lvl=info msg="Special chars in value" key="special \r\n\t chars" -t=2023-10-20T12:56:08+0200 lvl=info msg="Special chars in key" "special \n\t chars"=value -t=2023-10-20T12:56:08+0200 lvl=info msg=nospace nospace=nospace -t=2023-10-20T12:56:08+0200 lvl=info msg="with space" "with nospace"="with nospace" -t=2023-10-20T12:56:08+0200 lvl=info msg="Bash escapes in value" key="\x1b[1G\x1b[K\x1b[1A" -t=2023-10-20T12:56:08+0200 lvl=info msg="Bash escapes in key" "\x1b[1G\x1b[K\x1b[1A"=value -t=2023-10-20T12:56:08+0200 lvl=info msg="Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value -t=2023-10-20T12:56:08+0200 lvl=info msg="\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" -t=2023-10-20T12:56:08+0200 lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s -t=2023-10-20T12:56:08+0200 lvl=info msg="Lazy evaluation of value" key="lazy value" -t=2023-10-20T12:56:08+0200 lvl=info msg="A message with wonky 💩 characters" -t=2023-10-20T12:56:08+0200 lvl=info msg="A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" -t=2023-10-20T12:56:08+0200 lvl=info msg="A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above" -t=2023-10-20T12:56:08+0200 lvl=info msg=boolean true=true false=false -t=2023-10-20T12:56:08+0200 lvl=info msg="repeated-key 1" foo=alpha foo=beta -t=2023-10-20T12:56:08+0200 lvl=info msg="repeated-key 2" xx=short xx=longer -t=2023-10-20T12:56:08+0200 lvl=info msg="log at level info" -t=2023-10-20T12:56:08+0200 lvl=warn msg="log at level warn" -t=2023-10-20T12:56:08+0200 lvl=eror msg="log at level error" -t=2023-10-20T12:56:08+0200 lvl=info msg=test bar=short a="aligned left" -t=2023-10-20T12:56:08+0200 lvl=info msg=test bar="a long message" a=1 -t=2023-10-20T12:56:08+0200 lvl=info msg=test bar=short a="aligned right" -t=2023-10-20T12:56:08+0200 lvl=info msg="The following logs should align so that the key-fields make 5 columns" -t=2023-10-20T12:56:08+0200 lvl=info msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=1,123,123 other=first -t=2023-10-20T12:56:08+0200 lvl=info msg="Inserted new block" number=1 hash=0x0000000000000000000000000000000000000000000000000000000000001235 txs=2 gas=1123 other=second -t=2023-10-20T12:56:08+0200 lvl=info msg="Inserted known block" number=99 hash=0x0000000000000000000000000000000000000000000000000000000000012322 txs=10 gas=1 other=third -t=2023-10-20T12:56:08+0200 lvl=warn msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=99 other=fourth +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=-big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=-big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 1,000,000=1,000,000 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 -1,000,000=-1,000,000 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint64 1,000,000=1,000,000 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Special chars in value" key="special \r\n\t chars" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Special chars in key" "special \n\t chars"=value +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nospace nospace=nospace +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="with space" "with nospace"="with nospace" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in value" key="\x1b[1G\x1b[K\x1b[1A" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in key" "\x1b[1G\x1b[K\x1b[1A"=value +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Lazy evaluation of value" key="lazy value" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A message with wonky 💩 characters" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=boolean true=true false=false +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="repeated-key 1" foo=alpha foo=beta +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="repeated-key 2" xx=short xx=longer +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="log at level info" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=warn msg="log at level warn" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=eror msg="log at level error" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=test bar=short a="aligned left" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=test bar="a long message" a=1 +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=test bar=short a="aligned right" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="The following logs should align so that the key-fields make 5 columns" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=1,123,123 other=first +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Inserted new block" number=1 hash=0x0000000000000000000000000000000000000000000000000000000000001235 txs=2 gas=1123 other=second +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Inserted known block" number=99 hash=0x0000000000000000000000000000000000000000000000000000000000012322 txs=10 gas=1 other=third +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=warn msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=99 other=fourth +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(*big.Int)(nil) = +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(*uint256.Int)(nil) = +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(fmt.Stringer)(nil) res=nil +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nil-concrete-stringer res=nil +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="error(nil) " res=nil +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nil-concrete-error res= +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nil-custom-struct res= +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="raw nil" res=nil +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(*uint64)(nil) res= +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Using keys 't', 'lvl', 'time', 'level' and 'msg'" t=t time=time lvl=lvl level=level msg=msg diff --git a/cmd/geth/testdata/logging/logtest-terminal.txt b/cmd/geth/testdata/logging/logtest-terminal.txt index ff68b6047a..af0de7b9ab 100644 --- a/cmd/geth/testdata/logging/logtest-terminal.txt +++ b/cmd/geth/testdata/logging/logtest-terminal.txt @@ -1,40 +1,50 @@ -INFO [10-20|12:56:42.532] big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -INFO [10-20|12:56:42.532] -big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 -INFO [10-20|12:56:42.532] big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -INFO [10-20|12:56:42.532] -big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 -INFO [10-20|12:56:42.532] uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -INFO [10-20|12:56:42.532] uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -INFO [10-20|12:56:42.532] int64 1,000,000=1,000,000 -INFO [10-20|12:56:42.532] int64 -1,000,000=-1,000,000 -INFO [10-20|12:56:42.532] int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 -INFO [10-20|12:56:42.532] int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 -INFO [10-20|12:56:42.532] uint64 1,000,000=1,000,000 -INFO [10-20|12:56:42.532] uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 -INFO [10-20|12:56:42.532] Special chars in value key="special \r\n\t chars" -INFO [10-20|12:56:42.532] Special chars in key "special \n\t chars"=value -INFO [10-20|12:56:42.532] nospace nospace=nospace -INFO [10-20|12:56:42.532] with space "with nospace"="with nospace" -INFO [10-20|12:56:42.532] Bash escapes in value key="\x1b[1G\x1b[K\x1b[1A" -INFO [10-20|12:56:42.532] Bash escapes in key "\x1b[1G\x1b[K\x1b[1A"=value -INFO [10-20|12:56:42.532] "Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value -INFO [10-20|12:56:42.532] "\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" -INFO [10-20|12:56:42.532] Custom Stringer value 2562047h47m16.854s=2562047h47m16.854s -INFO [10-20|12:56:42.532] Lazy evaluation of value key="lazy value" -INFO [10-20|12:56:42.532] "A message with wonky 💩 characters" -INFO [10-20|12:56:42.532] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" -INFO [10-20|12:56:42.532] A multiline message -LALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above -INFO [10-20|12:56:42.532] boolean true=true false=false -INFO [10-20|12:56:42.532] repeated-key 1 foo=alpha foo=beta -INFO [10-20|12:56:42.532] repeated-key 2 xx=short xx=longer -INFO [10-20|12:56:42.532] log at level info -WARN [10-20|12:56:42.532] log at level warn -ERROR[10-20|12:56:42.532] log at level error -INFO [10-20|12:56:42.532] test bar=short a="aligned left" -INFO [10-20|12:56:42.532] test bar="a long message" a=1 -INFO [10-20|12:56:42.532] test bar=short a="aligned right" -INFO [10-20|12:56:42.532] The following logs should align so that the key-fields make 5 columns -INFO [10-20|12:56:42.532] Inserted known block number=1012 hash=000000..001234 txs=200 gas=1,123,123 other=first -INFO [10-20|12:56:42.532] Inserted new block number=1 hash=000000..001235 txs=2 gas=1123 other=second -INFO [10-20|12:56:42.532] Inserted known block number=99 hash=000000..012322 txs=10 gas=1 other=third -WARN [10-20|12:56:42.532] Inserted known block number=1012 hash=000000..001234 txs=200 gas=99 other=fourth +INFO [XX-XX|XX:XX:XX.XXX] big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +INFO [XX-XX|XX:XX:XX.XXX] -big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 +INFO [XX-XX|XX:XX:XX.XXX] big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +INFO [XX-XX|XX:XX:XX.XXX] -big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 +INFO [XX-XX|XX:XX:XX.XXX] uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +INFO [XX-XX|XX:XX:XX.XXX] uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +INFO [XX-XX|XX:XX:XX.XXX] int64 1,000,000=1,000,000 +INFO [XX-XX|XX:XX:XX.XXX] int64 -1,000,000=-1,000,000 +INFO [XX-XX|XX:XX:XX.XXX] int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 +INFO [XX-XX|XX:XX:XX.XXX] int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 +INFO [XX-XX|XX:XX:XX.XXX] uint64 1,000,000=1,000,000 +INFO [XX-XX|XX:XX:XX.XXX] uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 +INFO [XX-XX|XX:XX:XX.XXX] Special chars in value key="special \r\n\t chars" +INFO [XX-XX|XX:XX:XX.XXX] Special chars in key "special \n\t chars"=value +INFO [XX-XX|XX:XX:XX.XXX] nospace nospace=nospace +INFO [XX-XX|XX:XX:XX.XXX] with space "with nospace"="with nospace" +INFO [XX-XX|XX:XX:XX.XXX] Bash escapes in value key="\x1b[1G\x1b[K\x1b[1A" +INFO [XX-XX|XX:XX:XX.XXX] Bash escapes in key "\x1b[1G\x1b[K\x1b[1A"=value +INFO [XX-XX|XX:XX:XX.XXX] "Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value +INFO [XX-XX|XX:XX:XX.XXX] "\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" +INFO [XX-XX|XX:XX:XX.XXX] Custom Stringer value 2562047h47m16.854s=2562047h47m16.854s +INFO [XX-XX|XX:XX:XX.XXX] Lazy evaluation of value key="lazy value" +INFO [XX-XX|XX:XX:XX.XXX] "A message with wonky 💩 characters" +INFO [XX-XX|XX:XX:XX.XXX] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" +INFO [XX-XX|XX:XX:XX.XXX] A multiline message +LALA [XXZXXZXXZXXZXXZXXX] Actually part of message above +INFO [XX-XX|XX:XX:XX.XXX] boolean true=true false=false +INFO [XX-XX|XX:XX:XX.XXX] repeated-key 1 foo=alpha foo=beta +INFO [XX-XX|XX:XX:XX.XXX] repeated-key 2 xx=short xx=longer +INFO [XX-XX|XX:XX:XX.XXX] log at level info +WARN [XX-XX|XX:XX:XX.XXX] log at level warn +ERROR[XX-XX|XX:XX:XX.XXX] log at level error +INFO [XX-XX|XX:XX:XX.XXX] test bar=short a="aligned left" +INFO [XX-XX|XX:XX:XX.XXX] test bar="a long message" a=1 +INFO [XX-XX|XX:XX:XX.XXX] test bar=short a="aligned right" +INFO [XX-XX|XX:XX:XX.XXX] The following logs should align so that the key-fields make 5 columns +INFO [XX-XX|XX:XX:XX.XXX] Inserted known block number=1012 hash=000000..001234 txs=200 gas=1,123,123 other=first +INFO [XX-XX|XX:XX:XX.XXX] Inserted new block number=1 hash=000000..001235 txs=2 gas=1123 other=second +INFO [XX-XX|XX:XX:XX.XXX] Inserted known block number=99 hash=000000..012322 txs=10 gas=1 other=third +WARN [XX-XX|XX:XX:XX.XXX] Inserted known block number=1012 hash=000000..001234 txs=200 gas=99 other=fourth +INFO [XX-XX|XX:XX:XX.XXX] (*big.Int)(nil) = +INFO [XX-XX|XX:XX:XX.XXX] (*uint256.Int)(nil) = +INFO [XX-XX|XX:XX:XX.XXX] (fmt.Stringer)(nil) res=nil +INFO [XX-XX|XX:XX:XX.XXX] nil-concrete-stringer res=nil +INFO [XX-XX|XX:XX:XX.XXX] error(nil) res=nil +INFO [XX-XX|XX:XX:XX.XXX] nil-concrete-error res= +INFO [XX-XX|XX:XX:XX.XXX] nil-custom-struct res= +INFO [XX-XX|XX:XX:XX.XXX] raw nil res=nil +INFO [XX-XX|XX:XX:XX.XXX] (*uint64)(nil) res= +INFO [XX-XX|XX:XX:XX.XXX] Using keys 't', 'lvl', 'time', 'level' and 'msg' t=t time=time lvl=lvl level=level msg=msg From f7dde2a96c6a826a7a652589516ed22bb7f1e937 Mon Sep 17 00:00:00 2001 From: Jim McDonald Date: Thu, 9 Nov 2023 14:15:22 +0000 Subject: [PATCH 047/223] ethdb/pebble: add `Errorf` function to panicLogger (#28491) cockroachdb/pebble@422dce9 added Errorf to the Logger interface, this change makes it possible to compile geth with that version of pebble by adding the corresponding method to panicLogger. --- ethdb/pebble/pebble.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ethdb/pebble/pebble.go b/ethdb/pebble/pebble.go index d713e2863e..6d0ea94962 100644 --- a/ethdb/pebble/pebble.go +++ b/ethdb/pebble/pebble.go @@ -127,6 +127,9 @@ type panicLogger struct{} func (l panicLogger) Infof(format string, args ...interface{}) { } +func (l panicLogger) Errorf(format string, args ...interface{}) { +} + func (l panicLogger) Fatalf(format string, args ...interface{}) { panic(errors.Errorf("fatal: "+format, args...)) } From e38b9f183065b374110918660114e93006f102dc Mon Sep 17 00:00:00 2001 From: Delweng Date: Fri, 10 Nov 2023 15:10:03 +0800 Subject: [PATCH 048/223] eth/filters: exit early if topics-filter has more than 4 topics (#28494) Currently, geth's will return `[]` for any `len(topics) > 4` log filter. The EVM only supports up to four logs, via LOG4 opcode, so larger criterias fail. This change makes the filter query exit early in those cases. --- eth/filters/api.go | 7 +++++++ eth/filters/filter_system.go | 3 +++ eth/filters/filter_system_test.go | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/eth/filters/api.go b/eth/filters/api.go index 22dff6c59e..a4eaa9cec8 100644 --- a/eth/filters/api.go +++ b/eth/filters/api.go @@ -37,8 +37,12 @@ var ( errInvalidTopic = errors.New("invalid topic(s)") errFilterNotFound = errors.New("filter not found") errInvalidBlockRange = errors.New("invalid block range params") + errExceedMaxTopics = errors.New("exceed max topics") ) +// The maximum number of topic criteria allowed, vm.LOG4 - vm.LOG0 +const maxTopics = 4 + // filter is a helper struct that holds meta information over the filter type // and associated subscription in the event system. type filter struct { @@ -334,6 +338,9 @@ func (api *FilterAPI) NewFilter(crit FilterCriteria) (rpc.ID, error) { // GetLogs returns logs matching the given argument that are stored within the state. func (api *FilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*types.Log, error) { + if len(crit.Topics) > maxTopics { + return nil, errExceedMaxTopics + } var filter *Filter if crit.BlockHash != nil { // Block filter requested, construct a single-shot filter diff --git a/eth/filters/filter_system.go b/eth/filters/filter_system.go index a9b5f2e079..f98a1f84ce 100644 --- a/eth/filters/filter_system.go +++ b/eth/filters/filter_system.go @@ -299,6 +299,9 @@ func (es *EventSystem) subscribe(sub *subscription) *Subscription { // given criteria to the given logs channel. Default value for the from and to // block is "latest". If the fromBlock > toBlock an error is returned. func (es *EventSystem) SubscribeLogs(crit ethereum.FilterQuery, logs chan []*types.Log) (*Subscription, error) { + if len(crit.Topics) > maxTopics { + return nil, errExceedMaxTopics + } var from, to rpc.BlockNumber if crit.FromBlock == nil { from = rpc.LatestBlockNumber diff --git a/eth/filters/filter_system_test.go b/eth/filters/filter_system_test.go index 93cbf01830..27cad8826a 100644 --- a/eth/filters/filter_system_test.go +++ b/eth/filters/filter_system_test.go @@ -386,6 +386,8 @@ func TestLogFilterCreation(t *testing.T) { {FilterCriteria{FromBlock: big.NewInt(rpc.PendingBlockNumber.Int64()), ToBlock: big.NewInt(100)}, false}, // from block "higher" than to block {FilterCriteria{FromBlock: big.NewInt(rpc.PendingBlockNumber.Int64()), ToBlock: big.NewInt(rpc.LatestBlockNumber.Int64())}, false}, + // topics more then 4 + {FilterCriteria{Topics: [][]common.Hash{{}, {}, {}, {}, {}}}, false}, } ) @@ -420,6 +422,7 @@ func TestInvalidLogFilterCreation(t *testing.T) { 0: {FromBlock: big.NewInt(rpc.PendingBlockNumber.Int64()), ToBlock: big.NewInt(rpc.LatestBlockNumber.Int64())}, 1: {FromBlock: big.NewInt(rpc.PendingBlockNumber.Int64()), ToBlock: big.NewInt(100)}, 2: {FromBlock: big.NewInt(rpc.LatestBlockNumber.Int64()), ToBlock: big.NewInt(100)}, + 3: {Topics: [][]common.Hash{{}, {}, {}, {}, {}}}, } for i, test := range testCases { @@ -445,6 +448,7 @@ func TestInvalidGetLogsRequest(t *testing.T) { 0: {BlockHash: &blockHash, FromBlock: big.NewInt(100)}, 1: {BlockHash: &blockHash, ToBlock: big.NewInt(500)}, 2: {BlockHash: &blockHash, FromBlock: big.NewInt(rpc.LatestBlockNumber.Int64())}, + 3: {BlockHash: &blockHash, Topics: [][]common.Hash{{}, {}, {}, {}, {}}}, } for i, test := range testCases { From 326fa00759d959061035becc9514660c24897053 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Fri, 10 Nov 2023 18:56:39 +0800 Subject: [PATCH 049/223] core/rawdb: fsync the index file after each freezer write (#28483) * core/rawdb: fsync the index and data file after each freezer write * core/rawdb: fsync the data file in freezer after write --- core/rawdb/ancient_utils.go | 3 +++ core/rawdb/freezer_batch.go | 12 ++++++++++-- core/rawdb/freezer_table.go | 17 ++++++++++++++--- core/rawdb/freezer_utils.go | 6 +----- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/core/rawdb/ancient_utils.go b/core/rawdb/ancient_utils.go index dfb2fdfb67..1b93a9aa5a 100644 --- a/core/rawdb/ancient_utils.go +++ b/core/rawdb/ancient_utils.go @@ -18,6 +18,7 @@ package rawdb import ( "fmt" + "path/filepath" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethdb" @@ -126,6 +127,8 @@ func InspectFreezerTable(ancient string, freezerName string, tableName string, s switch freezerName { case chainFreezerName: path, tables = resolveChainFreezerDir(ancient), chainFreezerNoSnappy + case stateFreezerName: + path, tables = filepath.Join(ancient, freezerName), stateFreezerNoSnappy default: return fmt.Errorf("unknown freezer, supported ones: %v", freezers) } diff --git a/core/rawdb/freezer_batch.go b/core/rawdb/freezer_batch.go index 3cc7d84f4e..84a63a4518 100644 --- a/core/rawdb/freezer_batch.go +++ b/core/rawdb/freezer_batch.go @@ -182,19 +182,27 @@ func (batch *freezerTableBatch) maybeCommit() error { // commit writes the batched items to the backing freezerTable. func (batch *freezerTableBatch) commit() error { - // Write data. + // Write data. The head file is fsync'd after write to ensure the + // data is truly transferred to disk. _, err := batch.t.head.Write(batch.dataBuffer) if err != nil { return err } + if err := batch.t.head.Sync(); err != nil { + return err + } dataSize := int64(len(batch.dataBuffer)) batch.dataBuffer = batch.dataBuffer[:0] - // Write indices. + // Write indices. The index file is fsync'd after write to ensure the + // data indexes are truly transferred to disk. _, err = batch.t.index.Write(batch.indexBuffer) if err != nil { return err } + if err := batch.t.index.Sync(); err != nil { + return err + } indexSize := int64(len(batch.indexBuffer)) batch.indexBuffer = batch.indexBuffer[:0] diff --git a/core/rawdb/freezer_table.go b/core/rawdb/freezer_table.go index e3353cc7d5..61436bf932 100644 --- a/core/rawdb/freezer_table.go +++ b/core/rawdb/freezer_table.go @@ -215,7 +215,9 @@ func (t *freezerTable) repair() error { if t.readonly { return fmt.Errorf("index file(path: %s, name: %s) size is not a multiple of %d", t.path, t.name, indexEntrySize) } - truncateFreezerFile(t.index, stat.Size()-overflow) // New file can't trigger this path + if err := truncateFreezerFile(t.index, stat.Size()-overflow); err != nil { + return err + } // New file can't trigger this path } // Retrieve the file sizes and prepare for truncation if stat, err = t.index.Stat(); err != nil { @@ -260,8 +262,8 @@ func (t *freezerTable) repair() error { // Print an error log if the index is corrupted due to an incorrect // last index item. While it is theoretically possible to have a zero offset // by storing all zero-size items, it is highly unlikely to occur in practice. - if lastIndex.offset == 0 && offsetsSize%indexEntrySize > 1 { - log.Error("Corrupted index file detected", "lastOffset", lastIndex.offset, "items", offsetsSize%indexEntrySize-1) + if lastIndex.offset == 0 && offsetsSize/indexEntrySize > 1 { + log.Error("Corrupted index file detected", "lastOffset", lastIndex.offset, "indexes", offsetsSize/indexEntrySize) } if t.readonly { t.head, err = t.openFile(lastIndex.filenum, openFreezerFileForReadOnly) @@ -416,6 +418,9 @@ func (t *freezerTable) truncateHead(items uint64) error { if err := truncateFreezerFile(t.index, int64(length+1)*indexEntrySize); err != nil { return err } + if err := t.index.Sync(); err != nil { + return err + } // Calculate the new expected size of the data file and truncate it var expected indexEntry if length == 0 { @@ -438,6 +443,7 @@ func (t *freezerTable) truncateHead(items uint64) error { // Release any files _after the current head -- both the previous head // and any files which may have been opened for reading t.releaseFilesAfter(expected.filenum, true) + // Set back the historic head t.head = newHead t.headId = expected.filenum @@ -445,6 +451,9 @@ func (t *freezerTable) truncateHead(items uint64) error { if err := truncateFreezerFile(t.head, int64(expected.offset)); err != nil { return err } + if err := t.head.Sync(); err != nil { + return err + } // All data files truncated, set internal counters and return t.headBytes = int64(expected.offset) t.items.Store(items) @@ -589,10 +598,12 @@ func (t *freezerTable) Close() error { // error on Windows. doClose(t.index, true, true) doClose(t.meta, true, true) + // The preopened non-head data-files are all opened in readonly. // The head is opened in rw-mode, so we sync it here - but since it's also // part of t.files, it will be closed in the loop below. doClose(t.head, true, false) // sync but do not close + for _, f := range t.files { doClose(f, false, true) // close but do not sync } diff --git a/core/rawdb/freezer_utils.go b/core/rawdb/freezer_utils.go index 1bbb50c498..752e95ba6a 100644 --- a/core/rawdb/freezer_utils.go +++ b/core/rawdb/freezer_utils.go @@ -73,11 +73,7 @@ func copyFrom(srcPath, destPath string, offset uint64, before func(f *os.File) e return err } f = nil - - if err := os.Rename(fname, destPath); err != nil { - return err - } - return nil + return os.Rename(fname, destPath) } // openFreezerFileForAppend opens a freezer table file and seeks to the end From 2f4833b8282045da08b42e692439194a3f424095 Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Fri, 10 Nov 2023 12:21:51 +0100 Subject: [PATCH 050/223] cmd/evm: allow state dump regardless if test passes in statetest (#28484) This change makes it so that when executing state tess, state is always dumped out if the corresponding flag is set. --- cmd/evm/staterunner.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cmd/evm/staterunner.go b/cmd/evm/staterunner.go index 8a07fccdf8..618ddf2ede 100644 --- a/cmd/evm/staterunner.go +++ b/cmd/evm/staterunner.go @@ -108,13 +108,14 @@ func runStateTest(fname string, cfg vm.Config, jsonOut, dump bool) error { fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%#x\"}\n", root) } } + // Dump any state to aid debugging + if dump { + dump := state.RawDump(nil) + result.State = &dump + } if err != nil { - // Test failed, mark as so and dump any state to aid debugging + // Test failed, mark as so result.Pass, result.Error = false, err.Error() - if dump { - dump := state.RawDump(nil) - result.State = &dump - } } }) results = append(results, *result) From ce5a4809fd212b056ab1198271f44d123740de0e Mon Sep 17 00:00:00 2001 From: Delweng Date: Fri, 10 Nov 2023 19:23:09 +0800 Subject: [PATCH 051/223] ethclient: add empty/nonexist account testcase for eth_getProof RPC (#28482) Adds testcases for eth_getProof endpoint for the following cases: - the account/contract does not exist - the account/contract exists but is empty. --- ethclient/gethclient/gethclient_test.go | 46 +++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/ethclient/gethclient/gethclient_test.go b/ethclient/gethclient/gethclient_test.go index de45b10695..a718246bd0 100644 --- a/ethclient/gethclient/gethclient_test.go +++ b/ethclient/gethclient/gethclient_test.go @@ -42,6 +42,7 @@ var ( testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") testAddr = crypto.PubkeyToAddress(testKey.PublicKey) testContract = common.HexToAddress("0xbeef") + testEmpty = common.HexToAddress("0xeeee") testSlot = common.HexToHash("0xdeadbeef") testValue = crypto.Keccak256Hash(testSlot[:]) testBalance = big.NewInt(2e15) @@ -80,8 +81,11 @@ func newTestBackend(t *testing.T) (*node.Node, []*types.Block) { func generateTestChain() (*core.Genesis, []*types.Block) { genesis := &core.Genesis{ Config: params.AllEthashProtocolChanges, - Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance, Storage: map[common.Hash]common.Hash{testSlot: testValue}}, - testContract: {Nonce: 1, Code: []byte{0x13, 0x37}}}, + Alloc: core.GenesisAlloc{ + testAddr: {Balance: testBalance, Storage: map[common.Hash]common.Hash{testSlot: testValue}}, + testContract: {Nonce: 1, Code: []byte{0x13, 0x37}}, + testEmpty: {Balance: big.NewInt(1)}, + }, ExtraData: []byte("test genesis"), Timestamp: 9000, } @@ -110,6 +114,12 @@ func TestGethClient(t *testing.T) { }, { "TestGetProof2", func(t *testing.T) { testGetProof(t, client, testContract) }, + }, { + "TestGetProofEmpty", + func(t *testing.T) { testGetProof(t, client, testEmpty) }, + }, { + "TestGetProofNonExistent", + func(t *testing.T) { testGetProofNonExistent(t, client) }, }, { "TestGetProofCanonicalizeKeys", func(t *testing.T) { testGetProofCanonicalizeKeys(t, client) }, @@ -274,6 +284,38 @@ func testGetProofCanonicalizeKeys(t *testing.T, client *rpc.Client) { } } +func testGetProofNonExistent(t *testing.T, client *rpc.Client) { + addr := common.HexToAddress("0x0001") + ec := New(client) + result, err := ec.GetProof(context.Background(), addr, nil, nil) + if err != nil { + t.Fatal(err) + } + if result.Address != addr { + t.Fatalf("unexpected address, have: %v want: %v", result.Address, addr) + } + // test nonce + if result.Nonce != 0 { + t.Fatalf("invalid nonce, want: %v got: %v", 0, result.Nonce) + } + // test balance + if result.Balance.Cmp(big.NewInt(0)) != 0 { + t.Fatalf("invalid balance, want: %v got: %v", 0, result.Balance) + } + // test storage + if have := len(result.StorageProof); have != 0 { + t.Fatalf("invalid storage proof, want 0 proof, got %v proof(s)", have) + } + // test codeHash + if have, want := result.CodeHash, (common.Hash{}); have != want { + t.Fatalf("codehash wrong, have %v want %v ", have, want) + } + // test codeHash + if have, want := result.StorageHash, (common.Hash{}); have != want { + t.Fatalf("storagehash wrong, have %v want %v ", have, want) + } +} + func testGCStats(t *testing.T, client *rpc.Client) { ec := New(client) _, err := ec.GCStats(context.Background()) From 49b2c5f43c00b12f345182096f12b25f6599786a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marius=20Kj=C3=A6rstad?= Date: Fri, 10 Nov 2023 13:15:06 +0100 Subject: [PATCH 052/223] build: upgrade -dlgo version to Go 1.21.4 (#28505) --- build/checksums.txt | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/build/checksums.txt b/build/checksums.txt index dd8a9cdbf0..c96bd85667 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -5,22 +5,22 @@ # https://github.com/ethereum/execution-spec-tests/releases/download/v1.0.6/ 485af7b66cf41eb3a8c1bd46632913b8eb95995df867cf665617bbc9b4beedd1 fixtures_develop.tar.gz -# version:golang 1.21.3 +# version:golang 1.21.4 # https://go.dev/dl/ -186f2b6f8c8b704e696821b09ab2041a5c1ee13dcbc3156a13adcf75931ee488 go1.21.3.src.tar.gz -27014fc69e301d7588a169ca239b3cc609f0aa1abf38528bf0d20d3b259211eb go1.21.3.darwin-amd64.tar.gz -65302a7a9f7a4834932b3a7a14cb8be51beddda757b567a2f9e0cbd0d7b5a6ab go1.21.3.darwin-arm64.tar.gz -8e0cd2f66cf1bde9d07b4aee01e3d7c3cfdd14e20650488e1683da4b8492594a go1.21.3.freebsd-386.tar.gz -6e74f65f586e93d1f3947894766f69e9b2ebda488592a09df61f36f06bfe58a8 go1.21.3.freebsd-amd64.tar.gz -fb209fd070db500a84291c5a95251cceeb1723e8f6142de9baca5af70a927c0e go1.21.3.linux-386.tar.gz -1241381b2843fae5a9707eec1f8fb2ef94d827990582c7c7c32f5bdfbfd420c8 go1.21.3.linux-amd64.tar.gz -fc90fa48ae97ba6368eecb914343590bbb61b388089510d0c56c2dde52987ef3 go1.21.3.linux-arm64.tar.gz -a1ddcaaf0821a12a800884c14cb4268ce1c1f5a0301e9060646f1e15e611c6c7 go1.21.3.linux-armv6l.tar.gz -3b0e10a3704f164a6e85e0377728ec5fd21524fabe4c925610e34076586d5826 go1.21.3.linux-ppc64le.tar.gz -4c78e2e6f4c684a3d5a9bdc97202729053f44eb7be188206f0627ef3e18716b6 go1.21.3.linux-s390x.tar.gz -e36737f4f2fadb4d2f919ec4ce517133a56e06064cca6e82fc883bb000c4d56c go1.21.3.windows-386.zip -27c8daf157493f288d42a6f38debc6a2cb391f6543139eba9152fceca0be2a10 go1.21.3.windows-amd64.zip -bfb7a5c56f9ded07d8ae0e0b3702ac07b65e68fa8f33da24ed6df4ce01fe2c5c go1.21.3.windows-arm64.zip +47b26a83d2b65a3c1c1bcace273b69bee49a7a7b5168a7604ded3d26a37bd787 go1.21.4.src.tar.gz +cd3bdcc802b759b70e8418bc7afbc4a65ca73a3fe576060af9fc8a2a5e71c3b8 go1.21.4.darwin-amd64.tar.gz +8b7caf2ac60bdff457dba7d4ff2a01def889592b834453431ae3caecf884f6a5 go1.21.4.darwin-arm64.tar.gz +f1e685d086eb36f4be5b8b953b52baf7752bc6235400d84bb7d87e500b65f03e go1.21.4.freebsd-386.tar.gz +59f9b32187efb98d344a3818a631d3815ebb5c7bbefc367bab6515caaca544e9 go1.21.4.freebsd-amd64.tar.gz +64d3e5d295806e137c9e39d1e1f10b00a30fcd5c2f230d72b3298f579bb3c89a go1.21.4.linux-386.tar.gz +73cac0215254d0c7d1241fa40837851f3b9a8a742d0b54714cbdfb3feaf8f0af go1.21.4.linux-amd64.tar.gz +ce1983a7289856c3a918e1fd26d41e072cc39f928adfb11ba1896440849b95da go1.21.4.linux-arm64.tar.gz +6c62e89113750cc77c498194d13a03fadfda22bd2c7d44e8a826fd354db60252 go1.21.4.linux-armv6l.tar.gz +2c63b36d2adcfb22013102a2ee730f058ec2f93b9f27479793c80b2e3641783f go1.21.4.linux-ppc64le.tar.gz +7a75ba4afc7a96058ca65903d994cd862381825d7dca12b2183f087c757c26c0 go1.21.4.linux-s390x.tar.gz +870a0e462b94671dc2d6cac707e9e19f7524fdc3c90711e6cd4450c3713a8ce0 go1.21.4.windows-386.zip +79e5428e068c912d9cfa6cd115c13549856ec689c1332eac17f5d6122e19d595 go1.21.4.windows-amd64.zip +58bc7c6f4d4c72da2df4d2650c8222fe03c9978070eb3c66be8bbaa2a4757ac1 go1.21.4.windows-arm64.zip # version:golangci 1.51.1 # https://github.com/golangci/golangci-lint/releases/ From f265cc24b4b17b55b468b315303a3a599fc01d81 Mon Sep 17 00:00:00 2001 From: Delweng Date: Fri, 10 Nov 2023 20:26:13 +0800 Subject: [PATCH 053/223] cmd/geth: remove some whitespace in code and comments (#28148) This changes just removes some whitespace --- cmd/geth/dbcmd.go | 6 +++--- cmd/geth/snapshot.go | 10 +++++----- cmd/utils/flags.go | 3 +-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/cmd/geth/dbcmd.go b/cmd/geth/dbcmd.go index 6f802716c5..ab2626c120 100644 --- a/cmd/geth/dbcmd.go +++ b/cmd/geth/dbcmd.go @@ -108,7 +108,7 @@ a data corruption.`, utils.CacheFlag, utils.CacheDatabaseFlag, }, utils.NetworkFlags, utils.DatabaseFlags), - Description: `This command performs a database compaction. + Description: `This command performs a database compaction. WARNING: This operation may take a very long time to finish, and may cause database corruption if it is aborted during execution'!`, } @@ -130,7 +130,7 @@ corruption if it is aborted during execution'!`, Flags: flags.Merge([]cli.Flag{ utils.SyncModeFlag, }, utils.NetworkFlags, utils.DatabaseFlags), - Description: `This command deletes the specified database key from the database. + Description: `This command deletes the specified database key from the database. WARNING: This is a low-level operation which may cause database corruption!`, } dbPutCmd = &cli.Command{ @@ -141,7 +141,7 @@ WARNING: This is a low-level operation which may cause database corruption!`, Flags: flags.Merge([]cli.Flag{ utils.SyncModeFlag, }, utils.NetworkFlags, utils.DatabaseFlags), - Description: `This command sets a given database key to the given value. + Description: `This command sets a given database key to the given value. WARNING: This is a low-level operation which may cause database corruption!`, } dbGetSlotsCmd = &cli.Command{ diff --git a/cmd/geth/snapshot.go b/cmd/geth/snapshot.go index 6413482511..25c6311c4c 100644 --- a/cmd/geth/snapshot.go +++ b/cmd/geth/snapshot.go @@ -84,8 +84,8 @@ In other words, this command does the snapshot to trie conversion. Action: checkDanglingStorage, Flags: flags.Merge(utils.NetworkFlags, utils.DatabaseFlags), Description: ` -geth snapshot check-dangling-storage traverses the snap storage -data, and verifies that all snapshot storage data has a corresponding account. +geth snapshot check-dangling-storage traverses the snap storage +data, and verifies that all snapshot storage data has a corresponding account. `, }, { @@ -96,7 +96,7 @@ data, and verifies that all snapshot storage data has a corresponding account. Flags: flags.Merge(utils.NetworkFlags, utils.DatabaseFlags), Description: ` geth snapshot inspect-account
checks all snapshot layers and prints out -information about the specified address. +information about the specified address. `, }, { @@ -125,7 +125,7 @@ geth snapshot traverse-rawstate will traverse the whole state from the given root and will abort if any referenced trie node or contract code is missing. This command can be used for state integrity verification. The default checking target is the HEAD state. It's basically identical -to traverse-state, but the check granularity is smaller. +to traverse-state, but the check granularity is smaller. It's also usable without snapshot enabled. `, @@ -143,7 +143,7 @@ It's also usable without snapshot enabled. }, utils.NetworkFlags, utils.DatabaseFlags), Description: ` This command is semantically equivalent to 'geth dump', but uses the snapshots -as the backend data source, making this command a lot faster. +as the backend data source, making this command a lot faster. The argument is interpreted as block number or hash. If none is provided, the latest block is used. diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index db226c73d8..e9a7c7c110 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -2045,12 +2045,11 @@ func SplitTagsFlag(tagsFlag string) map[string]string { return tagsMap } -// MakeChainDatabase open an LevelDB using the flags passed to the client and will hard crash if it fails. +// MakeChainDatabase opens a database using the flags passed to the client and will hard crash if it fails. func MakeChainDatabase(ctx *cli.Context, stack *node.Node, readonly bool) ethdb.Database { var ( cache = ctx.Int(CacheFlag.Name) * ctx.Int(CacheDatabaseFlag.Name) / 100 handles = MakeDatabaseHandles(ctx.Int(FDLimitFlag.Name)) - err error chainDb ethdb.Database ) From 48c27a617b83de559f7b21f4746ee3402983a6da Mon Sep 17 00:00:00 2001 From: Adrian Sutton Date: Mon, 13 Nov 2023 09:41:31 +1000 Subject: [PATCH 054/223] event: fix Resubscribe deadlock when unsubscribing after inner sub ends Cherry-pick changes from https://github.com/ethereum/go-ethereum/pull/28359/ --- event/subscription.go | 2 +- event/subscription_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/event/subscription.go b/event/subscription.go index 6c62874719..07e059c6db 100644 --- a/event/subscription.go +++ b/event/subscription.go @@ -120,7 +120,7 @@ func ResubscribeErr(backoffMax time.Duration, fn ResubscribeErrFunc) Subscriptio backoffMax: backoffMax, fn: fn, err: make(chan error), - unsub: make(chan struct{}), + unsub: make(chan struct{}, 1), } go s.loop() return s diff --git a/event/subscription_test.go b/event/subscription_test.go index ba081705c4..743d0bf67d 100644 --- a/event/subscription_test.go +++ b/event/subscription_test.go @@ -154,3 +154,27 @@ func TestResubscribeWithErrorHandler(t *testing.T) { t.Fatalf("unexpected subscription errors %v, want %v", subErrs, expectedSubErrs) } } + +func TestResubscribeWithCompletedSubscription(t *testing.T) { + t.Parallel() + + quitProducerAck := make(chan struct{}) + quitProducer := make(chan struct{}) + + sub := ResubscribeErr(100*time.Millisecond, func(ctx context.Context, lastErr error) (Subscription, error) { + return NewSubscription(func(unsubscribed <-chan struct{}) error { + select { + case <-quitProducer: + quitProducerAck <- struct{}{} + return nil + case <-unsubscribed: + return nil + } + }), nil + }) + + // Ensure producer has started and exited before Unsubscribe + close(quitProducer) + <-quitProducerAck + sub.Unsubscribe() +} From 916d6a441a866cb618ae826c220866de118899f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Tue, 14 Nov 2023 15:02:24 +0300 Subject: [PATCH 055/223] params: release Geth v1.15.5 --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index bcab461a43..5fb9631f1b 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 5 // Patch version component of the current release - VersionMeta = "unstable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 5 // Patch version component of the current release + VersionMeta = "stable" // Version metadata to append to the version string ) // Version holds the textual version string. From fa8d39807dc557d9a32a5c8e311ef1209b809e82 Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:09:40 +0100 Subject: [PATCH 056/223] cmd, core, trie: verkle-capable `geth init` (#28270) This change allows the creation of a genesis block for verkle testnets. This makes for a chunk of code that is easier to review and still touches many discussion points. --- cmd/geth/chaincmd.go | 4 +- cmd/geth/dbcmd.go | 2 +- cmd/geth/snapshot.go | 8 +- cmd/geth/verkle.go | 6 +- cmd/utils/flags.go | 3 +- core/genesis.go | 23 ++- core/genesis_test.go | 66 +++++- core/state/database.go | 51 +++-- core/state/iterator.go | 2 +- core/state/state_object.go | 2 +- core/state/statedb.go | 2 +- core/state/trie_prefetcher.go | 4 +- core/types/hashes.go | 5 +- go.mod | 8 +- go.sum | 21 +- les/server_requests.go | 2 +- light/odr_test.go | 2 +- light/trie.go | 2 +- trie/database.go | 6 + trie/trienode/node.go | 2 +- trie/utils/verkle.go | 342 +++++++++++++++++++++++++++++++ trie/utils/verkle_test.go | 139 +++++++++++++ trie/verkle.go | 375 ++++++++++++++++++++++++++++++++++ trie/verkle_test.go | 97 +++++++++ 24 files changed, 1120 insertions(+), 54 deletions(-) create mode 100644 trie/utils/verkle.go create mode 100644 trie/utils/verkle_test.go create mode 100644 trie/verkle.go create mode 100644 trie/verkle_test.go diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 5663963e3c..b65827f5bc 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -211,7 +211,7 @@ func initGenesis(ctx *cli.Context) error { } defer chaindb.Close() - triedb := utils.MakeTrieDatabase(ctx, chaindb, ctx.Bool(utils.CachePreimagesFlag.Name), false) + triedb := utils.MakeTrieDatabase(ctx, chaindb, ctx.Bool(utils.CachePreimagesFlag.Name), false, genesis.IsVerkle()) defer triedb.Close() _, hash, err := core.SetupGenesisBlockWithOverride(chaindb, triedb, genesis, &overrides) @@ -485,7 +485,7 @@ func dump(ctx *cli.Context) error { if err != nil { return err } - triedb := utils.MakeTrieDatabase(ctx, db, true, true) // always enable preimage lookup + triedb := utils.MakeTrieDatabase(ctx, db, true, true, false) // always enable preimage lookup defer triedb.Close() state, err := state.New(root, state.NewDatabaseWithNodeDB(db, triedb), nil) diff --git a/cmd/geth/dbcmd.go b/cmd/geth/dbcmd.go index ab2626c120..c60147b862 100644 --- a/cmd/geth/dbcmd.go +++ b/cmd/geth/dbcmd.go @@ -482,7 +482,7 @@ func dbDumpTrie(ctx *cli.Context) error { db := utils.MakeChainDatabase(ctx, stack, true) defer db.Close() - triedb := utils.MakeTrieDatabase(ctx, db, false, true) + triedb := utils.MakeTrieDatabase(ctx, db, false, true, false) defer triedb.Close() var ( diff --git a/cmd/geth/snapshot.go b/cmd/geth/snapshot.go index 25c6311c4c..82beb4f2e4 100644 --- a/cmd/geth/snapshot.go +++ b/cmd/geth/snapshot.go @@ -205,7 +205,7 @@ func verifyState(ctx *cli.Context) error { log.Error("Failed to load head block") return errors.New("no head block") } - triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true) + triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true, false) defer triedb.Close() snapConfig := snapshot.Config{ @@ -260,7 +260,7 @@ func traverseState(ctx *cli.Context) error { chaindb := utils.MakeChainDatabase(ctx, stack, true) defer chaindb.Close() - triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true) + triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true, false) defer triedb.Close() headBlock := rawdb.ReadHeadBlock(chaindb) @@ -369,7 +369,7 @@ func traverseRawState(ctx *cli.Context) error { chaindb := utils.MakeChainDatabase(ctx, stack, true) defer chaindb.Close() - triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true) + triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true, false) defer triedb.Close() headBlock := rawdb.ReadHeadBlock(chaindb) @@ -533,7 +533,7 @@ func dumpState(ctx *cli.Context) error { if err != nil { return err } - triedb := utils.MakeTrieDatabase(ctx, db, false, true) + triedb := utils.MakeTrieDatabase(ctx, db, false, true, false) defer triedb.Close() snapConfig := snapshot.Config{ diff --git a/cmd/geth/verkle.go b/cmd/geth/verkle.go index aa79889e8c..420b063d8b 100644 --- a/cmd/geth/verkle.go +++ b/cmd/geth/verkle.go @@ -84,7 +84,7 @@ func checkChildren(root verkle.VerkleNode, resolver verkle.NodeResolverFn) error return fmt.Errorf("could not find child %x in db: %w", childC, err) } // depth is set to 0, the tree isn't rebuilt so it's not a problem - childN, err := verkle.ParseNode(childS, 0, childC[:]) + childN, err := verkle.ParseNode(childS, 0) if err != nil { return fmt.Errorf("decode error child %x in db: %w", child.Commitment().Bytes(), err) } @@ -145,7 +145,7 @@ func verifyVerkle(ctx *cli.Context) error { if err != nil { return err } - root, err := verkle.ParseNode(serializedRoot, 0, rootC[:]) + root, err := verkle.ParseNode(serializedRoot, 0) if err != nil { return err } @@ -195,7 +195,7 @@ func expandVerkle(ctx *cli.Context) error { if err != nil { return err } - root, err := verkle.ParseNode(serializedRoot, 0, rootC[:]) + root, err := verkle.ParseNode(serializedRoot, 0) if err != nil { return err } diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index e9a7c7c110..8bbacac51d 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -2212,9 +2212,10 @@ func MakeConsolePreloads(ctx *cli.Context) []string { } // MakeTrieDatabase constructs a trie database based on the configured scheme. -func MakeTrieDatabase(ctx *cli.Context, disk ethdb.Database, preimage bool, readOnly bool) *trie.Database { +func MakeTrieDatabase(ctx *cli.Context, disk ethdb.Database, preimage bool, readOnly bool, isVerkle bool) *trie.Database { config := &trie.Config{ Preimages: preimage, + IsVerkle: isVerkle, } scheme, err := rawdb.ParseStateScheme(ctx.String(StateSchemeFlag.Name), disk) if err != nil { diff --git a/core/genesis.go b/core/genesis.go index 1045815fab..60c2f9a8bc 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -37,6 +37,7 @@ import ( "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" + "github.com/ethereum/go-ethereum/trie/triedb/pathdb" ) //go:generate go run github.com/fjl/gencodec -type Genesis -field-override genesisSpecMarshaling -out gen_genesis.go @@ -121,10 +122,20 @@ func (ga *GenesisAlloc) UnmarshalJSON(data []byte) error { } // hash computes the state root according to the genesis specification. -func (ga *GenesisAlloc) hash() (common.Hash, error) { +func (ga *GenesisAlloc) hash(isVerkle bool) (common.Hash, error) { + // If a genesis-time verkle trie is requested, create a trie config + // with the verkle trie enabled so that the tree can be initialized + // as such. + var config *trie.Config + if isVerkle { + config = &trie.Config{ + PathDB: pathdb.Defaults, + IsVerkle: true, + } + } // Create an ephemeral in-memory database for computing hash, // all the derived states will be discarded to not pollute disk. - db := state.NewDatabase(rawdb.NewMemoryDatabase()) + db := state.NewDatabaseWithConfig(rawdb.NewMemoryDatabase(), config) statedb, err := state.New(types.EmptyRootHash, db, nil) if err != nil { return common.Hash{}, err @@ -410,9 +421,15 @@ func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig { } } +// IsVerkle indicates whether the state is already stored in a verkle +// tree at genesis time. +func (g *Genesis) IsVerkle() bool { + return g.Config.IsVerkle(new(big.Int).SetUint64(g.Number), g.Timestamp) +} + // ToBlock returns the genesis block according to genesis specification. func (g *Genesis) ToBlock() *types.Block { - root, err := g.Alloc.hash() + root, err := g.Alloc.hash(g.IsVerkle()) if err != nil { panic(err) } diff --git a/core/genesis_test.go b/core/genesis_test.go index fac88ff373..1d85b510ca 100644 --- a/core/genesis_test.go +++ b/core/genesis_test.go @@ -17,6 +17,7 @@ package core import ( + "bytes" "encoding/json" "math/big" "reflect" @@ -231,7 +232,7 @@ func TestReadWriteGenesisAlloc(t *testing.T) { {1}: {Balance: big.NewInt(1), Storage: map[common.Hash]common.Hash{{1}: {1}}}, {2}: {Balance: big.NewInt(2), Storage: map[common.Hash]common.Hash{{2}: {2}}}, } - hash, _ = alloc.hash() + hash, _ = alloc.hash(false) ) blob, _ := json.Marshal(alloc) rawdb.WriteGenesisStateSpec(db, hash, blob) @@ -261,3 +262,66 @@ func newDbConfig(scheme string) *trie.Config { } return &trie.Config{PathDB: pathdb.Defaults} } + +func TestVerkleGenesisCommit(t *testing.T) { + var verkleTime uint64 = 0 + verkleConfig := ¶ms.ChainConfig{ + ChainID: big.NewInt(1), + HomesteadBlock: big.NewInt(0), + DAOForkBlock: nil, + DAOForkSupport: false, + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ArrowGlacierBlock: big.NewInt(0), + GrayGlacierBlock: big.NewInt(0), + MergeNetsplitBlock: nil, + ShanghaiTime: &verkleTime, + CancunTime: &verkleTime, + PragueTime: &verkleTime, + VerkleTime: &verkleTime, + TerminalTotalDifficulty: big.NewInt(0), + TerminalTotalDifficultyPassed: true, + Ethash: nil, + Clique: nil, + } + + genesis := &Genesis{ + BaseFee: big.NewInt(params.InitialBaseFee), + Config: verkleConfig, + Timestamp: verkleTime, + Difficulty: big.NewInt(0), + Alloc: GenesisAlloc{ + {1}: {Balance: big.NewInt(1), Storage: map[common.Hash]common.Hash{{1}: {1}}}, + }, + } + + expected := common.Hex2Bytes("14398d42be3394ff8d50681816a4b7bf8d8283306f577faba2d5bc57498de23b") + got := genesis.ToBlock().Root().Bytes() + if !bytes.Equal(got, expected) { + t.Fatalf("invalid genesis state root, expected %x, got %x", expected, got) + } + + db := rawdb.NewMemoryDatabase() + triedb := trie.NewDatabase(db, &trie.Config{IsVerkle: true, PathDB: pathdb.Defaults}) + block := genesis.MustCommit(db, triedb) + if !bytes.Equal(block.Root().Bytes(), expected) { + t.Fatalf("invalid genesis state root, expected %x, got %x", expected, got) + } + + // Test that the trie is verkle + if !triedb.IsVerkle() { + t.Fatalf("expected trie to be verkle") + } + + if !rawdb.ExistsAccountTrieNode(db, nil) { + t.Fatal("could not find node") + } +} diff --git a/core/state/database.go b/core/state/database.go index 9467c8f72e..b55f870d90 100644 --- a/core/state/database.go +++ b/core/state/database.go @@ -20,6 +20,7 @@ import ( "errors" "fmt" + "github.com/crate-crypto/go-ipa/banderwagon" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/lru" "github.com/ethereum/go-ethereum/core/rawdb" @@ -28,6 +29,7 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/trie" "github.com/ethereum/go-ethereum/trie/trienode" + "github.com/ethereum/go-ethereum/trie/utils" ) const ( @@ -36,6 +38,12 @@ const ( // Cache size granted for caching clean code. codeCacheSize = 64 * 1024 * 1024 + + // commitmentSize is the size of commitment stored in cache. + commitmentSize = banderwagon.UncompressedSize + + // Cache item granted for caching commitment results. + commitmentCacheItems = 64 * 1024 * 1024 / (commitmentSize + common.AddressLength) ) // Database wraps access to tries and contract code. @@ -44,7 +52,7 @@ type Database interface { OpenTrie(root common.Hash) (Trie, error) // OpenStorageTrie opens the storage trie of an account. - OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash) (Trie, error) + OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash, trie Trie) (Trie, error) // CopyTrie returns an independent copy of the given trie. CopyTrie(Trie) Trie @@ -70,11 +78,6 @@ type Trie interface { // TODO(fjl): remove this when StateTrie is removed GetKey([]byte) []byte - // GetStorage returns the value for key stored in the trie. The value bytes - // must not be modified by the caller. If a node was not found in the database, - // a trie.MissingNodeError is returned. - GetStorage(addr common.Address, key []byte) ([]byte, error) - // GetAccount abstracts an account read from the trie. It retrieves the // account blob from the trie with provided account address and decodes it // with associated decoding algorithm. If the specified account is not in @@ -83,27 +86,32 @@ type Trie interface { // be returned. GetAccount(address common.Address) (*types.StateAccount, error) - // UpdateStorage associates key with value in the trie. If value has length zero, - // any existing value is deleted from the trie. The value bytes must not be modified - // by the caller while they are stored in the trie. If a node was not found in the - // database, a trie.MissingNodeError is returned. - UpdateStorage(addr common.Address, key, value []byte) error + // GetStorage returns the value for key stored in the trie. The value bytes + // must not be modified by the caller. If a node was not found in the database, + // a trie.MissingNodeError is returned. + GetStorage(addr common.Address, key []byte) ([]byte, error) // UpdateAccount abstracts an account write to the trie. It encodes the // provided account object with associated algorithm and then updates it // in the trie with provided address. UpdateAccount(address common.Address, account *types.StateAccount) error - // UpdateContractCode abstracts code write to the trie. It is expected - // to be moved to the stateWriter interface when the latter is ready. - UpdateContractCode(address common.Address, codeHash common.Hash, code []byte) error + // UpdateStorage associates key with value in the trie. If value has length zero, + // any existing value is deleted from the trie. The value bytes must not be modified + // by the caller while they are stored in the trie. If a node was not found in the + // database, a trie.MissingNodeError is returned. + UpdateStorage(addr common.Address, key, value []byte) error + + // DeleteAccount abstracts an account deletion from the trie. + DeleteAccount(address common.Address) error // DeleteStorage removes any existing value for key from the trie. If a node // was not found in the database, a trie.MissingNodeError is returned. DeleteStorage(addr common.Address, key []byte) error - // DeleteAccount abstracts an account deletion from the trie. - DeleteAccount(address common.Address) error + // UpdateContractCode abstracts code write to the trie. It is expected + // to be moved to the stateWriter interface when the latter is ready. + UpdateContractCode(address common.Address, codeHash common.Hash, code []byte) error // Hash returns the root hash of the trie. It does not write to the database and // can be used even if the trie doesn't have one. @@ -170,6 +178,9 @@ type cachingDB struct { // OpenTrie opens the main account trie at a specific root hash. func (db *cachingDB) OpenTrie(root common.Hash) (Trie, error) { + if db.triedb.IsVerkle() { + return trie.NewVerkleTrie(root, db.triedb, utils.NewPointCache(commitmentCacheItems)) + } tr, err := trie.NewStateTrie(trie.StateTrieID(root), db.triedb) if err != nil { return nil, err @@ -178,7 +189,13 @@ func (db *cachingDB) OpenTrie(root common.Hash) (Trie, error) { } // OpenStorageTrie opens the storage trie of an account. -func (db *cachingDB) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash) (Trie, error) { +func (db *cachingDB) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash, self Trie) (Trie, error) { + // In the verkle case, there is only one tree. But the two-tree structure + // is hardcoded in the codebase. So we need to return the same trie in this + // case. + if db.triedb.IsVerkle() { + return self, nil + } tr, err := trie.NewStateTrie(trie.StorageTrieID(stateRoot, crypto.Keccak256Hash(address.Bytes()), root), db.triedb) if err != nil { return nil, err diff --git a/core/state/iterator.go b/core/state/iterator.go index 683efd73de..dc84ce689b 100644 --- a/core/state/iterator.go +++ b/core/state/iterator.go @@ -123,7 +123,7 @@ func (it *nodeIterator) step() error { address := common.BytesToAddress(preimage) // Traverse the storage slots belong to the account - dataTrie, err := it.state.db.OpenStorageTrie(it.state.originalRoot, address, account.Root) + dataTrie, err := it.state.db.OpenStorageTrie(it.state.originalRoot, address, account.Root, it.state.trie) if err != nil { return err } diff --git a/core/state/state_object.go b/core/state/state_object.go index d42d2c34d8..fc66b48114 100644 --- a/core/state/state_object.go +++ b/core/state/state_object.go @@ -145,7 +145,7 @@ func (s *stateObject) getTrie() (Trie, error) { s.trie = s.db.prefetcher.trie(s.addrHash, s.data.Root) } if s.trie == nil { - tr, err := s.db.db.OpenStorageTrie(s.db.originalRoot, s.address, s.data.Root) + tr, err := s.db.db.OpenStorageTrie(s.db.originalRoot, s.address, s.data.Root, s.db.trie) if err != nil { return nil, err } diff --git a/core/state/statedb.go b/core/state/statedb.go index 195e463c28..674227857c 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -998,7 +998,7 @@ func (s *StateDB) fastDeleteStorage(addrHash common.Hash, root common.Hash) (boo // employed when the associated state snapshot is not available. It iterates the // storage slots along with all internal trie nodes via trie directly. func (s *StateDB) slowDeleteStorage(addr common.Address, addrHash common.Hash, root common.Hash) (bool, common.StorageSize, map[common.Hash][]byte, *trienode.NodeSet, error) { - tr, err := s.db.OpenStorageTrie(s.originalRoot, addr, root) + tr, err := s.db.OpenStorageTrie(s.originalRoot, addr, root, s.trie) if err != nil { return false, 0, nil, nil, fmt.Errorf("failed to open storage trie, err: %w", err) } diff --git a/core/state/trie_prefetcher.go b/core/state/trie_prefetcher.go index 772c698dd0..c2a49417d4 100644 --- a/core/state/trie_prefetcher.go +++ b/core/state/trie_prefetcher.go @@ -305,7 +305,9 @@ func (sf *subfetcher) loop() { } sf.trie = trie } else { - trie, err := sf.db.OpenStorageTrie(sf.state, sf.addr, sf.root) + // The trie argument can be nil as verkle doesn't support prefetching + // yet. TODO FIX IT(rjl493456442), otherwise code will panic here. + trie, err := sf.db.OpenStorageTrie(sf.state, sf.addr, sf.root, nil) if err != nil { log.Warn("Trie prefetcher failed opening trie", "root", sf.root, "err", err) return diff --git a/core/types/hashes.go b/core/types/hashes.go index 3a787aa136..43e9130fd1 100644 --- a/core/types/hashes.go +++ b/core/types/hashes.go @@ -23,7 +23,7 @@ import ( ) var ( - // EmptyRootHash is the known root hash of an empty trie. + // EmptyRootHash is the known root hash of an empty merkle trie. EmptyRootHash = common.HexToHash("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") // EmptyUncleHash is the known hash of the empty uncle set. @@ -40,6 +40,9 @@ var ( // EmptyWithdrawalsHash is the known hash of the empty withdrawal set. EmptyWithdrawalsHash = common.HexToHash("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") + + // EmptyVerkleHash is the known hash of an empty verkle trie. + EmptyVerkleHash = common.Hash{} ) // TrieRootHash returns the hash itself if it's non-empty or the predefined diff --git a/go.mod b/go.mod index 385d5afdc8..4d7ddcfc73 100644 --- a/go.mod +++ b/go.mod @@ -16,6 +16,7 @@ require ( github.com/cockroachdb/errors v1.8.1 github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 github.com/consensys/gnark-crypto v0.12.1 + github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 github.com/crate-crypto/go-kzg-4844 v0.7.0 github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 @@ -26,7 +27,7 @@ require ( github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 github.com/fsnotify/fsnotify v1.6.0 github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff - github.com/gballet/go-verkle v0.0.0-20230607174250-df487255f46b + github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 github.com/go-stack/stack v1.8.1 github.com/gofrs/flock v0.8.1 github.com/golang-jwt/jwt/v4 v4.5.0 @@ -65,7 +66,7 @@ require ( go.uber.org/automaxprocs v1.5.2 golang.org/x/crypto v0.14.0 golang.org/x/exp v0.0.0-20230905200255-921286631fa9 - golang.org/x/sync v0.3.0 + golang.org/x/sync v0.4.0 golang.org/x/sys v0.13.0 golang.org/x/text v0.13.0 golang.org/x/time v0.3.0 @@ -89,7 +90,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/sts v1.23.2 // indirect github.com/aws/smithy-go v1.15.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.7.0 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f // indirect github.com/cockroachdb/redact v1.0.8 // indirect @@ -97,7 +98,6 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/deepmap/oapi-codegen v1.6.0 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect diff --git a/go.sum b/go.sum index cc38e7975f..765a9da86e 100644 --- a/go.sum +++ b/go.sum @@ -99,6 +99,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.7.0 h1:YjAGVd3XmtK9ktAbX8Zg2g2PwLIMjGREZJHlV4j7NEo= github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= @@ -145,8 +147,10 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80 h1:DuBDHVjgGMPki7bAyh91+3cF1Vh34sAEdH8JQgbc2R0= -github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80/go.mod h1:gzbVz57IDJgQ9rLQwfSk696JGWof8ftznEL9GoAv3NI= +github.com/crate-crypto/go-ipa v0.0.0-20230914135612-d1b03fcb8e58 h1:PwUlswsGOrLB677lW4XrlWLeszY3BaDGbvZ6dYk28tQ= +github.com/crate-crypto/go-ipa v0.0.0-20230914135612-d1b03fcb8e58/go.mod h1:J+gsi6D4peY0kyhaklyXFRVHOQWI2I5uU0c2+/90HYc= +github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= +github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -201,8 +205,10 @@ github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61/go.mod h1:Q0X6pkwTILD github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.0.0-20230607174250-df487255f46b h1:vMT47RYsrftsHSTQhqXwC3BYflo38OLC3Y4LtXtLyU0= -github.com/gballet/go-verkle v0.0.0-20230607174250-df487255f46b/go.mod h1:CDncRYVRSDqwakm282WEkjfaAj1hxU/v5RXxk5nXOiI= +github.com/gballet/go-verkle v0.1.1-0.20231004173727-0a4e93ed640b h1:LHeiiSTL2FEGCP1ov6FqkikiViqygeVo1ZwJ1x3nYSE= +github.com/gballet/go-verkle v0.1.1-0.20231004173727-0a4e93ed640b/go.mod h1:7JamHhSTnnHDhcI3G8r4sWaD9XlleriqVlC3FeAQJKM= +github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= +github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= @@ -418,7 +424,6 @@ github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvf github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -713,9 +718,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -769,7 +773,6 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/les/server_requests.go b/les/server_requests.go index 9a249f04c9..cc5b601713 100644 --- a/les/server_requests.go +++ b/les/server_requests.go @@ -430,7 +430,7 @@ func handleGetProofs(msg Decoder) (serveRequestFn, uint64, uint64, error) { p.bumpInvalid() continue } - trie, err = statedb.OpenStorageTrie(root, address, account.Root) + trie, err = statedb.OpenStorageTrie(root, address, account.Root, nil) if trie == nil || err != nil { p.Log().Warn("Failed to open storage trie for proof", "block", header.Number, "hash", header.Hash(), "account", address, "root", account.Root, "err", err) continue diff --git a/light/odr_test.go b/light/odr_test.go index c415d73e7e..de12f9b7ef 100644 --- a/light/odr_test.go +++ b/light/odr_test.go @@ -89,7 +89,7 @@ func (odr *testOdr) Retrieve(ctx context.Context, req OdrRequest) error { t state.Trie ) if len(req.Id.AccountAddress) > 0 { - t, err = odr.serverState.OpenStorageTrie(req.Id.StateRoot, common.BytesToAddress(req.Id.AccountAddress), req.Id.Root) + t, err = odr.serverState.OpenStorageTrie(req.Id.StateRoot, common.BytesToAddress(req.Id.AccountAddress), req.Id.Root, nil) } else { t, err = odr.serverState.OpenTrie(req.Id.Root) } diff --git a/light/trie.go b/light/trie.go index 1847f1e71b..1d93bdf415 100644 --- a/light/trie.go +++ b/light/trie.go @@ -55,7 +55,7 @@ func (db *odrDatabase) OpenTrie(root common.Hash) (state.Trie, error) { return &odrTrie{db: db, id: db.id}, nil } -func (db *odrDatabase) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash) (state.Trie, error) { +func (db *odrDatabase) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash, _ state.Trie) (state.Trie, error) { return &odrTrie{db: db, id: StorageTrieID(db.id, address, root)}, nil } diff --git a/trie/database.go b/trie/database.go index 1e59f0908f..321b4f8955 100644 --- a/trie/database.go +++ b/trie/database.go @@ -31,6 +31,7 @@ import ( // Config defines all necessary options for database. type Config struct { Preimages bool // Flag whether the preimage of node key is recorded + IsVerkle bool // Flag whether the db is holding a verkle tree HashDB *hashdb.Config // Configs for hash-based scheme PathDB *pathdb.Config // Configs for experimental path-based scheme } @@ -318,3 +319,8 @@ func (db *Database) SetBufferSize(size int) error { } return pdb.SetBufferSize(size) } + +// IsVerkle returns the indicator if the database is holding a verkle tree. +func (db *Database) IsVerkle() bool { + return db.config.IsVerkle +} diff --git a/trie/trienode/node.go b/trie/trienode/node.go index 98d5588b6d..95315c2e9a 100644 --- a/trie/trienode/node.go +++ b/trie/trienode/node.go @@ -39,7 +39,7 @@ func (n *Node) Size() int { // IsDeleted returns the indicator if the node is marked as deleted. func (n *Node) IsDeleted() bool { - return n.Hash == (common.Hash{}) + return len(n.Blob) == 0 } // New constructs a node with provided node information. diff --git a/trie/utils/verkle.go b/trie/utils/verkle.go new file mode 100644 index 0000000000..ce059edc64 --- /dev/null +++ b/trie/utils/verkle.go @@ -0,0 +1,342 @@ +// Copyright 2023 go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package utils + +import ( + "encoding/binary" + "sync" + + "github.com/crate-crypto/go-ipa/bandersnatch/fr" + "github.com/ethereum/go-ethereum/common/lru" + "github.com/ethereum/go-ethereum/metrics" + "github.com/gballet/go-verkle" + "github.com/holiman/uint256" +) + +const ( + // The spec of verkle key encoding can be found here. + // https://notes.ethereum.org/@vbuterin/verkle_tree_eip#Tree-embedding + VersionLeafKey = 0 + BalanceLeafKey = 1 + NonceLeafKey = 2 + CodeKeccakLeafKey = 3 + CodeSizeLeafKey = 4 +) + +var ( + zero = uint256.NewInt(0) + verkleNodeWidthLog2 = 8 + headerStorageOffset = uint256.NewInt(64) + mainStorageOffsetLshVerkleNodeWidth = new(uint256.Int).Lsh(uint256.NewInt(256), 31-uint(verkleNodeWidthLog2)) + codeOffset = uint256.NewInt(128) + verkleNodeWidth = uint256.NewInt(256) + codeStorageDelta = uint256.NewInt(0).Sub(codeOffset, headerStorageOffset) + + index0Point *verkle.Point // pre-computed commitment of polynomial [2+256*64] + + // cacheHitGauge is the metric to track how many cache hit occurred. + cacheHitGauge = metrics.NewRegisteredGauge("trie/verkle/cache/hit", nil) + + // cacheMissGauge is the metric to track how many cache miss occurred. + cacheMissGauge = metrics.NewRegisteredGauge("trie/verkle/cache/miss", nil) +) + +func init() { + // The byte array is the Marshalled output of the point computed as such: + // + // var ( + // config = verkle.GetConfig() + // fr verkle.Fr + // ) + // verkle.FromLEBytes(&fr, []byte{2, 64}) + // point := config.CommitToPoly([]verkle.Fr{fr}, 1) + index0Point = new(verkle.Point) + err := index0Point.SetBytes([]byte{34, 25, 109, 242, 193, 5, 144, 224, 76, 52, 189, 92, 197, 126, 9, 145, 27, 152, 199, 130, 165, 3, 210, 27, 193, 131, 142, 28, 110, 26, 16, 191}) + if err != nil { + panic(err) + } +} + +// PointCache is the LRU cache for storing evaluated address commitment. +type PointCache struct { + lru lru.BasicLRU[string, *verkle.Point] + lock sync.RWMutex +} + +// NewPointCache returns the cache with specified size. +func NewPointCache(maxItems int) *PointCache { + return &PointCache{ + lru: lru.NewBasicLRU[string, *verkle.Point](maxItems), + } +} + +// Get returns the cached commitment for the specified address, or computing +// it on the flight. +func (c *PointCache) Get(addr []byte) *verkle.Point { + c.lock.Lock() + defer c.lock.Unlock() + + p, ok := c.lru.Get(string(addr)) + if ok { + cacheHitGauge.Inc(1) + return p + } + cacheMissGauge.Inc(1) + p = evaluateAddressPoint(addr) + c.lru.Add(string(addr), p) + return p +} + +// GetStem returns the first 31 bytes of the tree key as the tree stem. It only +// works for the account metadata whose treeIndex is 0. +func (c *PointCache) GetStem(addr []byte) []byte { + p := c.Get(addr) + return pointToHash(p, 0)[:31] +} + +// GetTreeKey performs both the work of the spec's get_tree_key function, and that +// of pedersen_hash: it builds the polynomial in pedersen_hash without having to +// create a mostly zero-filled buffer and "type cast" it to a 128-long 16-byte +// array. Since at most the first 5 coefficients of the polynomial will be non-zero, +// these 5 coefficients are created directly. +func GetTreeKey(address []byte, treeIndex *uint256.Int, subIndex byte) []byte { + if len(address) < 32 { + var aligned [32]byte + address = append(aligned[:32-len(address)], address...) + } + // poly = [2+256*64, address_le_low, address_le_high, tree_index_le_low, tree_index_le_high] + var poly [5]fr.Element + + // 32-byte address, interpreted as two little endian + // 16-byte numbers. + verkle.FromLEBytes(&poly[1], address[:16]) + verkle.FromLEBytes(&poly[2], address[16:]) + + // treeIndex must be interpreted as a 32-byte aligned little-endian integer. + // e.g: if treeIndex is 0xAABBCC, we need the byte representation to be 0xCCBBAA00...00. + // poly[3] = LE({CC,BB,AA,00...0}) (16 bytes), poly[4]=LE({00,00,...}) (16 bytes). + // + // To avoid unnecessary endianness conversions for go-ipa, we do some trick: + // - poly[3]'s byte representation is the same as the *top* 16 bytes (trieIndexBytes[16:]) of + // 32-byte aligned big-endian representation (BE({00,...,AA,BB,CC})). + // - poly[4]'s byte representation is the same as the *low* 16 bytes (trieIndexBytes[:16]) of + // the 32-byte aligned big-endian representation (BE({00,00,...}). + trieIndexBytes := treeIndex.Bytes32() + verkle.FromBytes(&poly[3], trieIndexBytes[16:]) + verkle.FromBytes(&poly[4], trieIndexBytes[:16]) + + cfg := verkle.GetConfig() + ret := cfg.CommitToPoly(poly[:], 0) + + // add a constant point corresponding to poly[0]=[2+256*64]. + ret.Add(ret, index0Point) + + return pointToHash(ret, subIndex) +} + +// GetTreeKeyWithEvaluatedAddress is basically identical to GetTreeKey, the only +// difference is a part of polynomial is already evaluated. +// +// Specifically, poly = [2+256*64, address_le_low, address_le_high] is already +// evaluated. +func GetTreeKeyWithEvaluatedAddress(evaluated *verkle.Point, treeIndex *uint256.Int, subIndex byte) []byte { + var poly [5]fr.Element + + poly[0].SetZero() + poly[1].SetZero() + poly[2].SetZero() + + // little-endian, 32-byte aligned treeIndex + var index [32]byte + for i := 0; i < len(treeIndex); i++ { + binary.LittleEndian.PutUint64(index[i*8:(i+1)*8], treeIndex[i]) + } + verkle.FromLEBytes(&poly[3], index[:16]) + verkle.FromLEBytes(&poly[4], index[16:]) + + cfg := verkle.GetConfig() + ret := cfg.CommitToPoly(poly[:], 0) + + // add the pre-evaluated address + ret.Add(ret, evaluated) + + return pointToHash(ret, subIndex) +} + +// VersionKey returns the verkle tree key of the version field for the specified account. +func VersionKey(address []byte) []byte { + return GetTreeKey(address, zero, VersionLeafKey) +} + +// BalanceKey returns the verkle tree key of the balance field for the specified account. +func BalanceKey(address []byte) []byte { + return GetTreeKey(address, zero, BalanceLeafKey) +} + +// NonceKey returns the verkle tree key of the nonce field for the specified account. +func NonceKey(address []byte) []byte { + return GetTreeKey(address, zero, NonceLeafKey) +} + +// CodeKeccakKey returns the verkle tree key of the code keccak field for +// the specified account. +func CodeKeccakKey(address []byte) []byte { + return GetTreeKey(address, zero, CodeKeccakLeafKey) +} + +// CodeSizeKey returns the verkle tree key of the code size field for the +// specified account. +func CodeSizeKey(address []byte) []byte { + return GetTreeKey(address, zero, CodeSizeLeafKey) +} + +func codeChunkIndex(chunk *uint256.Int) (*uint256.Int, byte) { + var ( + chunkOffset = new(uint256.Int).Add(codeOffset, chunk) + treeIndex = new(uint256.Int).Div(chunkOffset, verkleNodeWidth) + subIndexMod = new(uint256.Int).Mod(chunkOffset, verkleNodeWidth) + ) + var subIndex byte + if len(subIndexMod) != 0 { + subIndex = byte(subIndexMod[0]) + } + return treeIndex, subIndex +} + +// CodeChunkKey returns the verkle tree key of the code chunk for the +// specified account. +func CodeChunkKey(address []byte, chunk *uint256.Int) []byte { + treeIndex, subIndex := codeChunkIndex(chunk) + return GetTreeKey(address, treeIndex, subIndex) +} + +func storageIndex(bytes []byte) (*uint256.Int, byte) { + // If the storage slot is in the header, we need to add the header offset. + var key uint256.Int + key.SetBytes(bytes) + if key.Cmp(codeStorageDelta) < 0 { + // This addition is always safe; it can't ever overflow since pos + +package utils + +import ( + "bytes" + "testing" + + "github.com/gballet/go-verkle" + "github.com/holiman/uint256" +) + +func TestTreeKey(t *testing.T) { + var ( + address = []byte{0x01} + addressEval = evaluateAddressPoint(address) + smallIndex = uint256.NewInt(1) + largeIndex = uint256.NewInt(10000) + smallStorage = []byte{0x1} + largeStorage = bytes.Repeat([]byte{0xff}, 16) + ) + if !bytes.Equal(VersionKey(address), VersionKeyWithEvaluatedAddress(addressEval)) { + t.Fatal("Unmatched version key") + } + if !bytes.Equal(BalanceKey(address), BalanceKeyWithEvaluatedAddress(addressEval)) { + t.Fatal("Unmatched balance key") + } + if !bytes.Equal(NonceKey(address), NonceKeyWithEvaluatedAddress(addressEval)) { + t.Fatal("Unmatched nonce key") + } + if !bytes.Equal(CodeKeccakKey(address), CodeKeccakKeyWithEvaluatedAddress(addressEval)) { + t.Fatal("Unmatched code keccak key") + } + if !bytes.Equal(CodeSizeKey(address), CodeSizeKeyWithEvaluatedAddress(addressEval)) { + t.Fatal("Unmatched code size key") + } + if !bytes.Equal(CodeChunkKey(address, smallIndex), CodeChunkKeyWithEvaluatedAddress(addressEval, smallIndex)) { + t.Fatal("Unmatched code chunk key") + } + if !bytes.Equal(CodeChunkKey(address, largeIndex), CodeChunkKeyWithEvaluatedAddress(addressEval, largeIndex)) { + t.Fatal("Unmatched code chunk key") + } + if !bytes.Equal(StorageSlotKey(address, smallStorage), StorageSlotKeyWithEvaluatedAddress(addressEval, smallStorage)) { + t.Fatal("Unmatched storage slot key") + } + if !bytes.Equal(StorageSlotKey(address, largeStorage), StorageSlotKeyWithEvaluatedAddress(addressEval, largeStorage)) { + t.Fatal("Unmatched storage slot key") + } +} + +// goos: darwin +// goarch: amd64 +// pkg: github.com/ethereum/go-ethereum/trie/utils +// cpu: VirtualApple @ 2.50GHz +// BenchmarkTreeKey +// BenchmarkTreeKey-8 398731 2961 ns/op 32 B/op 1 allocs/op +func BenchmarkTreeKey(b *testing.B) { + // Initialize the IPA settings which can be pretty expensive. + verkle.GetConfig() + + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + BalanceKey([]byte{0x01}) + } +} + +// goos: darwin +// goarch: amd64 +// pkg: github.com/ethereum/go-ethereum/trie/utils +// cpu: VirtualApple @ 2.50GHz +// BenchmarkTreeKeyWithEvaluation +// BenchmarkTreeKeyWithEvaluation-8 513855 2324 ns/op 32 B/op 1 allocs/op +func BenchmarkTreeKeyWithEvaluation(b *testing.B) { + // Initialize the IPA settings which can be pretty expensive. + verkle.GetConfig() + + addr := []byte{0x01} + eval := evaluateAddressPoint(addr) + + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + BalanceKeyWithEvaluatedAddress(eval) + } +} + +// goos: darwin +// goarch: amd64 +// pkg: github.com/ethereum/go-ethereum/trie/utils +// cpu: VirtualApple @ 2.50GHz +// BenchmarkStorageKey +// BenchmarkStorageKey-8 230516 4584 ns/op 96 B/op 3 allocs/op +func BenchmarkStorageKey(b *testing.B) { + // Initialize the IPA settings which can be pretty expensive. + verkle.GetConfig() + + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + StorageSlotKey([]byte{0x01}, bytes.Repeat([]byte{0xff}, 32)) + } +} + +// goos: darwin +// goarch: amd64 +// pkg: github.com/ethereum/go-ethereum/trie/utils +// cpu: VirtualApple @ 2.50GHz +// BenchmarkStorageKeyWithEvaluation +// BenchmarkStorageKeyWithEvaluation-8 320125 3753 ns/op 96 B/op 3 allocs/op +func BenchmarkStorageKeyWithEvaluation(b *testing.B) { + // Initialize the IPA settings which can be pretty expensive. + verkle.GetConfig() + + addr := []byte{0x01} + eval := evaluateAddressPoint(addr) + + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + StorageSlotKeyWithEvaluatedAddress(eval, bytes.Repeat([]byte{0xff}, 32)) + } +} diff --git a/trie/verkle.go b/trie/verkle.go new file mode 100644 index 0000000000..89e2e53408 --- /dev/null +++ b/trie/verkle.go @@ -0,0 +1,375 @@ +// Copyright 2023 go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package trie + +import ( + "encoding/binary" + "errors" + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/trie/trienode" + "github.com/ethereum/go-ethereum/trie/utils" + "github.com/gballet/go-verkle" + "github.com/holiman/uint256" +) + +var ( + zero [32]byte + errInvalidRootType = errors.New("invalid node type for root") +) + +// VerkleTrie is a wrapper around VerkleNode that implements the trie.Trie +// interface so that Verkle trees can be reused verbatim. +type VerkleTrie struct { + root verkle.VerkleNode + db *Database + cache *utils.PointCache + reader *trieReader +} + +// NewVerkleTrie constructs a verkle tree based on the specified root hash. +func NewVerkleTrie(root common.Hash, db *Database, cache *utils.PointCache) (*VerkleTrie, error) { + reader, err := newTrieReader(root, common.Hash{}, db) + if err != nil { + return nil, err + } + // Parse the root verkle node if it's not empty. + node := verkle.New() + if root != types.EmptyVerkleHash && root != types.EmptyRootHash { + blob, err := reader.node(nil, common.Hash{}) + if err != nil { + return nil, err + } + node, err = verkle.ParseNode(blob, 0) + if err != nil { + return nil, err + } + } + return &VerkleTrie{ + root: node, + db: db, + cache: cache, + reader: reader, + }, nil +} + +// GetKey returns the sha3 preimage of a hashed key that was previously used +// to store a value. +func (t *VerkleTrie) GetKey(key []byte) []byte { + return key +} + +// GetAccount implements state.Trie, retrieving the account with the specified +// account address. If the specified account is not in the verkle tree, nil will +// be returned. If the tree is corrupted, an error will be returned. +func (t *VerkleTrie) GetAccount(addr common.Address) (*types.StateAccount, error) { + var ( + acc = &types.StateAccount{} + values [][]byte + err error + ) + switch n := t.root.(type) { + case *verkle.InternalNode: + values, err = n.GetValuesAtStem(t.cache.GetStem(addr[:]), t.nodeResolver) + if err != nil { + return nil, fmt.Errorf("GetAccount (%x) error: %v", addr, err) + } + default: + return nil, errInvalidRootType + } + if values == nil { + return nil, nil + } + // Decode nonce in little-endian + if len(values[utils.NonceLeafKey]) > 0 { + acc.Nonce = binary.LittleEndian.Uint64(values[utils.NonceLeafKey]) + } + // Decode balance in little-endian + var balance [32]byte + copy(balance[:], values[utils.BalanceLeafKey]) + for i := 0; i < len(balance)/2; i++ { + balance[len(balance)-i-1], balance[i] = balance[i], balance[len(balance)-i-1] + } + acc.Balance = new(big.Int).SetBytes(balance[:]) + + // Decode codehash + acc.CodeHash = values[utils.CodeKeccakLeafKey] + + // TODO account.Root is leave as empty. How should we handle the legacy account? + return acc, nil +} + +// GetStorage implements state.Trie, retrieving the storage slot with the specified +// account address and storage key. If the specified slot is not in the verkle tree, +// nil will be returned. If the tree is corrupted, an error will be returned. +func (t *VerkleTrie) GetStorage(addr common.Address, key []byte) ([]byte, error) { + k := utils.StorageSlotKeyWithEvaluatedAddress(t.cache.Get(addr.Bytes()), key) + val, err := t.root.Get(k, t.nodeResolver) + if err != nil { + return nil, err + } + return common.TrimLeftZeroes(val), nil +} + +// UpdateAccount implements state.Trie, writing the provided account into the tree. +// If the tree is corrupted, an error will be returned. +func (t *VerkleTrie) UpdateAccount(addr common.Address, acc *types.StateAccount) error { + var ( + err error + nonce, balance [32]byte + values = make([][]byte, verkle.NodeWidth) + ) + values[utils.VersionLeafKey] = zero[:] + values[utils.CodeKeccakLeafKey] = acc.CodeHash[:] + + // Encode nonce in little-endian + binary.LittleEndian.PutUint64(nonce[:], acc.Nonce) + values[utils.NonceLeafKey] = nonce[:] + + // Encode balance in little-endian + bytes := acc.Balance.Bytes() + if len(bytes) > 0 { + for i, b := range bytes { + balance[len(bytes)-i-1] = b + } + } + values[utils.BalanceLeafKey] = balance[:] + + switch n := t.root.(type) { + case *verkle.InternalNode: + err = n.InsertValuesAtStem(t.cache.GetStem(addr[:]), values, t.nodeResolver) + if err != nil { + return fmt.Errorf("UpdateAccount (%x) error: %v", addr, err) + } + default: + return errInvalidRootType + } + // TODO figure out if the code size needs to be updated, too + return nil +} + +// UpdateStorage implements state.Trie, writing the provided storage slot into +// the tree. If the tree is corrupted, an error will be returned. +func (t *VerkleTrie) UpdateStorage(address common.Address, key, value []byte) error { + // Left padding the slot value to 32 bytes. + var v [32]byte + if len(value) >= 32 { + copy(v[:], value[:32]) + } else { + copy(v[32-len(value):], value[:]) + } + k := utils.StorageSlotKeyWithEvaluatedAddress(t.cache.Get(address.Bytes()), key) + return t.root.Insert(k, v[:], t.nodeResolver) +} + +// DeleteAccount implements state.Trie, deleting the specified account from the +// trie. If the account was not existent in the trie, no error will be returned. +// If the trie is corrupted, an error will be returned. +func (t *VerkleTrie) DeleteAccount(addr common.Address) error { + var ( + err error + values = make([][]byte, verkle.NodeWidth) + ) + for i := 0; i < verkle.NodeWidth; i++ { + values[i] = zero[:] + } + switch n := t.root.(type) { + case *verkle.InternalNode: + err = n.InsertValuesAtStem(t.cache.GetStem(addr.Bytes()), values, t.nodeResolver) + if err != nil { + return fmt.Errorf("DeleteAccount (%x) error: %v", addr, err) + } + default: + return errInvalidRootType + } + return nil +} + +// DeleteStorage implements state.Trie, deleting the specified storage slot from +// the trie. If the storage slot was not existent in the trie, no error will be +// returned. If the trie is corrupted, an error will be returned. +func (t *VerkleTrie) DeleteStorage(addr common.Address, key []byte) error { + var zero [32]byte + k := utils.StorageSlotKeyWithEvaluatedAddress(t.cache.Get(addr.Bytes()), key) + return t.root.Insert(k, zero[:], t.nodeResolver) +} + +// Hash returns the root hash of the tree. It does not write to the database and +// can be used even if the tree doesn't have one. +func (t *VerkleTrie) Hash() common.Hash { + return t.root.Commit().Bytes() +} + +// Commit writes all nodes to the tree's memory database. +func (t *VerkleTrie) Commit(_ bool) (common.Hash, *trienode.NodeSet, error) { + root, ok := t.root.(*verkle.InternalNode) + if !ok { + return common.Hash{}, nil, errors.New("unexpected root node type") + } + nodes, err := root.BatchSerialize() + if err != nil { + return common.Hash{}, nil, fmt.Errorf("serializing tree nodes: %s", err) + } + nodeset := trienode.NewNodeSet(common.Hash{}) + for _, node := range nodes { + // hash parameter is not used in pathdb + nodeset.AddNode(node.Path, trienode.New(common.Hash{}, node.SerializedBytes)) + } + // Serialize root commitment form + return t.Hash(), nodeset, nil +} + +// NodeIterator implements state.Trie, returning an iterator that returns +// nodes of the trie. Iteration starts at the key after the given start key. +// +// TODO(gballet, rjl493456442) implement it. +func (t *VerkleTrie) NodeIterator(startKey []byte) (NodeIterator, error) { + panic("not implemented") +} + +// Prove implements state.Trie, constructing a Merkle proof for key. The result +// contains all encoded nodes on the path to the value at key. The value itself +// is also included in the last node and can be retrieved by verifying the proof. +// +// If the trie does not contain a value for key, the returned proof contains all +// nodes of the longest existing prefix of the key (at least the root), ending +// with the node that proves the absence of the key. +// +// TODO(gballet, rjl493456442) implement it. +func (t *VerkleTrie) Prove(key []byte, proofDb ethdb.KeyValueWriter) error { + panic("not implemented") +} + +// Copy returns a deep-copied verkle tree. +func (t *VerkleTrie) Copy() *VerkleTrie { + return &VerkleTrie{ + root: t.root.Copy(), + db: t.db, + cache: t.cache, + reader: t.reader, + } +} + +// IsVerkle indicates if the trie is a Verkle trie. +func (t *VerkleTrie) IsVerkle() bool { + return true +} + +// ChunkedCode represents a sequence of 32-bytes chunks of code (31 bytes of which +// are actual code, and 1 byte is the pushdata offset). +type ChunkedCode []byte + +// Copy the values here so as to avoid an import cycle +const ( + PUSH1 = byte(0x60) + PUSH32 = byte(0x7f) +) + +// ChunkifyCode generates the chunked version of an array representing EVM bytecode +func ChunkifyCode(code []byte) ChunkedCode { + var ( + chunkOffset = 0 // offset in the chunk + chunkCount = len(code) / 31 + codeOffset = 0 // offset in the code + ) + if len(code)%31 != 0 { + chunkCount++ + } + chunks := make([]byte, chunkCount*32) + for i := 0; i < chunkCount; i++ { + // number of bytes to copy, 31 unless the end of the code has been reached. + end := 31 * (i + 1) + if len(code) < end { + end = len(code) + } + copy(chunks[i*32+1:], code[31*i:end]) // copy the code itself + + // chunk offset = taken from the last chunk. + if chunkOffset > 31 { + // skip offset calculation if push data covers the whole chunk + chunks[i*32] = 31 + chunkOffset = 1 + continue + } + chunks[32*i] = byte(chunkOffset) + chunkOffset = 0 + + // Check each instruction and update the offset it should be 0 unless + // a PUSH-N overflows. + for ; codeOffset < end; codeOffset++ { + if code[codeOffset] >= PUSH1 && code[codeOffset] <= PUSH32 { + codeOffset += int(code[codeOffset] - PUSH1 + 1) + if codeOffset+1 >= 31*(i+1) { + codeOffset++ + chunkOffset = codeOffset - 31*(i+1) + break + } + } + } + } + return chunks +} + +// UpdateContractCode implements state.Trie, writing the provided contract code +// into the trie. +func (t *VerkleTrie) UpdateContractCode(addr common.Address, codeHash common.Hash, code []byte) error { + var ( + chunks = ChunkifyCode(code) + values [][]byte + key []byte + err error + ) + for i, chunknr := 0, uint64(0); i < len(chunks); i, chunknr = i+32, chunknr+1 { + groupOffset := (chunknr + 128) % 256 + if groupOffset == 0 /* start of new group */ || chunknr == 0 /* first chunk in header group */ { + values = make([][]byte, verkle.NodeWidth) + key = utils.CodeChunkKeyWithEvaluatedAddress(t.cache.Get(addr.Bytes()), uint256.NewInt(chunknr)) + } + values[groupOffset] = chunks[i : i+32] + + // Reuse the calculated key to also update the code size. + if i == 0 { + cs := make([]byte, 32) + binary.LittleEndian.PutUint64(cs, uint64(len(code))) + values[utils.CodeSizeLeafKey] = cs + } + if groupOffset == 255 || len(chunks)-i <= 32 { + switch root := t.root.(type) { + case *verkle.InternalNode: + err = root.InsertValuesAtStem(key[:31], values, t.nodeResolver) + if err != nil { + return fmt.Errorf("UpdateContractCode (addr=%x) error: %w", addr[:], err) + } + default: + return errInvalidRootType + } + } + } + return nil +} + +func (t *VerkleTrie) ToDot() string { + return verkle.ToDot(t.root) +} + +func (t *VerkleTrie) nodeResolver(path []byte) ([]byte, error) { + return t.reader.node(path, common.Hash{}) +} diff --git a/trie/verkle_test.go b/trie/verkle_test.go new file mode 100644 index 0000000000..44fb7dc29e --- /dev/null +++ b/trie/verkle_test.go @@ -0,0 +1,97 @@ +// Copyright 2023 go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package trie + +import ( + "bytes" + "math/big" + "reflect" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/trie/triedb/pathdb" + "github.com/ethereum/go-ethereum/trie/utils" +) + +var ( + accounts = map[common.Address]*types.StateAccount{ + common.Address{1}: { + Nonce: 100, + Balance: big.NewInt(100), + CodeHash: common.Hash{0x1}.Bytes(), + }, + common.Address{2}: { + Nonce: 200, + Balance: big.NewInt(200), + CodeHash: common.Hash{0x2}.Bytes(), + }, + } + storages = map[common.Address]map[common.Hash][]byte{ + common.Address{1}: { + common.Hash{10}: []byte{10}, + common.Hash{11}: []byte{11}, + common.MaxHash: []byte{0xff}, + }, + common.Address{2}: { + common.Hash{20}: []byte{20}, + common.Hash{21}: []byte{21}, + common.MaxHash: []byte{0xff}, + }, + } +) + +func TestVerkleTreeReadWrite(t *testing.T) { + db := NewDatabase(rawdb.NewMemoryDatabase(), &Config{ + IsVerkle: true, + PathDB: pathdb.Defaults, + }) + defer db.Close() + + tr, _ := NewVerkleTrie(types.EmptyVerkleHash, db, utils.NewPointCache(100)) + + for addr, acct := range accounts { + if err := tr.UpdateAccount(addr, acct); err != nil { + t.Fatalf("Failed to update account, %v", err) + } + for key, val := range storages[addr] { + if err := tr.UpdateStorage(addr, key.Bytes(), val); err != nil { + t.Fatalf("Failed to update account, %v", err) + } + } + } + + for addr, acct := range accounts { + stored, err := tr.GetAccount(addr) + if err != nil { + t.Fatalf("Failed to get account, %v", err) + } + if !reflect.DeepEqual(stored, acct) { + t.Fatal("account is not matched") + } + for key, val := range storages[addr] { + stored, err := tr.GetStorage(addr, key.Bytes()) + if err != nil { + t.Fatalf("Failed to get storage, %v", err) + } + if !bytes.Equal(stored, val) { + t.Fatal("storage is not matched") + } + } + } +} From e803ef09ad360bb220e91b92d9564857f8c3a5c5 Mon Sep 17 00:00:00 2001 From: Sina Mahmoodi <1591639+s1na@users.noreply.github.com> Date: Tue, 14 Nov 2023 15:14:38 +0300 Subject: [PATCH 057/223] eth/tracers/js: fix isPush for push0 (#28520) Fixes so that `push0` opcode is correctly reported as `true` by the `IsPush` function --------- Co-authored-by: Martin Holst Swende --- core/asm/asm_test.go | 80 ++++++++++++++++++-------------------------- core/vm/opcodes.go | 2 +- 2 files changed, 33 insertions(+), 49 deletions(-) diff --git a/core/asm/asm_test.go b/core/asm/asm_test.go index 92b26b67a5..cd7520ec63 100644 --- a/core/asm/asm_test.go +++ b/core/asm/asm_test.go @@ -22,53 +22,37 @@ import ( "encoding/hex" ) -// Tests disassembling the instructions for valid evm code -func TestInstructionIteratorValid(t *testing.T) { - cnt := 0 - script, _ := hex.DecodeString("61000000") - - it := NewInstructionIterator(script) - for it.Next() { - cnt++ - } - - if err := it.Error(); err != nil { - t.Errorf("Expected 2, but encountered error %v instead.", err) - } - if cnt != 2 { - t.Errorf("Expected 2, but got %v instead.", cnt) - } -} - -// Tests disassembling the instructions for invalid evm code -func TestInstructionIteratorInvalid(t *testing.T) { - cnt := 0 - script, _ := hex.DecodeString("6100") - - it := NewInstructionIterator(script) - for it.Next() { - cnt++ - } - - if it.Error() == nil { - t.Errorf("Expected an error, but got %v instead.", cnt) - } -} - -// Tests disassembling the instructions for empty evm code -func TestInstructionIteratorEmpty(t *testing.T) { - cnt := 0 - script, _ := hex.DecodeString("") - - it := NewInstructionIterator(script) - for it.Next() { - cnt++ - } - - if err := it.Error(); err != nil { - t.Errorf("Expected 0, but encountered error %v instead.", err) - } - if cnt != 0 { - t.Errorf("Expected 0, but got %v instead.", cnt) +// Tests disassembling instructions +func TestInstructionIterator(t *testing.T) { + for i, tc := range []struct { + want int + code string + wantErr string + }{ + {2, "61000000", ""}, // valid code + {0, "6100", "incomplete push instruction at 0"}, // invalid code + {2, "5900", ""}, // push0 + {0, "", ""}, // empty + + } { + var ( + have int + code, _ = hex.DecodeString(tc.code) + it = NewInstructionIterator(code) + ) + for it.Next() { + have++ + } + var haveErr = "" + if it.Error() != nil { + haveErr = it.Error().Error() + } + if haveErr != tc.wantErr { + t.Errorf("test %d: encountered error: %q want %q", i, haveErr, tc.wantErr) + continue + } + if have != tc.want { + t.Errorf("wrong instruction count, have %d want %d", have, tc.want) + } } } diff --git a/core/vm/opcodes.go b/core/vm/opcodes.go index c7a3a163be..2b9231fe1a 100644 --- a/core/vm/opcodes.go +++ b/core/vm/opcodes.go @@ -25,7 +25,7 @@ type OpCode byte // IsPush specifies if an opcode is a PUSH opcode. func (op OpCode) IsPush() bool { - return PUSH1 <= op && op <= PUSH32 + return PUSH0 <= op && op <= PUSH32 } // 0x0 range - arithmetic ops. From 24d46224c16e16ad0421fa2290a4489b1417d5f9 Mon Sep 17 00:00:00 2001 From: VM <112189277+sysvm@users.noreply.github.com> Date: Tue, 14 Nov 2023 21:27:07 +0800 Subject: [PATCH 058/223] trie: spelling - fix comments in hasher (#28507) Co-authored-by: VM --- trie/hasher.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/trie/hasher.go b/trie/hasher.go index e594d6d6b2..1e063d8020 100644 --- a/trie/hasher.go +++ b/trie/hasher.go @@ -84,20 +84,19 @@ func (h *hasher) hash(n node, force bool) (hashed node, cached node) { } return hashed, cached default: - // Value and hash nodes don't have children so they're left as were + // Value and hash nodes don't have children, so they're left as were return n, n } } // hashShortNodeChildren collapses the short node. The returned collapsed node // holds a live reference to the Key, and must not be modified. -// The cached func (h *hasher) hashShortNodeChildren(n *shortNode) (collapsed, cached *shortNode) { // Hash the short node's child, caching the newly hashed subtree collapsed, cached = n.copy(), n.copy() // Previously, we did copy this one. We don't seem to need to actually // do that, since we don't overwrite/reuse keys - //cached.Key = common.CopyBytes(n.Key) + // cached.Key = common.CopyBytes(n.Key) collapsed.Key = hexToCompact(n.Key) // Unless the child is a valuenode or hashnode, hash it switch n.Val.(type) { @@ -153,7 +152,7 @@ func (h *hasher) shortnodeToHash(n *shortNode, force bool) node { return h.hashData(enc) } -// shortnodeToHash is used to creates a hashNode from a set of hashNodes, (which +// fullnodeToHash is used to create a hashNode from a fullNode, (which // may contain nil values) func (h *hasher) fullnodeToHash(n *fullNode, force bool) node { n.encode(h.encbuf) @@ -203,7 +202,7 @@ func (h *hasher) proofHash(original node) (collapsed, hashed node) { fn, _ := h.hashFullNodeChildren(n) return fn, h.fullnodeToHash(fn, false) default: - // Value and hash nodes don't have children so they're left as were + // Value and hash nodes don't have children, so they're left as were return n, n } } From 2391fbc676d7464bd42e248155558a2bcd6ecf64 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Tue, 14 Nov 2023 14:34:29 +0100 Subject: [PATCH 059/223] tests/fuzzers: move fuzzers into native packages (#28467) This PR moves our fuzzers from tests/fuzzers into whatever their respective 'native' package is. The historical reason why they were placed in an external location, is that when they were based on go-fuzz, they could not be "hidden" via the _test.go prefix. So in order to shove them away from the go-ethereum "production code", they were put aside. But now we've rewritten them to be based on golang testing, and thus can be brought back. I've left (in tests/) the ones that are not production (bls128381), require non-standard imports (secp requires btcec, bn256 requires gnark/google/cloudflare deps). This PR also adds a fuzzer for precompiled contracts, because why not. This PR utilizes a newly rewritten replacement for go-118-fuzz-build, namely gofuzz-shim, which utilises the inputs from the fuzzing engine better. --- .../abi/abifuzzer_test.go | 113 ++++---- .../keystore/keystore_fuzzing_test.go | 17 +- common/bitutil/compress_test.go | 60 ++++- core/types/rlp_fuzzer_test.go | 147 +++++++++++ .../vm/contracts_fuzz_test.go | 29 +- .../vm/runtime/runtime_fuzz_test.go | 6 +- .../protocols/snap/handler_fuzzing_test.go | 91 ++++--- go.mod | 2 +- go.sum | 4 +- oss-fuzz.sh | 212 ++++++++++----- tests/fuzzers/bitutil/compress_test.go | 68 ----- tests/fuzzers/keystore/keystore-fuzzer.go | 37 --- tests/fuzzers/rlp/corpus/block_with_uncle.rlp | Bin 1120 -> 0 bytes tests/fuzzers/rlp/corpus/r.bin | 1 - tests/fuzzers/rlp/corpus/transaction.rlp | 2 - tests/fuzzers/rlp/rlp_fuzzer.go | 143 ---------- tests/fuzzers/secp256k1/secp_test.go | 3 +- tests/fuzzers/snap/fuzz_test.go | 47 ---- tests/fuzzers/stacktrie/trie_fuzzer.go | 248 ------------------ tests/fuzzers/stacktrie/trie_test.go | 25 -- tests/fuzzers/trie/trie-fuzzer.go | 201 -------------- tests/fuzzers/trie/trie_test.go | 25 -- trie/stacktrie_fuzzer_test.go | 155 +++++++++++ trie/trie_test.go | 64 +++-- 24 files changed, 704 insertions(+), 996 deletions(-) rename {tests/fuzzers => accounts}/abi/abifuzzer_test.go (65%) rename tests/fuzzers/keystore/keystore_test.go => accounts/keystore/keystore_fuzzing_test.go (72%) create mode 100644 core/types/rlp_fuzzer_test.go rename tests/fuzzers/rlp/rlp_test.go => core/vm/contracts_fuzz_test.go (57%) rename tests/fuzzers/runtime/runtime_test.go => core/vm/runtime/runtime_fuzz_test.go (87%) rename tests/fuzzers/snap/fuzz_handler.go => eth/protocols/snap/handler_fuzzing_test.go (77%) delete mode 100644 tests/fuzzers/bitutil/compress_test.go delete mode 100644 tests/fuzzers/keystore/keystore-fuzzer.go delete mode 100644 tests/fuzzers/rlp/corpus/block_with_uncle.rlp delete mode 100644 tests/fuzzers/rlp/corpus/r.bin delete mode 100644 tests/fuzzers/rlp/corpus/transaction.rlp delete mode 100644 tests/fuzzers/rlp/rlp_fuzzer.go delete mode 100644 tests/fuzzers/snap/fuzz_test.go delete mode 100644 tests/fuzzers/stacktrie/trie_fuzzer.go delete mode 100644 tests/fuzzers/stacktrie/trie_test.go delete mode 100644 tests/fuzzers/trie/trie-fuzzer.go delete mode 100644 tests/fuzzers/trie/trie_test.go create mode 100644 trie/stacktrie_fuzzer_test.go diff --git a/tests/fuzzers/abi/abifuzzer_test.go b/accounts/abi/abifuzzer_test.go similarity index 65% rename from tests/fuzzers/abi/abifuzzer_test.go rename to accounts/abi/abifuzzer_test.go index a206beaf91..4b67947815 100644 --- a/tests/fuzzers/abi/abifuzzer_test.go +++ b/accounts/abi/abifuzzer_test.go @@ -22,33 +22,31 @@ import ( "strings" "testing" - "github.com/ethereum/go-ethereum/accounts/abi" fuzz "github.com/google/gofuzz" ) // TestReplicate can be used to replicate crashers from the fuzzing tests. // Just replace testString with the data in .quoted func TestReplicate(t *testing.T) { - testString := "\x20\x20\x20\x20\x20\x20\x20\x20\x80\x00\x00\x00\x20\x20\x20\x20\x00" - data := []byte(testString) - fuzzAbi(data) + //t.Skip("Test only useful for reproducing issues") + fuzzAbi([]byte("\x20\x20\x20\x20\x20\x20\x20\x20\x80\x00\x00\x00\x20\x20\x20\x20\x00")) + //fuzzAbi([]byte("asdfasdfkadsf;lasdf;lasd;lfk")) } -func Fuzz(f *testing.F) { +// FuzzABI is the main entrypoint for fuzzing +func FuzzABI(f *testing.F) { f.Fuzz(func(t *testing.T, data []byte) { fuzzAbi(data) }) } var ( - names = []string{"_name", "name", "NAME", "name_", "__", "_name_", "n"} - stateMut = []string{"", "pure", "view", "payable"} - stateMutabilites = []*string{&stateMut[0], &stateMut[1], &stateMut[2], &stateMut[3]} - pays = []string{"", "true", "false"} - payables = []*string{&pays[0], &pays[1]} - vNames = []string{"a", "b", "c", "d", "e", "f", "g"} - varNames = append(vNames, names...) - varTypes = []string{"bool", "address", "bytes", "string", + names = []string{"_name", "name", "NAME", "name_", "__", "_name_", "n"} + stateMut = []string{"pure", "view", "payable"} + pays = []string{"true", "false"} + vNames = []string{"a", "b", "c", "d", "e", "f", "g"} + varNames = append(vNames, names...) + varTypes = []string{"bool", "address", "bytes", "string", "uint8", "int8", "uint8", "int8", "uint16", "int16", "uint24", "int24", "uint32", "int32", "uint40", "int40", "uint48", "int48", "uint56", "int56", "uint64", "int64", "uint72", "int72", "uint80", "int80", "uint88", "int88", "uint96", "int96", @@ -62,7 +60,7 @@ var ( "bytes32", "bytes"} ) -func unpackPack(abi abi.ABI, method string, input []byte) ([]interface{}, bool) { +func unpackPack(abi ABI, method string, input []byte) ([]interface{}, bool) { if out, err := abi.Unpack(method, input); err == nil { _, err := abi.Pack(method, out...) if err != nil { @@ -78,7 +76,7 @@ func unpackPack(abi abi.ABI, method string, input []byte) ([]interface{}, bool) return nil, false } -func packUnpack(abi abi.ABI, method string, input *[]interface{}) bool { +func packUnpack(abi ABI, method string, input *[]interface{}) bool { if packed, err := abi.Pack(method, input); err == nil { outptr := reflect.New(reflect.TypeOf(input)) err := abi.UnpackIntoInterface(outptr.Interface(), method, packed) @@ -94,12 +92,12 @@ func packUnpack(abi abi.ABI, method string, input *[]interface{}) bool { return false } -type args struct { +type arg struct { name string typ string } -func createABI(name string, stateMutability, payable *string, inputs []args) (abi.ABI, error) { +func createABI(name string, stateMutability, payable *string, inputs []arg) (ABI, error) { sig := fmt.Sprintf(`[{ "type" : "function", "name" : "%v" `, name) if stateMutability != nil { sig += fmt.Sprintf(`, "stateMutability": "%v" `, *stateMutability) @@ -126,56 +124,55 @@ func createABI(name string, stateMutability, payable *string, inputs []args) (ab sig += "} ]" } sig += `}]` - - return abi.JSON(strings.NewReader(sig)) + //fmt.Printf("sig: %s\n", sig) + return JSON(strings.NewReader(sig)) } -func fuzzAbi(input []byte) int { - good := false - fuzzer := fuzz.NewFromGoFuzz(input) - - name := names[getUInt(fuzzer)%len(names)] - stateM := stateMutabilites[getUInt(fuzzer)%len(stateMutabilites)] - payable := payables[getUInt(fuzzer)%len(payables)] - maxLen := 5 - for k := 1; k < maxLen; k++ { - var arg []args - for i := k; i > 0; i-- { - argName := varNames[i] - argTyp := varTypes[getUInt(fuzzer)%len(varTypes)] - if getUInt(fuzzer)%10 == 0 { - argTyp += "[]" - } else if getUInt(fuzzer)%10 == 0 { - arrayArgs := getUInt(fuzzer)%30 + 1 - argTyp += fmt.Sprintf("[%d]", arrayArgs) - } - arg = append(arg, args{ - name: argName, - typ: argTyp, - }) +func fuzzAbi(input []byte) { + var ( + fuzzer = fuzz.NewFromGoFuzz(input) + name = oneOf(fuzzer, names) + stateM = oneOfOrNil(fuzzer, stateMut) + payable = oneOfOrNil(fuzzer, pays) + arguments []arg + ) + for i := 0; i < upTo(fuzzer, 10); i++ { + argName := oneOf(fuzzer, varNames) + argTyp := oneOf(fuzzer, varTypes) + switch upTo(fuzzer, 10) { + case 0: // 10% chance to make it a slice + argTyp += "[]" + case 1: // 10% chance to make it an array + argTyp += fmt.Sprintf("[%d]", 1+upTo(fuzzer, 30)) + default: } - abi, err := createABI(name, stateM, payable, arg) - if err != nil { - continue - } - structs, b := unpackPack(abi, name, input) - c := packUnpack(abi, name, &structs) - good = good || b || c + arguments = append(arguments, arg{name: argName, typ: argTyp}) } - if good { - return 1 + abi, err := createABI(name, stateM, payable, arguments) + if err != nil { + //fmt.Printf("err: %v\n", err) + panic(err) } - return 0 + structs, _ := unpackPack(abi, name, input) + _ = packUnpack(abi, name, &structs) } -func getUInt(fuzzer *fuzz.Fuzzer) int { +func upTo(fuzzer *fuzz.Fuzzer, max int) int { var i int fuzzer.Fuzz(&i) if i < 0 { - i = -i - if i < 0 { - return 0 - } + return (-1 - i) % max + } + return i % max +} + +func oneOf(fuzzer *fuzz.Fuzzer, options []string) string { + return options[upTo(fuzzer, len(options))] +} + +func oneOfOrNil(fuzzer *fuzz.Fuzzer, options []string) *string { + if i := upTo(fuzzer, len(options)+1); i < len(options) { + return &options[i] } - return i + return nil } diff --git a/tests/fuzzers/keystore/keystore_test.go b/accounts/keystore/keystore_fuzzing_test.go similarity index 72% rename from tests/fuzzers/keystore/keystore_test.go rename to accounts/keystore/keystore_fuzzing_test.go index 167ff6c471..793b46336a 100644 --- a/tests/fuzzers/keystore/keystore_test.go +++ b/accounts/keystore/keystore_fuzzing_test.go @@ -16,10 +16,19 @@ package keystore -import "testing" +import ( + "testing" +) -func Fuzz(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzz(data) +func FuzzPassword(f *testing.F) { + f.Fuzz(func(t *testing.T, password string) { + ks := NewKeyStore(t.TempDir(), LightScryptN, LightScryptP) + a, err := ks.NewAccount(password) + if err != nil { + t.Fatal(err) + } + if err := ks.Unlock(a, password); err != nil { + t.Fatal(err) + } }) } diff --git a/common/bitutil/compress_test.go b/common/bitutil/compress_test.go index 13a13011dc..c6f6fe8bcf 100644 --- a/common/bitutil/compress_test.go +++ b/common/bitutil/compress_test.go @@ -18,6 +18,7 @@ package bitutil import ( "bytes" + "fmt" "math/rand" "testing" @@ -48,19 +49,23 @@ func TestEncodingCycle(t *testing.T) { "0xdf7070533534333636313639343638373532313536346c1bc333393438373130707063363430353639343638373532313536346c1bc333393438336336346c65fe", } for i, tt := range tests { - data := hexutil.MustDecode(tt) - - proc, err := bitsetDecodeBytes(bitsetEncodeBytes(data), len(data)) - if err != nil { - t.Errorf("test %d: failed to decompress compressed data: %v", i, err) - continue - } - if !bytes.Equal(data, proc) { - t.Errorf("test %d: compress/decompress mismatch: have %x, want %x", i, proc, data) + if err := testEncodingCycle(hexutil.MustDecode(tt)); err != nil { + t.Errorf("test %d: %v", i, err) } } } +func testEncodingCycle(data []byte) error { + proc, err := bitsetDecodeBytes(bitsetEncodeBytes(data), len(data)) + if err != nil { + return fmt.Errorf("failed to decompress compressed data: %v", err) + } + if !bytes.Equal(data, proc) { + return fmt.Errorf("compress/decompress mismatch: have %x, want %x", proc, data) + } + return nil +} + // Tests that data bitset decoding and rencoding works and is bijective. func TestDecodingCycle(t *testing.T) { tests := []struct { @@ -179,3 +184,40 @@ func benchmarkEncoding(b *testing.B, bytes int, fill float64) { bitsetDecodeBytes(bitsetEncodeBytes(data), len(data)) } } + +func FuzzEncoder(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + if err := testEncodingCycle(data); err != nil { + t.Fatal(err) + } + }) +} +func FuzzDecoder(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzzDecode(data) + }) +} + +// fuzzDecode implements a go-fuzz fuzzer method to test the bit decoding and +// reencoding algorithm. +func fuzzDecode(data []byte) { + blob, err := DecompressBytes(data, 1024) + if err != nil { + return + } + // re-compress it (it's OK if the re-compressed differs from the + // original - the first input may not have been compressed at all) + comp := CompressBytes(blob) + if len(comp) > len(blob) { + // After compression, it must be smaller or equal + panic("bad compression") + } + // But decompressing it once again should work + decomp, err := DecompressBytes(data, 1024) + if err != nil { + panic(err) + } + if !bytes.Equal(decomp, blob) { + panic("content mismatch") + } +} diff --git a/core/types/rlp_fuzzer_test.go b/core/types/rlp_fuzzer_test.go new file mode 100644 index 0000000000..a3b9f72436 --- /dev/null +++ b/core/types/rlp_fuzzer_test.go @@ -0,0 +1,147 @@ +// Copyright 2019 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package types + +import ( + "bytes" + "fmt" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/rlp" + "github.com/holiman/uint256" +) + +func decodeEncode(input []byte, val interface{}) error { + if err := rlp.DecodeBytes(input, val); err != nil { + // not valid rlp, nothing to do + return nil + } + // If it _were_ valid rlp, we can encode it again + output, err := rlp.EncodeToBytes(val) + if err != nil { + return err + } + if !bytes.Equal(input, output) { + return fmt.Errorf("encode-decode is not equal, \ninput : %x\noutput: %x", input, output) + } + return nil +} + +func FuzzRLP(f *testing.F) { + f.Fuzz(fuzzRlp) +} + +func fuzzRlp(t *testing.T, input []byte) { + if len(input) == 0 || len(input) > 500*1024 { + return + } + rlp.Split(input) + if elems, _, err := rlp.SplitList(input); err == nil { + rlp.CountValues(elems) + } + rlp.NewStream(bytes.NewReader(input), 0).Decode(new(interface{})) + if err := decodeEncode(input, new(interface{})); err != nil { + t.Fatal(err) + } + { + var v struct { + Int uint + String string + Bytes []byte + } + if err := decodeEncode(input, &v); err != nil { + t.Fatal(err) + } + } + { + type Types struct { + Bool bool + Raw rlp.RawValue + Slice []*Types + Iface []interface{} + } + var v Types + if err := decodeEncode(input, &v); err != nil { + t.Fatal(err) + } + } + { + type AllTypes struct { + Int uint + String string + Bytes []byte + Bool bool + Raw rlp.RawValue + Slice []*AllTypes + Array [3]*AllTypes + Iface []interface{} + } + var v AllTypes + if err := decodeEncode(input, &v); err != nil { + t.Fatal(err) + } + } + { + if err := decodeEncode(input, [10]byte{}); err != nil { + t.Fatal(err) + } + } + { + var v struct { + Byte [10]byte + Rool [10]bool + } + if err := decodeEncode(input, &v); err != nil { + t.Fatal(err) + } + } + { + var h Header + if err := decodeEncode(input, &h); err != nil { + t.Fatal(err) + } + var b Block + if err := decodeEncode(input, &b); err != nil { + t.Fatal(err) + } + var tx Transaction + if err := decodeEncode(input, &tx); err != nil { + t.Fatal(err) + } + var txs Transactions + if err := decodeEncode(input, &txs); err != nil { + t.Fatal(err) + } + var rs Receipts + if err := decodeEncode(input, &rs); err != nil { + t.Fatal(err) + } + } + { + var v struct { + AnIntPtr *big.Int + AnInt big.Int + AnU256Ptr *uint256.Int + AnU256 uint256.Int + NotAnU256 [4]uint64 + } + if err := decodeEncode(input, &v); err != nil { + t.Fatal(err) + } + } +} diff --git a/tests/fuzzers/rlp/rlp_test.go b/core/vm/contracts_fuzz_test.go similarity index 57% rename from tests/fuzzers/rlp/rlp_test.go rename to core/vm/contracts_fuzz_test.go index 377b3961bf..87c1fff7cc 100644 --- a/tests/fuzzers/rlp/rlp_test.go +++ b/core/vm/contracts_fuzz_test.go @@ -14,12 +14,31 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package rlp +package vm -import "testing" +import ( + "testing" -func Fuzz(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzz(data) + "github.com/ethereum/go-ethereum/common" +) + +func FuzzPrecompiledContracts(f *testing.F) { + // Create list of addresses + var addrs []common.Address + for k := range allPrecompiles { + addrs = append(addrs, k) + } + f.Fuzz(func(t *testing.T, addr uint8, input []byte) { + a := addrs[int(addr)%len(addrs)] + p := allPrecompiles[a] + gas := p.RequiredGas(input) + if gas > 10_000_000 { + return + } + inWant := string(input) + RunPrecompiledContract(p, input, gas) + if inHave := string(input); inWant != inHave { + t.Errorf("Precompiled %v modified input data", a) + } }) } diff --git a/tests/fuzzers/runtime/runtime_test.go b/core/vm/runtime/runtime_fuzz_test.go similarity index 87% rename from tests/fuzzers/runtime/runtime_test.go rename to core/vm/runtime/runtime_fuzz_test.go index 2d73a56ca1..8a4d31d819 100644 --- a/tests/fuzzers/runtime/runtime_test.go +++ b/core/vm/runtime/runtime_fuzz_test.go @@ -18,13 +18,11 @@ package runtime import ( "testing" - - "github.com/ethereum/go-ethereum/core/vm/runtime" ) -func Fuzz(f *testing.F) { +func FuzzVmRuntime(f *testing.F) { f.Fuzz(func(t *testing.T, code, input []byte) { - runtime.Execute(code, input, &runtime.Config{ + Execute(code, input, &Config{ GasLimit: 12000000, }) }) diff --git a/tests/fuzzers/snap/fuzz_handler.go b/eth/protocols/snap/handler_fuzzing_test.go similarity index 77% rename from tests/fuzzers/snap/fuzz_handler.go rename to eth/protocols/snap/handler_fuzzing_test.go index 20521bb92a..daed7ed44a 100644 --- a/tests/fuzzers/snap/fuzz_handler.go +++ b/eth/protocols/snap/handler_fuzzing_test.go @@ -21,6 +21,7 @@ import ( "encoding/binary" "fmt" "math/big" + "testing" "time" "github.com/ethereum/go-ethereum/common" @@ -28,7 +29,6 @@ import ( "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/eth/protocols/snap" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/params" @@ -36,6 +36,56 @@ import ( fuzz "github.com/google/gofuzz" ) +func FuzzARange(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &GetAccountRangePacket{}, GetAccountRangeMsg) + }) +} + +func FuzzSRange(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &GetStorageRangesPacket{}, GetStorageRangesMsg) + }) +} + +func FuzzByteCodes(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &GetByteCodesPacket{}, GetByteCodesMsg) + }) +} + +func FuzzTrieNodes(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + doFuzz(data, &GetTrieNodesPacket{}, GetTrieNodesMsg) + }) +} + +func doFuzz(input []byte, obj interface{}, code int) { + bc := getChain() + defer bc.Stop() + fuzz.NewFromGoFuzz(input).Fuzz(obj) + var data []byte + switch p := obj.(type) { + case *GetTrieNodesPacket: + p.Root = trieRoot + data, _ = rlp.EncodeToBytes(obj) + default: + data, _ = rlp.EncodeToBytes(obj) + } + cli := &dummyRW{ + code: uint64(code), + data: data, + } + peer := NewFakePeer(65, "gazonk01", cli) + err := HandleMessage(&dummyBackend{bc}, peer) + switch { + case err == nil && cli.writeCount != 1: + panic(fmt.Sprintf("Expected 1 response, got %d", cli.writeCount)) + case err != nil && cli.writeCount != 0: + panic(fmt.Sprintf("Expected 0 response, got %d", cli.writeCount)) + } +} + var trieRoot common.Hash func getChain() *core.BlockChain { @@ -86,10 +136,10 @@ type dummyBackend struct { chain *core.BlockChain } -func (d *dummyBackend) Chain() *core.BlockChain { return d.chain } -func (d *dummyBackend) RunPeer(*snap.Peer, snap.Handler) error { return nil } -func (d *dummyBackend) PeerInfo(enode.ID) interface{} { return "Foo" } -func (d *dummyBackend) Handle(*snap.Peer, snap.Packet) error { return nil } +func (d *dummyBackend) Chain() *core.BlockChain { return d.chain } +func (d *dummyBackend) RunPeer(*Peer, Handler) error { return nil } +func (d *dummyBackend) PeerInfo(enode.ID) interface{} { return "Foo" } +func (d *dummyBackend) Handle(*Peer, Packet) error { return nil } type dummyRW struct { code uint64 @@ -110,34 +160,3 @@ func (d *dummyRW) WriteMsg(msg p2p.Msg) error { d.writeCount++ return nil } - -func doFuzz(input []byte, obj interface{}, code int) int { - if len(input) > 1024*4 { - return -1 - } - bc := getChain() - defer bc.Stop() - backend := &dummyBackend{bc} - fuzz.NewFromGoFuzz(input).Fuzz(obj) - var data []byte - switch p := obj.(type) { - case *snap.GetTrieNodesPacket: - p.Root = trieRoot - data, _ = rlp.EncodeToBytes(obj) - default: - data, _ = rlp.EncodeToBytes(obj) - } - cli := &dummyRW{ - code: uint64(code), - data: data, - } - peer := snap.NewFakePeer(65, "gazonk01", cli) - err := snap.HandleMessage(backend, peer) - switch { - case err == nil && cli.writeCount != 1: - panic(fmt.Sprintf("Expected 1 response, got %d", cli.writeCount)) - case err != nil && cli.writeCount != 0: - panic(fmt.Sprintf("Expected 0 response, got %d", cli.writeCount)) - } - return 1 -} diff --git a/go.mod b/go.mod index 4d7ddcfc73..32cfe26b14 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/golang-jwt/jwt/v4 v4.5.0 github.com/golang/protobuf v1.5.3 github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb - github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa + github.com/google/gofuzz v1.2.0 github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.4.2 github.com/graph-gophers/graphql-go v1.3.0 diff --git a/go.sum b/go.sum index 765a9da86e..e62d7d36ab 100644 --- a/go.sum +++ b/go.sum @@ -305,8 +305,8 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= diff --git a/oss-fuzz.sh b/oss-fuzz.sh index 55660d08e3..8978de70dd 100644 --- a/oss-fuzz.sh +++ b/oss-fuzz.sh @@ -48,39 +48,27 @@ DOG cd - } -function build_native_go_fuzzer() { - fuzzer=$1 - function=$2 - path=$3 - tags="-tags gofuzz" - - if [[ $SANITIZER == *coverage* ]]; then - coverbuild $path $function $fuzzer $coverpkg - else - go-118-fuzz-build $tags -o $fuzzer.a -func $function $path - $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -o $OUT/$fuzzer - fi -} - function compile_fuzzer() { - path=$GOPATH/src/github.com/ethereum/go-ethereum/$1 + package=$1 function=$2 fuzzer=$3 + file=$4 + + path=$GOPATH/src/$package echo "Building $fuzzer" cd $path # Install build dependencies - go install github.com/AdamKorcz/go-118-fuzz-build@latest - go get github.com/AdamKorcz/go-118-fuzz-build/testing + go mod tidy + go get github.com/holiman/gofuzz-shim/testing - # Test if file contains a line with "func $function(" and "testing.F". - if [ $(grep -r "func $function(" $path | grep "testing.F" | wc -l) -eq 1 ] - then - build_native_go_fuzzer $fuzzer $function $path - else - echo "Could not find the function: func ${function}(f *testing.F)" - fi + if [[ $SANITIZER == *coverage* ]]; then + coverbuild $path $function $fuzzer $coverpkg + else + gofuzz-shim --func $function --package $package -f $file -o $fuzzer.a + $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -o $OUT/$fuzzer + fi ## Check if there exists a seed corpus file corpusfile="${path}/testdata/${fuzzer}_seed_corpus.zip" @@ -92,42 +80,140 @@ function compile_fuzzer() { cd - } -compile_fuzzer tests/fuzzers/bitutil FuzzEncoder fuzzBitutilEncoder -compile_fuzzer tests/fuzzers/bitutil FuzzDecoder fuzzBitutilDecoder -compile_fuzzer tests/fuzzers/bn256 FuzzAdd fuzzBn256Add -compile_fuzzer tests/fuzzers/bn256 FuzzMul fuzzBn256Mul -compile_fuzzer tests/fuzzers/bn256 FuzzPair fuzzBn256Pair -compile_fuzzer tests/fuzzers/runtime Fuzz fuzzVmRuntime -compile_fuzzer tests/fuzzers/keystore Fuzz fuzzKeystore -compile_fuzzer tests/fuzzers/txfetcher Fuzz fuzzTxfetcher -compile_fuzzer tests/fuzzers/rlp Fuzz fuzzRlp -compile_fuzzer tests/fuzzers/trie Fuzz fuzzTrie -compile_fuzzer tests/fuzzers/stacktrie Fuzz fuzzStackTrie -compile_fuzzer tests/fuzzers/difficulty Fuzz fuzzDifficulty -compile_fuzzer tests/fuzzers/abi Fuzz fuzzAbi -compile_fuzzer tests/fuzzers/les Fuzz fuzzLes -compile_fuzzer tests/fuzzers/secp256k1 Fuzz fuzzSecp256k1 -compile_fuzzer tests/fuzzers/vflux FuzzClientPool fuzzClientPool - -compile_fuzzer tests/fuzzers/bls12381 FuzzG1Add fuzz_g1_add -compile_fuzzer tests/fuzzers/bls12381 FuzzG1Mul fuzz_g1_mul -compile_fuzzer tests/fuzzers/bls12381 FuzzG1MultiExp fuzz_g1_multiexp -compile_fuzzer tests/fuzzers/bls12381 FuzzG2Add fuzz_g2_add -compile_fuzzer tests/fuzzers/bls12381 FuzzG2Mul fuzz_g2_mul -compile_fuzzer tests/fuzzers/bls12381 FuzzG2MultiExp fuzz_g2_multiexp -compile_fuzzer tests/fuzzers/bls12381 FuzzPairing fuzz_pairing -compile_fuzzer tests/fuzzers/bls12381 FuzzMapG1 fuzz_map_g1 -compile_fuzzer tests/fuzzers/bls12381 FuzzMapG2 fuzz_map_g2 - -compile_fuzzer tests/fuzzers/bls12381 FuzzCrossG1Add fuzz_cross_g1_add -compile_fuzzer tests/fuzzers/bls12381 FuzzCrossG1MultiExp fuzz_cross_g1_multiexp -compile_fuzzer tests/fuzzers/bls12381 FuzzCrossG2Add fuzz_cross_g2_add -compile_fuzzer tests/fuzzers/bls12381 FuzzCrossPairing fuzz_cross_pairing - -compile_fuzzer tests/fuzzers/snap FuzzARange fuzz_account_range -compile_fuzzer tests/fuzzers/snap FuzzSRange fuzz_storage_range -compile_fuzzer tests/fuzzers/snap FuzzByteCodes fuzz_byte_codes -compile_fuzzer tests/fuzzers/snap FuzzTrieNodes fuzz_trie_nodes - -#TODO: move this to tests/fuzzers, if possible -compile_fuzzer crypto/blake2b Fuzz fuzzBlake2b +go install github.com/holiman/gofuzz-shim@latest +repo=$GOPATH/src/github.com/ethereum/go-ethereum +compile_fuzzer github.com/ethereum/go-ethereum/accounts/abi \ + FuzzABI fuzzAbi \ + $repo/accounts/abi/abifuzzer_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/common/bitutil \ + FuzzEncoder fuzzBitutilEncoder \ + $repo/common/bitutil/compress_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/common/bitutil \ + FuzzDecoder fuzzBitutilDecoder \ + $repo/common/bitutil/compress_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/core/vm/runtime \ + FuzzVmRuntime fuzzVmRuntime\ + $repo/core/vm/runtime/runtime_fuzz_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/core/vm \ + FuzzPrecompiledContracts fuzzPrecompiledContracts\ + $repo/core/vm/contracts_fuzz_test.go,$repo/core/vm/contracts_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/core/types \ + FuzzRLP fuzzRlp \ + $repo/core/types/rlp_fuzzer_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/crypto/blake2b \ + Fuzz fuzzBlake2b \ + $repo/crypto/blake2b/blake2b_f_fuzz_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/accounts/keystore \ + FuzzPassword fuzzKeystore \ + $repo/accounts/keystore/keystore_fuzzing_test.go + +pkg=$repo/trie/ +compile_fuzzer github.com/ethereum/go-ethereum/trie \ + FuzzTrie fuzzTrie \ + $pkg/trie_test.go,$pkg/database_test.go,$pkg/tracer_test.go,$pkg/proof_test.go,$pkg/iterator_test.go,$pkg/sync_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/trie \ + FuzzStackTrie fuzzStackTrie \ + $pkg/stacktrie_fuzzer_test.go,$pkg/iterator_test.go,$pkg/trie_test.go,$pkg/database_test.go,$pkg/tracer_test.go,$pkg/proof_test.go,$pkg/sync_test.go + +#compile_fuzzer tests/fuzzers/snap FuzzARange fuzz_account_range +compile_fuzzer github.com/ethereum/go-ethereum/eth/protocols/snap \ + FuzzARange fuzz_account_range \ + $repo/eth/protocols/snap/handler_fuzzing_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/eth/protocols/snap \ + FuzzSRange fuzz_storage_range \ + $repo/eth/protocols/snap/handler_fuzzing_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/eth/protocols/snap \ + FuzzByteCodes fuzz_byte_codes \ + $repo/eth/protocols/snap/handler_fuzzing_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/eth/protocols/snap \ + FuzzTrieNodes fuzz_trie_nodes\ + $repo/eth/protocols/snap/handler_fuzzing_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bn256 \ + FuzzAdd fuzzBn256Add\ + $repo/tests/fuzzers/bn256/bn256_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bn256 \ + FuzzMul fuzzBn256Mul \ + $repo/tests/fuzzers/bn256/bn256_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bn256 \ + FuzzPair fuzzBn256Pair \ + $repo/tests/fuzzers/bn256/bn256_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/txfetcher \ + Fuzz fuzzTxfetcher \ + $repo/tests/fuzzers/txfetcher/txfetcher_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzG1Add fuzz_g1_add\ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzG1Mul fuzz_g1_mul\ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzG1MultiExp fuzz_g1_multiexp \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzG2Add fuzz_g2_add \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzG2Mul fuzz_g2_mul\ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzG2MultiExp fuzz_g2_multiexp \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzPairing fuzz_pairing \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzMapG1 fuzz_map_g1\ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzMapG2 fuzz_map_g2 \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzCrossG1Add fuzz_cross_g1_add \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzCrossG1MultiExp fuzz_cross_g1_multiexp \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzCrossG2Add fuzz_cross_g2_add \ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/bls12381 \ + FuzzCrossPairing fuzz_cross_pairing\ + $repo/tests/fuzzers/bls12381/bls12381_test.go + +compile_fuzzer github.com/ethereum/go-ethereum/tests/fuzzers/secp256k1 \ + Fuzz fuzzSecp256k1\ + $repo/tests/fuzzers/secp256k1/secp_test.go + + +#compile_fuzzer tests/fuzzers/vflux FuzzClientPool fuzzClientPool +#compile_fuzzer tests/fuzzers/difficulty Fuzz fuzzDifficulty +#compile_fuzzer tests/fuzzers/les Fuzz fuzzLes + diff --git a/tests/fuzzers/bitutil/compress_test.go b/tests/fuzzers/bitutil/compress_test.go deleted file mode 100644 index ed9d27eb30..0000000000 --- a/tests/fuzzers/bitutil/compress_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2023 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package bitutil - -import ( - "bytes" - "testing" - - "github.com/ethereum/go-ethereum/common/bitutil" -) - -func FuzzEncoder(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzzEncode(data) - }) -} -func FuzzDecoder(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzzDecode(data) - }) -} - -// fuzzEncode implements a go-fuzz fuzzer method to test the bitset encoding and -// decoding algorithm. -func fuzzEncode(data []byte) { - proc, _ := bitutil.DecompressBytes(bitutil.CompressBytes(data), len(data)) - if !bytes.Equal(data, proc) { - panic("content mismatch") - } -} - -// fuzzDecode implements a go-fuzz fuzzer method to test the bit decoding and -// reencoding algorithm. -func fuzzDecode(data []byte) { - blob, err := bitutil.DecompressBytes(data, 1024) - if err != nil { - return - } - // re-compress it (it's OK if the re-compressed differs from the - // original - the first input may not have been compressed at all) - comp := bitutil.CompressBytes(blob) - if len(comp) > len(blob) { - // After compression, it must be smaller or equal - panic("bad compression") - } - // But decompressing it once again should work - decomp, err := bitutil.DecompressBytes(data, 1024) - if err != nil { - panic(err) - } - if !bytes.Equal(decomp, blob) { - panic("content mismatch") - } -} diff --git a/tests/fuzzers/keystore/keystore-fuzzer.go b/tests/fuzzers/keystore/keystore-fuzzer.go deleted file mode 100644 index 07a85d77b5..0000000000 --- a/tests/fuzzers/keystore/keystore-fuzzer.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package keystore - -import ( - "os" - - "github.com/ethereum/go-ethereum/accounts/keystore" -) - -func fuzz(input []byte) int { - ks := keystore.NewKeyStore("/tmp/ks", keystore.LightScryptN, keystore.LightScryptP) - - a, err := ks.NewAccount(string(input)) - if err != nil { - panic(err) - } - if err := ks.Unlock(a, string(input)); err != nil { - panic(err) - } - os.Remove(a.URL.Path) - return 1 -} diff --git a/tests/fuzzers/rlp/corpus/block_with_uncle.rlp b/tests/fuzzers/rlp/corpus/block_with_uncle.rlp deleted file mode 100644 index 1b49fe6a095f6086ba3b2a22980818adb535c18f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmey#68n?!=Yq7}+ib@e9?7`~NX2fJjiyVr+U(iMH>U2nKQ*W-BmB-4lRK+dE|_lmWY(#>TW%QlUAFykmm$S- z6L;&2dG1PHC*JheElMa{z?!Z6dzS~>v~BTEm(K22^jN4lk@?8i+8>t6R-exMEV{Il zkzu5RW+sLMEY14wcQplZw8XfVZEsjWC`dYB3VtO0NML4cW;v}tg)^>t-LhrJj~u%H zdV1Zj!)oh8b=$cbq!%pT{^{3bruc);R!JOO#eP`JHN~>jPcmn_zkaRIdAkX+?CBzT!UCj;%*;$U2*-e{<(!TeAEou1H-La+RLaRU-Uhq0?W7 zE0f))?70_Q^5^N>J$+hj(+>t4rq|`|=Uxz_7ZtdC?$Y*&Xa9w3pI?0c<%xv-^=oUV zTP$34F6{keqXl6vLf(k~H7y~eg RIWU2eSOX}5Z6zUr0RUb(3%vjU diff --git a/tests/fuzzers/rlp/corpus/r.bin b/tests/fuzzers/rlp/corpus/r.bin deleted file mode 100644 index cb98a76a8a..0000000000 --- a/tests/fuzzers/rlp/corpus/r.bin +++ /dev/null @@ -1 +0,0 @@ -Ë€€€À€ÀÃÀÀÀÀ \ No newline at end of file diff --git a/tests/fuzzers/rlp/corpus/transaction.rlp b/tests/fuzzers/rlp/corpus/transaction.rlp deleted file mode 100644 index 80eea1aec6..0000000000 --- a/tests/fuzzers/rlp/corpus/transaction.rlp +++ /dev/null @@ -1,2 +0,0 @@ -øNƒ“à€€€‚ -• aùËåÀP?-'´{ÏЋDY¯³fÆj\ÿE÷ ~ì•ÒçF?1(íij6@Év ±LÀÝÚ‘‘ \ No newline at end of file diff --git a/tests/fuzzers/rlp/rlp_fuzzer.go b/tests/fuzzers/rlp/rlp_fuzzer.go deleted file mode 100644 index 0da8ccdd77..0000000000 --- a/tests/fuzzers/rlp/rlp_fuzzer.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package rlp - -import ( - "bytes" - "fmt" - "math/big" - - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/rlp" - "github.com/holiman/uint256" -) - -func decodeEncode(input []byte, val interface{}, i int) { - if err := rlp.DecodeBytes(input, val); err == nil { - output, err := rlp.EncodeToBytes(val) - if err != nil { - panic(err) - } - if !bytes.Equal(input, output) { - panic(fmt.Sprintf("case %d: encode-decode is not equal, \ninput : %x\noutput: %x", i, input, output)) - } - } -} - -func fuzz(input []byte) int { - if len(input) == 0 { - return 0 - } - if len(input) > 500*1024 { - return 0 - } - - var i int - { - rlp.Split(input) - } - { - if elems, _, err := rlp.SplitList(input); err == nil { - rlp.CountValues(elems) - } - } - - { - rlp.NewStream(bytes.NewReader(input), 0).Decode(new(interface{})) - } - - { - decodeEncode(input, new(interface{}), i) - i++ - } - { - var v struct { - Int uint - String string - Bytes []byte - } - decodeEncode(input, &v, i) - i++ - } - - { - type Types struct { - Bool bool - Raw rlp.RawValue - Slice []*Types - Iface []interface{} - } - var v Types - decodeEncode(input, &v, i) - i++ - } - { - type AllTypes struct { - Int uint - String string - Bytes []byte - Bool bool - Raw rlp.RawValue - Slice []*AllTypes - Array [3]*AllTypes - Iface []interface{} - } - var v AllTypes - decodeEncode(input, &v, i) - i++ - } - { - decodeEncode(input, [10]byte{}, i) - i++ - } - { - var v struct { - Byte [10]byte - Rool [10]bool - } - decodeEncode(input, &v, i) - i++ - } - { - var h types.Header - decodeEncode(input, &h, i) - i++ - var b types.Block - decodeEncode(input, &b, i) - i++ - var t types.Transaction - decodeEncode(input, &t, i) - i++ - var txs types.Transactions - decodeEncode(input, &txs, i) - i++ - var rs types.Receipts - decodeEncode(input, &rs, i) - } - { - i++ - var v struct { - AnIntPtr *big.Int - AnInt big.Int - AnU256Ptr *uint256.Int - AnU256 uint256.Int - NotAnU256 [4]uint64 - } - decodeEncode(input, &v, i) - } - return 1 -} diff --git a/tests/fuzzers/secp256k1/secp_test.go b/tests/fuzzers/secp256k1/secp_test.go index fbdd8e6ac2..ca3039764b 100644 --- a/tests/fuzzers/secp256k1/secp_test.go +++ b/tests/fuzzers/secp256k1/secp_test.go @@ -35,7 +35,7 @@ func Fuzz(f *testing.F) { }) } -func fuzz(dataP1, dataP2 []byte) int { +func fuzz(dataP1, dataP2 []byte) { var ( curveA = secp256k1.S256() curveB = btcec.S256() @@ -50,5 +50,4 @@ func fuzz(dataP1, dataP2 []byte) int { fmt.Printf("%s %s %s %s\n", x1, y1, x2, y2) panic(fmt.Sprintf("Addition failed: geth: %s %s btcd: %s %s", resAX, resAY, resBX, resBY)) } - return 0 } diff --git a/tests/fuzzers/snap/fuzz_test.go b/tests/fuzzers/snap/fuzz_test.go deleted file mode 100644 index 1c39f2bb50..0000000000 --- a/tests/fuzzers/snap/fuzz_test.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2023 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package snap - -import ( - "testing" - - "github.com/ethereum/go-ethereum/eth/protocols/snap" -) - -func FuzzARange(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - doFuzz(data, &snap.GetAccountRangePacket{}, snap.GetAccountRangeMsg) - }) -} - -func FuzzSRange(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - doFuzz(data, &snap.GetStorageRangesPacket{}, snap.GetStorageRangesMsg) - }) -} - -func FuzzByteCodes(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - doFuzz(data, &snap.GetByteCodesPacket{}, snap.GetByteCodesMsg) - }) -} - -func FuzzTrieNodes(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - doFuzz(data, &snap.GetTrieNodesPacket{}, snap.GetTrieNodesMsg) - }) -} diff --git a/tests/fuzzers/stacktrie/trie_fuzzer.go b/tests/fuzzers/stacktrie/trie_fuzzer.go deleted file mode 100644 index 9e02176e3e..0000000000 --- a/tests/fuzzers/stacktrie/trie_fuzzer.go +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package stacktrie - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "hash" - "io" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" - "golang.org/x/crypto/sha3" - "golang.org/x/exp/slices" -) - -type fuzzer struct { - input io.Reader - exhausted bool - debugging bool -} - -func (f *fuzzer) read(size int) []byte { - out := make([]byte, size) - if _, err := f.input.Read(out); err != nil { - f.exhausted = true - } - return out -} - -func (f *fuzzer) readSlice(min, max int) []byte { - var a uint16 - binary.Read(f.input, binary.LittleEndian, &a) - size := min + int(a)%(max-min) - out := make([]byte, size) - if _, err := f.input.Read(out); err != nil { - f.exhausted = true - } - return out -} - -// spongeDb is a dummy db backend which accumulates writes in a sponge -type spongeDb struct { - sponge hash.Hash - debug bool -} - -func (s *spongeDb) Has(key []byte) (bool, error) { panic("implement me") } -func (s *spongeDb) Get(key []byte) ([]byte, error) { return nil, errors.New("no such elem") } -func (s *spongeDb) Delete(key []byte) error { panic("implement me") } -func (s *spongeDb) NewBatch() ethdb.Batch { return &spongeBatch{s} } -func (s *spongeDb) NewBatchWithSize(size int) ethdb.Batch { return &spongeBatch{s} } -func (s *spongeDb) NewSnapshot() (ethdb.Snapshot, error) { panic("implement me") } -func (s *spongeDb) Stat(property string) (string, error) { panic("implement me") } -func (s *spongeDb) Compact(start []byte, limit []byte) error { panic("implement me") } -func (s *spongeDb) Close() error { return nil } - -func (s *spongeDb) Put(key []byte, value []byte) error { - if s.debug { - fmt.Printf("db.Put %x : %x\n", key, value) - } - s.sponge.Write(key) - s.sponge.Write(value) - return nil -} -func (s *spongeDb) NewIterator(prefix []byte, start []byte) ethdb.Iterator { panic("implement me") } - -// spongeBatch is a dummy batch which immediately writes to the underlying spongedb -type spongeBatch struct { - db *spongeDb -} - -func (b *spongeBatch) Put(key, value []byte) error { - b.db.Put(key, value) - return nil -} -func (b *spongeBatch) Delete(key []byte) error { panic("implement me") } -func (b *spongeBatch) ValueSize() int { return 100 } -func (b *spongeBatch) Write() error { return nil } -func (b *spongeBatch) Reset() {} -func (b *spongeBatch) Replay(w ethdb.KeyValueWriter) error { return nil } - -type kv struct { - k, v []byte -} - -// Fuzz is the fuzzing entry-point. -// The function must return -// -// - 1 if the fuzzer should increase priority of the -// given input during subsequent fuzzing (for example, the input is lexically -// correct and was parsed successfully); -// - -1 if the input must not be added to corpus even if gives new coverage; and -// - 0 otherwise -// -// other values are reserved for future use. -func fuzz(data []byte) int { - f := fuzzer{ - input: bytes.NewReader(data), - exhausted: false, - } - return f.fuzz() -} - -func Debug(data []byte) int { - f := fuzzer{ - input: bytes.NewReader(data), - exhausted: false, - debugging: true, - } - return f.fuzz() -} - -func (f *fuzzer) fuzz() int { - // This spongeDb is used to check the sequence of disk-db-writes - var ( - spongeA = &spongeDb{sponge: sha3.NewLegacyKeccak256()} - dbA = trie.NewDatabase(rawdb.NewDatabase(spongeA), nil) - trieA = trie.NewEmpty(dbA) - spongeB = &spongeDb{sponge: sha3.NewLegacyKeccak256()} - dbB = trie.NewDatabase(rawdb.NewDatabase(spongeB), nil) - - options = trie.NewStackTrieOptions().WithWriter(func(path []byte, hash common.Hash, blob []byte) { - rawdb.WriteTrieNode(spongeB, common.Hash{}, path, hash, blob, dbB.Scheme()) - }) - trieB = trie.NewStackTrie(options) - vals []kv - useful bool - maxElements = 10000 - // operate on unique keys only - keys = make(map[string]struct{}) - ) - // Fill the trie with elements - for i := 0; !f.exhausted && i < maxElements; i++ { - k := f.read(32) - v := f.readSlice(1, 500) - if f.exhausted { - // If it was exhausted while reading, the value may be all zeroes, - // thus 'deletion' which is not supported on stacktrie - break - } - if _, present := keys[string(k)]; present { - // This key is a duplicate, ignore it - continue - } - keys[string(k)] = struct{}{} - vals = append(vals, kv{k: k, v: v}) - trieA.MustUpdate(k, v) - useful = true - } - if !useful { - return 0 - } - // Flush trie -> database - rootA, nodes, err := trieA.Commit(false) - if err != nil { - panic(err) - } - if nodes != nil { - dbA.Update(rootA, types.EmptyRootHash, 0, trienode.NewWithNodeSet(nodes), nil) - } - // Flush memdb -> disk (sponge) - dbA.Commit(rootA, false) - - // Stacktrie requires sorted insertion - slices.SortFunc(vals, func(a, b kv) int { - return bytes.Compare(a.k, b.k) - }) - for _, kv := range vals { - if f.debugging { - fmt.Printf("{\"%#x\" , \"%#x\"} // stacktrie.Update\n", kv.k, kv.v) - } - trieB.MustUpdate(kv.k, kv.v) - } - rootB := trieB.Hash() - trieB.Commit() - if rootA != rootB { - panic(fmt.Sprintf("roots differ: (trie) %x != %x (stacktrie)", rootA, rootB)) - } - sumA := spongeA.sponge.Sum(nil) - sumB := spongeB.sponge.Sum(nil) - if !bytes.Equal(sumA, sumB) { - panic(fmt.Sprintf("sequence differ: (trie) %x != %x (stacktrie)", sumA, sumB)) - } - - // Ensure all the nodes are persisted correctly - var ( - nodeset = make(map[string][]byte) // path -> blob - optionsC = trie.NewStackTrieOptions().WithWriter(func(path []byte, hash common.Hash, blob []byte) { - if crypto.Keccak256Hash(blob) != hash { - panic("invalid node blob") - } - nodeset[string(path)] = common.CopyBytes(blob) - }) - trieC = trie.NewStackTrie(optionsC) - checked int - ) - for _, kv := range vals { - trieC.MustUpdate(kv.k, kv.v) - } - rootC := trieC.Commit() - if rootA != rootC { - panic(fmt.Sprintf("roots differ: (trie) %x != %x (stacktrie)", rootA, rootC)) - } - trieA, _ = trie.New(trie.TrieID(rootA), dbA) - iterA := trieA.MustNodeIterator(nil) - for iterA.Next(true) { - if iterA.Hash() == (common.Hash{}) { - if _, present := nodeset[string(iterA.Path())]; present { - panic("unexpected tiny node") - } - continue - } - nodeBlob, present := nodeset[string(iterA.Path())] - if !present { - panic("missing node") - } - if !bytes.Equal(nodeBlob, iterA.NodeBlob()) { - panic("node blob is not matched") - } - checked += 1 - } - if checked != len(nodeset) { - panic("node number is not matched") - } - return 1 -} diff --git a/tests/fuzzers/stacktrie/trie_test.go b/tests/fuzzers/stacktrie/trie_test.go deleted file mode 100644 index f6f755f76a..0000000000 --- a/tests/fuzzers/stacktrie/trie_test.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package stacktrie - -import "testing" - -func Fuzz(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzz(data) - }) -} diff --git a/tests/fuzzers/trie/trie-fuzzer.go b/tests/fuzzers/trie/trie-fuzzer.go deleted file mode 100644 index a505fa78a0..0000000000 --- a/tests/fuzzers/trie/trie-fuzzer.go +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package trie - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -// randTest performs random trie operations. -// Instances of this test are created by Generate. -type randTest []randTestStep - -type randTestStep struct { - op int - key []byte // for opUpdate, opDelete, opGet - value []byte // for opUpdate - err error // for debugging -} - -type proofDb struct{} - -func (proofDb) Put(key []byte, value []byte) error { - return nil -} - -func (proofDb) Delete(key []byte) error { - return nil -} - -const ( - opUpdate = iota - opDelete - opGet - opHash - opCommit - opItercheckhash - opProve - opMax // boundary value, not an actual op -) - -type dataSource struct { - input []byte - reader *bytes.Reader -} - -func newDataSource(input []byte) *dataSource { - return &dataSource{ - input, bytes.NewReader(input), - } -} -func (ds *dataSource) readByte() byte { - if b, err := ds.reader.ReadByte(); err != nil { - return 0 - } else { - return b - } -} -func (ds *dataSource) Read(buf []byte) (int, error) { - return ds.reader.Read(buf) -} -func (ds *dataSource) Ended() bool { - return ds.reader.Len() == 0 -} - -func Generate(input []byte) randTest { - var allKeys [][]byte - r := newDataSource(input) - genKey := func() []byte { - if len(allKeys) < 2 || r.readByte() < 0x0f { - // new key - key := make([]byte, r.readByte()%50) - r.Read(key) - allKeys = append(allKeys, key) - return key - } - // use existing key - return allKeys[int(r.readByte())%len(allKeys)] - } - - var steps randTest - - for i := 0; !r.Ended(); i++ { - step := randTestStep{op: int(r.readByte()) % opMax} - switch step.op { - case opUpdate: - step.key = genKey() - step.value = make([]byte, 8) - binary.BigEndian.PutUint64(step.value, uint64(i)) - case opGet, opDelete, opProve: - step.key = genKey() - } - steps = append(steps, step) - if len(steps) > 500 { - break - } - } - - return steps -} - -// Fuzz is the fuzzing entry-point. -// The function must return -// -// - 1 if the fuzzer should increase priority of the -// given input during subsequent fuzzing (for example, the input is lexically -// correct and was parsed successfully); -// - -1 if the input must not be added to corpus even if gives new coverage; and -// - 0 otherwise -// -// other values are reserved for future use. -func fuzz(input []byte) int { - program := Generate(input) - if len(program) == 0 { - return 0 - } - if err := runRandTest(program); err != nil { - panic(err) - } - return 1 -} - -func runRandTest(rt randTest) error { - var ( - triedb = trie.NewDatabase(rawdb.NewMemoryDatabase(), nil) - tr = trie.NewEmpty(triedb) - origin = types.EmptyRootHash - values = make(map[string]string) // tracks content of the trie - ) - for i, step := range rt { - switch step.op { - case opUpdate: - tr.MustUpdate(step.key, step.value) - values[string(step.key)] = string(step.value) - case opDelete: - tr.MustDelete(step.key) - delete(values, string(step.key)) - case opGet: - v := tr.MustGet(step.key) - want := values[string(step.key)] - if string(v) != want { - rt[i].err = fmt.Errorf("mismatch for key %#x, got %#x want %#x", step.key, v, want) - } - case opHash: - tr.Hash() - case opCommit: - hash, nodes, err := tr.Commit(false) - if err != nil { - return err - } - if nodes != nil { - if err := triedb.Update(hash, origin, 0, trienode.NewWithNodeSet(nodes), nil); err != nil { - return err - } - } - newtr, err := trie.New(trie.TrieID(hash), triedb) - if err != nil { - return err - } - tr = newtr - origin = hash - case opItercheckhash: - checktr := trie.NewEmpty(triedb) - it := trie.NewIterator(tr.MustNodeIterator(nil)) - for it.Next() { - checktr.MustUpdate(it.Key, it.Value) - } - if tr.Hash() != checktr.Hash() { - return errors.New("hash mismatch in opItercheckhash") - } - case opProve: - rt[i].err = tr.Prove(step.key, proofDb{}) - } - // Abort the test on error. - if rt[i].err != nil { - return rt[i].err - } - } - return nil -} diff --git a/tests/fuzzers/trie/trie_test.go b/tests/fuzzers/trie/trie_test.go deleted file mode 100644 index a7d28a806e..0000000000 --- a/tests/fuzzers/trie/trie_test.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package trie - -import "testing" - -func Fuzz(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzz(data) - }) -} diff --git a/trie/stacktrie_fuzzer_test.go b/trie/stacktrie_fuzzer_test.go new file mode 100644 index 0000000000..1b3f9dbe9c --- /dev/null +++ b/trie/stacktrie_fuzzer_test.go @@ -0,0 +1,155 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package trie + +import ( + "bytes" + "encoding/binary" + "fmt" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/trie/trienode" + "golang.org/x/crypto/sha3" + "golang.org/x/exp/slices" +) + +func FuzzStackTrie(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + fuzz(data, false) + }) +} + +func fuzz(data []byte, debugging bool) { + // This spongeDb is used to check the sequence of disk-db-writes + var ( + input = bytes.NewReader(data) + spongeA = &spongeDb{sponge: sha3.NewLegacyKeccak256()} + dbA = NewDatabase(rawdb.NewDatabase(spongeA), nil) + trieA = NewEmpty(dbA) + spongeB = &spongeDb{sponge: sha3.NewLegacyKeccak256()} + dbB = NewDatabase(rawdb.NewDatabase(spongeB), nil) + + options = NewStackTrieOptions().WithWriter(func(path []byte, hash common.Hash, blob []byte) { + rawdb.WriteTrieNode(spongeB, common.Hash{}, path, hash, blob, dbB.Scheme()) + }) + trieB = NewStackTrie(options) + vals []*kv + maxElements = 10000 + // operate on unique keys only + keys = make(map[string]struct{}) + ) + // Fill the trie with elements + for i := 0; input.Len() > 0 && i < maxElements; i++ { + k := make([]byte, 32) + input.Read(k) + var a uint16 + binary.Read(input, binary.LittleEndian, &a) + a = 1 + a%100 + v := make([]byte, a) + input.Read(v) + if input.Len() == 0 { + // If it was exhausted while reading, the value may be all zeroes, + // thus 'deletion' which is not supported on stacktrie + break + } + if _, present := keys[string(k)]; present { + // This key is a duplicate, ignore it + continue + } + keys[string(k)] = struct{}{} + vals = append(vals, &kv{k: k, v: v}) + trieA.MustUpdate(k, v) + } + if len(vals) == 0 { + return + } + // Flush trie -> database + rootA, nodes, err := trieA.Commit(false) + if err != nil { + panic(err) + } + if nodes != nil { + dbA.Update(rootA, types.EmptyRootHash, 0, trienode.NewWithNodeSet(nodes), nil) + } + // Flush memdb -> disk (sponge) + dbA.Commit(rootA, false) + + // Stacktrie requires sorted insertion + slices.SortFunc(vals, (*kv).cmp) + + for _, kv := range vals { + if debugging { + fmt.Printf("{\"%#x\" , \"%#x\"} // stacktrie.Update\n", kv.k, kv.v) + } + trieB.MustUpdate(kv.k, kv.v) + } + rootB := trieB.Hash() + trieB.Commit() + if rootA != rootB { + panic(fmt.Sprintf("roots differ: (trie) %x != %x (stacktrie)", rootA, rootB)) + } + sumA := spongeA.sponge.Sum(nil) + sumB := spongeB.sponge.Sum(nil) + if !bytes.Equal(sumA, sumB) { + panic(fmt.Sprintf("sequence differ: (trie) %x != %x (stacktrie)", sumA, sumB)) + } + + // Ensure all the nodes are persisted correctly + var ( + nodeset = make(map[string][]byte) // path -> blob + optionsC = NewStackTrieOptions().WithWriter(func(path []byte, hash common.Hash, blob []byte) { + if crypto.Keccak256Hash(blob) != hash { + panic("invalid node blob") + } + nodeset[string(path)] = common.CopyBytes(blob) + }) + trieC = NewStackTrie(optionsC) + checked int + ) + for _, kv := range vals { + trieC.MustUpdate(kv.k, kv.v) + } + rootC := trieC.Commit() + if rootA != rootC { + panic(fmt.Sprintf("roots differ: (trie) %x != %x (stacktrie)", rootA, rootC)) + } + trieA, _ = New(TrieID(rootA), dbA) + iterA := trieA.MustNodeIterator(nil) + for iterA.Next(true) { + if iterA.Hash() == (common.Hash{}) { + if _, present := nodeset[string(iterA.Path())]; present { + panic("unexpected tiny node") + } + continue + } + nodeBlob, present := nodeset[string(iterA.Path())] + if !present { + panic("missing node") + } + if !bytes.Equal(nodeBlob, iterA.NodeBlob()) { + panic("node blob is not matched") + } + checked += 1 + } + if checked != len(nodeset) { + panic("node number is not matched") + } +} diff --git a/trie/trie_test.go b/trie/trie_test.go index 4315753548..6af0f67b9f 100644 --- a/trie/trie_test.go +++ b/trie/trie_test.go @@ -22,6 +22,7 @@ import ( "errors" "fmt" "hash" + "io" "math/big" "math/rand" "reflect" @@ -362,7 +363,9 @@ func TestRandomCases(t *testing.T) { {op: 1, key: common.Hex2Bytes("980c393656413a15c8da01978ed9f89feb80b502f58f2d640e3a2f5f7a99a7018f1b573befd92053ac6f78fca4a87268"), value: common.Hex2Bytes("")}, // step 24 {op: 1, key: common.Hex2Bytes("fd"), value: common.Hex2Bytes("")}, // step 25 } - runRandTest(rt) + if err := runRandTest(rt); err != nil { + t.Fatal(err) + } } // randTest performs random trie operations. @@ -389,33 +392,45 @@ const ( ) func (randTest) Generate(r *rand.Rand, size int) reflect.Value { + var finishedFn = func() bool { + size-- + return size > 0 + } + return reflect.ValueOf(generateSteps(finishedFn, r)) +} + +func generateSteps(finished func() bool, r io.Reader) randTest { var allKeys [][]byte + var one = []byte{0} genKey := func() []byte { - if len(allKeys) < 2 || r.Intn(100) < 10 { + r.Read(one) + if len(allKeys) < 2 || one[0]%100 > 90 { // new key - key := make([]byte, r.Intn(50)) + size := one[0] % 50 + key := make([]byte, size) r.Read(key) allKeys = append(allKeys, key) return key } // use existing key - return allKeys[r.Intn(len(allKeys))] + idx := int(one[0]) % len(allKeys) + return allKeys[idx] } - var steps randTest - for i := 0; i < size; i++ { - step := randTestStep{op: r.Intn(opMax)} + for !finished() { + r.Read(one) + step := randTestStep{op: int(one[0]) % opMax} switch step.op { case opUpdate: step.key = genKey() step.value = make([]byte, 8) - binary.BigEndian.PutUint64(step.value, uint64(i)) + binary.BigEndian.PutUint64(step.value, uint64(len(steps))) case opGet, opDelete, opProve: step.key = genKey() } steps = append(steps, step) } - return reflect.ValueOf(steps) + return steps } func verifyAccessList(old *Trie, new *Trie, set *trienode.NodeSet) error { @@ -460,7 +475,12 @@ func verifyAccessList(old *Trie, new *Trie, set *trienode.NodeSet) error { return nil } -func runRandTest(rt randTest) bool { +// runRandTestBool coerces error to boolean, for use in quick.Check +func runRandTestBool(rt randTest) bool { + return runRandTest(rt) == nil +} + +func runRandTest(rt randTest) error { var scheme = rawdb.HashScheme if rand.Intn(2) == 0 { scheme = rawdb.PathScheme @@ -513,12 +533,12 @@ func runRandTest(rt randTest) bool { newtr, err := New(TrieID(root), triedb) if err != nil { rt[i].err = err - return false + return err } if nodes != nil { if err := verifyAccessList(origTrie, newtr, nodes); err != nil { rt[i].err = err - return false + return err } } tr = newtr @@ -587,14 +607,14 @@ func runRandTest(rt randTest) bool { } // Abort the test on error. if rt[i].err != nil { - return false + return rt[i].err } } - return true + return nil } func TestRandom(t *testing.T) { - if err := quick.Check(runRandTest, nil); err != nil { + if err := quick.Check(runRandTestBool, nil); err != nil { if cerr, ok := err.(*quick.CheckError); ok { t.Fatalf("random test iteration %d failed: %s", cerr.Count, spew.Sdump(cerr.In)) } @@ -1185,3 +1205,17 @@ func TestDecodeNode(t *testing.T) { decodeNode(hash, elems) } } + +func FuzzTrie(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + var steps = 500 + var input = bytes.NewReader(data) + var finishedFn = func() bool { + steps-- + return steps < 0 || input.Len() == 0 + } + if err := runRandTest(generateSteps(finishedFn, input)); err != nil { + t.Fatal(err) + } + }) +} From c5b7cfa9c3a9643138d608e49be5e79fb18ee5f4 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Tue, 14 Nov 2023 18:40:16 +0100 Subject: [PATCH 060/223] tests: skip tests on windows 32bit CI (#28521) tests: skip half the blockchain- and state-tests on windows 32bit CI-tests --- tests/block_test.go | 5 +++++ tests/state_test.go | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/tests/block_test.go b/tests/block_test.go index 5764ae33e4..e913ecbc90 100644 --- a/tests/block_test.go +++ b/tests/block_test.go @@ -17,6 +17,8 @@ package tests import ( + "math/rand" + "runtime" "testing" "github.com/ethereum/go-ethereum/common" @@ -49,6 +51,9 @@ func TestBlockchain(t *testing.T) { bt.skipLoad(`.*randomStatetest94.json.*`) bt.walk(t, blockTestDir, func(t *testing.T, name string, test *BlockTest) { + if runtime.GOARCH == "386" && runtime.GOOS == "windows" && rand.Int63()%2 == 0 { + t.Skip("test (randomly) skipped on 32-bit windows") + } execBlockTest(t, bt, test) }) // There is also a LegacyTests folder, containing blockchain tests generated diff --git a/tests/state_test.go b/tests/state_test.go index 094dafcafd..ae78a53a7e 100644 --- a/tests/state_test.go +++ b/tests/state_test.go @@ -21,9 +21,11 @@ import ( "bytes" "fmt" "math/big" + "math/rand" "os" "path/filepath" "reflect" + "runtime" "strings" "testing" "time" @@ -76,6 +78,10 @@ func TestState(t *testing.T) { benchmarksDir, } { st.walk(t, dir, func(t *testing.T, name string, test *StateTest) { + if runtime.GOARCH == "386" && runtime.GOOS == "windows" && rand.Int63()%2 == 0 { + t.Skip("test (randomly) skipped on 32-bit windows") + return + } for _, subtest := range test.Subtests() { subtest := subtest key := fmt.Sprintf("%s/%d", subtest.Fork, subtest.Index) From 09003e1b128bbba72dbc56f98ecbc1f8ed6b7b4f Mon Sep 17 00:00:00 2001 From: Adrian Sutton Date: Wed, 15 Nov 2023 06:55:24 +1000 Subject: [PATCH 061/223] Update fork base commit. --- fork.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fork.yaml b/fork.yaml index 5b1555e2df..eb697a7ae8 100644 --- a/fork.yaml +++ b/fork.yaml @@ -5,7 +5,7 @@ footer: | base: name: go-ethereum url: https://github.com/ethereum/go-ethereum - hash: 3f907d6a6f6de09cff1360ed529126765939851d # v1.13.4 + hash: 916d6a441a866cb618ae826c220866de118899f7 # v1.13.5 fork: name: op-geth url: https://github.com/ethereum-optimism/op-geth From 0289fd0504a0b151f094e7ede6801ee23c0afbce Mon Sep 17 00:00:00 2001 From: Adrian Sutton Date: Wed, 15 Nov 2023 07:57:43 +1000 Subject: [PATCH 062/223] Include a depositTx in generated chain data for ethclient_test when Optimism config enabled. --- ethclient/ethclient_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index 85a1bf5539..c2b8748110 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -207,6 +207,13 @@ var genesisForHistorical = &core.Genesis{ BaseFee: big.NewInt(params.InitialBaseFee), } +var depositTx = types.NewTx(&types.DepositTx{ + Value: big.NewInt(12), + Gas: params.TxGas + 2000, + To: &common.Address{2}, + Data: make([]byte, 500), +}) + var testTx1 = types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), &types.LegacyTx{ Nonce: 0, Value: big.NewInt(12), @@ -319,6 +326,9 @@ func generateTestChain(enableHistoricalState bool) []*types.Block { g.SetExtra([]byte("test")) if i == 1 { // Test transactions are included in block #2. + if enableHistoricalState { + g.AddTx(depositTx) + } g.AddTx(testTx1) g.AddTx(testTx2) } From 984f82629c73506ac4d2c5322653d167a0f58d2e Mon Sep 17 00:00:00 2001 From: jwasinger Date: Wed, 15 Nov 2023 16:54:35 +0800 Subject: [PATCH 063/223] cmd/geth: more special cases logging tests (#28527) adds logging tests for errors and custom fmt.Stringer-types which output strings that needs to be quoted/escaped. --- cmd/geth/logtestcmd_active.go | 13 +++++++++++++ cmd/geth/testdata/logging/logtest-logfmt.txt | 6 ++++-- cmd/geth/testdata/logging/logtest-terminal.txt | 18 ++++++++++-------- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/cmd/geth/logtestcmd_active.go b/cmd/geth/logtestcmd_active.go index ebcc8de976..0632f9ca4b 100644 --- a/cmd/geth/logtestcmd_active.go +++ b/cmd/geth/logtestcmd_active.go @@ -19,6 +19,7 @@ package main import ( + "errors" "fmt" "math" "math/big" @@ -39,6 +40,12 @@ var logTestCommand = &cli.Command{ This command is only meant for testing. `} +type customQuotedStringer struct { +} +func (c customQuotedStringer) String() string { + return "output with 'quotes'" +} + // logTest is an entry point which spits out some logs. This is used by testing // to verify expected outputs func logTest(ctx *cli.Context) error { @@ -70,6 +77,8 @@ func logTest(ctx *cli.Context) error { log.Info("uint64", "18,446,744,073,709,551,615", uint64(math.MaxUint64)) } { // Special characters + + log.Info("Special chars in value", "key", "special \r\n\t chars") log.Info("Special chars in key", "special \n\t chars", "value") @@ -83,9 +92,13 @@ func logTest(ctx *cli.Context) error { colored := fmt.Sprintf("\u001B[%dmColored\u001B[0m[", 35) log.Info(colored, colored, colored) + err := errors.New("this is an 'error'") + log.Info("an error message with quotes", "error", err) } { // Custom Stringer() - type log.Info("Custom Stringer value", "2562047h47m16.854s", common.PrettyDuration(time.Duration(9223372036854775807))) + var c customQuotedStringer + log.Info("a custom stringer that emits quoted text", "output", c) } { // Lazy eval log.Info("Lazy evaluation of value", "key", log.Lazy{Fn: func() interface{} { return "lazy value" }}) diff --git a/cmd/geth/testdata/logging/logtest-logfmt.txt b/cmd/geth/testdata/logging/logtest-logfmt.txt index c1e34d1930..f097143a55 100644 --- a/cmd/geth/testdata/logging/logtest-logfmt.txt +++ b/cmd/geth/testdata/logging/logtest-logfmt.txt @@ -18,8 +18,10 @@ t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in value" key="\x1b[1G\x1 t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in key" "\x1b[1G\x1b[K\x1b[1A"=value t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Lazy evaluation of value" key="lazy value" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="an error message with quotes" error="this is an 'error'" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="a custom stringer that emits quoted text" output="output with 'quotes'" +t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Lazy evaluation of value" key="lazy value" t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A message with wonky 💩 characters" t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above" diff --git a/cmd/geth/testdata/logging/logtest-terminal.txt b/cmd/geth/testdata/logging/logtest-terminal.txt index af0de7b9ab..051a6267fa 100644 --- a/cmd/geth/testdata/logging/logtest-terminal.txt +++ b/cmd/geth/testdata/logging/logtest-terminal.txt @@ -18,22 +18,24 @@ INFO [XX-XX|XX:XX:XX.XXX] Bash escapes in value key="\x1b[1G\ INFO [XX-XX|XX:XX:XX.XXX] Bash escapes in key "\x1b[1G\x1b[K\x1b[1A"=value INFO [XX-XX|XX:XX:XX.XXX] "Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value INFO [XX-XX|XX:XX:XX.XXX] "\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" +INFO [XX-XX|XX:XX:XX.XXX] an error message with quotes error="this is an 'error'" INFO [XX-XX|XX:XX:XX.XXX] Custom Stringer value 2562047h47m16.854s=2562047h47m16.854s +INFO [XX-XX|XX:XX:XX.XXX] a custom stringer that emits quoted text output="output with 'quotes'" INFO [XX-XX|XX:XX:XX.XXX] Lazy evaluation of value key="lazy value" -INFO [XX-XX|XX:XX:XX.XXX] "A message with wonky 💩 characters" -INFO [XX-XX|XX:XX:XX.XXX] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" -INFO [XX-XX|XX:XX:XX.XXX] A multiline message -LALA [XXZXXZXXZXXZXXZXXX] Actually part of message above +INFO [XX-XX|XX:XX:XX.XXX] "A message with wonky 💩 characters" +INFO [XX-XX|XX:XX:XX.XXX] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" +INFO [XX-XX|XX:XX:XX.XXX] A multiline message +LALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above INFO [XX-XX|XX:XX:XX.XXX] boolean true=true false=false INFO [XX-XX|XX:XX:XX.XXX] repeated-key 1 foo=alpha foo=beta INFO [XX-XX|XX:XX:XX.XXX] repeated-key 2 xx=short xx=longer -INFO [XX-XX|XX:XX:XX.XXX] log at level info -WARN [XX-XX|XX:XX:XX.XXX] log at level warn -ERROR[XX-XX|XX:XX:XX.XXX] log at level error +INFO [XX-XX|XX:XX:XX.XXX] log at level info +WARN [XX-XX|XX:XX:XX.XXX] log at level warn +ERROR[XX-XX|XX:XX:XX.XXX] log at level error INFO [XX-XX|XX:XX:XX.XXX] test bar=short a="aligned left" INFO [XX-XX|XX:XX:XX.XXX] test bar="a long message" a=1 INFO [XX-XX|XX:XX:XX.XXX] test bar=short a="aligned right" -INFO [XX-XX|XX:XX:XX.XXX] The following logs should align so that the key-fields make 5 columns +INFO [XX-XX|XX:XX:XX.XXX] The following logs should align so that the key-fields make 5 columns INFO [XX-XX|XX:XX:XX.XXX] Inserted known block number=1012 hash=000000..001234 txs=200 gas=1,123,123 other=first INFO [XX-XX|XX:XX:XX.XXX] Inserted new block number=1 hash=000000..001235 txs=2 gas=1123 other=second INFO [XX-XX|XX:XX:XX.XXX] Inserted known block number=99 hash=000000..012322 txs=10 gas=1 other=third From 2814ee0547cb49dddf182bad802f19100608d5f8 Mon Sep 17 00:00:00 2001 From: Zoro <40222601+BabyHalimao@users.noreply.github.com> Date: Wed, 15 Nov 2023 20:36:57 +0800 Subject: [PATCH 064/223] accounts,cmd,console,les,metrics: refactor some errors checked by (ST1005) go-staticcheck (#28532) fix: fix some (ST1005)go-staticcheck --- accounts/abi/bind/backends/simulated.go | 2 +- accounts/abi/pack.go | 4 ++-- accounts/abi/reflect.go | 6 +++--- cmd/clef/main.go | 1 + cmd/devp2p/discv4cmd.go | 2 +- cmd/devp2p/internal/ethtest/snap.go | 2 +- cmd/faucet/faucet.go | 2 +- cmd/utils/cmd.go | 2 +- console/bridge.go | 2 +- les/benchmark.go | 2 +- les/peer.go | 2 +- les/peer_test.go | 2 +- les/vflux/client/valuetracker.go | 4 ++-- metrics/disk_nop.go | 2 +- metrics/gauge_float64_test.go | 4 ++-- 15 files changed, 20 insertions(+), 19 deletions(-) diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index a26ee12e0a..2faf274dbd 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -846,7 +846,7 @@ func (b *SimulatedBackend) AdjustTime(adjustment time.Duration) error { defer b.mu.Unlock() if len(b.pendingBlock.Transactions()) != 0 { - return errors.New("Could not adjust time on non-empty block") + return errors.New("could not adjust time on non-empty block") } // Get the last block block := b.blockchain.GetBlockByHash(b.pendingBlock.ParentHash()) diff --git a/accounts/abi/pack.go b/accounts/abi/pack.go index 0cd91cb4fa..beef1fa37f 100644 --- a/accounts/abi/pack.go +++ b/accounts/abi/pack.go @@ -57,7 +57,7 @@ func packElement(t Type, reflectValue reflect.Value) ([]byte, error) { reflectValue = mustArrayToByteSlice(reflectValue) } if reflectValue.Type() != reflect.TypeOf([]byte{}) { - return []byte{}, errors.New("Bytes type is neither slice nor array") + return []byte{}, errors.New("bytes type is neither slice nor array") } return packBytesSlice(reflectValue.Bytes(), reflectValue.Len()), nil case FixedBytesTy, FunctionTy: @@ -66,7 +66,7 @@ func packElement(t Type, reflectValue reflect.Value) ([]byte, error) { } return common.RightPadBytes(reflectValue.Bytes(), 32), nil default: - return []byte{}, fmt.Errorf("Could not pack element, unknown type: %v", t.T) + return []byte{}, fmt.Errorf("could not pack element, unknown type: %v", t.T) } } diff --git a/accounts/abi/reflect.go b/accounts/abi/reflect.go index 48d2ef41ec..1863e5bb7d 100644 --- a/accounts/abi/reflect.go +++ b/accounts/abi/reflect.go @@ -134,7 +134,7 @@ func setSlice(dst, src reflect.Value) error { dst.Set(slice) return nil } - return errors.New("Cannot set slice, destination not settable") + return errors.New("cannot set slice, destination not settable") } func setArray(dst, src reflect.Value) error { @@ -155,7 +155,7 @@ func setArray(dst, src reflect.Value) error { dst.Set(array) return nil } - return errors.New("Cannot set array, destination not settable") + return errors.New("cannot set array, destination not settable") } func setStruct(dst, src reflect.Value) error { @@ -163,7 +163,7 @@ func setStruct(dst, src reflect.Value) error { srcField := src.Field(i) dstField := dst.Field(i) if !dstField.IsValid() || !srcField.IsValid() { - return fmt.Errorf("Could not find src field: %v value: %v in destination", srcField.Type().Name(), srcField) + return fmt.Errorf("could not find src field: %v value: %v in destination", srcField.Type().Name(), srcField) } if err := set(dstField, srcField); err != nil { return err diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 06a8cd7ab7..63f34effb7 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -581,6 +581,7 @@ func accountImport(c *cli.Context) error { return err } if first != second { + //lint:ignore ST1005 This is a message for the user return errors.New("Passwords do not match") } acc, err := internalApi.ImportRawKey(hex.EncodeToString(crypto.FromECDSA(pKey)), first) diff --git a/cmd/devp2p/discv4cmd.go b/cmd/devp2p/discv4cmd.go index 37b139dea2..45bcdcd367 100644 --- a/cmd/devp2p/discv4cmd.go +++ b/cmd/devp2p/discv4cmd.go @@ -236,7 +236,7 @@ func discv4Crawl(ctx *cli.Context) error { func discv4Test(ctx *cli.Context) error { // Configure test package globals. if !ctx.IsSet(remoteEnodeFlag.Name) { - return fmt.Errorf("Missing -%v", remoteEnodeFlag.Name) + return fmt.Errorf("missing -%v", remoteEnodeFlag.Name) } v4test.Remote = ctx.String(remoteEnodeFlag.Name) v4test.Listen1 = ctx.String(testListen1Flag.Name) diff --git a/cmd/devp2p/internal/ethtest/snap.go b/cmd/devp2p/internal/ethtest/snap.go index 54eb63f3de..f50159a0de 100644 --- a/cmd/devp2p/internal/ethtest/snap.go +++ b/cmd/devp2p/internal/ethtest/snap.go @@ -683,7 +683,7 @@ func (s *Suite) snapGetTrieNodes(t *utesting.T, tc *trieNodesTest) error { hash := make([]byte, 32) trienodes := res.Nodes if got, want := len(trienodes), len(tc.expHashes); got != want { - return fmt.Errorf("wrong trienode count, got %d, want %d\n", got, want) + return fmt.Errorf("wrong trienode count, got %d, want %d", got, want) } for i, trienode := range trienodes { hasher.Reset() diff --git a/cmd/faucet/faucet.go b/cmd/faucet/faucet.go index e4d6ad6977..8f4127216e 100644 --- a/cmd/faucet/faucet.go +++ b/cmd/faucet/faucet.go @@ -248,7 +248,7 @@ func newFaucet(genesis *core.Genesis, port int, enodes []*enode.Node, network ui lesBackend, err := les.New(stack, &cfg) if err != nil { - return nil, fmt.Errorf("Failed to register the Ethereum service: %w", err) + return nil, fmt.Errorf("failed to register the Ethereum service: %w", err) } // Assemble the ethstats monitoring and reporting service' diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index 16b1260572..a7563a081e 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -460,7 +460,7 @@ func ImportLDBData(db ethdb.Database, f string, startIndex int64, interrupt chan case OpBatchAdd: batch.Put(key, val) default: - return fmt.Errorf("unknown op %d\n", op) + return fmt.Errorf("unknown op %d", op) } if batch.ValueSize() > ethdb.IdealBatchSize { if err := batch.Write(); err != nil { diff --git a/console/bridge.go b/console/bridge.go index c67686d6c3..37578041ca 100644 --- a/console/bridge.go +++ b/console/bridge.go @@ -78,7 +78,7 @@ func (b *bridge) NewAccount(call jsre.Call) (goja.Value, error) { return nil, err } if password != confirm { - return nil, errors.New("passwords don't match!") + return nil, errors.New("passwords don't match") } // A single string password was specified, use that case len(call.Arguments) == 1 && call.Argument(0).ToString() != nil: diff --git a/les/benchmark.go b/les/benchmark.go index ab93518349..d1efa2f5d3 100644 --- a/les/benchmark.go +++ b/les/benchmark.go @@ -338,7 +338,7 @@ func (h *serverHandler) measure(setup *benchmarkSetup, count int) error { case <-h.closeCh: clientPipe.Close() serverPipe.Close() - return errors.New("Benchmark cancelled") + return errors.New("benchmark cancelled") } setup.totalTime += time.Duration(mclock.Now() - start) diff --git a/les/peer.go b/les/peer.go index 58cb928700..b38a393d4c 100644 --- a/les/peer.go +++ b/les/peer.go @@ -1000,7 +1000,7 @@ func (p *clientPeer) Handshake(td *big.Int, head common.Hash, headNum uint64, ge } } if recentTx != txIndexUnlimited && p.version < lpv4 { - return errors.New("Cannot serve old clients without a complete tx index") + return errors.New("cannot serve old clients without a complete tx index") } // Note: clientPeer.headInfo should contain the last head announced to the client by us. // The values announced in the handshake are dummy values for compatibility reasons and should be ignored. diff --git a/les/peer_test.go b/les/peer_test.go index 0881dd292b..d6ca0eac7c 100644 --- a/les/peer_test.go +++ b/les/peer_test.go @@ -143,7 +143,7 @@ func TestHandshake(t *testing.T) { return err } if reqType != announceTypeSigned { - return errors.New("Expected announceTypeSigned") + return errors.New("expected announceTypeSigned") } return nil }) diff --git a/les/vflux/client/valuetracker.go b/les/vflux/client/valuetracker.go index 806d0c7d75..e0d1010ffe 100644 --- a/les/vflux/client/valuetracker.go +++ b/les/vflux/client/valuetracker.go @@ -257,7 +257,7 @@ func (vt *ValueTracker) loadFromDb(mapping []string) error { } if version != vtVersion { log.Error("Unknown ValueTracker version", "stored", version, "current", nvtVersion) - return fmt.Errorf("Unknown ValueTracker version %d (current version is %d)", version, vtVersion) + return fmt.Errorf("unknown ValueTracker version %d (current version is %d)", version, vtVersion) } var vte valueTrackerEncV1 if err := rlp.Decode(r, &vte); err != nil { @@ -295,7 +295,7 @@ loop: } else { if vte.RefBasketMapping >= uint(len(vt.mappings)) { log.Error("Unknown request basket mapping", "stored", vte.RefBasketMapping, "current", vt.currentMapping) - return fmt.Errorf("Unknown request basket mapping %d (current version is %d)", vte.RefBasketMapping, vt.currentMapping) + return fmt.Errorf("unknown request basket mapping %d (current version is %d)", vte.RefBasketMapping, vt.currentMapping) } vt.refBasket.basket = vte.RefBasket.convertMapping(vt.mappings[vte.RefBasketMapping], mapping, vt.initRefBasket) } diff --git a/metrics/disk_nop.go b/metrics/disk_nop.go index 58fa4e02f8..41bbe9adb2 100644 --- a/metrics/disk_nop.go +++ b/metrics/disk_nop.go @@ -23,5 +23,5 @@ import "errors" // ReadDiskStats retrieves the disk IO stats belonging to the current process. func ReadDiskStats(stats *DiskStats) error { - return errors.New("Not implemented") + return errors.New("not implemented") } diff --git a/metrics/gauge_float64_test.go b/metrics/gauge_float64_test.go index f0ac7ea5e7..194a18821f 100644 --- a/metrics/gauge_float64_test.go +++ b/metrics/gauge_float64_test.go @@ -36,7 +36,7 @@ func TestGaugeFloat64Snapshot(t *testing.T) { g.Update(47.0) snapshot := g.Snapshot() g.Update(float64(0)) - if v := snapshot.Value(); 47.0 != v { + if v := snapshot.Value(); v != 47.0 { t.Errorf("g.Value(): 47.0 != %v\n", v) } } @@ -45,7 +45,7 @@ func TestGetOrRegisterGaugeFloat64(t *testing.T) { r := NewRegistry() NewRegisteredGaugeFloat64("foo", r).Update(47.0) t.Logf("registry: %v", r) - if g := GetOrRegisterGaugeFloat64("foo", r).Snapshot(); 47.0 != g.Value() { + if g := GetOrRegisterGaugeFloat64("foo", r).Snapshot(); g.Value() != 47.0 { t.Fatal(g) } } From b9504e4966fa1e9451667c68426ab6e2a8e2dce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Anda=20Estensen?= Date: Wed, 15 Nov 2023 15:46:32 +0300 Subject: [PATCH 065/223] miner: run tests in parallel (#28506) Changes many of the tests in the miner package to run in parallel --- miner/miner_test.go | 7 +++++++ miner/ordering_test.go | 3 +++ miner/payload_building_test.go | 2 ++ miner/worker_test.go | 8 ++++++++ 4 files changed, 20 insertions(+) diff --git a/miner/miner_test.go b/miner/miner_test.go index 36d5166c6d..411d6026ce 100644 --- a/miner/miner_test.go +++ b/miner/miner_test.go @@ -99,6 +99,7 @@ func (bc *testBlockChain) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) } func TestMiner(t *testing.T) { + t.Parallel() miner, mux, cleanup := createMiner(t) defer cleanup(false) @@ -128,6 +129,7 @@ func TestMiner(t *testing.T) { // An initial FailedEvent should allow mining to stop on a subsequent // downloader StartEvent. func TestMinerDownloaderFirstFails(t *testing.T) { + t.Parallel() miner, mux, cleanup := createMiner(t) defer cleanup(false) @@ -161,6 +163,7 @@ func TestMinerDownloaderFirstFails(t *testing.T) { } func TestMinerStartStopAfterDownloaderEvents(t *testing.T) { + t.Parallel() miner, mux, cleanup := createMiner(t) defer cleanup(false) @@ -185,6 +188,7 @@ func TestMinerStartStopAfterDownloaderEvents(t *testing.T) { } func TestStartWhileDownload(t *testing.T) { + t.Parallel() miner, mux, cleanup := createMiner(t) defer cleanup(false) waitForMiningState(t, miner, false) @@ -199,6 +203,7 @@ func TestStartWhileDownload(t *testing.T) { } func TestStartStopMiner(t *testing.T) { + t.Parallel() miner, _, cleanup := createMiner(t) defer cleanup(false) waitForMiningState(t, miner, false) @@ -209,6 +214,7 @@ func TestStartStopMiner(t *testing.T) { } func TestCloseMiner(t *testing.T) { + t.Parallel() miner, _, cleanup := createMiner(t) defer cleanup(true) waitForMiningState(t, miner, false) @@ -222,6 +228,7 @@ func TestCloseMiner(t *testing.T) { // TestMinerSetEtherbase checks that etherbase becomes set even if mining isn't // possible at the moment func TestMinerSetEtherbase(t *testing.T) { + t.Parallel() miner, mux, cleanup := createMiner(t) defer cleanup(false) miner.Start() diff --git a/miner/ordering_test.go b/miner/ordering_test.go index 59d478274d..e5868d7a06 100644 --- a/miner/ordering_test.go +++ b/miner/ordering_test.go @@ -30,10 +30,12 @@ import ( ) func TestTransactionPriceNonceSortLegacy(t *testing.T) { + t.Parallel() testTransactionPriceNonceSort(t, nil) } func TestTransactionPriceNonceSort1559(t *testing.T) { + t.Parallel() testTransactionPriceNonceSort(t, big.NewInt(0)) testTransactionPriceNonceSort(t, big.NewInt(5)) testTransactionPriceNonceSort(t, big.NewInt(50)) @@ -138,6 +140,7 @@ func testTransactionPriceNonceSort(t *testing.T, baseFee *big.Int) { // Tests that if multiple transactions have the same price, the ones seen earlier // are prioritized to avoid network spam attacks aiming for a specific ordering. func TestTransactionTimeSort(t *testing.T) { + t.Parallel() // Generate a batch of accounts to start with keys := make([]*ecdsa.PrivateKey, 5) for i := 0; i < len(keys); i++ { diff --git a/miner/payload_building_test.go b/miner/payload_building_test.go index 6f57363441..9283635224 100644 --- a/miner/payload_building_test.go +++ b/miner/payload_building_test.go @@ -30,6 +30,7 @@ import ( ) func TestBuildPayload(t *testing.T) { + t.Parallel() var ( db = rawdb.NewMemoryDatabase() recipient = common.HexToAddress("0xdeadbeef") @@ -82,6 +83,7 @@ func TestBuildPayload(t *testing.T) { } func TestPayloadId(t *testing.T) { + t.Parallel() ids := make(map[string]int) for i, tt := range []*BuildPayloadArgs{ { diff --git a/miner/worker_test.go b/miner/worker_test.go index 9c4694c0e2..59fbbbcdca 100644 --- a/miner/worker_test.go +++ b/miner/worker_test.go @@ -167,6 +167,7 @@ func newTestWorker(t *testing.T, chainConfig *params.ChainConfig, engine consens } func TestGenerateAndImportBlock(t *testing.T) { + t.Parallel() var ( db = rawdb.NewMemoryDatabase() config = *params.AllCliqueProtocolChanges @@ -210,9 +211,11 @@ func TestGenerateAndImportBlock(t *testing.T) { } func TestEmptyWorkEthash(t *testing.T) { + t.Parallel() testEmptyWork(t, ethashChainConfig, ethash.NewFaker()) } func TestEmptyWorkClique(t *testing.T) { + t.Parallel() testEmptyWork(t, cliqueChainConfig, clique.New(cliqueChainConfig.Clique, rawdb.NewMemoryDatabase())) } @@ -252,10 +255,12 @@ func testEmptyWork(t *testing.T, chainConfig *params.ChainConfig, engine consens } func TestAdjustIntervalEthash(t *testing.T) { + t.Parallel() testAdjustInterval(t, ethashChainConfig, ethash.NewFaker()) } func TestAdjustIntervalClique(t *testing.T) { + t.Parallel() testAdjustInterval(t, cliqueChainConfig, clique.New(cliqueChainConfig.Clique, rawdb.NewMemoryDatabase())) } @@ -346,14 +351,17 @@ func testAdjustInterval(t *testing.T, chainConfig *params.ChainConfig, engine co } func TestGetSealingWorkEthash(t *testing.T) { + t.Parallel() testGetSealingWork(t, ethashChainConfig, ethash.NewFaker()) } func TestGetSealingWorkClique(t *testing.T) { + t.Parallel() testGetSealingWork(t, cliqueChainConfig, clique.New(cliqueChainConfig.Clique, rawdb.NewMemoryDatabase())) } func TestGetSealingWorkPostMerge(t *testing.T) { + t.Parallel() local := new(params.ChainConfig) *local = *ethashChainConfig local.TerminalTotalDifficulty = big.NewInt(0) From fcc7ae162d91f4706ed828c6581312cbaf634e7a Mon Sep 17 00:00:00 2001 From: aliening <128203330+aliening@users.noreply.github.com> Date: Wed, 15 Nov 2023 20:55:56 +0800 Subject: [PATCH 066/223] internal/jsre/deps: fix typo in jsdoc (#28511) minor typo fix --- internal/jsre/deps/web3.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/jsre/deps/web3.js b/internal/jsre/deps/web3.js index 7a09fddab0..f23c65584c 100644 --- a/internal/jsre/deps/web3.js +++ b/internal/jsre/deps/web3.js @@ -1033,7 +1033,7 @@ var formatOutputInt = function (param) { * * @method formatOutputUInt * @param {SolidityParam} - * @returns {BigNumeber} right-aligned output bytes formatted to uint + * @returns {BigNumber} right-aligned output bytes formatted to uint */ var formatOutputUInt = function (param) { var value = param.staticPart() || "0"; From db7895d3b6e449cd4be6b5dbbd921979612f0d5f Mon Sep 17 00:00:00 2001 From: Halimao <1065621723@qq.com> Date: Wed, 15 Nov 2023 21:30:35 +0800 Subject: [PATCH 067/223] accounts/abi: improve readability of method-to-string conversion (#28530) refactor: improve readability of NewMethod print --- accounts/abi/method.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/accounts/abi/method.go b/accounts/abi/method.go index b6e1eef3cf..c5a1a71f47 100644 --- a/accounts/abi/method.go +++ b/accounts/abi/method.go @@ -117,15 +117,6 @@ func NewMethod(name string, rawName string, funType FunctionType, mutability str sig = fmt.Sprintf("%v(%v)", rawName, strings.Join(types, ",")) id = crypto.Keccak256([]byte(sig))[:4] } - // Extract meaningful state mutability of solidity method. - // If it's default value, never print it. - state := mutability - if state == "nonpayable" { - state = "" - } - if state != "" { - state = state + " " - } identity := fmt.Sprintf("function %v", rawName) switch funType { case Fallback: @@ -135,7 +126,14 @@ func NewMethod(name string, rawName string, funType FunctionType, mutability str case Constructor: identity = "constructor" } - str := fmt.Sprintf("%v(%v) %sreturns(%v)", identity, strings.Join(inputNames, ", "), state, strings.Join(outputNames, ", ")) + var str string + // Extract meaningful state mutability of solidity method. + // If it's empty string or default value "nonpayable", never print it. + if mutability == "" || mutability == "nonpayable" { + str = fmt.Sprintf("%v(%v) returns(%v)", identity, strings.Join(inputNames, ", "), strings.Join(outputNames, ", ")) + } else { + str = fmt.Sprintf("%v(%v) %s returns(%v)", identity, strings.Join(inputNames, ", "), mutability, strings.Join(outputNames, ", ")) + } return Method{ Name: name, From a75a2d6db67bbbad5a4b703ad862a5239de62d2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Anda=20Estensen?= Date: Wed, 15 Nov 2023 16:42:33 +0300 Subject: [PATCH 068/223] all: replace some cases of strings.SplitN with strings.Cut (#28446) --- accounts/scwallet/wallet.go | 8 ++++---- cmd/p2psim/main.go | 4 +--- p2p/nat/nat.go | 12 ++++++------ p2p/simulations/http.go | 8 ++++---- rpc/json.go | 4 ++-- rpc/service.go | 6 +++--- 6 files changed, 20 insertions(+), 22 deletions(-) diff --git a/accounts/scwallet/wallet.go b/accounts/scwallet/wallet.go index 067bda83f1..f0ca9085b6 100644 --- a/accounts/scwallet/wallet.go +++ b/accounts/scwallet/wallet.go @@ -776,16 +776,16 @@ func (w *Wallet) findAccountPath(account accounts.Account) (accounts.DerivationP return nil, fmt.Errorf("scheme %s does not match wallet scheme %s", account.URL.Scheme, w.Hub.scheme) } - parts := strings.SplitN(account.URL.Path, "/", 2) - if len(parts) != 2 { + url, path, found := strings.Cut(account.URL.Path, "/") + if !found { return nil, fmt.Errorf("invalid URL format: %s", account.URL) } - if parts[0] != fmt.Sprintf("%x", w.PublicKey[1:3]) { + if url != fmt.Sprintf("%x", w.PublicKey[1:3]) { return nil, fmt.Errorf("URL %s is not for this wallet", account.URL) } - return accounts.ParseDerivationPath(parts[1]) + return accounts.ParseDerivationPath(path) } // Session represents a secured communication session with the wallet. diff --git a/cmd/p2psim/main.go b/cmd/p2psim/main.go index a3546d405b..a0f5f0d288 100644 --- a/cmd/p2psim/main.go +++ b/cmd/p2psim/main.go @@ -417,9 +417,7 @@ func rpcNode(ctx *cli.Context) error { } func rpcSubscribe(client *rpc.Client, out io.Writer, method string, args ...string) error { - parts := strings.SplitN(method, "_", 2) - namespace := parts[0] - method = parts[1] + namespace, method, _ := strings.Cut(method, "_") ch := make(chan interface{}) subArgs := make([]interface{}, len(args)+1) subArgs[0] = method diff --git a/p2p/nat/nat.go b/p2p/nat/nat.go index 61b6922988..2aa1f85585 100644 --- a/p2p/nat/nat.go +++ b/p2p/nat/nat.go @@ -61,12 +61,12 @@ type Interface interface { // "pmp:192.168.0.1" uses NAT-PMP with the given gateway address func Parse(spec string) (Interface, error) { var ( - parts = strings.SplitN(spec, ":", 2) - mech = strings.ToLower(parts[0]) - ip net.IP + before, after, found = strings.Cut(spec, ":") + mech = strings.ToLower(before) + ip net.IP ) - if len(parts) > 1 { - ip = net.ParseIP(parts[1]) + if found { + ip = net.ParseIP(after) if ip == nil { return nil, errors.New("invalid IP address") } @@ -86,7 +86,7 @@ func Parse(spec string) (Interface, error) { case "pmp", "natpmp", "nat-pmp": return PMP(ip), nil default: - return nil, fmt.Errorf("unknown mechanism %q", parts[0]) + return nil, fmt.Errorf("unknown mechanism %q", before) } } diff --git a/p2p/simulations/http.go b/p2p/simulations/http.go index 7a4f70e9b0..34521b4778 100644 --- a/p2p/simulations/http.go +++ b/p2p/simulations/http.go @@ -479,12 +479,12 @@ func (s *Server) StreamNetworkEvents(w http.ResponseWriter, req *http.Request) { func NewMsgFilters(filterParam string) (MsgFilters, error) { filters := make(MsgFilters) for _, filter := range strings.Split(filterParam, "-") { - protoCodes := strings.SplitN(filter, ":", 2) - if len(protoCodes) != 2 || protoCodes[0] == "" || protoCodes[1] == "" { + proto, codes, found := strings.Cut(filter, ":") + if !found || proto == "" || codes == "" { return nil, fmt.Errorf("invalid message filter: %s", filter) } - proto := protoCodes[0] - for _, code := range strings.Split(protoCodes[1], ",") { + + for _, code := range strings.Split(codes, ",") { if code == "*" || code == "-1" { filters[MsgFilter{Proto: proto, Code: -1}] = struct{}{} continue diff --git a/rpc/json.go b/rpc/json.go index 8a3b162cab..78f7d7a650 100644 --- a/rpc/json.go +++ b/rpc/json.go @@ -86,8 +86,8 @@ func (msg *jsonrpcMessage) isUnsubscribe() bool { } func (msg *jsonrpcMessage) namespace() string { - elem := strings.SplitN(msg.Method, serviceMethodSeparator, 2) - return elem[0] + before, _, _ := strings.Cut(msg.Method, serviceMethodSeparator) + return before } func (msg *jsonrpcMessage) String() string { diff --git a/rpc/service.go b/rpc/service.go index 8485cab3aa..a180b8db93 100644 --- a/rpc/service.go +++ b/rpc/service.go @@ -93,13 +93,13 @@ func (r *serviceRegistry) registerName(name string, rcvr interface{}) error { // callback returns the callback corresponding to the given RPC method name. func (r *serviceRegistry) callback(method string) *callback { - elem := strings.SplitN(method, serviceMethodSeparator, 2) - if len(elem) != 2 { + before, after, found := strings.Cut(method, serviceMethodSeparator) + if !found { return nil } r.mu.Lock() defer r.mu.Unlock() - return r.services[elem[0]].callbacks[elem[1]] + return r.services[before].callbacks[after] } // subscription returns a subscription callback in the given service. From 5bf8769fb081c5f17f23b1b55e508789f0a8e632 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Wed, 15 Nov 2023 16:20:34 +0100 Subject: [PATCH 069/223] ethdb/memorydb, trie: reduced allocations (#28473) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * trie: use pooling of iterator states in iterator The node iterator burns through a lot of memory while iterating a trie, and a lot of that can be avoided by using a fairly small pool (max 40 items). name old time/op new time/op delta Iterator-8 6.22ms ± 3% 5.40ms ± 6% -13.18% (p=0.008 n=5+5) name old alloc/op new alloc/op delta Iterator-8 2.36MB ± 0% 1.67MB ± 0% -29.23% (p=0.008 n=5+5) name old allocs/op new allocs/op delta Iterator-8 37.0k ± 0% 29.8k ± 0% ~ (p=0.079 n=4+5) * ethdb/memorydb: avoid one copying of key By making the transformation from []byte to string at an earlier point, we save an allocation which otherwise happens later on. name old time/op new time/op delta BatchAllocs-8 412µs ± 6% 382µs ± 2% -7.18% (p=0.016 n=5+4) name old alloc/op new alloc/op delta BatchAllocs-8 480kB ± 0% 490kB ± 0% +1.93% (p=0.008 n=5+5) name old allocs/op new allocs/op delta BatchAllocs-8 3.03k ± 0% 2.03k ± 0% -32.98% (p=0.008 n=5+5) --- ethdb/memorydb/memorydb.go | 14 +++---- ethdb/memorydb/memorydb_test.go | 18 +++++++++ trie/iterator.go | 71 +++++++++++++++++++++------------ trie/iterator_test.go | 12 ++++++ trie/sync_test.go | 2 +- 5 files changed, 83 insertions(+), 34 deletions(-) diff --git a/ethdb/memorydb/memorydb.go b/ethdb/memorydb/memorydb.go index f9f74322b5..2a939f9a18 100644 --- a/ethdb/memorydb/memorydb.go +++ b/ethdb/memorydb/memorydb.go @@ -207,7 +207,7 @@ func (db *Database) Len() int { // keyvalue is a key-value tuple tagged with a deletion field to allow creating // memory-database write batches. type keyvalue struct { - key []byte + key string value []byte delete bool } @@ -222,14 +222,14 @@ type batch struct { // Put inserts the given value into the batch for later committing. func (b *batch) Put(key, value []byte) error { - b.writes = append(b.writes, keyvalue{common.CopyBytes(key), common.CopyBytes(value), false}) + b.writes = append(b.writes, keyvalue{string(key), common.CopyBytes(value), false}) b.size += len(key) + len(value) return nil } // Delete inserts the a key removal into the batch for later committing. func (b *batch) Delete(key []byte) error { - b.writes = append(b.writes, keyvalue{common.CopyBytes(key), nil, true}) + b.writes = append(b.writes, keyvalue{string(key), nil, true}) b.size += len(key) return nil } @@ -249,10 +249,10 @@ func (b *batch) Write() error { } for _, keyvalue := range b.writes { if keyvalue.delete { - delete(b.db.db, string(keyvalue.key)) + delete(b.db.db, keyvalue.key) continue } - b.db.db[string(keyvalue.key)] = keyvalue.value + b.db.db[keyvalue.key] = keyvalue.value } return nil } @@ -267,12 +267,12 @@ func (b *batch) Reset() { func (b *batch) Replay(w ethdb.KeyValueWriter) error { for _, keyvalue := range b.writes { if keyvalue.delete { - if err := w.Delete(keyvalue.key); err != nil { + if err := w.Delete([]byte(keyvalue.key)); err != nil { return err } continue } - if err := w.Put(keyvalue.key, keyvalue.value); err != nil { + if err := w.Put([]byte(keyvalue.key), keyvalue.value); err != nil { return err } } diff --git a/ethdb/memorydb/memorydb_test.go b/ethdb/memorydb/memorydb_test.go index dba18ad306..51499c3b1f 100644 --- a/ethdb/memorydb/memorydb_test.go +++ b/ethdb/memorydb/memorydb_test.go @@ -17,6 +17,7 @@ package memorydb import ( + "encoding/binary" "testing" "github.com/ethereum/go-ethereum/ethdb" @@ -30,3 +31,20 @@ func TestMemoryDB(t *testing.T) { }) }) } + +// BenchmarkBatchAllocs measures the time/allocs for storing 120 kB of data +func BenchmarkBatchAllocs(b *testing.B) { + b.ReportAllocs() + var key = make([]byte, 20) + var val = make([]byte, 100) + // 120 * 1_000 -> 120_000 == 120kB + for i := 0; i < b.N; i++ { + batch := New().NewBatch() + for j := uint64(0); j < 1000; j++ { + binary.BigEndian.PutUint64(key, j) + binary.BigEndian.PutUint64(val, j) + batch.Put(key, val) + } + batch.Write() + } +} diff --git a/trie/iterator.go b/trie/iterator.go index 6f054a7245..83ccc0740f 100644 --- a/trie/iterator.go +++ b/trie/iterator.go @@ -144,7 +144,8 @@ type nodeIterator struct { path []byte // Path to the current node err error // Failure set in case of an internal error in the iterator - resolver NodeResolver // optional node resolver for avoiding disk hits + resolver NodeResolver // optional node resolver for avoiding disk hits + pool []*nodeIteratorState // local pool for iteratorstates } // errIteratorEnd is stored in nodeIterator.err when iteration is done. @@ -172,6 +173,24 @@ func newNodeIterator(trie *Trie, start []byte) NodeIterator { return it } +func (it *nodeIterator) putInPool(item *nodeIteratorState) { + if len(it.pool) < 40 { + item.node = nil + it.pool = append(it.pool, item) + } +} + +func (it *nodeIterator) getFromPool() *nodeIteratorState { + idx := len(it.pool) - 1 + if idx < 0 { + return new(nodeIteratorState) + } + el := it.pool[idx] + it.pool[idx] = nil + it.pool = it.pool[:idx] + return el +} + func (it *nodeIterator) AddResolver(resolver NodeResolver) { it.resolver = resolver } @@ -423,8 +442,9 @@ func (st *nodeIteratorState) resolve(it *nodeIterator, path []byte) error { return nil } -func findChild(n *fullNode, index int, path []byte, ancestor common.Hash) (node, *nodeIteratorState, []byte, int) { +func (it *nodeIterator) findChild(n *fullNode, index int, ancestor common.Hash) (node, *nodeIteratorState, []byte, int) { var ( + path = it.path child node state *nodeIteratorState childPath []byte @@ -433,13 +453,12 @@ func findChild(n *fullNode, index int, path []byte, ancestor common.Hash) (node, if n.Children[index] != nil { child = n.Children[index] hash, _ := child.cache() - state = &nodeIteratorState{ - hash: common.BytesToHash(hash), - node: child, - parent: ancestor, - index: -1, - pathlen: len(path), - } + state = it.getFromPool() + state.hash = common.BytesToHash(hash) + state.node = child + state.parent = ancestor + state.index = -1 + state.pathlen = len(path) childPath = append(childPath, path...) childPath = append(childPath, byte(index)) return child, state, childPath, index @@ -452,7 +471,7 @@ func (it *nodeIterator) nextChild(parent *nodeIteratorState, ancestor common.Has switch node := parent.node.(type) { case *fullNode: // Full node, move to the first non-nil child. - if child, state, path, index := findChild(node, parent.index+1, it.path, ancestor); child != nil { + if child, state, path, index := it.findChild(node, parent.index+1, ancestor); child != nil { parent.index = index - 1 return state, path, true } @@ -460,13 +479,12 @@ func (it *nodeIterator) nextChild(parent *nodeIteratorState, ancestor common.Has // Short node, return the pointer singleton child if parent.index < 0 { hash, _ := node.Val.cache() - state := &nodeIteratorState{ - hash: common.BytesToHash(hash), - node: node.Val, - parent: ancestor, - index: -1, - pathlen: len(it.path), - } + state := it.getFromPool() + state.hash = common.BytesToHash(hash) + state.node = node.Val + state.parent = ancestor + state.index = -1 + state.pathlen = len(it.path) path := append(it.path, node.Key...) return state, path, true } @@ -480,7 +498,7 @@ func (it *nodeIterator) nextChildAt(parent *nodeIteratorState, ancestor common.H switch n := parent.node.(type) { case *fullNode: // Full node, move to the first non-nil child before the desired key position - child, state, path, index := findChild(n, parent.index+1, it.path, ancestor) + child, state, path, index := it.findChild(n, parent.index+1, ancestor) if child == nil { // No more children in this fullnode return parent, it.path, false @@ -492,7 +510,7 @@ func (it *nodeIterator) nextChildAt(parent *nodeIteratorState, ancestor common.H } // The child is before the seek position. Try advancing for { - nextChild, nextState, nextPath, nextIndex := findChild(n, index+1, it.path, ancestor) + nextChild, nextState, nextPath, nextIndex := it.findChild(n, index+1, ancestor) // If we run out of children, or skipped past the target, return the // previous one if nextChild == nil || bytes.Compare(nextPath, key) >= 0 { @@ -506,13 +524,12 @@ func (it *nodeIterator) nextChildAt(parent *nodeIteratorState, ancestor common.H // Short node, return the pointer singleton child if parent.index < 0 { hash, _ := n.Val.cache() - state := &nodeIteratorState{ - hash: common.BytesToHash(hash), - node: n.Val, - parent: ancestor, - index: -1, - pathlen: len(it.path), - } + state := it.getFromPool() + state.hash = common.BytesToHash(hash) + state.node = n.Val + state.parent = ancestor + state.index = -1 + state.pathlen = len(it.path) path := append(it.path, n.Key...) return state, path, true } @@ -533,6 +550,8 @@ func (it *nodeIterator) pop() { it.path = it.path[:last.pathlen] it.stack[len(it.stack)-1] = nil it.stack = it.stack[:len(it.stack)-1] + // last is now unused + it.putInPool(last) } func compareNodes(a, b NodeIterator) int { diff --git a/trie/iterator_test.go b/trie/iterator_test.go index 57d1f06a16..9679b49ca7 100644 --- a/trie/iterator_test.go +++ b/trie/iterator_test.go @@ -616,3 +616,15 @@ func isTrieNode(scheme string, key, val []byte) (bool, []byte, common.Hash) { } return true, path, hash } + +func BenchmarkIterator(b *testing.B) { + diskDb, srcDb, tr, _ := makeTestTrie(rawdb.HashScheme) + root := tr.Hash() + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + if err := checkTrieConsistency(diskDb, srcDb.Scheme(), root, false); err != nil { + b.Fatal(err) + } + } +} diff --git a/trie/sync_test.go b/trie/sync_test.go index 3b7986ef67..7032c6d2f7 100644 --- a/trie/sync_test.go +++ b/trie/sync_test.go @@ -571,7 +571,7 @@ func testIncompleteSync(t *testing.T, scheme string) { hash := crypto.Keccak256Hash(result.Data) if hash != root { addedKeys = append(addedKeys, result.Path) - addedHashes = append(addedHashes, crypto.Keccak256Hash(result.Data)) + addedHashes = append(addedHashes, hash) } } // Fetch the next batch to retrieve From 8b78d6a7a0c10fe3f17c63e8cd9a8a6da5adf39b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Anda=20Estensen?= Date: Fri, 17 Nov 2023 17:48:06 +0300 Subject: [PATCH 070/223] Dockerfile: update Go to 1.21 (#28538) --- Dockerfile.alltools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.alltools b/Dockerfile.alltools index 70ccc39825..c317da25fa 100644 --- a/Dockerfile.alltools +++ b/Dockerfile.alltools @@ -4,7 +4,7 @@ ARG VERSION="" ARG BUILDNUM="" # Build Geth in a stock Go builder container -FROM golang:1.20-alpine as builder +FROM golang:1.21-alpine as builder RUN apk add --no-cache gcc musl-dev linux-headers git From c8a22020287e0260e2310a1b91a1aa9b795ca445 Mon Sep 17 00:00:00 2001 From: danceratopz Date: Fri, 17 Nov 2023 17:56:21 +0300 Subject: [PATCH 071/223] cmd/evm: validate blockchain tests poststate account storage (#28443) This PR verifies the accounts' storage as specified in a blockchain test's postState field The expect-section, it does really only check that the test works. It's meant for the test-author to verify that "If the test does what it's supposed to, then the nonce of X should be 2, and the slot Y at Z should be 0x123. This expect-section is not exhaustive (not full post-state) It is also not auto-generated, but put there manually by the author. We can still check it, as a test-sanity-check, in geth --- tests/block_test_util.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/block_test_util.go b/tests/block_test_util.go index ad1d34fb2b..d7409f8000 100644 --- a/tests/block_test_util.go +++ b/tests/block_test_util.go @@ -330,6 +330,12 @@ func (t *BlockTest) validatePostState(statedb *state.StateDB) error { if nonce2 != acct.Nonce { return fmt.Errorf("account nonce mismatch for addr: %s want: %d have: %d", addr, acct.Nonce, nonce2) } + for k, v := range acct.Storage { + v2 := statedb.GetState(addr, k) + if v2 != v { + return fmt.Errorf("account storage mismatch for addr: %s, slot: %x, want: %x, have: %x", addr, k, v, v2) + } + } } return nil } From 77cb21da2c0fd3d04f9532a05b59a04e0cb9d7c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Anda=20Estensen?= Date: Mon, 20 Nov 2023 10:20:59 +0300 Subject: [PATCH 072/223] signer: run tests in parallel (#28536) marks tests as parallel-safe in package signer --- signer/core/api_test.go | 2 ++ .../core/apitypes/signed_data_internal_test.go | 7 +++++++ signer/core/apitypes/types_test.go | 1 + signer/core/signed_data_test.go | 16 ++++++++++++++++ signer/core/validation_test.go | 1 + signer/fourbyte/abi_test.go | 3 +++ signer/fourbyte/fourbyte_test.go | 8 +++++--- signer/fourbyte/validation_test.go | 1 + signer/rules/rules_test.go | 8 ++++++++ signer/storage/aes_gcm_storage_test.go | 4 ++++ 10 files changed, 48 insertions(+), 3 deletions(-) diff --git a/signer/core/api_test.go b/signer/core/api_test.go index 5a9de161b3..69229dadaf 100644 --- a/signer/core/api_test.go +++ b/signer/core/api_test.go @@ -169,6 +169,7 @@ func list(ui *headlessUi, api *core.SignerAPI, t *testing.T) ([]common.Address, } func TestNewAcc(t *testing.T) { + t.Parallel() api, control := setup(t) verifyNum := func(num int) { list, err := list(control, api, t) @@ -235,6 +236,7 @@ func mkTestTx(from common.MixedcaseAddress) apitypes.SendTxArgs { } func TestSignTx(t *testing.T) { + t.Parallel() var ( list []common.Address res, res2 *ethapi.SignTransactionResult diff --git a/signer/core/apitypes/signed_data_internal_test.go b/signer/core/apitypes/signed_data_internal_test.go index af7fc93ed8..8067893c21 100644 --- a/signer/core/apitypes/signed_data_internal_test.go +++ b/signer/core/apitypes/signed_data_internal_test.go @@ -27,6 +27,7 @@ import ( ) func TestBytesPadding(t *testing.T) { + t.Parallel() tests := []struct { Type string Input []byte @@ -87,6 +88,7 @@ func TestBytesPadding(t *testing.T) { } func TestParseAddress(t *testing.T) { + t.Parallel() tests := []struct { Input interface{} Output []byte // nil => error @@ -136,6 +138,7 @@ func TestParseAddress(t *testing.T) { } func TestParseBytes(t *testing.T) { + t.Parallel() for i, tt := range []struct { v interface{} exp []byte @@ -170,6 +173,7 @@ func TestParseBytes(t *testing.T) { } func TestParseInteger(t *testing.T) { + t.Parallel() for i, tt := range []struct { t string v interface{} @@ -200,6 +204,7 @@ func TestParseInteger(t *testing.T) { } func TestConvertStringDataToSlice(t *testing.T) { + t.Parallel() slice := []string{"a", "b", "c"} var it interface{} = slice _, err := convertDataToSlice(it) @@ -209,6 +214,7 @@ func TestConvertStringDataToSlice(t *testing.T) { } func TestConvertUint256DataToSlice(t *testing.T) { + t.Parallel() slice := []*math.HexOrDecimal256{ math.NewHexOrDecimal256(1), math.NewHexOrDecimal256(2), @@ -222,6 +228,7 @@ func TestConvertUint256DataToSlice(t *testing.T) { } func TestConvertAddressDataToSlice(t *testing.T) { + t.Parallel() slice := []common.Address{ common.HexToAddress("0x0000000000000000000000000000000000000001"), common.HexToAddress("0x0000000000000000000000000000000000000002"), diff --git a/signer/core/apitypes/types_test.go b/signer/core/apitypes/types_test.go index eef3cae00c..b5aa3d1e93 100644 --- a/signer/core/apitypes/types_test.go +++ b/signer/core/apitypes/types_test.go @@ -19,6 +19,7 @@ package apitypes import "testing" func TestIsPrimitive(t *testing.T) { + t.Parallel() // Expected positives for i, tc := range []string{ "int24", "int24[]", "uint88", "uint88[]", "uint", "uint[]", "int256", "int256[]", diff --git a/signer/core/signed_data_test.go b/signer/core/signed_data_test.go index 3e3837cae2..1cf8b4bf38 100644 --- a/signer/core/signed_data_test.go +++ b/signer/core/signed_data_test.go @@ -183,6 +183,7 @@ var typedData = apitypes.TypedData{ } func TestSignData(t *testing.T) { + t.Parallel() api, control := setup(t) //Create two accounts createAccount(control, api, t) @@ -248,6 +249,7 @@ func TestSignData(t *testing.T) { } func TestDomainChainId(t *testing.T) { + t.Parallel() withoutChainID := apitypes.TypedData{ Types: apitypes.Types{ "EIP712Domain": []apitypes.Type{ @@ -289,6 +291,7 @@ func TestDomainChainId(t *testing.T) { } func TestHashStruct(t *testing.T) { + t.Parallel() hash, err := typedData.HashStruct(typedData.PrimaryType, typedData.Message) if err != nil { t.Fatal(err) @@ -309,6 +312,7 @@ func TestHashStruct(t *testing.T) { } func TestEncodeType(t *testing.T) { + t.Parallel() domainTypeEncoding := string(typedData.EncodeType("EIP712Domain")) if domainTypeEncoding != "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" { t.Errorf("Expected different encodeType result (got %s)", domainTypeEncoding) @@ -321,6 +325,7 @@ func TestEncodeType(t *testing.T) { } func TestTypeHash(t *testing.T) { + t.Parallel() mailTypeHash := fmt.Sprintf("0x%s", common.Bytes2Hex(typedData.TypeHash(typedData.PrimaryType))) if mailTypeHash != "0xa0cedeb2dc280ba39b857546d74f5549c3a1d7bdc2dd96bf881f76108e23dac2" { t.Errorf("Expected different typeHash result (got %s)", mailTypeHash) @@ -328,6 +333,7 @@ func TestTypeHash(t *testing.T) { } func TestEncodeData(t *testing.T) { + t.Parallel() hash, err := typedData.EncodeData(typedData.PrimaryType, typedData.Message, 0) if err != nil { t.Fatal(err) @@ -339,6 +345,7 @@ func TestEncodeData(t *testing.T) { } func TestFormatter(t *testing.T) { + t.Parallel() var d apitypes.TypedData err := json.Unmarshal([]byte(jsonTypedData), &d) if err != nil { @@ -368,6 +375,7 @@ func sign(typedData apitypes.TypedData) ([]byte, []byte, error) { } func TestJsonFiles(t *testing.T) { + t.Parallel() testfiles, err := os.ReadDir("testdata/") if err != nil { t.Fatalf("failed reading files: %v", err) @@ -402,6 +410,7 @@ func TestJsonFiles(t *testing.T) { // TestFuzzerFiles tests some files that have been found by fuzzing to cause // crashes or hangs. func TestFuzzerFiles(t *testing.T) { + t.Parallel() corpusdir := path.Join("testdata", "fuzzing") testfiles, err := os.ReadDir(corpusdir) if err != nil { @@ -514,6 +523,7 @@ var gnosisTx = ` // TestGnosisTypedData tests the scenario where a user submits a full EIP-712 // struct without using the gnosis-specific endpoint func TestGnosisTypedData(t *testing.T) { + t.Parallel() var td apitypes.TypedData err := json.Unmarshal([]byte(gnosisTypedData), &td) if err != nil { @@ -532,6 +542,7 @@ func TestGnosisTypedData(t *testing.T) { // TestGnosisCustomData tests the scenario where a user submits only the gnosis-safe // specific data, and we fill the TypedData struct on our side func TestGnosisCustomData(t *testing.T) { + t.Parallel() var tx core.GnosisSafeTx err := json.Unmarshal([]byte(gnosisTx), &tx) if err != nil { @@ -644,6 +655,7 @@ var gnosisTxWithChainId = ` ` func TestGnosisTypedDataWithChainId(t *testing.T) { + t.Parallel() var td apitypes.TypedData err := json.Unmarshal([]byte(gnosisTypedDataWithChainId), &td) if err != nil { @@ -662,6 +674,7 @@ func TestGnosisTypedDataWithChainId(t *testing.T) { // TestGnosisCustomData tests the scenario where a user submits only the gnosis-safe // specific data, and we fill the TypedData struct on our side func TestGnosisCustomDataWithChainId(t *testing.T) { + t.Parallel() var tx core.GnosisSafeTx err := json.Unmarshal([]byte(gnosisTxWithChainId), &tx) if err != nil { @@ -813,6 +826,7 @@ var complexTypedData = ` ` func TestComplexTypedData(t *testing.T) { + t.Parallel() var td apitypes.TypedData err := json.Unmarshal([]byte(complexTypedData), &td) if err != nil { @@ -829,6 +843,7 @@ func TestComplexTypedData(t *testing.T) { } func TestGnosisSafe(t *testing.T) { + t.Parallel() // json missing chain id js := "{\n \"safe\": \"0x899FcB1437DE65DC6315f5a69C017dd3F2837557\",\n \"to\": \"0x899FcB1437DE65DC6315f5a69C017dd3F2837557\",\n \"value\": \"0\",\n \"data\": \"0x0d582f13000000000000000000000000d3ed2b8756b942c98c851722f3bd507a17b4745f0000000000000000000000000000000000000000000000000000000000000005\",\n \"operation\": 0,\n \"gasToken\": \"0x0000000000000000000000000000000000000000\",\n \"safeTxGas\": 0,\n \"baseGas\": 0,\n \"gasPrice\": \"0\",\n \"refundReceiver\": \"0x0000000000000000000000000000000000000000\",\n \"nonce\": 0,\n \"executionDate\": null,\n \"submissionDate\": \"2022-02-23T14:09:00.018475Z\",\n \"modified\": \"2022-12-01T15:52:21.214357Z\",\n \"blockNumber\": null,\n \"transactionHash\": null,\n \"safeTxHash\": \"0x6f0f5cffee69087c9d2471e477a63cab2ae171cf433e754315d558d8836274f4\",\n \"executor\": null,\n \"isExecuted\": false,\n \"isSuccessful\": null,\n \"ethGasPrice\": null,\n \"maxFeePerGas\": null,\n \"maxPriorityFeePerGas\": null,\n \"gasUsed\": null,\n \"fee\": null,\n \"origin\": \"https://gnosis-safe.io\",\n \"dataDecoded\": {\n \"method\": \"addOwnerWithThreshold\",\n \"parameters\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"value\": \"0xD3Ed2b8756b942c98c851722F3bd507a17B4745F\"\n },\n {\n \"name\": \"_threshold\",\n \"type\": \"uint256\",\n \"value\": \"5\"\n }\n ]\n },\n \"confirmationsRequired\": 4,\n \"confirmations\": [\n {\n \"owner\": \"0x30B714E065B879F5c042A75Bb40a220A0BE27966\",\n \"submissionDate\": \"2022-03-01T14:56:22Z\",\n \"transactionHash\": \"0x6d0a9c83ac7578ef3be1f2afce089fb83b619583dfa779b82f4422fd64ff3ee9\",\n \"signature\": \"0x00000000000000000000000030b714e065b879f5c042a75bb40a220a0be27966000000000000000000000000000000000000000000000000000000000000000001\",\n \"signatureType\": \"APPROVED_HASH\"\n },\n {\n \"owner\": \"0x8300dFEa25Da0eb744fC0D98c23283F86AB8c10C\",\n \"submissionDate\": \"2022-12-01T15:52:21.214357Z\",\n \"transactionHash\": null,\n \"signature\": \"0xbce73de4cc6ee208e933a93c794dcb8ba1810f9848d1eec416b7be4dae9854c07dbf1720e60bbd310d2159197a380c941cfdb55b3ce58f9dd69efd395d7bef881b\",\n \"signatureType\": \"EOA\"\n }\n ],\n \"trusted\": true,\n \"signatures\": null\n}\n" var gnosisTx core.GnosisSafeTx @@ -984,6 +999,7 @@ var complexTypedDataLCRefType = ` ` func TestComplexTypedDataWithLowercaseReftype(t *testing.T) { + t.Parallel() var td apitypes.TypedData err := json.Unmarshal([]byte(complexTypedDataLCRefType), &td) if err != nil { diff --git a/signer/core/validation_test.go b/signer/core/validation_test.go index 6adaa21afd..7f733b0bb1 100644 --- a/signer/core/validation_test.go +++ b/signer/core/validation_test.go @@ -19,6 +19,7 @@ package core import "testing" func TestPasswordValidation(t *testing.T) { + t.Parallel() testcases := []struct { pw string shouldFail bool diff --git a/signer/fourbyte/abi_test.go b/signer/fourbyte/abi_test.go index 68c027ecea..9656732dff 100644 --- a/signer/fourbyte/abi_test.go +++ b/signer/fourbyte/abi_test.go @@ -52,6 +52,7 @@ func verify(t *testing.T, jsondata, calldata string, exp []interface{}) { } func TestNewUnpacker(t *testing.T) { + t.Parallel() type unpackTest struct { jsondata string calldata string @@ -97,6 +98,7 @@ func TestNewUnpacker(t *testing.T) { } func TestCalldataDecoding(t *testing.T) { + t.Parallel() // send(uint256) : a52c101e // compareAndApprove(address,uint256,uint256) : 751e1079 // issue(address[],uint256) : 42958b54 @@ -159,6 +161,7 @@ func TestCalldataDecoding(t *testing.T) { } func TestMaliciousABIStrings(t *testing.T) { + t.Parallel() tests := []string{ "func(uint256,uint256,[]uint256)", "func(uint256,uint256,uint256,)", diff --git a/signer/fourbyte/fourbyte_test.go b/signer/fourbyte/fourbyte_test.go index 017001f97b..a3dc3b5117 100644 --- a/signer/fourbyte/fourbyte_test.go +++ b/signer/fourbyte/fourbyte_test.go @@ -17,8 +17,8 @@ package fourbyte import ( + "encoding/json" "fmt" - "strings" "testing" "github.com/ethereum/go-ethereum/accounts/abi" @@ -27,18 +27,19 @@ import ( // Tests that all the selectors contained in the 4byte database are valid. func TestEmbeddedDatabase(t *testing.T) { + t.Parallel() db, err := New() if err != nil { t.Fatal(err) } + var abistruct abi.ABI for id, selector := range db.embedded { abistring, err := parseSelector(selector) if err != nil { t.Errorf("Failed to convert selector to ABI: %v", err) continue } - abistruct, err := abi.JSON(strings.NewReader(string(abistring))) - if err != nil { + if err := json.Unmarshal(abistring, &abistruct); err != nil { t.Errorf("Failed to parse ABI: %v", err) continue } @@ -55,6 +56,7 @@ func TestEmbeddedDatabase(t *testing.T) { // Tests that custom 4byte datasets can be handled too. func TestCustomDatabase(t *testing.T) { + t.Parallel() // Create a new custom 4byte database with no embedded component tmpdir := t.TempDir() filename := fmt.Sprintf("%s/4byte_custom.json", tmpdir) diff --git a/signer/fourbyte/validation_test.go b/signer/fourbyte/validation_test.go index 1b0ab507a8..74fed9fe01 100644 --- a/signer/fourbyte/validation_test.go +++ b/signer/fourbyte/validation_test.go @@ -73,6 +73,7 @@ type txtestcase struct { } func TestTransactionValidation(t *testing.T) { + t.Parallel() var ( // use empty db, there are other tests for the abi-specific stuff db = newEmpty() diff --git a/signer/rules/rules_test.go b/signer/rules/rules_test.go index c35da8ecc1..d27de22b29 100644 --- a/signer/rules/rules_test.go +++ b/signer/rules/rules_test.go @@ -124,6 +124,7 @@ func initRuleEngine(js string) (*rulesetUI, error) { } func TestListRequest(t *testing.T) { + t.Parallel() accs := make([]accounts.Account, 5) for i := range accs { @@ -152,6 +153,7 @@ func TestListRequest(t *testing.T) { } func TestSignTxRequest(t *testing.T) { + t.Parallel() js := ` function ApproveTx(r){ console.log("transaction.from", r.transaction.from); @@ -244,6 +246,7 @@ func (d *dummyUI) OnSignerStartup(info core.StartupInfo) { // TestForwarding tests that the rule-engine correctly dispatches requests to the next caller func TestForwarding(t *testing.T) { + t.Parallel() js := "" ui := &dummyUI{make([]string, 0)} jsBackend := storage.NewEphemeralStorage() @@ -271,6 +274,7 @@ func TestForwarding(t *testing.T) { } func TestMissingFunc(t *testing.T) { + t.Parallel() r, err := initRuleEngine(JS) if err != nil { t.Errorf("Couldn't create evaluator %v", err) @@ -293,6 +297,7 @@ func TestMissingFunc(t *testing.T) { t.Logf("Err %v", err) } func TestStorage(t *testing.T) { + t.Parallel() js := ` function testStorage(){ storage.put("mykey", "myvalue") @@ -455,6 +460,7 @@ func dummySigned(value *big.Int) *types.Transaction { } func TestLimitWindow(t *testing.T) { + t.Parallel() r, err := initRuleEngine(ExampleTxWindow) if err != nil { t.Errorf("Couldn't create evaluator %v", err) @@ -540,6 +546,7 @@ func (d *dontCallMe) OnApprovedTx(tx ethapi.SignTransactionResult) { // if it does, that would be bad since developers may rely on that to store data, // instead of using the disk-based data storage func TestContextIsCleared(t *testing.T) { + t.Parallel() js := ` function ApproveTx(){ if (typeof foobar == 'undefined') { @@ -571,6 +578,7 @@ func TestContextIsCleared(t *testing.T) { } func TestSignData(t *testing.T) { + t.Parallel() js := `function ApproveListing(){ return "Approve" } diff --git a/signer/storage/aes_gcm_storage_test.go b/signer/storage/aes_gcm_storage_test.go index e1fea59280..74d407e431 100644 --- a/signer/storage/aes_gcm_storage_test.go +++ b/signer/storage/aes_gcm_storage_test.go @@ -29,6 +29,7 @@ import ( ) func TestEncryption(t *testing.T) { + t.Parallel() // key := []byte("AES256Key-32Characters1234567890") // plaintext := []byte(value) key := []byte("AES256Key-32Characters1234567890") @@ -51,6 +52,7 @@ func TestEncryption(t *testing.T) { } func TestFileStorage(t *testing.T) { + t.Parallel() a := map[string]storedCredential{ "secret": { Iv: common.Hex2Bytes("cdb30036279601aeee60f16b"), @@ -89,6 +91,7 @@ func TestFileStorage(t *testing.T) { } } func TestEnd2End(t *testing.T) { + t.Parallel() log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(3), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) d := t.TempDir() @@ -109,6 +112,7 @@ func TestEnd2End(t *testing.T) { } func TestSwappedKeys(t *testing.T) { + t.Parallel() // It should not be possible to swap the keys/values, so that // K1:V1, K2:V2 can be swapped into K1:V2, K2:V1 log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(3), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) From a73748258f23d285835d9881398e52212b2097ed Mon Sep 17 00:00:00 2001 From: levisyin <150114626+levisyin@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:44:05 +0800 Subject: [PATCH 073/223] accounts, cmd: fix typos (#28526) --- accounts/abi/argument.go | 4 ++-- accounts/abi/bind/util_test.go | 4 ++-- accounts/abi/unpack_test.go | 4 ++-- accounts/keystore/passphrase_test.go | 2 +- accounts/keystore/watch.go | 2 +- accounts/url_test.go | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/accounts/abi/argument.go b/accounts/abi/argument.go index 2e48d539e0..fa5461895a 100644 --- a/accounts/abi/argument.go +++ b/accounts/abi/argument.go @@ -80,7 +80,7 @@ func (arguments Arguments) isTuple() bool { func (arguments Arguments) Unpack(data []byte) ([]interface{}, error) { if len(data) == 0 { if len(arguments.NonIndexed()) != 0 { - return nil, errors.New("abi: attempting to unmarshall an empty string while arguments are expected") + return nil, errors.New("abi: attempting to unmarshal an empty string while arguments are expected") } return make([]interface{}, 0), nil } @@ -95,7 +95,7 @@ func (arguments Arguments) UnpackIntoMap(v map[string]interface{}, data []byte) } if len(data) == 0 { if len(arguments.NonIndexed()) != 0 { - return errors.New("abi: attempting to unmarshall an empty string while arguments are expected") + return errors.New("abi: attempting to unmarshal an empty string while arguments are expected") } return nil // Nothing to unmarshal, return } diff --git a/accounts/abi/bind/util_test.go b/accounts/abi/bind/util_test.go index 75fbc91ceb..b34c5bc226 100644 --- a/accounts/abi/bind/util_test.go +++ b/accounts/abi/bind/util_test.go @@ -121,7 +121,7 @@ func TestWaitDeployedCornerCases(t *testing.T) { backend.Commit() notContentCreation := errors.New("tx is not contract creation") if _, err := bind.WaitDeployed(ctx, backend, tx); err.Error() != notContentCreation.Error() { - t.Errorf("error missmatch: want %q, got %q, ", notContentCreation, err) + t.Errorf("error mismatch: want %q, got %q, ", notContentCreation, err) } // Create a transaction that is not mined. @@ -131,7 +131,7 @@ func TestWaitDeployedCornerCases(t *testing.T) { go func() { contextCanceled := errors.New("context canceled") if _, err := bind.WaitDeployed(ctx, backend, tx); err.Error() != contextCanceled.Error() { - t.Errorf("error missmatch: want %q, got %q, ", contextCanceled, err) + t.Errorf("error mismatch: want %q, got %q, ", contextCanceled, err) } }() diff --git a/accounts/abi/unpack_test.go b/accounts/abi/unpack_test.go index 6dd2db0d58..a7ee1d9202 100644 --- a/accounts/abi/unpack_test.go +++ b/accounts/abi/unpack_test.go @@ -206,13 +206,13 @@ var unpackTests = []unpackTest{ def: `[{"type":"bool"}]`, enc: "", want: false, - err: "abi: attempting to unmarshall an empty string while arguments are expected", + err: "abi: attempting to unmarshal an empty string while arguments are expected", }, { def: `[{"type":"bytes32","indexed":true},{"type":"uint256","indexed":false}]`, enc: "", want: false, - err: "abi: attempting to unmarshall an empty string while arguments are expected", + err: "abi: attempting to unmarshal an empty string while arguments are expected", }, { def: `[{"type":"bool","indexed":true},{"type":"uint64","indexed":true}]`, diff --git a/accounts/keystore/passphrase_test.go b/accounts/keystore/passphrase_test.go index 1356b31780..1de43a96da 100644 --- a/accounts/keystore/passphrase_test.go +++ b/accounts/keystore/passphrase_test.go @@ -54,7 +54,7 @@ func TestKeyEncryptDecrypt(t *testing.T) { // Recrypt with a new password and start over password += "new data appended" // nolint: gosec if keyjson, err = EncryptKey(key, password, veryLightScryptN, veryLightScryptP); err != nil { - t.Errorf("test %d: failed to recrypt key %v", i, err) + t.Errorf("test %d: failed to re-encrypt key %v", i, err) } } } diff --git a/accounts/keystore/watch.go b/accounts/keystore/watch.go index a9f87e7c32..1bef321cd1 100644 --- a/accounts/keystore/watch.go +++ b/accounts/keystore/watch.go @@ -125,7 +125,7 @@ func (w *watcher) loop() { if !ok { return } - log.Info("Filsystem watcher error", "err", err) + log.Info("Filesystem watcher error", "err", err) case <-debounce.C: w.ac.scanAccounts() rescanTriggered = false diff --git a/accounts/url_test.go b/accounts/url_test.go index 239aa06d22..52be4c558d 100644 --- a/accounts/url_test.go +++ b/accounts/url_test.go @@ -55,7 +55,7 @@ func TestURLMarshalJSON(t *testing.T) { url := URL{Scheme: "https", Path: "ethereum.org"} json, err := url.MarshalJSON() if err != nil { - t.Errorf("unexpcted error: %v", err) + t.Errorf("unexpected error: %v", err) } if string(json) != "\"https://ethereum.org\"" { t.Errorf("expected: %v, got: %v", "\"https://ethereum.org\"", string(json)) @@ -66,7 +66,7 @@ func TestURLUnmarshalJSON(t *testing.T) { url := &URL{} err := url.UnmarshalJSON([]byte("\"https://ethereum.org\"")) if err != nil { - t.Errorf("unexpcted error: %v", err) + t.Errorf("unexpected error: %v", err) } if url.Scheme != "https" { t.Errorf("expected: %v, got: %v", "https", url.Scheme) From 14a1e96b68386d28b26e82f4dae2a86062d3b355 Mon Sep 17 00:00:00 2001 From: jp-imx <109574657+jp-imx@users.noreply.github.com> Date: Mon, 20 Nov 2023 19:05:20 +1100 Subject: [PATCH 074/223] core/txpool/legacypool: respect nolocals-setting (#28435) This change adds a check to ensure that transactions added to the legacy pool are not treated as 'locals' if the global locals-management has been disabled. This change makes the pool enforce the --txpool.pricelimit setting. --- core/txpool/legacypool/legacypool.go | 3 ++ core/txpool/legacypool/legacypool_test.go | 44 +++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index 0e33923274..8450d89a2c 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -959,6 +959,9 @@ func (pool *LegacyPool) addRemoteSync(tx *types.Transaction) error { // If sync is set, the method will block until all internal maintenance related // to the add is finished. Only use this during tests for determinism! func (pool *LegacyPool) Add(txs []*types.Transaction, local, sync bool) []error { + // Do not treat as local if local transactions have been disabled + local = local && !pool.config.NoLocals + // Filter out known ones without obtaining the pool lock or recovering signatures var ( errs = make([]error, len(txs)) diff --git a/core/txpool/legacypool/legacypool_test.go b/core/txpool/legacypool/legacypool_test.go index a8f3dd7d86..0366a58d61 100644 --- a/core/txpool/legacypool/legacypool_test.go +++ b/core/txpool/legacypool/legacypool_test.go @@ -1492,6 +1492,50 @@ func TestRepricing(t *testing.T) { } } +func TestMinGasPriceEnforced(t *testing.T) { + t.Parallel() + + // Create the pool to test the pricing enforcement with + statedb, _ := state.New(types.EmptyRootHash, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) + blockchain := newTestBlockChain(eip1559Config, 10000000, statedb, new(event.Feed)) + + txPoolConfig := DefaultConfig + txPoolConfig.NoLocals = true + pool := New(txPoolConfig, blockchain) + pool.Init(new(big.Int).SetUint64(txPoolConfig.PriceLimit), blockchain.CurrentBlock(), makeAddressReserver()) + defer pool.Close() + + key, _ := crypto.GenerateKey() + testAddBalance(pool, crypto.PubkeyToAddress(key.PublicKey), big.NewInt(1000000)) + + tx := pricedTransaction(0, 100000, big.NewInt(2), key) + pool.SetGasTip(big.NewInt(tx.GasPrice().Int64() + 1)) + + if err := pool.addLocal(tx); !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + + if err := pool.Add([]*types.Transaction{tx}, true, false)[0]; !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + + tx = dynamicFeeTx(0, 100000, big.NewInt(3), big.NewInt(2), key) + pool.SetGasTip(big.NewInt(tx.GasTipCap().Int64() + 1)) + + if err := pool.addLocal(tx); !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + + if err := pool.Add([]*types.Transaction{tx}, true, false)[0]; !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + // Make sure the tx is accepted if locals are enabled + pool.config.NoLocals = false + if err := pool.Add([]*types.Transaction{tx}, true, false)[0]; err != nil { + t.Fatalf("Min tip enforced with locals enabled, error: %v", err) + } +} + // Tests that setting the transaction pool gas price to a higher value correctly // discards everything cheaper (legacy & dynamic fee) than that and moves any // gapped transactions back from the pending pool to the queue. From 460cc1673e583512cd83843ac2ab0186f0ddf1ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Anda=20Estensen?= Date: Mon, 20 Nov 2023 12:52:14 +0300 Subject: [PATCH 075/223] cmd: run tests in parallel (#28546) --- cmd/abigen/namefilter_test.go | 1 + cmd/clef/consolecmd_test.go | 13 ++++++++++--- cmd/devp2p/dns_route53_test.go | 2 ++ cmd/devp2p/internal/ethtest/chain_test.go | 2 ++ cmd/devp2p/internal/ethtest/suite_test.go | 2 ++ cmd/ethkey/message_test.go | 1 + cmd/evm/t8n_test.go | 3 +++ cmd/faucet/faucet_test.go | 1 + cmd/geth/accountcmd_test.go | 16 ++++++++++++++++ cmd/geth/consolecmd_test.go | 1 + cmd/geth/exportcmd_test.go | 1 + cmd/geth/les_test.go | 1 + cmd/geth/logging_test.go | 4 ++++ cmd/geth/version_check_test.go | 9 +++++++++ cmd/rlpdump/rlpdump_test.go | 2 ++ cmd/utils/export_test.go | 1 + cmd/utils/flags_test.go | 3 +++ cmd/utils/prompt_test.go | 3 +++ 18 files changed, 63 insertions(+), 3 deletions(-) diff --git a/cmd/abigen/namefilter_test.go b/cmd/abigen/namefilter_test.go index 42ba55be5e..ccee712018 100644 --- a/cmd/abigen/namefilter_test.go +++ b/cmd/abigen/namefilter_test.go @@ -8,6 +8,7 @@ import ( ) func TestNameFilter(t *testing.T) { + t.Parallel() _, err := newNameFilter("Foo") require.Error(t, err) _, err = newNameFilter("too/many:colons:Foo") diff --git a/cmd/clef/consolecmd_test.go b/cmd/clef/consolecmd_test.go index 283d7e8def..c8b37f5b92 100644 --- a/cmd/clef/consolecmd_test.go +++ b/cmd/clef/consolecmd_test.go @@ -26,12 +26,13 @@ import ( // TestImportRaw tests clef --importraw func TestImportRaw(t *testing.T) { + t.Parallel() keyPath := filepath.Join(os.TempDir(), fmt.Sprintf("%v-tempkey.test", t.Name())) os.WriteFile(keyPath, []byte("0102030405060708090a0102030405060708090a0102030405060708090a0102"), 0777) t.Cleanup(func() { os.Remove(keyPath) }) - t.Parallel() t.Run("happy-path", func(t *testing.T) { + t.Parallel() // Run clef importraw clef := runClef(t, "--suppress-bootwarn", "--lightkdf", "importraw", keyPath) clef.input("myverylongpassword").input("myverylongpassword") @@ -43,6 +44,7 @@ func TestImportRaw(t *testing.T) { }) // tests clef --importraw with mismatched passwords. t.Run("pw-mismatch", func(t *testing.T) { + t.Parallel() // Run clef importraw clef := runClef(t, "--suppress-bootwarn", "--lightkdf", "importraw", keyPath) clef.input("myverylongpassword1").input("myverylongpassword2").WaitExit() @@ -52,6 +54,7 @@ func TestImportRaw(t *testing.T) { }) // tests clef --importraw with a too short password. t.Run("short-pw", func(t *testing.T) { + t.Parallel() // Run clef importraw clef := runClef(t, "--suppress-bootwarn", "--lightkdf", "importraw", keyPath) clef.input("shorty").input("shorty").WaitExit() @@ -64,12 +67,13 @@ func TestImportRaw(t *testing.T) { // TestListAccounts tests clef --list-accounts func TestListAccounts(t *testing.T) { + t.Parallel() keyPath := filepath.Join(os.TempDir(), fmt.Sprintf("%v-tempkey.test", t.Name())) os.WriteFile(keyPath, []byte("0102030405060708090a0102030405060708090a0102030405060708090a0102"), 0777) t.Cleanup(func() { os.Remove(keyPath) }) - t.Parallel() t.Run("no-accounts", func(t *testing.T) { + t.Parallel() clef := runClef(t, "--suppress-bootwarn", "--lightkdf", "list-accounts") if out := string(clef.Output()); !strings.Contains(out, "The keystore is empty.") { t.Logf("Output\n%v", out) @@ -77,6 +81,7 @@ func TestListAccounts(t *testing.T) { } }) t.Run("one-account", func(t *testing.T) { + t.Parallel() // First, we need to import clef := runClef(t, "--suppress-bootwarn", "--lightkdf", "importraw", keyPath) clef.input("myverylongpassword").input("myverylongpassword").WaitExit() @@ -91,12 +96,13 @@ func TestListAccounts(t *testing.T) { // TestListWallets tests clef --list-wallets func TestListWallets(t *testing.T) { + t.Parallel() keyPath := filepath.Join(os.TempDir(), fmt.Sprintf("%v-tempkey.test", t.Name())) os.WriteFile(keyPath, []byte("0102030405060708090a0102030405060708090a0102030405060708090a0102"), 0777) t.Cleanup(func() { os.Remove(keyPath) }) - t.Parallel() t.Run("no-accounts", func(t *testing.T) { + t.Parallel() clef := runClef(t, "--suppress-bootwarn", "--lightkdf", "list-wallets") if out := string(clef.Output()); !strings.Contains(out, "There are no wallets.") { t.Logf("Output\n%v", out) @@ -104,6 +110,7 @@ func TestListWallets(t *testing.T) { } }) t.Run("one-account", func(t *testing.T) { + t.Parallel() // First, we need to import clef := runClef(t, "--suppress-bootwarn", "--lightkdf", "importraw", keyPath) clef.input("myverylongpassword").input("myverylongpassword").WaitExit() diff --git a/cmd/devp2p/dns_route53_test.go b/cmd/devp2p/dns_route53_test.go index e6eb516e6b..af39c70a36 100644 --- a/cmd/devp2p/dns_route53_test.go +++ b/cmd/devp2p/dns_route53_test.go @@ -26,6 +26,7 @@ import ( // This test checks that computeChanges/splitChanges create DNS changes in // leaf-added -> root-changed -> leaf-deleted order. func TestRoute53ChangeSort(t *testing.T) { + t.Parallel() testTree0 := map[string]recordSet{ "2kfjogvxdqtxxugbh7gs7naaai.n": {ttl: 3333, values: []string{ `"enr:-HW4QO1ml1DdXLeZLsUxewnthhUy8eROqkDyoMTyavfks9JlYQIlMFEUoM78PovJDPQrAkrb3LRJ-""vtrymDguKCOIAWAgmlkgnY0iXNlY3AyNTZrMaEDffaGfJzgGhUif1JqFruZlYmA31HzathLSWxfbq_QoQ4"`, @@ -164,6 +165,7 @@ func TestRoute53ChangeSort(t *testing.T) { // This test checks that computeChanges compares the quoted value of the records correctly. func TestRoute53NoChange(t *testing.T) { + t.Parallel() // Existing record set. testTree0 := map[string]recordSet{ "n": {ttl: rootTTL, values: []string{ diff --git a/cmd/devp2p/internal/ethtest/chain_test.go b/cmd/devp2p/internal/ethtest/chain_test.go index de6acfdcda..a3c7187f5d 100644 --- a/cmd/devp2p/internal/ethtest/chain_test.go +++ b/cmd/devp2p/internal/ethtest/chain_test.go @@ -30,6 +30,7 @@ import ( // TestEthProtocolNegotiation tests whether the test suite // can negotiate the highest eth protocol in a status message exchange func TestEthProtocolNegotiation(t *testing.T) { + t.Parallel() var tests = []struct { conn *Conn caps []p2p.Cap @@ -125,6 +126,7 @@ func TestEthProtocolNegotiation(t *testing.T) { // TestChain_GetHeaders tests whether the test suite can correctly // respond to a GetBlockHeaders request from a node. func TestChain_GetHeaders(t *testing.T) { + t.Parallel() chainFile, err := filepath.Abs("./testdata/chain.rlp") if err != nil { t.Fatal(err) diff --git a/cmd/devp2p/internal/ethtest/suite_test.go b/cmd/devp2p/internal/ethtest/suite_test.go index 7890c31348..b11cdb5b88 100644 --- a/cmd/devp2p/internal/ethtest/suite_test.go +++ b/cmd/devp2p/internal/ethtest/suite_test.go @@ -35,6 +35,7 @@ var ( ) func TestEthSuite(t *testing.T) { + t.Parallel() geth, err := runGeth() if err != nil { t.Fatalf("could not run geth: %v", err) @@ -56,6 +57,7 @@ func TestEthSuite(t *testing.T) { } func TestSnapSuite(t *testing.T) { + t.Parallel() geth, err := runGeth() if err != nil { t.Fatalf("could not run geth: %v", err) diff --git a/cmd/ethkey/message_test.go b/cmd/ethkey/message_test.go index 544a494cfa..389bb8c8ea 100644 --- a/cmd/ethkey/message_test.go +++ b/cmd/ethkey/message_test.go @@ -22,6 +22,7 @@ import ( ) func TestMessageSignVerify(t *testing.T) { + t.Parallel() tmpdir := t.TempDir() keyfile := filepath.Join(tmpdir, "the-keyfile") diff --git a/cmd/evm/t8n_test.go b/cmd/evm/t8n_test.go index 03503d11c3..ad36540de5 100644 --- a/cmd/evm/t8n_test.go +++ b/cmd/evm/t8n_test.go @@ -106,6 +106,7 @@ func (args *t8nOutput) get() (out []string) { } func TestT8n(t *testing.T) { + t.Parallel() tt := new(testT8n) tt.TestCmd = cmdtest.NewTestCmd(t, tt) for i, tc := range []struct { @@ -338,6 +339,7 @@ func (args *t9nInput) get(base string) []string { } func TestT9n(t *testing.T) { + t.Parallel() tt := new(testT8n) tt.TestCmd = cmdtest.NewTestCmd(t, tt) for i, tc := range []struct { @@ -473,6 +475,7 @@ func (args *b11rInput) get(base string) []string { } func TestB11r(t *testing.T) { + t.Parallel() tt := new(testT8n) tt.TestCmd = cmdtest.NewTestCmd(t, tt) for i, tc := range []struct { diff --git a/cmd/faucet/faucet_test.go b/cmd/faucet/faucet_test.go index 58a1f22b54..39b62c4939 100644 --- a/cmd/faucet/faucet_test.go +++ b/cmd/faucet/faucet_test.go @@ -23,6 +23,7 @@ import ( ) func TestFacebook(t *testing.T) { + t.Parallel() // TODO: Remove facebook auth or implement facebook api, which seems to require an API key t.Skipf("The facebook access is flaky, needs to be reimplemented or removed") for _, tt := range []struct { diff --git a/cmd/geth/accountcmd_test.go b/cmd/geth/accountcmd_test.go index 84b9c33c24..ea3a7c3b64 100644 --- a/cmd/geth/accountcmd_test.go +++ b/cmd/geth/accountcmd_test.go @@ -43,11 +43,13 @@ func tmpDatadirWithKeystore(t *testing.T) string { } func TestAccountListEmpty(t *testing.T) { + t.Parallel() geth := runGeth(t, "account", "list") geth.ExpectExit() } func TestAccountList(t *testing.T) { + t.Parallel() datadir := tmpDatadirWithKeystore(t) var want = ` Account #0: {7ef5a6135f1fd6a02593eedc869c6d41d934aef8} keystore://{{.Datadir}}/keystore/UTC--2016-03-22T12-57-55.920751759Z--7ef5a6135f1fd6a02593eedc869c6d41d934aef8 @@ -74,6 +76,7 @@ Account #2: {289d485d9771714cce91d3393d764e1311907acc} keystore://{{.Datadir}}\k } func TestAccountNew(t *testing.T) { + t.Parallel() geth := runGeth(t, "account", "new", "--lightkdf") defer geth.ExpectExit() geth.Expect(` @@ -96,6 +99,7 @@ Path of the secret key file: .*UTC--.+--[0-9a-f]{40} } func TestAccountImport(t *testing.T) { + t.Parallel() tests := []struct{ name, key, output string }{ { name: "correct account", @@ -118,6 +122,7 @@ func TestAccountImport(t *testing.T) { } func TestAccountHelp(t *testing.T) { + t.Parallel() geth := runGeth(t, "account", "-h") geth.WaitExit() if have, want := geth.ExitStatus(), 0; have != want { @@ -147,6 +152,7 @@ func importAccountWithExpect(t *testing.T, key string, expected string) { } func TestAccountNewBadRepeat(t *testing.T) { + t.Parallel() geth := runGeth(t, "account", "new", "--lightkdf") defer geth.ExpectExit() geth.Expect(` @@ -159,6 +165,7 @@ Fatal: Passwords do not match } func TestAccountUpdate(t *testing.T) { + t.Parallel() datadir := tmpDatadirWithKeystore(t) geth := runGeth(t, "account", "update", "--datadir", datadir, "--lightkdf", @@ -175,6 +182,7 @@ Repeat password: {{.InputLine "foobar2"}} } func TestWalletImport(t *testing.T) { + t.Parallel() geth := runGeth(t, "wallet", "import", "--lightkdf", "testdata/guswallet.json") defer geth.ExpectExit() geth.Expect(` @@ -190,6 +198,7 @@ Address: {d4584b5f6229b7be90727b0fc8c6b91bb427821f} } func TestWalletImportBadPassword(t *testing.T) { + t.Parallel() geth := runGeth(t, "wallet", "import", "--lightkdf", "testdata/guswallet.json") defer geth.ExpectExit() geth.Expect(` @@ -200,6 +209,7 @@ Fatal: could not decrypt key with given password } func TestUnlockFlag(t *testing.T) { + t.Parallel() geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t), "--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "console", "--exec", "loadScript('testdata/empty.js')") geth.Expect(` @@ -222,6 +232,7 @@ undefined } func TestUnlockFlagWrongPassword(t *testing.T) { + t.Parallel() geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t), "--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "console", "--exec", "loadScript('testdata/empty.js')") @@ -240,6 +251,7 @@ Fatal: Failed to unlock account f466859ead1932d743d622cb74fc058882e8648a (could // https://github.com/ethereum/go-ethereum/issues/1785 func TestUnlockFlagMultiIndex(t *testing.T) { + t.Parallel() geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t), "--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--unlock", "0,2", "console", "--exec", "loadScript('testdata/empty.js')") @@ -266,6 +278,7 @@ undefined } func TestUnlockFlagPasswordFile(t *testing.T) { + t.Parallel() geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t), "--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--password", "testdata/passwords.txt", "--unlock", "0,2", "console", "--exec", "loadScript('testdata/empty.js')") @@ -287,6 +300,7 @@ undefined } func TestUnlockFlagPasswordFileWrongPassword(t *testing.T) { + t.Parallel() geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t), "--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--password", "testdata/wrong-passwords.txt", "--unlock", "0,2") @@ -297,6 +311,7 @@ Fatal: Failed to unlock account 0 (could not decrypt key with given password) } func TestUnlockFlagAmbiguous(t *testing.T) { + t.Parallel() store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes") geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t), "--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--keystore", @@ -336,6 +351,7 @@ undefined } func TestUnlockFlagAmbiguousWrongPassword(t *testing.T) { + t.Parallel() store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes") geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t), "--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--keystore", diff --git a/cmd/geth/consolecmd_test.go b/cmd/geth/consolecmd_test.go index 5046906c0a..ef6ef5f288 100644 --- a/cmd/geth/consolecmd_test.go +++ b/cmd/geth/consolecmd_test.go @@ -50,6 +50,7 @@ func runMinimalGeth(t *testing.T, args ...string) *testgeth { // Tests that a node embedded within a console can be started up properly and // then terminated by closing the input stream. func TestConsoleWelcome(t *testing.T) { + t.Parallel() coinbase := "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182" // Start a geth console, make sure it's cleaned up and terminate the console diff --git a/cmd/geth/exportcmd_test.go b/cmd/geth/exportcmd_test.go index bbf08d820e..9570b1ffd2 100644 --- a/cmd/geth/exportcmd_test.go +++ b/cmd/geth/exportcmd_test.go @@ -27,6 +27,7 @@ import ( // TestExport does a basic test of "geth export", exporting the test-genesis. func TestExport(t *testing.T) { + t.Parallel() outfile := fmt.Sprintf("%v/testExport.out", os.TempDir()) defer os.Remove(outfile) geth := runGeth(t, "--datadir", initGeth(t), "export", outfile) diff --git a/cmd/geth/les_test.go b/cmd/geth/les_test.go index b36c3265a3..98c8a12dc6 100644 --- a/cmd/geth/les_test.go +++ b/cmd/geth/les_test.go @@ -156,6 +156,7 @@ func startClient(t *testing.T, name string) *gethrpc { } func TestPriorityClient(t *testing.T) { + t.Parallel() lightServer := startLightServer(t) defer lightServer.killAndWait() diff --git a/cmd/geth/logging_test.go b/cmd/geth/logging_test.go index af50e93f94..69fe0fadf7 100644 --- a/cmd/geth/logging_test.go +++ b/cmd/geth/logging_test.go @@ -58,6 +58,7 @@ func censor(input string, start, end int) string { } func TestLogging(t *testing.T) { + t.Parallel() testConsoleLogging(t, "terminal", 6, 24) testConsoleLogging(t, "logfmt", 2, 26) } @@ -98,6 +99,7 @@ func testConsoleLogging(t *testing.T, format string, tStart, tEnd int) { } func TestVmodule(t *testing.T) { + t.Parallel() checkOutput := func(level int, want, wantNot string) { t.Helper() output, err := runSelf("--log.format", "terminal", "--verbosity=0", "--log.vmodule", fmt.Sprintf("logtestcmd_active.go=%d", level), "logtest") @@ -145,6 +147,7 @@ func nicediff(have, want []byte) string { } func TestFileOut(t *testing.T) { + t.Parallel() var ( have, want []byte err error @@ -165,6 +168,7 @@ func TestFileOut(t *testing.T) { } func TestRotatingFileOut(t *testing.T) { + t.Parallel() var ( have, want []byte err error diff --git a/cmd/geth/version_check_test.go b/cmd/geth/version_check_test.go index 4458ab5c06..3676d25d00 100644 --- a/cmd/geth/version_check_test.go +++ b/cmd/geth/version_check_test.go @@ -30,14 +30,17 @@ import ( ) func TestVerification(t *testing.T) { + t.Parallel() // Signatures generated with `minisign`. Legacy format, not pre-hashed file. t.Run("minisig-legacy", func(t *testing.T) { + t.Parallel() // For this test, the pubkey is in testdata/vcheck/minisign.pub // (the privkey is `minisign.sec`, if we want to expand this test. Password 'test' ) pub := "RWQkliYstQBOKOdtClfgC3IypIPX6TAmoEi7beZ4gyR3wsaezvqOMWsp" testVerification(t, pub, "./testdata/vcheck/minisig-sigs/") }) t.Run("minisig-new", func(t *testing.T) { + t.Parallel() // For this test, the pubkey is in testdata/vcheck/minisign.pub // (the privkey is `minisign.sec`, if we want to expand this test. Password 'test' ) // `minisign -S -s ./minisign.sec -m data.json -x ./minisig-sigs-new/data.json.minisig` @@ -46,6 +49,7 @@ func TestVerification(t *testing.T) { }) // Signatures generated with `signify-openbsd` t.Run("signify-openbsd", func(t *testing.T) { + t.Parallel() t.Skip("This currently fails, minisign expects 4 lines of data, signify provides only 2") // For this test, the pubkey is in testdata/vcheck/signifykey.pub // (the privkey is `signifykey.sec`, if we want to expand this test. Password 'test' ) @@ -97,6 +101,7 @@ func versionUint(v string) int { // TestMatching can be used to check that the regexps are correct func TestMatching(t *testing.T) { + t.Parallel() data, _ := os.ReadFile("./testdata/vcheck/vulnerabilities.json") var vulns []vulnJson if err := json.Unmarshal(data, &vulns); err != nil { @@ -141,6 +146,7 @@ func TestMatching(t *testing.T) { } func TestGethPubKeysParseable(t *testing.T) { + t.Parallel() for _, pubkey := range gethPubKeys { _, err := minisign.NewPublicKey(pubkey) if err != nil { @@ -150,6 +156,7 @@ func TestGethPubKeysParseable(t *testing.T) { } func TestKeyID(t *testing.T) { + t.Parallel() type args struct { id [8]byte } @@ -163,7 +170,9 @@ func TestKeyID(t *testing.T) { {"third key", args{id: extractKeyId(gethPubKeys[2])}, "FD9813B2D2098484"}, } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { + t.Parallel() if got := keyID(tt.args.id); got != tt.want { t.Errorf("keyID() = %v, want %v", got, tt.want) } diff --git a/cmd/rlpdump/rlpdump_test.go b/cmd/rlpdump/rlpdump_test.go index a9ab57fdb8..8d55f4200a 100644 --- a/cmd/rlpdump/rlpdump_test.go +++ b/cmd/rlpdump/rlpdump_test.go @@ -27,6 +27,7 @@ import ( ) func TestRoundtrip(t *testing.T) { + t.Parallel() for i, want := range []string{ "0xf880806482520894d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a1010000000000000000000000000000000000000000000000000000000000000001801ba0c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549da06180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28", "0xd5c0d3cb84746573742a2a808213378667617a6f6e6b", @@ -51,6 +52,7 @@ func TestRoundtrip(t *testing.T) { } func TestTextToRlp(t *testing.T) { + t.Parallel() type tc struct { text string want string diff --git a/cmd/utils/export_test.go b/cmd/utils/export_test.go index 445e3fac37..84ba8d0c31 100644 --- a/cmd/utils/export_test.go +++ b/cmd/utils/export_test.go @@ -170,6 +170,7 @@ func testDeletion(t *testing.T, f string) { // TestImportFutureFormat tests that we reject unsupported future versions. func TestImportFutureFormat(t *testing.T) { + t.Parallel() f := fmt.Sprintf("%v/tempdump-future", os.TempDir()) defer func() { os.Remove(f) diff --git a/cmd/utils/flags_test.go b/cmd/utils/flags_test.go index adfdd0903e..00c73a5264 100644 --- a/cmd/utils/flags_test.go +++ b/cmd/utils/flags_test.go @@ -23,6 +23,7 @@ import ( ) func Test_SplitTagsFlag(t *testing.T) { + t.Parallel() tests := []struct { name string args string @@ -55,7 +56,9 @@ func Test_SplitTagsFlag(t *testing.T) { }, } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { + t.Parallel() if got := SplitTagsFlag(tt.args); !reflect.DeepEqual(got, tt.want) { t.Errorf("splitTagsFlag() = %v, want %v", got, tt.want) } diff --git a/cmd/utils/prompt_test.go b/cmd/utils/prompt_test.go index 86ee8b6525..889bf71de3 100644 --- a/cmd/utils/prompt_test.go +++ b/cmd/utils/prompt_test.go @@ -22,6 +22,7 @@ import ( ) func TestGetPassPhraseWithList(t *testing.T) { + t.Parallel() type args struct { text string confirmation bool @@ -65,7 +66,9 @@ func TestGetPassPhraseWithList(t *testing.T) { }, } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { + t.Parallel() if got := GetPassPhraseWithList(tt.args.text, tt.args.confirmation, tt.args.index, tt.args.passwords); got != tt.want { t.Errorf("GetPassPhraseWithList() = %v, want %v", got, tt.want) } From 661bd451887e05c40970c4560addf4fdd87eb2a9 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Tue, 21 Nov 2023 10:47:37 +0800 Subject: [PATCH 076/223] core/state/snapshot: print correct error from trie iterator (#28560) --- core/state/snapshot/generate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/state/snapshot/generate.go b/core/state/snapshot/generate.go index adeaa1daa0..f455a6db3f 100644 --- a/core/state/snapshot/generate.go +++ b/core/state/snapshot/generate.go @@ -446,7 +446,7 @@ func (dl *diskLayer) generateRange(ctx *generatorContext, trieId *trie.ID, prefi // Trie errors should never happen. Still, in case of a bug, expose the // error here, as the outer code will presume errors are interrupts, not // some deeper issues. - log.Error("State snapshotter failed to iterate trie", "err", err) + log.Error("State snapshotter failed to iterate trie", "err", iter.Err) return false, nil, iter.Err } // Delete all stale snapshot states remaining From ad16f11f841ab3a5fdedc8ddfc602f0717a34dd0 Mon Sep 17 00:00:00 2001 From: Haotian <51777534+tmelhao@users.noreply.github.com> Date: Tue, 21 Nov 2023 15:56:23 +0800 Subject: [PATCH 077/223] cmd/evm: capitalize evm commands (#28569) * standard:fix for a unified standard * standard:fix more as a complements --------- Co-authored-by: haotian --- cmd/evm/blockrunner.go | 2 +- cmd/evm/compiler.go | 2 +- cmd/evm/disasm.go | 2 +- cmd/evm/main.go | 6 +++--- cmd/evm/runner.go | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/evm/blockrunner.go b/cmd/evm/blockrunner.go index ff65574586..caed9b65fc 100644 --- a/cmd/evm/blockrunner.go +++ b/cmd/evm/blockrunner.go @@ -40,7 +40,7 @@ var RunFlag = &cli.StringFlag{ var blockTestCommand = &cli.Command{ Action: blockTestCmd, Name: "blocktest", - Usage: "executes the given blockchain tests", + Usage: "Executes the given blockchain tests", ArgsUsage: "", Flags: []cli.Flag{RunFlag}, } diff --git a/cmd/evm/compiler.go b/cmd/evm/compiler.go index 699d434bb0..c071834b59 100644 --- a/cmd/evm/compiler.go +++ b/cmd/evm/compiler.go @@ -29,7 +29,7 @@ import ( var compileCommand = &cli.Command{ Action: compileCmd, Name: "compile", - Usage: "compiles easm source to evm binary", + Usage: "Compiles easm source to evm binary", ArgsUsage: "", } diff --git a/cmd/evm/disasm.go b/cmd/evm/disasm.go index a6a16fd13b..b1f35cbaf5 100644 --- a/cmd/evm/disasm.go +++ b/cmd/evm/disasm.go @@ -29,7 +29,7 @@ import ( var disasmCommand = &cli.Command{ Action: disasmCmd, Name: "disasm", - Usage: "disassembles evm binary", + Usage: "Disassembles evm binary", ArgsUsage: "", } diff --git a/cmd/evm/main.go b/cmd/evm/main.go index 1f6500b78c..ef5d25418d 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -139,7 +139,7 @@ var ( var stateTransitionCommand = &cli.Command{ Name: "transition", Aliases: []string{"t8n"}, - Usage: "executes a full state transition", + Usage: "Executes a full state transition", Action: t8ntool.Transition, Flags: []cli.Flag{ t8ntool.TraceFlag, @@ -165,7 +165,7 @@ var stateTransitionCommand = &cli.Command{ var transactionCommand = &cli.Command{ Name: "transaction", Aliases: []string{"t9n"}, - Usage: "performs transaction validation", + Usage: "Performs transaction validation", Action: t8ntool.Transaction, Flags: []cli.Flag{ t8ntool.InputTxsFlag, @@ -178,7 +178,7 @@ var transactionCommand = &cli.Command{ var blockBuilderCommand = &cli.Command{ Name: "block-builder", Aliases: []string{"b11r"}, - Usage: "builds a block", + Usage: "Builds a block", Action: t8ntool.BuildBlock, Flags: []cli.Flag{ t8ntool.OutputBasedir, diff --git a/cmd/evm/runner.go b/cmd/evm/runner.go index 45fc985351..c9a870022a 100644 --- a/cmd/evm/runner.go +++ b/cmd/evm/runner.go @@ -46,7 +46,7 @@ import ( var runCommand = &cli.Command{ Action: runCmd, Name: "run", - Usage: "run arbitrary evm binary", + Usage: "Run arbitrary evm binary", ArgsUsage: "", Description: `The run command runs arbitrary EVM code.`, Flags: flags.Merge(vmFlags, traceFlags), From 525db7b2c5fde2e54393d0c3f9b68eed154c6754 Mon Sep 17 00:00:00 2001 From: levisyin <150114626+levisyin@users.noreply.github.com> Date: Tue, 21 Nov 2023 16:16:57 +0800 Subject: [PATCH 078/223] accounts/abi: context info on unpack-errors (#28529) adds contextual information to errors returned by unpack --- accounts/abi/error.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/accounts/abi/error.go b/accounts/abi/error.go index 218a22f1e4..8e50112ec5 100644 --- a/accounts/abi/error.go +++ b/accounts/abi/error.go @@ -18,7 +18,6 @@ package abi import ( "bytes" - "errors" "fmt" "strings" @@ -84,10 +83,10 @@ func (e Error) String() string { func (e *Error) Unpack(data []byte) (interface{}, error) { if len(data) < 4 { - return "", errors.New("invalid data for unpacking") + return "", fmt.Errorf("insufficient data for unpacking: have %d, want at least 4", len(data)) } if !bytes.Equal(data[:4], e.ID[:4]) { - return "", errors.New("invalid data for unpacking") + return "", fmt.Errorf("invalid identifier, have %#x want %#x", data[:4], e.ID[:4]) } return e.Inputs.Unpack(data[4:]) } From 146e8d999c705612f4d043a40f75fcb5195554c1 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 21 Nov 2023 14:19:28 +0300 Subject: [PATCH 079/223] core, trie, rpc: speed up tests (#28461) * rpc: make subscription test faster reduces time for TestClientSubscriptionChannelClose from 25 sec to < 1 sec. * trie: cache trie nodes for faster sanity check This reduces the time spent on TestIncompleteSyncHash from ~25s to ~16s. * core/forkid: speed up validation test This takes the validation test from > 5s to sub 1 sec * core/state: improve snapshot test run brings the time for TestSnapshotRandom from 13s down to 6s * accounts/keystore: improve keyfile test This removes some unnecessary waits and reduces the runtime of TestUpdatedKeyfileContents from 5 to 3 seconds * trie: remove resolver * trie: only check ~5% of all trie nodes --- accounts/keystore/account_cache_test.go | 8 ++++---- core/forkid/forkid_test.go | 3 ++- core/state/statedb_test.go | 8 +++----- rpc/client_test.go | 2 +- trie/sync_test.go | 5 +++++ 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/accounts/keystore/account_cache_test.go b/accounts/keystore/account_cache_test.go index 3847e9daf6..371d274441 100644 --- a/accounts/keystore/account_cache_test.go +++ b/accounts/keystore/account_cache_test.go @@ -68,7 +68,7 @@ func waitWatcherStart(ks *KeyStore) bool { func waitForAccounts(wantAccounts []accounts.Account, ks *KeyStore) error { var list []accounts.Account - for t0 := time.Now(); time.Since(t0) < 5*time.Second; time.Sleep(200 * time.Millisecond) { + for t0 := time.Now(); time.Since(t0) < 5*time.Second; time.Sleep(100 * time.Millisecond) { list = ks.Accounts() if reflect.DeepEqual(list, wantAccounts) { // ks should have also received change notifications @@ -350,7 +350,7 @@ func TestUpdatedKeyfileContents(t *testing.T) { return } // needed so that modTime of `file` is different to its current value after forceCopyFile - time.Sleep(time.Second) + os.Chtimes(file, time.Now().Add(-time.Second), time.Now().Add(-time.Second)) // Now replace file contents if err := forceCopyFile(file, cachetestAccounts[1].URL.Path); err != nil { @@ -366,7 +366,7 @@ func TestUpdatedKeyfileContents(t *testing.T) { } // needed so that modTime of `file` is different to its current value after forceCopyFile - time.Sleep(time.Second) + os.Chtimes(file, time.Now().Add(-time.Second), time.Now().Add(-time.Second)) // Now replace file contents again if err := forceCopyFile(file, cachetestAccounts[2].URL.Path); err != nil { @@ -382,7 +382,7 @@ func TestUpdatedKeyfileContents(t *testing.T) { } // needed so that modTime of `file` is different to its current value after os.WriteFile - time.Sleep(time.Second) + os.Chtimes(file, time.Now().Add(-time.Second), time.Now().Add(-time.Second)) // Now replace file contents with crap if err := os.WriteFile(file, []byte("foo"), 0600); err != nil { diff --git a/core/forkid/forkid_test.go b/core/forkid/forkid_test.go index db634bc14b..e311c0b43f 100644 --- a/core/forkid/forkid_test.go +++ b/core/forkid/forkid_test.go @@ -366,8 +366,9 @@ func TestValidation(t *testing.T) { // TODO(karalabe): Enable this when Cancun is specced //{params.MainnetChainConfig, 20999999, 1677999999, ID{Hash: checksumToBytes(0x71147644), Next: 1678000000}, ErrLocalIncompatibleOrStale}, } + genesis := core.DefaultGenesisBlock().ToBlock() for i, tt := range tests { - filter := newFilter(tt.config, core.DefaultGenesisBlock().ToBlock(), func() (uint64, uint64) { return tt.head, tt.time }) + filter := newFilter(tt.config, genesis, func() (uint64, uint64) { return tt.head, tt.time }) if err := filter(tt.id); err != tt.err { t.Errorf("test %d: validation error mismatch: have %v, want %v", i, err, tt.err) } diff --git a/core/state/statedb_test.go b/core/state/statedb_test.go index ad829a0c8f..df1cd5547d 100644 --- a/core/state/statedb_test.go +++ b/core/state/statedb_test.go @@ -426,10 +426,12 @@ func (test *snapshotTest) run() bool { state, _ = New(types.EmptyRootHash, NewDatabase(rawdb.NewMemoryDatabase()), nil) snapshotRevs = make([]int, len(test.snapshots)) sindex = 0 + checkstates = make([]*StateDB, len(test.snapshots)) ) for i, action := range test.actions { if len(test.snapshots) > sindex && i == test.snapshots[sindex] { snapshotRevs[sindex] = state.Snapshot() + checkstates[sindex] = state.Copy() sindex++ } action.fn(action, state) @@ -437,12 +439,8 @@ func (test *snapshotTest) run() bool { // Revert all snapshots in reverse order. Each revert must yield a state // that is equivalent to fresh state with all actions up the snapshot applied. for sindex--; sindex >= 0; sindex-- { - checkstate, _ := New(types.EmptyRootHash, state.Database(), nil) - for _, action := range test.actions[:test.snapshots[sindex]] { - action.fn(action, checkstate) - } state.RevertToSnapshot(snapshotRevs[sindex]) - if err := test.checkEqual(state, checkstate); err != nil { + if err := test.checkEqual(state, checkstates[sindex]); err != nil { test.err = fmt.Errorf("state mismatch after revert to snapshot %d\n%v", sindex, err) return false } diff --git a/rpc/client_test.go b/rpc/client_test.go index 7c96b2d666..ac02ad33cf 100644 --- a/rpc/client_test.go +++ b/rpc/client_test.go @@ -595,7 +595,7 @@ func TestClientSubscriptionChannelClose(t *testing.T) { for i := 0; i < 100; i++ { ch := make(chan int, 100) - sub, err := client.Subscribe(context.Background(), "nftest", ch, "someSubscription", maxClientSubscriptionBuffer-1, 1) + sub, err := client.Subscribe(context.Background(), "nftest", ch, "someSubscription", 100, 1) if err != nil { t.Fatal(err) } diff --git a/trie/sync_test.go b/trie/sync_test.go index 7032c6d2f7..5edfb32a37 100644 --- a/trie/sync_test.go +++ b/trie/sync_test.go @@ -19,6 +19,7 @@ package trie import ( "bytes" "fmt" + "math/rand" "testing" "github.com/ethereum/go-ethereum/common" @@ -587,6 +588,10 @@ func testIncompleteSync(t *testing.T, scheme string) { } // Sanity check that removing any node from the database is detected for i, path := range addedKeys { + if rand.Int31n(100) > 5 { + // Only check 5 percent of added keys as a sanity check + continue + } owner, inner := ResolvePath([]byte(path)) nodeHash := addedHashes[i] value := rawdb.ReadTrieNode(diskdb, owner, inner, nodeHash, scheme) From 6489a0dd1f98e9ce1c64c2eae93c8a88df7ae674 Mon Sep 17 00:00:00 2001 From: Maciej Kulawik <10907694+magicxyyz@users.noreply.github.com> Date: Tue, 21 Nov 2023 14:22:22 +0000 Subject: [PATCH 080/223] ethdb/pebble: don't double-close iterator inside pebbleIterator (#28566) Adds 'released' flag to pebbleIterator to avoid double closing cockroachdb/pebble.Iterator as it is an invalid operation. Fixes #28565 --- ethdb/pebble/pebble.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/ethdb/pebble/pebble.go b/ethdb/pebble/pebble.go index 6d0ea94962..d58329c6d6 100644 --- a/ethdb/pebble/pebble.go +++ b/ethdb/pebble/pebble.go @@ -609,9 +609,12 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error { // pebbleIterator is a wrapper of underlying iterator in storage engine. // The purpose of this structure is to implement the missing APIs. +// +// The pebble iterator is not thread-safe. type pebbleIterator struct { - iter *pebble.Iterator - moved bool + iter *pebble.Iterator + moved bool + released bool } // NewIterator creates a binary-alphabetical iterator over a subset @@ -623,7 +626,7 @@ func (d *Database) NewIterator(prefix []byte, start []byte) ethdb.Iterator { UpperBound: upperBound(prefix), }) iter.First() - return &pebbleIterator{iter: iter, moved: true} + return &pebbleIterator{iter: iter, moved: true, released: false} } // Next moves the iterator to the next key/value pair. It returns whether the @@ -658,4 +661,9 @@ func (iter *pebbleIterator) Value() []byte { // Release releases associated resources. Release should always succeed and can // be called multiple times without causing error. -func (iter *pebbleIterator) Release() { iter.iter.Close() } +func (iter *pebbleIterator) Release() { + if !iter.released { + iter.iter.Close() + iter.released = true + } +} From e9f59b5d5ea44df607f826c72f42916b552ab33d Mon Sep 17 00:00:00 2001 From: ucwong Date: Tue, 21 Nov 2023 14:28:44 +0000 Subject: [PATCH 081/223] eth/filters: reuse error msg for invalid block range (#28479) --- eth/filters/filter.go | 2 +- eth/filters/filter_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eth/filters/filter.go b/eth/filters/filter.go index a5750c1934..83e3284a2b 100644 --- a/eth/filters/filter.go +++ b/eth/filters/filter.go @@ -114,7 +114,7 @@ func (f *Filter) Logs(ctx context.Context) ([]*types.Log, error) { // special case for pending logs if beginPending && !endPending { - return nil, errors.New("invalid block range") + return nil, errInvalidBlockRange } // Short-cut if all we care about is pending logs diff --git a/eth/filters/filter_test.go b/eth/filters/filter_test.go index 4e09a9038b..1db917c960 100644 --- a/eth/filters/filter_test.go +++ b/eth/filters/filter_test.go @@ -353,7 +353,7 @@ func TestFilters(t *testing.T) { }, { f: sys.NewRangeFilter(int64(rpc.PendingBlockNumber), int64(rpc.LatestBlockNumber), nil, nil), - err: "invalid block range", + err: errInvalidBlockRange.Error(), }, } { logs, err := tc.f.Logs(context.Background()) From 347fecd8817bf9ac928f00f85796fc381fd650d5 Mon Sep 17 00:00:00 2001 From: Mario Vega Date: Wed, 22 Nov 2023 04:00:44 -0600 Subject: [PATCH 082/223] core/types: make 'v' optional for DynamicFeeTx and BlobTx (#28564) This fixes an issue where transactions would not be accepted when they have only 'yParity' and not 'v'. --- core/types/transaction.go | 3 + core/types/transaction_marshalling.go | 12 +--- core/types/transaction_test.go | 94 +++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 9 deletions(-) diff --git a/core/types/transaction.go b/core/types/transaction.go index 6f83c21d8f..9ec0199a03 100644 --- a/core/types/transaction.go +++ b/core/types/transaction.go @@ -37,6 +37,9 @@ var ( ErrTxTypeNotSupported = errors.New("transaction type not supported") ErrGasFeeCapTooLow = errors.New("fee cap less than base fee") errShortTypedTx = errors.New("typed transaction too short") + errInvalidYParity = errors.New("'yParity' field must be 0 or 1") + errVYParityMismatch = errors.New("'v' and 'yParity' fields do not match") + errVYParityMissing = errors.New("missing 'yParity' or 'v' field in transaction") ) // Transaction types. diff --git a/core/types/transaction_marshalling.go b/core/types/transaction_marshalling.go index e5d71a85d6..08ce80b07c 100644 --- a/core/types/transaction_marshalling.go +++ b/core/types/transaction_marshalling.go @@ -57,18 +57,18 @@ func (tx *txJSON) yParityValue() (*big.Int, error) { if tx.YParity != nil { val := uint64(*tx.YParity) if val != 0 && val != 1 { - return nil, errors.New("'yParity' field must be 0 or 1") + return nil, errInvalidYParity } bigval := new(big.Int).SetUint64(val) if tx.V != nil && tx.V.ToInt().Cmp(bigval) != 0 { - return nil, errors.New("'v' and 'yParity' fields do not match") + return nil, errVYParityMismatch } return bigval, nil } if tx.V != nil { return tx.V.ToInt(), nil } - return nil, errors.New("missing 'yParity' or 'v' field in transaction") + return nil, errVYParityMissing } // MarshalJSON marshals as JSON with a hash. @@ -294,9 +294,6 @@ func (tx *Transaction) UnmarshalJSON(input []byte) error { return errors.New("missing required field 'input' in transaction") } itx.Data = *dec.Input - if dec.V == nil { - return errors.New("missing required field 'v' in transaction") - } if dec.AccessList != nil { itx.AccessList = *dec.AccessList } @@ -361,9 +358,6 @@ func (tx *Transaction) UnmarshalJSON(input []byte) error { return errors.New("missing required field 'input' in transaction") } itx.Data = *dec.Input - if dec.V == nil { - return errors.New("missing required field 'v' in transaction") - } if dec.AccessList != nil { itx.AccessList = *dec.AccessList } diff --git a/core/types/transaction_test.go b/core/types/transaction_test.go index 25ced0841b..76a010d2e5 100644 --- a/core/types/transaction_test.go +++ b/core/types/transaction_test.go @@ -451,3 +451,97 @@ func TestTransactionSizes(t *testing.T) { } } } + +func TestYParityJSONUnmarshalling(t *testing.T) { + baseJson := map[string]interface{}{ + // type is filled in by the test + "chainId": "0x7", + "nonce": "0x0", + "to": "0x1b442286e32ddcaa6e2570ce9ed85f4b4fc87425", + "gas": "0x124f8", + "gasPrice": "0x693d4ca8", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x6fc23ac00", + "maxFeePerBlobGas": "0x3b9aca00", + "value": "0x0", + "input": "0x", + "accessList": []interface{}{}, + "blobVersionedHashes": []string{ + "0x010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c444014", + }, + + // v and yParity are filled in by the test + "r": "0x2a922afc784d07e98012da29f2f37cae1f73eda78aa8805d3df6ee5dbb41ec1", + "s": "0x4f1f75ae6bcdf4970b4f305da1a15d8c5ddb21f555444beab77c9af2baab14", + } + + tests := []struct { + name string + v string + yParity string + wantErr error + }{ + // Valid v and yParity + {"valid v and yParity, 0x0", "0x0", "0x0", nil}, + {"valid v and yParity, 0x1", "0x1", "0x1", nil}, + + // Valid v, missing yParity + {"valid v, missing yParity, 0x0", "0x0", "", nil}, + {"valid v, missing yParity, 0x1", "0x1", "", nil}, + + // Valid yParity, missing v + {"valid yParity, missing v, 0x0", "", "0x0", nil}, + {"valid yParity, missing v, 0x1", "", "0x1", nil}, + + // Invalid yParity + {"invalid yParity, 0x2", "", "0x2", errInvalidYParity}, + + // Conflicting v and yParity + {"conflicting v and yParity", "0x1", "0x0", errVYParityMismatch}, + + // Missing v and yParity + {"missing v and yParity", "", "", errVYParityMissing}, + } + + // Run for all types that accept yParity + t.Parallel() + for _, txType := range []uint64{ + AccessListTxType, + DynamicFeeTxType, + BlobTxType, + } { + txType := txType + for _, test := range tests { + test := test + t.Run(fmt.Sprintf("txType=%d: %s", txType, test.name), func(t *testing.T) { + // Copy the base json + testJson := make(map[string]interface{}) + for k, v := range baseJson { + testJson[k] = v + } + + // Set v, yParity and type + if test.v != "" { + testJson["v"] = test.v + } + if test.yParity != "" { + testJson["yParity"] = test.yParity + } + testJson["type"] = fmt.Sprintf("0x%x", txType) + + // Marshal the JSON + jsonBytes, err := json.Marshal(testJson) + if err != nil { + t.Fatal(err) + } + + // Unmarshal the tx + var tx Transaction + err = tx.UnmarshalJSON(jsonBytes) + if err != test.wantErr { + t.Fatalf("wrong error: got %v, want %v", err, test.wantErr) + } + }) + } + } +} From d6cea4832ae946b770bd71529ef539f92c5ba06a Mon Sep 17 00:00:00 2001 From: Delweng Date: Wed, 22 Nov 2023 18:24:54 +0800 Subject: [PATCH 083/223] rpc: improve performance of subscription notification encoding (#28328) It turns out that encoding json.RawMessage is slow because package json basically parses the message again to ensure it is valid. We can avoid the slowdown by encoding the entire RPC notification once, which yields a 30% speedup. --- rpc/json.go | 11 ++++++++ rpc/subscription.go | 27 ++++++++---------- rpc/subscription_test.go | 60 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 16 deletions(-) diff --git a/rpc/json.go b/rpc/json.go index 78f7d7a650..5557a80760 100644 --- a/rpc/json.go +++ b/rpc/json.go @@ -46,6 +46,17 @@ type subscriptionResult struct { Result json.RawMessage `json:"result,omitempty"` } +type subscriptionResultEnc struct { + ID string `json:"subscription"` + Result any `json:"result"` +} + +type jsonrpcSubscriptionNotification struct { + Version string `json:"jsonrpc"` + Method string `json:"method"` + Params subscriptionResultEnc `json:"params"` +} + // A value of this type can a JSON-RPC request, notification, successful response or // error response. Which one it is depends on the fields. type jsonrpcMessage struct { diff --git a/rpc/subscription.go b/rpc/subscription.go index 3231c2ceec..9cb0727547 100644 --- a/rpc/subscription.go +++ b/rpc/subscription.go @@ -105,7 +105,7 @@ type Notifier struct { mu sync.Mutex sub *Subscription - buffer []json.RawMessage + buffer []any callReturned bool activated bool } @@ -129,12 +129,7 @@ func (n *Notifier) CreateSubscription() *Subscription { // Notify sends a notification to the client with the given data as payload. // If an error occurs the RPC connection is closed and the error is returned. -func (n *Notifier) Notify(id ID, data interface{}) error { - enc, err := json.Marshal(data) - if err != nil { - return err - } - +func (n *Notifier) Notify(id ID, data any) error { n.mu.Lock() defer n.mu.Unlock() @@ -144,9 +139,9 @@ func (n *Notifier) Notify(id ID, data interface{}) error { panic("Notify with wrong ID") } if n.activated { - return n.send(n.sub, enc) + return n.send(n.sub, data) } - n.buffer = append(n.buffer, enc) + n.buffer = append(n.buffer, data) return nil } @@ -181,16 +176,16 @@ func (n *Notifier) activate() error { return nil } -func (n *Notifier) send(sub *Subscription, data json.RawMessage) error { - params, _ := json.Marshal(&subscriptionResult{ID: string(sub.ID), Result: data}) - ctx := context.Background() - - msg := &jsonrpcMessage{ +func (n *Notifier) send(sub *Subscription, data any) error { + msg := jsonrpcSubscriptionNotification{ Version: vsn, Method: n.namespace + notificationMethodSuffix, - Params: params, + Params: subscriptionResultEnc{ + ID: string(sub.ID), + Result: data, + }, } - return n.h.conn.writeJSON(ctx, msg, false) + return n.h.conn.writeJSON(context.Background(), &msg, false) } // A Subscription is created by a notifier and tied to that notifier. The client can use diff --git a/rpc/subscription_test.go b/rpc/subscription_test.go index b270457829..3a131c8e6b 100644 --- a/rpc/subscription_test.go +++ b/rpc/subscription_test.go @@ -17,12 +17,19 @@ package rpc import ( + "bytes" + "context" "encoding/json" "fmt" + "io" + "math/big" "net" "strings" "testing" "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" ) func TestNewID(t *testing.T) { @@ -218,3 +225,56 @@ func readAndValidateMessage(in *json.Decoder) (*subConfirmation, *subscriptionRe return nil, nil, fmt.Errorf("unrecognized message: %v", msg) } } + +type mockConn struct { + enc *json.Encoder +} + +// writeJSON writes a message to the connection. +func (c *mockConn) writeJSON(ctx context.Context, msg interface{}, isError bool) error { + return c.enc.Encode(msg) +} + +// Closed returns a channel which is closed when the connection is closed. +func (c *mockConn) closed() <-chan interface{} { return nil } + +// RemoteAddr returns the peer address of the connection. +func (c *mockConn) remoteAddr() string { return "" } + +// BenchmarkNotify benchmarks the performance of notifying a subscription. +func BenchmarkNotify(b *testing.B) { + id := ID("test") + notifier := &Notifier{ + h: &handler{conn: &mockConn{json.NewEncoder(io.Discard)}}, + sub: &Subscription{ID: id}, + activated: true, + } + msg := &types.Header{ + ParentHash: common.HexToHash("0x01"), + Number: big.NewInt(100), + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + notifier.Notify(id, msg) + } +} + +func TestNotify(t *testing.T) { + out := new(bytes.Buffer) + id := ID("test") + notifier := &Notifier{ + h: &handler{conn: &mockConn{json.NewEncoder(out)}}, + sub: &Subscription{ID: id}, + activated: true, + } + msg := &types.Header{ + ParentHash: common.HexToHash("0x01"), + Number: big.NewInt(100), + } + notifier.Notify(id, msg) + have := strings.TrimSpace(out.String()) + want := `{"jsonrpc":"2.0","method":"_subscription","params":{"subscription":"test","result":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000001","sha3Uncles":"0x0000000000000000000000000000000000000000000000000000000000000000","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":null,"number":"0x64","gasLimit":"0x0","gasUsed":"0x0","timestamp":"0x0","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":null,"withdrawalsRoot":null,"blobGasUsed":null,"excessBlobGas":null,"parentBeaconBlockRoot":null,"hash":"0xe5fb877dde471b45b9742bb4bb4b3d74a761e2fb7cb849a3d2b687eed90fb604"}}}` + if have != want { + t.Errorf("have:\n%v\nwant:\n%v\n", have, want) + } +} From 104dbf7821ef5366adc2b297938b24895c6924d0 Mon Sep 17 00:00:00 2001 From: jwasinger Date: Wed, 22 Nov 2023 19:01:38 +0800 Subject: [PATCH 084/223] cmd/utils: validate pre-existing genesis in --dev mode (#28468) geth --dev can be used with an existing data directory and genesis block. Since dev mode only works with PoS, we need to verify that the merge has happened. Co-authored-by: Felix Lange --- cmd/utils/flags.go | 15 +++++++++++++++ core/genesis.go | 2 +- eth/catalyst/simulated_beacon.go | 4 ---- params/config.go | 6 ++---- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 8bbacac51d..234fd19162 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1870,6 +1870,21 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { chaindb := tryMakeReadOnlyDatabase(ctx, stack) if rawdb.ReadCanonicalHash(chaindb, 0) != (common.Hash{}) { cfg.Genesis = nil // fallback to db content + + //validate genesis has PoS enabled in block 0 + genesis, err := core.ReadGenesis(chaindb) + if err != nil { + Fatalf("Could not read genesis from database: %v", err) + } + if !genesis.Config.TerminalTotalDifficultyPassed { + Fatalf("Bad developer-mode genesis configuration: terminalTotalDifficultyPassed must be true in developer mode") + } + if genesis.Config.TerminalTotalDifficulty == nil { + Fatalf("Bad developer-mode genesis configuration: terminalTotalDifficulty must be specified.") + } + if genesis.Difficulty.Cmp(genesis.Config.TerminalTotalDifficulty) != 1 { + Fatalf("Bad developer-mode genesis configuration: genesis block difficulty must be > terminalTotalDifficulty") + } } chaindb.Close() } diff --git a/core/genesis.go b/core/genesis.go index 60c2f9a8bc..aa748884e1 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -589,7 +589,7 @@ func DeveloperGenesisBlock(gasLimit uint64, faucet common.Address) *Genesis { Config: &config, GasLimit: gasLimit, BaseFee: big.NewInt(params.InitialBaseFee), - Difficulty: big.NewInt(0), + Difficulty: big.NewInt(1), Alloc: map[common.Address]GenesisAccount{ common.BytesToAddress([]byte{1}): {Balance: big.NewInt(1)}, // ECRecover common.BytesToAddress([]byte{2}): {Balance: big.NewInt(1)}, // SHA256 diff --git a/eth/catalyst/simulated_beacon.go b/eth/catalyst/simulated_beacon.go index a9a2bb4a9a..d8b8641e6a 100644 --- a/eth/catalyst/simulated_beacon.go +++ b/eth/catalyst/simulated_beacon.go @@ -82,10 +82,6 @@ type SimulatedBeacon struct { } func NewSimulatedBeacon(period uint64, eth *eth.Ethereum) (*SimulatedBeacon, error) { - chainConfig := eth.APIBackend.ChainConfig() - if !chainConfig.IsDevMode { - return nil, errors.New("incompatible pre-existing chain configuration") - } block := eth.BlockChain().CurrentBlock() current := engine.ForkchoiceStateV1{ HeadBlockHash: block.Hash(), diff --git a/params/config.go b/params/config.go index 88ff772a1d..463041bd01 100644 --- a/params/config.go +++ b/params/config.go @@ -180,7 +180,6 @@ var ( ShanghaiTime: newUint64(0), TerminalTotalDifficulty: big.NewInt(0), TerminalTotalDifficultyPassed: true, - IsDevMode: true, } // AllCliqueProtocolChanges contains every protocol change (EIPs) introduced @@ -329,9 +328,8 @@ type ChainConfig struct { TerminalTotalDifficultyPassed bool `json:"terminalTotalDifficultyPassed,omitempty"` // Various consensus engines - Ethash *EthashConfig `json:"ethash,omitempty"` - Clique *CliqueConfig `json:"clique,omitempty"` - IsDevMode bool `json:"isDev,omitempty"` + Ethash *EthashConfig `json:"ethash,omitempty"` + Clique *CliqueConfig `json:"clique,omitempty"` } // EthashConfig is the consensus engine configs for proof-of-work based sealing. From 3cfcd252db04aa1ff44ac6a40e33ef4c18e272a9 Mon Sep 17 00:00:00 2001 From: jwasinger Date: Wed, 22 Nov 2023 19:08:39 +0800 Subject: [PATCH 085/223] cmd/geth: add support for --dev flag in dumpgenesis (#28463) Co-authored-by: Felix Lange Co-authored-by: lightclient --- cmd/geth/chaincmd.go | 13 ++++++++++--- cmd/utils/flags.go | 2 +- console/console_test.go | 2 +- core/genesis.go | 9 ++++++--- eth/catalyst/simulated_beacon_test.go | 2 +- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index b65827f5bc..9f51540984 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -224,14 +224,21 @@ func initGenesis(ctx *cli.Context) error { } func dumpGenesis(ctx *cli.Context) error { - // if there is a testnet preset enabled, dump that + // check if there is a testnet preset enabled + var genesis *core.Genesis if utils.IsNetworkPreset(ctx) { - genesis := utils.MakeGenesis(ctx) + genesis = utils.MakeGenesis(ctx) + } else if ctx.IsSet(utils.DeveloperFlag.Name) && !ctx.IsSet(utils.DataDirFlag.Name) { + genesis = core.DeveloperGenesisBlock(11_500_000, nil) + } + + if genesis != nil { if err := json.NewEncoder(os.Stdout).Encode(genesis); err != nil { utils.Fatalf("could not encode genesis: %s", err) } return nil } + // dump whatever already exists in the datadir stack, _ := makeConfigNode(ctx) for _, name := range []string{"chaindata", "lightchaindata"} { @@ -256,7 +263,7 @@ func dumpGenesis(ctx *cli.Context) error { if ctx.IsSet(utils.DataDirFlag.Name) { utils.Fatalf("no existing datadir at %s", stack.Config().DataDir) } - utils.Fatalf("no network preset provided, no existing genesis in the default datadir") + utils.Fatalf("no network preset provided, and no genesis exists in the default datadir") return nil } diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 234fd19162..72a56e9c28 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1865,7 +1865,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { log.Info("Using developer account", "address", developer.Address) // Create a new developer genesis block or reuse existing one - cfg.Genesis = core.DeveloperGenesisBlock(ctx.Uint64(DeveloperGasLimitFlag.Name), developer.Address) + cfg.Genesis = core.DeveloperGenesisBlock(ctx.Uint64(DeveloperGasLimitFlag.Name), &developer.Address) if ctx.IsSet(DataDirFlag.Name) { chaindb := tryMakeReadOnlyDatabase(ctx, stack) if rawdb.ReadCanonicalHash(chaindb, 0) != (common.Hash{}) { diff --git a/console/console_test.go b/console/console_test.go index ee5c36be4a..a13be6a99d 100644 --- a/console/console_test.go +++ b/console/console_test.go @@ -94,7 +94,7 @@ func newTester(t *testing.T, confOverride func(*ethconfig.Config)) *tester { t.Fatalf("failed to create node: %v", err) } ethConf := ðconfig.Config{ - Genesis: core.DeveloperGenesisBlock(11_500_000, common.Address{}), + Genesis: core.DeveloperGenesisBlock(11_500_000, nil), Miner: miner.Config{ Etherbase: common.HexToAddress(testAddress), }, diff --git a/core/genesis.go b/core/genesis.go index aa748884e1..634be9a9e0 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -580,12 +580,12 @@ func DefaultHoleskyGenesisBlock() *Genesis { } // DeveloperGenesisBlock returns the 'geth --dev' genesis block. -func DeveloperGenesisBlock(gasLimit uint64, faucet common.Address) *Genesis { +func DeveloperGenesisBlock(gasLimit uint64, faucet *common.Address) *Genesis { // Override the default period to the user requested one config := *params.AllDevChainProtocolChanges // Assemble and return the genesis with the precompiles and faucet pre-funded - return &Genesis{ + genesis := &Genesis{ Config: &config, GasLimit: gasLimit, BaseFee: big.NewInt(params.InitialBaseFee), @@ -600,9 +600,12 @@ func DeveloperGenesisBlock(gasLimit uint64, faucet common.Address) *Genesis { common.BytesToAddress([]byte{7}): {Balance: big.NewInt(1)}, // ECScalarMul common.BytesToAddress([]byte{8}): {Balance: big.NewInt(1)}, // ECPairing common.BytesToAddress([]byte{9}): {Balance: big.NewInt(1)}, // BLAKE2b - faucet: {Balance: new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 256), big.NewInt(9))}, }, } + if faucet != nil { + genesis.Alloc[*faucet] = GenesisAccount{Balance: new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 256), big.NewInt(9))} + } + return genesis } func decodePrealloc(data string) GenesisAlloc { diff --git a/eth/catalyst/simulated_beacon_test.go b/eth/catalyst/simulated_beacon_test.go index 0df195fb9d..6fa97ad87a 100644 --- a/eth/catalyst/simulated_beacon_test.go +++ b/eth/catalyst/simulated_beacon_test.go @@ -85,7 +85,7 @@ func TestSimulatedBeaconSendWithdrawals(t *testing.T) { // short period (1 second) for testing purposes var gasLimit uint64 = 10_000_000 - genesis := core.DeveloperGenesisBlock(gasLimit, testAddr) + genesis := core.DeveloperGenesisBlock(gasLimit, &testAddr) node, ethService, mock := startSimulatedBeaconEthService(t, genesis) _ = mock defer node.Close() From 5ff929c22fb0315ebdb6efc5a871469f70522850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Anda=20Estensen?= Date: Wed, 22 Nov 2023 14:00:30 +0100 Subject: [PATCH 086/223] les/vflux: run tests in parallel (#28524) --- les/vflux/client/fillset_test.go | 2 ++ les/vflux/client/queueiterator_test.go | 4 +++ les/vflux/client/requestbasket_test.go | 10 ++++++ les/vflux/client/serverpool_test.go | 46 ++++++++++++++++++++++---- les/vflux/client/timestats_test.go | 8 +++++ les/vflux/client/valuetracker_test.go | 2 ++ les/vflux/client/wrsiterator_test.go | 2 ++ les/vflux/server/balance_test.go | 20 +++++++++++ les/vflux/server/clientdb_test.go | 4 +++ les/vflux/server/clientpool_test.go | 34 +++++++++++++++++++ les/vflux/server/prioritypool_test.go | 4 +++ 11 files changed, 129 insertions(+), 7 deletions(-) diff --git a/les/vflux/client/fillset_test.go b/les/vflux/client/fillset_test.go index 652dcf9f62..9a5a2a98a8 100644 --- a/les/vflux/client/fillset_test.go +++ b/les/vflux/client/fillset_test.go @@ -65,6 +65,8 @@ func (i *testIter) waiting(timeout time.Duration) bool { } func TestFillSet(t *testing.T) { + t.Parallel() + ns := nodestate.NewNodeStateMachine(nil, nil, &mclock.Simulated{}, testSetup) iter := &testIter{ waitCh: make(chan struct{}), diff --git a/les/vflux/client/queueiterator_test.go b/les/vflux/client/queueiterator_test.go index 400d978e19..c7cb649082 100644 --- a/les/vflux/client/queueiterator_test.go +++ b/les/vflux/client/queueiterator_test.go @@ -31,10 +31,14 @@ func testNode(i int) *enode.Node { } func TestQueueIteratorFIFO(t *testing.T) { + t.Parallel() + testQueueIterator(t, true) } func TestQueueIteratorLIFO(t *testing.T) { + t.Parallel() + testQueueIterator(t, false) } diff --git a/les/vflux/client/requestbasket_test.go b/les/vflux/client/requestbasket_test.go index 7c5f87c618..320d1b4b3e 100644 --- a/les/vflux/client/requestbasket_test.go +++ b/les/vflux/client/requestbasket_test.go @@ -36,6 +36,8 @@ func checkF64(t *testing.T, name string, value, exp, tol float64) { } func TestServerBasket(t *testing.T) { + t.Parallel() + var s serverBasket s.init(2) // add some requests with different request value factors @@ -70,6 +72,8 @@ func TestServerBasket(t *testing.T) { } func TestConvertMapping(t *testing.T) { + t.Parallel() + b := requestBasket{items: []basketItem{{3, 3}, {1, 1}, {2, 2}}} oldMap := []string{"req3", "req1", "req2"} newMap := []string{"req1", "req2", "req3", "req4"} @@ -82,6 +86,8 @@ func TestConvertMapping(t *testing.T) { } func TestReqValueFactor(t *testing.T) { + t.Parallel() + var ref referenceBasket ref.basket = requestBasket{items: make([]basketItem, 4)} for i := range ref.basket.items { @@ -95,6 +101,8 @@ func TestReqValueFactor(t *testing.T) { } func TestNormalize(t *testing.T) { + t.Parallel() + for cycle := 0; cycle < 100; cycle += 1 { // Initialize data for testing valueRange, lower := 1000000, 1000000 @@ -119,6 +127,8 @@ func TestNormalize(t *testing.T) { } func TestReqValueAdjustment(t *testing.T) { + t.Parallel() + var s1, s2 serverBasket s1.init(3) s2.init(3) diff --git a/les/vflux/client/serverpool_test.go b/les/vflux/client/serverpool_test.go index f1fd987d7e..19d4fe6630 100644 --- a/les/vflux/client/serverpool_test.go +++ b/les/vflux/client/serverpool_test.go @@ -326,9 +326,21 @@ func (s *ServerPoolTest) checkNodes(t *testing.T, nodes []int) { } } -func TestServerPool(t *testing.T) { testServerPool(t, false, false) } -func TestServerPoolWithPreNeg(t *testing.T) { testServerPool(t, true, false) } -func TestServerPoolWithPreNegFail(t *testing.T) { testServerPool(t, true, true) } +func TestServerPool(t *testing.T) { + t.Parallel() + + testServerPool(t, false, false) +} +func TestServerPoolWithPreNeg(t *testing.T) { + t.Parallel() + + testServerPool(t, true, false) +} +func TestServerPoolWithPreNegFail(t *testing.T) { + t.Parallel() + + testServerPool(t, true, true) +} func testServerPool(t *testing.T, preNeg, fail bool) { s := newServerPoolTest(preNeg, fail) nodes := s.setNodes(100, 200, 200, true, false) @@ -339,8 +351,16 @@ func testServerPool(t *testing.T, preNeg, fail bool) { s.checkNodes(t, nodes) } -func TestServerPoolChangedNodes(t *testing.T) { testServerPoolChangedNodes(t, false) } -func TestServerPoolChangedNodesWithPreNeg(t *testing.T) { testServerPoolChangedNodes(t, true) } +func TestServerPoolChangedNodes(t *testing.T) { + t.Parallel() + + testServerPoolChangedNodes(t, false) +} +func TestServerPoolChangedNodesWithPreNeg(t *testing.T) { + t.Parallel() + + testServerPoolChangedNodes(t, true) +} func testServerPoolChangedNodes(t *testing.T, preNeg bool) { s := newServerPoolTest(preNeg, false) nodes := s.setNodes(100, 200, 200, true, false) @@ -358,8 +378,14 @@ func testServerPoolChangedNodes(t *testing.T, preNeg bool) { s.stop() } -func TestServerPoolRestartNoDiscovery(t *testing.T) { testServerPoolRestartNoDiscovery(t, false) } +func TestServerPoolRestartNoDiscovery(t *testing.T) { + t.Parallel() + + testServerPoolRestartNoDiscovery(t, false) +} func TestServerPoolRestartNoDiscoveryWithPreNeg(t *testing.T) { + t.Parallel() + testServerPoolRestartNoDiscovery(t, true) } func testServerPoolRestartNoDiscovery(t *testing.T, preNeg bool) { @@ -377,8 +403,14 @@ func testServerPoolRestartNoDiscovery(t *testing.T, preNeg bool) { s.checkNodes(t, nodes) } -func TestServerPoolTrustedNoDiscovery(t *testing.T) { testServerPoolTrustedNoDiscovery(t, false) } +func TestServerPoolTrustedNoDiscovery(t *testing.T) { + t.Parallel() + + testServerPoolTrustedNoDiscovery(t, false) +} func TestServerPoolTrustedNoDiscoveryWithPreNeg(t *testing.T) { + t.Parallel() + testServerPoolTrustedNoDiscovery(t, true) } func testServerPoolTrustedNoDiscovery(t *testing.T, preNeg bool) { diff --git a/les/vflux/client/timestats_test.go b/les/vflux/client/timestats_test.go index a28460171e..80ea2047c6 100644 --- a/les/vflux/client/timestats_test.go +++ b/les/vflux/client/timestats_test.go @@ -26,6 +26,8 @@ import ( ) func TestTransition(t *testing.T) { + t.Parallel() + var epsilon = 0.01 var cases = []time.Duration{ time.Millisecond, minResponseTime, @@ -47,6 +49,8 @@ func TestTransition(t *testing.T) { var maxResponseWeights = TimeoutWeights(maxResponseTime) func TestValue(t *testing.T) { + t.Parallel() + noexp := utils.ExpirationFactor{Factor: 1} for i := 0; i < 1000; i++ { max := minResponseTime + time.Duration(rand.Int63n(int64(maxResponseTime-minResponseTime))) @@ -70,6 +74,8 @@ func TestValue(t *testing.T) { } func TestAddSubExpire(t *testing.T) { + t.Parallel() + var ( sum1, sum2 ResponseTimeStats sum1ValueExp, sum2ValueExp float64 @@ -110,6 +116,8 @@ func TestAddSubExpire(t *testing.T) { } func TestTimeout(t *testing.T) { + t.Parallel() + testTimeoutRange(t, 0, time.Second) testTimeoutRange(t, time.Second, time.Second*2) testTimeoutRange(t, time.Second, maxResponseTime) diff --git a/les/vflux/client/valuetracker_test.go b/les/vflux/client/valuetracker_test.go index 87a337be8d..332d65ee51 100644 --- a/les/vflux/client/valuetracker_test.go +++ b/les/vflux/client/valuetracker_test.go @@ -38,6 +38,8 @@ const ( ) func TestValueTracker(t *testing.T) { + t.Parallel() + db := memorydb.New() clock := &mclock.Simulated{} requestList := make([]RequestInfo, testReqTypes) diff --git a/les/vflux/client/wrsiterator_test.go b/les/vflux/client/wrsiterator_test.go index 77bb5ee0ca..f6eb2d8813 100644 --- a/les/vflux/client/wrsiterator_test.go +++ b/les/vflux/client/wrsiterator_test.go @@ -37,6 +37,8 @@ var ( const iterTestNodeCount = 6 func TestWrsIterator(t *testing.T) { + t.Parallel() + ns := nodestate.NewNodeStateMachine(nil, nil, &mclock.Simulated{}, testSetup) w := NewWrsIterator(ns, sfTest2, sfTest3.Or(sfTest4), sfiTestWeight) ns.Start() diff --git a/les/vflux/server/balance_test.go b/les/vflux/server/balance_test.go index 7c100aab50..e1ff7bf4e9 100644 --- a/les/vflux/server/balance_test.go +++ b/les/vflux/server/balance_test.go @@ -107,6 +107,8 @@ func (b *balanceTestSetup) stop() { } func TestAddBalance(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() @@ -143,6 +145,8 @@ func TestAddBalance(t *testing.T) { } func TestSetBalance(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() node := b.newNode(1000) @@ -167,6 +171,8 @@ func TestSetBalance(t *testing.T) { } func TestBalanceTimeCost(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() node := b.newNode(1000) @@ -207,6 +213,8 @@ func TestBalanceTimeCost(t *testing.T) { } func TestBalanceReqCost(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() node := b.newNode(1000) @@ -235,6 +243,8 @@ func TestBalanceReqCost(t *testing.T) { } func TestBalanceToPriority(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() node := b.newNode(1000) @@ -260,6 +270,8 @@ func TestBalanceToPriority(t *testing.T) { } func TestEstimatedPriority(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() node := b.newNode(1000000000) @@ -299,6 +311,8 @@ func TestEstimatedPriority(t *testing.T) { } func TestPositiveBalanceCounting(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() @@ -340,6 +354,8 @@ func TestPositiveBalanceCounting(t *testing.T) { } func TestCallbackChecking(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() node := b.newNode(1000000) @@ -363,6 +379,8 @@ func TestCallbackChecking(t *testing.T) { } func TestCallback(t *testing.T) { + t.Parallel() + b := newBalanceTestSetup(nil, nil, nil) defer b.stop() node := b.newNode(1000) @@ -392,6 +410,8 @@ func TestCallback(t *testing.T) { } func TestBalancePersistence(t *testing.T) { + t.Parallel() + posExp := &utils.Expirer{} negExp := &utils.Expirer{} posExp.SetRate(0, math.Log(2)/float64(time.Hour*2)) // halves every two hours diff --git a/les/vflux/server/clientdb_test.go b/les/vflux/server/clientdb_test.go index 353d84aead..caa4384e19 100644 --- a/les/vflux/server/clientdb_test.go +++ b/les/vflux/server/clientdb_test.go @@ -32,6 +32,8 @@ func expval(v uint64) utils.ExpiredValue { } func TestNodeDB(t *testing.T) { + t.Parallel() + ndb := newNodeDB(rawdb.NewMemoryDatabase(), mclock.System{}) defer ndb.close() @@ -85,6 +87,8 @@ func TestNodeDB(t *testing.T) { } func TestNodeDBExpiration(t *testing.T) { + t.Parallel() + var ( iterated int done = make(chan struct{}, 1) diff --git a/les/vflux/server/clientpool_test.go b/les/vflux/server/clientpool_test.go index f75c70afca..7319be0824 100644 --- a/les/vflux/server/clientpool_test.go +++ b/les/vflux/server/clientpool_test.go @@ -32,26 +32,38 @@ import ( const defaultConnectedBias = time.Minute * 3 func TestClientPoolL10C100Free(t *testing.T) { + t.Parallel() + testClientPool(t, 10, 100, 0, true) } func TestClientPoolL40C200Free(t *testing.T) { + t.Parallel() + testClientPool(t, 40, 200, 0, true) } func TestClientPoolL100C300Free(t *testing.T) { + t.Parallel() + testClientPool(t, 100, 300, 0, true) } func TestClientPoolL10C100P4(t *testing.T) { + t.Parallel() + testClientPool(t, 10, 100, 4, false) } func TestClientPoolL40C200P30(t *testing.T) { + t.Parallel() + testClientPool(t, 40, 200, 30, false) } func TestClientPoolL100C300P20(t *testing.T) { + t.Parallel() + testClientPool(t, 100, 300, 20, false) } @@ -244,6 +256,8 @@ func testPriorityConnect(t *testing.T, pool *ClientPool, p *poolTestPeer, cap ui } func TestConnectPaidClient(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -260,6 +274,8 @@ func TestConnectPaidClient(t *testing.T) { } func TestConnectPaidClientToSmallPool(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -278,6 +294,8 @@ func TestConnectPaidClientToSmallPool(t *testing.T) { } func TestConnectPaidClientToFullPool(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -304,6 +322,8 @@ func TestConnectPaidClientToFullPool(t *testing.T) { } func TestPaidClientKickedOut(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -337,6 +357,8 @@ func TestPaidClientKickedOut(t *testing.T) { } func TestConnectFreeClient(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -353,6 +375,8 @@ func TestConnectFreeClient(t *testing.T) { } func TestConnectFreeClientToFullPool(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -381,6 +405,8 @@ func TestConnectFreeClientToFullPool(t *testing.T) { } func TestFreeClientKickedOut(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -425,6 +451,8 @@ func TestFreeClientKickedOut(t *testing.T) { } func TestPositiveBalanceCalculation(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -448,6 +476,8 @@ func TestPositiveBalanceCalculation(t *testing.T) { } func TestDowngradePriorityClient(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -484,6 +514,8 @@ func TestDowngradePriorityClient(t *testing.T) { } func TestNegativeBalanceCalculation(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() @@ -523,6 +555,8 @@ func TestNegativeBalanceCalculation(t *testing.T) { } func TestInactiveClient(t *testing.T) { + t.Parallel() + var ( clock mclock.Simulated db = rawdb.NewMemoryDatabase() diff --git a/les/vflux/server/prioritypool_test.go b/les/vflux/server/prioritypool_test.go index 5152312116..60b7b83bbc 100644 --- a/les/vflux/server/prioritypool_test.go +++ b/les/vflux/server/prioritypool_test.go @@ -48,6 +48,8 @@ func (c *ppTestClient) estimatePriority(cap uint64, addBalance int64, future, bi } func TestPriorityPool(t *testing.T) { + t.Parallel() + clock := &mclock.Simulated{} setup := newServerSetup() setup.balanceField = setup.setup.NewField("ppTestClient", reflect.TypeOf(&ppTestClient{})) @@ -160,6 +162,8 @@ func TestPriorityPool(t *testing.T) { } func TestCapacityCurve(t *testing.T) { + t.Parallel() + clock := &mclock.Simulated{} setup := newServerSetup() setup.balanceField = setup.setup.NewField("ppTestClient", reflect.TypeOf(&ppTestClient{})) From d468c333a7ffdf939900b6678aa3a3d6fed879b1 Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Wed, 22 Nov 2023 14:48:25 +0100 Subject: [PATCH 087/223] cmd/{geth,utils}: add cmd to export preimages in snap enumeration order (#28256) Adds a subcommand: `geth snapshot export-preimages`, to export preimages of every hash found during a snapshot enumeration: that is, it exports _only the active state_, and not _all_ preimages that have been used but are no longer part of the state. This tool is needed for the verkle transition, in order to distribute the preimages needed for the conversion. Since only the 'active' preimages are exported, the output is shrunk from ~70GB to ~4GB. The order of the output is the order used by the snapshot enumeration, which avoids database thrashing. However, it also means that storage-slot preimages are not deduplicated. --- cmd/geth/chaincmd.go | 37 ++--------------- cmd/geth/main.go | 1 - cmd/geth/snapshot.go | 54 +++++++++++++++++++++++++ cmd/utils/cmd.go | 96 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+), 34 deletions(-) diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 9f51540984..4e528d6502 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -137,20 +137,7 @@ The import-preimages command imports hash preimages from an RLP encoded stream. It's deprecated, please use "geth db import" instead. `, } - exportPreimagesCommand = &cli.Command{ - Action: exportPreimages, - Name: "export-preimages", - Usage: "Export the preimage database into an RLP stream", - ArgsUsage: "", - Flags: flags.Merge([]cli.Flag{ - utils.CacheFlag, - utils.SyncModeFlag, - }, utils.DatabaseFlags), - Description: ` -The export-preimages command exports hash preimages to an RLP encoded stream. -It's deprecated, please use "geth db export" instead. -`, - } + dumpCommand = &cli.Command{ Action: dump, Name: "dump", @@ -386,6 +373,9 @@ func exportChain(ctx *cli.Context) error { } // importPreimages imports preimage data from the specified file. +// it is deprecated, and the export function has been removed, but +// the import function is kept around for the time being so that +// older file formats can still be imported. func importPreimages(ctx *cli.Context) error { if ctx.Args().Len() < 1 { utils.Fatalf("This command requires an argument.") @@ -405,25 +395,6 @@ func importPreimages(ctx *cli.Context) error { return nil } -// exportPreimages dumps the preimage data to specified json file in streaming way. -func exportPreimages(ctx *cli.Context) error { - if ctx.Args().Len() < 1 { - utils.Fatalf("This command requires an argument.") - } - stack, _ := makeConfigNode(ctx) - defer stack.Close() - - db := utils.MakeChainDatabase(ctx, stack, true) - defer db.Close() - start := time.Now() - - if err := utils.ExportPreimages(db, ctx.Args().First()); err != nil { - utils.Fatalf("Export error: %v\n", err) - } - fmt.Printf("Export done in %v\n", time.Since(start)) - return nil -} - func parseDumpConfig(ctx *cli.Context, stack *node.Node) (*state.DumpConfig, ethdb.Database, common.Hash, error) { db := utils.MakeChainDatabase(ctx, stack, true) defer db.Close() diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 2d4fe3dc06..d1b14b81cd 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -208,7 +208,6 @@ func init() { importCommand, exportCommand, importPreimagesCommand, - exportPreimagesCommand, removedbCommand, dumpCommand, dumpGenesisCommand, diff --git a/cmd/geth/snapshot.go b/cmd/geth/snapshot.go index 82beb4f2e4..a635e5eb10 100644 --- a/cmd/geth/snapshot.go +++ b/cmd/geth/snapshot.go @@ -20,6 +20,7 @@ import ( "bytes" "encoding/json" "errors" + "fmt" "os" "time" @@ -147,6 +148,17 @@ as the backend data source, making this command a lot faster. The argument is interpreted as block number or hash. If none is provided, the latest block is used. +`, + }, + { + Action: snapshotExportPreimages, + Name: "export-preimages", + Usage: "Export the preimage in snapshot enumeration order", + ArgsUsage: " []", + Flags: utils.DatabaseFlags, + Description: ` +The export-preimages command exports hash preimages to a flat file, in exactly +the expected order for the overlay tree migration. `, }, }, @@ -604,6 +616,48 @@ func dumpState(ctx *cli.Context) error { return nil } +// snapshotExportPreimages dumps the preimage data to a flat file. +func snapshotExportPreimages(ctx *cli.Context) error { + if ctx.NArg() < 1 { + utils.Fatalf("This command requires an argument.") + } + stack, _ := makeConfigNode(ctx) + defer stack.Close() + + chaindb := utils.MakeChainDatabase(ctx, stack, true) + defer chaindb.Close() + + triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true) + defer triedb.Close() + + var root common.Hash + if ctx.NArg() > 1 { + rootBytes := common.FromHex(ctx.Args().Get(1)) + if len(rootBytes) != common.HashLength { + return fmt.Errorf("invalid hash: %s", ctx.Args().Get(1)) + } + root = common.BytesToHash(rootBytes) + } else { + headBlock := rawdb.ReadHeadBlock(chaindb) + if headBlock == nil { + log.Error("Failed to load head block") + return errors.New("no head block") + } + root = headBlock.Root() + } + snapConfig := snapshot.Config{ + CacheSize: 256, + Recovery: false, + NoBuild: true, + AsyncBuild: false, + } + snaptree, err := snapshot.New(snapConfig, chaindb, triedb, root) + if err != nil { + return err + } + return utils.ExportSnapshotPreimages(chaindb, snaptree, ctx.Args().First(), root) +} + // checkAccount iterates the snap data layers, and looks up the given account // across all layers. func checkAccount(ctx *cli.Context) error { diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index a7563a081e..8b571be1ef 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/state/snapshot" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth/ethconfig" @@ -374,6 +375,101 @@ func ExportPreimages(db ethdb.Database, fn string) error { return nil } +// ExportSnapshotPreimages exports the preimages corresponding to the enumeration of +// the snapshot for a given root. +func ExportSnapshotPreimages(chaindb ethdb.Database, snaptree *snapshot.Tree, fn string, root common.Hash) error { + log.Info("Exporting preimages", "file", fn) + + fh, err := os.OpenFile(fn, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm) + if err != nil { + return err + } + defer fh.Close() + + // Enable gzip compressing if file name has gz suffix. + var writer io.Writer = fh + if strings.HasSuffix(fn, ".gz") { + gz := gzip.NewWriter(writer) + defer gz.Close() + writer = gz + } + buf := bufio.NewWriter(writer) + defer buf.Flush() + writer = buf + + type hashAndPreimageSize struct { + Hash common.Hash + Size int + } + hashCh := make(chan hashAndPreimageSize) + + var ( + start = time.Now() + logged = time.Now() + preimages int + ) + go func() { + defer close(hashCh) + accIt, err := snaptree.AccountIterator(root, common.Hash{}) + if err != nil { + log.Error("Failed to create account iterator", "error", err) + return + } + defer accIt.Release() + + for accIt.Next() { + acc, err := types.FullAccount(accIt.Account()) + if err != nil { + log.Error("Failed to get full account", "error", err) + return + } + preimages += 1 + hashCh <- hashAndPreimageSize{Hash: accIt.Hash(), Size: common.AddressLength} + + if acc.Root != (common.Hash{}) && acc.Root != types.EmptyRootHash { + stIt, err := snaptree.StorageIterator(root, accIt.Hash(), common.Hash{}) + if err != nil { + log.Error("Failed to create storage iterator", "error", err) + return + } + for stIt.Next() { + preimages += 1 + hashCh <- hashAndPreimageSize{Hash: stIt.Hash(), Size: common.HashLength} + + if time.Since(logged) > time.Second*8 { + logged = time.Now() + log.Info("Exporting preimages", "count", preimages, "elapsed", common.PrettyDuration(time.Since(start))) + } + } + stIt.Release() + } + if time.Since(logged) > time.Second*8 { + logged = time.Now() + log.Info("Exporting preimages", "count", preimages, "elapsed", common.PrettyDuration(time.Since(start))) + } + } + }() + + for item := range hashCh { + preimage := rawdb.ReadPreimage(chaindb, item.Hash) + if len(preimage) == 0 { + return fmt.Errorf("missing preimage for %v", item.Hash) + } + if len(preimage) != item.Size { + return fmt.Errorf("invalid preimage size, have %d", len(preimage)) + } + rlpenc, err := rlp.EncodeToBytes(preimage) + if err != nil { + return fmt.Errorf("error encoding preimage: %w", err) + } + if _, err := writer.Write(rlpenc); err != nil { + return fmt.Errorf("failed to write preimage: %w", err) + } + } + log.Info("Exported preimages", "count", preimages, "elapsed", common.PrettyDuration(time.Since(start)), "file", fn) + return nil +} + // exportHeader is used in the export/import flow. When we do an export, // the first element we output is the exportHeader. // Whenever a backwards-incompatible change is made, the Version header From 63127f5443bbf4dd6c56fcb11236d35b1ecad848 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 22 Nov 2023 16:32:43 +0100 Subject: [PATCH 088/223] cmd/geth: fix build error (#28585) --- cmd/geth/snapshot.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/geth/snapshot.go b/cmd/geth/snapshot.go index a635e5eb10..80d946b894 100644 --- a/cmd/geth/snapshot.go +++ b/cmd/geth/snapshot.go @@ -627,7 +627,7 @@ func snapshotExportPreimages(ctx *cli.Context) error { chaindb := utils.MakeChainDatabase(ctx, stack, true) defer chaindb.Close() - triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true) + triedb := utils.MakeTrieDatabase(ctx, chaindb, false, true, false) defer triedb.Close() var root common.Hash From eec37e3b713b92c2049723f767af43faa3591a15 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Thu, 23 Nov 2023 09:22:09 +0100 Subject: [PATCH 089/223] cmd/devp2p/internal/ethtest: undo debug-hack (#28588) cmd/devp2p/internal/ethtest: remove a debug-hack flaw which prevented certain tests from running --- cmd/devp2p/internal/ethtest/snap.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/devp2p/internal/ethtest/snap.go b/cmd/devp2p/internal/ethtest/snap.go index f50159a0de..21a5c8232a 100644 --- a/cmd/devp2p/internal/ethtest/snap.go +++ b/cmd/devp2p/internal/ethtest/snap.go @@ -461,7 +461,7 @@ func (s *Suite) TestSnapTrieNodes(t *utesting.T) { common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790"), }, }, - }[7:] { + } { tc := tc if err := s.snapGetTrieNodes(t, &tc); err != nil { t.Errorf("test %d \n #hashes %x\n root: %#x\n bytes: %d\nfailed: %v", i, len(tc.expHashes), tc.root, tc.nBytes, err) From d76efbb9be403689bc8d677a16af453728a7a513 Mon Sep 17 00:00:00 2001 From: Mikel Cortes <45786396+cortze@users.noreply.github.com> Date: Thu, 23 Nov 2023 10:14:10 +0000 Subject: [PATCH 090/223] params: update discV5 bootnodes (#28562) update discV5 bootnodes from https://github.com/eth-clients/eth2-networks/blob/master/shared/mainnet/bootstrap_nodes.txt --- params/bootnodes.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/params/bootnodes.go b/params/bootnodes.go index a843896914..5e2c7c2181 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -66,20 +66,25 @@ var GoerliBootnodes = []string{ var V5Bootnodes = []string{ // Teku team's bootnode - "enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA", - "enr:-KG4QDyytgmE4f7AnvW-ZaUOIi9i79qX4JwjRAiXBZCU65wOfBu-3Nb5I7b_Rmg3KCOcZM_C3y5pg7EBU5XGrcLTduQEhGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQ2_DUbiXNlY3AyNTZrMaEDKnz_-ps3UUOfHWVYaskI5kWYO_vtYMGYCQRAR3gHDouDdGNwgiMog3VkcIIjKA", + "enr:-KG4QMOEswP62yzDjSwWS4YEjtTZ5PO6r65CPqYBkgTTkrpaedQ8uEUo1uMALtJIvb2w_WWEVmg5yt1UAuK1ftxUU7QDhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQEnfA2iXNlY3AyNTZrMaEDfol8oLr6XJ7FsdAYE7lpJhKMls4G_v6qQOGKJUWGb_uDdGNwgiMog3VkcIIjKA", // # 4.157.240.54 | azure-us-east-virginia + "enr:-KG4QF4B5WrlFcRhUU6dZETwY5ZzAXnA0vGC__L1Kdw602nDZwXSTs5RFXFIFUnbQJmhNGVU6OIX7KVrCSTODsz1tK4DhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQExNYEiXNlY3AyNTZrMaECQmM9vp7KhaXhI-nqL_R0ovULLCFSFTa9CPPSdb1zPX6DdGNwgiMog3VkcIIjKA", // 4.196.214.4 | azure-au-east-sydney // Prylab team's bootnodes - "enr:-Ku4QImhMc1z8yCiNJ1TyUxdcfNucje3BGwEHzodEZUan8PherEo4sF7pPHPSIB1NNuSg5fZy7qFsjmUKs2ea1Whi0EBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQOVphkDqal4QzPMksc5wnpuC3gvSC8AfbFOnZY_On34wIN1ZHCCIyg", - "enr:-Ku4QP2xDnEtUXIjzJ_DhlCRN9SN99RYQPJL92TMlSv7U5C1YnYLjwOQHgZIUXw6c-BvRg2Yc2QsZxxoS_pPRVe0yK8Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMeFF5GrS7UZpAH2Ly84aLK-TyvH-dRo0JM1i8yygH50YN1ZHCCJxA", - "enr:-Ku4QPp9z1W4tAO8Ber_NQierYaOStqhDqQdOPY3bB3jDgkjcbk6YrEnVYIiCBbTxuar3CzS528d2iE7TdJsrL-dEKoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMw5fqqkw2hHC4F5HZZDPsNmPdB1Gi8JPQK7pRc9XHh-oN1ZHCCKvg", + "enr:-Ku4QImhMc1z8yCiNJ1TyUxdcfNucje3BGwEHzodEZUan8PherEo4sF7pPHPSIB1NNuSg5fZy7qFsjmUKs2ea1Whi0EBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQOVphkDqal4QzPMksc5wnpuC3gvSC8AfbFOnZY_On34wIN1ZHCCIyg", // 18.223.219.100 | aws-us-east-2-ohio + "enr:-Ku4QP2xDnEtUXIjzJ_DhlCRN9SN99RYQPJL92TMlSv7U5C1YnYLjwOQHgZIUXw6c-BvRg2Yc2QsZxxoS_pPRVe0yK8Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMeFF5GrS7UZpAH2Ly84aLK-TyvH-dRo0JM1i8yygH50YN1ZHCCJxA", // 18.223.219.100 | aws-us-east-2-ohio + "enr:-Ku4QPp9z1W4tAO8Ber_NQierYaOStqhDqQdOPY3bB3jDgkjcbk6YrEnVYIiCBbTxuar3CzS528d2iE7TdJsrL-dEKoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMw5fqqkw2hHC4F5HZZDPsNmPdB1Gi8JPQK7pRc9XHh-oN1ZHCCKvg", // 18.223.219.100 | aws-us-east-2-ohio // Lighthouse team's bootnodes - "enr:-IS4QLkKqDMy_ExrpOEWa59NiClemOnor-krjp4qoeZwIw2QduPC-q7Kz4u1IOWf3DDbdxqQIgC4fejavBOuUPy-HE4BgmlkgnY0gmlwhCLzAHqJc2VjcDI1NmsxoQLQSJfEAHZApkm5edTCZ_4qps_1k_ub2CxHFxi-gr2JMIN1ZHCCIyg", - "enr:-IS4QDAyibHCzYZmIYZCjXwU9BqpotWmv2BsFlIq1V31BwDDMJPFEbox1ijT5c2Ou3kvieOKejxuaCqIcjxBjJ_3j_cBgmlkgnY0gmlwhAMaHiCJc2VjcDI1NmsxoQJIdpj_foZ02MXz4It8xKD7yUHTBx7lVFn3oeRP21KRV4N1ZHCCIyg", + "enr:-Le4QPUXJS2BTORXxyx2Ia-9ae4YqA_JWX3ssj4E_J-3z1A-HmFGrU8BpvpqhNabayXeOZ2Nq_sbeDgtzMJpLLnXFgAChGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISsaa0Zg2lwNpAkAIkHAAAAAPA8kv_-awoTiXNlY3AyNTZrMaEDHAD2JKYevx89W0CcFJFiskdcEzkH_Wdv9iW42qLK79ODdWRwgiMohHVkcDaCI4I", // 172.105.173.25 | linode-au-sydney + "enr:-Le4QLHZDSvkLfqgEo8IWGG96h6mxwe_PsggC20CL3neLBjfXLGAQFOPSltZ7oP6ol54OvaNqO02Rnvb8YmDR274uq8ChGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLosQxg2lwNpAqAX4AAAAAAPA8kv_-ax65iXNlY3AyNTZrMaEDBJj7_dLFACaxBfaI8KZTh_SSJUjhyAyfshimvSqo22WDdWRwgiMohHVkcDaCI4I", // 139.162.196.49 | linode-uk-london + "enr:-Le4QH6LQrusDbAHPjU_HcKOuMeXfdEB5NJyXgHWFadfHgiySqeDyusQMvfphdYWOzuSZO9Uq2AMRJR5O4ip7OvVma8BhGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLY9ncg2lwNpAkAh8AgQIBAAAAAAAAAAmXiXNlY3AyNTZrMaECDYCZTZEksF-kmgPholqgVt8IXr-8L7Nu7YrZ7HUpgxmDdWRwgiMohHVkcDaCI4I", // 139.99.217.220 | ovh-au-sydney + "enr:-Le4QIqLuWybHNONr933Lk0dcMmAB5WgvGKRyDihy1wHDIVlNuuztX62W51voT4I8qD34GcTEOTmag1bcdZ_8aaT4NUBhGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLY04ng2lwNpAkAh8AgAIBAAAAAAAAAA-fiXNlY3AyNTZrMaEDscnRV6n1m-D9ID5UsURk0jsoKNXt1TIrj8uKOGW6iluDdWRwgiMohHVkcDaCI4I", // 139.99.78.39 | ovh-singapore // EF bootnodes - "enr:-Ku4QHqVeJ8PPICcWk1vSn_XcSkjOkNiTg6Fmii5j6vUQgvzMc9L1goFnLKgXqBJspJjIsB91LTOleFmyWWrFVATGngBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAMRHkWJc2VjcDI1NmsxoQKLVXFOhp2uX6jeT0DvvDpPcU8FWMjQdR4wMuORMhpX24N1ZHCCIyg", - "enr:-Ku4QG-2_Md3sZIAUebGYT6g0SMskIml77l6yR-M_JXc-UdNHCmHQeOiMLbylPejyJsdAPsTHJyjJB2sYGDLe0dn8uYBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhBLY-NyJc2VjcDI1NmsxoQORcM6e19T1T9gi7jxEZjk_sjVLGFscUNqAY9obgZaxbIN1ZHCCIyg", - "enr:-Ku4QPn5eVhcoF1opaFEvg1b6JNFD2rqVkHQ8HApOKK61OIcIXD127bKWgAtbwI7pnxx6cDyk_nI88TrZKQaGMZj0q0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDayLMaJc2VjcDI1NmsxoQK2sBOLGcUb4AwuYzFuAVCaNHA-dy24UuEKkeFNgCVCsIN1ZHCCIyg", - "enr:-Ku4QEWzdnVtXc2Q0ZVigfCGggOVB2Vc1ZCPEc6j21NIFLODSJbvNaef1g4PxhPwl_3kax86YPheFUSLXPRs98vvYsoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDZBrP2Jc2VjcDI1NmsxoQM6jr8Rb1ktLEsVcKAPa08wCsKUmvoQ8khiOl_SLozf9IN1ZHCCIyg", + "enr:-Ku4QHqVeJ8PPICcWk1vSn_XcSkjOkNiTg6Fmii5j6vUQgvzMc9L1goFnLKgXqBJspJjIsB91LTOleFmyWWrFVATGngBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAMRHkWJc2VjcDI1NmsxoQKLVXFOhp2uX6jeT0DvvDpPcU8FWMjQdR4wMuORMhpX24N1ZHCCIyg", // 3.17.30.69 | aws-us-east-2-ohio + "enr:-Ku4QG-2_Md3sZIAUebGYT6g0SMskIml77l6yR-M_JXc-UdNHCmHQeOiMLbylPejyJsdAPsTHJyjJB2sYGDLe0dn8uYBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhBLY-NyJc2VjcDI1NmsxoQORcM6e19T1T9gi7jxEZjk_sjVLGFscUNqAY9obgZaxbIN1ZHCCIyg", // 18.216.248.220 | aws-us-east-2-ohio + "enr:-Ku4QPn5eVhcoF1opaFEvg1b6JNFD2rqVkHQ8HApOKK61OIcIXD127bKWgAtbwI7pnxx6cDyk_nI88TrZKQaGMZj0q0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDayLMaJc2VjcDI1NmsxoQK2sBOLGcUb4AwuYzFuAVCaNHA-dy24UuEKkeFNgCVCsIN1ZHCCIyg", // 54.178.44.198 | aws-ap-northeast-1-tokyo + "enr:-Ku4QEWzdnVtXc2Q0ZVigfCGggOVB2Vc1ZCPEc6j21NIFLODSJbvNaef1g4PxhPwl_3kax86YPheFUSLXPRs98vvYsoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDZBrP2Jc2VjcDI1NmsxoQM6jr8Rb1ktLEsVcKAPa08wCsKUmvoQ8khiOl_SLozf9IN1ZHCCIyg", // 54.65.172.253 | aws-ap-northeast-1-tokyo + // Nimbus team's bootnodes + "enr:-LK4QA8FfhaAjlb_BXsXxSfiysR7R52Nhi9JBt4F8SPssu8hdE1BXQQEtVDC3qStCW60LSO7hEsVHv5zm8_6Vnjhcn0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAN4aBKJc2VjcDI1NmsxoQJerDhsJ-KxZ8sHySMOCmTO6sHM3iCFQ6VMvLTe948MyYN0Y3CCI4yDdWRwgiOM", // 3.120.104.18 | aws-eu-central-1-frankfurt + "enr:-LK4QKWrXTpV9T78hNG6s8AM6IO4XH9kFT91uZtFg1GcsJ6dKovDOr1jtAAFPnS2lvNltkOGA9k29BUN7lFh_sjuc9QBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhANAdd-Jc2VjcDI1NmsxoQLQa6ai7y9PMN5hpLe5HmiJSlYzMuzP7ZhwRiwHvqNXdoN0Y3CCI4yDdWRwgiOM", // 3.64.117.223 | aws-eu-central-1-frankfurt} } const dnsPrefix = "enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@" From bdf5e388ca0d1e6f5e227ba52481fe6b7667ec4d Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Thu, 23 Nov 2023 17:28:26 +0300 Subject: [PATCH 091/223] cmd, les, tests: remove light client code (#28586) * cmd, les, tests: remove light client code This commit removes the light client (LES) code. Since the merge the light client has been broken and it is hard to maintain it alongside the normal client. We decided it would be best to remove it for now and maybe rework and reintroduce it in the future. * cmd, eth: remove some more mentions of light mode * cmd: re-add flags and mark as deprecated * cmd: warn the user about deprecated flags * eth: better error message --- cmd/faucet/README.md | 52 - cmd/faucet/faucet.go | 891 -------------- cmd/faucet/faucet.html | 233 ---- cmd/faucet/faucet_test.go | 46 - cmd/geth/config.go | 3 +- cmd/geth/les_test.go | 206 ---- cmd/geth/main.go | 31 +- cmd/geth/run_test.go | 9 + cmd/utils/flags.go | 128 +- cmd/utils/flags_legacy.go | 41 + eth/backend.go | 2 +- eth/ethconfig/config.go | 10 - ethstats/ethstats.go | 3 +- les/api.go | 349 ------ les/api_backend.go | 337 ------ les/api_test.go | 512 -------- les/benchmark.go | 351 ------ les/bloombits.go | 75 -- les/client.go | 377 ------ les/client_handler.go | 309 ----- les/commons.go | 99 -- les/costtracker.go | 517 -------- les/distributor.go | 313 ----- les/distributor_test.go | 189 --- les/enr_entry.go | 72 -- les/flowcontrol/control.go | 433 ------- les/flowcontrol/logger.go | 65 -- les/flowcontrol/manager.go | 476 -------- les/flowcontrol/manager_test.go | 130 --- les/handler_test.go | 754 ------------ les/metrics.go | 151 --- les/odr.go | 237 ---- les/odr_requests.go | 537 --------- les/odr_test.go | 458 -------- les/peer.go | 1362 ---------------------- les/peer_test.go | 166 --- les/protocol.go | 327 ------ les/request_test.go | 129 -- les/retrieve.go | 421 ------- les/server.go | 281 ----- les/server_handler.go | 436 ------- les/server_requests.go | 566 --------- les/servingqueue.go | 365 ------ les/state_accessor.go | 80 -- les/test_helper.go | 626 ---------- les/txrelay.go | 179 --- les/utils/exec_queue.go | 105 -- les/utils/exec_queue_test.go | 60 - les/utils/expiredvalue.go | 270 ----- les/utils/expiredvalue_test.go | 195 ---- les/utils/limiter.go | 398 ------- les/utils/limiter_test.go | 206 ---- les/utils/timeutils.go | 69 -- les/utils/timeutils_test.go | 47 - les/utils/weighted_select.go | 183 --- les/utils/weighted_select_test.go | 68 -- les/vflux/client/api.go | 107 -- les/vflux/client/fillset.go | 107 -- les/vflux/client/fillset_test.go | 119 -- les/vflux/client/queueiterator.go | 123 -- les/vflux/client/queueiterator_test.go | 99 -- les/vflux/client/requestbasket.go | 285 ----- les/vflux/client/requestbasket_test.go | 171 --- les/vflux/client/serverpool.go | 605 ---------- les/vflux/client/serverpool_test.go | 424 ------- les/vflux/client/timestats.go | 237 ---- les/vflux/client/timestats_test.go | 145 --- les/vflux/client/valuetracker.go | 506 -------- les/vflux/client/valuetracker_test.go | 137 --- les/vflux/client/wrsiterator.go | 127 -- les/vflux/client/wrsiterator_test.go | 105 -- les/vflux/requests.go | 180 --- les/vflux/server/balance.go | 693 ----------- les/vflux/server/balance_test.go | 459 -------- les/vflux/server/balance_tracker.go | 300 ----- les/vflux/server/clientdb.go | 250 ---- les/vflux/server/clientdb_test.go | 148 --- les/vflux/server/clientpool.go | 328 ------ les/vflux/server/clientpool_test.go | 640 ---------- les/vflux/server/metrics.go | 35 - les/vflux/server/prioritypool.go | 695 ----------- les/vflux/server/prioritypool_test.go | 237 ---- les/vflux/server/service.go | 120 -- les/vflux/server/status.go | 59 - tests/fuzzers/les/les-fuzzer.go | 411 ------- tests/fuzzers/les/les_test.go | 25 - tests/fuzzers/vflux/clientpool-fuzzer.go | 333 ------ tests/fuzzers/vflux/clientpool_test.go | 25 - 88 files changed, 81 insertions(+), 23089 deletions(-) delete mode 100644 cmd/faucet/README.md delete mode 100644 cmd/faucet/faucet.go delete mode 100644 cmd/faucet/faucet.html delete mode 100644 cmd/faucet/faucet_test.go delete mode 100644 cmd/geth/les_test.go delete mode 100644 les/api.go delete mode 100644 les/api_backend.go delete mode 100644 les/api_test.go delete mode 100644 les/benchmark.go delete mode 100644 les/bloombits.go delete mode 100644 les/client.go delete mode 100644 les/client_handler.go delete mode 100644 les/commons.go delete mode 100644 les/costtracker.go delete mode 100644 les/distributor.go delete mode 100644 les/distributor_test.go delete mode 100644 les/enr_entry.go delete mode 100644 les/flowcontrol/control.go delete mode 100644 les/flowcontrol/logger.go delete mode 100644 les/flowcontrol/manager.go delete mode 100644 les/flowcontrol/manager_test.go delete mode 100644 les/handler_test.go delete mode 100644 les/metrics.go delete mode 100644 les/odr.go delete mode 100644 les/odr_requests.go delete mode 100644 les/odr_test.go delete mode 100644 les/peer.go delete mode 100644 les/peer_test.go delete mode 100644 les/protocol.go delete mode 100644 les/request_test.go delete mode 100644 les/retrieve.go delete mode 100644 les/server.go delete mode 100644 les/server_handler.go delete mode 100644 les/server_requests.go delete mode 100644 les/servingqueue.go delete mode 100644 les/state_accessor.go delete mode 100644 les/test_helper.go delete mode 100644 les/txrelay.go delete mode 100644 les/utils/exec_queue.go delete mode 100644 les/utils/exec_queue_test.go delete mode 100644 les/utils/expiredvalue.go delete mode 100644 les/utils/expiredvalue_test.go delete mode 100644 les/utils/limiter.go delete mode 100644 les/utils/limiter_test.go delete mode 100644 les/utils/timeutils.go delete mode 100644 les/utils/timeutils_test.go delete mode 100644 les/utils/weighted_select.go delete mode 100644 les/utils/weighted_select_test.go delete mode 100644 les/vflux/client/api.go delete mode 100644 les/vflux/client/fillset.go delete mode 100644 les/vflux/client/fillset_test.go delete mode 100644 les/vflux/client/queueiterator.go delete mode 100644 les/vflux/client/queueiterator_test.go delete mode 100644 les/vflux/client/requestbasket.go delete mode 100644 les/vflux/client/requestbasket_test.go delete mode 100644 les/vflux/client/serverpool.go delete mode 100644 les/vflux/client/serverpool_test.go delete mode 100644 les/vflux/client/timestats.go delete mode 100644 les/vflux/client/timestats_test.go delete mode 100644 les/vflux/client/valuetracker.go delete mode 100644 les/vflux/client/valuetracker_test.go delete mode 100644 les/vflux/client/wrsiterator.go delete mode 100644 les/vflux/client/wrsiterator_test.go delete mode 100644 les/vflux/requests.go delete mode 100644 les/vflux/server/balance.go delete mode 100644 les/vflux/server/balance_test.go delete mode 100644 les/vflux/server/balance_tracker.go delete mode 100644 les/vflux/server/clientdb.go delete mode 100644 les/vflux/server/clientdb_test.go delete mode 100644 les/vflux/server/clientpool.go delete mode 100644 les/vflux/server/clientpool_test.go delete mode 100644 les/vflux/server/metrics.go delete mode 100644 les/vflux/server/prioritypool.go delete mode 100644 les/vflux/server/prioritypool_test.go delete mode 100644 les/vflux/server/service.go delete mode 100644 les/vflux/server/status.go delete mode 100644 tests/fuzzers/les/les-fuzzer.go delete mode 100644 tests/fuzzers/les/les_test.go delete mode 100644 tests/fuzzers/vflux/clientpool-fuzzer.go delete mode 100644 tests/fuzzers/vflux/clientpool_test.go diff --git a/cmd/faucet/README.md b/cmd/faucet/README.md deleted file mode 100644 index 7e857fa0ee..0000000000 --- a/cmd/faucet/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# Faucet - -The `faucet` is a simplistic web application with the goal of distributing small amounts of Ether in private and test networks. - -Users need to post their Ethereum addresses to fund in a Twitter status update or public Facebook post and share the link to the faucet. The faucet will in turn deduplicate user requests and send the Ether. After a funding round, the faucet prevents the same user from requesting again for a pre-configured amount of time, proportional to the amount of Ether requested. - -## Operation - -The `faucet` is a single binary app (everything included) with all configurations set via command line flags and a few files. - -First things first, the `faucet` needs to connect to an Ethereum network, for which it needs the necessary genesis and network infos. Each of the following flags must be set: - -- `-genesis` is a path to a file containing the network `genesis.json`. or using: - - `-goerli` with the faucet with Görli network config - - `-sepolia` with the faucet with Sepolia network config -- `-network` is the devp2p network id used during connection -- `-bootnodes` is a list of `enode://` ids to join the network through - -The `faucet` will use the `les` protocol to join the configured Ethereum network and will store its data in `$HOME/.faucet` (currently not configurable). - -## Funding - -To be able to distribute funds, the `faucet` needs access to an already funded Ethereum account. This can be configured via: - -- `-account.json` is a path to the Ethereum account's JSON key file -- `-account.pass` is a path to a text file with the decryption passphrase - -The faucet is able to distribute various amounts of Ether in exchange for various timeouts. These can be configured via: - -- `-faucet.amount` is the number of Ethers to send by default -- `-faucet.minutes` is the time to wait before allowing a rerequest -- `-faucet.tiers` is the funding tiers to support (x3 time, x2.5 funds) - -## Sybil protection - -To prevent the same user from exhausting funds in a loop, the `faucet` ties requests to social networks and captcha resolvers. - -Captcha protection uses Google's invisible ReCaptcha, thus the `faucet` needs to run on a live domain. The domain needs to be registered in Google's systems to retrieve the captcha API token and secrets. After doing so, captcha protection may be enabled via: - -- `-captcha.token` is the API token for ReCaptcha -- `-captcha.secret` is the API secret for ReCaptcha - -Sybil protection via Twitter requires an API key as of 15th December, 2020. To obtain it, a Twitter user must be upgraded to developer status and a new Twitter App deployed with it. The app's `Bearer` token is required by the faucet to retrieve tweet data: - -- `-twitter.token` is the Bearer token for `v2` API access -- `-twitter.token.v1` is the Bearer token for `v1` API access - -Sybil protection via Facebook uses the website to directly download post data thus does not currently require an API configuration. - -## Miscellaneous - -Beside the above - mostly essential - CLI flags, there are a number that can be used to fine-tune the `faucet`'s operation. Please see `faucet --help` for a full list. diff --git a/cmd/faucet/faucet.go b/cmd/faucet/faucet.go deleted file mode 100644 index 8f4127216e..0000000000 --- a/cmd/faucet/faucet.go +++ /dev/null @@ -1,891 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum 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 go-ethereum. If not, see . - -// faucet is an Ether faucet backed by a light client. -package main - -import ( - "bytes" - "context" - _ "embed" - "encoding/json" - "errors" - "flag" - "fmt" - "html/template" - "io" - "math" - "math/big" - "net/http" - "net/url" - "os" - "path/filepath" - "regexp" - "strconv" - "strings" - "sync" - "time" - - "github.com/ethereum/go-ethereum/accounts" - "github.com/ethereum/go-ethereum/accounts/keystore" - "github.com/ethereum/go-ethereum/cmd/utils" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/eth/downloader" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/ethclient" - "github.com/ethereum/go-ethereum/ethstats" - "github.com/ethereum/go-ethereum/internal/version" - "github.com/ethereum/go-ethereum/les" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/node" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/nat" - "github.com/ethereum/go-ethereum/params" - "github.com/gorilla/websocket" -) - -var ( - genesisFlag = flag.String("genesis", "", "Genesis json file to seed the chain with") - apiPortFlag = flag.Int("apiport", 8080, "Listener port for the HTTP API connection") - ethPortFlag = flag.Int("ethport", 30303, "Listener port for the devp2p connection") - bootFlag = flag.String("bootnodes", "", "Comma separated bootnode enode URLs to seed with") - netFlag = flag.Uint64("network", 0, "Network ID to use for the Ethereum protocol") - statsFlag = flag.String("ethstats", "", "Ethstats network monitoring auth string") - - netnameFlag = flag.String("faucet.name", "", "Network name to assign to the faucet") - payoutFlag = flag.Int("faucet.amount", 1, "Number of Ethers to pay out per user request") - minutesFlag = flag.Int("faucet.minutes", 1440, "Number of minutes to wait between funding rounds") - tiersFlag = flag.Int("faucet.tiers", 3, "Number of funding tiers to enable (x3 time, x2.5 funds)") - - accJSONFlag = flag.String("account.json", "", "Key json file to fund user requests with") - accPassFlag = flag.String("account.pass", "", "Decryption password to access faucet funds") - - captchaToken = flag.String("captcha.token", "", "Recaptcha site key to authenticate client side") - captchaSecret = flag.String("captcha.secret", "", "Recaptcha secret key to authenticate server side") - - noauthFlag = flag.Bool("noauth", false, "Enables funding requests without authentication") - logFlag = flag.Int("loglevel", 3, "Log level to use for Ethereum and the faucet") - - twitterTokenFlag = flag.String("twitter.token", "", "Bearer token to authenticate with the v2 Twitter API") - twitterTokenV1Flag = flag.String("twitter.token.v1", "", "Bearer token to authenticate with the v1.1 Twitter API") - - goerliFlag = flag.Bool("goerli", false, "Initializes the faucet with Görli network config") - sepoliaFlag = flag.Bool("sepolia", false, "Initializes the faucet with Sepolia network config") -) - -var ( - ether = new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil) -) - -//go:embed faucet.html -var websiteTmpl string - -func main() { - // Parse the flags and set up the logger to print everything requested - flag.Parse() - log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(*logFlag), log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) - - // Construct the payout tiers - amounts := make([]string, *tiersFlag) - periods := make([]string, *tiersFlag) - for i := 0; i < *tiersFlag; i++ { - // Calculate the amount for the next tier and format it - amount := float64(*payoutFlag) * math.Pow(2.5, float64(i)) - amounts[i] = fmt.Sprintf("%s Ethers", strconv.FormatFloat(amount, 'f', -1, 64)) - if amount == 1 { - amounts[i] = strings.TrimSuffix(amounts[i], "s") - } - // Calculate the period for the next tier and format it - period := *minutesFlag * int(math.Pow(3, float64(i))) - periods[i] = fmt.Sprintf("%d mins", period) - if period%60 == 0 { - period /= 60 - periods[i] = fmt.Sprintf("%d hours", period) - - if period%24 == 0 { - period /= 24 - periods[i] = fmt.Sprintf("%d days", period) - } - } - if period == 1 { - periods[i] = strings.TrimSuffix(periods[i], "s") - } - } - website := new(bytes.Buffer) - err := template.Must(template.New("").Parse(websiteTmpl)).Execute(website, map[string]interface{}{ - "Network": *netnameFlag, - "Amounts": amounts, - "Periods": periods, - "Recaptcha": *captchaToken, - "NoAuth": *noauthFlag, - }) - if err != nil { - log.Crit("Failed to render the faucet template", "err", err) - } - // Load and parse the genesis block requested by the user - genesis, err := getGenesis(*genesisFlag, *goerliFlag, *sepoliaFlag) - if err != nil { - log.Crit("Failed to parse genesis config", "err", err) - } - // Convert the bootnodes to internal enode representations - var enodes []*enode.Node - for _, boot := range strings.Split(*bootFlag, ",") { - if url, err := enode.Parse(enode.ValidSchemes, boot); err == nil { - enodes = append(enodes, url) - } else { - log.Error("Failed to parse bootnode URL", "url", boot, "err", err) - } - } - // Load up the account key and decrypt its password - blob, err := os.ReadFile(*accPassFlag) - if err != nil { - log.Crit("Failed to read account password contents", "file", *accPassFlag, "err", err) - } - pass := strings.TrimSuffix(string(blob), "\n") - - ks := keystore.NewKeyStore(filepath.Join(os.Getenv("HOME"), ".faucet", "keys"), keystore.StandardScryptN, keystore.StandardScryptP) - if blob, err = os.ReadFile(*accJSONFlag); err != nil { - log.Crit("Failed to read account key contents", "file", *accJSONFlag, "err", err) - } - acc, err := ks.Import(blob, pass, pass) - if err != nil && err != keystore.ErrAccountAlreadyExists { - log.Crit("Failed to import faucet signer account", "err", err) - } - if err := ks.Unlock(acc, pass); err != nil { - log.Crit("Failed to unlock faucet signer account", "err", err) - } - // Assemble and start the faucet light service - faucet, err := newFaucet(genesis, *ethPortFlag, enodes, *netFlag, *statsFlag, ks, website.Bytes()) - if err != nil { - log.Crit("Failed to start faucet", "err", err) - } - defer faucet.close() - - if err := faucet.listenAndServe(*apiPortFlag); err != nil { - log.Crit("Failed to launch faucet API", "err", err) - } -} - -// request represents an accepted funding request. -type request struct { - Avatar string `json:"avatar"` // Avatar URL to make the UI nicer - Account common.Address `json:"account"` // Ethereum address being funded - Time time.Time `json:"time"` // Timestamp when the request was accepted - Tx *types.Transaction `json:"tx"` // Transaction funding the account -} - -// faucet represents a crypto faucet backed by an Ethereum light client. -type faucet struct { - config *params.ChainConfig // Chain configurations for signing - stack *node.Node // Ethereum protocol stack - client *ethclient.Client // Client connection to the Ethereum chain - index []byte // Index page to serve up on the web - - keystore *keystore.KeyStore // Keystore containing the single signer - account accounts.Account // Account funding user faucet requests - head *types.Header // Current head header of the faucet - balance *big.Int // Current balance of the faucet - nonce uint64 // Current pending nonce of the faucet - price *big.Int // Current gas price to issue funds with - - conns []*wsConn // Currently live websocket connections - timeouts map[string]time.Time // History of users and their funding timeouts - reqs []*request // Currently pending funding requests - update chan struct{} // Channel to signal request updates - - lock sync.RWMutex // Lock protecting the faucet's internals -} - -// wsConn wraps a websocket connection with a write mutex as the underlying -// websocket library does not synchronize access to the stream. -type wsConn struct { - conn *websocket.Conn - wlock sync.Mutex -} - -func newFaucet(genesis *core.Genesis, port int, enodes []*enode.Node, network uint64, stats string, ks *keystore.KeyStore, index []byte) (*faucet, error) { - // Assemble the raw devp2p protocol stack - git, _ := version.VCS() - stack, err := node.New(&node.Config{ - Name: "geth", - Version: params.VersionWithCommit(git.Commit, git.Date), - DataDir: filepath.Join(os.Getenv("HOME"), ".faucet"), - P2P: p2p.Config{ - NAT: nat.Any(), - NoDiscovery: true, - DiscoveryV5: true, - ListenAddr: fmt.Sprintf(":%d", port), - MaxPeers: 25, - BootstrapNodesV5: enodes, - }, - }) - if err != nil { - return nil, err - } - - // Assemble the Ethereum light client protocol - cfg := ethconfig.Defaults - cfg.SyncMode = downloader.LightSync - cfg.NetworkId = network - cfg.Genesis = genesis - utils.SetDNSDiscoveryDefaults(&cfg, genesis.ToBlock().Hash()) - - lesBackend, err := les.New(stack, &cfg) - if err != nil { - return nil, fmt.Errorf("failed to register the Ethereum service: %w", err) - } - - // Assemble the ethstats monitoring and reporting service' - if stats != "" { - if err := ethstats.New(stack, lesBackend.ApiBackend, lesBackend.Engine(), stats); err != nil { - return nil, err - } - } - // Boot up the client and ensure it connects to bootnodes - if err := stack.Start(); err != nil { - return nil, err - } - for _, boot := range enodes { - old, err := enode.Parse(enode.ValidSchemes, boot.String()) - if err == nil { - stack.Server().AddPeer(old) - } - } - // Attach to the client and retrieve and interesting metadatas - api := stack.Attach() - client := ethclient.NewClient(api) - - return &faucet{ - config: genesis.Config, - stack: stack, - client: client, - index: index, - keystore: ks, - account: ks.Accounts()[0], - timeouts: make(map[string]time.Time), - update: make(chan struct{}, 1), - }, nil -} - -// close terminates the Ethereum connection and tears down the faucet. -func (f *faucet) close() error { - return f.stack.Close() -} - -// listenAndServe registers the HTTP handlers for the faucet and boots it up -// for service user funding requests. -func (f *faucet) listenAndServe(port int) error { - go f.loop() - - http.HandleFunc("/", f.webHandler) - http.HandleFunc("/api", f.apiHandler) - return http.ListenAndServe(fmt.Sprintf(":%d", port), nil) -} - -// webHandler handles all non-api requests, simply flattening and returning the -// faucet website. -func (f *faucet) webHandler(w http.ResponseWriter, r *http.Request) { - w.Write(f.index) -} - -// apiHandler handles requests for Ether grants and transaction statuses. -func (f *faucet) apiHandler(w http.ResponseWriter, r *http.Request) { - upgrader := websocket.Upgrader{} - conn, err := upgrader.Upgrade(w, r, nil) - if err != nil { - return - } - - // Start tracking the connection and drop at the end - defer conn.Close() - - f.lock.Lock() - wsconn := &wsConn{conn: conn} - f.conns = append(f.conns, wsconn) - f.lock.Unlock() - - defer func() { - f.lock.Lock() - for i, c := range f.conns { - if c.conn == conn { - f.conns = append(f.conns[:i], f.conns[i+1:]...) - break - } - } - f.lock.Unlock() - }() - // Gather the initial stats from the network to report - var ( - head *types.Header - balance *big.Int - nonce uint64 - ) - for head == nil || balance == nil { - // Retrieve the current stats cached by the faucet - f.lock.RLock() - if f.head != nil { - head = types.CopyHeader(f.head) - } - if f.balance != nil { - balance = new(big.Int).Set(f.balance) - } - nonce = f.nonce - f.lock.RUnlock() - - if head == nil || balance == nil { - // Report the faucet offline until initial stats are ready - //lint:ignore ST1005 This error is to be displayed in the browser - if err = sendError(wsconn, errors.New("Faucet offline")); err != nil { - log.Warn("Failed to send faucet error to client", "err", err) - return - } - time.Sleep(3 * time.Second) - } - } - // Send over the initial stats and the latest header - f.lock.RLock() - reqs := f.reqs - f.lock.RUnlock() - if err = send(wsconn, map[string]interface{}{ - "funds": new(big.Int).Div(balance, ether), - "funded": nonce, - "peers": f.stack.Server().PeerCount(), - "requests": reqs, - }, 3*time.Second); err != nil { - log.Warn("Failed to send initial stats to client", "err", err) - return - } - if err = send(wsconn, head, 3*time.Second); err != nil { - log.Warn("Failed to send initial header to client", "err", err) - return - } - // Keep reading requests from the websocket until the connection breaks - for { - // Fetch the next funding request and validate against github - var msg struct { - URL string `json:"url"` - Tier uint `json:"tier"` - Captcha string `json:"captcha"` - } - if err = conn.ReadJSON(&msg); err != nil { - return - } - if !*noauthFlag && !strings.HasPrefix(msg.URL, "https://twitter.com/") && !strings.HasPrefix(msg.URL, "https://www.facebook.com/") { - if err = sendError(wsconn, errors.New("URL doesn't link to supported services")); err != nil { - log.Warn("Failed to send URL error to client", "err", err) - return - } - continue - } - if msg.Tier >= uint(*tiersFlag) { - //lint:ignore ST1005 This error is to be displayed in the browser - if err = sendError(wsconn, errors.New("Invalid funding tier requested")); err != nil { - log.Warn("Failed to send tier error to client", "err", err) - return - } - continue - } - log.Info("Faucet funds requested", "url", msg.URL, "tier", msg.Tier) - - // If captcha verifications are enabled, make sure we're not dealing with a robot - if *captchaToken != "" { - form := url.Values{} - form.Add("secret", *captchaSecret) - form.Add("response", msg.Captcha) - - res, err := http.PostForm("https://www.google.com/recaptcha/api/siteverify", form) - if err != nil { - if err = sendError(wsconn, err); err != nil { - log.Warn("Failed to send captcha post error to client", "err", err) - return - } - continue - } - var result struct { - Success bool `json:"success"` - Errors json.RawMessage `json:"error-codes"` - } - err = json.NewDecoder(res.Body).Decode(&result) - res.Body.Close() - if err != nil { - if err = sendError(wsconn, err); err != nil { - log.Warn("Failed to send captcha decode error to client", "err", err) - return - } - continue - } - if !result.Success { - log.Warn("Captcha verification failed", "err", string(result.Errors)) - //lint:ignore ST1005 it's funny and the robot won't mind - if err = sendError(wsconn, errors.New("Beep-bop, you're a robot!")); err != nil { - log.Warn("Failed to send captcha failure to client", "err", err) - return - } - continue - } - } - // Retrieve the Ethereum address to fund, the requesting user and a profile picture - var ( - id string - username string - avatar string - address common.Address - ) - switch { - case strings.HasPrefix(msg.URL, "https://twitter.com/"): - id, username, avatar, address, err = authTwitter(msg.URL, *twitterTokenV1Flag, *twitterTokenFlag) - case strings.HasPrefix(msg.URL, "https://www.facebook.com/"): - username, avatar, address, err = authFacebook(msg.URL) - id = username - case *noauthFlag: - username, avatar, address, err = authNoAuth(msg.URL) - id = username - default: - //lint:ignore ST1005 This error is to be displayed in the browser - err = errors.New("Something funky happened, please open an issue at https://github.com/ethereum/go-ethereum/issues") - } - if err != nil { - if err = sendError(wsconn, err); err != nil { - log.Warn("Failed to send prefix error to client", "err", err) - return - } - continue - } - log.Info("Faucet request valid", "url", msg.URL, "tier", msg.Tier, "user", username, "address", address) - - // Ensure the user didn't request funds too recently - f.lock.Lock() - var ( - fund bool - timeout time.Time - ) - if timeout = f.timeouts[id]; time.Now().After(timeout) { - // User wasn't funded recently, create the funding transaction - amount := new(big.Int).Mul(big.NewInt(int64(*payoutFlag)), ether) - amount = new(big.Int).Mul(amount, new(big.Int).Exp(big.NewInt(5), big.NewInt(int64(msg.Tier)), nil)) - amount = new(big.Int).Div(amount, new(big.Int).Exp(big.NewInt(2), big.NewInt(int64(msg.Tier)), nil)) - - tx := types.NewTransaction(f.nonce+uint64(len(f.reqs)), address, amount, 21000, f.price, nil) - signed, err := f.keystore.SignTx(f.account, tx, f.config.ChainID) - if err != nil { - f.lock.Unlock() - if err = sendError(wsconn, err); err != nil { - log.Warn("Failed to send transaction creation error to client", "err", err) - return - } - continue - } - // Submit the transaction and mark as funded if successful - if err := f.client.SendTransaction(context.Background(), signed); err != nil { - f.lock.Unlock() - if err = sendError(wsconn, err); err != nil { - log.Warn("Failed to send transaction transmission error to client", "err", err) - return - } - continue - } - f.reqs = append(f.reqs, &request{ - Avatar: avatar, - Account: address, - Time: time.Now(), - Tx: signed, - }) - timeout := time.Duration(*minutesFlag*int(math.Pow(3, float64(msg.Tier)))) * time.Minute - grace := timeout / 288 // 24h timeout => 5m grace - - f.timeouts[id] = time.Now().Add(timeout - grace) - fund = true - } - f.lock.Unlock() - - // Send an error if too frequent funding, othewise a success - if !fund { - if err = sendError(wsconn, fmt.Errorf("%s left until next allowance", common.PrettyDuration(time.Until(timeout)))); err != nil { // nolint: gosimple - log.Warn("Failed to send funding error to client", "err", err) - return - } - continue - } - if err = sendSuccess(wsconn, fmt.Sprintf("Funding request accepted for %s into %s", username, address.Hex())); err != nil { - log.Warn("Failed to send funding success to client", "err", err) - return - } - select { - case f.update <- struct{}{}: - default: - } - } -} - -// refresh attempts to retrieve the latest header from the chain and extract the -// associated faucet balance and nonce for connectivity caching. -func (f *faucet) refresh(head *types.Header) error { - // Ensure a state update does not run for too long - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - - // If no header was specified, use the current chain head - var err error - if head == nil { - if head, err = f.client.HeaderByNumber(ctx, nil); err != nil { - return err - } - } - // Retrieve the balance, nonce and gas price from the current head - var ( - balance *big.Int - nonce uint64 - price *big.Int - ) - if balance, err = f.client.BalanceAt(ctx, f.account.Address, head.Number); err != nil { - return err - } - if nonce, err = f.client.NonceAt(ctx, f.account.Address, head.Number); err != nil { - return err - } - if price, err = f.client.SuggestGasPrice(ctx); err != nil { - return err - } - // Everything succeeded, update the cached stats and eject old requests - f.lock.Lock() - f.head, f.balance = head, balance - f.price, f.nonce = price, nonce - for len(f.reqs) > 0 && f.reqs[0].Tx.Nonce() < f.nonce { - f.reqs = f.reqs[1:] - } - f.lock.Unlock() - - return nil -} - -// loop keeps waiting for interesting events and pushes them out to connected -// websockets. -func (f *faucet) loop() { - // Wait for chain events and push them to clients - heads := make(chan *types.Header, 16) - sub, err := f.client.SubscribeNewHead(context.Background(), heads) - if err != nil { - log.Crit("Failed to subscribe to head events", "err", err) - } - defer sub.Unsubscribe() - - // Start a goroutine to update the state from head notifications in the background - update := make(chan *types.Header) - - go func() { - for head := range update { - // New chain head arrived, query the current stats and stream to clients - timestamp := time.Unix(int64(head.Time), 0) - if time.Since(timestamp) > time.Hour { - log.Warn("Skipping faucet refresh, head too old", "number", head.Number, "hash", head.Hash(), "age", common.PrettyAge(timestamp)) - continue - } - if err := f.refresh(head); err != nil { - log.Warn("Failed to update faucet state", "block", head.Number, "hash", head.Hash(), "err", err) - continue - } - // Faucet state retrieved, update locally and send to clients - f.lock.RLock() - log.Info("Updated faucet state", "number", head.Number, "hash", head.Hash(), "age", common.PrettyAge(timestamp), "balance", f.balance, "nonce", f.nonce, "price", f.price) - - balance := new(big.Int).Div(f.balance, ether) - peers := f.stack.Server().PeerCount() - - for _, conn := range f.conns { - if err := send(conn, map[string]interface{}{ - "funds": balance, - "funded": f.nonce, - "peers": peers, - "requests": f.reqs, - }, time.Second); err != nil { - log.Warn("Failed to send stats to client", "err", err) - conn.conn.Close() - continue - } - if err := send(conn, head, time.Second); err != nil { - log.Warn("Failed to send header to client", "err", err) - conn.conn.Close() - } - } - f.lock.RUnlock() - } - }() - // Wait for various events and assing to the appropriate background threads - for { - select { - case head := <-heads: - // New head arrived, send if for state update if there's none running - select { - case update <- head: - default: - } - - case <-f.update: - // Pending requests updated, stream to clients - f.lock.RLock() - for _, conn := range f.conns { - if err := send(conn, map[string]interface{}{"requests": f.reqs}, time.Second); err != nil { - log.Warn("Failed to send requests to client", "err", err) - conn.conn.Close() - } - } - f.lock.RUnlock() - } - } -} - -// sends transmits a data packet to the remote end of the websocket, but also -// setting a write deadline to prevent waiting forever on the node. -func send(conn *wsConn, value interface{}, timeout time.Duration) error { - if timeout == 0 { - timeout = 60 * time.Second - } - conn.wlock.Lock() - defer conn.wlock.Unlock() - conn.conn.SetWriteDeadline(time.Now().Add(timeout)) - return conn.conn.WriteJSON(value) -} - -// sendError transmits an error to the remote end of the websocket, also setting -// the write deadline to 1 second to prevent waiting forever. -func sendError(conn *wsConn, err error) error { - return send(conn, map[string]string{"error": err.Error()}, time.Second) -} - -// sendSuccess transmits a success message to the remote end of the websocket, also -// setting the write deadline to 1 second to prevent waiting forever. -func sendSuccess(conn *wsConn, msg string) error { - return send(conn, map[string]string{"success": msg}, time.Second) -} - -// authTwitter tries to authenticate a faucet request using Twitter posts, returning -// the uniqueness identifier (user id/username), username, avatar URL and Ethereum address to fund on success. -func authTwitter(url string, tokenV1, tokenV2 string) (string, string, string, common.Address, error) { - // Ensure the user specified a meaningful URL, no fancy nonsense - parts := strings.Split(url, "/") - if len(parts) < 4 || parts[len(parts)-2] != "status" { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", "", common.Address{}, errors.New("Invalid Twitter status URL") - } - // Strip any query parameters from the tweet id and ensure it's numeric - tweetID := strings.Split(parts[len(parts)-1], "?")[0] - if !regexp.MustCompile("^[0-9]+$").MatchString(tweetID) { - return "", "", "", common.Address{}, errors.New("Invalid Tweet URL") - } - // Twitter's API isn't really friendly with direct links. - // It is restricted to 300 queries / 15 minute with an app api key. - // Anything more will require read only authorization from the users and that we want to avoid. - - // If Twitter bearer token is provided, use the API, selecting the version - // the user would prefer (currently there's a limit of 1 v2 app / developer - // but unlimited v1.1 apps). - switch { - case tokenV1 != "": - return authTwitterWithTokenV1(tweetID, tokenV1) - case tokenV2 != "": - return authTwitterWithTokenV2(tweetID, tokenV2) - } - // Twitter API token isn't provided so we just load the public posts - // and scrape it for the Ethereum address and profile URL. We need to load - // the mobile page though since the main page loads tweet contents via JS. - url = strings.Replace(url, "https://twitter.com/", "https://mobile.twitter.com/", 1) - - res, err := http.Get(url) - if err != nil { - return "", "", "", common.Address{}, err - } - defer res.Body.Close() - - // Resolve the username from the final redirect, no intermediate junk - parts = strings.Split(res.Request.URL.String(), "/") - if len(parts) < 4 || parts[len(parts)-2] != "status" { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", "", common.Address{}, errors.New("Invalid Twitter status URL") - } - username := parts[len(parts)-3] - - body, err := io.ReadAll(res.Body) - if err != nil { - return "", "", "", common.Address{}, err - } - address := common.HexToAddress(string(regexp.MustCompile("0x[0-9a-fA-F]{40}").Find(body))) - if address == (common.Address{}) { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", "", common.Address{}, errors.New("No Ethereum address found to fund") - } - var avatar string - if parts = regexp.MustCompile(`src="([^"]+twimg\.com/profile_images[^"]+)"`).FindStringSubmatch(string(body)); len(parts) == 2 { - avatar = parts[1] - } - return username + "@twitter", username, avatar, address, nil -} - -// authTwitterWithTokenV1 tries to authenticate a faucet request using Twitter's v1 -// API, returning the user id, username, avatar URL and Ethereum address to fund on -// success. -func authTwitterWithTokenV1(tweetID string, token string) (string, string, string, common.Address, error) { - // Query the tweet details from Twitter - url := fmt.Sprintf("https://api.twitter.com/1.1/statuses/show.json?id=%s", tweetID) - req, err := http.NewRequest(http.MethodGet, url, nil) - if err != nil { - return "", "", "", common.Address{}, err - } - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token)) - res, err := http.DefaultClient.Do(req) - if err != nil { - return "", "", "", common.Address{}, err - } - defer res.Body.Close() - - var result struct { - Text string `json:"text"` - User struct { - ID string `json:"id_str"` - Username string `json:"screen_name"` - Avatar string `json:"profile_image_url"` - } `json:"user"` - } - err = json.NewDecoder(res.Body).Decode(&result) - if err != nil { - return "", "", "", common.Address{}, err - } - address := common.HexToAddress(regexp.MustCompile("0x[0-9a-fA-F]{40}").FindString(result.Text)) - if address == (common.Address{}) { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", "", common.Address{}, errors.New("No Ethereum address found to fund") - } - return result.User.ID + "@twitter", result.User.Username, result.User.Avatar, address, nil -} - -// authTwitterWithTokenV2 tries to authenticate a faucet request using Twitter's v2 -// API, returning the user id, username, avatar URL and Ethereum address to fund on -// success. -func authTwitterWithTokenV2(tweetID string, token string) (string, string, string, common.Address, error) { - // Query the tweet details from Twitter - url := fmt.Sprintf("https://api.twitter.com/2/tweets/%s?expansions=author_id&user.fields=profile_image_url", tweetID) - req, err := http.NewRequest(http.MethodGet, url, nil) - if err != nil { - return "", "", "", common.Address{}, err - } - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token)) - res, err := http.DefaultClient.Do(req) - if err != nil { - return "", "", "", common.Address{}, err - } - defer res.Body.Close() - - var result struct { - Data struct { - AuthorID string `json:"author_id"` - Text string `json:"text"` - } `json:"data"` - Includes struct { - Users []struct { - ID string `json:"id"` - Username string `json:"username"` - Avatar string `json:"profile_image_url"` - } `json:"users"` - } `json:"includes"` - } - - err = json.NewDecoder(res.Body).Decode(&result) - if err != nil { - return "", "", "", common.Address{}, err - } - - address := common.HexToAddress(regexp.MustCompile("0x[0-9a-fA-F]{40}").FindString(result.Data.Text)) - if address == (common.Address{}) { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", "", common.Address{}, errors.New("No Ethereum address found to fund") - } - return result.Data.AuthorID + "@twitter", result.Includes.Users[0].Username, result.Includes.Users[0].Avatar, address, nil -} - -// authFacebook tries to authenticate a faucet request using Facebook posts, -// returning the username, avatar URL and Ethereum address to fund on success. -func authFacebook(url string) (string, string, common.Address, error) { - // Ensure the user specified a meaningful URL, no fancy nonsense - parts := strings.Split(strings.Split(url, "?")[0], "/") - if parts[len(parts)-1] == "" { - parts = parts[0 : len(parts)-1] - } - if len(parts) < 4 || parts[len(parts)-2] != "posts" { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", common.Address{}, errors.New("Invalid Facebook post URL") - } - username := parts[len(parts)-3] - - // Facebook's Graph API isn't really friendly with direct links. Still, we don't - // want to do ask read permissions from users, so just load the public posts and - // scrape it for the Ethereum address and profile URL. - // - // Facebook recently changed their desktop webpage to use AJAX for loading post - // content, so switch over to the mobile site for now. Will probably end up having - // to use the API eventually. - crawl := strings.Replace(url, "www.facebook.com", "m.facebook.com", 1) - - res, err := http.Get(crawl) - if err != nil { - return "", "", common.Address{}, err - } - defer res.Body.Close() - - body, err := io.ReadAll(res.Body) - if err != nil { - return "", "", common.Address{}, err - } - address := common.HexToAddress(string(regexp.MustCompile("0x[0-9a-fA-F]{40}").Find(body))) - if address == (common.Address{}) { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", common.Address{}, errors.New("No Ethereum address found to fund. Please check the post URL and verify that it can be viewed publicly.") - } - var avatar string - if parts = regexp.MustCompile(`src="([^"]+fbcdn\.net[^"]+)"`).FindStringSubmatch(string(body)); len(parts) == 2 { - avatar = parts[1] - } - return username + "@facebook", avatar, address, nil -} - -// authNoAuth tries to interpret a faucet request as a plain Ethereum address, -// without actually performing any remote authentication. This mode is prone to -// Byzantine attack, so only ever use for truly private networks. -func authNoAuth(url string) (string, string, common.Address, error) { - address := common.HexToAddress(regexp.MustCompile("0x[0-9a-fA-F]{40}").FindString(url)) - if address == (common.Address{}) { - //lint:ignore ST1005 This error is to be displayed in the browser - return "", "", common.Address{}, errors.New("No Ethereum address found to fund") - } - return address.Hex() + "@noauth", "", address, nil -} - -// getGenesis returns a genesis based on input args -func getGenesis(genesisFlag string, goerliFlag bool, sepoliaFlag bool) (*core.Genesis, error) { - switch { - case genesisFlag != "": - var genesis core.Genesis - err := common.LoadJSON(genesisFlag, &genesis) - return &genesis, err - case goerliFlag: - return core.DefaultGoerliGenesisBlock(), nil - case sepoliaFlag: - return core.DefaultSepoliaGenesisBlock(), nil - default: - return nil, errors.New("no genesis flag provided") - } -} diff --git a/cmd/faucet/faucet.html b/cmd/faucet/faucet.html deleted file mode 100644 index dad5ad84f2..0000000000 --- a/cmd/faucet/faucet.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - {{.Network}}: Authenticated Faucet - - - - - - - - - - - - - -
-
-
-
-

{{.Network}} Authenticated Faucet

-
-
-
-
-
- - - - - -
{{if .Recaptcha}} -
{{end}} -
-
-
-
-
-
-
-
- -
-
-
-
-
-

How does this work?

-

This Ether faucet is running on the {{.Network}} network. To prevent malicious actors from exhausting all available funds or accumulating enough Ether to mount long running spam attacks, requests are tied to common 3rd party social network accounts. Anyone having a Twitter or Facebook account may request funds within the permitted limits.

-
-
-
To request funds via Twitter, make a tweet with your Ethereum address pasted into the contents (surrounding text doesn't matter).
Copy-paste the tweets URL into the above input box and fire away!
- -
-
To request funds via Facebook, publish a new public post with your Ethereum address embedded into the content (surrounding text doesn't matter).
Copy-paste the posts URL into the above input box and fire away!
- - {{if .NoAuth}} -
-
To request funds without authentication, simply copy-paste your Ethereum address into the above input box (surrounding text doesn't matter) and fire away.
This mode is susceptible to Byzantine attacks. Only use for debugging or private networks!
- {{end}} -
-

You can track the current pending requests below the input field to see how much you have to wait until your turn comes.

- {{if .Recaptcha}}The faucet is running invisible reCaptcha protection against bots.{{end}} -
-
-
-
- - {{if .Recaptcha}} - {{end}} - - diff --git a/cmd/faucet/faucet_test.go b/cmd/faucet/faucet_test.go deleted file mode 100644 index 39b62c4939..0000000000 --- a/cmd/faucet/faucet_test.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum 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 go-ethereum. If not, see . - -package main - -import ( - "testing" - - "github.com/ethereum/go-ethereum/common" -) - -func TestFacebook(t *testing.T) { - t.Parallel() - // TODO: Remove facebook auth or implement facebook api, which seems to require an API key - t.Skipf("The facebook access is flaky, needs to be reimplemented or removed") - for _, tt := range []struct { - url string - want common.Address - }{ - { - "https://www.facebook.com/fooz.gazonk/posts/2837228539847129", - common.HexToAddress("0xDeadDeaDDeaDbEefbEeFbEEfBeeFBeefBeeFbEEF"), - }, - } { - _, _, gotAddress, err := authFacebook(tt.url) - if err != nil { - t.Fatal(err) - } - if gotAddress != tt.want { - t.Fatalf("address wrong, have %v want %v", gotAddress, tt.want) - } - } -} diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 027dac7bd6..5f52f1df54 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -35,7 +35,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/eth/catalyst" - "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/internal/flags" @@ -222,7 +221,7 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { } catalyst.RegisterSimulatedBeaconAPIs(stack, simBeacon) stack.RegisterLifecycle(simBeacon) - } else if cfg.Eth.SyncMode != downloader.LightSync { + } else { err := catalyst.Register(stack, eth) if err != nil { utils.Fatalf("failed to register catalyst service: %v", err) diff --git a/cmd/geth/les_test.go b/cmd/geth/les_test.go deleted file mode 100644 index 98c8a12dc6..0000000000 --- a/cmd/geth/les_test.go +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum 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 go-ethereum. If not, see . - -package main - -import ( - "context" - "fmt" - "os" - "path/filepath" - "runtime" - "strings" - "sync/atomic" - "testing" - "time" - - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/rpc" -) - -type gethrpc struct { - name string - rpc *rpc.Client - geth *testgeth - nodeInfo *p2p.NodeInfo -} - -func (g *gethrpc) killAndWait() { - g.geth.Kill() - g.geth.WaitExit() -} - -func (g *gethrpc) callRPC(result interface{}, method string, args ...interface{}) { - if err := g.rpc.Call(&result, method, args...); err != nil { - g.geth.Fatalf("callRPC %v: %v", method, err) - } -} - -func (g *gethrpc) addPeer(peer *gethrpc) { - g.geth.Logf("%v.addPeer(%v)", g.name, peer.name) - enode := peer.getNodeInfo().Enode - peerCh := make(chan *p2p.PeerEvent) - sub, err := g.rpc.Subscribe(context.Background(), "admin", peerCh, "peerEvents") - if err != nil { - g.geth.Fatalf("subscribe %v: %v", g.name, err) - } - defer sub.Unsubscribe() - g.callRPC(nil, "admin_addPeer", enode) - dur := 14 * time.Second - timeout := time.After(dur) - select { - case ev := <-peerCh: - g.geth.Logf("%v received event: type=%v, peer=%v", g.name, ev.Type, ev.Peer) - case err := <-sub.Err(): - g.geth.Fatalf("%v sub error: %v", g.name, err) - case <-timeout: - g.geth.Error("timeout adding peer after", dur) - } -} - -// Use this function instead of `g.nodeInfo` directly -func (g *gethrpc) getNodeInfo() *p2p.NodeInfo { - if g.nodeInfo != nil { - return g.nodeInfo - } - g.nodeInfo = &p2p.NodeInfo{} - g.callRPC(&g.nodeInfo, "admin_nodeInfo") - return g.nodeInfo -} - -// ipcEndpoint resolves an IPC endpoint based on a configured value, taking into -// account the set data folders as well as the designated platform we're currently -// running on. -func ipcEndpoint(ipcPath, datadir string) string { - // On windows we can only use plain top-level pipes - if runtime.GOOS == "windows" { - if strings.HasPrefix(ipcPath, `\\.\pipe\`) { - return ipcPath - } - return `\\.\pipe\` + ipcPath - } - // Resolve names into the data directory full paths otherwise - if filepath.Base(ipcPath) == ipcPath { - if datadir == "" { - return filepath.Join(os.TempDir(), ipcPath) - } - return filepath.Join(datadir, ipcPath) - } - return ipcPath -} - -// nextIPC ensures that each ipc pipe gets a unique name. -// On linux, it works well to use ipc pipes all over the filesystem (in datadirs), -// but windows require pipes to sit in "\\.\pipe\". Therefore, to run several -// nodes simultaneously, we need to distinguish between them, which we do by -// the pipe filename instead of folder. -var nextIPC atomic.Uint32 - -func startGethWithIpc(t *testing.T, name string, args ...string) *gethrpc { - ipcName := fmt.Sprintf("geth-%d.ipc", nextIPC.Add(1)) - args = append([]string{"--networkid=42", "--port=0", "--authrpc.port", "0", "--ipcpath", ipcName}, args...) - t.Logf("Starting %v with rpc: %v", name, args) - - g := &gethrpc{ - name: name, - geth: runGeth(t, args...), - } - ipcpath := ipcEndpoint(ipcName, g.geth.Datadir) - // We can't know exactly how long geth will take to start, so we try 10 - // times over a 5 second period. - var err error - for i := 0; i < 10; i++ { - time.Sleep(500 * time.Millisecond) - if g.rpc, err = rpc.Dial(ipcpath); err == nil { - return g - } - } - t.Fatalf("%v rpc connect to %v: %v", name, ipcpath, err) - return nil -} - -func initGeth(t *testing.T) string { - args := []string{"--networkid=42", "init", "./testdata/clique.json"} - t.Logf("Initializing geth: %v ", args) - g := runGeth(t, args...) - datadir := g.Datadir - g.WaitExit() - return datadir -} - -func startLightServer(t *testing.T) *gethrpc { - datadir := initGeth(t) - t.Logf("Importing keys to geth") - runGeth(t, "account", "import", "--datadir", datadir, "--password", "./testdata/password.txt", "--lightkdf", "./testdata/key.prv").WaitExit() - account := "0x02f0d131f1f97aef08aec6e3291b957d9efe7105" - server := startGethWithIpc(t, "lightserver", "--allow-insecure-unlock", "--datadir", datadir, "--password", "./testdata/password.txt", "--unlock", account, "--miner.etherbase=0x02f0d131f1f97aef08aec6e3291b957d9efe7105", "--mine", "--light.serve=100", "--light.maxpeers=1", "--discv4=false", "--nat=extip:127.0.0.1", "--verbosity=4") - return server -} - -func startClient(t *testing.T, name string) *gethrpc { - datadir := initGeth(t) - return startGethWithIpc(t, name, "--datadir", datadir, "--discv4=false", "--syncmode=light", "--nat=extip:127.0.0.1", "--verbosity=4") -} - -func TestPriorityClient(t *testing.T) { - t.Parallel() - lightServer := startLightServer(t) - defer lightServer.killAndWait() - - // Start client and add lightServer as peer - freeCli := startClient(t, "freeCli") - defer freeCli.killAndWait() - freeCli.addPeer(lightServer) - - var peers []*p2p.PeerInfo - freeCli.callRPC(&peers, "admin_peers") - if len(peers) != 1 { - t.Errorf("Expected: # of client peers == 1, actual: %v", len(peers)) - return - } - - // Set up priority client, get its nodeID, increase its balance on the lightServer - prioCli := startClient(t, "prioCli") - defer prioCli.killAndWait() - // 3_000_000_000 once we move to Go 1.13 - tokens := uint64(3000000000) - lightServer.callRPC(nil, "les_addBalance", prioCli.getNodeInfo().ID, tokens) - prioCli.addPeer(lightServer) - - // Check if priority client is actually syncing and the regular client got kicked out - prioCli.callRPC(&peers, "admin_peers") - if len(peers) != 1 { - t.Errorf("Expected: # of prio peers == 1, actual: %v", len(peers)) - } - - nodes := map[string]*gethrpc{ - lightServer.getNodeInfo().ID: lightServer, - freeCli.getNodeInfo().ID: freeCli, - prioCli.getNodeInfo().ID: prioCli, - } - time.Sleep(1 * time.Second) - lightServer.callRPC(&peers, "admin_peers") - peersWithNames := make(map[string]string) - for _, p := range peers { - peersWithNames[nodes[p.ID].name] = p.ID - } - if _, freeClientFound := peersWithNames[freeCli.name]; freeClientFound { - t.Error("client is still a peer of lightServer", peersWithNames) - } - if _, prioClientFound := peersWithNames[prioCli.name]; !prioClientFound { - t.Error("prio client is not among lightServer peers", peersWithNames) - } -} diff --git a/cmd/geth/main.go b/cmd/geth/main.go index d1b14b81cd..e5a17e45cf 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -62,7 +62,7 @@ var ( utils.MinFreeDiskSpaceFlag, utils.KeyStoreDirFlag, utils.ExternalSignerFlag, - utils.NoUSBFlag, + utils.NoUSBFlag, // deprecated utils.USBFlag, utils.SmartCardDaemonPathFlag, utils.OverrideCancun, @@ -87,24 +87,24 @@ var ( utils.ExitWhenSyncedFlag, utils.GCModeFlag, utils.SnapshotFlag, - utils.TxLookupLimitFlag, + utils.TxLookupLimitFlag, // deprecated utils.TransactionHistoryFlag, utils.StateHistoryFlag, - utils.LightServeFlag, - utils.LightIngressFlag, - utils.LightEgressFlag, - utils.LightMaxPeersFlag, - utils.LightNoPruneFlag, + utils.LightServeFlag, // deprecated + utils.LightIngressFlag, // deprecated + utils.LightEgressFlag, // deprecated + utils.LightMaxPeersFlag, // deprecated + utils.LightNoPruneFlag, // deprecated utils.LightKDFFlag, - utils.LightNoSyncServeFlag, + utils.LightNoSyncServeFlag, // deprecated utils.EthRequiredBlocksFlag, - utils.LegacyWhitelistFlag, + utils.LegacyWhitelistFlag, // deprecated utils.BloomFilterSizeFlag, utils.CacheFlag, utils.CacheDatabaseFlag, utils.CacheTrieFlag, - utils.CacheTrieJournalFlag, - utils.CacheTrieRejournalFlag, + utils.CacheTrieJournalFlag, // deprecated + utils.CacheTrieRejournalFlag, // deprecated utils.CacheGCFlag, utils.CacheSnapshotFlag, utils.CacheNoPrefetchFlag, @@ -127,7 +127,7 @@ var ( utils.NoDiscoverFlag, utils.DiscoveryV4Flag, utils.DiscoveryV5Flag, - utils.LegacyDiscoveryV5Flag, + utils.LegacyDiscoveryV5Flag, // deprecated utils.NetrestrictFlag, utils.NodeKeyFileFlag, utils.NodeKeyHexFlag, @@ -306,7 +306,7 @@ func prepare(ctx *cli.Context) { log.Info("Starting Geth on Ethereum mainnet...") } // If we're a full node on mainnet without --cache specified, bump default cache allowance - if ctx.String(utils.SyncModeFlag.Name) != "light" && !ctx.IsSet(utils.CacheFlag.Name) && !ctx.IsSet(utils.NetworkIdFlag.Name) { + if !ctx.IsSet(utils.CacheFlag.Name) && !ctx.IsSet(utils.NetworkIdFlag.Name) { // Make sure we're not on any supported preconfigured testnet either if !ctx.IsSet(utils.HoleskyFlag.Name) && !ctx.IsSet(utils.SepoliaFlag.Name) && @@ -317,11 +317,6 @@ func prepare(ctx *cli.Context) { ctx.Set(utils.CacheFlag.Name, strconv.Itoa(4096)) } } - // If we're running a light client on any network, drop the cache to some meaningfully low amount - if ctx.String(utils.SyncModeFlag.Name) == "light" && !ctx.IsSet(utils.CacheFlag.Name) { - log.Info("Dropping default light client cache", "provided", ctx.Int(utils.CacheFlag.Name), "updated", 128) - ctx.Set(utils.CacheFlag.Name, strconv.Itoa(128)) - } // Start metrics export if enabled utils.SetupMetrics(ctx) diff --git a/cmd/geth/run_test.go b/cmd/geth/run_test.go index 2e03dc5eaa..1d32880325 100644 --- a/cmd/geth/run_test.go +++ b/cmd/geth/run_test.go @@ -55,6 +55,15 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } +func initGeth(t *testing.T) string { + args := []string{"--networkid=42", "init", "./testdata/clique.json"} + t.Logf("Initializing geth: %v ", args) + g := runGeth(t, args...) + datadir := g.Datadir + g.WaitExit() + return datadir +} + // spawns geth with the given command line args. If the args don't set --datadir, the // child g gets a temporary data directory. func runGeth(t *testing.T, args ...string) *testgeth { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 72a56e9c28..b49c7c36d5 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -57,7 +57,6 @@ import ( "github.com/ethereum/go-ethereum/graphql" "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/internal/flags" - "github.com/ethereum/go-ethereum/les" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/metrics/exp" @@ -255,7 +254,7 @@ var ( } SyncModeFlag = &flags.TextMarshalerFlag{ Name: "syncmode", - Usage: `Blockchain sync mode ("snap", "full" or "light")`, + Usage: `Blockchain sync mode ("snap" or "full")`, Value: &defaultSyncMode, Category: flags.StateCategory, } @@ -282,41 +281,6 @@ var ( Value: ethconfig.Defaults.TransactionHistory, Category: flags.StateCategory, } - // Light server and client settings - LightServeFlag = &cli.IntFlag{ - Name: "light.serve", - Usage: "Maximum percentage of time allowed for serving LES requests (multi-threaded processing allows values over 100)", - Value: ethconfig.Defaults.LightServ, - Category: flags.LightCategory, - } - LightIngressFlag = &cli.IntFlag{ - Name: "light.ingress", - Usage: "Incoming bandwidth limit for serving light clients (kilobytes/sec, 0 = unlimited)", - Value: ethconfig.Defaults.LightIngress, - Category: flags.LightCategory, - } - LightEgressFlag = &cli.IntFlag{ - Name: "light.egress", - Usage: "Outgoing bandwidth limit for serving light clients (kilobytes/sec, 0 = unlimited)", - Value: ethconfig.Defaults.LightEgress, - Category: flags.LightCategory, - } - LightMaxPeersFlag = &cli.IntFlag{ - Name: "light.maxpeers", - Usage: "Maximum number of light clients to serve, or light servers to attach to", - Value: ethconfig.Defaults.LightPeers, - Category: flags.LightCategory, - } - LightNoPruneFlag = &cli.BoolFlag{ - Name: "light.nopruning", - Usage: "Disable ancient light chain data pruning", - Category: flags.LightCategory, - } - LightNoSyncServeFlag = &cli.BoolFlag{ - Name: "light.nosyncserve", - Usage: "Enables serving light clients before syncing", - Category: flags.LightCategory, - } // Transaction pool settings TxPoolLocalsFlag = &cli.StringFlag{ Name: "txpool.locals", @@ -1224,25 +1188,25 @@ func setIPC(ctx *cli.Context, cfg *node.Config) { } } -// setLes configures the les server and ultra light client settings from the command line flags. +// setLes shows the deprecation warnings for LES flags. func setLes(ctx *cli.Context, cfg *ethconfig.Config) { if ctx.IsSet(LightServeFlag.Name) { - cfg.LightServ = ctx.Int(LightServeFlag.Name) + log.Warn("The light server has been deprecated, please remove this flag", "flag", LightServeFlag.Name) } if ctx.IsSet(LightIngressFlag.Name) { - cfg.LightIngress = ctx.Int(LightIngressFlag.Name) + log.Warn("The light server has been deprecated, please remove this flag", "flag", LightIngressFlag.Name) } if ctx.IsSet(LightEgressFlag.Name) { - cfg.LightEgress = ctx.Int(LightEgressFlag.Name) + log.Warn("The light server has been deprecated, please remove this flag", "flag", LightEgressFlag.Name) } if ctx.IsSet(LightMaxPeersFlag.Name) { - cfg.LightPeers = ctx.Int(LightMaxPeersFlag.Name) + log.Warn("The light server has been deprecated, please remove this flag", "flag", LightMaxPeersFlag.Name) } if ctx.IsSet(LightNoPruneFlag.Name) { - cfg.LightNoPrune = ctx.Bool(LightNoPruneFlag.Name) + log.Warn("The light server has been deprecated, please remove this flag", "flag", LightNoPruneFlag.Name) } if ctx.IsSet(LightNoSyncServeFlag.Name) { - cfg.LightNoSyncServe = ctx.Bool(LightNoSyncServeFlag.Name) + log.Warn("The light server has been deprecated, please remove this flag", "flag", LightNoSyncServeFlag.Name) } } @@ -1340,58 +1304,24 @@ func SetP2PConfig(ctx *cli.Context, cfg *p2p.Config) { setBootstrapNodes(ctx, cfg) setBootstrapNodesV5(ctx, cfg) - lightClient := ctx.String(SyncModeFlag.Name) == "light" - lightServer := (ctx.Int(LightServeFlag.Name) != 0) - - lightPeers := ctx.Int(LightMaxPeersFlag.Name) - if lightClient && !ctx.IsSet(LightMaxPeersFlag.Name) { - // dynamic default - for clients we use 1/10th of the default for servers - lightPeers /= 10 - } - if ctx.IsSet(MaxPeersFlag.Name) { cfg.MaxPeers = ctx.Int(MaxPeersFlag.Name) - if lightServer && !ctx.IsSet(LightMaxPeersFlag.Name) { - cfg.MaxPeers += lightPeers - } - } else { - if lightServer { - cfg.MaxPeers += lightPeers - } - if lightClient && ctx.IsSet(LightMaxPeersFlag.Name) && cfg.MaxPeers < lightPeers { - cfg.MaxPeers = lightPeers - } - } - if !(lightClient || lightServer) { - lightPeers = 0 } - ethPeers := cfg.MaxPeers - lightPeers - if lightClient { - ethPeers = 0 - } - log.Info("Maximum peer count", "ETH", ethPeers, "LES", lightPeers, "total", cfg.MaxPeers) + ethPeers := cfg.MaxPeers + log.Info("Maximum peer count", "ETH", ethPeers, "total", cfg.MaxPeers) if ctx.IsSet(MaxPendingPeersFlag.Name) { cfg.MaxPendingPeers = ctx.Int(MaxPendingPeersFlag.Name) } - if ctx.IsSet(NoDiscoverFlag.Name) || lightClient { + if ctx.IsSet(NoDiscoverFlag.Name) { cfg.NoDiscovery = true } - // Disallow --nodiscover when used in conjunction with light mode. - if (lightClient || lightServer) && ctx.Bool(NoDiscoverFlag.Name) { - Fatalf("Cannot use --" + NoDiscoverFlag.Name + " in light client or light server mode") - } CheckExclusive(ctx, DiscoveryV4Flag, NoDiscoverFlag) CheckExclusive(ctx, DiscoveryV5Flag, NoDiscoverFlag) cfg.DiscoveryV4 = ctx.Bool(DiscoveryV4Flag.Name) cfg.DiscoveryV5 = ctx.Bool(DiscoveryV5Flag.Name) - // If we're running a light client or server, force enable the v5 peer discovery. - if lightClient || lightServer { - cfg.DiscoveryV5 = true - } - if netrestrict := ctx.String(NetrestrictFlag.Name); netrestrict != "" { list, err := netutil.ParseNetlist(netrestrict) if err != nil { @@ -1496,12 +1426,7 @@ func SetDataDir(ctx *cli.Context, cfg *node.Config) { } } -func setGPO(ctx *cli.Context, cfg *gasprice.Config, light bool) { - // If we are running the light client, apply another group - // settings for gas oracle. - if light { - *cfg = ethconfig.LightClientGPO - } +func setGPO(ctx *cli.Context, cfg *gasprice.Config) { if ctx.IsSet(GpoBlocksFlag.Name) { cfg.Blocks = ctx.Int(GpoBlocksFlag.Name) } @@ -1650,12 +1575,11 @@ func CheckExclusive(ctx *cli.Context, args ...interface{}) { func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { // Avoid conflicting network flags CheckExclusive(ctx, MainnetFlag, DeveloperFlag, GoerliFlag, SepoliaFlag, HoleskyFlag) - CheckExclusive(ctx, LightServeFlag, SyncModeFlag, "light") CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer // Set configurations from CLI flags setEtherbase(ctx, cfg) - setGPO(ctx, &cfg.GPO, ctx.String(SyncModeFlag.Name) == "light") + setGPO(ctx, &cfg.GPO) setTxPool(ctx, &cfg.TxPool) setMiner(ctx, &cfg.Miner) setRequiredBlocks(ctx, cfg) @@ -1734,9 +1658,6 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { cfg.TransactionHistory = 0 log.Warn("Disabled transaction unindexing for archive node") } - if ctx.IsSet(LightServeFlag.Name) && cfg.TransactionHistory != 0 { - log.Warn("LES server cannot serve old transaction status and cannot connect below les/4 protocol version if transaction lookup index is limited") - } if ctx.IsSet(CacheFlag.Name) || ctx.IsSet(CacheTrieFlag.Name) { cfg.TrieCleanCache = ctx.Int(CacheFlag.Name) * ctx.Int(CacheTrieFlag.Name) / 100 } @@ -1913,9 +1834,6 @@ func SetDNSDiscoveryDefaults(cfg *ethconfig.Config, genesis common.Hash) { return // already set through flags/config } protocol := "all" - if cfg.SyncMode == downloader.LightSync { - protocol = "les" - } if url := params.KnownDNSNetwork(genesis, protocol); url != "" { cfg.EthDiscoveryURLs = []string{url} cfg.SnapDiscoveryURLs = cfg.EthDiscoveryURLs @@ -1923,27 +1841,12 @@ func SetDNSDiscoveryDefaults(cfg *ethconfig.Config, genesis common.Hash) { } // RegisterEthService adds an Ethereum client to the stack. -// The second return value is the full node instance, which may be nil if the -// node is running as a light client. +// The second return value is the full node instance. func RegisterEthService(stack *node.Node, cfg *ethconfig.Config) (ethapi.Backend, *eth.Ethereum) { - if cfg.SyncMode == downloader.LightSync { - backend, err := les.New(stack, cfg) - if err != nil { - Fatalf("Failed to register the Ethereum service: %v", err) - } - stack.RegisterAPIs(tracers.APIs(backend.ApiBackend)) - return backend.ApiBackend, nil - } backend, err := eth.New(stack, cfg) if err != nil { Fatalf("Failed to register the Ethereum service: %v", err) } - if cfg.LightServ > 0 { - _, err := les.NewLesServer(stack, backend, cfg) - if err != nil { - Fatalf("Failed to create the LES server: %v", err) - } - } stack.RegisterAPIs(tracers.APIs(backend.APIBackend)) return backend.APIBackend, backend } @@ -1965,13 +1868,12 @@ func RegisterGraphQLService(stack *node.Node, backend ethapi.Backend, filterSyst // RegisterFilterAPI adds the eth log filtering RPC API to the node. func RegisterFilterAPI(stack *node.Node, backend ethapi.Backend, ethcfg *ethconfig.Config) *filters.FilterSystem { - isLightClient := ethcfg.SyncMode == downloader.LightSync filterSystem := filters.NewFilterSystem(backend, filters.Config{ LogCacheSize: ethcfg.FilterLogCacheSize, }) stack.RegisterAPIs([]rpc.API{{ Namespace: "eth", - Service: filters.NewFilterAPI(filterSystem, isLightClient), + Service: filters.NewFilterAPI(filterSystem, false), }}) return filterSystem } diff --git a/cmd/utils/flags_legacy.go b/cmd/utils/flags_legacy.go index 6669ff176f..00237fecaf 100644 --- a/cmd/utils/flags_legacy.go +++ b/cmd/utils/flags_legacy.go @@ -39,6 +39,12 @@ var DeprecatedFlags = []cli.Flag{ CacheTrieRejournalFlag, LegacyDiscoveryV5Flag, TxLookupLimitFlag, + LightServeFlag, + LightIngressFlag, + LightEgressFlag, + LightMaxPeersFlag, + LightNoPruneFlag, + LightNoSyncServeFlag, } var ( @@ -77,6 +83,41 @@ var ( Value: ethconfig.Defaults.TransactionHistory, Category: flags.DeprecatedCategory, } + // Light server and client settings, Deprecated November 2023 + LightServeFlag = &cli.IntFlag{ + Name: "light.serve", + Usage: "Maximum percentage of time allowed for serving LES requests (deprecated)", + Value: ethconfig.Defaults.LightServ, + Category: flags.LightCategory, + } + LightIngressFlag = &cli.IntFlag{ + Name: "light.ingress", + Usage: "Incoming bandwidth limit for serving light clients (deprecated)", + Value: ethconfig.Defaults.LightIngress, + Category: flags.LightCategory, + } + LightEgressFlag = &cli.IntFlag{ + Name: "light.egress", + Usage: "Outgoing bandwidth limit for serving light clients (deprecated)", + Value: ethconfig.Defaults.LightEgress, + Category: flags.LightCategory, + } + LightMaxPeersFlag = &cli.IntFlag{ + Name: "light.maxpeers", + Usage: "Maximum number of light clients to serve, or light servers to attach to (deprecated)", + Value: ethconfig.Defaults.LightPeers, + Category: flags.LightCategory, + } + LightNoPruneFlag = &cli.BoolFlag{ + Name: "light.nopruning", + Usage: "Disable ancient light chain data pruning (deprecated)", + Category: flags.LightCategory, + } + LightNoSyncServeFlag = &cli.BoolFlag{ + Name: "light.nosyncserve", + Usage: "Enables serving light clients before syncing (deprecated)", + Category: flags.LightCategory, + } ) // showDeprecated displays deprecated flags that will be soon removed from the codebase. diff --git a/eth/backend.go b/eth/backend.go index 09559f0ac1..774ffaf248 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -108,7 +108,7 @@ type Ethereum struct { func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { // Ensure configuration values are compatible and sane if config.SyncMode == downloader.LightSync { - return nil, errors.New("can't run eth.Ethereum in light sync mode, use les.LightEthereum") + return nil, errors.New("can't run eth.Ethereum in light sync mode, light mode has been deprecated") } if !config.SyncMode.IsValid() { return nil, fmt.Errorf("invalid sync mode %d", config.SyncMode) diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 5e8f58efdb..ad664afb5b 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -46,16 +46,6 @@ var FullNodeGPO = gasprice.Config{ IgnorePrice: gasprice.DefaultIgnorePrice, } -// LightClientGPO contains default gasprice oracle settings for light client. -var LightClientGPO = gasprice.Config{ - Blocks: 2, - Percentile: 60, - MaxHeaderHistory: 300, - MaxBlockHistory: 5, - MaxPrice: gasprice.DefaultMaxPrice, - IgnorePrice: gasprice.DefaultIgnorePrice, -} - // Defaults contains default settings for use on the Ethereum main net. var Defaults = Config{ SyncMode: downloader.SnapSync, diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go index 84a6722806..75d0faac54 100644 --- a/ethstats/ethstats.go +++ b/ethstats/ethstats.go @@ -38,7 +38,6 @@ import ( "github.com/ethereum/go-ethereum/core/types" ethproto "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/les" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/miner" "github.com/ethereum/go-ethereum/node" @@ -486,7 +485,7 @@ func (s *Service) login(conn *connWrapper) error { if info := infos.Protocols["eth"]; info != nil { network = fmt.Sprintf("%d", info.(*ethproto.NodeInfo).Network) } else { - network = fmt.Sprintf("%d", infos.Protocols["les"].(*les.NodeInfo).Network) + return errors.New("no eth protocol available") } auth := &authMsg{ ID: s.node, diff --git a/les/api.go b/les/api.go deleted file mode 100644 index e8490f7b0f..0000000000 --- a/les/api.go +++ /dev/null @@ -1,349 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "errors" - "fmt" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - vfs "github.com/ethereum/go-ethereum/les/vflux/server" - "github.com/ethereum/go-ethereum/p2p/enode" -) - -var errUnknownBenchmarkType = errors.New("unknown benchmark type") - -// LightServerAPI provides an API to access the LES light server. -type LightServerAPI struct { - server *LesServer - defaultPosFactors, defaultNegFactors vfs.PriceFactors -} - -// NewLightServerAPI creates a new LES light server API. -func NewLightServerAPI(server *LesServer) *LightServerAPI { - return &LightServerAPI{ - server: server, - defaultPosFactors: defaultPosFactors, - defaultNegFactors: defaultNegFactors, - } -} - -// parseNode parses either an enode address a raw hex node id -func parseNode(node string) (enode.ID, error) { - if id, err := enode.ParseID(node); err == nil { - return id, nil - } - if node, err := enode.Parse(enode.ValidSchemes, node); err == nil { - return node.ID(), nil - } else { - return enode.ID{}, err - } -} - -// ServerInfo returns global server parameters -func (api *LightServerAPI) ServerInfo() map[string]interface{} { - res := make(map[string]interface{}) - res["minimumCapacity"] = api.server.minCapacity - res["maximumCapacity"] = api.server.maxCapacity - _, res["totalCapacity"] = api.server.clientPool.Limits() - _, res["totalConnectedCapacity"] = api.server.clientPool.Active() - res["priorityConnectedCapacity"] = 0 //TODO connect when token sale module is added - return res -} - -// ClientInfo returns information about clients listed in the ids list or matching the given tags -func (api *LightServerAPI) ClientInfo(nodes []string) map[enode.ID]map[string]interface{} { - var ids []enode.ID - for _, node := range nodes { - if id, err := parseNode(node); err == nil { - ids = append(ids, id) - } - } - - res := make(map[enode.ID]map[string]interface{}) - if len(ids) == 0 { - ids = api.server.peers.ids() - } - for _, id := range ids { - if peer := api.server.peers.peer(id); peer != nil { - res[id] = api.clientInfo(peer, peer.balance) - } else { - api.server.clientPool.BalanceOperation(id, "", func(balance vfs.AtomicBalanceOperator) { - res[id] = api.clientInfo(nil, balance) - }) - } - } - return res -} - -// PriorityClientInfo returns information about clients with a positive balance -// in the given ID range (stop excluded). If stop is null then the iterator stops -// only at the end of the ID space. MaxCount limits the number of results returned. -// If maxCount limit is applied but there are more potential results then the ID -// of the next potential result is included in the map with an empty structure -// assigned to it. -func (api *LightServerAPI) PriorityClientInfo(start, stop enode.ID, maxCount int) map[enode.ID]map[string]interface{} { - res := make(map[enode.ID]map[string]interface{}) - ids := api.server.clientPool.GetPosBalanceIDs(start, stop, maxCount+1) - if len(ids) > maxCount { - res[ids[maxCount]] = make(map[string]interface{}) - ids = ids[:maxCount] - } - for _, id := range ids { - if peer := api.server.peers.peer(id); peer != nil { - res[id] = api.clientInfo(peer, peer.balance) - } else { - api.server.clientPool.BalanceOperation(id, "", func(balance vfs.AtomicBalanceOperator) { - res[id] = api.clientInfo(nil, balance) - }) - } - } - return res -} - -// clientInfo creates a client info data structure -func (api *LightServerAPI) clientInfo(peer *clientPeer, balance vfs.ReadOnlyBalance) map[string]interface{} { - info := make(map[string]interface{}) - pb, nb := balance.GetBalance() - info["isConnected"] = peer != nil - info["pricing/balance"] = pb - info["priority"] = pb != 0 - // cb := api.server.clientPool.ndb.getCurrencyBalance(id) - // info["pricing/currency"] = cb.amount - if peer != nil { - info["connectionTime"] = float64(mclock.Now()-peer.connectedAt) / float64(time.Second) - info["capacity"] = peer.getCapacity() - info["pricing/negBalance"] = nb - } - return info -} - -// setParams either sets the given parameters for a single connected client (if specified) -// or the default parameters applicable to clients connected in the future -func (api *LightServerAPI) setParams(params map[string]interface{}, client *clientPeer, posFactors, negFactors *vfs.PriceFactors) (updateFactors bool, err error) { - defParams := client == nil - for name, value := range params { - errValue := func() error { - return fmt.Errorf("invalid value for parameter '%s'", name) - } - setFactor := func(v *float64) { - if val, ok := value.(float64); ok && val >= 0 { - *v = val / float64(time.Second) - updateFactors = true - } else { - err = errValue() - } - } - - switch { - case name == "pricing/timeFactor": - setFactor(&posFactors.TimeFactor) - case name == "pricing/capacityFactor": - setFactor(&posFactors.CapacityFactor) - case name == "pricing/requestCostFactor": - setFactor(&posFactors.RequestFactor) - case name == "pricing/negative/timeFactor": - setFactor(&negFactors.TimeFactor) - case name == "pricing/negative/capacityFactor": - setFactor(&negFactors.CapacityFactor) - case name == "pricing/negative/requestCostFactor": - setFactor(&negFactors.RequestFactor) - case !defParams && name == "capacity": - if capacity, ok := value.(float64); ok && uint64(capacity) >= api.server.minCapacity { - _, err = api.server.clientPool.SetCapacity(client.Node(), uint64(capacity), 0, false) - // time factor recalculation is performed automatically by the balance tracker - } else { - err = errValue() - } - default: - if defParams { - err = fmt.Errorf("invalid default parameter '%s'", name) - } else { - err = fmt.Errorf("invalid client parameter '%s'", name) - } - } - if err != nil { - return - } - } - return -} - -// SetClientParams sets client parameters for all clients listed in the ids list -// or all connected clients if the list is empty -func (api *LightServerAPI) SetClientParams(nodes []string, params map[string]interface{}) error { - var err error - for _, node := range nodes { - var id enode.ID - if id, err = parseNode(node); err != nil { - return err - } - if peer := api.server.peers.peer(id); peer != nil { - posFactors, negFactors := peer.balance.GetPriceFactors() - update, e := api.setParams(params, peer, &posFactors, &negFactors) - if update { - peer.balance.SetPriceFactors(posFactors, negFactors) - } - if e != nil { - err = e - } - } else { - err = fmt.Errorf("client %064x is not connected", id) - } - } - return err -} - -// SetDefaultParams sets the default parameters applicable to clients connected in the future -func (api *LightServerAPI) SetDefaultParams(params map[string]interface{}) error { - update, err := api.setParams(params, nil, &api.defaultPosFactors, &api.defaultNegFactors) - if update { - api.server.clientPool.SetDefaultFactors(api.defaultPosFactors, api.defaultNegFactors) - } - return err -} - -// SetConnectedBias set the connection bias, which is applied to already connected clients -// So that already connected client won't be kicked out very soon and we can ensure all -// connected clients can have enough time to request or sync some data. -// When the input parameter `bias` < 0 (illegal), return error. -func (api *LightServerAPI) SetConnectedBias(bias time.Duration) error { - if bias < time.Duration(0) { - return fmt.Errorf("bias illegal: %v less than 0", bias) - } - api.server.clientPool.SetConnectedBias(bias) - return nil -} - -// AddBalance adds the given amount to the balance of a client if possible and returns -// the balance before and after the operation -func (api *LightServerAPI) AddBalance(node string, amount int64) (balance [2]uint64, err error) { - var id enode.ID - if id, err = parseNode(node); err != nil { - return - } - api.server.clientPool.BalanceOperation(id, "", func(nb vfs.AtomicBalanceOperator) { - balance[0], balance[1], err = nb.AddBalance(amount) - }) - return -} - -// Benchmark runs a request performance benchmark with a given set of measurement setups -// in multiple passes specified by passCount. The measurement time for each setup in each -// pass is specified in milliseconds by length. -// -// Note: measurement time is adjusted for each pass depending on the previous ones. -// Therefore a controlled total measurement time is achievable in multiple passes. -func (api *LightServerAPI) Benchmark(setups []map[string]interface{}, passCount, length int) ([]map[string]interface{}, error) { - benchmarks := make([]requestBenchmark, len(setups)) - for i, setup := range setups { - if t, ok := setup["type"].(string); ok { - getInt := func(field string, def int) int { - if value, ok := setup[field].(float64); ok { - return int(value) - } - return def - } - getBool := func(field string, def bool) bool { - if value, ok := setup[field].(bool); ok { - return value - } - return def - } - switch t { - case "header": - benchmarks[i] = &benchmarkBlockHeaders{ - amount: getInt("amount", 1), - skip: getInt("skip", 1), - byHash: getBool("byHash", false), - reverse: getBool("reverse", false), - } - case "body": - benchmarks[i] = &benchmarkBodiesOrReceipts{receipts: false} - case "receipts": - benchmarks[i] = &benchmarkBodiesOrReceipts{receipts: true} - case "proof": - benchmarks[i] = &benchmarkProofsOrCode{code: false} - case "code": - benchmarks[i] = &benchmarkProofsOrCode{code: true} - case "cht": - benchmarks[i] = &benchmarkHelperTrie{ - bloom: false, - reqCount: getInt("amount", 1), - } - case "bloom": - benchmarks[i] = &benchmarkHelperTrie{ - bloom: true, - reqCount: getInt("amount", 1), - } - case "txSend": - benchmarks[i] = &benchmarkTxSend{} - case "txStatus": - benchmarks[i] = &benchmarkTxStatus{} - default: - return nil, errUnknownBenchmarkType - } - } else { - return nil, errUnknownBenchmarkType - } - } - rs := api.server.handler.runBenchmark(benchmarks, passCount, time.Millisecond*time.Duration(length)) - result := make([]map[string]interface{}, len(setups)) - for i, r := range rs { - res := make(map[string]interface{}) - if r.err == nil { - res["totalCount"] = r.totalCount - res["avgTime"] = r.avgTime - res["maxInSize"] = r.maxInSize - res["maxOutSize"] = r.maxOutSize - } else { - res["error"] = r.err.Error() - } - result[i] = res - } - return result, nil -} - -// DebugAPI provides an API to debug LES light server functionality. -type DebugAPI struct { - server *LesServer -} - -// NewDebugAPI creates a new LES light server debug API. -func NewDebugAPI(server *LesServer) *DebugAPI { - return &DebugAPI{ - server: server, - } -} - -// FreezeClient forces a temporary client freeze which normally happens when the server is overloaded -func (api *DebugAPI) FreezeClient(node string) error { - var ( - id enode.ID - err error - ) - if id, err = parseNode(node); err != nil { - return err - } - if peer := api.server.peers.peer(id); peer != nil { - peer.freeze() - return nil - } else { - return fmt.Errorf("client %064x is not connected", id[:]) - } -} diff --git a/les/api_backend.go b/les/api_backend.go deleted file mode 100644 index 3e9dbadce8..0000000000 --- a/les/api_backend.go +++ /dev/null @@ -1,337 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "context" - "errors" - "math/big" - "time" - - "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/bloombits" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/eth/gasprice" - "github.com/ethereum/go-ethereum/eth/tracers" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rpc" -) - -type LesApiBackend struct { - extRPCEnabled bool - allowUnprotectedTxs bool - eth *LightEthereum - gpo *gasprice.Oracle -} - -func (b *LesApiBackend) ChainConfig() *params.ChainConfig { - return b.eth.chainConfig -} - -func (b *LesApiBackend) CurrentBlock() *types.Header { - return b.eth.BlockChain().CurrentHeader() -} - -func (b *LesApiBackend) SetHead(number uint64) { - b.eth.blockchain.SetHead(number) -} - -func (b *LesApiBackend) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) { - // Return the latest current as the pending one since there - // is no pending notion in the light client. TODO(rjl493456442) - // unify the behavior of `HeaderByNumber` and `PendingBlockAndReceipts`. - if number == rpc.PendingBlockNumber { - return b.eth.blockchain.CurrentHeader(), nil - } - if number == rpc.LatestBlockNumber { - return b.eth.blockchain.CurrentHeader(), nil - } - return b.eth.blockchain.GetHeaderByNumberOdr(ctx, uint64(number)) -} - -func (b *LesApiBackend) HeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Header, error) { - if blockNr, ok := blockNrOrHash.Number(); ok { - return b.HeaderByNumber(ctx, blockNr) - } - if hash, ok := blockNrOrHash.Hash(); ok { - header, err := b.HeaderByHash(ctx, hash) - if err != nil { - return nil, err - } - if header == nil { - return nil, errors.New("header for hash not found") - } - if blockNrOrHash.RequireCanonical && b.eth.blockchain.GetCanonicalHash(header.Number.Uint64()) != hash { - return nil, errors.New("hash is not currently canonical") - } - return header, nil - } - return nil, errors.New("invalid arguments; neither block nor hash specified") -} - -func (b *LesApiBackend) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) { - return b.eth.blockchain.GetHeaderByHash(hash), nil -} - -func (b *LesApiBackend) BlockByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Block, error) { - header, err := b.HeaderByNumber(ctx, number) - if header == nil || err != nil { - return nil, err - } - return b.BlockByHash(ctx, header.Hash()) -} - -func (b *LesApiBackend) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) { - return b.eth.blockchain.GetBlockByHash(ctx, hash) -} - -func (b *LesApiBackend) BlockByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Block, error) { - if blockNr, ok := blockNrOrHash.Number(); ok { - return b.BlockByNumber(ctx, blockNr) - } - if hash, ok := blockNrOrHash.Hash(); ok { - block, err := b.BlockByHash(ctx, hash) - if err != nil { - return nil, err - } - if block == nil { - return nil, errors.New("header found, but block body is missing") - } - if blockNrOrHash.RequireCanonical && b.eth.blockchain.GetCanonicalHash(block.NumberU64()) != hash { - return nil, errors.New("hash is not currently canonical") - } - return block, nil - } - return nil, errors.New("invalid arguments; neither block nor hash specified") -} - -func (b *LesApiBackend) GetBody(ctx context.Context, hash common.Hash, number rpc.BlockNumber) (*types.Body, error) { - return light.GetBody(ctx, b.eth.odr, hash, uint64(number)) -} - -func (b *LesApiBackend) PendingBlockAndReceipts() (*types.Block, types.Receipts) { - return nil, nil -} - -func (b *LesApiBackend) StateAndHeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*state.StateDB, *types.Header, error) { - header, err := b.HeaderByNumber(ctx, number) - if err != nil { - return nil, nil, err - } - if header == nil { - return nil, nil, errors.New("header not found") - } - return light.NewState(ctx, header, b.eth.odr), header, nil -} - -func (b *LesApiBackend) StateAndHeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*state.StateDB, *types.Header, error) { - if blockNr, ok := blockNrOrHash.Number(); ok { - return b.StateAndHeaderByNumber(ctx, blockNr) - } - if hash, ok := blockNrOrHash.Hash(); ok { - header := b.eth.blockchain.GetHeaderByHash(hash) - if header == nil { - return nil, nil, errors.New("header for hash not found") - } - if blockNrOrHash.RequireCanonical && b.eth.blockchain.GetCanonicalHash(header.Number.Uint64()) != hash { - return nil, nil, errors.New("hash is not currently canonical") - } - return light.NewState(ctx, header, b.eth.odr), header, nil - } - return nil, nil, errors.New("invalid arguments; neither block nor hash specified") -} - -func (b *LesApiBackend) GetReceipts(ctx context.Context, hash common.Hash) (types.Receipts, error) { - if number := rawdb.ReadHeaderNumber(b.eth.chainDb, hash); number != nil { - return light.GetBlockReceipts(ctx, b.eth.odr, hash, *number) - } - return nil, nil -} - -func (b *LesApiBackend) GetLogs(ctx context.Context, hash common.Hash, number uint64) ([][]*types.Log, error) { - return light.GetBlockLogs(ctx, b.eth.odr, hash, number) -} - -func (b *LesApiBackend) GetTd(ctx context.Context, hash common.Hash) *big.Int { - if number := rawdb.ReadHeaderNumber(b.eth.chainDb, hash); number != nil { - return b.eth.blockchain.GetTdOdr(ctx, hash, *number) - } - return nil -} - -func (b *LesApiBackend) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) (*vm.EVM, func() error) { - if vmConfig == nil { - vmConfig = new(vm.Config) - } - txContext := core.NewEVMTxContext(msg) - context := core.NewEVMBlockContext(header, b.eth.blockchain, nil) - if blockCtx != nil { - context = *blockCtx - } - return vm.NewEVM(context, txContext, state, b.eth.chainConfig, *vmConfig), state.Error -} - -func (b *LesApiBackend) SendTx(ctx context.Context, signedTx *types.Transaction) error { - return b.eth.txPool.Add(ctx, signedTx) -} - -func (b *LesApiBackend) RemoveTx(txHash common.Hash) { - b.eth.txPool.RemoveTx(txHash) -} - -func (b *LesApiBackend) GetPoolTransactions() (types.Transactions, error) { - return b.eth.txPool.GetTransactions() -} - -func (b *LesApiBackend) GetPoolTransaction(txHash common.Hash) *types.Transaction { - return b.eth.txPool.GetTransaction(txHash) -} - -func (b *LesApiBackend) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) { - return light.GetTransaction(ctx, b.eth.odr, txHash) -} - -func (b *LesApiBackend) GetPoolNonce(ctx context.Context, addr common.Address) (uint64, error) { - return b.eth.txPool.GetNonce(ctx, addr) -} - -func (b *LesApiBackend) Stats() (pending int, queued int) { - return b.eth.txPool.Stats(), 0 -} - -func (b *LesApiBackend) TxPoolContent() (map[common.Address][]*types.Transaction, map[common.Address][]*types.Transaction) { - return b.eth.txPool.Content() -} - -func (b *LesApiBackend) TxPoolContentFrom(addr common.Address) ([]*types.Transaction, []*types.Transaction) { - return b.eth.txPool.ContentFrom(addr) -} - -func (b *LesApiBackend) SubscribeNewTxsEvent(ch chan<- core.NewTxsEvent) event.Subscription { - return b.eth.txPool.SubscribeNewTxsEvent(ch) -} - -func (b *LesApiBackend) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription { - return b.eth.blockchain.SubscribeChainEvent(ch) -} - -func (b *LesApiBackend) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription { - return b.eth.blockchain.SubscribeChainHeadEvent(ch) -} - -func (b *LesApiBackend) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription { - return b.eth.blockchain.SubscribeChainSideEvent(ch) -} - -func (b *LesApiBackend) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription { - return b.eth.blockchain.SubscribeLogsEvent(ch) -} - -func (b *LesApiBackend) SubscribePendingLogsEvent(ch chan<- []*types.Log) event.Subscription { - return event.NewSubscription(func(quit <-chan struct{}) error { - <-quit - return nil - }) -} - -func (b *LesApiBackend) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription { - return b.eth.blockchain.SubscribeRemovedLogsEvent(ch) -} - -func (b *LesApiBackend) SyncProgress() ethereum.SyncProgress { - return ethereum.SyncProgress{} -} - -func (b *LesApiBackend) ProtocolVersion() int { - return b.eth.LesVersion() + 10000 -} - -func (b *LesApiBackend) SuggestGasTipCap(ctx context.Context) (*big.Int, error) { - return b.gpo.SuggestTipCap(ctx) -} - -func (b *LesApiBackend) FeeHistory(ctx context.Context, blockCount uint64, lastBlock rpc.BlockNumber, rewardPercentiles []float64) (firstBlock *big.Int, reward [][]*big.Int, baseFee []*big.Int, gasUsedRatio []float64, err error) { - return b.gpo.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles) -} - -func (b *LesApiBackend) ChainDb() ethdb.Database { - return b.eth.chainDb -} - -func (b *LesApiBackend) AccountManager() *accounts.Manager { - return b.eth.accountManager -} - -func (b *LesApiBackend) ExtRPCEnabled() bool { - return b.extRPCEnabled -} - -func (b *LesApiBackend) UnprotectedAllowed() bool { - return b.allowUnprotectedTxs -} - -func (b *LesApiBackend) RPCGasCap() uint64 { - return b.eth.config.RPCGasCap -} - -func (b *LesApiBackend) RPCEVMTimeout() time.Duration { - return b.eth.config.RPCEVMTimeout -} - -func (b *LesApiBackend) RPCTxFeeCap() float64 { - return b.eth.config.RPCTxFeeCap -} - -func (b *LesApiBackend) BloomStatus() (uint64, uint64) { - if b.eth.bloomIndexer == nil { - return 0, 0 - } - sections, _, _ := b.eth.bloomIndexer.Sections() - return params.BloomBitsBlocksClient, sections -} - -func (b *LesApiBackend) ServiceFilter(ctx context.Context, session *bloombits.MatcherSession) { - for i := 0; i < bloomFilterThreads; i++ { - go session.Multiplex(bloomRetrievalBatch, bloomRetrievalWait, b.eth.bloomRequests) - } -} - -func (b *LesApiBackend) Engine() consensus.Engine { - return b.eth.engine -} - -func (b *LesApiBackend) CurrentHeader() *types.Header { - return b.eth.blockchain.CurrentHeader() -} - -func (b *LesApiBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, readOnly bool, preferDisk bool) (*state.StateDB, tracers.StateReleaseFunc, error) { - return b.eth.stateAtBlock(ctx, block, reexec) -} - -func (b *LesApiBackend) StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (*core.Message, vm.BlockContext, *state.StateDB, tracers.StateReleaseFunc, error) { - return b.eth.stateAtTransaction(ctx, block, txIndex, reexec) -} diff --git a/les/api_test.go b/les/api_test.go deleted file mode 100644 index 484c95504c..0000000000 --- a/les/api_test.go +++ /dev/null @@ -1,512 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "context" - crand "crypto/rand" - "errors" - "flag" - "math/rand" - "os" - "sync" - "sync/atomic" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/eth" - "github.com/ethereum/go-ethereum/eth/downloader" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/les/flowcontrol" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/node" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/simulations" - "github.com/ethereum/go-ethereum/p2p/simulations/adapters" - "github.com/ethereum/go-ethereum/rpc" - "github.com/mattn/go-colorable" -) - -// Additional command line flags for the test binary. -var ( - loglevel = flag.Int("loglevel", 0, "verbosity of logs") - simAdapter = flag.String("adapter", "exec", "type of simulation: sim|socket|exec|docker") -) - -func TestMain(m *testing.M) { - flag.Parse() - log.PrintOrigins(true) - log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(*loglevel), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) - // register the Delivery service which will run as a devp2p - // protocol when using the exec adapter - adapters.RegisterLifecycles(services) - os.Exit(m.Run()) -} - -// This test is not meant to be a part of the automatic testing process because it -// runs for a long time and also requires a large database in order to do a meaningful -// request performance test. When testServerDataDir is empty, the test is skipped. - -const ( - testServerDataDir = "" // should always be empty on the master branch - testServerCapacity = 200 - testMaxClients = 10 - testTolerance = 0.1 - minRelCap = 0.2 -) - -func TestCapacityAPI3(t *testing.T) { - testCapacityAPI(t, 3) -} - -func TestCapacityAPI6(t *testing.T) { - testCapacityAPI(t, 6) -} - -func TestCapacityAPI10(t *testing.T) { - testCapacityAPI(t, 10) -} - -// testCapacityAPI runs an end-to-end simulation test connecting one server with -// a given number of clients. It sets different priority capacities to all clients -// except a randomly selected one which runs in free client mode. All clients send -// similar requests at the maximum allowed rate and the test verifies whether the -// ratio of processed requests is close enough to the ratio of assigned capacities. -// Running multiple rounds with different settings ensures that changing capacity -// while connected and going back and forth between free and priority mode with -// the supplied API calls is also thoroughly tested. -func testCapacityAPI(t *testing.T, clientCount int) { - // Skip test if no data dir specified - if testServerDataDir == "" { - return - } - for !testSim(t, 1, clientCount, []string{testServerDataDir}, nil, func(ctx context.Context, net *simulations.Network, servers []*simulations.Node, clients []*simulations.Node) bool { - if len(servers) != 1 { - t.Fatalf("Invalid number of servers: %d", len(servers)) - } - server := servers[0] - - serverRpcClient, err := server.Client() - if err != nil { - t.Fatalf("Failed to obtain rpc client: %v", err) - } - headNum, headHash := getHead(ctx, t, serverRpcClient) - minCap, totalCap := getCapacityInfo(ctx, t, serverRpcClient) - testCap := totalCap * 3 / 4 - t.Logf("Server testCap: %d minCap: %d head number: %d head hash: %064x\n", testCap, minCap, headNum, headHash) - reqMinCap := uint64(float64(testCap) * minRelCap / (minRelCap + float64(len(clients)-1))) - if minCap > reqMinCap { - t.Fatalf("Minimum client capacity (%d) bigger than required minimum for this test (%d)", minCap, reqMinCap) - } - freeIdx := rand.Intn(len(clients)) - - clientRpcClients := make([]*rpc.Client, len(clients)) - for i, client := range clients { - var err error - clientRpcClients[i], err = client.Client() - if err != nil { - t.Fatalf("Failed to obtain rpc client: %v", err) - } - t.Log("connecting client", i) - if i != freeIdx { - setCapacity(ctx, t, serverRpcClient, client.ID(), testCap/uint64(len(clients))) - } - net.Connect(client.ID(), server.ID()) - - for { - select { - case <-ctx.Done(): - t.Fatalf("Timeout") - default: - } - num, hash := getHead(ctx, t, clientRpcClients[i]) - if num == headNum && hash == headHash { - t.Log("client", i, "synced") - break - } - time.Sleep(time.Millisecond * 200) - } - } - - var wg sync.WaitGroup - stop := make(chan struct{}) - - reqCount := make([]atomic.Uint64, len(clientRpcClients)) - - // Send light request like crazy. - for i, c := range clientRpcClients { - wg.Add(1) - i, c := i, c - go func() { - defer wg.Done() - - queue := make(chan struct{}, 100) - reqCount[i].Store(0) - for { - select { - case queue <- struct{}{}: - select { - case <-stop: - return - case <-ctx.Done(): - return - default: - wg.Add(1) - go func() { - ok := testRequest(ctx, t, c) - wg.Done() - <-queue - if ok { - if reqCount[i].Add(1)%10000 == 0 { - freezeClient(ctx, t, serverRpcClient, clients[i].ID()) - } - } - }() - } - case <-stop: - return - case <-ctx.Done(): - return - } - } - }() - } - - processedSince := func(start []uint64) []uint64 { - res := make([]uint64, len(reqCount)) - for i := range reqCount { - res[i] = reqCount[i].Load() - if start != nil { - res[i] -= start[i] - } - } - return res - } - - weights := make([]float64, len(clients)) - for c := 0; c < 5; c++ { - setCapacity(ctx, t, serverRpcClient, clients[freeIdx].ID(), minCap) - freeIdx = rand.Intn(len(clients)) - var sum float64 - for i := range clients { - if i == freeIdx { - weights[i] = 0 - } else { - weights[i] = rand.Float64()*(1-minRelCap) + minRelCap - } - sum += weights[i] - } - for i, client := range clients { - weights[i] *= float64(testCap-minCap-100) / sum - capacity := uint64(weights[i]) - if i != freeIdx && capacity < getCapacity(ctx, t, serverRpcClient, client.ID()) { - setCapacity(ctx, t, serverRpcClient, client.ID(), capacity) - } - } - setCapacity(ctx, t, serverRpcClient, clients[freeIdx].ID(), 0) - for i, client := range clients { - capacity := uint64(weights[i]) - if i != freeIdx && capacity > getCapacity(ctx, t, serverRpcClient, client.ID()) { - setCapacity(ctx, t, serverRpcClient, client.ID(), capacity) - } - } - weights[freeIdx] = float64(minCap) - for i := range clients { - weights[i] /= float64(testCap) - } - - time.Sleep(flowcontrol.DecParamDelay) - t.Log("Starting measurement") - t.Logf("Relative weights:") - for i := range clients { - t.Logf(" %f", weights[i]) - } - t.Log() - start := processedSince(nil) - for { - select { - case <-ctx.Done(): - t.Fatalf("Timeout") - default: - } - - _, totalCap = getCapacityInfo(ctx, t, serverRpcClient) - if totalCap < testCap { - t.Log("Total capacity underrun") - close(stop) - wg.Wait() - return false - } - - processed := processedSince(start) - var avg uint64 - t.Logf("Processed") - for i, p := range processed { - t.Logf(" %d", p) - processed[i] = uint64(float64(p) / weights[i]) - avg += processed[i] - } - avg /= uint64(len(processed)) - - if avg >= 10000 { - var maxDev float64 - for _, p := range processed { - dev := float64(int64(p-avg)) / float64(avg) - t.Logf(" %7.4f", dev) - if dev < 0 { - dev = -dev - } - if dev > maxDev { - maxDev = dev - } - } - t.Logf(" max deviation: %f totalCap: %d\n", maxDev, totalCap) - if maxDev <= testTolerance { - t.Log("success") - break - } - } else { - t.Log() - } - time.Sleep(time.Millisecond * 200) - } - } - - close(stop) - wg.Wait() - - for i := range reqCount { - t.Log("client", i, "processed", reqCount[i].Load()) - } - return true - }) { - t.Log("restarting test") - } -} - -func getHead(ctx context.Context, t *testing.T, client *rpc.Client) (uint64, common.Hash) { - res := make(map[string]interface{}) - if err := client.CallContext(ctx, &res, "eth_getBlockByNumber", "latest", false); err != nil { - t.Fatalf("Failed to obtain head block: %v", err) - } - numStr, ok := res["number"].(string) - if !ok { - t.Fatalf("RPC block number field invalid") - } - num, err := hexutil.DecodeUint64(numStr) - if err != nil { - t.Fatalf("Failed to decode RPC block number: %v", err) - } - hashStr, ok := res["hash"].(string) - if !ok { - t.Fatalf("RPC block number field invalid") - } - hash := common.HexToHash(hashStr) - return num, hash -} - -func testRequest(ctx context.Context, t *testing.T, client *rpc.Client) bool { - var res string - var addr common.Address - crand.Read(addr[:]) - c, cancel := context.WithTimeout(ctx, time.Second*12) - defer cancel() - err := client.CallContext(c, &res, "eth_getBalance", addr, "latest") - if err != nil { - t.Log("request error:", err) - } - return err == nil -} - -func freezeClient(ctx context.Context, t *testing.T, server *rpc.Client, clientID enode.ID) { - if err := server.CallContext(ctx, nil, "debug_freezeClient", clientID); err != nil { - t.Fatalf("Failed to freeze client: %v", err) - } -} - -func setCapacity(ctx context.Context, t *testing.T, server *rpc.Client, clientID enode.ID, cap uint64) { - params := make(map[string]interface{}) - params["capacity"] = cap - if err := server.CallContext(ctx, nil, "les_setClientParams", []enode.ID{clientID}, []string{}, params); err != nil { - t.Fatalf("Failed to set client capacity: %v", err) - } -} - -func getCapacity(ctx context.Context, t *testing.T, server *rpc.Client, clientID enode.ID) uint64 { - var res map[enode.ID]map[string]interface{} - if err := server.CallContext(ctx, &res, "les_clientInfo", []enode.ID{clientID}, []string{}); err != nil { - t.Fatalf("Failed to get client info: %v", err) - } - info, ok := res[clientID] - if !ok { - t.Fatalf("Missing client info") - } - v, ok := info["capacity"] - if !ok { - t.Fatalf("Missing field in client info: capacity") - } - vv, ok := v.(float64) - if !ok { - t.Fatalf("Failed to decode capacity field") - } - return uint64(vv) -} - -func getCapacityInfo(ctx context.Context, t *testing.T, server *rpc.Client) (minCap, totalCap uint64) { - var res map[string]interface{} - if err := server.CallContext(ctx, &res, "les_serverInfo"); err != nil { - t.Fatalf("Failed to query server info: %v", err) - } - decode := func(s string) uint64 { - v, ok := res[s] - if !ok { - t.Fatalf("Missing field in server info: %s", s) - } - vv, ok := v.(float64) - if !ok { - t.Fatalf("Failed to decode server info field: %s", s) - } - return uint64(vv) - } - minCap = decode("minimumCapacity") - totalCap = decode("totalCapacity") - return -} - -var services = adapters.LifecycleConstructors{ - "lesclient": newLesClientService, - "lesserver": newLesServerService, -} - -func NewNetwork() (*simulations.Network, func(), error) { - adapter, adapterTeardown, err := NewAdapter(*simAdapter, services) - if err != nil { - return nil, adapterTeardown, err - } - defaultService := "streamer" - net := simulations.NewNetwork(adapter, &simulations.NetworkConfig{ - ID: "0", - DefaultService: defaultService, - }) - teardown := func() { - adapterTeardown() - net.Shutdown() - } - return net, teardown, nil -} - -func NewAdapter(adapterType string, services adapters.LifecycleConstructors) (adapter adapters.NodeAdapter, teardown func(), err error) { - teardown = func() {} - switch adapterType { - case "sim": - adapter = adapters.NewSimAdapter(services) - // case "socket": - // adapter = adapters.NewSocketAdapter(services) - case "exec": - baseDir, err0 := os.MkdirTemp("", "les-test") - if err0 != nil { - return nil, teardown, err0 - } - teardown = func() { os.RemoveAll(baseDir) } - adapter = adapters.NewExecAdapter(baseDir) - /*case "docker": - adapter, err = adapters.NewDockerAdapter() - if err != nil { - return nil, teardown, err - }*/ - default: - return nil, teardown, errors.New("adapter needs to be one of sim, socket, exec, docker") - } - return adapter, teardown, nil -} - -func testSim(t *testing.T, serverCount, clientCount int, serverDir, clientDir []string, test func(ctx context.Context, net *simulations.Network, servers []*simulations.Node, clients []*simulations.Node) bool) bool { - net, teardown, err := NewNetwork() - defer teardown() - if err != nil { - t.Fatalf("Failed to create network: %v", err) - } - timeout := 1800 * time.Second - ctx, cancel := context.WithTimeout(context.Background(), timeout) - defer cancel() - - servers := make([]*simulations.Node, serverCount) - clients := make([]*simulations.Node, clientCount) - - for i := range clients { - clientconf := adapters.RandomNodeConfig() - clientconf.Lifecycles = []string{"lesclient"} - if len(clientDir) == clientCount { - clientconf.DataDir = clientDir[i] - } - client, err := net.NewNodeWithConfig(clientconf) - if err != nil { - t.Fatalf("Failed to create client: %v", err) - } - clients[i] = client - } - - for i := range servers { - serverconf := adapters.RandomNodeConfig() - serverconf.Lifecycles = []string{"lesserver"} - if len(serverDir) == serverCount { - serverconf.DataDir = serverDir[i] - } - server, err := net.NewNodeWithConfig(serverconf) - if err != nil { - t.Fatalf("Failed to create server: %v", err) - } - servers[i] = server - } - - for _, client := range clients { - if err := net.Start(client.ID()); err != nil { - t.Fatalf("Failed to start client node: %v", err) - } - } - for _, server := range servers { - if err := net.Start(server.ID()); err != nil { - t.Fatalf("Failed to start server node: %v", err) - } - } - - return test(ctx, net, servers, clients) -} - -func newLesClientService(ctx *adapters.ServiceContext, stack *node.Node) (node.Lifecycle, error) { - config := ethconfig.Defaults - config.SyncMode = downloader.LightSync - return New(stack, &config) -} - -func newLesServerService(ctx *adapters.ServiceContext, stack *node.Node) (node.Lifecycle, error) { - config := ethconfig.Defaults - config.SyncMode = downloader.FullSync - config.LightServ = testServerCapacity - config.LightPeers = testMaxClients - ethereum, err := eth.New(stack, &config) - if err != nil { - return nil, err - } - _, err = NewLesServer(stack, ethereum, &config) - if err != nil { - return nil, err - } - return ethereum, nil -} diff --git a/les/benchmark.go b/les/benchmark.go deleted file mode 100644 index d1efa2f5d3..0000000000 --- a/les/benchmark.go +++ /dev/null @@ -1,351 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - crand "crypto/rand" - "encoding/binary" - "errors" - "math/big" - "math/rand" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/les/flowcontrol" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" -) - -// requestBenchmark is an interface for different randomized request generators -type requestBenchmark interface { - // init initializes the generator for generating the given number of randomized requests - init(h *serverHandler, count int) error - // request initiates sending a single request to the given peer - request(peer *serverPeer, index int) error -} - -// benchmarkBlockHeaders implements requestBenchmark -type benchmarkBlockHeaders struct { - amount, skip int - reverse, byHash bool - offset, randMax int64 - hashes []common.Hash -} - -func (b *benchmarkBlockHeaders) init(h *serverHandler, count int) error { - d := int64(b.amount-1) * int64(b.skip+1) - b.offset = 0 - b.randMax = h.blockchain.CurrentHeader().Number.Int64() + 1 - d - if b.randMax < 0 { - return errors.New("chain is too short") - } - if b.reverse { - b.offset = d - } - if b.byHash { - b.hashes = make([]common.Hash, count) - for i := range b.hashes { - b.hashes[i] = rawdb.ReadCanonicalHash(h.chainDb, uint64(b.offset+rand.Int63n(b.randMax))) - } - } - return nil -} - -func (b *benchmarkBlockHeaders) request(peer *serverPeer, index int) error { - if b.byHash { - return peer.requestHeadersByHash(0, b.hashes[index], b.amount, b.skip, b.reverse) - } - return peer.requestHeadersByNumber(0, uint64(b.offset+rand.Int63n(b.randMax)), b.amount, b.skip, b.reverse) -} - -// benchmarkBodiesOrReceipts implements requestBenchmark -type benchmarkBodiesOrReceipts struct { - receipts bool - hashes []common.Hash -} - -func (b *benchmarkBodiesOrReceipts) init(h *serverHandler, count int) error { - randMax := h.blockchain.CurrentHeader().Number.Int64() + 1 - b.hashes = make([]common.Hash, count) - for i := range b.hashes { - b.hashes[i] = rawdb.ReadCanonicalHash(h.chainDb, uint64(rand.Int63n(randMax))) - } - return nil -} - -func (b *benchmarkBodiesOrReceipts) request(peer *serverPeer, index int) error { - if b.receipts { - return peer.requestReceipts(0, []common.Hash{b.hashes[index]}) - } - return peer.requestBodies(0, []common.Hash{b.hashes[index]}) -} - -// benchmarkProofsOrCode implements requestBenchmark -type benchmarkProofsOrCode struct { - code bool - headHash common.Hash -} - -func (b *benchmarkProofsOrCode) init(h *serverHandler, count int) error { - b.headHash = h.blockchain.CurrentHeader().Hash() - return nil -} - -func (b *benchmarkProofsOrCode) request(peer *serverPeer, index int) error { - key := make([]byte, 32) - crand.Read(key) - if b.code { - return peer.requestCode(0, []CodeReq{{BHash: b.headHash, AccountAddress: key}}) - } - return peer.requestProofs(0, []ProofReq{{BHash: b.headHash, Key: key}}) -} - -// benchmarkHelperTrie implements requestBenchmark -type benchmarkHelperTrie struct { - bloom bool - reqCount int - sectionCount, headNum uint64 -} - -func (b *benchmarkHelperTrie) init(h *serverHandler, count int) error { - if b.bloom { - b.sectionCount, b.headNum, _ = h.server.bloomTrieIndexer.Sections() - } else { - b.sectionCount, _, _ = h.server.chtIndexer.Sections() - b.headNum = b.sectionCount*params.CHTFrequency - 1 - } - if b.sectionCount == 0 { - return errors.New("no processed sections available") - } - return nil -} - -func (b *benchmarkHelperTrie) request(peer *serverPeer, index int) error { - reqs := make([]HelperTrieReq, b.reqCount) - - if b.bloom { - bitIdx := uint16(rand.Intn(2048)) - for i := range reqs { - key := make([]byte, 10) - binary.BigEndian.PutUint16(key[:2], bitIdx) - binary.BigEndian.PutUint64(key[2:], uint64(rand.Int63n(int64(b.sectionCount)))) - reqs[i] = HelperTrieReq{Type: htBloomBits, TrieIdx: b.sectionCount - 1, Key: key} - } - } else { - for i := range reqs { - key := make([]byte, 8) - binary.BigEndian.PutUint64(key[:], uint64(rand.Int63n(int64(b.headNum)))) - reqs[i] = HelperTrieReq{Type: htCanonical, TrieIdx: b.sectionCount - 1, Key: key, AuxReq: htAuxHeader} - } - } - - return peer.requestHelperTrieProofs(0, reqs) -} - -// benchmarkTxSend implements requestBenchmark -type benchmarkTxSend struct { - txs types.Transactions -} - -func (b *benchmarkTxSend) init(h *serverHandler, count int) error { - key, _ := crypto.GenerateKey() - addr := crypto.PubkeyToAddress(key.PublicKey) - signer := types.LatestSigner(h.server.chainConfig) - b.txs = make(types.Transactions, count) - - for i := range b.txs { - data := make([]byte, txSizeCostLimit) - crand.Read(data) - tx, err := types.SignTx(types.NewTransaction(0, addr, new(big.Int), 0, new(big.Int), data), signer, key) - if err != nil { - panic(err) - } - b.txs[i] = tx - } - return nil -} - -func (b *benchmarkTxSend) request(peer *serverPeer, index int) error { - enc, _ := rlp.EncodeToBytes(types.Transactions{b.txs[index]}) - return peer.sendTxs(0, 1, enc) -} - -// benchmarkTxStatus implements requestBenchmark -type benchmarkTxStatus struct{} - -func (b *benchmarkTxStatus) init(h *serverHandler, count int) error { - return nil -} - -func (b *benchmarkTxStatus) request(peer *serverPeer, index int) error { - var hash common.Hash - crand.Read(hash[:]) - return peer.requestTxStatus(0, []common.Hash{hash}) -} - -// benchmarkSetup stores measurement data for a single benchmark type -type benchmarkSetup struct { - req requestBenchmark - totalCount int - totalTime, avgTime time.Duration - maxInSize, maxOutSize uint32 - err error -} - -// runBenchmark runs a benchmark cycle for all benchmark types in the specified -// number of passes -func (h *serverHandler) runBenchmark(benchmarks []requestBenchmark, passCount int, targetTime time.Duration) []*benchmarkSetup { - setup := make([]*benchmarkSetup, len(benchmarks)) - for i, b := range benchmarks { - setup[i] = &benchmarkSetup{req: b} - } - for i := 0; i < passCount; i++ { - log.Info("Running benchmark", "pass", i+1, "total", passCount) - todo := make([]*benchmarkSetup, len(benchmarks)) - copy(todo, setup) - for len(todo) > 0 { - // select a random element - index := rand.Intn(len(todo)) - next := todo[index] - todo[index] = todo[len(todo)-1] - todo = todo[:len(todo)-1] - - if next.err == nil { - // calculate request count - count := 50 - if next.totalTime > 0 { - count = int(uint64(next.totalCount) * uint64(targetTime) / uint64(next.totalTime)) - } - if err := h.measure(next, count); err != nil { - next.err = err - } - } - } - } - log.Info("Benchmark completed") - - for _, s := range setup { - if s.err == nil { - s.avgTime = s.totalTime / time.Duration(s.totalCount) - } - } - return setup -} - -// meteredPipe implements p2p.MsgReadWriter and remembers the largest single -// message size sent through the pipe -type meteredPipe struct { - rw p2p.MsgReadWriter - maxSize uint32 -} - -func (m *meteredPipe) ReadMsg() (p2p.Msg, error) { - return m.rw.ReadMsg() -} - -func (m *meteredPipe) WriteMsg(msg p2p.Msg) error { - if msg.Size > m.maxSize { - m.maxSize = msg.Size - } - return m.rw.WriteMsg(msg) -} - -// measure runs a benchmark for a single type in a single pass, with the given -// number of requests -func (h *serverHandler) measure(setup *benchmarkSetup, count int) error { - clientPipe, serverPipe := p2p.MsgPipe() - clientMeteredPipe := &meteredPipe{rw: clientPipe} - serverMeteredPipe := &meteredPipe{rw: serverPipe} - var id enode.ID - crand.Read(id[:]) - - peer1 := newServerPeer(lpv2, NetworkId, false, p2p.NewPeer(id, "client", nil), clientMeteredPipe) - peer2 := newClientPeer(lpv2, NetworkId, p2p.NewPeer(id, "server", nil), serverMeteredPipe) - peer2.announceType = announceTypeNone - peer2.fcCosts = make(requestCostTable) - c := &requestCosts{} - for code := range requests { - peer2.fcCosts[code] = c - } - peer2.fcParams = flowcontrol.ServerParams{BufLimit: 1, MinRecharge: 1} - peer2.fcClient = flowcontrol.NewClientNode(h.server.fcManager, peer2.fcParams) - defer peer2.fcClient.Disconnect() - - if err := setup.req.init(h, count); err != nil { - return err - } - - errCh := make(chan error, 10) - start := mclock.Now() - - go func() { - for i := 0; i < count; i++ { - if err := setup.req.request(peer1, i); err != nil { - errCh <- err - return - } - } - }() - go func() { - for i := 0; i < count; i++ { - if err := h.handleMsg(peer2, &sync.WaitGroup{}); err != nil { - errCh <- err - return - } - } - }() - go func() { - for i := 0; i < count; i++ { - msg, err := clientPipe.ReadMsg() - if err != nil { - errCh <- err - return - } - var i interface{} - msg.Decode(&i) - } - // at this point we can be sure that the other two - // goroutines finished successfully too - close(errCh) - }() - select { - case err := <-errCh: - if err != nil { - return err - } - case <-h.closeCh: - clientPipe.Close() - serverPipe.Close() - return errors.New("benchmark cancelled") - } - - setup.totalTime += time.Duration(mclock.Now() - start) - setup.totalCount += count - setup.maxInSize = clientMeteredPipe.maxSize - setup.maxOutSize = serverMeteredPipe.maxSize - clientPipe.Close() - serverPipe.Close() - return nil -} diff --git a/les/bloombits.go b/les/bloombits.go deleted file mode 100644 index a98524ce2e..0000000000 --- a/les/bloombits.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "time" - - "github.com/ethereum/go-ethereum/common/bitutil" - "github.com/ethereum/go-ethereum/light" -) - -const ( - // bloomServiceThreads is the number of goroutines used globally by an Ethereum - // instance to service bloombits lookups for all running filters. - bloomServiceThreads = 16 - - // bloomFilterThreads is the number of goroutines used locally per filter to - // multiplex requests onto the global servicing goroutines. - bloomFilterThreads = 3 - - // bloomRetrievalBatch is the maximum number of bloom bit retrievals to service - // in a single batch. - bloomRetrievalBatch = 16 - - // bloomRetrievalWait is the maximum time to wait for enough bloom bit requests - // to accumulate request an entire batch (avoiding hysteresis). - bloomRetrievalWait = time.Microsecond * 100 -) - -// startBloomHandlers starts a batch of goroutines to accept bloom bit database -// retrievals from possibly a range of filters and serving the data to satisfy. -func (eth *LightEthereum) startBloomHandlers(sectionSize uint64) { - for i := 0; i < bloomServiceThreads; i++ { - go func() { - defer eth.wg.Done() - for { - select { - case <-eth.closeCh: - return - - case request := <-eth.bloomRequests: - task := <-request - task.Bitsets = make([][]byte, len(task.Sections)) - compVectors, err := light.GetBloomBits(task.Context, eth.odr, task.Bit, task.Sections) - if err == nil { - for i := range task.Sections { - if blob, err := bitutil.DecompressBytes(compVectors[i], int(sectionSize/8)); err == nil { - task.Bitsets[i] = blob - } else { - task.Error = err - } - } - } else { - task.Error = err - } - request <- task - } - } - }() - } -} diff --git a/les/client.go b/les/client.go deleted file mode 100644 index be5e9fd564..0000000000 --- a/les/client.go +++ /dev/null @@ -1,377 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -// Package les implements the Light Ethereum Subprotocol. -package les - -import ( - "errors" - "strings" - "time" - - "github.com/ethereum/go-ethereum/accounts" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/bloombits" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/eth/gasprice" - "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/internal/ethapi" - "github.com/ethereum/go-ethereum/internal/shutdowncheck" - "github.com/ethereum/go-ethereum/les/vflux" - vfc "github.com/ethereum/go-ethereum/les/vflux/client" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/node" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/rpc" - "github.com/ethereum/go-ethereum/trie" -) - -type LightEthereum struct { - lesCommons - - peers *serverPeerSet - reqDist *requestDistributor - retriever *retrieveManager - odr *LesOdr - relay *lesTxRelay - handler *clientHandler - txPool *light.TxPool - blockchain *light.LightChain - serverPool *vfc.ServerPool - serverPoolIterator enode.Iterator - merger *consensus.Merger - - bloomRequests chan chan *bloombits.Retrieval // Channel receiving bloom data retrieval requests - bloomIndexer *core.ChainIndexer // Bloom indexer operating during block imports - - ApiBackend *LesApiBackend - eventMux *event.TypeMux - engine consensus.Engine - accountManager *accounts.Manager - netRPCService *ethapi.NetAPI - - p2pServer *p2p.Server - p2pConfig *p2p.Config - udpEnabled bool - - shutdownTracker *shutdowncheck.ShutdownTracker // Tracks if and when the node has shutdown ungracefully -} - -// New creates an instance of the light client. -func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) { - chainDb, err := stack.OpenDatabase("lightchaindata", config.DatabaseCache, config.DatabaseHandles, "eth/db/chaindata/", false) - if err != nil { - return nil, err - } - lesDb, err := stack.OpenDatabase("les.client", 0, 0, "eth/db/lesclient/", false) - if err != nil { - return nil, err - } - var overrides core.ChainOverrides - if config.OverrideCancun != nil { - overrides.OverrideCancun = config.OverrideCancun - } - if config.OverrideVerkle != nil { - overrides.OverrideVerkle = config.OverrideVerkle - } - triedb := trie.NewDatabase(chainDb, trie.HashDefaults) - chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, triedb, config.Genesis, &overrides) - if _, isCompat := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !isCompat { - return nil, genesisErr - } - engine, err := ethconfig.CreateConsensusEngine(chainConfig, chainDb) - if err != nil { - return nil, err - } - log.Info("") - log.Info(strings.Repeat("-", 153)) - for _, line := range strings.Split(chainConfig.Description(), "\n") { - log.Info(line) - } - log.Info(strings.Repeat("-", 153)) - log.Info("") - - peers := newServerPeerSet() - merger := consensus.NewMerger(chainDb) - leth := &LightEthereum{ - lesCommons: lesCommons{ - genesis: genesisHash, - config: config, - chainConfig: chainConfig, - iConfig: light.DefaultClientIndexerConfig, - chainDb: chainDb, - lesDb: lesDb, - closeCh: make(chan struct{}), - }, - peers: peers, - eventMux: stack.EventMux(), - reqDist: newRequestDistributor(peers, &mclock.System{}), - accountManager: stack.AccountManager(), - merger: merger, - engine: engine, - bloomRequests: make(chan chan *bloombits.Retrieval), - bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocksClient, params.HelperTrieConfirmations), - p2pServer: stack.Server(), - p2pConfig: &stack.Config().P2P, - udpEnabled: stack.Config().P2P.DiscoveryV5, - shutdownTracker: shutdowncheck.NewShutdownTracker(chainDb), - } - - var prenegQuery vfc.QueryFunc - if leth.udpEnabled { - prenegQuery = leth.prenegQuery - } - leth.serverPool, leth.serverPoolIterator = vfc.NewServerPool(lesDb, []byte("serverpool:"), time.Second, prenegQuery, &mclock.System{}, nil, requestList) - leth.serverPool.AddMetrics(suggestedTimeoutGauge, totalValueGauge, serverSelectableGauge, serverConnectedGauge, sessionValueMeter, serverDialedMeter) - - leth.retriever = newRetrieveManager(peers, leth.reqDist, leth.serverPool.GetTimeout) - leth.relay = newLesTxRelay(peers, leth.retriever) - - leth.odr = NewLesOdr(chainDb, light.DefaultClientIndexerConfig, leth.peers, leth.retriever) - leth.chtIndexer = light.NewChtIndexer(chainDb, leth.odr, params.CHTFrequency, params.HelperTrieConfirmations, config.LightNoPrune) - leth.bloomTrieIndexer = light.NewBloomTrieIndexer(chainDb, leth.odr, params.BloomBitsBlocksClient, params.BloomTrieFrequency, config.LightNoPrune) - leth.odr.SetIndexers(leth.chtIndexer, leth.bloomTrieIndexer, leth.bloomIndexer) - - // Note: NewLightChain adds the trusted checkpoint so it needs an ODR with - // indexers already set but not started yet - if leth.blockchain, err = light.NewLightChain(leth.odr, leth.chainConfig, leth.engine); err != nil { - return nil, err - } - leth.chainReader = leth.blockchain - leth.txPool = light.NewTxPool(leth.chainConfig, leth.blockchain, leth.relay) - - // Note: AddChildIndexer starts the update process for the child - leth.bloomIndexer.AddChildIndexer(leth.bloomTrieIndexer) - leth.chtIndexer.Start(leth.blockchain) - leth.bloomIndexer.Start(leth.blockchain) - - // Rewind the chain in case of an incompatible config upgrade. - if compat, ok := genesisErr.(*params.ConfigCompatError); ok { - log.Warn("Rewinding chain to upgrade configuration", "err", compat) - if compat.RewindToTime > 0 { - leth.blockchain.SetHeadWithTimestamp(compat.RewindToTime) - } else { - leth.blockchain.SetHead(compat.RewindToBlock) - } - rawdb.WriteChainConfig(chainDb, genesisHash, chainConfig) - } - - leth.ApiBackend = &LesApiBackend{stack.Config().ExtRPCEnabled(), stack.Config().AllowUnprotectedTxs, leth, nil} - gpoParams := config.GPO - if gpoParams.Default == nil { - gpoParams.Default = config.Miner.GasPrice - } - leth.ApiBackend.gpo = gasprice.NewOracle(leth.ApiBackend, gpoParams) - - leth.handler = newClientHandler(leth) - leth.netRPCService = ethapi.NewNetAPI(leth.p2pServer, leth.config.NetworkId) - - // Register the backend on the node - stack.RegisterAPIs(leth.APIs()) - stack.RegisterProtocols(leth.Protocols()) - stack.RegisterLifecycle(leth) - - // Successful startup; push a marker and check previous unclean shutdowns. - leth.shutdownTracker.MarkStartup() - - return leth, nil -} - -// VfluxRequest sends a batch of requests to the given node through discv5 UDP TalkRequest and returns the responses -func (s *LightEthereum) VfluxRequest(n *enode.Node, reqs vflux.Requests) vflux.Replies { - if !s.udpEnabled { - return nil - } - reqsEnc, _ := rlp.EncodeToBytes(&reqs) - repliesEnc, _ := s.p2pServer.DiscV5.TalkRequest(s.serverPool.DialNode(n), "vfx", reqsEnc) - var replies vflux.Replies - if len(repliesEnc) == 0 || rlp.DecodeBytes(repliesEnc, &replies) != nil { - return nil - } - return replies -} - -// vfxVersion returns the version number of the "les" service subdomain of the vflux UDP -// service, as advertised in the ENR record -func (s *LightEthereum) vfxVersion(n *enode.Node) uint { - if n.Seq() == 0 { - var err error - if !s.udpEnabled { - return 0 - } - if n, err = s.p2pServer.DiscV5.RequestENR(n); n != nil && err == nil && n.Seq() != 0 { - s.serverPool.Persist(n) - } else { - return 0 - } - } - - var les []rlp.RawValue - if err := n.Load(enr.WithEntry("les", &les)); err != nil || len(les) < 1 { - return 0 - } - var version uint - rlp.DecodeBytes(les[0], &version) // Ignore additional fields (for forward compatibility). - return version -} - -// prenegQuery sends a capacity query to the given server node to determine whether -// a connection slot is immediately available -func (s *LightEthereum) prenegQuery(n *enode.Node) int { - if s.vfxVersion(n) < 1 { - // UDP query not supported, always try TCP connection - return 1 - } - - var requests vflux.Requests - requests.Add("les", vflux.CapacityQueryName, vflux.CapacityQueryReq{ - Bias: 180, - AddTokens: []vflux.IntOrInf{{}}, - }) - replies := s.VfluxRequest(n, requests) - var cqr vflux.CapacityQueryReply - if replies.Get(0, &cqr) != nil || len(cqr) != 1 { // Note: Get returns an error if replies is nil - return -1 - } - if cqr[0] > 0 { - return 1 - } - return 0 -} - -type LightDummyAPI struct{} - -// Etherbase is the address that mining rewards will be sent to -func (s *LightDummyAPI) Etherbase() (common.Address, error) { - return common.Address{}, errors.New("mining is not supported in light mode") -} - -// Coinbase is the address that mining rewards will be sent to (alias for Etherbase) -func (s *LightDummyAPI) Coinbase() (common.Address, error) { - return common.Address{}, errors.New("mining is not supported in light mode") -} - -// Hashrate returns the POW hashrate -func (s *LightDummyAPI) Hashrate() hexutil.Uint { - return 0 -} - -// Mining returns an indication if this node is currently mining. -func (s *LightDummyAPI) Mining() bool { - return false -} - -// APIs returns the collection of RPC services the ethereum package offers. -// NOTE, some of these services probably need to be moved to somewhere else. -func (s *LightEthereum) APIs() []rpc.API { - apis := ethapi.GetAPIs(s.ApiBackend) - apis = append(apis, s.engine.APIs(s.BlockChain().HeaderChain())...) - return append(apis, []rpc.API{ - { - Namespace: "eth", - Service: &LightDummyAPI{}, - }, { - Namespace: "net", - Service: s.netRPCService, - }, { - Namespace: "vflux", - Service: s.serverPool.API(), - }, - }...) -} - -func (s *LightEthereum) ResetWithGenesisBlock(gb *types.Block) { - s.blockchain.ResetWithGenesisBlock(gb) -} - -func (s *LightEthereum) BlockChain() *light.LightChain { return s.blockchain } -func (s *LightEthereum) TxPool() *light.TxPool { return s.txPool } -func (s *LightEthereum) Engine() consensus.Engine { return s.engine } -func (s *LightEthereum) LesVersion() int { return int(ClientProtocolVersions[0]) } -func (s *LightEthereum) EventMux() *event.TypeMux { return s.eventMux } -func (s *LightEthereum) Merger() *consensus.Merger { return s.merger } - -// Protocols returns all the currently configured network protocols to start. -func (s *LightEthereum) Protocols() []p2p.Protocol { - return s.makeProtocols(ClientProtocolVersions, s.handler.runPeer, func(id enode.ID) interface{} { - if p := s.peers.peer(id.String()); p != nil { - return p.Info() - } - return nil - }, s.serverPoolIterator) -} - -// Start implements node.Lifecycle, starting all internal goroutines needed by the -// light ethereum protocol implementation. -func (s *LightEthereum) Start() error { - log.Warn("Light client mode is an experimental feature") - - // Regularly update shutdown marker - s.shutdownTracker.Start() - - if s.udpEnabled && s.p2pServer.DiscV5 == nil { - s.udpEnabled = false - log.Error("Discovery v5 is not initialized") - } - discovery, err := s.setupDiscovery() - if err != nil { - return err - } - s.serverPool.AddSource(discovery) - s.serverPool.Start() - // Start bloom request workers. - s.wg.Add(bloomServiceThreads) - s.startBloomHandlers(params.BloomBitsBlocksClient) - - return nil -} - -// Stop implements node.Lifecycle, terminating all internal goroutines used by the -// Ethereum protocol. -func (s *LightEthereum) Stop() error { - close(s.closeCh) - s.serverPool.Stop() - s.peers.close() - s.reqDist.close() - s.odr.Stop() - s.relay.Stop() - s.bloomIndexer.Close() - s.chtIndexer.Close() - s.blockchain.Stop() - s.handler.stop() - s.txPool.Stop() - s.engine.Close() - s.eventMux.Stop() - // Clean shutdown marker as the last thing before closing db - s.shutdownTracker.Stop() - - s.chainDb.Close() - s.lesDb.Close() - s.wg.Wait() - log.Info("Light ethereum stopped") - return nil -} diff --git a/les/client_handler.go b/les/client_handler.go deleted file mode 100644 index 50f6dce879..0000000000 --- a/les/client_handler.go +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "sync" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core/forkid" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -// clientHandler is responsible for receiving and processing all incoming server -// responses. -type clientHandler struct { - forkFilter forkid.Filter - backend *LightEthereum - - closeCh chan struct{} - wg sync.WaitGroup // WaitGroup used to track all connected peers. -} - -func newClientHandler(backend *LightEthereum) *clientHandler { - handler := &clientHandler{ - forkFilter: forkid.NewFilter(backend.blockchain), - backend: backend, - closeCh: make(chan struct{}), - } - return handler -} - -func (h *clientHandler) stop() { - close(h.closeCh) - h.wg.Wait() -} - -// runPeer is the p2p protocol run function for the given version. -func (h *clientHandler) runPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter) error { - peer := newServerPeer(int(version), h.backend.config.NetworkId, false, p, newMeteredMsgWriter(rw, int(version))) - defer peer.close() - h.wg.Add(1) - defer h.wg.Done() - err := h.handle(peer, false) - return err -} - -func (h *clientHandler) handle(p *serverPeer, noInitAnnounce bool) error { - if h.backend.peers.len() >= h.backend.config.LightPeers && !p.Peer.Info().Network.Trusted { - return p2p.DiscTooManyPeers - } - p.Log().Debug("Light Ethereum peer connected", "name", p.Name()) - - // Execute the LES handshake - forkid := forkid.NewID(h.backend.blockchain.Config(), h.backend.BlockChain().Genesis(), h.backend.blockchain.CurrentHeader().Number.Uint64(), h.backend.blockchain.CurrentHeader().Time) - if err := p.Handshake(h.backend.blockchain.Genesis().Hash(), forkid, h.forkFilter); err != nil { - p.Log().Debug("Light Ethereum handshake failed", "err", err) - return err - } - // Register peer with the server pool - if h.backend.serverPool != nil { - if nvt, err := h.backend.serverPool.RegisterNode(p.Node()); err == nil { - p.setValueTracker(nvt) - p.updateVtParams() - defer func() { - p.setValueTracker(nil) - h.backend.serverPool.UnregisterNode(p.Node()) - }() - } else { - return err - } - } - // Register the peer locally - if err := h.backend.peers.register(p); err != nil { - p.Log().Error("Light Ethereum peer registration failed", "err", err) - return err - } - - serverConnectionGauge.Update(int64(h.backend.peers.len())) - - connectedAt := mclock.Now() - defer func() { - h.backend.peers.unregister(p.id) - connectionTimer.Update(time.Duration(mclock.Now() - connectedAt)) - serverConnectionGauge.Update(int64(h.backend.peers.len())) - }() - - // Mark the peer starts to be served. - p.serving.Store(true) - defer p.serving.Store(false) - - // Spawn a main loop to handle all incoming messages. - for { - if err := h.handleMsg(p); err != nil { - p.Log().Debug("Light Ethereum message handling failed", "err", err) - p.fcServer.DumpLogs() - return err - } - } -} - -// handleMsg is invoked whenever an inbound message is received from a remote -// peer. The remote connection is torn down upon returning any error. -func (h *clientHandler) handleMsg(p *serverPeer) error { - // Read the next message from the remote peer, and ensure it's fully consumed - msg, err := p.rw.ReadMsg() - if err != nil { - return err - } - p.Log().Trace("Light Ethereum message arrived", "code", msg.Code, "bytes", msg.Size) - - if msg.Size > ProtocolMaxMsgSize { - return errResp(ErrMsgTooLarge, "%v > %v", msg.Size, ProtocolMaxMsgSize) - } - defer msg.Discard() - - var deliverMsg *Msg - - // Handle the message depending on its contents - switch { - case msg.Code == AnnounceMsg: - p.Log().Trace("Received announce message") - var req announceData - if err := msg.Decode(&req); err != nil { - return errResp(ErrDecode, "%v: %v", msg, err) - } - if err := req.sanityCheck(); err != nil { - return err - } - update, size := req.Update.decode() - if p.rejectUpdate(size) { - return errResp(ErrRequestRejected, "") - } - p.updateFlowControl(update) - p.updateVtParams() - - if req.Hash != (common.Hash{}) { - if p.announceType == announceTypeNone { - return errResp(ErrUnexpectedResponse, "") - } - if p.announceType == announceTypeSigned { - if err := req.checkSignature(p.ID(), update); err != nil { - p.Log().Trace("Invalid announcement signature", "err", err) - return err - } - p.Log().Trace("Valid announcement signature") - } - p.Log().Trace("Announce message content", "number", req.Number, "hash", req.Hash, "td", req.Td, "reorg", req.ReorgDepth) - - // Update peer head information first and then notify the announcement - p.updateHead(req.Hash, req.Number, req.Td) - } - case msg.Code == BlockHeadersMsg: - p.Log().Trace("Received block header response message") - var resp struct { - ReqID, BV uint64 - Headers []*types.Header - } - if err := msg.Decode(&resp); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ReceivedReply(resp.ReqID, resp.BV) - p.answeredRequest(resp.ReqID) - - deliverMsg = &Msg{ - MsgType: MsgBlockHeaders, - ReqID: resp.ReqID, - Obj: resp.Headers, - } - case msg.Code == BlockBodiesMsg: - p.Log().Trace("Received block bodies response") - var resp struct { - ReqID, BV uint64 - Data []*types.Body - } - if err := msg.Decode(&resp); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ReceivedReply(resp.ReqID, resp.BV) - p.answeredRequest(resp.ReqID) - deliverMsg = &Msg{ - MsgType: MsgBlockBodies, - ReqID: resp.ReqID, - Obj: resp.Data, - } - case msg.Code == CodeMsg: - p.Log().Trace("Received code response") - var resp struct { - ReqID, BV uint64 - Data [][]byte - } - if err := msg.Decode(&resp); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ReceivedReply(resp.ReqID, resp.BV) - p.answeredRequest(resp.ReqID) - deliverMsg = &Msg{ - MsgType: MsgCode, - ReqID: resp.ReqID, - Obj: resp.Data, - } - case msg.Code == ReceiptsMsg: - p.Log().Trace("Received receipts response") - var resp struct { - ReqID, BV uint64 - Receipts []types.Receipts - } - if err := msg.Decode(&resp); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ReceivedReply(resp.ReqID, resp.BV) - p.answeredRequest(resp.ReqID) - deliverMsg = &Msg{ - MsgType: MsgReceipts, - ReqID: resp.ReqID, - Obj: resp.Receipts, - } - case msg.Code == ProofsV2Msg: - p.Log().Trace("Received les/2 proofs response") - var resp struct { - ReqID, BV uint64 - Data trienode.ProofList - } - if err := msg.Decode(&resp); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ReceivedReply(resp.ReqID, resp.BV) - p.answeredRequest(resp.ReqID) - deliverMsg = &Msg{ - MsgType: MsgProofsV2, - ReqID: resp.ReqID, - Obj: resp.Data, - } - case msg.Code == HelperTrieProofsMsg: - p.Log().Trace("Received helper trie proof response") - var resp struct { - ReqID, BV uint64 - Data HelperTrieResps - } - if err := msg.Decode(&resp); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ReceivedReply(resp.ReqID, resp.BV) - p.answeredRequest(resp.ReqID) - deliverMsg = &Msg{ - MsgType: MsgHelperTrieProofs, - ReqID: resp.ReqID, - Obj: resp.Data, - } - case msg.Code == TxStatusMsg: - p.Log().Trace("Received tx status response") - var resp struct { - ReqID, BV uint64 - Status []light.TxStatus - } - if err := msg.Decode(&resp); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ReceivedReply(resp.ReqID, resp.BV) - p.answeredRequest(resp.ReqID) - deliverMsg = &Msg{ - MsgType: MsgTxStatus, - ReqID: resp.ReqID, - Obj: resp.Status, - } - case msg.Code == StopMsg && p.version >= lpv3: - p.freeze() - h.backend.retriever.frozen(p) - p.Log().Debug("Service stopped") - case msg.Code == ResumeMsg && p.version >= lpv3: - var bv uint64 - if err := msg.Decode(&bv); err != nil { - return errResp(ErrDecode, "msg %v: %v", msg, err) - } - p.fcServer.ResumeFreeze(bv) - p.unfreeze() - p.Log().Debug("Service resumed") - default: - p.Log().Trace("Received invalid message", "code", msg.Code) - return errResp(ErrInvalidMsgCode, "%v", msg.Code) - } - // Deliver the received response to retriever. - if deliverMsg != nil { - if err := h.backend.retriever.deliver(p, deliverMsg); err != nil { - if val := p.errCount.Add(1, mclock.Now()); val > maxResponseErrors { - return err - } - } - } - return nil -} diff --git a/les/commons.go b/les/commons.go deleted file mode 100644 index cb3fc430b7..0000000000 --- a/les/commons.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2018 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "fmt" - "math/big" - "sync" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/params" -) - -func errResp(code errCode, format string, v ...interface{}) error { - return fmt.Errorf("%v - %v", code, fmt.Sprintf(format, v...)) -} - -type chainReader interface { - CurrentHeader() *types.Header -} - -// lesCommons contains fields needed by both server and client. -type lesCommons struct { - genesis common.Hash - config *ethconfig.Config - chainConfig *params.ChainConfig - iConfig *light.IndexerConfig - chainDb, lesDb ethdb.Database - chainReader chainReader - chtIndexer, bloomTrieIndexer *core.ChainIndexer - - closeCh chan struct{} - wg sync.WaitGroup -} - -// NodeInfo represents a short summary of the Ethereum sub-protocol metadata -// known about the host peer. -type NodeInfo struct { - Network uint64 `json:"network"` // Ethereum network ID (1=Mainnet, Goerli=5) - Difficulty *big.Int `json:"difficulty"` // Total difficulty of the host's blockchain - Genesis common.Hash `json:"genesis"` // SHA3 hash of the host's genesis block - Config *params.ChainConfig `json:"config"` // Chain configuration for the fork rules - Head common.Hash `json:"head"` // SHA3 hash of the host's best owned block -} - -// makeProtocols creates protocol descriptors for the given LES versions. -func (c *lesCommons) makeProtocols(versions []uint, runPeer func(version uint, p *p2p.Peer, rw p2p.MsgReadWriter) error, peerInfo func(id enode.ID) interface{}, dialCandidates enode.Iterator) []p2p.Protocol { - protos := make([]p2p.Protocol, len(versions)) - for i, version := range versions { - version := version - protos[i] = p2p.Protocol{ - Name: "les", - Version: version, - Length: ProtocolLengths[version], - NodeInfo: c.nodeInfo, - Run: func(peer *p2p.Peer, rw p2p.MsgReadWriter) error { - return runPeer(version, peer, rw) - }, - PeerInfo: peerInfo, - DialCandidates: dialCandidates, - } - } - return protos -} - -// nodeInfo retrieves some protocol metadata about the running host node. -func (c *lesCommons) nodeInfo() interface{} { - head := c.chainReader.CurrentHeader() - hash := head.Hash() - return &NodeInfo{ - Network: c.config.NetworkId, - Difficulty: rawdb.ReadTd(c.chainDb, hash, head.Number.Uint64()), - Genesis: c.genesis, - Config: c.chainConfig, - Head: hash, - } -} diff --git a/les/costtracker.go b/les/costtracker.go deleted file mode 100644 index 695d54e141..0000000000 --- a/les/costtracker.go +++ /dev/null @@ -1,517 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "encoding/binary" - "math" - "sync" - "sync/atomic" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/flowcontrol" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/metrics" -) - -const makeCostStats = false // make request cost statistics during operation - -var ( - // average request cost estimates based on serving time - reqAvgTimeCost = requestCostTable{ - GetBlockHeadersMsg: {150000, 30000}, - GetBlockBodiesMsg: {0, 700000}, - GetReceiptsMsg: {0, 1000000}, - GetCodeMsg: {0, 450000}, - GetProofsV2Msg: {0, 600000}, - GetHelperTrieProofsMsg: {0, 1000000}, - SendTxV2Msg: {0, 450000}, - GetTxStatusMsg: {0, 250000}, - } - // maximum incoming message size estimates - reqMaxInSize = requestCostTable{ - GetBlockHeadersMsg: {40, 0}, - GetBlockBodiesMsg: {0, 40}, - GetReceiptsMsg: {0, 40}, - GetCodeMsg: {0, 80}, - GetProofsV2Msg: {0, 80}, - GetHelperTrieProofsMsg: {0, 20}, - SendTxV2Msg: {0, 16500}, - GetTxStatusMsg: {0, 50}, - } - // maximum outgoing message size estimates - reqMaxOutSize = requestCostTable{ - GetBlockHeadersMsg: {0, 556}, - GetBlockBodiesMsg: {0, 100000}, - GetReceiptsMsg: {0, 200000}, - GetCodeMsg: {0, 50000}, - GetProofsV2Msg: {0, 4000}, - GetHelperTrieProofsMsg: {0, 4000}, - SendTxV2Msg: {0, 100}, - GetTxStatusMsg: {0, 100}, - } - // request amounts that have to fit into the minimum buffer size minBufferMultiplier times - minBufferReqAmount = map[uint64]uint64{ - GetBlockHeadersMsg: 192, - GetBlockBodiesMsg: 1, - GetReceiptsMsg: 1, - GetCodeMsg: 1, - GetProofsV2Msg: 1, - GetHelperTrieProofsMsg: 16, - SendTxV2Msg: 8, - GetTxStatusMsg: 64, - } - minBufferMultiplier = 3 -) - -const ( - maxCostFactor = 2 // ratio of maximum and average cost estimates - bufLimitRatio = 6000 // fixed bufLimit/MRR ratio - gfUsageThreshold = 0.5 - gfUsageTC = time.Second - gfRaiseTC = time.Second * 200 - gfDropTC = time.Second * 50 - gfDbKey = "_globalCostFactorV6" -) - -// costTracker is responsible for calculating costs and cost estimates on the -// server side. It continuously updates the global cost factor which is defined -// as the number of cost units per nanosecond of serving time in a single thread. -// It is based on statistics collected during serving requests in high-load periods -// and practically acts as a one-dimension request price scaling factor over the -// pre-defined cost estimate table. -// -// The reason for dynamically maintaining the global factor on the server side is: -// the estimated time cost of the request is fixed(hardcoded) but the configuration -// of the machine running the server is really different. Therefore, the request serving -// time in different machine will vary greatly. And also, the request serving time -// in same machine may vary greatly with different request pressure. -// -// In order to more effectively limit resources, we apply the global factor to serving -// time to make the result as close as possible to the estimated time cost no matter -// the server is slow or fast. And also we scale the totalRecharge with global factor -// so that fast server can serve more requests than estimation and slow server can -// reduce request pressure. -// -// Instead of scaling the cost values, the real value of cost units is changed by -// applying the factor to the serving times. This is more convenient because the -// changes in the cost factor can be applied immediately without always notifying -// the clients about the changed cost tables. -type costTracker struct { - db ethdb.Database - stopCh chan chan struct{} - - inSizeFactor float64 - outSizeFactor float64 - factor float64 - utilTarget float64 - minBufLimit uint64 - - gfLock sync.RWMutex - reqInfoCh chan reqInfo - totalRechargeCh chan uint64 - - stats map[uint64][]atomic.Uint64 // Used for testing purpose. - - // TestHooks - testing bool // Disable real cost evaluation for testing purpose. - testCostList RequestCostList // Customized cost table for testing purpose. -} - -// newCostTracker creates a cost tracker and loads the cost factor statistics from the database. -// It also returns the minimum capacity that can be assigned to any peer. -func newCostTracker(db ethdb.Database, config *ethconfig.Config) (*costTracker, uint64) { - utilTarget := float64(config.LightServ) * flowcontrol.FixedPointMultiplier / 100 - ct := &costTracker{ - db: db, - stopCh: make(chan chan struct{}), - reqInfoCh: make(chan reqInfo, 100), - utilTarget: utilTarget, - } - if config.LightIngress > 0 { - ct.inSizeFactor = utilTarget / float64(config.LightIngress) - } - if config.LightEgress > 0 { - ct.outSizeFactor = utilTarget / float64(config.LightEgress) - } - if makeCostStats { - ct.stats = make(map[uint64][]atomic.Uint64) - for code := range reqAvgTimeCost { - ct.stats[code] = make([]atomic.Uint64, 10) - } - } - ct.gfLoop() - costList := ct.makeCostList(ct.globalFactor() * 1.25) - for _, c := range costList { - amount := minBufferReqAmount[c.MsgCode] - cost := c.BaseCost + amount*c.ReqCost - if cost > ct.minBufLimit { - ct.minBufLimit = cost - } - } - ct.minBufLimit *= uint64(minBufferMultiplier) - return ct, (ct.minBufLimit-1)/bufLimitRatio + 1 -} - -// stop stops the cost tracker and saves the cost factor statistics to the database -func (ct *costTracker) stop() { - stopCh := make(chan struct{}) - ct.stopCh <- stopCh - <-stopCh - if makeCostStats { - ct.printStats() - } -} - -// makeCostList returns upper cost estimates based on the hardcoded cost estimate -// tables and the optionally specified incoming/outgoing bandwidth limits -func (ct *costTracker) makeCostList(globalFactor float64) RequestCostList { - maxCost := func(avgTimeCost, inSize, outSize uint64) uint64 { - cost := avgTimeCost * maxCostFactor - inSizeCost := uint64(float64(inSize) * ct.inSizeFactor * globalFactor) - if inSizeCost > cost { - cost = inSizeCost - } - outSizeCost := uint64(float64(outSize) * ct.outSizeFactor * globalFactor) - if outSizeCost > cost { - cost = outSizeCost - } - return cost - } - var list RequestCostList - for code, data := range reqAvgTimeCost { - baseCost := maxCost(data.baseCost, reqMaxInSize[code].baseCost, reqMaxOutSize[code].baseCost) - reqCost := maxCost(data.reqCost, reqMaxInSize[code].reqCost, reqMaxOutSize[code].reqCost) - if ct.minBufLimit != 0 { - // if minBufLimit is set then always enforce maximum request cost <= minBufLimit - maxCost := baseCost + reqCost*minBufferReqAmount[code] - if maxCost > ct.minBufLimit { - mul := 0.999 * float64(ct.minBufLimit) / float64(maxCost) - baseCost = uint64(float64(baseCost) * mul) - reqCost = uint64(float64(reqCost) * mul) - } - } - - list = append(list, requestCostListItem{ - MsgCode: code, - BaseCost: baseCost, - ReqCost: reqCost, - }) - } - return list -} - -// reqInfo contains the estimated time cost and the actual request serving time -// which acts as a feed source to update factor maintained by costTracker. -type reqInfo struct { - // avgTimeCost is the estimated time cost corresponding to maxCostTable. - avgTimeCost float64 - - // servingTime is the CPU time corresponding to the actual processing of - // the request. - servingTime float64 - - // msgCode indicates the type of request. - msgCode uint64 -} - -// gfLoop starts an event loop which updates the global cost factor which is -// calculated as a weighted average of the average estimate / serving time ratio. -// The applied weight equals the serving time if gfUsage is over a threshold, -// zero otherwise. gfUsage is the recent average serving time per time unit in -// an exponential moving window. This ensures that statistics are collected only -// under high-load circumstances where the measured serving times are relevant. -// The total recharge parameter of the flow control system which controls the -// total allowed serving time per second but nominated in cost units, should -// also be scaled with the cost factor and is also updated by this loop. -func (ct *costTracker) gfLoop() { - var ( - factor, totalRecharge float64 - gfLog, recentTime, recentAvg float64 - - lastUpdate, expUpdate = mclock.Now(), mclock.Now() - ) - - // Load historical cost factor statistics from the database. - data, _ := ct.db.Get([]byte(gfDbKey)) - if len(data) == 8 { - gfLog = math.Float64frombits(binary.BigEndian.Uint64(data[:])) - } - ct.factor = math.Exp(gfLog) - factor, totalRecharge = ct.factor, ct.utilTarget*ct.factor - - // In order to perform factor data statistics under the high request pressure, - // we only adjust factor when recent factor usage beyond the threshold. - threshold := gfUsageThreshold * float64(gfUsageTC) * ct.utilTarget / flowcontrol.FixedPointMultiplier - - go func() { - saveCostFactor := func() { - var data [8]byte - binary.BigEndian.PutUint64(data[:], math.Float64bits(gfLog)) - ct.db.Put([]byte(gfDbKey), data[:]) - log.Debug("global cost factor saved", "value", factor) - } - saveTicker := time.NewTicker(time.Minute * 10) - defer saveTicker.Stop() - - for { - select { - case r := <-ct.reqInfoCh: - relCost := int64(factor * r.servingTime * 100 / r.avgTimeCost) // Convert the value to a percentage form - - // Record more metrics if we are debugging - if metrics.EnabledExpensive { - switch r.msgCode { - case GetBlockHeadersMsg: - relativeCostHeaderHistogram.Update(relCost) - case GetBlockBodiesMsg: - relativeCostBodyHistogram.Update(relCost) - case GetReceiptsMsg: - relativeCostReceiptHistogram.Update(relCost) - case GetCodeMsg: - relativeCostCodeHistogram.Update(relCost) - case GetProofsV2Msg: - relativeCostProofHistogram.Update(relCost) - case GetHelperTrieProofsMsg: - relativeCostHelperProofHistogram.Update(relCost) - case SendTxV2Msg: - relativeCostSendTxHistogram.Update(relCost) - case GetTxStatusMsg: - relativeCostTxStatusHistogram.Update(relCost) - } - } - // SendTxV2 and GetTxStatus requests are two special cases. - // All other requests will only put pressure on the database, and - // the corresponding delay is relatively stable. While these two - // requests involve txpool query, which is usually unstable. - // - // TODO(rjl493456442) fixes this. - if r.msgCode == SendTxV2Msg || r.msgCode == GetTxStatusMsg { - continue - } - requestServedMeter.Mark(int64(r.servingTime)) - requestServedTimer.Update(time.Duration(r.servingTime)) - requestEstimatedMeter.Mark(int64(r.avgTimeCost / factor)) - requestEstimatedTimer.Update(time.Duration(r.avgTimeCost / factor)) - relativeCostHistogram.Update(relCost) - - now := mclock.Now() - dt := float64(now - expUpdate) - expUpdate = now - exp := math.Exp(-dt / float64(gfUsageTC)) - - // calculate factor correction until now, based on previous values - var gfCorr float64 - max := recentTime - if recentAvg > max { - max = recentAvg - } - // we apply continuous correction when MAX(recentTime, recentAvg) > threshold - if max > threshold { - // calculate correction time between last expUpdate and now - if max*exp >= threshold { - gfCorr = dt - } else { - gfCorr = math.Log(max/threshold) * float64(gfUsageTC) - } - // calculate log(factor) correction with the right direction and time constant - if recentTime > recentAvg { - // drop factor if actual serving times are larger than average estimates - gfCorr /= -float64(gfDropTC) - } else { - // raise factor if actual serving times are smaller than average estimates - gfCorr /= float64(gfRaiseTC) - } - } - // update recent cost values with current request - recentTime = recentTime*exp + r.servingTime - recentAvg = recentAvg*exp + r.avgTimeCost/factor - - if gfCorr != 0 { - // Apply the correction to factor - gfLog += gfCorr - factor = math.Exp(gfLog) - // Notify outside modules the new factor and totalRecharge. - if time.Duration(now-lastUpdate) > time.Second { - totalRecharge, lastUpdate = ct.utilTarget*factor, now - ct.gfLock.Lock() - ct.factor = factor - ch := ct.totalRechargeCh - ct.gfLock.Unlock() - if ch != nil { - select { - case ct.totalRechargeCh <- uint64(totalRecharge): - default: - } - } - globalFactorGauge.Update(int64(1000 * factor)) - log.Debug("global cost factor updated", "factor", factor) - } - } - recentServedGauge.Update(int64(recentTime)) - recentEstimatedGauge.Update(int64(recentAvg)) - - case <-saveTicker.C: - saveCostFactor() - - case stopCh := <-ct.stopCh: - saveCostFactor() - close(stopCh) - return - } - } - }() -} - -// globalFactor returns the current value of the global cost factor -func (ct *costTracker) globalFactor() float64 { - ct.gfLock.RLock() - defer ct.gfLock.RUnlock() - - return ct.factor -} - -// totalRecharge returns the current total recharge parameter which is used by -// flowcontrol.ClientManager and is scaled by the global cost factor -func (ct *costTracker) totalRecharge() uint64 { - ct.gfLock.RLock() - defer ct.gfLock.RUnlock() - - return uint64(ct.factor * ct.utilTarget) -} - -// subscribeTotalRecharge returns all future updates to the total recharge value -// through a channel and also returns the current value -func (ct *costTracker) subscribeTotalRecharge(ch chan uint64) uint64 { - ct.gfLock.Lock() - defer ct.gfLock.Unlock() - - ct.totalRechargeCh = ch - return uint64(ct.factor * ct.utilTarget) -} - -// updateStats updates the global cost factor and (if enabled) the real cost vs. -// average estimate statistics -func (ct *costTracker) updateStats(code, amount, servingTime, realCost uint64) { - avg := reqAvgTimeCost[code] - avgTimeCost := avg.baseCost + amount*avg.reqCost - select { - case ct.reqInfoCh <- reqInfo{float64(avgTimeCost), float64(servingTime), code}: - default: - } - if makeCostStats { - realCost <<= 4 - l := 0 - for l < 9 && realCost > avgTimeCost { - l++ - realCost >>= 1 - } - ct.stats[code][l].Add(1) - } -} - -// realCost calculates the final cost of a request based on actual serving time, -// incoming and outgoing message size -// -// Note: message size is only taken into account if bandwidth limitation is applied -// and the cost based on either message size is greater than the cost based on -// serving time. A maximum of the three costs is applied instead of their sum -// because the three limited resources (serving thread time and i/o bandwidth) can -// also be maxed out simultaneously. -func (ct *costTracker) realCost(servingTime uint64, inSize, outSize uint32) uint64 { - cost := float64(servingTime) - inSizeCost := float64(inSize) * ct.inSizeFactor - if inSizeCost > cost { - cost = inSizeCost - } - outSizeCost := float64(outSize) * ct.outSizeFactor - if outSizeCost > cost { - cost = outSizeCost - } - return uint64(cost * ct.globalFactor()) -} - -// printStats prints the distribution of real request cost relative to the average estimates -func (ct *costTracker) printStats() { - if ct.stats == nil { - return - } - for code, arr := range ct.stats { - log.Info("Request cost statistics", "code", code, "1/16", arr[0].Load(), "1/8", arr[1].Load(), "1/4", arr[2].Load(), "1/2", arr[3].Load(), "1", arr[4].Load(), "2", arr[5].Load(), "4", arr[6].Load(), "8", arr[7].Load(), "16", arr[8].Load(), ">16", arr[9].Load()) - } -} - -type ( - // requestCostTable assigns a cost estimate function to each request type - // which is a linear function of the requested amount - // (cost = baseCost + reqCost * amount) - requestCostTable map[uint64]*requestCosts - requestCosts struct { - baseCost, reqCost uint64 - } - - // RequestCostList is a list representation of request costs which is used for - // database storage and communication through the network - RequestCostList []requestCostListItem - requestCostListItem struct { - MsgCode, BaseCost, ReqCost uint64 - } -) - -// getMaxCost calculates the estimated cost for a given request type and amount -func (table requestCostTable) getMaxCost(code, amount uint64) uint64 { - costs := table[code] - return costs.baseCost + amount*costs.reqCost -} - -// decode converts a cost list to a cost table -func (list RequestCostList) decode(protocolLength uint64) requestCostTable { - table := make(requestCostTable) - for _, e := range list { - if e.MsgCode < protocolLength { - table[e.MsgCode] = &requestCosts{ - baseCost: e.BaseCost, - reqCost: e.ReqCost, - } - } - } - return table -} - -// testCostList returns a dummy request cost list used by tests -func testCostList(testCost uint64) RequestCostList { - cl := make(RequestCostList, len(reqAvgTimeCost)) - var max uint64 - for code := range reqAvgTimeCost { - if code > max { - max = code - } - } - i := 0 - for code := uint64(0); code <= max; code++ { - if _, ok := reqAvgTimeCost[code]; ok { - cl[i].MsgCode = code - cl[i].BaseCost = testCost - cl[i].ReqCost = 0 - i++ - } - } - return cl -} diff --git a/les/distributor.go b/les/distributor.go deleted file mode 100644 index a0319c67f7..0000000000 --- a/les/distributor.go +++ /dev/null @@ -1,313 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "container/list" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/les/utils" -) - -// requestDistributor implements a mechanism that distributes requests to -// suitable peers, obeying flow control rules and prioritizing them in creation -// order (even when a resend is necessary). -type requestDistributor struct { - clock mclock.Clock - reqQueue *list.List - lastReqOrder uint64 - peers map[distPeer]struct{} - peerLock sync.RWMutex - loopChn chan struct{} - loopNextSent bool - lock sync.Mutex - - closeCh chan struct{} - wg sync.WaitGroup -} - -// distPeer is an LES server peer interface for the request distributor. -// waitBefore returns either the necessary waiting time before sending a request -// with the given upper estimated cost or the estimated remaining relative buffer -// value after sending such a request (in which case the request can be sent -// immediately). At least one of these values is always zero. -type distPeer interface { - waitBefore(uint64) (time.Duration, float64) - canQueue() bool - queueSend(f func()) bool -} - -// distReq is the request abstraction used by the distributor. It is based on -// three callback functions: -// - getCost returns the upper estimate of the cost of sending the request to a given peer -// - canSend tells if the server peer is suitable to serve the request -// - request prepares sending the request to the given peer and returns a function that -// does the actual sending. Request order should be preserved but the callback itself should not -// block until it is sent because other peers might still be able to receive requests while -// one of them is blocking. Instead, the returned function is put in the peer's send queue. -type distReq struct { - getCost func(distPeer) uint64 - canSend func(distPeer) bool - request func(distPeer) func() - - reqOrder uint64 - sentChn chan distPeer - element *list.Element - waitForPeers mclock.AbsTime - enterQueue mclock.AbsTime -} - -// newRequestDistributor creates a new request distributor -func newRequestDistributor(peers *serverPeerSet, clock mclock.Clock) *requestDistributor { - d := &requestDistributor{ - clock: clock, - reqQueue: list.New(), - loopChn: make(chan struct{}, 2), - closeCh: make(chan struct{}), - peers: make(map[distPeer]struct{}), - } - if peers != nil { - peers.subscribe(d) - } - d.wg.Add(1) - go d.loop() - return d -} - -// registerPeer implements peerSetNotify -func (d *requestDistributor) registerPeer(p *serverPeer) { - d.peerLock.Lock() - d.peers[p] = struct{}{} - d.peerLock.Unlock() -} - -// unregisterPeer implements peerSetNotify -func (d *requestDistributor) unregisterPeer(p *serverPeer) { - d.peerLock.Lock() - delete(d.peers, p) - d.peerLock.Unlock() -} - -// registerTestPeer adds a new test peer -func (d *requestDistributor) registerTestPeer(p distPeer) { - d.peerLock.Lock() - d.peers[p] = struct{}{} - d.peerLock.Unlock() -} - -var ( - // distMaxWait is the maximum waiting time after which further necessary waiting - // times are recalculated based on new feedback from the servers - distMaxWait = time.Millisecond * 50 - - // waitForPeers is the time window in which a request does not fail even if it - // has no suitable peers to send to at the moment - waitForPeers = time.Second * 3 -) - -// main event loop -func (d *requestDistributor) loop() { - defer d.wg.Done() - for { - select { - case <-d.closeCh: - d.lock.Lock() - elem := d.reqQueue.Front() - for elem != nil { - req := elem.Value.(*distReq) - close(req.sentChn) - req.sentChn = nil - elem = elem.Next() - } - d.lock.Unlock() - return - case <-d.loopChn: - d.lock.Lock() - d.loopNextSent = false - loop: - for { - peer, req, wait := d.nextRequest() - if req != nil && wait == 0 { - chn := req.sentChn // save sentChn because remove sets it to nil - d.remove(req) - send := req.request(peer) - if send != nil { - peer.queueSend(send) - requestSendDelay.Update(time.Duration(d.clock.Now() - req.enterQueue)) - } - chn <- peer - close(chn) - } else { - if wait == 0 { - // no request to send and nothing to wait for; the next - // queued request will wake up the loop - break loop - } - d.loopNextSent = true // a "next" signal has been sent, do not send another one until this one has been received - if wait > distMaxWait { - // waiting times may be reduced by incoming request replies, if it is too long, recalculate it periodically - wait = distMaxWait - } - go func() { - d.clock.Sleep(wait) - d.loopChn <- struct{}{} - }() - break loop - } - } - d.lock.Unlock() - } - } -} - -// selectPeerItem represents a peer to be selected for a request by weightedRandomSelect -type selectPeerItem struct { - peer distPeer - req *distReq - weight uint64 -} - -func selectPeerWeight(i interface{}) uint64 { - return i.(selectPeerItem).weight -} - -// nextRequest returns the next possible request from any peer, along with the -// associated peer and necessary waiting time -func (d *requestDistributor) nextRequest() (distPeer, *distReq, time.Duration) { - checkedPeers := make(map[distPeer]struct{}) - elem := d.reqQueue.Front() - var ( - bestWait time.Duration - sel *utils.WeightedRandomSelect - ) - - d.peerLock.RLock() - defer d.peerLock.RUnlock() - - peerCount := len(d.peers) - for (len(checkedPeers) < peerCount || elem == d.reqQueue.Front()) && elem != nil { - req := elem.Value.(*distReq) - canSend := false - now := d.clock.Now() - if req.waitForPeers > now { - canSend = true - wait := time.Duration(req.waitForPeers - now) - if bestWait == 0 || wait < bestWait { - bestWait = wait - } - } - for peer := range d.peers { - if _, ok := checkedPeers[peer]; !ok && peer.canQueue() && req.canSend(peer) { - canSend = true - cost := req.getCost(peer) - wait, bufRemain := peer.waitBefore(cost) - if wait == 0 { - if sel == nil { - sel = utils.NewWeightedRandomSelect(selectPeerWeight) - } - sel.Update(selectPeerItem{peer: peer, req: req, weight: uint64(bufRemain*1000000) + 1}) - } else { - if bestWait == 0 || wait < bestWait { - bestWait = wait - } - } - checkedPeers[peer] = struct{}{} - } - } - next := elem.Next() - if !canSend && elem == d.reqQueue.Front() { - close(req.sentChn) - d.remove(req) - } - elem = next - } - - if sel != nil { - c := sel.Choose().(selectPeerItem) - return c.peer, c.req, 0 - } - return nil, nil, bestWait -} - -// queue adds a request to the distribution queue, returns a channel where the -// receiving peer is sent once the request has been sent (request callback returned). -// If the request is cancelled or timed out without suitable peers, the channel is -// closed without sending any peer references to it. -func (d *requestDistributor) queue(r *distReq) chan distPeer { - d.lock.Lock() - defer d.lock.Unlock() - - if r.reqOrder == 0 { - d.lastReqOrder++ - r.reqOrder = d.lastReqOrder - r.waitForPeers = d.clock.Now().Add(waitForPeers) - } - // Assign the timestamp when the request is queued no matter it's - // a new one or re-queued one. - r.enterQueue = d.clock.Now() - - back := d.reqQueue.Back() - if back == nil || r.reqOrder > back.Value.(*distReq).reqOrder { - r.element = d.reqQueue.PushBack(r) - } else { - before := d.reqQueue.Front() - for before.Value.(*distReq).reqOrder < r.reqOrder { - before = before.Next() - } - r.element = d.reqQueue.InsertBefore(r, before) - } - - if !d.loopNextSent { - d.loopNextSent = true - d.loopChn <- struct{}{} - } - - r.sentChn = make(chan distPeer, 1) - return r.sentChn -} - -// cancel removes a request from the queue if it has not been sent yet (returns -// false if it has been sent already). It is guaranteed that the callback functions -// will not be called after cancel returns. -func (d *requestDistributor) cancel(r *distReq) bool { - d.lock.Lock() - defer d.lock.Unlock() - - if r.sentChn == nil { - return false - } - - close(r.sentChn) - d.remove(r) - return true -} - -// remove removes a request from the queue -func (d *requestDistributor) remove(r *distReq) { - r.sentChn = nil - if r.element != nil { - d.reqQueue.Remove(r.element) - r.element = nil - } -} - -func (d *requestDistributor) close() { - close(d.closeCh) - d.wg.Wait() -} diff --git a/les/distributor_test.go b/les/distributor_test.go deleted file mode 100644 index 9a93dba145..0000000000 --- a/les/distributor_test.go +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "math/rand" - "sync" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" -) - -type testDistReq struct { - cost, procTime, order uint64 - canSendTo map[*testDistPeer]struct{} -} - -func (r *testDistReq) getCost(dp distPeer) uint64 { - return r.cost -} - -func (r *testDistReq) canSend(dp distPeer) bool { - _, ok := r.canSendTo[dp.(*testDistPeer)] - return ok -} - -func (r *testDistReq) request(dp distPeer) func() { - return func() { dp.(*testDistPeer).send(r) } -} - -type testDistPeer struct { - sent []*testDistReq - sumCost uint64 - lock sync.RWMutex -} - -func (p *testDistPeer) send(r *testDistReq) { - p.lock.Lock() - defer p.lock.Unlock() - - p.sent = append(p.sent, r) - p.sumCost += r.cost -} - -func (p *testDistPeer) worker(t *testing.T, checkOrder bool, stop chan struct{}) { - var last uint64 - for { - wait := time.Millisecond - p.lock.Lock() - if len(p.sent) > 0 { - rq := p.sent[0] - wait = time.Duration(rq.procTime) - p.sumCost -= rq.cost - if checkOrder { - if rq.order <= last { - t.Errorf("Requests processed in wrong order") - } - last = rq.order - } - p.sent = p.sent[1:] - } - p.lock.Unlock() - select { - case <-stop: - return - case <-time.After(wait): - } - } -} - -const ( - testDistBufLimit = 10000000 - testDistMaxCost = 1000000 - testDistPeerCount = 2 - testDistReqCount = 10 - testDistMaxResendCount = 3 -) - -func (p *testDistPeer) waitBefore(cost uint64) (time.Duration, float64) { - p.lock.RLock() - sumCost := p.sumCost + cost - p.lock.RUnlock() - if sumCost < testDistBufLimit { - return 0, float64(testDistBufLimit-sumCost) / float64(testDistBufLimit) - } - return time.Duration(sumCost - testDistBufLimit), 0 -} - -func (p *testDistPeer) canQueue() bool { - return true -} - -func (p *testDistPeer) queueSend(f func()) bool { - f() - return true -} - -func TestRequestDistributor(t *testing.T) { - testRequestDistributor(t, false) -} - -func TestRequestDistributorResend(t *testing.T) { - testRequestDistributor(t, true) -} - -func testRequestDistributor(t *testing.T, resend bool) { - stop := make(chan struct{}) - defer close(stop) - - dist := newRequestDistributor(nil, &mclock.System{}) - var peers [testDistPeerCount]*testDistPeer - for i := range peers { - peers[i] = &testDistPeer{} - go peers[i].worker(t, !resend, stop) - dist.registerTestPeer(peers[i]) - } - // Disable the mechanism that we will wait a few time for request - // even there is no suitable peer to send right now. - waitForPeers = 0 - - var wg sync.WaitGroup - - for i := 1; i <= testDistReqCount; i++ { - cost := uint64(rand.Int63n(testDistMaxCost)) - procTime := uint64(rand.Int63n(int64(cost + 1))) - rq := &testDistReq{ - cost: cost, - procTime: procTime, - order: uint64(i), - canSendTo: make(map[*testDistPeer]struct{}), - } - for _, peer := range peers { - if rand.Intn(2) != 0 { - rq.canSendTo[peer] = struct{}{} - } - } - - wg.Add(1) - req := &distReq{ - getCost: rq.getCost, - canSend: rq.canSend, - request: rq.request, - } - chn := dist.queue(req) - go func() { - cnt := 1 - if resend && len(rq.canSendTo) != 0 { - cnt = rand.Intn(testDistMaxResendCount) + 1 - } - for i := 0; i < cnt; i++ { - if i != 0 { - chn = dist.queue(req) - } - p := <-chn - if p == nil { - if len(rq.canSendTo) != 0 { - t.Errorf("Request that could have been sent was dropped") - } - } else { - peer := p.(*testDistPeer) - if _, ok := rq.canSendTo[peer]; !ok { - t.Errorf("Request sent to wrong peer") - } - } - } - wg.Done() - }() - if rand.Intn(1000) == 0 { - time.Sleep(time.Duration(rand.Intn(5000000))) - } - } - - wg.Wait() -} diff --git a/les/enr_entry.go b/les/enr_entry.go deleted file mode 100644 index 307313fb10..0000000000 --- a/les/enr_entry.go +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "github.com/ethereum/go-ethereum/core/forkid" - "github.com/ethereum/go-ethereum/p2p/dnsdisc" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/rlp" -) - -// lesEntry is the "les" ENR entry. This is set for LES servers only. -type lesEntry struct { - // Ignore additional fields (for forward compatibility). - VfxVersion uint - Rest []rlp.RawValue `rlp:"tail"` -} - -func (lesEntry) ENRKey() string { return "les" } - -// ethEntry is the "eth" ENR entry. This is redeclared here to avoid depending on package eth. -type ethEntry struct { - ForkID forkid.ID - Tail []rlp.RawValue `rlp:"tail"` -} - -func (ethEntry) ENRKey() string { return "eth" } - -// setupDiscovery creates the node discovery source for the eth protocol. -func (eth *LightEthereum) setupDiscovery() (enode.Iterator, error) { - it := enode.NewFairMix(0) - - // Enable DNS discovery. - if len(eth.config.EthDiscoveryURLs) != 0 { - client := dnsdisc.NewClient(dnsdisc.Config{}) - dns, err := client.NewIterator(eth.config.EthDiscoveryURLs...) - if err != nil { - return nil, err - } - it.AddSource(dns) - } - - // Enable DHT. - if eth.udpEnabled { - it.AddSource(eth.p2pServer.DiscV5.RandomNodes()) - } - - forkFilter := forkid.NewFilter(eth.blockchain) - iterator := enode.Filter(it, func(n *enode.Node) bool { return nodeIsServer(forkFilter, n) }) - return iterator, nil -} - -// nodeIsServer checks whether n is an LES server node. -func nodeIsServer(forkFilter forkid.Filter, n *enode.Node) bool { - var les lesEntry - var eth ethEntry - return n.Load(&les) == nil && n.Load(ð) == nil && forkFilter(eth.ForkID) == nil -} diff --git a/les/flowcontrol/control.go b/les/flowcontrol/control.go deleted file mode 100644 index 76a241fa5a..0000000000 --- a/les/flowcontrol/control.go +++ /dev/null @@ -1,433 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -// Package flowcontrol implements a client side flow control mechanism -package flowcontrol - -import ( - "fmt" - "math" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/log" -) - -const ( - // fcTimeConst is the time constant applied for MinRecharge during linear - // buffer recharge period - fcTimeConst = time.Millisecond - // DecParamDelay is applied at server side when decreasing capacity in order to - // avoid a buffer underrun error due to requests sent by the client before - // receiving the capacity update announcement - DecParamDelay = time.Second * 2 - // keepLogs is the duration of keeping logs; logging is not used if zero - keepLogs = 0 -) - -// ServerParams are the flow control parameters specified by a server for a client -// -// Note: a server can assign different amounts of capacity to each client by giving -// different parameters to them. -type ServerParams struct { - BufLimit, MinRecharge uint64 -} - -// scheduledUpdate represents a delayed flow control parameter update -type scheduledUpdate struct { - time mclock.AbsTime - params ServerParams -} - -// ClientNode is the flow control system's representation of a client -// (used in server mode only) -type ClientNode struct { - params ServerParams - bufValue int64 - lastTime mclock.AbsTime - updateSchedule []scheduledUpdate - sumCost uint64 // sum of req costs received from this client - accepted map[uint64]uint64 // value = sumCost after accepting the given req - connected bool - lock sync.Mutex - cm *ClientManager - log *logger - cmNodeFields -} - -// NewClientNode returns a new ClientNode -func NewClientNode(cm *ClientManager, params ServerParams) *ClientNode { - node := &ClientNode{ - cm: cm, - params: params, - bufValue: int64(params.BufLimit), - lastTime: cm.clock.Now(), - accepted: make(map[uint64]uint64), - connected: true, - } - if keepLogs > 0 { - node.log = newLogger(keepLogs) - } - cm.connect(node) - return node -} - -// Disconnect should be called when a client is disconnected -func (node *ClientNode) Disconnect() { - node.lock.Lock() - defer node.lock.Unlock() - - node.connected = false - node.cm.disconnect(node) -} - -// BufferStatus returns the current buffer value and limit -func (node *ClientNode) BufferStatus() (uint64, uint64) { - node.lock.Lock() - defer node.lock.Unlock() - - if !node.connected { - return 0, 0 - } - now := node.cm.clock.Now() - node.update(now) - node.cm.updateBuffer(node, 0, now) - bv := node.bufValue - if bv < 0 { - bv = 0 - } - return uint64(bv), node.params.BufLimit -} - -// OneTimeCost subtracts the given amount from the node's buffer. -// -// Note: this call can take the buffer into the negative region internally. -// In this case zero buffer value is returned by exported calls and no requests -// are accepted. -func (node *ClientNode) OneTimeCost(cost uint64) { - node.lock.Lock() - defer node.lock.Unlock() - - now := node.cm.clock.Now() - node.update(now) - node.bufValue -= int64(cost) - node.cm.updateBuffer(node, -int64(cost), now) -} - -// Freeze notifies the client manager about a client freeze event in which case -// the total capacity allowance is slightly reduced. -func (node *ClientNode) Freeze() { - node.lock.Lock() - frozenCap := node.params.MinRecharge - node.lock.Unlock() - node.cm.reduceTotalCapacity(frozenCap) -} - -// update recalculates the buffer value at a specified time while also performing -// scheduled flow control parameter updates if necessary -func (node *ClientNode) update(now mclock.AbsTime) { - for len(node.updateSchedule) > 0 && node.updateSchedule[0].time <= now { - node.recalcBV(node.updateSchedule[0].time) - node.updateParams(node.updateSchedule[0].params, now) - node.updateSchedule = node.updateSchedule[1:] - } - node.recalcBV(now) -} - -// recalcBV recalculates the buffer value at a specified time -func (node *ClientNode) recalcBV(now mclock.AbsTime) { - dt := uint64(now - node.lastTime) - if now < node.lastTime { - dt = 0 - } - node.bufValue += int64(node.params.MinRecharge * dt / uint64(fcTimeConst)) - if node.bufValue > int64(node.params.BufLimit) { - node.bufValue = int64(node.params.BufLimit) - } - if node.log != nil { - node.log.add(now, fmt.Sprintf("updated bv=%d MRR=%d BufLimit=%d", node.bufValue, node.params.MinRecharge, node.params.BufLimit)) - } - node.lastTime = now -} - -// UpdateParams updates the flow control parameters of a client node -func (node *ClientNode) UpdateParams(params ServerParams) { - node.lock.Lock() - defer node.lock.Unlock() - - now := node.cm.clock.Now() - node.update(now) - if params.MinRecharge >= node.params.MinRecharge { - node.updateSchedule = nil - node.updateParams(params, now) - } else { - for i, s := range node.updateSchedule { - if params.MinRecharge >= s.params.MinRecharge { - s.params = params - node.updateSchedule = node.updateSchedule[:i+1] - return - } - } - node.updateSchedule = append(node.updateSchedule, scheduledUpdate{time: now.Add(DecParamDelay), params: params}) - } -} - -// updateParams updates the flow control parameters of the node -func (node *ClientNode) updateParams(params ServerParams, now mclock.AbsTime) { - diff := int64(params.BufLimit - node.params.BufLimit) - if diff > 0 { - node.bufValue += diff - } else if node.bufValue > int64(params.BufLimit) { - node.bufValue = int64(params.BufLimit) - } - node.cm.updateParams(node, params, now) -} - -// AcceptRequest returns whether a new request can be accepted and the missing -// buffer amount if it was rejected due to a buffer underrun. If accepted, maxCost -// is deducted from the flow control buffer. -func (node *ClientNode) AcceptRequest(reqID, index, maxCost uint64) (accepted bool, bufShort uint64, priority int64) { - node.lock.Lock() - defer node.lock.Unlock() - - now := node.cm.clock.Now() - node.update(now) - if int64(maxCost) > node.bufValue { - if node.log != nil { - node.log.add(now, fmt.Sprintf("rejected reqID=%d bv=%d maxCost=%d", reqID, node.bufValue, maxCost)) - node.log.dump(now) - } - return false, maxCost - uint64(node.bufValue), 0 - } - node.bufValue -= int64(maxCost) - node.sumCost += maxCost - if node.log != nil { - node.log.add(now, fmt.Sprintf("accepted reqID=%d bv=%d maxCost=%d sumCost=%d", reqID, node.bufValue, maxCost, node.sumCost)) - } - node.accepted[index] = node.sumCost - return true, 0, node.cm.accepted(node, maxCost, now) -} - -// RequestProcessed should be called when the request has been processed -func (node *ClientNode) RequestProcessed(reqID, index, maxCost, realCost uint64) uint64 { - node.lock.Lock() - defer node.lock.Unlock() - - now := node.cm.clock.Now() - node.update(now) - node.cm.processed(node, maxCost, realCost, now) - bv := node.bufValue + int64(node.sumCost-node.accepted[index]) - if node.log != nil { - node.log.add(now, fmt.Sprintf("processed reqID=%d bv=%d maxCost=%d realCost=%d sumCost=%d oldSumCost=%d reportedBV=%d", reqID, node.bufValue, maxCost, realCost, node.sumCost, node.accepted[index], bv)) - } - delete(node.accepted, index) - if bv < 0 { - return 0 - } - return uint64(bv) -} - -// ServerNode is the flow control system's representation of a server -// (used in client mode only) -type ServerNode struct { - clock mclock.Clock - bufEstimate uint64 - bufRecharge bool - lastTime mclock.AbsTime - params ServerParams - sumCost uint64 // sum of req costs sent to this server - pending map[uint64]uint64 // value = sumCost after sending the given req - log *logger - lock sync.RWMutex -} - -// NewServerNode returns a new ServerNode -func NewServerNode(params ServerParams, clock mclock.Clock) *ServerNode { - node := &ServerNode{ - clock: clock, - bufEstimate: params.BufLimit, - bufRecharge: false, - lastTime: clock.Now(), - params: params, - pending: make(map[uint64]uint64), - } - if keepLogs > 0 { - node.log = newLogger(keepLogs) - } - return node -} - -// UpdateParams updates the flow control parameters of the node -func (node *ServerNode) UpdateParams(params ServerParams) { - node.lock.Lock() - defer node.lock.Unlock() - - node.recalcBLE(mclock.Now()) - if params.BufLimit > node.params.BufLimit { - node.bufEstimate += params.BufLimit - node.params.BufLimit - } else { - if node.bufEstimate > params.BufLimit { - node.bufEstimate = params.BufLimit - } - } - node.params = params -} - -// recalcBLE recalculates the lowest estimate for the client's buffer value at -// the given server at the specified time -func (node *ServerNode) recalcBLE(now mclock.AbsTime) { - if now < node.lastTime { - return - } - if node.bufRecharge { - dt := uint64(now - node.lastTime) - node.bufEstimate += node.params.MinRecharge * dt / uint64(fcTimeConst) - if node.bufEstimate >= node.params.BufLimit { - node.bufEstimate = node.params.BufLimit - node.bufRecharge = false - } - } - node.lastTime = now - if node.log != nil { - node.log.add(now, fmt.Sprintf("updated bufEst=%d MRR=%d BufLimit=%d", node.bufEstimate, node.params.MinRecharge, node.params.BufLimit)) - } -} - -// safetyMargin is added to the flow control waiting time when estimated buffer value is low -const safetyMargin = time.Millisecond - -// CanSend returns the minimum waiting time required before sending a request -// with the given maximum estimated cost. Second return value is the relative -// estimated buffer level after sending the request (divided by BufLimit). -func (node *ServerNode) CanSend(maxCost uint64) (time.Duration, float64) { - node.lock.RLock() - defer node.lock.RUnlock() - - if node.params.BufLimit == 0 { - return time.Duration(math.MaxInt64), 0 - } - now := node.clock.Now() - node.recalcBLE(now) - maxCost += uint64(safetyMargin) * node.params.MinRecharge / uint64(fcTimeConst) - if maxCost > node.params.BufLimit { - maxCost = node.params.BufLimit - } - if node.bufEstimate >= maxCost { - relBuf := float64(node.bufEstimate-maxCost) / float64(node.params.BufLimit) - if node.log != nil { - node.log.add(now, fmt.Sprintf("canSend bufEst=%d maxCost=%d true relBuf=%f", node.bufEstimate, maxCost, relBuf)) - } - return 0, relBuf - } - timeLeft := time.Duration((maxCost - node.bufEstimate) * uint64(fcTimeConst) / node.params.MinRecharge) - if node.log != nil { - node.log.add(now, fmt.Sprintf("canSend bufEst=%d maxCost=%d false timeLeft=%v", node.bufEstimate, maxCost, timeLeft)) - } - return timeLeft, 0 -} - -// QueuedRequest should be called when the request has been assigned to the given -// server node, before putting it in the send queue. It is mandatory that requests -// are sent in the same order as the QueuedRequest calls are made. -func (node *ServerNode) QueuedRequest(reqID, maxCost uint64) { - node.lock.Lock() - defer node.lock.Unlock() - - now := node.clock.Now() - node.recalcBLE(now) - // Note: we do not know when requests actually arrive to the server so bufRecharge - // is not turned on here if buffer was full; in this case it is going to be turned - // on by the first reply's bufValue feedback - if node.bufEstimate >= maxCost { - node.bufEstimate -= maxCost - } else { - log.Error("Queued request with insufficient buffer estimate") - node.bufEstimate = 0 - } - node.sumCost += maxCost - node.pending[reqID] = node.sumCost - if node.log != nil { - node.log.add(now, fmt.Sprintf("queued reqID=%d bufEst=%d maxCost=%d sumCost=%d", reqID, node.bufEstimate, maxCost, node.sumCost)) - } -} - -// ReceivedReply adjusts estimated buffer value according to the value included in -// the latest request reply. -func (node *ServerNode) ReceivedReply(reqID, bv uint64) { - node.lock.Lock() - defer node.lock.Unlock() - - now := node.clock.Now() - node.recalcBLE(now) - if bv > node.params.BufLimit { - bv = node.params.BufLimit - } - sc, ok := node.pending[reqID] - if !ok { - return - } - delete(node.pending, reqID) - cc := node.sumCost - sc - newEstimate := uint64(0) - if bv > cc { - newEstimate = bv - cc - } - if newEstimate > node.bufEstimate { - // Note: we never reduce the buffer estimate based on the reported value because - // this can only happen because of the delayed delivery of the latest reply. - // The lowest estimate based on the previous reply can still be considered valid. - node.bufEstimate = newEstimate - } - - node.bufRecharge = node.bufEstimate < node.params.BufLimit - node.lastTime = now - if node.log != nil { - node.log.add(now, fmt.Sprintf("received reqID=%d bufEst=%d reportedBv=%d sumCost=%d oldSumCost=%d", reqID, node.bufEstimate, bv, node.sumCost, sc)) - } -} - -// ResumeFreeze cleans all pending requests and sets the buffer estimate to the -// reported value after resuming from a frozen state -func (node *ServerNode) ResumeFreeze(bv uint64) { - node.lock.Lock() - defer node.lock.Unlock() - - for reqID := range node.pending { - delete(node.pending, reqID) - } - now := node.clock.Now() - node.recalcBLE(now) - if bv > node.params.BufLimit { - bv = node.params.BufLimit - } - node.bufEstimate = bv - node.bufRecharge = node.bufEstimate < node.params.BufLimit - node.lastTime = now - if node.log != nil { - node.log.add(now, fmt.Sprintf("unfreeze bv=%d sumCost=%d", bv, node.sumCost)) - } -} - -// DumpLogs dumps the event log if logging is used -func (node *ServerNode) DumpLogs() { - node.lock.Lock() - defer node.lock.Unlock() - - if node.log != nil { - node.log.dump(node.clock.Now()) - } -} diff --git a/les/flowcontrol/logger.go b/les/flowcontrol/logger.go deleted file mode 100644 index 428d7fbf22..0000000000 --- a/les/flowcontrol/logger.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package flowcontrol - -import ( - "fmt" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" -) - -// logger collects events in string format and discards events older than the -// "keep" parameter -type logger struct { - events map[uint64]logEvent - writePtr, delPtr uint64 - keep time.Duration -} - -// logEvent describes a single event -type logEvent struct { - time mclock.AbsTime - event string -} - -// newLogger creates a new logger -func newLogger(keep time.Duration) *logger { - return &logger{ - events: make(map[uint64]logEvent), - keep: keep, - } -} - -// add adds a new event and discards old events if possible -func (l *logger) add(now mclock.AbsTime, event string) { - keepAfter := now - mclock.AbsTime(l.keep) - for l.delPtr < l.writePtr && l.events[l.delPtr].time <= keepAfter { - delete(l.events, l.delPtr) - l.delPtr++ - } - l.events[l.writePtr] = logEvent{now, event} - l.writePtr++ -} - -// dump prints all stored events -func (l *logger) dump(now mclock.AbsTime) { - for i := l.delPtr; i < l.writePtr; i++ { - e := l.events[i] - fmt.Println(time.Duration(e.time-now), e.event) - } -} diff --git a/les/flowcontrol/manager.go b/les/flowcontrol/manager.go deleted file mode 100644 index b7cc9bd903..0000000000 --- a/les/flowcontrol/manager.go +++ /dev/null @@ -1,476 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package flowcontrol - -import ( - "fmt" - "math" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/common/prque" -) - -// cmNodeFields are ClientNode fields used by the client manager -// Note: these fields are locked by the client manager's mutex -type cmNodeFields struct { - corrBufValue int64 // buffer value adjusted with the extra recharge amount - rcLastIntValue int64 // past recharge integrator value when corrBufValue was last updated - rcFullIntValue int64 // future recharge integrator value when corrBufValue will reach maximum - queueIndex int // position in the recharge queue (-1 if not queued) -} - -// FixedPointMultiplier is applied to the recharge integrator and the recharge curve. -// -// Note: fixed point arithmetic is required for the integrator because it is a -// constantly increasing value that can wrap around int64 limits (which behavior is -// also supported by the priority queue). A floating point value would gradually lose -// precision in this application. -// The recharge curve and all recharge values are encoded as fixed point because -// sumRecharge is frequently updated by adding or subtracting individual recharge -// values and perfect precision is required. -const FixedPointMultiplier = 1000000 - -var ( - capacityDropFactor = 0.1 - capacityRaiseTC = 1 / (3 * float64(time.Hour)) // time constant for raising the capacity factor - capacityRaiseThresholdRatio = 1.125 // total/connected capacity ratio threshold for raising the capacity factor -) - -// ClientManager controls the capacity assigned to the clients of a server. -// Since ServerParams guarantee a safe lower estimate for processable requests -// even in case of all clients being active, ClientManager calculates a -// corrugated buffer value and usually allows a higher remaining buffer value -// to be returned with each reply. -type ClientManager struct { - clock mclock.Clock - lock sync.Mutex - stop chan chan struct{} - - curve PieceWiseLinear - sumRecharge, totalRecharge, totalConnected uint64 - logTotalCap, totalCapacity float64 - logTotalCapRaiseLimit float64 - minLogTotalCap, maxLogTotalCap float64 - capacityRaiseThreshold uint64 - capLastUpdate mclock.AbsTime - totalCapacityCh chan uint64 - - // recharge integrator is increasing in each moment with a rate of - // (totalRecharge / sumRecharge)*FixedPointMultiplier or 0 if sumRecharge==0 - rcLastUpdate mclock.AbsTime // last time the recharge integrator was updated - rcLastIntValue int64 // last updated value of the recharge integrator - priorityOffset int64 // offset for prque priority values ensures that all priorities stay in the int64 range - // recharge queue is a priority queue with currently recharging client nodes - // as elements. The priority value is rcFullIntValue which allows to quickly - // determine which client will first finish recharge. - rcQueue *prque.Prque[int64, *ClientNode] -} - -// NewClientManager returns a new client manager. -// Client manager enhances flow control performance by allowing client buffers -// to recharge quicker than the minimum guaranteed recharge rate if possible. -// The sum of all minimum recharge rates (sumRecharge) is updated each time -// a clients starts or finishes buffer recharging. Then an adjusted total -// recharge rate is calculated using a piecewise linear recharge curve: -// -// totalRecharge = curve(sumRecharge) -// (totalRecharge >= sumRecharge is enforced) -// -// Then the "bonus" buffer recharge is distributed between currently recharging -// clients proportionally to their minimum recharge rates. -// -// Note: total recharge is proportional to the average number of parallel running -// serving threads. A recharge value of 1000000 corresponds to one thread in average. -// The maximum number of allowed serving threads should always be considerably -// higher than the targeted average number. -// -// Note 2: although it is possible to specify a curve allowing the total target -// recharge starting from zero sumRecharge, it makes sense to add a linear ramp -// starting from zero in order to not let a single low-priority client use up -// the entire server capacity and thus ensure quick availability for others at -// any moment. -func NewClientManager(curve PieceWiseLinear, clock mclock.Clock) *ClientManager { - cm := &ClientManager{ - clock: clock, - rcQueue: prque.New[int64, *ClientNode](func(a *ClientNode, i int) { a.queueIndex = i }), - capLastUpdate: clock.Now(), - stop: make(chan chan struct{}), - } - if curve != nil { - cm.SetRechargeCurve(curve) - } - go func() { - // regularly recalculate and update total capacity - for { - select { - case <-time.After(time.Minute): - cm.lock.Lock() - cm.updateTotalCapacity(cm.clock.Now(), true) - cm.lock.Unlock() - case stop := <-cm.stop: - close(stop) - return - } - } - }() - return cm -} - -// Stop stops the client manager -func (cm *ClientManager) Stop() { - stop := make(chan struct{}) - cm.stop <- stop - <-stop -} - -// SetRechargeCurve updates the recharge curve -func (cm *ClientManager) SetRechargeCurve(curve PieceWiseLinear) { - cm.lock.Lock() - defer cm.lock.Unlock() - - now := cm.clock.Now() - cm.updateRecharge(now) - cm.curve = curve - if len(curve) > 0 { - cm.totalRecharge = curve[len(curve)-1].Y - } else { - cm.totalRecharge = 0 - } -} - -// SetCapacityLimits sets a threshold value used for raising capFactor. -// Either if the difference between total allowed and connected capacity is less -// than this threshold or if their ratio is less than capacityRaiseThresholdRatio -// then capFactor is allowed to slowly raise. -func (cm *ClientManager) SetCapacityLimits(min, max, raiseThreshold uint64) { - if min < 1 { - min = 1 - } - cm.minLogTotalCap = math.Log(float64(min)) - if max < 1 { - max = 1 - } - cm.maxLogTotalCap = math.Log(float64(max)) - cm.logTotalCap = cm.maxLogTotalCap - cm.capacityRaiseThreshold = raiseThreshold - cm.refreshCapacity() -} - -// connect should be called when a client is connected, before passing it to any -// other ClientManager function -func (cm *ClientManager) connect(node *ClientNode) { - cm.lock.Lock() - defer cm.lock.Unlock() - - now := cm.clock.Now() - cm.updateRecharge(now) - node.corrBufValue = int64(node.params.BufLimit) - node.rcLastIntValue = cm.rcLastIntValue - node.queueIndex = -1 - cm.updateTotalCapacity(now, true) - cm.totalConnected += node.params.MinRecharge - cm.updateRaiseLimit() -} - -// disconnect should be called when a client is disconnected -func (cm *ClientManager) disconnect(node *ClientNode) { - cm.lock.Lock() - defer cm.lock.Unlock() - - now := cm.clock.Now() - cm.updateRecharge(cm.clock.Now()) - cm.updateTotalCapacity(now, true) - cm.totalConnected -= node.params.MinRecharge - cm.updateRaiseLimit() -} - -// accepted is called when a request with given maximum cost is accepted. -// It returns a priority indicator for the request which is used to determine placement -// in the serving queue. Older requests have higher priority by default. If the client -// is almost out of buffer, request priority is reduced. -func (cm *ClientManager) accepted(node *ClientNode, maxCost uint64, now mclock.AbsTime) (priority int64) { - cm.lock.Lock() - defer cm.lock.Unlock() - - cm.updateNodeRc(node, -int64(maxCost), &node.params, now) - rcTime := (node.params.BufLimit - uint64(node.corrBufValue)) * FixedPointMultiplier / node.params.MinRecharge - return -int64(now) - int64(rcTime) -} - -// processed updates the client buffer according to actual request cost after -// serving has been finished. -// -// Note: processed should always be called for all accepted requests -func (cm *ClientManager) processed(node *ClientNode, maxCost, realCost uint64, now mclock.AbsTime) { - if realCost > maxCost { - realCost = maxCost - } - cm.updateBuffer(node, int64(maxCost-realCost), now) -} - -// updateBuffer recalculates the corrected buffer value, adds the given value to it -// and updates the node's actual buffer value if possible -func (cm *ClientManager) updateBuffer(node *ClientNode, add int64, now mclock.AbsTime) { - cm.lock.Lock() - defer cm.lock.Unlock() - - cm.updateNodeRc(node, add, &node.params, now) - if node.corrBufValue > node.bufValue { - if node.log != nil { - node.log.add(now, fmt.Sprintf("corrected bv=%d oldBv=%d", node.corrBufValue, node.bufValue)) - } - node.bufValue = node.corrBufValue - } -} - -// updateParams updates the flow control parameters of a client node -func (cm *ClientManager) updateParams(node *ClientNode, params ServerParams, now mclock.AbsTime) { - cm.lock.Lock() - defer cm.lock.Unlock() - - cm.updateRecharge(now) - cm.updateTotalCapacity(now, true) - cm.totalConnected += params.MinRecharge - node.params.MinRecharge - cm.updateRaiseLimit() - cm.updateNodeRc(node, 0, ¶ms, now) -} - -// updateRaiseLimit recalculates the limiting value until which logTotalCap -// can be raised when no client freeze events occur -func (cm *ClientManager) updateRaiseLimit() { - if cm.capacityRaiseThreshold == 0 { - cm.logTotalCapRaiseLimit = 0 - return - } - limit := float64(cm.totalConnected + cm.capacityRaiseThreshold) - limit2 := float64(cm.totalConnected) * capacityRaiseThresholdRatio - if limit2 > limit { - limit = limit2 - } - if limit < 1 { - limit = 1 - } - cm.logTotalCapRaiseLimit = math.Log(limit) -} - -// updateRecharge updates the recharge integrator and checks the recharge queue -// for nodes with recently filled buffers -func (cm *ClientManager) updateRecharge(now mclock.AbsTime) { - lastUpdate := cm.rcLastUpdate - cm.rcLastUpdate = now - // updating is done in multiple steps if node buffers are filled and sumRecharge - // is decreased before the given target time - for cm.sumRecharge > 0 { - sumRecharge := cm.sumRecharge - if sumRecharge > cm.totalRecharge { - sumRecharge = cm.totalRecharge - } - bonusRatio := float64(1) - v := cm.curve.ValueAt(sumRecharge) - s := float64(sumRecharge) - if v > s && s > 0 { - bonusRatio = v / s - } - dt := now - lastUpdate - // fetch the client that finishes first - rcqNode := cm.rcQueue.PopItem() // if sumRecharge > 0 then the queue cannot be empty - // check whether it has already finished - dtNext := mclock.AbsTime(float64(rcqNode.rcFullIntValue-cm.rcLastIntValue) / bonusRatio) - if dt < dtNext { - // not finished yet, put it back, update integrator according - // to current bonusRatio and return - cm.addToQueue(rcqNode) - cm.rcLastIntValue += int64(bonusRatio * float64(dt)) - return - } - lastUpdate += dtNext - // finished recharging, update corrBufValue and sumRecharge if necessary and do next step - if rcqNode.corrBufValue < int64(rcqNode.params.BufLimit) { - rcqNode.corrBufValue = int64(rcqNode.params.BufLimit) - cm.sumRecharge -= rcqNode.params.MinRecharge - } - cm.rcLastIntValue = rcqNode.rcFullIntValue - } -} - -func (cm *ClientManager) addToQueue(node *ClientNode) { - if cm.priorityOffset-node.rcFullIntValue < -0x4000000000000000 { - cm.priorityOffset += 0x4000000000000000 - // recreate priority queue with new offset to avoid overflow; should happen very rarely - newRcQueue := prque.New[int64, *ClientNode](func(a *ClientNode, i int) { a.queueIndex = i }) - for cm.rcQueue.Size() > 0 { - n := cm.rcQueue.PopItem() - newRcQueue.Push(n, cm.priorityOffset-n.rcFullIntValue) - } - cm.rcQueue = newRcQueue - } - cm.rcQueue.Push(node, cm.priorityOffset-node.rcFullIntValue) -} - -// updateNodeRc updates a node's corrBufValue and adds an external correction value. -// It also adds or removes the rcQueue entry and updates ServerParams and sumRecharge if necessary. -func (cm *ClientManager) updateNodeRc(node *ClientNode, bvc int64, params *ServerParams, now mclock.AbsTime) { - cm.updateRecharge(now) - wasFull := true - if node.corrBufValue != int64(node.params.BufLimit) { - wasFull = false - node.corrBufValue += (cm.rcLastIntValue - node.rcLastIntValue) * int64(node.params.MinRecharge) / FixedPointMultiplier - if node.corrBufValue > int64(node.params.BufLimit) { - node.corrBufValue = int64(node.params.BufLimit) - } - node.rcLastIntValue = cm.rcLastIntValue - } - node.corrBufValue += bvc - diff := int64(params.BufLimit - node.params.BufLimit) - if diff > 0 { - node.corrBufValue += diff - } - isFull := false - if node.corrBufValue >= int64(params.BufLimit) { - node.corrBufValue = int64(params.BufLimit) - isFull = true - } - if !wasFull { - cm.sumRecharge -= node.params.MinRecharge - } - if params != &node.params { - node.params = *params - } - if !isFull { - cm.sumRecharge += node.params.MinRecharge - if node.queueIndex != -1 { - cm.rcQueue.Remove(node.queueIndex) - } - node.rcLastIntValue = cm.rcLastIntValue - node.rcFullIntValue = cm.rcLastIntValue + (int64(node.params.BufLimit)-node.corrBufValue)*FixedPointMultiplier/int64(node.params.MinRecharge) - cm.addToQueue(node) - } -} - -// reduceTotalCapacity reduces the total capacity allowance in case of a client freeze event -func (cm *ClientManager) reduceTotalCapacity(frozenCap uint64) { - cm.lock.Lock() - defer cm.lock.Unlock() - - ratio := float64(1) - if frozenCap < cm.totalConnected { - ratio = float64(frozenCap) / float64(cm.totalConnected) - } - now := cm.clock.Now() - cm.updateTotalCapacity(now, false) - cm.logTotalCap -= capacityDropFactor * ratio - if cm.logTotalCap < cm.minLogTotalCap { - cm.logTotalCap = cm.minLogTotalCap - } - cm.updateTotalCapacity(now, true) -} - -// updateTotalCapacity updates the total capacity factor. The capacity factor allows -// the total capacity of the system to go over the allowed total recharge value -// if clients go to frozen state sufficiently rarely. -// The capacity factor is dropped instantly by a small amount if a clients is frozen. -// It is raised slowly (with a large time constant) if the total connected capacity -// is close to the total allowed amount and no clients are frozen. -func (cm *ClientManager) updateTotalCapacity(now mclock.AbsTime, refresh bool) { - dt := now - cm.capLastUpdate - cm.capLastUpdate = now - - if cm.logTotalCap < cm.logTotalCapRaiseLimit { - cm.logTotalCap += capacityRaiseTC * float64(dt) - if cm.logTotalCap > cm.logTotalCapRaiseLimit { - cm.logTotalCap = cm.logTotalCapRaiseLimit - } - } - if cm.logTotalCap > cm.maxLogTotalCap { - cm.logTotalCap = cm.maxLogTotalCap - } - if refresh { - cm.refreshCapacity() - } -} - -// refreshCapacity recalculates the total capacity value and sends an update to the subscription -// channel if the relative change of the value since the last update is more than 0.1 percent -func (cm *ClientManager) refreshCapacity() { - totalCapacity := math.Exp(cm.logTotalCap) - if totalCapacity >= cm.totalCapacity*0.999 && totalCapacity <= cm.totalCapacity*1.001 { - return - } - cm.totalCapacity = totalCapacity - if cm.totalCapacityCh != nil { - select { - case cm.totalCapacityCh <- uint64(cm.totalCapacity): - default: - } - } -} - -// SubscribeTotalCapacity returns all future updates to the total capacity value -// through a channel and also returns the current value -func (cm *ClientManager) SubscribeTotalCapacity(ch chan uint64) uint64 { - cm.lock.Lock() - defer cm.lock.Unlock() - - cm.totalCapacityCh = ch - return uint64(cm.totalCapacity) -} - -// PieceWiseLinear is used to describe recharge curves -type PieceWiseLinear []struct{ X, Y uint64 } - -// ValueAt returns the curve's value at a given point -func (pwl PieceWiseLinear) ValueAt(x uint64) float64 { - l := 0 - h := len(pwl) - if h == 0 { - return 0 - } - for h != l { - m := (l + h) / 2 - if x > pwl[m].X { - l = m + 1 - } else { - h = m - } - } - if l == 0 { - return float64(pwl[0].Y) - } - l-- - if h == len(pwl) { - return float64(pwl[l].Y) - } - dx := pwl[h].X - pwl[l].X - if dx < 1 { - return float64(pwl[l].Y) - } - return float64(pwl[l].Y) + float64(pwl[h].Y-pwl[l].Y)*float64(x-pwl[l].X)/float64(dx) -} - -// Valid returns true if the X coordinates of the curve points are non-strictly monotonic -func (pwl PieceWiseLinear) Valid() bool { - var lastX uint64 - for _, i := range pwl { - if i.X < lastX { - return false - } - lastX = i.X - } - return true -} diff --git a/les/flowcontrol/manager_test.go b/les/flowcontrol/manager_test.go deleted file mode 100644 index 3afc31272f..0000000000 --- a/les/flowcontrol/manager_test.go +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package flowcontrol - -import ( - "math" - "math/rand" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" -) - -type testNode struct { - node *ClientNode - bufLimit, capacity uint64 - waitUntil mclock.AbsTime - index, totalCost uint64 -} - -const ( - testMaxCost = 1000000 - testLength = 100000 -) - -// testConstantTotalCapacity simulates multiple request sender nodes and verifies -// whether the total amount of served requests matches the expected value based on -// the total capacity and the duration of the test. -// Some nodes are sending requests occasionally so that their buffer should regularly -// reach the maximum while other nodes (the "max capacity nodes") are sending at the -// maximum permitted rate. The max capacity nodes are changed multiple times during -// a single test. -func TestConstantTotalCapacity(t *testing.T) { - testConstantTotalCapacity(t, 10, 1, 0, false) - testConstantTotalCapacity(t, 10, 1, 1, false) - testConstantTotalCapacity(t, 30, 1, 0, false) - testConstantTotalCapacity(t, 30, 2, 3, false) - testConstantTotalCapacity(t, 100, 1, 0, false) - testConstantTotalCapacity(t, 100, 3, 5, false) - testConstantTotalCapacity(t, 100, 5, 10, false) - testConstantTotalCapacity(t, 100, 3, 5, true) -} - -func testConstantTotalCapacity(t *testing.T, nodeCount, maxCapacityNodes, randomSend int, priorityOverflow bool) { - clock := &mclock.Simulated{} - nodes := make([]*testNode, nodeCount) - var totalCapacity uint64 - for i := range nodes { - nodes[i] = &testNode{capacity: uint64(50000 + rand.Intn(100000))} - totalCapacity += nodes[i].capacity - } - m := NewClientManager(PieceWiseLinear{{0, totalCapacity}}, clock) - if priorityOverflow { - // provoke a situation where rcLastUpdate overflow needs to be handled - m.rcLastIntValue = math.MaxInt64 - 10000000000 - } - for _, n := range nodes { - n.bufLimit = n.capacity * 6000 - n.node = NewClientNode(m, ServerParams{BufLimit: n.bufLimit, MinRecharge: n.capacity}) - } - maxNodes := make([]int, maxCapacityNodes) - for i := range maxNodes { - // we don't care if some indexes are selected multiple times - // in that case we have fewer max nodes - maxNodes[i] = rand.Intn(nodeCount) - } - - var sendCount int - for i := 0; i < testLength; i++ { - now := clock.Now() - for _, idx := range maxNodes { - for nodes[idx].send(t, now) { - } - } - if rand.Intn(testLength) < maxCapacityNodes*3 { - maxNodes[rand.Intn(maxCapacityNodes)] = rand.Intn(nodeCount) - } - - sendCount += randomSend - failCount := randomSend * 10 - for sendCount > 0 && failCount > 0 { - if nodes[rand.Intn(nodeCount)].send(t, now) { - sendCount-- - } else { - failCount-- - } - } - clock.Run(time.Millisecond) - } - - var totalCost uint64 - for _, n := range nodes { - totalCost += n.totalCost - } - ratio := float64(totalCost) / float64(totalCapacity) / testLength - if ratio < 0.98 || ratio > 1.02 { - t.Errorf("totalCost/totalCapacity/testLength ratio incorrect (expected: 1, got: %f)", ratio) - } -} - -func (n *testNode) send(t *testing.T, now mclock.AbsTime) bool { - if now < n.waitUntil { - return false - } - n.index++ - if ok, _, _ := n.node.AcceptRequest(0, n.index, testMaxCost); !ok { - t.Fatalf("Rejected request after expected waiting time has passed") - } - rcost := uint64(rand.Int63n(testMaxCost)) - bv := n.node.RequestProcessed(0, n.index, testMaxCost, rcost) - if bv < testMaxCost { - n.waitUntil = now + mclock.AbsTime((testMaxCost-bv)*1001000/n.capacity) - } - n.totalCost += rcost - return true -} diff --git a/les/handler_test.go b/les/handler_test.go deleted file mode 100644 index c803a5ddb3..0000000000 --- a/les/handler_test.go +++ /dev/null @@ -1,754 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "encoding/binary" - "math/big" - "math/rand" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/eth/downloader" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -func expectResponse(r p2p.MsgReader, msgcode, reqID, bv uint64, data interface{}) error { - type resp struct { - ReqID, BV uint64 - Data interface{} - } - return p2p.ExpectMsg(r, msgcode, resp{reqID, bv, data}) -} - -// Tests that block headers can be retrieved from a remote chain based on user queries. -func TestGetBlockHeadersLes2(t *testing.T) { testGetBlockHeaders(t, 2) } -func TestGetBlockHeadersLes3(t *testing.T) { testGetBlockHeaders(t, 3) } -func TestGetBlockHeadersLes4(t *testing.T) { testGetBlockHeaders(t, 4) } - -func testGetBlockHeaders(t *testing.T, protocol int) { - netconfig := testnetConfig{ - blocks: downloader.MaxHeaderFetch + 15, - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - bc := server.handler.blockchain - - // Create a "random" unknown hash for testing - var unknown common.Hash - for i := range unknown { - unknown[i] = byte(i) - } - // Create a batch of tests for various scenarios - limit := uint64(MaxHeaderFetch) - tests := []struct { - query *GetBlockHeadersData // The query to execute for header retrieval - expect []common.Hash // The hashes of the block whose headers are expected - }{ - // A single random block should be retrievable by hash and number too - { - &GetBlockHeadersData{Origin: hashOrNumber{Hash: bc.GetBlockByNumber(limit / 2).Hash()}, Amount: 1}, - []common.Hash{bc.GetBlockByNumber(limit / 2).Hash()}, - }, { - &GetBlockHeadersData{Origin: hashOrNumber{Number: limit / 2}, Amount: 1}, - []common.Hash{bc.GetBlockByNumber(limit / 2).Hash()}, - }, - // Multiple headers should be retrievable in both directions - { - &GetBlockHeadersData{Origin: hashOrNumber{Number: limit / 2}, Amount: 3}, - []common.Hash{ - bc.GetBlockByNumber(limit / 2).Hash(), - bc.GetBlockByNumber(limit/2 + 1).Hash(), - bc.GetBlockByNumber(limit/2 + 2).Hash(), - }, - }, { - &GetBlockHeadersData{Origin: hashOrNumber{Number: limit / 2}, Amount: 3, Reverse: true}, - []common.Hash{ - bc.GetBlockByNumber(limit / 2).Hash(), - bc.GetBlockByNumber(limit/2 - 1).Hash(), - bc.GetBlockByNumber(limit/2 - 2).Hash(), - }, - }, - // Multiple headers with skip lists should be retrievable - { - &GetBlockHeadersData{Origin: hashOrNumber{Number: limit / 2}, Skip: 3, Amount: 3}, - []common.Hash{ - bc.GetBlockByNumber(limit / 2).Hash(), - bc.GetBlockByNumber(limit/2 + 4).Hash(), - bc.GetBlockByNumber(limit/2 + 8).Hash(), - }, - }, { - &GetBlockHeadersData{Origin: hashOrNumber{Number: limit / 2}, Skip: 3, Amount: 3, Reverse: true}, - []common.Hash{ - bc.GetBlockByNumber(limit / 2).Hash(), - bc.GetBlockByNumber(limit/2 - 4).Hash(), - bc.GetBlockByNumber(limit/2 - 8).Hash(), - }, - }, - // The chain endpoints should be retrievable - { - &GetBlockHeadersData{Origin: hashOrNumber{Number: 0}, Amount: 1}, - []common.Hash{bc.GetBlockByNumber(0).Hash()}, - }, { - &GetBlockHeadersData{Origin: hashOrNumber{Number: bc.CurrentBlock().Number.Uint64()}, Amount: 1}, - []common.Hash{bc.CurrentBlock().Hash()}, - }, - // Ensure protocol limits are honored - //{ - // &GetBlockHeadersData{Origin: hashOrNumber{Number: bc.CurrentBlock().Number.Uint64()() - 1}, Amount: limit + 10, Reverse: true}, - // []common.Hash{}, - //}, - // Check that requesting more than available is handled gracefully - { - &GetBlockHeadersData{Origin: hashOrNumber{Number: bc.CurrentBlock().Number.Uint64() - 4}, Skip: 3, Amount: 3}, - []common.Hash{ - bc.GetBlockByNumber(bc.CurrentBlock().Number.Uint64() - 4).Hash(), - bc.GetBlockByNumber(bc.CurrentBlock().Number.Uint64()).Hash(), - }, - }, { - &GetBlockHeadersData{Origin: hashOrNumber{Number: 4}, Skip: 3, Amount: 3, Reverse: true}, - []common.Hash{ - bc.GetBlockByNumber(4).Hash(), - bc.GetBlockByNumber(0).Hash(), - }, - }, - // Check that requesting more than available is handled gracefully, even if mid skip - { - &GetBlockHeadersData{Origin: hashOrNumber{Number: bc.CurrentBlock().Number.Uint64() - 4}, Skip: 2, Amount: 3}, - []common.Hash{ - bc.GetBlockByNumber(bc.CurrentBlock().Number.Uint64() - 4).Hash(), - bc.GetBlockByNumber(bc.CurrentBlock().Number.Uint64() - 1).Hash(), - }, - }, { - &GetBlockHeadersData{Origin: hashOrNumber{Number: 4}, Skip: 2, Amount: 3, Reverse: true}, - []common.Hash{ - bc.GetBlockByNumber(4).Hash(), - bc.GetBlockByNumber(1).Hash(), - }, - }, - // Check that non existing headers aren't returned - { - &GetBlockHeadersData{Origin: hashOrNumber{Hash: unknown}, Amount: 1}, - []common.Hash{}, - }, { - &GetBlockHeadersData{Origin: hashOrNumber{Number: bc.CurrentBlock().Number.Uint64() + 1}, Amount: 1}, - []common.Hash{}, - }, - } - // Run each of the tests and verify the results against the chain - var reqID uint64 - for i, tt := range tests { - // Collect the headers to expect in the response - var headers []*types.Header - for _, hash := range tt.expect { - headers = append(headers, bc.GetHeaderByHash(hash)) - } - // Send the hash request and verify the response - reqID++ - - sendRequest(rawPeer.app, GetBlockHeadersMsg, reqID, tt.query) - if err := expectResponse(rawPeer.app, BlockHeadersMsg, reqID, testBufLimit, headers); err != nil { - t.Errorf("test %d: headers mismatch: %v", i, err) - } - } -} - -// Tests that block contents can be retrieved from a remote chain based on their hashes. -func TestGetBlockBodiesLes2(t *testing.T) { testGetBlockBodies(t, 2) } -func TestGetBlockBodiesLes3(t *testing.T) { testGetBlockBodies(t, 3) } -func TestGetBlockBodiesLes4(t *testing.T) { testGetBlockBodies(t, 4) } - -func testGetBlockBodies(t *testing.T, protocol int) { - netconfig := testnetConfig{ - blocks: downloader.MaxHeaderFetch + 15, - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - // Create a batch of tests for various scenarios - limit := MaxBodyFetch - tests := []struct { - random int // Number of blocks to fetch randomly from the chain - explicit []common.Hash // Explicitly requested blocks - available []bool // Availability of explicitly requested blocks - expected int // Total number of existing blocks to expect - }{ - {1, nil, nil, 1}, // A single random block should be retrievable - {10, nil, nil, 10}, // Multiple random blocks should be retrievable - {limit, nil, nil, limit}, // The maximum possible blocks should be retrievable - //{limit + 1, nil, nil, limit}, // No more than the possible block count should be returned - {0, []common.Hash{bc.Genesis().Hash()}, []bool{true}, 1}, // The genesis block should be retrievable - {0, []common.Hash{bc.CurrentBlock().Hash()}, []bool{true}, 1}, // The chains head block should be retrievable - {0, []common.Hash{{}}, []bool{false}, 0}, // A non existent block should not be returned - - // Existing and non-existing blocks interleaved should not cause problems - {0, []common.Hash{ - {}, - bc.GetBlockByNumber(1).Hash(), - {}, - bc.GetBlockByNumber(10).Hash(), - {}, - bc.GetBlockByNumber(100).Hash(), - {}, - }, []bool{false, true, false, true, false, true, false}, 3}, - } - // Run each of the tests and verify the results against the chain - var reqID uint64 - for i, tt := range tests { - // Collect the hashes to request, and the response to expect - var hashes []common.Hash - seen := make(map[int64]bool) - var bodies []*types.Body - - for j := 0; j < tt.random; j++ { - for { - num := rand.Int63n(int64(bc.CurrentBlock().Number.Uint64())) - if !seen[num] { - seen[num] = true - - block := bc.GetBlockByNumber(uint64(num)) - hashes = append(hashes, block.Hash()) - if len(bodies) < tt.expected { - bodies = append(bodies, &types.Body{Transactions: block.Transactions(), Uncles: block.Uncles()}) - } - break - } - } - } - for j, hash := range tt.explicit { - hashes = append(hashes, hash) - if tt.available[j] && len(bodies) < tt.expected { - block := bc.GetBlockByHash(hash) - bodies = append(bodies, &types.Body{Transactions: block.Transactions(), Uncles: block.Uncles()}) - } - } - reqID++ - - // Send the hash request and verify the response - sendRequest(rawPeer.app, GetBlockBodiesMsg, reqID, hashes) - if err := expectResponse(rawPeer.app, BlockBodiesMsg, reqID, testBufLimit, bodies); err != nil { - t.Errorf("test %d: bodies mismatch: %v", i, err) - } - } -} - -// Tests that the contract codes can be retrieved based on account addresses. -func TestGetCodeLes2(t *testing.T) { testGetCode(t, 2) } -func TestGetCodeLes3(t *testing.T) { testGetCode(t, 3) } -func TestGetCodeLes4(t *testing.T) { testGetCode(t, 4) } - -func testGetCode(t *testing.T, protocol int) { - // Assemble the test environment - netconfig := testnetConfig{ - blocks: 4, - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - var codereqs []*CodeReq - var codes [][]byte - for i := uint64(0); i <= bc.CurrentBlock().Number.Uint64(); i++ { - header := bc.GetHeaderByNumber(i) - req := &CodeReq{ - BHash: header.Hash(), - AccountAddress: testContractAddr[:], - } - codereqs = append(codereqs, req) - if i >= testContractDeployed { - codes = append(codes, testContractCodeDeployed) - } - } - - sendRequest(rawPeer.app, GetCodeMsg, 42, codereqs) - if err := expectResponse(rawPeer.app, CodeMsg, 42, testBufLimit, codes); err != nil { - t.Errorf("codes mismatch: %v", err) - } -} - -// Tests that the stale contract codes can't be retrieved based on account addresses. -func TestGetStaleCodeLes2(t *testing.T) { testGetStaleCode(t, 2) } -func TestGetStaleCodeLes3(t *testing.T) { testGetStaleCode(t, 3) } -func TestGetStaleCodeLes4(t *testing.T) { testGetStaleCode(t, 4) } - -func testGetStaleCode(t *testing.T, protocol int) { - netconfig := testnetConfig{ - blocks: core.TriesInMemory + 4, - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - check := func(number uint64, expected [][]byte) { - req := &CodeReq{ - BHash: bc.GetHeaderByNumber(number).Hash(), - AccountAddress: testContractAddr[:], - } - sendRequest(rawPeer.app, GetCodeMsg, 42, []*CodeReq{req}) - if err := expectResponse(rawPeer.app, CodeMsg, 42, testBufLimit, expected); err != nil { - t.Errorf("codes mismatch: %v", err) - } - } - check(0, [][]byte{}) // Non-exist contract - check(testContractDeployed, [][]byte{}) // Stale contract - check(bc.CurrentHeader().Number.Uint64(), [][]byte{testContractCodeDeployed}) // Fresh contract -} - -// Tests that the transaction receipts can be retrieved based on hashes. -func TestGetReceiptLes2(t *testing.T) { testGetReceipt(t, 2) } -func TestGetReceiptLes3(t *testing.T) { testGetReceipt(t, 3) } -func TestGetReceiptLes4(t *testing.T) { testGetReceipt(t, 4) } - -func testGetReceipt(t *testing.T, protocol int) { - // Assemble the test environment - netconfig := testnetConfig{ - blocks: 4, - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - // Collect the hashes to request, and the response to expect - var receipts []types.Receipts - var hashes []common.Hash - for i := uint64(0); i <= bc.CurrentBlock().Number.Uint64(); i++ { - block := bc.GetBlockByNumber(i) - - hashes = append(hashes, block.Hash()) - receipts = append(receipts, rawdb.ReadReceipts(server.db, block.Hash(), block.NumberU64(), block.Time(), bc.Config())) - } - // Send the hash request and verify the response - sendRequest(rawPeer.app, GetReceiptsMsg, 42, hashes) - if err := expectResponse(rawPeer.app, ReceiptsMsg, 42, testBufLimit, receipts); err != nil { - t.Errorf("receipts mismatch: %v", err) - } -} - -// Tests that trie merkle proofs can be retrieved -func TestGetProofsLes2(t *testing.T) { testGetProofs(t, 2) } -func TestGetProofsLes3(t *testing.T) { testGetProofs(t, 3) } -func TestGetProofsLes4(t *testing.T) { testGetProofs(t, 4) } - -func testGetProofs(t *testing.T, protocol int) { - // Assemble the test environment - netconfig := testnetConfig{ - blocks: 4, - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - var proofreqs []ProofReq - proofsV2 := trienode.NewProofSet() - - accounts := []common.Address{bankAddr, userAddr1, userAddr2, signerAddr, {}} - for i := uint64(0); i <= bc.CurrentBlock().Number.Uint64(); i++ { - header := bc.GetHeaderByNumber(i) - trie, _ := trie.New(trie.StateTrieID(header.Root), server.backend.Blockchain().TrieDB()) - - for _, acc := range accounts { - req := ProofReq{ - BHash: header.Hash(), - Key: crypto.Keccak256(acc[:]), - } - proofreqs = append(proofreqs, req) - trie.Prove(crypto.Keccak256(acc[:]), proofsV2) - } - } - // Send the proof request and verify the response - sendRequest(rawPeer.app, GetProofsV2Msg, 42, proofreqs) - if err := expectResponse(rawPeer.app, ProofsV2Msg, 42, testBufLimit, proofsV2.List()); err != nil { - t.Errorf("proofs mismatch: %v", err) - } -} - -// Tests that the stale contract codes can't be retrieved based on account addresses. -func TestGetStaleProofLes2(t *testing.T) { testGetStaleProof(t, 2) } -func TestGetStaleProofLes3(t *testing.T) { testGetStaleProof(t, 3) } -func TestGetStaleProofLes4(t *testing.T) { testGetStaleProof(t, 4) } - -func testGetStaleProof(t *testing.T, protocol int) { - netconfig := testnetConfig{ - blocks: core.TriesInMemory + 4, - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - check := func(number uint64, wantOK bool) { - var ( - header = bc.GetHeaderByNumber(number) - account = crypto.Keccak256(userAddr1.Bytes()) - ) - req := &ProofReq{ - BHash: header.Hash(), - Key: account, - } - sendRequest(rawPeer.app, GetProofsV2Msg, 42, []*ProofReq{req}) - - var expected []rlp.RawValue - if wantOK { - proofsV2 := trienode.NewProofSet() - t, _ := trie.New(trie.StateTrieID(header.Root), server.backend.Blockchain().TrieDB()) - t.Prove(account, proofsV2) - expected = proofsV2.List() - } - if err := expectResponse(rawPeer.app, ProofsV2Msg, 42, testBufLimit, expected); err != nil { - t.Errorf("codes mismatch: %v", err) - } - } - check(0, false) // Non-exist proof - check(2, false) // Stale proof - check(bc.CurrentHeader().Number.Uint64(), true) // Fresh proof -} - -// Tests that CHT proofs can be correctly retrieved. -func TestGetCHTProofsLes2(t *testing.T) { testGetCHTProofs(t, 2) } -func TestGetCHTProofsLes3(t *testing.T) { testGetCHTProofs(t, 3) } -func TestGetCHTProofsLes4(t *testing.T) { testGetCHTProofs(t, 4) } - -func testGetCHTProofs(t *testing.T, protocol int) { - var ( - config = light.TestServerIndexerConfig - waitIndexers = func(cIndexer, bIndexer, btIndexer *core.ChainIndexer) { - for { - cs, _, _ := cIndexer.Sections() - if cs >= 1 { - break - } - time.Sleep(10 * time.Millisecond) - } - } - netconfig = testnetConfig{ - blocks: int(config.ChtSize + config.ChtConfirms), - protocol: protocol, - indexFn: waitIndexers, - nopruning: true, - } - ) - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - // Assemble the proofs from the different protocols - header := bc.GetHeaderByNumber(config.ChtSize - 1) - rlp, _ := rlp.EncodeToBytes(header) - - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, config.ChtSize-1) - - proofsV2 := HelperTrieResps{ - AuxData: [][]byte{rlp}, - } - root := light.GetChtRoot(server.db, 0, bc.GetHeaderByNumber(config.ChtSize-1).Hash()) - trie, _ := trie.New(trie.TrieID(root), trie.NewDatabase(rawdb.NewTable(server.db, string(rawdb.ChtTablePrefix)), trie.HashDefaults)) - trie.Prove(key, &proofsV2.Proofs) - // Assemble the requests for the different protocols - requestsV2 := []HelperTrieReq{{ - Type: htCanonical, - TrieIdx: 0, - Key: key, - AuxReq: htAuxHeader, - }} - // Send the proof request and verify the response - sendRequest(rawPeer.app, GetHelperTrieProofsMsg, 42, requestsV2) - if err := expectResponse(rawPeer.app, HelperTrieProofsMsg, 42, testBufLimit, proofsV2); err != nil { - t.Errorf("proofs mismatch: %v", err) - } -} - -func TestGetBloombitsProofsLes2(t *testing.T) { testGetBloombitsProofs(t, 2) } -func TestGetBloombitsProofsLes3(t *testing.T) { testGetBloombitsProofs(t, 3) } -func TestGetBloombitsProofsLes4(t *testing.T) { testGetBloombitsProofs(t, 4) } - -// Tests that bloombits proofs can be correctly retrieved. -func testGetBloombitsProofs(t *testing.T, protocol int) { - var ( - config = light.TestServerIndexerConfig - waitIndexers = func(cIndexer, bIndexer, btIndexer *core.ChainIndexer) { - for { - bts, _, _ := btIndexer.Sections() - if bts >= 1 { - break - } - time.Sleep(10 * time.Millisecond) - } - } - netconfig = testnetConfig{ - blocks: int(config.BloomTrieSize + config.BloomTrieConfirms), - protocol: protocol, - indexFn: waitIndexers, - nopruning: true, - } - ) - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - bc := server.handler.blockchain - - // Request and verify each bit of the bloom bits proofs - for bit := 0; bit < 2048; bit++ { - // Assemble the request and proofs for the bloombits - key := make([]byte, 10) - - binary.BigEndian.PutUint16(key[:2], uint16(bit)) - // Only the first bloom section has data. - binary.BigEndian.PutUint64(key[2:], 0) - - requests := []HelperTrieReq{{ - Type: htBloomBits, - TrieIdx: 0, - Key: key, - }} - var proofs HelperTrieResps - - root := light.GetBloomTrieRoot(server.db, 0, bc.GetHeaderByNumber(config.BloomTrieSize-1).Hash()) - trie, _ := trie.New(trie.TrieID(root), trie.NewDatabase(rawdb.NewTable(server.db, string(rawdb.BloomTrieTablePrefix)), trie.HashDefaults)) - trie.Prove(key, &proofs.Proofs) - - // Send the proof request and verify the response - sendRequest(rawPeer.app, GetHelperTrieProofsMsg, 42, requests) - if err := expectResponse(rawPeer.app, HelperTrieProofsMsg, 42, testBufLimit, proofs); err != nil { - t.Errorf("bit %d: proofs mismatch: %v", bit, err) - } - } -} - -func TestTransactionStatusLes2(t *testing.T) { testTransactionStatus(t, lpv2) } -func TestTransactionStatusLes3(t *testing.T) { testTransactionStatus(t, lpv3) } -func TestTransactionStatusLes4(t *testing.T) { testTransactionStatus(t, lpv4) } - -func testTransactionStatus(t *testing.T, protocol int) { - netconfig := testnetConfig{ - protocol: protocol, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - server.handler.addTxsSync = true - - chain := server.handler.blockchain - - var reqID uint64 - - test := func(tx *types.Transaction, send bool, expStatus light.TxStatus) { - t.Helper() - - reqID++ - if send { - sendRequest(rawPeer.app, SendTxV2Msg, reqID, types.Transactions{tx}) - } else { - sendRequest(rawPeer.app, GetTxStatusMsg, reqID, []common.Hash{tx.Hash()}) - } - if err := expectResponse(rawPeer.app, TxStatusMsg, reqID, testBufLimit, []light.TxStatus{expStatus}); err != nil { - t.Errorf("transaction status mismatch: %v", err) - } - } - signer := types.HomesteadSigner{} - - // test error status by sending an underpriced transaction - tx0, _ := types.SignTx(types.NewTransaction(0, userAddr1, big.NewInt(10000), params.TxGas, nil, nil), signer, bankKey) - test(tx0, true, light.TxStatus{Status: txpool.TxStatusUnknown, Error: "transaction underpriced: tip needed 1, tip permitted 0"}) - - tx1, _ := types.SignTx(types.NewTransaction(0, userAddr1, big.NewInt(10000), params.TxGas, big.NewInt(100000000000), nil), signer, bankKey) - test(tx1, false, light.TxStatus{Status: txpool.TxStatusUnknown}) // query before sending, should be unknown - test(tx1, true, light.TxStatus{Status: txpool.TxStatusPending}) // send valid processable tx, should return pending - test(tx1, true, light.TxStatus{Status: txpool.TxStatusPending}) // adding it again should not return an error - - tx2, _ := types.SignTx(types.NewTransaction(1, userAddr1, big.NewInt(10000), params.TxGas, big.NewInt(100000000000), nil), signer, bankKey) - tx3, _ := types.SignTx(types.NewTransaction(2, userAddr1, big.NewInt(10000), params.TxGas, big.NewInt(100000000000), nil), signer, bankKey) - // send transactions in the wrong order, tx3 should be queued - test(tx3, true, light.TxStatus{Status: txpool.TxStatusQueued}) - test(tx2, true, light.TxStatus{Status: txpool.TxStatusPending}) - // query again, now tx3 should be pending too - test(tx3, false, light.TxStatus{Status: txpool.TxStatusPending}) - - // generate and add a block with tx1 and tx2 included - gchain, _ := core.GenerateChain(params.TestChainConfig, chain.GetBlockByNumber(0), ethash.NewFaker(), server.db, 1, func(i int, block *core.BlockGen) { - block.AddTx(tx1) - block.AddTx(tx2) - }) - if _, err := chain.InsertChain(gchain); err != nil { - panic(err) - } - // wait until TxPool processes the inserted block - for i := 0; i < 10; i++ { - if pending, _ := server.handler.txpool.Stats(); pending == 1 { - break - } - time.Sleep(100 * time.Millisecond) - } - if pending, _ := server.handler.txpool.Stats(); pending != 1 { - t.Fatalf("pending count mismatch: have %d, want 1", pending) - } - // Discard new block announcement - msg, _ := rawPeer.app.ReadMsg() - msg.Discard() - - // check if their status is included now - block1hash := rawdb.ReadCanonicalHash(server.db, 1) - test(tx1, false, light.TxStatus{Status: txpool.TxStatusIncluded, Lookup: &rawdb.LegacyTxLookupEntry{BlockHash: block1hash, BlockIndex: 1, Index: 0}}) - - test(tx2, false, light.TxStatus{Status: txpool.TxStatusIncluded, Lookup: &rawdb.LegacyTxLookupEntry{BlockHash: block1hash, BlockIndex: 1, Index: 1}}) - - // create a reorg that rolls them back - gchain, _ = core.GenerateChain(params.TestChainConfig, chain.GetBlockByNumber(0), ethash.NewFaker(), server.db, 2, func(i int, block *core.BlockGen) {}) - if _, err := chain.InsertChain(gchain); err != nil { - panic(err) - } - // wait until TxPool processes the reorg - for i := 0; i < 10; i++ { - if pending, _ := server.handler.txpool.Stats(); pending == 3 { - break - } - time.Sleep(100 * time.Millisecond) - } - if pending, _ := server.handler.txpool.Stats(); pending != 3 { - t.Fatalf("pending count mismatch: have %d, want 3", pending) - } - // Discard new block announcement - msg, _ = rawPeer.app.ReadMsg() - msg.Discard() - - // check if their status is pending again - test(tx1, false, light.TxStatus{Status: txpool.TxStatusPending}) - test(tx2, false, light.TxStatus{Status: txpool.TxStatusPending}) -} - -func TestStopResumeLES3(t *testing.T) { testStopResume(t, lpv3) } -func TestStopResumeLES4(t *testing.T) { testStopResume(t, lpv4) } - -func testStopResume(t *testing.T, protocol int) { - netconfig := testnetConfig{ - protocol: protocol, - simClock: true, - nopruning: true, - } - server, _, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - server.handler.server.costTracker.testing = true - server.handler.server.costTracker.testCostList = testCostList(testBufLimit / 10) - - rawPeer, closePeer, _ := server.newRawPeer(t, "peer", protocol) - defer closePeer() - - var ( - reqID uint64 - expBuf = testBufLimit - testCost = testBufLimit / 10 - ) - header := server.handler.blockchain.CurrentHeader() - req := func() { - reqID++ - sendRequest(rawPeer.app, GetBlockHeadersMsg, reqID, &GetBlockHeadersData{Origin: hashOrNumber{Hash: header.Hash()}, Amount: 1}) - } - for i := 1; i <= 5; i++ { - // send requests while we still have enough buffer and expect a response - for expBuf >= testCost { - req() - expBuf -= testCost - if err := expectResponse(rawPeer.app, BlockHeadersMsg, reqID, expBuf, []*types.Header{header}); err != nil { - t.Errorf("expected response and failed: %v", err) - } - } - // send some more requests in excess and expect a single StopMsg - c := i - for c > 0 { - req() - c-- - } - if err := p2p.ExpectMsg(rawPeer.app, StopMsg, nil); err != nil { - t.Errorf("expected StopMsg and failed: %v", err) - } - // wait until the buffer is recharged by half of the limit - wait := testBufLimit / testBufRecharge / 2 - server.clock.(*mclock.Simulated).Run(time.Millisecond * time.Duration(wait)) - - // expect a ResumeMsg with the partially recharged buffer value - expBuf += testBufRecharge * wait - if err := p2p.ExpectMsg(rawPeer.app, ResumeMsg, expBuf); err != nil { - t.Errorf("expected ResumeMsg and failed: %v", err) - } - } -} diff --git a/les/metrics.go b/les/metrics.go deleted file mode 100644 index 07d3133c95..0000000000 --- a/les/metrics.go +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "github.com/ethereum/go-ethereum/metrics" - "github.com/ethereum/go-ethereum/p2p" -) - -var ( - miscInPacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/total", nil) - miscInTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/total", nil) - miscInHeaderPacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/header", nil) - miscInHeaderTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/header", nil) - miscInBodyPacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/body", nil) - miscInBodyTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/body", nil) - miscInCodePacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/code", nil) - miscInCodeTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/code", nil) - miscInReceiptPacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/receipt", nil) - miscInReceiptTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/receipt", nil) - miscInTrieProofPacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/proof", nil) - miscInTrieProofTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/proof", nil) - miscInHelperTriePacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/helperTrie", nil) - miscInHelperTrieTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/helperTrie", nil) - miscInTxsPacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/txs", nil) - miscInTxsTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/txs", nil) - miscInTxStatusPacketsMeter = metrics.NewRegisteredMeter("les/misc/in/packets/txStatus", nil) - miscInTxStatusTrafficMeter = metrics.NewRegisteredMeter("les/misc/in/traffic/txStatus", nil) - - miscOutPacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/total", nil) - miscOutTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/total", nil) - miscOutHeaderPacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/header", nil) - miscOutHeaderTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/header", nil) - miscOutBodyPacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/body", nil) - miscOutBodyTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/body", nil) - miscOutCodePacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/code", nil) - miscOutCodeTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/code", nil) - miscOutReceiptPacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/receipt", nil) - miscOutReceiptTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/receipt", nil) - miscOutTrieProofPacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/proof", nil) - miscOutTrieProofTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/proof", nil) - miscOutHelperTriePacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/helperTrie", nil) - miscOutHelperTrieTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/helperTrie", nil) - miscOutTxsPacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/txs", nil) - miscOutTxsTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/txs", nil) - miscOutTxStatusPacketsMeter = metrics.NewRegisteredMeter("les/misc/out/packets/txStatus", nil) - miscOutTxStatusTrafficMeter = metrics.NewRegisteredMeter("les/misc/out/traffic/txStatus", nil) - - miscServingTimeHeaderTimer = metrics.NewRegisteredTimer("les/misc/serve/header", nil) - miscServingTimeBodyTimer = metrics.NewRegisteredTimer("les/misc/serve/body", nil) - miscServingTimeCodeTimer = metrics.NewRegisteredTimer("les/misc/serve/code", nil) - miscServingTimeReceiptTimer = metrics.NewRegisteredTimer("les/misc/serve/receipt", nil) - miscServingTimeTrieProofTimer = metrics.NewRegisteredTimer("les/misc/serve/proof", nil) - miscServingTimeHelperTrieTimer = metrics.NewRegisteredTimer("les/misc/serve/helperTrie", nil) - miscServingTimeTxTimer = metrics.NewRegisteredTimer("les/misc/serve/txs", nil) - miscServingTimeTxStatusTimer = metrics.NewRegisteredTimer("les/misc/serve/txStatus", nil) - - connectionTimer = metrics.NewRegisteredTimer("les/connection/duration", nil) - serverConnectionGauge = metrics.NewRegisteredGauge("les/connection/server", nil) - - totalCapacityGauge = metrics.NewRegisteredGauge("les/server/totalCapacity", nil) - totalRechargeGauge = metrics.NewRegisteredGauge("les/server/totalRecharge", nil) - blockProcessingTimer = metrics.NewRegisteredTimer("les/server/blockProcessingTime", nil) - - requestServedMeter = metrics.NewRegisteredMeter("les/server/req/avgServedTime", nil) - requestServedTimer = metrics.NewRegisteredTimer("les/server/req/servedTime", nil) - requestEstimatedMeter = metrics.NewRegisteredMeter("les/server/req/avgEstimatedTime", nil) - requestEstimatedTimer = metrics.NewRegisteredTimer("les/server/req/estimatedTime", nil) - relativeCostHistogram = metrics.NewRegisteredHistogram("les/server/req/relative", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostHeaderHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/header", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostBodyHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/body", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostReceiptHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/receipt", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostCodeHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/code", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostProofHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/proof", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostHelperProofHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/helperTrie", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostSendTxHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/txs", nil, metrics.NewExpDecaySample(1028, 0.015)) - relativeCostTxStatusHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/txStatus", nil, metrics.NewExpDecaySample(1028, 0.015)) - - globalFactorGauge = metrics.NewRegisteredGauge("les/server/globalFactor", nil) - recentServedGauge = metrics.NewRegisteredGauge("les/server/recentRequestServed", nil) - recentEstimatedGauge = metrics.NewRegisteredGauge("les/server/recentRequestEstimated", nil) - sqServedGauge = metrics.NewRegisteredGauge("les/server/servingQueue/served", nil) - sqQueuedGauge = metrics.NewRegisteredGauge("les/server/servingQueue/queued", nil) - - clientFreezeMeter = metrics.NewRegisteredMeter("les/server/clientEvent/freeze", nil) - clientErrorMeter = metrics.NewRegisteredMeter("les/server/clientEvent/error", nil) - - requestRTT = metrics.NewRegisteredTimer("les/client/req/rtt", nil) - requestSendDelay = metrics.NewRegisteredTimer("les/client/req/sendDelay", nil) - - serverSelectableGauge = metrics.NewRegisteredGauge("les/client/serverPool/selectable", nil) - serverDialedMeter = metrics.NewRegisteredMeter("les/client/serverPool/dialed", nil) - serverConnectedGauge = metrics.NewRegisteredGauge("les/client/serverPool/connected", nil) - sessionValueMeter = metrics.NewRegisteredMeter("les/client/serverPool/sessionValue", nil) - totalValueGauge = metrics.NewRegisteredGauge("les/client/serverPool/totalValue", nil) - suggestedTimeoutGauge = metrics.NewRegisteredGauge("les/client/serverPool/timeout", nil) -) - -// meteredMsgReadWriter is a wrapper around a p2p.MsgReadWriter, capable of -// accumulating the above defined metrics based on the data stream contents. -type meteredMsgReadWriter struct { - p2p.MsgReadWriter // Wrapped message stream to meter - version int // Protocol version to select correct meters -} - -// newMeteredMsgWriter wraps a p2p MsgReadWriter with metering support. If the -// metrics system is disabled, this function returns the original object. -func newMeteredMsgWriter(rw p2p.MsgReadWriter, version int) p2p.MsgReadWriter { - if !metrics.Enabled { - return rw - } - return &meteredMsgReadWriter{MsgReadWriter: rw, version: version} -} - -func (rw *meteredMsgReadWriter) ReadMsg() (p2p.Msg, error) { - // Read the message and short circuit in case of an error - msg, err := rw.MsgReadWriter.ReadMsg() - if err != nil { - return msg, err - } - // Account for the data traffic - packets, traffic := miscInPacketsMeter, miscInTrafficMeter - packets.Mark(1) - traffic.Mark(int64(msg.Size)) - - return msg, err -} - -func (rw *meteredMsgReadWriter) WriteMsg(msg p2p.Msg) error { - // Account for the data traffic - packets, traffic := miscOutPacketsMeter, miscOutTrafficMeter - packets.Mark(1) - traffic.Mark(int64(msg.Size)) - - // Send the packet to the p2p layer - return rw.MsgReadWriter.WriteMsg(msg) -} diff --git a/les/odr.go b/les/odr.go deleted file mode 100644 index 943b05fdfc..0000000000 --- a/les/odr.go +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "context" - "math/rand" - "sort" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/light" -) - -// LesOdr implements light.OdrBackend -type LesOdr struct { - db ethdb.Database - indexerConfig *light.IndexerConfig - chtIndexer, bloomTrieIndexer, bloomIndexer *core.ChainIndexer - peers *serverPeerSet - retriever *retrieveManager - stop chan struct{} -} - -func NewLesOdr(db ethdb.Database, config *light.IndexerConfig, peers *serverPeerSet, retriever *retrieveManager) *LesOdr { - return &LesOdr{ - db: db, - indexerConfig: config, - peers: peers, - retriever: retriever, - stop: make(chan struct{}), - } -} - -// Stop cancels all pending retrievals -func (odr *LesOdr) Stop() { - close(odr.stop) -} - -// Database returns the backing database -func (odr *LesOdr) Database() ethdb.Database { - return odr.db -} - -// SetIndexers adds the necessary chain indexers to the ODR backend -func (odr *LesOdr) SetIndexers(chtIndexer, bloomTrieIndexer, bloomIndexer *core.ChainIndexer) { - odr.chtIndexer = chtIndexer - odr.bloomTrieIndexer = bloomTrieIndexer - odr.bloomIndexer = bloomIndexer -} - -// ChtIndexer returns the CHT chain indexer -func (odr *LesOdr) ChtIndexer() *core.ChainIndexer { - return odr.chtIndexer -} - -// BloomTrieIndexer returns the bloom trie chain indexer -func (odr *LesOdr) BloomTrieIndexer() *core.ChainIndexer { - return odr.bloomTrieIndexer -} - -// BloomIndexer returns the bloombits chain indexer -func (odr *LesOdr) BloomIndexer() *core.ChainIndexer { - return odr.bloomIndexer -} - -// IndexerConfig returns the indexer config. -func (odr *LesOdr) IndexerConfig() *light.IndexerConfig { - return odr.indexerConfig -} - -const ( - MsgBlockHeaders = iota - MsgBlockBodies - MsgCode - MsgReceipts - MsgProofsV2 - MsgHelperTrieProofs - MsgTxStatus -) - -// Msg encodes a LES message that delivers reply data for a request -type Msg struct { - MsgType int - ReqID uint64 - Obj interface{} -} - -// peerByTxHistory is a heap.Interface implementation which can sort -// the peerset by transaction history. -type peerByTxHistory []*serverPeer - -func (h peerByTxHistory) Len() int { return len(h) } -func (h peerByTxHistory) Less(i, j int) bool { - if h[i].txHistory == txIndexUnlimited { - return false - } - if h[j].txHistory == txIndexUnlimited { - return true - } - return h[i].txHistory < h[j].txHistory -} -func (h peerByTxHistory) Swap(i, j int) { h[i], h[j] = h[j], h[i] } - -const ( - maxTxStatusRetry = 3 // The maximum retries will be made for tx status request. - maxTxStatusCandidates = 5 // The maximum les servers the tx status requests will be sent to. -) - -// RetrieveTxStatus retrieves the transaction status from the LES network. -// There is no guarantee in the LES protocol that the mined transaction will -// be retrieved back for sure because of different reasons(the transaction -// is unindexed, the malicious server doesn't reply it deliberately, etc). -// Therefore, unretrieved transactions(UNKNOWN) will receive a certain number -// of retries, thus giving a weak guarantee. -func (odr *LesOdr) RetrieveTxStatus(ctx context.Context, req *light.TxStatusRequest) error { - // Sort according to the transaction history supported by the peer and - // select the peers with longest history. - var ( - retries int - peers []*serverPeer - missing = len(req.Hashes) - result = make([]light.TxStatus, len(req.Hashes)) - canSend = make(map[string]bool) - ) - for _, peer := range odr.peers.allPeers() { - if peer.txHistory == txIndexDisabled { - continue - } - peers = append(peers, peer) - } - sort.Sort(sort.Reverse(peerByTxHistory(peers))) - for i := 0; i < maxTxStatusCandidates && i < len(peers); i++ { - canSend[peers[i].id] = true - } - // Send out the request and assemble the result. - for { - if retries >= maxTxStatusRetry || len(canSend) == 0 { - break - } - var ( - // Deep copy the request, so that the partial result won't be mixed. - req = &TxStatusRequest{Hashes: req.Hashes} - id = rand.Uint64() - distreq = &distReq{ - getCost: func(dp distPeer) uint64 { return req.GetCost(dp.(*serverPeer)) }, - canSend: func(dp distPeer) bool { return canSend[dp.(*serverPeer).id] }, - request: func(dp distPeer) func() { - p := dp.(*serverPeer) - p.fcServer.QueuedRequest(id, req.GetCost(p)) - delete(canSend, p.id) - return func() { req.Request(id, p) } - }, - } - ) - if err := odr.retriever.retrieve(ctx, id, distreq, func(p distPeer, msg *Msg) error { return req.Validate(odr.db, msg) }, odr.stop); err != nil { - return err - } - // Collect the response and assemble them to the final result. - // All the response is not verifiable, so always pick the first - // one we get. - for index, status := range req.Status { - if result[index].Status != txpool.TxStatusUnknown { - continue - } - if status.Status == txpool.TxStatusUnknown { - continue - } - result[index], missing = status, missing-1 - } - // Abort the procedure if all the status are retrieved - if missing == 0 { - break - } - retries += 1 - } - req.Status = result - return nil -} - -// Retrieve tries to fetch an object from the LES network. It's a common API -// for most of the LES requests except for the TxStatusRequest which needs -// the additional retry mechanism. -// If the network retrieval was successful, it stores the object in local db. -func (odr *LesOdr) Retrieve(ctx context.Context, req light.OdrRequest) (err error) { - lreq := LesRequest(req) - - reqID := rand.Uint64() - rq := &distReq{ - getCost: func(dp distPeer) uint64 { - return lreq.GetCost(dp.(*serverPeer)) - }, - canSend: func(dp distPeer) bool { - p := dp.(*serverPeer) - if !p.onlyAnnounce { - return lreq.CanSend(p) - } - return false - }, - request: func(dp distPeer) func() { - p := dp.(*serverPeer) - cost := lreq.GetCost(p) - p.fcServer.QueuedRequest(reqID, cost) - return func() { lreq.Request(reqID, p) } - }, - } - - defer func(sent mclock.AbsTime) { - if err != nil { - return - } - requestRTT.Update(time.Duration(mclock.Now() - sent)) - }(mclock.Now()) - - if err := odr.retriever.retrieve(ctx, reqID, rq, func(p distPeer, msg *Msg) error { return lreq.Validate(odr.db, msg) }, odr.stop); err != nil { - return err - } - req.StoreResult(odr.db) - return nil -} diff --git a/les/odr_requests.go b/les/odr_requests.go deleted file mode 100644 index c907018590..0000000000 --- a/les/odr_requests.go +++ /dev/null @@ -1,537 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "encoding/binary" - "errors" - "fmt" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -var ( - errInvalidMessageType = errors.New("invalid message type") - errInvalidEntryCount = errors.New("invalid number of response entries") - errHeaderUnavailable = errors.New("header unavailable") - errTxHashMismatch = errors.New("transaction hash mismatch") - errUncleHashMismatch = errors.New("uncle hash mismatch") - errReceiptHashMismatch = errors.New("receipt hash mismatch") - errDataHashMismatch = errors.New("data hash mismatch") - errCHTHashMismatch = errors.New("cht hash mismatch") - errCHTNumberMismatch = errors.New("cht number mismatch") - errUselessNodes = errors.New("useless nodes in merkle proof nodeset") -) - -type LesOdrRequest interface { - GetCost(*serverPeer) uint64 - CanSend(*serverPeer) bool - Request(uint64, *serverPeer) error - Validate(ethdb.Database, *Msg) error -} - -func LesRequest(req light.OdrRequest) LesOdrRequest { - switch r := req.(type) { - case *light.BlockRequest: - return (*BlockRequest)(r) - case *light.ReceiptsRequest: - return (*ReceiptsRequest)(r) - case *light.TrieRequest: - return (*TrieRequest)(r) - case *light.CodeRequest: - return (*CodeRequest)(r) - case *light.ChtRequest: - return (*ChtRequest)(r) - case *light.BloomRequest: - return (*BloomRequest)(r) - case *light.TxStatusRequest: - return (*TxStatusRequest)(r) - default: - return nil - } -} - -// BlockRequest is the ODR request type for block bodies -type BlockRequest light.BlockRequest - -// GetCost returns the cost of the given ODR request according to the serving -// peer's cost table (implementation of LesOdrRequest) -func (r *BlockRequest) GetCost(peer *serverPeer) uint64 { - return peer.getRequestCost(GetBlockBodiesMsg, 1) -} - -// CanSend tells if a certain peer is suitable for serving the given request -func (r *BlockRequest) CanSend(peer *serverPeer) bool { - return peer.HasBlock(r.Hash, r.Number, false) -} - -// Request sends an ODR request to the LES network (implementation of LesOdrRequest) -func (r *BlockRequest) Request(reqID uint64, peer *serverPeer) error { - peer.Log().Debug("Requesting block body", "hash", r.Hash) - return peer.requestBodies(reqID, []common.Hash{r.Hash}) -} - -// Validate processes an ODR request reply message from the LES network -// returns true and stores results in memory if the message was a valid reply -// to the request (implementation of LesOdrRequest) -func (r *BlockRequest) Validate(db ethdb.Database, msg *Msg) error { - log.Debug("Validating block body", "hash", r.Hash) - - // Ensure we have a correct message with a single block body - if msg.MsgType != MsgBlockBodies { - return errInvalidMessageType - } - bodies := msg.Obj.([]*types.Body) - if len(bodies) != 1 { - return errInvalidEntryCount - } - body := bodies[0] - - // Retrieve our stored header and validate block content against it - if r.Header == nil { - r.Header = rawdb.ReadHeader(db, r.Hash, r.Number) - } - if r.Header == nil { - return errHeaderUnavailable - } - if r.Header.TxHash != types.DeriveSha(types.Transactions(body.Transactions), trie.NewStackTrie(nil)) { - return errTxHashMismatch - } - if r.Header.UncleHash != types.CalcUncleHash(body.Uncles) { - return errUncleHashMismatch - } - // Validations passed, encode and store RLP - data, err := rlp.EncodeToBytes(body) - if err != nil { - return err - } - r.Rlp = data - return nil -} - -// ReceiptsRequest is the ODR request type for block receipts by block hash -type ReceiptsRequest light.ReceiptsRequest - -// GetCost returns the cost of the given ODR request according to the serving -// peer's cost table (implementation of LesOdrRequest) -func (r *ReceiptsRequest) GetCost(peer *serverPeer) uint64 { - return peer.getRequestCost(GetReceiptsMsg, 1) -} - -// CanSend tells if a certain peer is suitable for serving the given request -func (r *ReceiptsRequest) CanSend(peer *serverPeer) bool { - return peer.HasBlock(r.Hash, r.Number, false) -} - -// Request sends an ODR request to the LES network (implementation of LesOdrRequest) -func (r *ReceiptsRequest) Request(reqID uint64, peer *serverPeer) error { - peer.Log().Debug("Requesting block receipts", "hash", r.Hash) - return peer.requestReceipts(reqID, []common.Hash{r.Hash}) -} - -// Validate processes an ODR request reply message from the LES network -// returns true and stores results in memory if the message was a valid reply -// to the request (implementation of LesOdrRequest) -func (r *ReceiptsRequest) Validate(db ethdb.Database, msg *Msg) error { - log.Debug("Validating block receipts", "hash", r.Hash) - - // Ensure we have a correct message with a single block receipt - if msg.MsgType != MsgReceipts { - return errInvalidMessageType - } - receipts := msg.Obj.([]types.Receipts) - if len(receipts) != 1 { - return errInvalidEntryCount - } - receipt := receipts[0] - - // Retrieve our stored header and validate receipt content against it - if r.Header == nil { - r.Header = rawdb.ReadHeader(db, r.Hash, r.Number) - } - if r.Header == nil { - return errHeaderUnavailable - } - if r.Header.ReceiptHash != types.DeriveSha(receipt, trie.NewStackTrie(nil)) { - return errReceiptHashMismatch - } - // Validations passed, store and return - r.Receipts = receipt - return nil -} - -type ProofReq struct { - BHash common.Hash - AccountAddress, Key []byte - FromLevel uint -} - -// ODR request type for state/storage trie entries, see LesOdrRequest interface -type TrieRequest light.TrieRequest - -// GetCost returns the cost of the given ODR request according to the serving -// peer's cost table (implementation of LesOdrRequest) -func (r *TrieRequest) GetCost(peer *serverPeer) uint64 { - return peer.getRequestCost(GetProofsV2Msg, 1) -} - -// CanSend tells if a certain peer is suitable for serving the given request -func (r *TrieRequest) CanSend(peer *serverPeer) bool { - return peer.HasBlock(r.Id.BlockHash, r.Id.BlockNumber, true) -} - -// Request sends an ODR request to the LES network (implementation of LesOdrRequest) -func (r *TrieRequest) Request(reqID uint64, peer *serverPeer) error { - peer.Log().Debug("Requesting trie proof", "root", r.Id.Root, "key", r.Key) - req := ProofReq{ - BHash: r.Id.BlockHash, - AccountAddress: r.Id.AccountAddress, - Key: r.Key, - } - return peer.requestProofs(reqID, []ProofReq{req}) -} - -// Validate processes an ODR request reply message from the LES network -// returns true and stores results in memory if the message was a valid reply -// to the request (implementation of LesOdrRequest) -func (r *TrieRequest) Validate(db ethdb.Database, msg *Msg) error { - log.Debug("Validating trie proof", "root", r.Id.Root, "key", r.Key) - - if msg.MsgType != MsgProofsV2 { - return errInvalidMessageType - } - proofs := msg.Obj.(trienode.ProofList) - // Verify the proof and store if checks out - nodeSet := proofs.Set() - reads := &readTraceDB{db: nodeSet} - if _, err := trie.VerifyProof(r.Id.Root, r.Key, reads); err != nil { - return fmt.Errorf("merkle proof verification failed: %v", err) - } - // check if all nodes have been read by VerifyProof - if len(reads.reads) != nodeSet.KeyCount() { - return errUselessNodes - } - r.Proof = nodeSet - return nil -} - -type CodeReq struct { - BHash common.Hash - AccountAddress []byte -} - -// CodeRequest is the ODR request type for node data (used for retrieving contract code), see LesOdrRequest interface -type CodeRequest light.CodeRequest - -// GetCost returns the cost of the given ODR request according to the serving -// peer's cost table (implementation of LesOdrRequest) -func (r *CodeRequest) GetCost(peer *serverPeer) uint64 { - return peer.getRequestCost(GetCodeMsg, 1) -} - -// CanSend tells if a certain peer is suitable for serving the given request -func (r *CodeRequest) CanSend(peer *serverPeer) bool { - return peer.HasBlock(r.Id.BlockHash, r.Id.BlockNumber, true) -} - -// Request sends an ODR request to the LES network (implementation of LesOdrRequest) -func (r *CodeRequest) Request(reqID uint64, peer *serverPeer) error { - peer.Log().Debug("Requesting code data", "hash", r.Hash) - req := CodeReq{ - BHash: r.Id.BlockHash, - AccountAddress: r.Id.AccountAddress, - } - return peer.requestCode(reqID, []CodeReq{req}) -} - -// Validate processes an ODR request reply message from the LES network -// returns true and stores results in memory if the message was a valid reply -// to the request (implementation of LesOdrRequest) -func (r *CodeRequest) Validate(db ethdb.Database, msg *Msg) error { - log.Debug("Validating code data", "hash", r.Hash) - - // Ensure we have a correct message with a single code element - if msg.MsgType != MsgCode { - return errInvalidMessageType - } - reply := msg.Obj.([][]byte) - if len(reply) != 1 { - return errInvalidEntryCount - } - data := reply[0] - - // Verify the data and store if checks out - if hash := crypto.Keccak256Hash(data); r.Hash != hash { - return errDataHashMismatch - } - r.Data = data - return nil -} - -const ( - // helper trie type constants - htCanonical = iota // Canonical hash trie - htBloomBits // BloomBits trie - - // helper trie auxiliary types - // htAuxNone = 1 ; deprecated number, used in les2/3 previously. - htAuxHeader = 2 // applicable for htCanonical, requests for relevant headers -) - -type HelperTrieReq struct { - Type uint - TrieIdx uint64 - Key []byte - FromLevel, AuxReq uint -} - -type HelperTrieResps struct { // describes all responses, not just a single one - Proofs trienode.ProofList - AuxData [][]byte -} - -// ChtRequest is the ODR request type for requesting headers by Canonical Hash Trie, see LesOdrRequest interface -type ChtRequest light.ChtRequest - -// GetCost returns the cost of the given ODR request according to the serving -// peer's cost table (implementation of LesOdrRequest) -func (r *ChtRequest) GetCost(peer *serverPeer) uint64 { - return peer.getRequestCost(GetHelperTrieProofsMsg, 1) -} - -// CanSend tells if a certain peer is suitable for serving the given request -func (r *ChtRequest) CanSend(peer *serverPeer) bool { - peer.lock.RLock() - defer peer.lock.RUnlock() - - return peer.headInfo.Number >= r.Config.ChtConfirms && r.ChtNum <= (peer.headInfo.Number-r.Config.ChtConfirms)/r.Config.ChtSize -} - -// Request sends an ODR request to the LES network (implementation of LesOdrRequest) -func (r *ChtRequest) Request(reqID uint64, peer *serverPeer) error { - peer.Log().Debug("Requesting CHT", "cht", r.ChtNum, "block", r.BlockNum) - var encNum [8]byte - binary.BigEndian.PutUint64(encNum[:], r.BlockNum) - req := HelperTrieReq{ - Type: htCanonical, - TrieIdx: r.ChtNum, - Key: encNum[:], - AuxReq: htAuxHeader, - } - return peer.requestHelperTrieProofs(reqID, []HelperTrieReq{req}) -} - -// Validate processes an ODR request reply message from the LES network -// returns true and stores results in memory if the message was a valid reply -// to the request (implementation of LesOdrRequest) -func (r *ChtRequest) Validate(db ethdb.Database, msg *Msg) error { - log.Debug("Validating CHT", "cht", r.ChtNum, "block", r.BlockNum) - - if msg.MsgType != MsgHelperTrieProofs { - return errInvalidMessageType - } - resp := msg.Obj.(HelperTrieResps) - if len(resp.AuxData) != 1 { - return errInvalidEntryCount - } - nodeSet := resp.Proofs.Set() - headerEnc := resp.AuxData[0] - if len(headerEnc) == 0 { - return errHeaderUnavailable - } - header := new(types.Header) - if err := rlp.DecodeBytes(headerEnc, header); err != nil { - return errHeaderUnavailable - } - // Verify the CHT - var ( - node light.ChtNode - encNumber [8]byte - ) - binary.BigEndian.PutUint64(encNumber[:], r.BlockNum) - - reads := &readTraceDB{db: nodeSet} - value, err := trie.VerifyProof(r.ChtRoot, encNumber[:], reads) - if err != nil { - return fmt.Errorf("merkle proof verification failed: %v", err) - } - if len(reads.reads) != nodeSet.KeyCount() { - return errUselessNodes - } - if err := rlp.DecodeBytes(value, &node); err != nil { - return err - } - if node.Hash != header.Hash() { - return errCHTHashMismatch - } - if r.BlockNum != header.Number.Uint64() { - return errCHTNumberMismatch - } - // Verifications passed, store and return - r.Header = header - r.Proof = nodeSet - r.Td = node.Td - return nil -} - -type BloomReq struct { - BloomTrieNum, BitIdx, SectionIndex, FromLevel uint64 -} - -// BloomRequest is the ODR request type for requesting headers by Canonical Hash Trie, see LesOdrRequest interface -type BloomRequest light.BloomRequest - -// GetCost returns the cost of the given ODR request according to the serving -// peer's cost table (implementation of LesOdrRequest) -func (r *BloomRequest) GetCost(peer *serverPeer) uint64 { - return peer.getRequestCost(GetHelperTrieProofsMsg, len(r.SectionIndexList)) -} - -// CanSend tells if a certain peer is suitable for serving the given request -func (r *BloomRequest) CanSend(peer *serverPeer) bool { - peer.lock.RLock() - defer peer.lock.RUnlock() - - if peer.version < lpv2 { - return false - } - return peer.headInfo.Number >= r.Config.BloomTrieConfirms && r.BloomTrieNum <= (peer.headInfo.Number-r.Config.BloomTrieConfirms)/r.Config.BloomTrieSize -} - -// Request sends an ODR request to the LES network (implementation of LesOdrRequest) -func (r *BloomRequest) Request(reqID uint64, peer *serverPeer) error { - peer.Log().Debug("Requesting BloomBits", "bloomTrie", r.BloomTrieNum, "bitIdx", r.BitIdx, "sections", r.SectionIndexList) - reqs := make([]HelperTrieReq, len(r.SectionIndexList)) - - var encNumber [10]byte - binary.BigEndian.PutUint16(encNumber[:2], uint16(r.BitIdx)) - - for i, sectionIdx := range r.SectionIndexList { - binary.BigEndian.PutUint64(encNumber[2:], sectionIdx) - reqs[i] = HelperTrieReq{ - Type: htBloomBits, - TrieIdx: r.BloomTrieNum, - Key: common.CopyBytes(encNumber[:]), - } - } - return peer.requestHelperTrieProofs(reqID, reqs) -} - -// Validate processes an ODR request reply message from the LES network -// returns true and stores results in memory if the message was a valid reply -// to the request (implementation of LesOdrRequest) -func (r *BloomRequest) Validate(db ethdb.Database, msg *Msg) error { - log.Debug("Validating BloomBits", "bloomTrie", r.BloomTrieNum, "bitIdx", r.BitIdx, "sections", r.SectionIndexList) - - // Ensure we have a correct message with a single proof element - if msg.MsgType != MsgHelperTrieProofs { - return errInvalidMessageType - } - resps := msg.Obj.(HelperTrieResps) - proofs := resps.Proofs - nodeSet := proofs.Set() - reads := &readTraceDB{db: nodeSet} - - r.BloomBits = make([][]byte, len(r.SectionIndexList)) - - // Verify the proofs - var encNumber [10]byte - binary.BigEndian.PutUint16(encNumber[:2], uint16(r.BitIdx)) - - for i, idx := range r.SectionIndexList { - binary.BigEndian.PutUint64(encNumber[2:], idx) - value, err := trie.VerifyProof(r.BloomTrieRoot, encNumber[:], reads) - if err != nil { - return err - } - r.BloomBits[i] = value - } - - if len(reads.reads) != nodeSet.KeyCount() { - return errUselessNodes - } - r.Proofs = nodeSet - return nil -} - -// TxStatusRequest is the ODR request type for transaction status -type TxStatusRequest light.TxStatusRequest - -// GetCost returns the cost of the given ODR request according to the serving -// peer's cost table (implementation of LesOdrRequest) -func (r *TxStatusRequest) GetCost(peer *serverPeer) uint64 { - return peer.getRequestCost(GetTxStatusMsg, len(r.Hashes)) -} - -// CanSend tells if a certain peer is suitable for serving the given request -func (r *TxStatusRequest) CanSend(peer *serverPeer) bool { - return peer.txHistory != txIndexDisabled -} - -// Request sends an ODR request to the LES network (implementation of LesOdrRequest) -func (r *TxStatusRequest) Request(reqID uint64, peer *serverPeer) error { - peer.Log().Debug("Requesting transaction status", "count", len(r.Hashes)) - return peer.requestTxStatus(reqID, r.Hashes) -} - -// Validate processes an ODR request reply message from the LES network -// returns true and stores results in memory if the message was a valid reply -// to the request (implementation of LesOdrRequest) -func (r *TxStatusRequest) Validate(db ethdb.Database, msg *Msg) error { - log.Debug("Validating transaction status", "count", len(r.Hashes)) - - if msg.MsgType != MsgTxStatus { - return errInvalidMessageType - } - status := msg.Obj.([]light.TxStatus) - if len(status) != len(r.Hashes) { - return errInvalidEntryCount - } - r.Status = status - return nil -} - -// readTraceDB stores the keys of database reads. We use this to check that received node -// sets contain only the trie nodes necessary to make proofs pass. -type readTraceDB struct { - db ethdb.KeyValueReader - reads map[string]struct{} -} - -// Get returns a stored node -func (db *readTraceDB) Get(k []byte) ([]byte, error) { - if db.reads == nil { - db.reads = make(map[string]struct{}) - } - db.reads[string(k)] = struct{}{} - return db.db.Get(k) -} - -// Has returns true if the node set contains the given key -func (db *readTraceDB) Has(key []byte) (bool, error) { - _, err := db.Get(key) - return err == nil, nil -} diff --git a/les/odr_test.go b/les/odr_test.go deleted file mode 100644 index 69824a92dd..0000000000 --- a/les/odr_test.go +++ /dev/null @@ -1,458 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -// Note: these tests are disabled now because they cannot work with the old sync -// mechanism removed but will be useful again once the PoS ultralight mode is implemented - -/* -import ( - "bytes" - "context" - "crypto/rand" - "fmt" - "math/big" - "reflect" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/math" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" -) - -type odrTestFn func(ctx context.Context, db ethdb.Database, config *params.ChainConfig, bc *core.BlockChain, lc *light.LightChain, bhash common.Hash) []byte - -func TestOdrGetBlockLes2(t *testing.T) { testOdr(t, 2, 1, true, odrGetBlock) } -func TestOdrGetBlockLes3(t *testing.T) { testOdr(t, 3, 1, true, odrGetBlock) } -func TestOdrGetBlockLes4(t *testing.T) { testOdr(t, 4, 1, true, odrGetBlock) } - -func odrGetBlock(ctx context.Context, db ethdb.Database, config *params.ChainConfig, bc *core.BlockChain, lc *light.LightChain, bhash common.Hash) []byte { - var block *types.Block - if bc != nil { - block = bc.GetBlockByHash(bhash) - } else { - block, _ = lc.GetBlockByHash(ctx, bhash) - } - if block == nil { - return nil - } - rlp, _ := rlp.EncodeToBytes(block) - return rlp -} - -func TestOdrGetReceiptsLes2(t *testing.T) { testOdr(t, 2, 1, true, odrGetReceipts) } -func TestOdrGetReceiptsLes3(t *testing.T) { testOdr(t, 3, 1, true, odrGetReceipts) } -func TestOdrGetReceiptsLes4(t *testing.T) { testOdr(t, 4, 1, true, odrGetReceipts) } - -func odrGetReceipts(ctx context.Context, db ethdb.Database, config *params.ChainConfig, bc *core.BlockChain, lc *light.LightChain, bhash common.Hash) []byte { - var receipts types.Receipts - if bc != nil { - if number := rawdb.ReadHeaderNumber(db, bhash); number != nil { - if header := rawdb.ReadHeader(db, bhash, *number); header != nil { - receipts = rawdb.ReadReceipts(db, bhash, *number, header.Time, config) - } - } - } else { - if number := rawdb.ReadHeaderNumber(db, bhash); number != nil { - receipts, _ = light.GetBlockReceipts(ctx, lc.Odr(), bhash, *number) - } - } - if receipts == nil { - return nil - } - rlp, _ := rlp.EncodeToBytes(receipts) - return rlp -} - -func TestOdrAccountsLes2(t *testing.T) { testOdr(t, 2, 1, true, odrAccounts) } -func TestOdrAccountsLes3(t *testing.T) { testOdr(t, 3, 1, true, odrAccounts) } -func TestOdrAccountsLes4(t *testing.T) { testOdr(t, 4, 1, true, odrAccounts) } - -func odrAccounts(ctx context.Context, db ethdb.Database, config *params.ChainConfig, bc *core.BlockChain, lc *light.LightChain, bhash common.Hash) []byte { - dummyAddr := common.HexToAddress("1234567812345678123456781234567812345678") - acc := []common.Address{bankAddr, userAddr1, userAddr2, dummyAddr} - - var ( - res []byte - st *state.StateDB - err error - ) - for _, addr := range acc { - if bc != nil { - header := bc.GetHeaderByHash(bhash) - st, err = state.New(header.Root, bc.StateCache(), nil) - } else { - header := lc.GetHeaderByHash(bhash) - st = light.NewState(ctx, header, lc.Odr()) - } - if err == nil { - bal := st.GetBalance(addr) - rlp, _ := rlp.EncodeToBytes(bal) - res = append(res, rlp...) - } - } - return res -} - -func TestOdrContractCallLes2(t *testing.T) { testOdr(t, 2, 2, true, odrContractCall) } -func TestOdrContractCallLes3(t *testing.T) { testOdr(t, 3, 2, true, odrContractCall) } -func TestOdrContractCallLes4(t *testing.T) { testOdr(t, 4, 2, true, odrContractCall) } - -func odrContractCall(ctx context.Context, db ethdb.Database, config *params.ChainConfig, bc *core.BlockChain, lc *light.LightChain, bhash common.Hash) []byte { - data := common.Hex2Bytes("60CD26850000000000000000000000000000000000000000000000000000000000000000") - - var res []byte - for i := 0; i < 3; i++ { - data[35] = byte(i) - if bc != nil { - header := bc.GetHeaderByHash(bhash) - statedb, err := state.New(header.Root, bc.StateCache(), nil) - - if err == nil { - from := statedb.GetOrNewStateObject(bankAddr) - from.SetBalance(math.MaxBig256) - - msg := &core.Message{ - From: from.Address(), - To: &testContractAddr, - Value: new(big.Int), - GasLimit: 100000, - GasPrice: big.NewInt(params.InitialBaseFee), - GasFeeCap: big.NewInt(params.InitialBaseFee), - GasTipCap: new(big.Int), - Data: data, - SkipAccountChecks: true, - } - - context := core.NewEVMBlockContext(header, bc, nil) - txContext := core.NewEVMTxContext(msg) - vmenv := vm.NewEVM(context, txContext, statedb, config, vm.Config{NoBaseFee: true}) - - //vmenv := core.NewEnv(statedb, config, bc, msg, header, vm.Config{}) - gp := new(core.GasPool).AddGas(math.MaxUint64) - result, _ := core.ApplyMessage(vmenv, msg, gp) - res = append(res, result.Return()...) - } - } else { - header := lc.GetHeaderByHash(bhash) - state := light.NewState(ctx, header, lc.Odr()) - state.SetBalance(bankAddr, math.MaxBig256) - msg := &core.Message{ - From: bankAddr, - To: &testContractAddr, - Value: new(big.Int), - GasLimit: 100000, - GasPrice: big.NewInt(params.InitialBaseFee), - GasFeeCap: big.NewInt(params.InitialBaseFee), - GasTipCap: new(big.Int), - Data: data, - SkipAccountChecks: true, - } - context := core.NewEVMBlockContext(header, lc, nil) - txContext := core.NewEVMTxContext(msg) - vmenv := vm.NewEVM(context, txContext, state, config, vm.Config{NoBaseFee: true}) - gp := new(core.GasPool).AddGas(math.MaxUint64) - result, _ := core.ApplyMessage(vmenv, msg, gp) - if state.Error() == nil { - res = append(res, result.Return()...) - } - } - } - return res -} - -func TestOdrTxStatusLes2(t *testing.T) { testOdr(t, 2, 1, false, odrTxStatus) } -func TestOdrTxStatusLes3(t *testing.T) { testOdr(t, 3, 1, false, odrTxStatus) } -func TestOdrTxStatusLes4(t *testing.T) { testOdr(t, 4, 1, false, odrTxStatus) } - -func odrTxStatus(ctx context.Context, db ethdb.Database, config *params.ChainConfig, bc *core.BlockChain, lc *light.LightChain, bhash common.Hash) []byte { - var txs types.Transactions - if bc != nil { - block := bc.GetBlockByHash(bhash) - txs = block.Transactions() - } else { - if block, _ := lc.GetBlockByHash(ctx, bhash); block != nil { - btxs := block.Transactions() - txs = make(types.Transactions, len(btxs)) - for i, tx := range btxs { - var err error - txs[i], _, _, _, err = light.GetTransaction(ctx, lc.Odr(), tx.Hash()) - if err != nil { - return nil - } - } - } - } - rlp, _ := rlp.EncodeToBytes(txs) - return rlp -} - -// testOdr tests odr requests whose validation guaranteed by block headers. -func testOdr(t *testing.T, protocol int, expFail uint64, checkCached bool, fn odrTestFn) { - // Assemble the test environment - netconfig := testnetConfig{ - blocks: 4, - protocol: protocol, - connect: true, - nopruning: true, - } - server, client, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - // Ensure the client has synced all necessary data. - clientHead := client.handler.backend.blockchain.CurrentHeader() - if clientHead.Number.Uint64() != 4 { - t.Fatalf("Failed to sync the chain with server, head: %v", clientHead.Number.Uint64()) - } - // Disable the mechanism that we will wait a few time for request - // even there is no suitable peer to send right now. - waitForPeers = 0 - - test := func(expFail uint64) { - // Mark this as a helper to put the failures at the correct lines - t.Helper() - - for i := uint64(0); i <= server.handler.blockchain.CurrentHeader().Number.Uint64(); i++ { - bhash := rawdb.ReadCanonicalHash(server.db, i) - b1 := fn(light.NoOdr, server.db, server.handler.server.chainConfig, server.handler.blockchain, nil, bhash) - - // Set the timeout as 1 second here, ensure there is enough time - // for travis to make the action. - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - b2 := fn(ctx, client.db, client.handler.backend.chainConfig, nil, client.handler.backend.blockchain, bhash) - cancel() - - eq := bytes.Equal(b1, b2) - exp := i < expFail - if exp && !eq { - t.Fatalf("odr mismatch: have %x, want %x", b2, b1) - } - if !exp && eq { - t.Fatalf("unexpected odr match") - } - } - } - - // expect retrievals to fail (except genesis block) without a les peer - client.handler.backend.peers.lock.Lock() - client.peer.speer.hasBlockHook = func(common.Hash, uint64, bool) bool { return false } - client.handler.backend.peers.lock.Unlock() - test(expFail) - - // expect all retrievals to pass - client.handler.backend.peers.lock.Lock() - client.peer.speer.hasBlockHook = func(common.Hash, uint64, bool) bool { return true } - client.handler.backend.peers.lock.Unlock() - test(5) - - // still expect all retrievals to pass, now data should be cached locally - if checkCached { - client.handler.backend.peers.unregister(client.peer.speer.id) - time.Sleep(time.Millisecond * 10) // ensure that all peerSetNotify callbacks are executed - test(5) - } -} - -func TestGetTxStatusFromUnindexedPeersLES4(t *testing.T) { testGetTxStatusFromUnindexedPeers(t, lpv4) } - -func testGetTxStatusFromUnindexedPeers(t *testing.T, protocol int) { - var ( - blocks = 8 - netconfig = testnetConfig{ - blocks: blocks, - protocol: protocol, - nopruning: true, - } - ) - server, client, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - // Iterate the chain, create the tx indexes locally - var ( - testHash common.Hash - testStatus light.TxStatus - - txs = make(map[common.Hash]*types.Transaction) // Transaction objects set - blockNumbers = make(map[common.Hash]uint64) // Transaction hash to block number mappings - blockHashes = make(map[common.Hash]common.Hash) // Transaction hash to block hash mappings - intraIndex = make(map[common.Hash]uint64) // Transaction intra-index in block - ) - for number := uint64(1); number < server.backend.Blockchain().CurrentBlock().Number.Uint64(); number++ { - block := server.backend.Blockchain().GetBlockByNumber(number) - if block == nil { - t.Fatalf("Failed to retrieve block %d", number) - } - for index, tx := range block.Transactions() { - txs[tx.Hash()] = tx - blockNumbers[tx.Hash()] = number - blockHashes[tx.Hash()] = block.Hash() - intraIndex[tx.Hash()] = uint64(index) - - if testHash == (common.Hash{}) { - testHash = tx.Hash() - testStatus = light.TxStatus{ - Status: txpool.TxStatusIncluded, - Lookup: &rawdb.LegacyTxLookupEntry{ - BlockHash: block.Hash(), - BlockIndex: block.NumberU64(), - Index: uint64(index), - }, - } - } - } - } - // serveMsg processes incoming GetTxStatusMsg and sends the response back. - serveMsg := func(peer *testPeer, txLookup uint64) error { - msg, err := peer.app.ReadMsg() - if err != nil { - return err - } - if msg.Code != GetTxStatusMsg { - return fmt.Errorf("message code mismatch: got %d, expected %d", msg.Code, GetTxStatusMsg) - } - var r GetTxStatusPacket - if err := msg.Decode(&r); err != nil { - return err - } - stats := make([]light.TxStatus, len(r.Hashes)) - for i, hash := range r.Hashes { - number, exist := blockNumbers[hash] - if !exist { - continue // Filter out unknown transactions - } - min := uint64(blocks) - txLookup - if txLookup != txIndexUnlimited && (txLookup == txIndexDisabled || number < min) { - continue // Filter out unindexed transactions - } - stats[i].Status = txpool.TxStatusIncluded - stats[i].Lookup = &rawdb.LegacyTxLookupEntry{ - BlockHash: blockHashes[hash], - BlockIndex: number, - Index: intraIndex[hash], - } - } - data, _ := rlp.EncodeToBytes(stats) - reply := &reply{peer.app, TxStatusMsg, r.ReqID, data} - reply.send(testBufLimit) - return nil - } - - var testspecs = []struct { - peers int - txLookups []uint64 - txs []common.Hash - results []light.TxStatus - }{ - // Retrieve mined transaction from the empty peerset - { - peers: 0, - txLookups: []uint64{}, - txs: []common.Hash{testHash}, - results: []light.TxStatus{{}}, - }, - // Retrieve unknown transaction from the full peers - { - peers: 3, - txLookups: []uint64{txIndexUnlimited, txIndexUnlimited, txIndexUnlimited}, - txs: []common.Hash{randomHash()}, - results: []light.TxStatus{{}}, - }, - // Retrieve mined transaction from the full peers - { - peers: 3, - txLookups: []uint64{txIndexUnlimited, txIndexUnlimited, txIndexUnlimited}, - txs: []common.Hash{testHash}, - results: []light.TxStatus{testStatus}, - }, - // Retrieve mixed transactions from the full peers - { - peers: 3, - txLookups: []uint64{txIndexUnlimited, txIndexUnlimited, txIndexUnlimited}, - txs: []common.Hash{randomHash(), testHash}, - results: []light.TxStatus{{}, testStatus}, - }, - // Retrieve mixed transactions from unindexed peer(but the target is still available) - { - peers: 3, - txLookups: []uint64{uint64(blocks) - testStatus.Lookup.BlockIndex, uint64(blocks) - testStatus.Lookup.BlockIndex - 1, uint64(blocks) - testStatus.Lookup.BlockIndex - 2}, - txs: []common.Hash{randomHash(), testHash}, - results: []light.TxStatus{{}, testStatus}, - }, - // Retrieve mixed transactions from unindexed peer(but the target is not available) - { - peers: 3, - txLookups: []uint64{uint64(blocks) - testStatus.Lookup.BlockIndex - 1, uint64(blocks) - testStatus.Lookup.BlockIndex - 1, uint64(blocks) - testStatus.Lookup.BlockIndex - 2}, - txs: []common.Hash{randomHash(), testHash}, - results: []light.TxStatus{{}, {}}, - }, - } - for _, testspec := range testspecs { - // Create a bunch of server peers with different tx history - var ( - closeFns []func() - ) - for i := 0; i < testspec.peers; i++ { - peer, closePeer, _ := client.newRawPeer(t, fmt.Sprintf("server-%d", i), protocol, testspec.txLookups[i]) - closeFns = append(closeFns, closePeer) - - // Create a one-time routine for serving message - go func(i int, peer *testPeer, lookup uint64) { - serveMsg(peer, lookup) - }(i, peer, testspec.txLookups[i]) - } - - // Send out the GetTxStatus requests, compare the result with - // expected value. - r := &light.TxStatusRequest{Hashes: testspec.txs} - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - - err := client.handler.backend.odr.RetrieveTxStatus(ctx, r) - if err != nil { - t.Errorf("Failed to retrieve tx status %v", err) - } else { - if !reflect.DeepEqual(testspec.results, r.Status) { - t.Errorf("Result mismatch, diff") - } - } - - // Close all connected peers and start the next round - for _, closeFn := range closeFns { - closeFn() - } - } -} - -// randomHash generates a random blob of data and returns it as a hash. -func randomHash() common.Hash { - var hash common.Hash - if n, err := rand.Read(hash[:]); n != common.HashLength || err != nil { - panic(err) - } - return hash -} -*/ diff --git a/les/peer.go b/les/peer.go deleted file mode 100644 index b38a393d4c..0000000000 --- a/les/peer.go +++ /dev/null @@ -1,1362 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "crypto/ecdsa" - "errors" - "fmt" - "math/big" - "math/rand" - "net" - "sync" - "sync/atomic" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/forkid" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/les/flowcontrol" - "github.com/ethereum/go-ethereum/les/utils" - vfc "github.com/ethereum/go-ethereum/les/vflux/client" - vfs "github.com/ethereum/go-ethereum/les/vflux/server" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -var ( - errClosed = errors.New("peer set is closed") - errAlreadyRegistered = errors.New("peer is already registered") - errNotRegistered = errors.New("peer is not registered") -) - -const ( - maxRequestErrors = 20 // number of invalid requests tolerated (makes the protocol less brittle but still avoids spam) - maxResponseErrors = 50 // number of invalid responses tolerated (makes the protocol less brittle but still avoids spam) - - allowedUpdateBytes = 100000 // initial/maximum allowed update size - allowedUpdateRate = time.Millisecond * 10 // time constant for recharging one byte of allowance - - freezeTimeBase = time.Millisecond * 700 // fixed component of client freeze time - freezeTimeRandom = time.Millisecond * 600 // random component of client freeze time - freezeCheckPeriod = time.Millisecond * 100 // buffer value recheck period after initial freeze time has elapsed - - // If the total encoded size of a sent transaction batch is over txSizeCostLimit - // per transaction then the request cost is calculated as proportional to the - // encoded size instead of the transaction count - txSizeCostLimit = 0x4000 - - // handshakeTimeout is the timeout LES handshake will be treated as failed. - handshakeTimeout = 5 * time.Second -) - -const ( - announceTypeNone = iota - announceTypeSimple - announceTypeSigned -) - -type keyValueEntry struct { - Key string - Value rlp.RawValue -} - -type keyValueList []keyValueEntry -type keyValueMap map[string]rlp.RawValue - -func (l keyValueList) add(key string, val interface{}) keyValueList { - var entry keyValueEntry - entry.Key = key - if val == nil { - val = uint64(0) - } - enc, err := rlp.EncodeToBytes(val) - if err == nil { - entry.Value = enc - } - return append(l, entry) -} - -func (l keyValueList) decode() (keyValueMap, uint64) { - m := make(keyValueMap) - var size uint64 - for _, entry := range l { - m[entry.Key] = entry.Value - size += uint64(len(entry.Key)) + uint64(len(entry.Value)) + 8 - } - return m, size -} - -func (m keyValueMap) get(key string, val interface{}) error { - enc, ok := m[key] - if !ok { - return errResp(ErrMissingKey, "%s", key) - } - if val == nil { - return nil - } - return rlp.DecodeBytes(enc, val) -} - -// peerCommons contains fields needed by both server peer and client peer. -type peerCommons struct { - *p2p.Peer - rw p2p.MsgReadWriter - - id string // Peer identity. - version int // Protocol version negotiated. - network uint64 // Network ID being on. - frozen atomic.Bool // Flag whether the peer is frozen. - announceType uint64 // New block announcement type. - serving atomic.Bool // The status indicates the peer is served. - headInfo blockInfo // Last announced block information. - - // Background task queue for caching peer tasks and executing in order. - sendQueue *utils.ExecQueue - - // Flow control agreement. - fcParams flowcontrol.ServerParams // The config for token bucket. - fcCosts requestCostTable // The Maximum request cost table. - - closeCh chan struct{} - lock sync.RWMutex // Lock used to protect all thread-sensitive fields. -} - -// isFrozen returns true if the client is frozen or the server has put our -// client in frozen state -func (p *peerCommons) isFrozen() bool { - return p.frozen.Load() -} - -// canQueue returns an indicator whether the peer can queue an operation. -func (p *peerCommons) canQueue() bool { - return p.sendQueue.CanQueue() && !p.isFrozen() -} - -// queueSend caches a peer operation in the background task queue. -// Please ensure to check `canQueue` before call this function -func (p *peerCommons) queueSend(f func()) bool { - return p.sendQueue.Queue(f) -} - -// String implements fmt.Stringer. -func (p *peerCommons) String() string { - return fmt.Sprintf("Peer %s [%s]", p.id, fmt.Sprintf("les/%d", p.version)) -} - -// PeerInfo represents a short summary of the `eth` sub-protocol metadata known -// about a connected peer. -type PeerInfo struct { - Version int `json:"version"` // Ethereum protocol version negotiated - Difficulty *big.Int `json:"difficulty"` // Total difficulty of the peer's blockchain - Head string `json:"head"` // SHA3 hash of the peer's best owned block -} - -// Info gathers and returns a collection of metadata known about a peer. -func (p *peerCommons) Info() *PeerInfo { - return &PeerInfo{ - Version: p.version, - Difficulty: p.Td(), - Head: fmt.Sprintf("%x", p.Head()), - } -} - -// Head retrieves a copy of the current head (most recent) hash of the peer. -func (p *peerCommons) Head() (hash common.Hash) { - p.lock.RLock() - defer p.lock.RUnlock() - - return p.headInfo.Hash -} - -// Td retrieves the current total difficulty of a peer. -func (p *peerCommons) Td() *big.Int { - p.lock.RLock() - defer p.lock.RUnlock() - - return new(big.Int).Set(p.headInfo.Td) -} - -// HeadAndTd retrieves the current head hash and total difficulty of a peer. -func (p *peerCommons) HeadAndTd() (hash common.Hash, td *big.Int) { - p.lock.RLock() - defer p.lock.RUnlock() - - return p.headInfo.Hash, new(big.Int).Set(p.headInfo.Td) -} - -// sendReceiveHandshake exchanges handshake packet with remote peer and returns any error -// if failed to send or receive packet. -func (p *peerCommons) sendReceiveHandshake(sendList keyValueList) (keyValueList, error) { - var ( - errc = make(chan error, 2) - recvList keyValueList - ) - // Send out own handshake in a new thread - go func() { - errc <- p2p.Send(p.rw, StatusMsg, &sendList) - }() - go func() { - // In the mean time retrieve the remote status message - msg, err := p.rw.ReadMsg() - if err != nil { - errc <- err - return - } - if msg.Code != StatusMsg { - errc <- errResp(ErrNoStatusMsg, "first msg has code %x (!= %x)", msg.Code, StatusMsg) - return - } - if msg.Size > ProtocolMaxMsgSize { - errc <- errResp(ErrMsgTooLarge, "%v > %v", msg.Size, ProtocolMaxMsgSize) - return - } - // Decode the handshake - if err := msg.Decode(&recvList); err != nil { - errc <- errResp(ErrDecode, "msg %v: %v", msg, err) - return - } - errc <- nil - }() - timeout := time.NewTimer(handshakeTimeout) - defer timeout.Stop() - for i := 0; i < 2; i++ { - select { - case err := <-errc: - if err != nil { - return nil, err - } - case <-timeout.C: - return nil, p2p.DiscReadTimeout - } - } - return recvList, nil -} - -// handshake executes the les protocol handshake, negotiating version number, -// network IDs, difficulties, head and genesis blocks. Besides the basic handshake -// fields, server and client can exchange and resolve some specified fields through -// two callback functions. -func (p *peerCommons) handshake(td *big.Int, head common.Hash, headNum uint64, genesis common.Hash, forkID forkid.ID, forkFilter forkid.Filter, sendCallback func(*keyValueList), recvCallback func(keyValueMap) error) error { - p.lock.Lock() - defer p.lock.Unlock() - - var send keyValueList - - // Add some basic handshake fields - send = send.add("protocolVersion", uint64(p.version)) - send = send.add("networkId", p.network) - // Note: the head info announced at handshake is only used in case of server peers - // but dummy values are still announced by clients for compatibility with older servers - send = send.add("headTd", td) - send = send.add("headHash", head) - send = send.add("headNum", headNum) - send = send.add("genesisHash", genesis) - - // If the protocol version is beyond les4, then pass the forkID - // as well. Check http://eips.ethereum.org/EIPS/eip-2124 for more - // spec detail. - if p.version >= lpv4 { - send = send.add("forkID", forkID) - } - // Add client-specified or server-specified fields - if sendCallback != nil { - sendCallback(&send) - } - // Exchange the handshake packet and resolve the received one. - recvList, err := p.sendReceiveHandshake(send) - if err != nil { - return err - } - recv, size := recvList.decode() - if size > allowedUpdateBytes { - return errResp(ErrRequestRejected, "") - } - var rGenesis common.Hash - var rVersion, rNetwork uint64 - if err := recv.get("protocolVersion", &rVersion); err != nil { - return err - } - if err := recv.get("networkId", &rNetwork); err != nil { - return err - } - if err := recv.get("genesisHash", &rGenesis); err != nil { - return err - } - if rGenesis != genesis { - return errResp(ErrGenesisBlockMismatch, "%x (!= %x)", rGenesis[:8], genesis[:8]) - } - if rNetwork != p.network { - return errResp(ErrNetworkIdMismatch, "%d (!= %d)", rNetwork, p.network) - } - if int(rVersion) != p.version { - return errResp(ErrProtocolVersionMismatch, "%d (!= %d)", rVersion, p.version) - } - // Check forkID if the protocol version is beyond the les4 - if p.version >= lpv4 { - var forkID forkid.ID - if err := recv.get("forkID", &forkID); err != nil { - return err - } - if err := forkFilter(forkID); err != nil { - return errResp(ErrForkIDRejected, "%v", err) - } - } - if recvCallback != nil { - return recvCallback(recv) - } - return nil -} - -// close closes the channel and notifies all background routines to exit. -func (p *peerCommons) close() { - close(p.closeCh) - p.sendQueue.Quit() -} - -// serverPeer represents each node to which the client is connected. -// The node here refers to the les server. -type serverPeer struct { - peerCommons - - // Status fields - trusted bool // The flag whether the server is selected as trusted server. - onlyAnnounce bool // The flag whether the server sends announcement only. - chainSince, chainRecent uint64 // The range of chain server peer can serve. - stateSince, stateRecent uint64 // The range of state server peer can serve. - txHistory uint64 // The length of available tx history, 0 means all, 1 means disabled - - fcServer *flowcontrol.ServerNode // Client side mirror token bucket. - vtLock sync.Mutex - nodeValueTracker *vfc.NodeValueTracker - sentReqs map[uint64]sentReqEntry - - // Statistics - errCount utils.LinearExpiredValue // Counter the invalid responses server has replied - updateCount uint64 - updateTime mclock.AbsTime - - // Test callback hooks - hasBlockHook func(common.Hash, uint64, bool) bool // Used to determine whether the server has the specified block. -} - -func newServerPeer(version int, network uint64, trusted bool, p *p2p.Peer, rw p2p.MsgReadWriter) *serverPeer { - return &serverPeer{ - peerCommons: peerCommons{ - Peer: p, - rw: rw, - id: p.ID().String(), - version: version, - network: network, - sendQueue: utils.NewExecQueue(100), - closeCh: make(chan struct{}), - }, - trusted: trusted, - errCount: utils.LinearExpiredValue{Rate: mclock.AbsTime(time.Hour)}, - } -} - -// rejectUpdate returns true if a parameter update has to be rejected because -// the size and/or rate of updates exceed the capacity limitation -func (p *serverPeer) rejectUpdate(size uint64) bool { - now := mclock.Now() - if p.updateCount == 0 { - p.updateTime = now - } else { - dt := now - p.updateTime - p.updateTime = now - - r := uint64(dt / mclock.AbsTime(allowedUpdateRate)) - if p.updateCount > r { - p.updateCount -= r - } else { - p.updateCount = 0 - } - } - p.updateCount += size - return p.updateCount > allowedUpdateBytes -} - -// freeze processes Stop messages from the given server and set the status as -// frozen. -func (p *serverPeer) freeze() { - if p.frozen.CompareAndSwap(false, true) { - p.sendQueue.Clear() - } -} - -// unfreeze processes Resume messages from the given server and set the status -// as unfrozen. -func (p *serverPeer) unfreeze() { - p.frozen.Store(false) -} - -// sendRequest send a request to the server based on the given message type -// and content. -func sendRequest(w p2p.MsgWriter, msgcode, reqID uint64, data interface{}) error { - type req struct { - ReqID uint64 - Data interface{} - } - return p2p.Send(w, msgcode, &req{reqID, data}) -} - -func (p *serverPeer) sendRequest(msgcode, reqID uint64, data interface{}, amount int) error { - p.sentRequest(reqID, uint32(msgcode), uint32(amount)) - return sendRequest(p.rw, msgcode, reqID, data) -} - -// requestHeadersByHash fetches a batch of blocks' headers corresponding to the -// specified header query, based on the hash of an origin block. -func (p *serverPeer) requestHeadersByHash(reqID uint64, origin common.Hash, amount int, skip int, reverse bool) error { - p.Log().Debug("Fetching batch of headers", "count", amount, "fromhash", origin, "skip", skip, "reverse", reverse) - return p.sendRequest(GetBlockHeadersMsg, reqID, &GetBlockHeadersData{Origin: hashOrNumber{Hash: origin}, Amount: uint64(amount), Skip: uint64(skip), Reverse: reverse}, amount) -} - -// requestHeadersByNumber fetches a batch of blocks' headers corresponding to the -// specified header query, based on the number of an origin block. -func (p *serverPeer) requestHeadersByNumber(reqID, origin uint64, amount int, skip int, reverse bool) error { - p.Log().Debug("Fetching batch of headers", "count", amount, "fromnum", origin, "skip", skip, "reverse", reverse) - return p.sendRequest(GetBlockHeadersMsg, reqID, &GetBlockHeadersData{Origin: hashOrNumber{Number: origin}, Amount: uint64(amount), Skip: uint64(skip), Reverse: reverse}, amount) -} - -// requestBodies fetches a batch of blocks' bodies corresponding to the hashes -// specified. -func (p *serverPeer) requestBodies(reqID uint64, hashes []common.Hash) error { - p.Log().Debug("Fetching batch of block bodies", "count", len(hashes)) - return p.sendRequest(GetBlockBodiesMsg, reqID, hashes, len(hashes)) -} - -// requestCode fetches a batch of arbitrary data from a node's known state -// data, corresponding to the specified hashes. -func (p *serverPeer) requestCode(reqID uint64, reqs []CodeReq) error { - p.Log().Debug("Fetching batch of codes", "count", len(reqs)) - return p.sendRequest(GetCodeMsg, reqID, reqs, len(reqs)) -} - -// requestReceipts fetches a batch of transaction receipts from a remote node. -func (p *serverPeer) requestReceipts(reqID uint64, hashes []common.Hash) error { - p.Log().Debug("Fetching batch of receipts", "count", len(hashes)) - return p.sendRequest(GetReceiptsMsg, reqID, hashes, len(hashes)) -} - -// requestProofs fetches a batch of merkle proofs from a remote node. -func (p *serverPeer) requestProofs(reqID uint64, reqs []ProofReq) error { - p.Log().Debug("Fetching batch of proofs", "count", len(reqs)) - return p.sendRequest(GetProofsV2Msg, reqID, reqs, len(reqs)) -} - -// requestHelperTrieProofs fetches a batch of HelperTrie merkle proofs from a remote node. -func (p *serverPeer) requestHelperTrieProofs(reqID uint64, reqs []HelperTrieReq) error { - p.Log().Debug("Fetching batch of HelperTrie proofs", "count", len(reqs)) - return p.sendRequest(GetHelperTrieProofsMsg, reqID, reqs, len(reqs)) -} - -// requestTxStatus fetches a batch of transaction status records from a remote node. -func (p *serverPeer) requestTxStatus(reqID uint64, txHashes []common.Hash) error { - p.Log().Debug("Requesting transaction status", "count", len(txHashes)) - return p.sendRequest(GetTxStatusMsg, reqID, txHashes, len(txHashes)) -} - -// sendTxs creates a reply with a batch of transactions to be added to the remote transaction pool. -func (p *serverPeer) sendTxs(reqID uint64, amount int, txs rlp.RawValue) error { - p.Log().Debug("Sending batch of transactions", "amount", amount, "size", len(txs)) - sizeFactor := (len(txs) + txSizeCostLimit/2) / txSizeCostLimit - if sizeFactor > amount { - amount = sizeFactor - } - return p.sendRequest(SendTxV2Msg, reqID, txs, amount) -} - -// waitBefore implements distPeer interface -func (p *serverPeer) waitBefore(maxCost uint64) (time.Duration, float64) { - return p.fcServer.CanSend(maxCost) -} - -// getRequestCost returns an estimated request cost according to the flow control -// rules negotiated between the server and the client. -func (p *serverPeer) getRequestCost(msgcode uint64, amount int) uint64 { - p.lock.RLock() - defer p.lock.RUnlock() - - costs := p.fcCosts[msgcode] - if costs == nil { - return 0 - } - cost := costs.baseCost + costs.reqCost*uint64(amount) - if cost > p.fcParams.BufLimit { - cost = p.fcParams.BufLimit - } - return cost -} - -// getTxRelayCost returns an estimated relay cost according to the flow control -// rules negotiated between the server and the client. -func (p *serverPeer) getTxRelayCost(amount, size int) uint64 { - p.lock.RLock() - defer p.lock.RUnlock() - - costs := p.fcCosts[SendTxV2Msg] - if costs == nil { - return 0 - } - cost := costs.baseCost + costs.reqCost*uint64(amount) - sizeCost := costs.baseCost + costs.reqCost*uint64(size)/txSizeCostLimit - if sizeCost > cost { - cost = sizeCost - } - if cost > p.fcParams.BufLimit { - cost = p.fcParams.BufLimit - } - return cost -} - -// HasBlock checks if the peer has a given block -func (p *serverPeer) HasBlock(hash common.Hash, number uint64, hasState bool) bool { - p.lock.RLock() - defer p.lock.RUnlock() - - if p.hasBlockHook != nil { - return p.hasBlockHook(hash, number, hasState) - } - head := p.headInfo.Number - var since, recent uint64 - if hasState { - since = p.stateSince - recent = p.stateRecent - } else { - since = p.chainSince - recent = p.chainRecent - } - return head >= number && number >= since && (recent == 0 || number+recent+4 > head) -} - -// updateFlowControl updates the flow control parameters belonging to the server -// node if the announced key/value set contains relevant fields -func (p *serverPeer) updateFlowControl(update keyValueMap) { - p.lock.Lock() - defer p.lock.Unlock() - - // If any of the flow control params is nil, refuse to update. - var params flowcontrol.ServerParams - if update.get("flowControl/BL", ¶ms.BufLimit) == nil && update.get("flowControl/MRR", ¶ms.MinRecharge) == nil { - // todo can light client set a minimal acceptable flow control params? - p.fcParams = params - p.fcServer.UpdateParams(params) - } - var MRC RequestCostList - if update.get("flowControl/MRC", &MRC) == nil { - costUpdate := MRC.decode(ProtocolLengths[uint(p.version)]) - for code, cost := range costUpdate { - p.fcCosts[code] = cost - } - } -} - -// updateHead updates the head information based on the announcement from -// the peer. -func (p *serverPeer) updateHead(hash common.Hash, number uint64, td *big.Int) { - p.lock.Lock() - defer p.lock.Unlock() - - p.headInfo = blockInfo{Hash: hash, Number: number, Td: td} -} - -// Handshake executes the les protocol handshake, negotiating version number, -// network IDs and genesis blocks. -func (p *serverPeer) Handshake(genesis common.Hash, forkid forkid.ID, forkFilter forkid.Filter) error { - // Note: there is no need to share local head with a server but older servers still - // require these fields so we announce zero values. - return p.handshake(common.Big0, common.Hash{}, 0, genesis, forkid, forkFilter, func(lists *keyValueList) { - // Add some client-specific handshake fields - // - // Enable signed announcement randomly even the server is not trusted. - p.announceType = announceTypeSimple - if p.trusted { - p.announceType = announceTypeSigned - } - *lists = (*lists).add("announceType", p.announceType) - }, func(recv keyValueMap) error { - var ( - rHash common.Hash - rNum uint64 - rTd *big.Int - ) - if err := recv.get("headTd", &rTd); err != nil { - return err - } - if err := recv.get("headHash", &rHash); err != nil { - return err - } - if err := recv.get("headNum", &rNum); err != nil { - return err - } - p.headInfo = blockInfo{Hash: rHash, Number: rNum, Td: rTd} - if recv.get("serveChainSince", &p.chainSince) != nil { - p.onlyAnnounce = true - } - if recv.get("serveRecentChain", &p.chainRecent) != nil { - p.chainRecent = 0 - } - if recv.get("serveStateSince", &p.stateSince) != nil { - p.onlyAnnounce = true - } - if recv.get("serveRecentState", &p.stateRecent) != nil { - p.stateRecent = 0 - } - if recv.get("txRelay", nil) != nil { - p.onlyAnnounce = true - } - if p.version >= lpv4 { - var recentTx uint - if err := recv.get("recentTxLookup", &recentTx); err != nil { - return err - } - p.txHistory = uint64(recentTx) - } else { - // The weak assumption is held here that legacy les server(les2,3) - // has unlimited transaction history. The les serving in these legacy - // versions is disabled if the transaction is unindexed. - p.txHistory = txIndexUnlimited - } - if p.onlyAnnounce && !p.trusted { - return errResp(ErrUselessPeer, "peer cannot serve requests") - } - // Parse flow control handshake packet. - var sParams flowcontrol.ServerParams - if err := recv.get("flowControl/BL", &sParams.BufLimit); err != nil { - return err - } - if err := recv.get("flowControl/MRR", &sParams.MinRecharge); err != nil { - return err - } - var MRC RequestCostList - if err := recv.get("flowControl/MRC", &MRC); err != nil { - return err - } - p.fcParams = sParams - p.fcServer = flowcontrol.NewServerNode(sParams, &mclock.System{}) - p.fcCosts = MRC.decode(ProtocolLengths[uint(p.version)]) - - if !p.onlyAnnounce { - for msgCode := range reqAvgTimeCost { - if p.fcCosts[msgCode] == nil { - return errResp(ErrUselessPeer, "peer does not support message %d", msgCode) - } - } - } - return nil - }) -} - -// setValueTracker sets the value tracker references for connected servers. Note that the -// references should be removed upon disconnection by setValueTracker(nil, nil). -func (p *serverPeer) setValueTracker(nvt *vfc.NodeValueTracker) { - p.vtLock.Lock() - p.nodeValueTracker = nvt - if nvt != nil { - p.sentReqs = make(map[uint64]sentReqEntry) - } else { - p.sentReqs = nil - } - p.vtLock.Unlock() -} - -// updateVtParams updates the server's price table in the value tracker. -func (p *serverPeer) updateVtParams() { - p.vtLock.Lock() - defer p.vtLock.Unlock() - - if p.nodeValueTracker == nil { - return - } - reqCosts := make([]uint64, len(requestList)) - for code, costs := range p.fcCosts { - if m, ok := requestMapping[uint32(code)]; ok { - reqCosts[m.first] = costs.baseCost + costs.reqCost - if m.rest != -1 { - reqCosts[m.rest] = costs.reqCost - } - } - } - p.nodeValueTracker.UpdateCosts(reqCosts) -} - -// sentReqEntry remembers sent requests and their sending times -type sentReqEntry struct { - reqType, amount uint32 - at mclock.AbsTime -} - -// sentRequest marks a request sent at the current moment to this server. -func (p *serverPeer) sentRequest(id uint64, reqType, amount uint32) { - p.vtLock.Lock() - if p.sentReqs != nil { - p.sentReqs[id] = sentReqEntry{reqType, amount, mclock.Now()} - } - p.vtLock.Unlock() -} - -// answeredRequest marks a request answered at the current moment by this server. -func (p *serverPeer) answeredRequest(id uint64) { - p.vtLock.Lock() - if p.sentReqs == nil { - p.vtLock.Unlock() - return - } - e, ok := p.sentReqs[id] - delete(p.sentReqs, id) - nvt := p.nodeValueTracker - p.vtLock.Unlock() - if !ok { - return - } - var ( - vtReqs [2]vfc.ServedRequest - reqCount int - ) - m := requestMapping[e.reqType] - if m.rest == -1 || e.amount <= 1 { - reqCount = 1 - vtReqs[0] = vfc.ServedRequest{ReqType: uint32(m.first), Amount: e.amount} - } else { - reqCount = 2 - vtReqs[0] = vfc.ServedRequest{ReqType: uint32(m.first), Amount: 1} - vtReqs[1] = vfc.ServedRequest{ReqType: uint32(m.rest), Amount: e.amount - 1} - } - dt := time.Duration(mclock.Now() - e.at) - nvt.Served(vtReqs[:reqCount], dt) -} - -// clientPeer represents each node to which the les server is connected. -// The node here refers to the light client. -type clientPeer struct { - peerCommons - - // responseLock ensures that responses are queued in the same order as - // RequestProcessed is called - responseLock sync.Mutex - responseCount uint64 // Counter to generate an unique id for request processing. - - balance vfs.ConnectedBalance - - // invalidLock is used for protecting invalidCount. - invalidLock sync.RWMutex - invalidCount utils.LinearExpiredValue // Counter the invalid request the client peer has made. - - capacity uint64 - // lastAnnounce is the last broadcast created by the server; may be newer than the last head - // sent to the specific client (stored in headInfo) if capacity is zero. In this case the - // latest head is sent when the client gains non-zero capacity. - lastAnnounce announceData - - connectedAt mclock.AbsTime - server bool - errCh chan error - fcClient *flowcontrol.ClientNode // Server side mirror token bucket. -} - -func newClientPeer(version int, network uint64, p *p2p.Peer, rw p2p.MsgReadWriter) *clientPeer { - return &clientPeer{ - peerCommons: peerCommons{ - Peer: p, - rw: rw, - id: p.ID().String(), - version: version, - network: network, - sendQueue: utils.NewExecQueue(100), - closeCh: make(chan struct{}), - }, - invalidCount: utils.LinearExpiredValue{Rate: mclock.AbsTime(time.Hour)}, - errCh: make(chan error, 1), - } -} - -// FreeClientId returns a string identifier for the peer. Multiple peers with -// the same identifier can not be connected in free mode simultaneously. -func (p *clientPeer) FreeClientId() string { - if addr, ok := p.RemoteAddr().(*net.TCPAddr); ok { - if addr.IP.IsLoopback() { - // using peer id instead of loopback ip address allows multiple free - // connections from local machine to own server - return p.id - } else { - return addr.IP.String() - } - } - return p.id -} - -// sendStop notifies the client about being in frozen state -func (p *clientPeer) sendStop() error { - return p2p.Send(p.rw, StopMsg, struct{}{}) -} - -// sendResume notifies the client about getting out of frozen state -func (p *clientPeer) sendResume(bv uint64) error { - return p2p.Send(p.rw, ResumeMsg, bv) -} - -// freeze temporarily puts the client in a frozen state which means all unprocessed -// and subsequent requests are dropped. Unfreezing happens automatically after a short -// time if the client's buffer value is at least in the slightly positive region. -// The client is also notified about being frozen/unfrozen with a Stop/Resume message. -func (p *clientPeer) freeze() { - if p.version < lpv3 { - // if Stop/Resume is not supported then just drop the peer after setting - // its frozen status permanently - p.frozen.Store(true) - p.Peer.Disconnect(p2p.DiscUselessPeer) - return - } - if !p.frozen.Swap(true) { - go func() { - p.sendStop() - time.Sleep(freezeTimeBase + time.Duration(rand.Int63n(int64(freezeTimeRandom)))) - for { - bufValue, bufLimit := p.fcClient.BufferStatus() - if bufLimit == 0 { - return - } - if bufValue <= bufLimit/8 { - time.Sleep(freezeCheckPeriod) - continue - } - p.frozen.Store(false) - p.sendResume(bufValue) - return - } - }() - } -} - -// reply struct represents a reply with the actual data already RLP encoded and -// only the bv (buffer value) missing. This allows the serving mechanism to -// calculate the bv value which depends on the data size before sending the reply. -type reply struct { - w p2p.MsgWriter - msgcode, reqID uint64 - data rlp.RawValue -} - -// send sends the reply with the calculated buffer value -func (r *reply) send(bv uint64) error { - type resp struct { - ReqID, BV uint64 - Data rlp.RawValue - } - return p2p.Send(r.w, r.msgcode, &resp{r.reqID, bv, r.data}) -} - -// size returns the RLP encoded size of the message data -func (r *reply) size() uint32 { - return uint32(len(r.data)) -} - -// replyBlockHeaders creates a reply with a batch of block headers -func (p *clientPeer) replyBlockHeaders(reqID uint64, headers []*types.Header) *reply { - data, _ := rlp.EncodeToBytes(headers) - return &reply{p.rw, BlockHeadersMsg, reqID, data} -} - -// replyBlockBodiesRLP creates a reply with a batch of block contents from -// an already RLP encoded format. -func (p *clientPeer) replyBlockBodiesRLP(reqID uint64, bodies []rlp.RawValue) *reply { - data, _ := rlp.EncodeToBytes(bodies) - return &reply{p.rw, BlockBodiesMsg, reqID, data} -} - -// replyCode creates a reply with a batch of arbitrary internal data, corresponding to the -// hashes requested. -func (p *clientPeer) replyCode(reqID uint64, codes [][]byte) *reply { - data, _ := rlp.EncodeToBytes(codes) - return &reply{p.rw, CodeMsg, reqID, data} -} - -// replyReceiptsRLP creates a reply with a batch of transaction receipts, corresponding to the -// ones requested from an already RLP encoded format. -func (p *clientPeer) replyReceiptsRLP(reqID uint64, receipts []rlp.RawValue) *reply { - data, _ := rlp.EncodeToBytes(receipts) - return &reply{p.rw, ReceiptsMsg, reqID, data} -} - -// replyProofsV2 creates a reply with a batch of merkle proofs, corresponding to the ones requested. -func (p *clientPeer) replyProofsV2(reqID uint64, proofs trienode.ProofList) *reply { - data, _ := rlp.EncodeToBytes(proofs) - return &reply{p.rw, ProofsV2Msg, reqID, data} -} - -// replyHelperTrieProofs creates a reply with a batch of HelperTrie proofs, corresponding to the ones requested. -func (p *clientPeer) replyHelperTrieProofs(reqID uint64, resp HelperTrieResps) *reply { - data, _ := rlp.EncodeToBytes(resp) - return &reply{p.rw, HelperTrieProofsMsg, reqID, data} -} - -// replyTxStatus creates a reply with a batch of transaction status records, corresponding to the ones requested. -func (p *clientPeer) replyTxStatus(reqID uint64, stats []light.TxStatus) *reply { - data, _ := rlp.EncodeToBytes(stats) - return &reply{p.rw, TxStatusMsg, reqID, data} -} - -// sendAnnounce announces the availability of a number of blocks through -// a hash notification. -func (p *clientPeer) sendAnnounce(request announceData) error { - return p2p.Send(p.rw, AnnounceMsg, request) -} - -// InactiveAllowance implements vfs.clientPeer -func (p *clientPeer) InactiveAllowance() time.Duration { - return 0 // will return more than zero for les/5 clients -} - -// getCapacity returns the current capacity of the peer -func (p *clientPeer) getCapacity() uint64 { - p.lock.RLock() - defer p.lock.RUnlock() - - return p.capacity -} - -// UpdateCapacity updates the request serving capacity assigned to a given client -// and also sends an announcement about the updated flow control parameters. -// Note: UpdateCapacity implements vfs.clientPeer and should not block. The requested -// parameter is true if the callback was initiated by ClientPool.SetCapacity on the given peer. -func (p *clientPeer) UpdateCapacity(newCap uint64, requested bool) { - p.lock.Lock() - defer p.lock.Unlock() - - if newCap != p.fcParams.MinRecharge { - p.fcParams = flowcontrol.ServerParams{MinRecharge: newCap, BufLimit: newCap * bufLimitRatio} - p.fcClient.UpdateParams(p.fcParams) - var kvList keyValueList - kvList = kvList.add("flowControl/MRR", newCap) - kvList = kvList.add("flowControl/BL", newCap*bufLimitRatio) - p.queueSend(func() { p.sendAnnounce(announceData{Update: kvList}) }) - } - - if p.capacity == 0 && newCap != 0 { - p.sendLastAnnounce() - } - p.capacity = newCap -} - -// announceOrStore sends the given head announcement to the client if the client is -// active (capacity != 0) and the same announcement hasn't been sent before. If the -// client is inactive the announcement is stored and sent later if the client is -// activated again. -func (p *clientPeer) announceOrStore(announce announceData) { - p.lock.Lock() - defer p.lock.Unlock() - - p.lastAnnounce = announce - if p.capacity != 0 { - p.sendLastAnnounce() - } -} - -// announce sends the given head announcement to the client if it hasn't been sent before -func (p *clientPeer) sendLastAnnounce() { - if p.lastAnnounce.Td == nil { - return - } - if p.headInfo.Td == nil || p.lastAnnounce.Td.Cmp(p.headInfo.Td) > 0 { - if !p.queueSend(func() { p.sendAnnounce(p.lastAnnounce) }) { - p.Log().Debug("Dropped announcement because queue is full", "number", p.lastAnnounce.Number, "hash", p.lastAnnounce.Hash) - } else { - p.Log().Debug("Sent announcement", "number", p.lastAnnounce.Number, "hash", p.lastAnnounce.Hash) - } - p.headInfo = blockInfo{Hash: p.lastAnnounce.Hash, Number: p.lastAnnounce.Number, Td: p.lastAnnounce.Td} - } -} - -// Handshake executes the les protocol handshake, negotiating version number, -// network IDs, difficulties, head and genesis blocks. -func (p *clientPeer) Handshake(td *big.Int, head common.Hash, headNum uint64, genesis common.Hash, forkID forkid.ID, forkFilter forkid.Filter, server *LesServer) error { - recentTx := server.handler.blockchain.TxLookupLimit() - if recentTx != txIndexUnlimited { - if recentTx < blockSafetyMargin { - recentTx = txIndexDisabled - } else { - recentTx -= blockSafetyMargin - txIndexRecentOffset - } - } - if recentTx != txIndexUnlimited && p.version < lpv4 { - return errors.New("cannot serve old clients without a complete tx index") - } - // Note: clientPeer.headInfo should contain the last head announced to the client by us. - // The values announced in the handshake are dummy values for compatibility reasons and should be ignored. - p.headInfo = blockInfo{Hash: head, Number: headNum, Td: td} - return p.handshake(td, head, headNum, genesis, forkID, forkFilter, func(lists *keyValueList) { - // Add some information which services server can offer. - *lists = (*lists).add("serveHeaders", nil) - *lists = (*lists).add("serveChainSince", uint64(0)) - *lists = (*lists).add("serveStateSince", uint64(0)) - - // If local ethereum node is running in archive mode, advertise ourselves we have - // all version state data. Otherwise only recent state is available. - stateRecent := uint64(core.TriesInMemory - blockSafetyMargin) - if server.archiveMode { - stateRecent = 0 - } - *lists = (*lists).add("serveRecentState", stateRecent) - *lists = (*lists).add("txRelay", nil) - if p.version >= lpv4 { - *lists = (*lists).add("recentTxLookup", recentTx) - } - *lists = (*lists).add("flowControl/BL", server.defParams.BufLimit) - *lists = (*lists).add("flowControl/MRR", server.defParams.MinRecharge) - - var costList RequestCostList - if server.costTracker.testCostList != nil { - costList = server.costTracker.testCostList - } else { - costList = server.costTracker.makeCostList(server.costTracker.globalFactor()) - } - *lists = (*lists).add("flowControl/MRC", costList) - p.fcCosts = costList.decode(ProtocolLengths[uint(p.version)]) - p.fcParams = server.defParams - }, func(recv keyValueMap) error { - p.server = recv.get("flowControl/MRR", nil) == nil - if p.server { - p.announceType = announceTypeNone // connected to another server, send no messages - } else { - if recv.get("announceType", &p.announceType) != nil { - // set default announceType on server side - p.announceType = announceTypeSimple - } - } - return nil - }) -} - -func (p *clientPeer) bumpInvalid() { - p.invalidLock.Lock() - p.invalidCount.Add(1, mclock.Now()) - p.invalidLock.Unlock() -} - -func (p *clientPeer) getInvalid() uint64 { - p.invalidLock.RLock() - defer p.invalidLock.RUnlock() - return p.invalidCount.Value(mclock.Now()) -} - -// Disconnect implements vfs.clientPeer -func (p *clientPeer) Disconnect() { - p.Peer.Disconnect(p2p.DiscRequested) -} - -// serverPeerSubscriber is an interface to notify services about added or -// removed server peers -type serverPeerSubscriber interface { - registerPeer(*serverPeer) - unregisterPeer(*serverPeer) -} - -// serverPeerSet represents the set of active server peers currently -// participating in the Light Ethereum sub-protocol. -type serverPeerSet struct { - peers map[string]*serverPeer - // subscribers is a batch of subscribers and peerset will notify - // these subscribers when the peerset changes(new server peer is - // added or removed) - subscribers []serverPeerSubscriber - closed bool - lock sync.RWMutex -} - -// newServerPeerSet creates a new peer set to track the active server peers. -func newServerPeerSet() *serverPeerSet { - return &serverPeerSet{peers: make(map[string]*serverPeer)} -} - -// subscribe adds a service to be notified about added or removed -// peers and also register all active peers into the given service. -func (ps *serverPeerSet) subscribe(sub serverPeerSubscriber) { - ps.lock.Lock() - defer ps.lock.Unlock() - - ps.subscribers = append(ps.subscribers, sub) - for _, p := range ps.peers { - sub.registerPeer(p) - } -} - -// register adds a new server peer into the set, or returns an error if the -// peer is already known. -func (ps *serverPeerSet) register(peer *serverPeer) error { - ps.lock.Lock() - defer ps.lock.Unlock() - - if ps.closed { - return errClosed - } - if _, exist := ps.peers[peer.id]; exist { - return errAlreadyRegistered - } - ps.peers[peer.id] = peer - for _, sub := range ps.subscribers { - sub.registerPeer(peer) - } - return nil -} - -// unregister removes a remote peer from the active set, disabling any further -// actions to/from that particular entity. It also initiates disconnection at -// the networking layer. -func (ps *serverPeerSet) unregister(id string) error { - ps.lock.Lock() - defer ps.lock.Unlock() - - p, ok := ps.peers[id] - if !ok { - return errNotRegistered - } - delete(ps.peers, id) - for _, sub := range ps.subscribers { - sub.unregisterPeer(p) - } - p.Peer.Disconnect(p2p.DiscRequested) - return nil -} - -// ids returns a list of all registered peer IDs -func (ps *serverPeerSet) ids() []string { - ps.lock.RLock() - defer ps.lock.RUnlock() - - var ids []string - for id := range ps.peers { - ids = append(ids, id) - } - return ids -} - -// peer retrieves the registered peer with the given id. -func (ps *serverPeerSet) peer(id string) *serverPeer { - ps.lock.RLock() - defer ps.lock.RUnlock() - - return ps.peers[id] -} - -// len returns if the current number of peers in the set. -func (ps *serverPeerSet) len() int { - ps.lock.RLock() - defer ps.lock.RUnlock() - - return len(ps.peers) -} - -// allServerPeers returns all server peers in a list. -func (ps *serverPeerSet) allPeers() []*serverPeer { - ps.lock.RLock() - defer ps.lock.RUnlock() - - list := make([]*serverPeer, 0, len(ps.peers)) - for _, p := range ps.peers { - list = append(list, p) - } - return list -} - -// close disconnects all peers. No new peers can be registered -// after close has returned. -func (ps *serverPeerSet) close() { - ps.lock.Lock() - defer ps.lock.Unlock() - - for _, p := range ps.peers { - p.Disconnect(p2p.DiscQuitting) - } - ps.closed = true -} - -// clientPeerSet represents the set of active client peers currently -// participating in the Light Ethereum sub-protocol. -type clientPeerSet struct { - peers map[enode.ID]*clientPeer - lock sync.RWMutex - closed bool - - privateKey *ecdsa.PrivateKey - lastAnnounce, signedAnnounce announceData -} - -// newClientPeerSet creates a new peer set to track the client peers. -func newClientPeerSet() *clientPeerSet { - return &clientPeerSet{peers: make(map[enode.ID]*clientPeer)} -} - -// register adds a new peer into the peer set, or returns an error if the -// peer is already known. -func (ps *clientPeerSet) register(peer *clientPeer) error { - ps.lock.Lock() - defer ps.lock.Unlock() - - if ps.closed { - return errClosed - } - if _, exist := ps.peers[peer.ID()]; exist { - return errAlreadyRegistered - } - ps.peers[peer.ID()] = peer - ps.announceOrStore(peer) - return nil -} - -// unregister removes a remote peer from the peer set, disabling any further -// actions to/from that particular entity. It also initiates disconnection -// at the networking layer. -func (ps *clientPeerSet) unregister(id enode.ID) error { - ps.lock.Lock() - defer ps.lock.Unlock() - - p, ok := ps.peers[id] - if !ok { - return errNotRegistered - } - delete(ps.peers, id) - p.Peer.Disconnect(p2p.DiscRequested) - return nil -} - -// ids returns a list of all registered peer IDs -func (ps *clientPeerSet) ids() []enode.ID { - ps.lock.RLock() - defer ps.lock.RUnlock() - - var ids []enode.ID - for id := range ps.peers { - ids = append(ids, id) - } - return ids -} - -// peer retrieves the registered peer with the given id. -func (ps *clientPeerSet) peer(id enode.ID) *clientPeer { - ps.lock.RLock() - defer ps.lock.RUnlock() - - return ps.peers[id] -} - -// setSignerKey sets the signer key for signed announcements. Should be called before -// starting the protocol handler. -func (ps *clientPeerSet) setSignerKey(privateKey *ecdsa.PrivateKey) { - ps.privateKey = privateKey -} - -// broadcast sends the given announcements to all active peers -func (ps *clientPeerSet) broadcast(announce announceData) { - ps.lock.Lock() - defer ps.lock.Unlock() - - ps.lastAnnounce = announce - for _, peer := range ps.peers { - ps.announceOrStore(peer) - } -} - -// announceOrStore sends the requested type of announcement to the given peer or stores -// it for later if the peer is inactive (capacity == 0). -func (ps *clientPeerSet) announceOrStore(p *clientPeer) { - if ps.lastAnnounce.Td == nil { - return - } - switch p.announceType { - case announceTypeSimple: - p.announceOrStore(ps.lastAnnounce) - case announceTypeSigned: - if ps.signedAnnounce.Hash != ps.lastAnnounce.Hash { - ps.signedAnnounce = ps.lastAnnounce - ps.signedAnnounce.sign(ps.privateKey) - } - p.announceOrStore(ps.signedAnnounce) - } -} - -// close disconnects all peers. No new peers can be registered -// after close has returned. -func (ps *clientPeerSet) close() { - ps.lock.Lock() - defer ps.lock.Unlock() - - for _, p := range ps.peers { - p.Peer.Disconnect(p2p.DiscQuitting) - } - ps.closed = true -} - -// serverSet is a special set which contains all connected les servers. -// Les servers will also be discovered by discovery protocol because they -// also run the LES protocol. We can't drop them although they are useless -// for us(server) but for other protocols(e.g. ETH) upon the devp2p they -// may be useful. -type serverSet struct { - lock sync.Mutex - set map[string]*clientPeer - closed bool -} - -func newServerSet() *serverSet { - return &serverSet{set: make(map[string]*clientPeer)} -} - -func (s *serverSet) register(peer *clientPeer) error { - s.lock.Lock() - defer s.lock.Unlock() - - if s.closed { - return errClosed - } - if _, exist := s.set[peer.id]; exist { - return errAlreadyRegistered - } - s.set[peer.id] = peer - return nil -} - -func (s *serverSet) unregister(peer *clientPeer) error { - s.lock.Lock() - defer s.lock.Unlock() - - if s.closed { - return errClosed - } - if _, exist := s.set[peer.id]; !exist { - return errNotRegistered - } - delete(s.set, peer.id) - peer.Peer.Disconnect(p2p.DiscQuitting) - return nil -} - -func (s *serverSet) close() { - s.lock.Lock() - defer s.lock.Unlock() - - for _, p := range s.set { - p.Peer.Disconnect(p2p.DiscQuitting) - } - s.closed = true -} diff --git a/les/peer_test.go b/les/peer_test.go deleted file mode 100644 index d6ca0eac7c..0000000000 --- a/les/peer_test.go +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "crypto/rand" - "errors" - "math/big" - "reflect" - "sort" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/forkid" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/params" -) - -type testServerPeerSub struct { - regCh chan *serverPeer - unregCh chan *serverPeer -} - -func newTestServerPeerSub() *testServerPeerSub { - return &testServerPeerSub{ - regCh: make(chan *serverPeer, 1), - unregCh: make(chan *serverPeer, 1), - } -} - -func (t *testServerPeerSub) registerPeer(p *serverPeer) { t.regCh <- p } -func (t *testServerPeerSub) unregisterPeer(p *serverPeer) { t.unregCh <- p } - -func TestPeerSubscription(t *testing.T) { - peers := newServerPeerSet() - defer peers.close() - - checkIds := func(expect []string) { - given := peers.ids() - if len(given) == 0 && len(expect) == 0 { - return - } - sort.Strings(given) - sort.Strings(expect) - if !reflect.DeepEqual(given, expect) { - t.Fatalf("all peer ids mismatch, want %v, given %v", expect, given) - } - } - checkPeers := func(peerCh chan *serverPeer) { - select { - case <-peerCh: - case <-time.NewTimer(100 * time.Millisecond).C: - t.Fatalf("timeout, no event received") - } - select { - case <-peerCh: - t.Fatalf("unexpected event received") - case <-time.NewTimer(10 * time.Millisecond).C: - } - } - checkIds([]string{}) - - sub := newTestServerPeerSub() - peers.subscribe(sub) - - // Generate a random id and create the peer - var id enode.ID - rand.Read(id[:]) - peer := newServerPeer(2, NetworkId, false, p2p.NewPeer(id, "name", nil), nil) - peers.register(peer) - - checkIds([]string{peer.id}) - checkPeers(sub.regCh) - - peers.unregister(peer.id) - checkIds([]string{}) - checkPeers(sub.unregCh) -} - -type fakeChain struct{} - -func (f *fakeChain) Config() *params.ChainConfig { return params.MainnetChainConfig } -func (f *fakeChain) Genesis() *types.Block { - return core.DefaultGenesisBlock().ToBlock() -} -func (f *fakeChain) CurrentHeader() *types.Header { return &types.Header{Number: big.NewInt(10000000)} } - -func TestHandshake(t *testing.T) { - // Create a message pipe to communicate through - app, net := p2p.MsgPipe() - - // Generate a random id and create the peer - var id enode.ID - rand.Read(id[:]) - - peer1 := newClientPeer(2, NetworkId, p2p.NewPeer(id, "name", nil), net) - peer2 := newServerPeer(2, NetworkId, true, p2p.NewPeer(id, "name", nil), app) - - var ( - errCh1 = make(chan error, 1) - errCh2 = make(chan error, 1) - - td = big.NewInt(100) - head = common.HexToHash("deadbeef") - headNum = uint64(10) - genesis = common.HexToHash("cafebabe") - - chain1, chain2 = &fakeChain{}, &fakeChain{} - forkID1 = forkid.NewID(chain1.Config(), chain1.Genesis(), chain1.CurrentHeader().Number.Uint64(), chain1.CurrentHeader().Time) - forkID2 = forkid.NewID(chain2.Config(), chain2.Genesis(), chain2.CurrentHeader().Number.Uint64(), chain2.CurrentHeader().Time) - filter1, filter2 = forkid.NewFilter(chain1), forkid.NewFilter(chain2) - ) - - go func() { - errCh1 <- peer1.handshake(td, head, headNum, genesis, forkID1, filter1, func(list *keyValueList) { - var announceType uint64 = announceTypeSigned - *list = (*list).add("announceType", announceType) - }, nil) - }() - go func() { - errCh2 <- peer2.handshake(td, head, headNum, genesis, forkID2, filter2, nil, func(recv keyValueMap) error { - var reqType uint64 - err := recv.get("announceType", &reqType) - if err != nil { - return err - } - if reqType != announceTypeSigned { - return errors.New("expected announceTypeSigned") - } - return nil - }) - }() - - for i := 0; i < 2; i++ { - select { - case err := <-errCh1: - if err != nil { - t.Fatalf("handshake failed, %v", err) - } - case err := <-errCh2: - if err != nil { - t.Fatalf("handshake failed, %v", err) - } - case <-time.After(time.Second): - t.Fatalf("timeout") - } - } -} diff --git a/les/protocol.go b/les/protocol.go deleted file mode 100644 index cfebdbfb9a..0000000000 --- a/les/protocol.go +++ /dev/null @@ -1,327 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "crypto/ecdsa" - "errors" - "fmt" - "io" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - vfc "github.com/ethereum/go-ethereum/les/vflux/client" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/rlp" -) - -// Constants to match up protocol versions and messages -const ( - lpv2 = 2 - lpv3 = 3 - lpv4 = 4 -) - -// Supported versions of the les protocol (first is primary) -var ( - ClientProtocolVersions = []uint{lpv2, lpv3, lpv4} - ServerProtocolVersions = []uint{lpv2, lpv3, lpv4} -) - -// ProtocolLengths is the number of implemented message corresponding to different protocol versions. -var ProtocolLengths = map[uint]uint64{lpv2: 22, lpv3: 24, lpv4: 24} - -const ( - NetworkId = 1 - ProtocolMaxMsgSize = 10 * 1024 * 1024 // Maximum cap on the size of a protocol message - blockSafetyMargin = 4 // safety margin applied to block ranges specified relative to head block - - txIndexUnlimited = 0 // this value in the "recentTxLookup" handshake field means the entire tx index history is served - txIndexDisabled = 1 // this value means tx index is not served at all - txIndexRecentOffset = 1 // txIndexRecentOffset + N in the handshake field means then tx index of the last N blocks is supported -) - -// les protocol message codes -const ( - // Protocol messages inherited from LPV1 - StatusMsg = 0x00 - AnnounceMsg = 0x01 - GetBlockHeadersMsg = 0x02 - BlockHeadersMsg = 0x03 - GetBlockBodiesMsg = 0x04 - BlockBodiesMsg = 0x05 - GetReceiptsMsg = 0x06 - ReceiptsMsg = 0x07 - GetCodeMsg = 0x0a - CodeMsg = 0x0b - // Protocol messages introduced in LPV2 - GetProofsV2Msg = 0x0f - ProofsV2Msg = 0x10 - GetHelperTrieProofsMsg = 0x11 - HelperTrieProofsMsg = 0x12 - SendTxV2Msg = 0x13 - GetTxStatusMsg = 0x14 - TxStatusMsg = 0x15 - // Protocol messages introduced in LPV3 - StopMsg = 0x16 - ResumeMsg = 0x17 -) - -// GetBlockHeadersData represents a block header query (the request ID is not included) -type GetBlockHeadersData struct { - Origin hashOrNumber // Block from which to retrieve headers - Amount uint64 // Maximum number of headers to retrieve - Skip uint64 // Blocks to skip between consecutive headers - Reverse bool // Query direction (false = rising towards latest, true = falling towards genesis) -} - -// GetBlockHeadersPacket represents a block header request -type GetBlockHeadersPacket struct { - ReqID uint64 - Query GetBlockHeadersData -} - -// GetBlockBodiesPacket represents a block body request -type GetBlockBodiesPacket struct { - ReqID uint64 - Hashes []common.Hash -} - -// GetCodePacket represents a contract code request -type GetCodePacket struct { - ReqID uint64 - Reqs []CodeReq -} - -// GetReceiptsPacket represents a block receipts request -type GetReceiptsPacket struct { - ReqID uint64 - Hashes []common.Hash -} - -// GetProofsPacket represents a proof request -type GetProofsPacket struct { - ReqID uint64 - Reqs []ProofReq -} - -// GetHelperTrieProofsPacket represents a helper trie proof request -type GetHelperTrieProofsPacket struct { - ReqID uint64 - Reqs []HelperTrieReq -} - -// SendTxPacket represents a transaction propagation request -type SendTxPacket struct { - ReqID uint64 - Txs []*types.Transaction -} - -// GetTxStatusPacket represents a transaction status query -type GetTxStatusPacket struct { - ReqID uint64 - Hashes []common.Hash -} - -type requestInfo struct { - name string - maxCount uint64 - refBasketFirst, refBasketRest float64 -} - -// reqMapping maps an LES request to one or two vflux service vector entries. -// If rest != -1 and the request type is used with amounts larger than one then the -// first one of the multi-request is mapped to first while the rest is mapped to rest. -type reqMapping struct { - first, rest int -} - -var ( - // requests describes the available LES request types and their initializing amounts - // in the vfc.ValueTracker reference basket. Initial values are estimates - // based on the same values as the server's default cost estimates (reqAvgTimeCost). - requests = map[uint64]requestInfo{ - GetBlockHeadersMsg: {"GetBlockHeaders", MaxHeaderFetch, 10, 1000}, - GetBlockBodiesMsg: {"GetBlockBodies", MaxBodyFetch, 1, 0}, - GetReceiptsMsg: {"GetReceipts", MaxReceiptFetch, 1, 0}, - GetCodeMsg: {"GetCode", MaxCodeFetch, 1, 0}, - GetProofsV2Msg: {"GetProofsV2", MaxProofsFetch, 10, 0}, - GetHelperTrieProofsMsg: {"GetHelperTrieProofs", MaxHelperTrieProofsFetch, 10, 100}, - SendTxV2Msg: {"SendTxV2", MaxTxSend, 1, 0}, - GetTxStatusMsg: {"GetTxStatus", MaxTxStatus, 10, 0}, - } - requestList []vfc.RequestInfo - requestMapping map[uint32]reqMapping -) - -// init creates a request list and mapping between protocol message codes and vflux -// service vector indices. -func init() { - requestMapping = make(map[uint32]reqMapping) - for code, req := range requests { - cost := reqAvgTimeCost[code] - rm := reqMapping{len(requestList), -1} - requestList = append(requestList, vfc.RequestInfo{ - Name: req.name + ".first", - InitAmount: req.refBasketFirst, - InitValue: float64(cost.baseCost + cost.reqCost), - }) - if req.refBasketRest != 0 { - rm.rest = len(requestList) - requestList = append(requestList, vfc.RequestInfo{ - Name: req.name + ".rest", - InitAmount: req.refBasketRest, - InitValue: float64(cost.reqCost), - }) - } - requestMapping[uint32(code)] = rm - } -} - -type errCode int - -const ( - ErrMsgTooLarge = iota - ErrDecode - ErrInvalidMsgCode - ErrProtocolVersionMismatch - ErrNetworkIdMismatch - ErrGenesisBlockMismatch - ErrNoStatusMsg - ErrExtraStatusMsg - ErrSuspendedPeer - ErrUselessPeer - ErrRequestRejected - ErrUnexpectedResponse - ErrInvalidResponse - ErrTooManyTimeouts - ErrMissingKey - ErrForkIDRejected -) - -func (e errCode) String() string { - return errorToString[int(e)] -} - -// XXX change once legacy code is out -var errorToString = map[int]string{ - ErrMsgTooLarge: "Message too long", - ErrDecode: "Invalid message", - ErrInvalidMsgCode: "Invalid message code", - ErrProtocolVersionMismatch: "Protocol version mismatch", - ErrNetworkIdMismatch: "NetworkId mismatch", - ErrGenesisBlockMismatch: "Genesis block mismatch", - ErrNoStatusMsg: "No status message", - ErrExtraStatusMsg: "Extra status message", - ErrSuspendedPeer: "Suspended peer", - ErrRequestRejected: "Request rejected", - ErrUnexpectedResponse: "Unexpected response", - ErrInvalidResponse: "Invalid response", - ErrTooManyTimeouts: "Too many request timeouts", - ErrMissingKey: "Key missing from list", - ErrForkIDRejected: "ForkID rejected", -} - -// announceData is the network packet for the block announcements. -type announceData struct { - Hash common.Hash // Hash of one particular block being announced - Number uint64 // Number of one particular block being announced - Td *big.Int // Total difficulty of one particular block being announced - ReorgDepth uint64 - Update keyValueList -} - -// sanityCheck verifies that the values are reasonable, as a DoS protection -func (a *announceData) sanityCheck() error { - if tdlen := a.Td.BitLen(); tdlen > 100 { - return fmt.Errorf("too large block TD: bitlen %d", tdlen) - } - return nil -} - -// sign adds a signature to the block announcement by the given privKey -func (a *announceData) sign(privKey *ecdsa.PrivateKey) { - rlp, _ := rlp.EncodeToBytes(blockInfo{a.Hash, a.Number, a.Td}) - sig, _ := crypto.Sign(crypto.Keccak256(rlp), privKey) - a.Update = a.Update.add("sign", sig) -} - -// checkSignature verifies if the block announcement has a valid signature by the given pubKey -func (a *announceData) checkSignature(id enode.ID, update keyValueMap) error { - var sig []byte - if err := update.get("sign", &sig); err != nil { - return err - } - rlp, _ := rlp.EncodeToBytes(blockInfo{a.Hash, a.Number, a.Td}) - recPubkey, err := crypto.SigToPub(crypto.Keccak256(rlp), sig) - if err != nil { - return err - } - if id == enode.PubkeyToIDV4(recPubkey) { - return nil - } - return errors.New("wrong signature") -} - -type blockInfo struct { - Hash common.Hash // Hash of one particular block being announced - Number uint64 // Number of one particular block being announced - Td *big.Int // Total difficulty of one particular block being announced -} - -// hashOrNumber is a combined field for specifying an origin block. -type hashOrNumber struct { - Hash common.Hash // Block hash from which to retrieve headers (excludes Number) - Number uint64 // Block hash from which to retrieve headers (excludes Hash) -} - -// EncodeRLP is a specialized encoder for hashOrNumber to encode only one of the -// two contained union fields. -func (hn *hashOrNumber) EncodeRLP(w io.Writer) error { - if hn.Hash == (common.Hash{}) { - return rlp.Encode(w, hn.Number) - } - if hn.Number != 0 { - return fmt.Errorf("both origin hash (%x) and number (%d) provided", hn.Hash, hn.Number) - } - return rlp.Encode(w, hn.Hash) -} - -// DecodeRLP is a specialized decoder for hashOrNumber to decode the contents -// into either a block hash or a block number. -func (hn *hashOrNumber) DecodeRLP(s *rlp.Stream) error { - _, size, err := s.Kind() - switch { - case err != nil: - return err - case size == 32: - hn.Number = 0 - return s.Decode(&hn.Hash) - case size <= 8: - hn.Hash = common.Hash{} - return s.Decode(&hn.Number) - default: - return fmt.Errorf("invalid input size %d for origin", size) - } -} - -// CodeData is the network response packet for a node data retrieval. -type CodeData []struct { - Value []byte -} diff --git a/les/request_test.go b/les/request_test.go deleted file mode 100644 index 5e354b7efd..0000000000 --- a/les/request_test.go +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -// Note: these tests are disabled now because they cannot work with the old sync -// mechanism removed but will be useful again once the PoS ultralight mode is implemented - -/* -import ( - "context" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/light" -) - -var testBankSecureTrieKey = secAddr(bankAddr) - -func secAddr(addr common.Address) []byte { - return crypto.Keccak256(addr[:]) -} - -type accessTestFn func(db ethdb.Database, bhash common.Hash, number uint64) light.OdrRequest - -func TestBlockAccessLes2(t *testing.T) { testAccess(t, 2, tfBlockAccess) } -func TestBlockAccessLes3(t *testing.T) { testAccess(t, 3, tfBlockAccess) } -func TestBlockAccessLes4(t *testing.T) { testAccess(t, 4, tfBlockAccess) } - -func tfBlockAccess(db ethdb.Database, bhash common.Hash, number uint64) light.OdrRequest { - return &light.BlockRequest{Hash: bhash, Number: number} -} - -func TestReceiptsAccessLes2(t *testing.T) { testAccess(t, 2, tfReceiptsAccess) } -func TestReceiptsAccessLes3(t *testing.T) { testAccess(t, 3, tfReceiptsAccess) } -func TestReceiptsAccessLes4(t *testing.T) { testAccess(t, 4, tfReceiptsAccess) } - -func tfReceiptsAccess(db ethdb.Database, bhash common.Hash, number uint64) light.OdrRequest { - return &light.ReceiptsRequest{Hash: bhash, Number: number} -} - -func TestTrieEntryAccessLes2(t *testing.T) { testAccess(t, 2, tfTrieEntryAccess) } -func TestTrieEntryAccessLes3(t *testing.T) { testAccess(t, 3, tfTrieEntryAccess) } -func TestTrieEntryAccessLes4(t *testing.T) { testAccess(t, 4, tfTrieEntryAccess) } - -func tfTrieEntryAccess(db ethdb.Database, bhash common.Hash, number uint64) light.OdrRequest { - if number := rawdb.ReadHeaderNumber(db, bhash); number != nil { - return &light.TrieRequest{Id: light.StateTrieID(rawdb.ReadHeader(db, bhash, *number)), Key: testBankSecureTrieKey} - } - return nil -} - -func TestCodeAccessLes2(t *testing.T) { testAccess(t, 2, tfCodeAccess) } -func TestCodeAccessLes3(t *testing.T) { testAccess(t, 3, tfCodeAccess) } -func TestCodeAccessLes4(t *testing.T) { testAccess(t, 4, tfCodeAccess) } - -func tfCodeAccess(db ethdb.Database, bhash common.Hash, num uint64) light.OdrRequest { - number := rawdb.ReadHeaderNumber(db, bhash) - if number != nil { - return nil - } - header := rawdb.ReadHeader(db, bhash, *number) - if header.Number.Uint64() < testContractDeployed { - return nil - } - sti := light.StateTrieID(header) - ci := light.StorageTrieID(sti, testContractAddr, types.EmptyRootHash) - return &light.CodeRequest{Id: ci, Hash: crypto.Keccak256Hash(testContractCodeDeployed)} -} - -func testAccess(t *testing.T, protocol int, fn accessTestFn) { - // Assemble the test environment - netconfig := testnetConfig{ - blocks: 4, - protocol: protocol, - indexFn: nil, - connect: true, - nopruning: true, - } - server, client, tearDown := newClientServerEnv(t, netconfig) - defer tearDown() - - // Ensure the client has synced all necessary data. - clientHead := client.handler.backend.blockchain.CurrentHeader() - if clientHead.Number.Uint64() != 4 { - t.Fatalf("Failed to sync the chain with server, head: %v", clientHead.Number.Uint64()) - } - - test := func(expFail uint64) { - for i := uint64(0); i <= server.handler.blockchain.CurrentHeader().Number.Uint64(); i++ { - bhash := rawdb.ReadCanonicalHash(server.db, i) - if req := fn(client.db, bhash, i); req != nil { - ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond) - - err := client.handler.backend.odr.Retrieve(ctx, req) - cancel() - - got := err == nil - exp := i < expFail - if exp && !got { - t.Errorf("object retrieval failed") - } - if !exp && got { - t.Errorf("unexpected object retrieval success") - } - } - } - } - test(5) -} -*/ diff --git a/les/retrieve.go b/les/retrieve.go deleted file mode 100644 index 728f960a54..0000000000 --- a/les/retrieve.go +++ /dev/null @@ -1,421 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "context" - "errors" - "sync" - "time" - - "github.com/ethereum/go-ethereum/light" -) - -var ( - retryQueue = time.Millisecond * 100 - hardRequestTimeout = time.Second * 10 -) - -// retrieveManager is a layer on top of requestDistributor which takes care of -// matching replies by request ID and handles timeouts and resends if necessary. -type retrieveManager struct { - dist *requestDistributor - peers *serverPeerSet - softRequestTimeout func() time.Duration - - lock sync.RWMutex - sentReqs map[uint64]*sentReq -} - -// validatorFunc is a function that processes a reply message -type validatorFunc func(distPeer, *Msg) error - -// sentReq represents a request sent and tracked by retrieveManager -type sentReq struct { - rm *retrieveManager - req *distReq - id uint64 - validate validatorFunc - - eventsCh chan reqPeerEvent - stopCh chan struct{} - stopped bool - err error - - lock sync.RWMutex // protect access to sentTo map - sentTo map[distPeer]sentReqToPeer - - lastReqQueued bool // last request has been queued but not sent - lastReqSentTo distPeer // if not nil then last request has been sent to given peer but not timed out - reqSrtoCount int // number of requests that reached soft (but not hard) timeout -} - -// sentReqToPeer notifies the request-from-peer goroutine (tryRequest) about a response -// delivered by the given peer. Only one delivery is allowed per request per peer, -// after which delivered is set to true, the validity of the response is sent on the -// valid channel and no more responses are accepted. -type sentReqToPeer struct { - delivered, frozen bool - event chan int -} - -// reqPeerEvent is sent by the request-from-peer goroutine (tryRequest) to the -// request state machine (retrieveLoop) through the eventsCh channel. -type reqPeerEvent struct { - event int - peer distPeer -} - -const ( - rpSent = iota // if peer == nil, not sent (no suitable peers) - rpSoftTimeout - rpHardTimeout - rpDeliveredValid - rpDeliveredInvalid - rpNotDelivered -) - -// newRetrieveManager creates the retrieve manager -func newRetrieveManager(peers *serverPeerSet, dist *requestDistributor, srto func() time.Duration) *retrieveManager { - return &retrieveManager{ - peers: peers, - dist: dist, - sentReqs: make(map[uint64]*sentReq), - softRequestTimeout: srto, - } -} - -// retrieve sends a request (to multiple peers if necessary) and waits for an answer -// that is delivered through the deliver function and successfully validated by the -// validator callback. It returns when a valid answer is delivered or the context is -// cancelled. -func (rm *retrieveManager) retrieve(ctx context.Context, reqID uint64, req *distReq, val validatorFunc, shutdown chan struct{}) error { - sentReq := rm.sendReq(reqID, req, val) - select { - case <-sentReq.stopCh: - case <-ctx.Done(): - sentReq.stop(ctx.Err()) - case <-shutdown: - sentReq.stop(errors.New("client is shutting down")) - } - return sentReq.getError() -} - -// sendReq starts a process that keeps trying to retrieve a valid answer for a -// request from any suitable peers until stopped or succeeded. -func (rm *retrieveManager) sendReq(reqID uint64, req *distReq, val validatorFunc) *sentReq { - r := &sentReq{ - rm: rm, - req: req, - id: reqID, - sentTo: make(map[distPeer]sentReqToPeer), - stopCh: make(chan struct{}), - eventsCh: make(chan reqPeerEvent, 10), - validate: val, - } - - canSend := req.canSend - req.canSend = func(p distPeer) bool { - // add an extra check to canSend: the request has not been sent to the same peer before - r.lock.RLock() - _, sent := r.sentTo[p] - r.lock.RUnlock() - return !sent && canSend(p) - } - - request := req.request - req.request = func(p distPeer) func() { - // before actually sending the request, put an entry into the sentTo map - r.lock.Lock() - r.sentTo[p] = sentReqToPeer{delivered: false, frozen: false, event: make(chan int, 1)} - r.lock.Unlock() - return request(p) - } - rm.lock.Lock() - rm.sentReqs[reqID] = r - rm.lock.Unlock() - - go r.retrieveLoop() - return r -} - -// deliver is called by the LES protocol manager to deliver reply messages to waiting requests -func (rm *retrieveManager) deliver(peer distPeer, msg *Msg) error { - rm.lock.RLock() - req, ok := rm.sentReqs[msg.ReqID] - rm.lock.RUnlock() - - if ok { - return req.deliver(peer, msg) - } - return errResp(ErrUnexpectedResponse, "reqID = %v", msg.ReqID) -} - -// frozen is called by the LES protocol manager when a server has suspended its service and we -// should not expect an answer for the requests already sent there -func (rm *retrieveManager) frozen(peer distPeer) { - rm.lock.RLock() - defer rm.lock.RUnlock() - - for _, req := range rm.sentReqs { - req.frozen(peer) - } -} - -// reqStateFn represents a state of the retrieve loop state machine -type reqStateFn func() reqStateFn - -// retrieveLoop is the retrieval state machine event loop -func (r *sentReq) retrieveLoop() { - go r.tryRequest() - r.lastReqQueued = true - state := r.stateRequesting - - for state != nil { - state = state() - } - - r.rm.lock.Lock() - delete(r.rm.sentReqs, r.id) - r.rm.lock.Unlock() -} - -// stateRequesting: a request has been queued or sent recently; when it reaches soft timeout, -// a new request is sent to a new peer -func (r *sentReq) stateRequesting() reqStateFn { - select { - case ev := <-r.eventsCh: - r.update(ev) - switch ev.event { - case rpSent: - if ev.peer == nil { - // request send failed, no more suitable peers - if r.waiting() { - // we are already waiting for sent requests which may succeed so keep waiting - return r.stateNoMorePeers - } - // nothing to wait for, no more peers to ask, return with error - r.stop(light.ErrNoPeers) - // no need to go to stopped state because waiting() already returned false - return nil - } - case rpSoftTimeout: - // last request timed out, try asking a new peer - go r.tryRequest() - r.lastReqQueued = true - return r.stateRequesting - case rpDeliveredInvalid, rpNotDelivered: - // if it was the last sent request (set to nil by update) then start a new one - if !r.lastReqQueued && r.lastReqSentTo == nil { - go r.tryRequest() - r.lastReqQueued = true - } - return r.stateRequesting - case rpDeliveredValid: - r.stop(nil) - return r.stateStopped - } - return r.stateRequesting - case <-r.stopCh: - return r.stateStopped - } -} - -// stateNoMorePeers: could not send more requests because no suitable peers are available. -// Peers may become suitable for a certain request later or new peers may appear so we -// keep trying. -func (r *sentReq) stateNoMorePeers() reqStateFn { - select { - case <-time.After(retryQueue): - go r.tryRequest() - r.lastReqQueued = true - return r.stateRequesting - case ev := <-r.eventsCh: - r.update(ev) - if ev.event == rpDeliveredValid { - r.stop(nil) - return r.stateStopped - } - if r.waiting() { - return r.stateNoMorePeers - } - r.stop(light.ErrNoPeers) - return nil - case <-r.stopCh: - return r.stateStopped - } -} - -// stateStopped: request succeeded or cancelled, just waiting for some peers -// to either answer or time out hard -func (r *sentReq) stateStopped() reqStateFn { - for r.waiting() { - r.update(<-r.eventsCh) - } - return nil -} - -// update updates the queued/sent flags and timed out peers counter according to the event -func (r *sentReq) update(ev reqPeerEvent) { - switch ev.event { - case rpSent: - r.lastReqQueued = false - r.lastReqSentTo = ev.peer - case rpSoftTimeout: - r.lastReqSentTo = nil - r.reqSrtoCount++ - case rpHardTimeout: - r.reqSrtoCount-- - case rpDeliveredValid, rpDeliveredInvalid, rpNotDelivered: - if ev.peer == r.lastReqSentTo { - r.lastReqSentTo = nil - } else { - r.reqSrtoCount-- - } - } -} - -// waiting returns true if the retrieval mechanism is waiting for an answer from -// any peer -func (r *sentReq) waiting() bool { - return r.lastReqQueued || r.lastReqSentTo != nil || r.reqSrtoCount > 0 -} - -// tryRequest tries to send the request to a new peer and waits for it to either -// succeed or time out if it has been sent. It also sends the appropriate reqPeerEvent -// messages to the request's event channel. -func (r *sentReq) tryRequest() { - sent := r.rm.dist.queue(r.req) - var p distPeer - select { - case p = <-sent: - case <-r.stopCh: - if r.rm.dist.cancel(r.req) { - p = nil - } else { - p = <-sent - } - } - - r.eventsCh <- reqPeerEvent{rpSent, p} - if p == nil { - return - } - - hrto := false - - r.lock.RLock() - s, ok := r.sentTo[p] - r.lock.RUnlock() - if !ok { - panic(nil) - } - - defer func() { - pp, ok := p.(*serverPeer) - if hrto && ok { - pp.Log().Debug("Request timed out hard") - if r.rm.peers != nil { - r.rm.peers.unregister(pp.id) - } - } - }() - - select { - case event := <-s.event: - if event == rpNotDelivered { - r.lock.Lock() - delete(r.sentTo, p) - r.lock.Unlock() - } - r.eventsCh <- reqPeerEvent{event, p} - return - case <-time.After(r.rm.softRequestTimeout()): - r.eventsCh <- reqPeerEvent{rpSoftTimeout, p} - } - - select { - case event := <-s.event: - if event == rpNotDelivered { - r.lock.Lock() - delete(r.sentTo, p) - r.lock.Unlock() - } - r.eventsCh <- reqPeerEvent{event, p} - case <-time.After(hardRequestTimeout): - hrto = true - r.eventsCh <- reqPeerEvent{rpHardTimeout, p} - } -} - -// deliver a reply belonging to this request -func (r *sentReq) deliver(peer distPeer, msg *Msg) error { - r.lock.Lock() - defer r.lock.Unlock() - - s, ok := r.sentTo[peer] - if !ok || s.delivered { - return errResp(ErrUnexpectedResponse, "reqID = %v", msg.ReqID) - } - if s.frozen { - return nil - } - valid := r.validate(peer, msg) == nil - r.sentTo[peer] = sentReqToPeer{delivered: true, frozen: false, event: s.event} - if valid { - s.event <- rpDeliveredValid - } else { - s.event <- rpDeliveredInvalid - } - if !valid { - return errResp(ErrInvalidResponse, "reqID = %v", msg.ReqID) - } - return nil -} - -// frozen sends a "not delivered" event to the peer event channel belonging to the -// given peer if the request has been sent there, causing the state machine to not -// expect an answer and potentially even send the request to the same peer again -// when canSend allows it. -func (r *sentReq) frozen(peer distPeer) { - r.lock.Lock() - defer r.lock.Unlock() - - s, ok := r.sentTo[peer] - if ok && !s.delivered && !s.frozen { - r.sentTo[peer] = sentReqToPeer{delivered: false, frozen: true, event: s.event} - s.event <- rpNotDelivered - } -} - -// stop stops the retrieval process and sets an error code that will be returned -// by getError -func (r *sentReq) stop(err error) { - r.lock.Lock() - if !r.stopped { - r.stopped = true - r.err = err - close(r.stopCh) - } - r.lock.Unlock() -} - -// getError returns any retrieval error (either internally generated or set by the -// stop function) after stopCh has been closed -func (r *sentReq) getError() error { - return r.err -} diff --git a/les/server.go b/les/server.go deleted file mode 100644 index d84856c7fb..0000000000 --- a/les/server.go +++ /dev/null @@ -1,281 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "crypto/ecdsa" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/flowcontrol" - vfs "github.com/ethereum/go-ethereum/les/vflux/server" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/node" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rpc" -) - -var ( - defaultPosFactors = vfs.PriceFactors{TimeFactor: 0, CapacityFactor: 1, RequestFactor: 1} - defaultNegFactors = vfs.PriceFactors{TimeFactor: 0, CapacityFactor: 1, RequestFactor: 1} -) - -const defaultConnectedBias = time.Minute * 3 - -type ethBackend interface { - ArchiveMode() bool - BlockChain() *core.BlockChain - BloomIndexer() *core.ChainIndexer - ChainDb() ethdb.Database - Synced() bool - TxPool() *txpool.TxPool -} - -type LesServer struct { - lesCommons - - archiveMode bool // Flag whether the ethereum node runs in archive mode. - handler *serverHandler - peers *clientPeerSet - serverset *serverSet - vfluxServer *vfs.Server - privateKey *ecdsa.PrivateKey - - // Flow control and capacity management - fcManager *flowcontrol.ClientManager - costTracker *costTracker - defParams flowcontrol.ServerParams - servingQueue *servingQueue - clientPool *vfs.ClientPool - - minCapacity, maxCapacity uint64 - threadsIdle int // Request serving threads count when system is idle. - threadsBusy int // Request serving threads count when system is busy(block insertion). - - p2pSrv *p2p.Server -} - -func NewLesServer(node *node.Node, e ethBackend, config *ethconfig.Config) (*LesServer, error) { - lesDb, err := node.OpenDatabase("les.server", 0, 0, "eth/db/lesserver/", false) - if err != nil { - return nil, err - } - // Calculate the number of threads used to service the light client - // requests based on the user-specified value. - threads := config.LightServ * 4 / 100 - if threads < 4 { - threads = 4 - } - srv := &LesServer{ - lesCommons: lesCommons{ - genesis: e.BlockChain().Genesis().Hash(), - config: config, - chainConfig: e.BlockChain().Config(), - iConfig: light.DefaultServerIndexerConfig, - chainDb: e.ChainDb(), - lesDb: lesDb, - chainReader: e.BlockChain(), - chtIndexer: light.NewChtIndexer(e.ChainDb(), nil, params.CHTFrequency, params.HelperTrieProcessConfirmations, true), - bloomTrieIndexer: light.NewBloomTrieIndexer(e.ChainDb(), nil, params.BloomBitsBlocks, params.BloomTrieFrequency, true), - closeCh: make(chan struct{}), - }, - archiveMode: e.ArchiveMode(), - peers: newClientPeerSet(), - serverset: newServerSet(), - vfluxServer: vfs.NewServer(time.Millisecond * 10), - fcManager: flowcontrol.NewClientManager(nil, &mclock.System{}), - servingQueue: newServingQueue(int64(time.Millisecond*10), float64(config.LightServ)/100), - threadsBusy: config.LightServ/100 + 1, - threadsIdle: threads, - p2pSrv: node.Server(), - } - issync := e.Synced - if config.LightNoSyncServe { - issync = func() bool { return true } - } - srv.handler = newServerHandler(srv, e.BlockChain(), e.ChainDb(), e.TxPool(), issync) - srv.costTracker, srv.minCapacity = newCostTracker(e.ChainDb(), config) - - // Initialize the bloom trie indexer. - e.BloomIndexer().AddChildIndexer(srv.bloomTrieIndexer) - - // Initialize server capacity management fields. - srv.defParams = flowcontrol.ServerParams{ - BufLimit: srv.minCapacity * bufLimitRatio, - MinRecharge: srv.minCapacity, - } - // LES flow control tries to more or less guarantee the possibility for the - // clients to send a certain amount of requests at any time and get a quick - // response. Most of the clients want this guarantee but don't actually need - // to send requests most of the time. Our goal is to serve as many clients as - // possible while the actually used server capacity does not exceed the limits - totalRecharge := srv.costTracker.totalRecharge() - srv.maxCapacity = srv.minCapacity * uint64(srv.config.LightPeers) - if totalRecharge > srv.maxCapacity { - srv.maxCapacity = totalRecharge - } - srv.fcManager.SetCapacityLimits(srv.minCapacity, srv.maxCapacity, srv.minCapacity*2) - srv.clientPool = vfs.NewClientPool(lesDb, srv.minCapacity, defaultConnectedBias, mclock.System{}, issync) - srv.clientPool.Start() - srv.clientPool.SetDefaultFactors(defaultPosFactors, defaultNegFactors) - srv.vfluxServer.Register(srv.clientPool, "les", "Ethereum light client service") - srv.chtIndexer.Start(e.BlockChain()) - - node.RegisterProtocols(srv.Protocols()) - node.RegisterAPIs(srv.APIs()) - node.RegisterLifecycle(srv) - return srv, nil -} - -func (s *LesServer) APIs() []rpc.API { - return []rpc.API{ - { - Namespace: "les", - Service: NewLightServerAPI(s), - }, - { - Namespace: "debug", - Service: NewDebugAPI(s), - }, - } -} - -func (s *LesServer) Protocols() []p2p.Protocol { - ps := s.makeProtocols(ServerProtocolVersions, s.handler.runPeer, func(id enode.ID) interface{} { - if p := s.peers.peer(id); p != nil { - return p.Info() - } - return nil - }, nil) - // Add "les" ENR entries. - for i := range ps { - ps[i].Attributes = []enr.Entry{&lesEntry{ - VfxVersion: 1, - }} - } - return ps -} - -// Start starts the LES server -func (s *LesServer) Start() error { - s.privateKey = s.p2pSrv.PrivateKey - s.peers.setSignerKey(s.privateKey) - s.handler.start() - s.wg.Add(1) - go s.capacityManagement() - if s.p2pSrv.DiscV5 != nil { - s.p2pSrv.DiscV5.RegisterTalkHandler("vfx", s.vfluxServer.ServeEncoded) - } - return nil -} - -// Stop stops the LES service -func (s *LesServer) Stop() error { - close(s.closeCh) - - s.clientPool.Stop() - if s.serverset != nil { - s.serverset.close() - } - s.peers.close() - s.fcManager.Stop() - s.costTracker.stop() - s.handler.stop() - s.servingQueue.stop() - if s.vfluxServer != nil { - s.vfluxServer.Stop() - } - - // Note, bloom trie indexer is closed by parent bloombits indexer. - if s.chtIndexer != nil { - s.chtIndexer.Close() - } - if s.lesDb != nil { - s.lesDb.Close() - } - s.wg.Wait() - log.Info("Les server stopped") - - return nil -} - -// capacityManagement starts an event handler loop that updates the recharge curve of -// the client manager and adjusts the client pool's size according to the total -// capacity updates coming from the client manager -func (s *LesServer) capacityManagement() { - defer s.wg.Done() - - processCh := make(chan bool, 100) - sub := s.handler.blockchain.SubscribeBlockProcessingEvent(processCh) - defer sub.Unsubscribe() - - totalRechargeCh := make(chan uint64, 100) - totalRecharge := s.costTracker.subscribeTotalRecharge(totalRechargeCh) - - totalCapacityCh := make(chan uint64, 100) - totalCapacity := s.fcManager.SubscribeTotalCapacity(totalCapacityCh) - s.clientPool.SetLimits(uint64(s.config.LightPeers), totalCapacity) - - var ( - busy bool - freePeers uint64 - blockProcess mclock.AbsTime - ) - updateRecharge := func() { - if busy { - s.servingQueue.setThreads(s.threadsBusy) - s.fcManager.SetRechargeCurve(flowcontrol.PieceWiseLinear{{0, 0}, {totalRecharge, totalRecharge}}) - } else { - s.servingQueue.setThreads(s.threadsIdle) - s.fcManager.SetRechargeCurve(flowcontrol.PieceWiseLinear{{0, 0}, {totalRecharge / 10, totalRecharge}, {totalRecharge, totalRecharge}}) - } - } - updateRecharge() - - for { - select { - case busy = <-processCh: - if busy { - blockProcess = mclock.Now() - } else { - blockProcessingTimer.Update(time.Duration(mclock.Now() - blockProcess)) - } - updateRecharge() - case totalRecharge = <-totalRechargeCh: - totalRechargeGauge.Update(int64(totalRecharge)) - updateRecharge() - case totalCapacity = <-totalCapacityCh: - totalCapacityGauge.Update(int64(totalCapacity)) - newFreePeers := totalCapacity / s.minCapacity - if newFreePeers < freePeers && newFreePeers < uint64(s.config.LightPeers) { - log.Warn("Reduced free peer connections", "from", freePeers, "to", newFreePeers) - } - freePeers = newFreePeers - s.clientPool.SetLimits(uint64(s.config.LightPeers), totalCapacity) - case <-s.closeCh: - return - } - } -} diff --git a/les/server_handler.go b/les/server_handler.go deleted file mode 100644 index 5b3505064b..0000000000 --- a/les/server_handler.go +++ /dev/null @@ -1,436 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "errors" - "fmt" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/forkid" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/flowcontrol" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/metrics" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/trie" -) - -const ( - softResponseLimit = 2 * 1024 * 1024 // Target maximum size of returned blocks, headers or node data. - estHeaderRlpSize = 500 // Approximate size of an RLP encoded block header - - MaxHeaderFetch = 192 // Amount of block headers to be fetched per retrieval request - MaxBodyFetch = 32 // Amount of block bodies to be fetched per retrieval request - MaxReceiptFetch = 128 // Amount of transaction receipts to allow fetching per request - MaxCodeFetch = 64 // Amount of contract codes to allow fetching per request - MaxProofsFetch = 64 // Amount of merkle proofs to be fetched per retrieval request - MaxHelperTrieProofsFetch = 64 // Amount of helper tries to be fetched per retrieval request - MaxTxSend = 64 // Amount of transactions to be send per request - MaxTxStatus = 256 // Amount of transactions to queried per request -) - -var ( - errTooManyInvalidRequest = errors.New("too many invalid requests made") -) - -// serverHandler is responsible for serving light client and process -// all incoming light requests. -type serverHandler struct { - forkFilter forkid.Filter - blockchain *core.BlockChain - chainDb ethdb.Database - txpool *txpool.TxPool - server *LesServer - - closeCh chan struct{} // Channel used to exit all background routines of handler. - wg sync.WaitGroup // WaitGroup used to track all background routines of handler. - synced func() bool // Callback function used to determine whether local node is synced. - - // Testing fields - addTxsSync bool -} - -func newServerHandler(server *LesServer, blockchain *core.BlockChain, chainDb ethdb.Database, txpool *txpool.TxPool, synced func() bool) *serverHandler { - handler := &serverHandler{ - forkFilter: forkid.NewFilter(blockchain), - server: server, - blockchain: blockchain, - chainDb: chainDb, - txpool: txpool, - closeCh: make(chan struct{}), - synced: synced, - } - return handler -} - -// start starts the server handler. -func (h *serverHandler) start() { - h.wg.Add(1) - go h.broadcastLoop() -} - -// stop stops the server handler. -func (h *serverHandler) stop() { - close(h.closeCh) - h.wg.Wait() -} - -// runPeer is the p2p protocol run function for the given version. -func (h *serverHandler) runPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter) error { - peer := newClientPeer(int(version), h.server.config.NetworkId, p, newMeteredMsgWriter(rw, int(version))) - defer peer.close() - h.wg.Add(1) - defer h.wg.Done() - return h.handle(peer) -} - -func (h *serverHandler) handle(p *clientPeer) error { - p.Log().Debug("Light Ethereum peer connected", "name", p.Name()) - - // Execute the LES handshake - var ( - head = h.blockchain.CurrentHeader() - hash = head.Hash() - number = head.Number.Uint64() - td = h.blockchain.GetTd(hash, number) - forkID = forkid.NewID(h.blockchain.Config(), h.blockchain.Genesis(), number, head.Time) - ) - if err := p.Handshake(td, hash, number, h.blockchain.Genesis().Hash(), forkID, h.forkFilter, h.server); err != nil { - p.Log().Debug("Light Ethereum handshake failed", "err", err) - return err - } - // Connected to another server, no messages expected, just wait for disconnection - if p.server { - if err := h.server.serverset.register(p); err != nil { - return err - } - _, err := p.rw.ReadMsg() - h.server.serverset.unregister(p) - return err - } - // Setup flow control mechanism for the peer - p.fcClient = flowcontrol.NewClientNode(h.server.fcManager, p.fcParams) - defer p.fcClient.Disconnect() - - // Reject light clients if server is not synced. Put this checking here, so - // that "non-synced" les-server peers are still allowed to keep the connection. - if !h.synced() { - p.Log().Debug("Light server not synced, rejecting peer") - return p2p.DiscRequested - } - - // Register the peer into the peerset and clientpool - if err := h.server.peers.register(p); err != nil { - return err - } - if p.balance = h.server.clientPool.Register(p); p.balance == nil { - h.server.peers.unregister(p.ID()) - p.Log().Debug("Client pool already closed") - return p2p.DiscRequested - } - p.connectedAt = mclock.Now() - - var wg sync.WaitGroup // Wait group used to track all in-flight task routines. - defer func() { - wg.Wait() // Ensure all background task routines have exited. - h.server.clientPool.Unregister(p) - h.server.peers.unregister(p.ID()) - p.balance = nil - connectionTimer.Update(time.Duration(mclock.Now() - p.connectedAt)) - }() - - // Mark the peer as being served. - p.serving.Store(true) - defer p.serving.Store(false) - - // Spawn a main loop to handle all incoming messages. - for { - select { - case err := <-p.errCh: - p.Log().Debug("Failed to send light ethereum response", "err", err) - return err - default: - } - if err := h.handleMsg(p, &wg); err != nil { - p.Log().Debug("Light Ethereum message handling failed", "err", err) - return err - } - } -} - -// beforeHandle will do a series of prechecks before handling message. -func (h *serverHandler) beforeHandle(p *clientPeer, reqID, responseCount uint64, msg p2p.Msg, reqCnt uint64, maxCount uint64) (*servingTask, uint64) { - // Ensure that the request sent by client peer is valid - inSizeCost := h.server.costTracker.realCost(0, msg.Size, 0) - if reqCnt == 0 || reqCnt > maxCount { - p.fcClient.OneTimeCost(inSizeCost) - return nil, 0 - } - // Ensure that the client peer complies with the flow control - // rules agreed by both sides. - if p.isFrozen() { - p.fcClient.OneTimeCost(inSizeCost) - return nil, 0 - } - maxCost := p.fcCosts.getMaxCost(msg.Code, reqCnt) - accepted, bufShort, priority := p.fcClient.AcceptRequest(reqID, responseCount, maxCost) - if !accepted { - p.freeze() - p.Log().Error("Request came too early", "remaining", common.PrettyDuration(time.Duration(bufShort*1000000/p.fcParams.MinRecharge))) - p.fcClient.OneTimeCost(inSizeCost) - return nil, 0 - } - // Create a multi-stage task, estimate the time it takes for the task to - // execute, and cache it in the request service queue. - factor := h.server.costTracker.globalFactor() - if factor < 0.001 { - factor = 1 - p.Log().Error("Invalid global cost factor", "factor", factor) - } - maxTime := uint64(float64(maxCost) / factor) - task := h.server.servingQueue.newTask(p, maxTime, priority) - if !task.start() { - p.fcClient.RequestProcessed(reqID, responseCount, maxCost, inSizeCost) - return nil, 0 - } - return task, maxCost -} - -// Afterhandle will perform a series of operations after message handling, -// such as updating flow control data, sending reply, etc. -func (h *serverHandler) afterHandle(p *clientPeer, reqID, responseCount uint64, msg p2p.Msg, maxCost uint64, reqCnt uint64, task *servingTask, reply *reply) { - if reply != nil { - task.done() - } - p.responseLock.Lock() - defer p.responseLock.Unlock() - - // Short circuit if the client is already frozen. - if p.isFrozen() { - realCost := h.server.costTracker.realCost(task.servingTime, msg.Size, 0) - p.fcClient.RequestProcessed(reqID, responseCount, maxCost, realCost) - return - } - // Positive correction buffer value with real cost. - var replySize uint32 - if reply != nil { - replySize = reply.size() - } - var realCost uint64 - if h.server.costTracker.testing { - realCost = maxCost // Assign a fake cost for testing purpose - } else { - realCost = h.server.costTracker.realCost(task.servingTime, msg.Size, replySize) - if realCost > maxCost { - realCost = maxCost - } - } - bv := p.fcClient.RequestProcessed(reqID, responseCount, maxCost, realCost) - if reply != nil { - // Feed cost tracker request serving statistic. - h.server.costTracker.updateStats(msg.Code, reqCnt, task.servingTime, realCost) - // Reduce priority "balance" for the specific peer. - p.balance.RequestServed(realCost) - p.queueSend(func() { - if err := reply.send(bv); err != nil { - select { - case p.errCh <- err: - default: - } - } - }) - } -} - -// handleMsg is invoked whenever an inbound message is received from a remote -// peer. The remote connection is torn down upon returning any error. -func (h *serverHandler) handleMsg(p *clientPeer, wg *sync.WaitGroup) error { - // Read the next message from the remote peer, and ensure it's fully consumed - msg, err := p.rw.ReadMsg() - if err != nil { - return err - } - p.Log().Trace("Light Ethereum message arrived", "code", msg.Code, "bytes", msg.Size) - - // Discard large message which exceeds the limitation. - if msg.Size > ProtocolMaxMsgSize { - clientErrorMeter.Mark(1) - return errResp(ErrMsgTooLarge, "%v > %v", msg.Size, ProtocolMaxMsgSize) - } - defer msg.Discard() - - // Lookup the request handler table, ensure it's supported - // message type by the protocol. - req, ok := Les3[msg.Code] - if !ok { - p.Log().Trace("Received invalid message", "code", msg.Code) - clientErrorMeter.Mark(1) - return errResp(ErrInvalidMsgCode, "%v", msg.Code) - } - p.Log().Trace("Received " + req.Name) - - // Decode the p2p message, resolve the concrete handler for it. - serve, reqID, reqCnt, err := req.Handle(msg) - if err != nil { - clientErrorMeter.Mark(1) - return errResp(ErrDecode, "%v: %v", msg, err) - } - if metrics.EnabledExpensive { - req.InPacketsMeter.Mark(1) - req.InTrafficMeter.Mark(int64(msg.Size)) - } - p.responseCount++ - responseCount := p.responseCount - - // First check this client message complies all rules before - // handling it and return a processor if all checks are passed. - task, maxCost := h.beforeHandle(p, reqID, responseCount, msg, reqCnt, req.MaxCount) - if task == nil { - return nil - } - wg.Add(1) - go func() { - defer wg.Done() - - reply := serve(h, p, task.waitOrStop) - h.afterHandle(p, reqID, responseCount, msg, maxCost, reqCnt, task, reply) - - if metrics.EnabledExpensive { - size := uint32(0) - if reply != nil { - size = reply.size() - } - req.OutPacketsMeter.Mark(1) - req.OutTrafficMeter.Mark(int64(size)) - req.ServingTimeMeter.Update(time.Duration(task.servingTime)) - } - }() - // If the client has made too much invalid request(e.g. request a non-existent data), - // reject them to prevent SPAM attack. - if p.getInvalid() > maxRequestErrors { - clientErrorMeter.Mark(1) - return errTooManyInvalidRequest - } - return nil -} - -// BlockChain implements serverBackend -func (h *serverHandler) BlockChain() *core.BlockChain { - return h.blockchain -} - -// TxPool implements serverBackend -func (h *serverHandler) TxPool() *txpool.TxPool { - return h.txpool -} - -// ArchiveMode implements serverBackend -func (h *serverHandler) ArchiveMode() bool { - return h.server.archiveMode -} - -// AddTxsSync implements serverBackend -func (h *serverHandler) AddTxsSync() bool { - return h.addTxsSync -} - -// getAccount retrieves an account from the state based on root. -func getAccount(triedb *trie.Database, root common.Hash, addr common.Address) (types.StateAccount, error) { - trie, err := trie.NewStateTrie(trie.StateTrieID(root), triedb) - if err != nil { - return types.StateAccount{}, err - } - acc, err := trie.GetAccount(addr) - if err != nil { - return types.StateAccount{}, err - } - if acc == nil { - return types.StateAccount{}, fmt.Errorf("account %#x is not present", addr) - } - return *acc, nil -} - -// GetHelperTrie returns the post-processed trie root for the given trie ID and section index -func (h *serverHandler) GetHelperTrie(typ uint, index uint64) *trie.Trie { - var ( - root common.Hash - prefix string - ) - switch typ { - case htCanonical: - sectionHead := rawdb.ReadCanonicalHash(h.chainDb, (index+1)*h.server.iConfig.ChtSize-1) - root, prefix = light.GetChtRoot(h.chainDb, index, sectionHead), string(rawdb.ChtTablePrefix) - case htBloomBits: - sectionHead := rawdb.ReadCanonicalHash(h.chainDb, (index+1)*h.server.iConfig.BloomTrieSize-1) - root, prefix = light.GetBloomTrieRoot(h.chainDb, index, sectionHead), string(rawdb.BloomTrieTablePrefix) - } - if root == (common.Hash{}) { - return nil - } - triedb := trie.NewDatabase(rawdb.NewTable(h.chainDb, prefix), trie.HashDefaults) - trie, _ := trie.New(trie.TrieID(root), triedb) - return trie -} - -// broadcastLoop broadcasts new block information to all connected light -// clients. According to the agreement between client and server, server should -// only broadcast new announcement if the total difficulty is higher than the -// last one. Besides server will add the signature if client requires. -func (h *serverHandler) broadcastLoop() { - defer h.wg.Done() - - headCh := make(chan core.ChainHeadEvent, 10) - headSub := h.blockchain.SubscribeChainHeadEvent(headCh) - defer headSub.Unsubscribe() - - var ( - lastHead = h.blockchain.CurrentHeader() - lastTd = common.Big0 - ) - for { - select { - case ev := <-headCh: - header := ev.Block.Header() - hash, number := header.Hash(), header.Number.Uint64() - td := h.blockchain.GetTd(hash, number) - if td == nil || td.Cmp(lastTd) <= 0 { - continue - } - var reorg uint64 - if lastHead != nil { - // If a setHead has been performed, the common ancestor can be nil. - if ancestor := rawdb.FindCommonAncestor(h.chainDb, header, lastHead); ancestor != nil { - reorg = lastHead.Number.Uint64() - ancestor.Number.Uint64() - } - } - lastHead, lastTd = header, td - log.Debug("Announcing block to peers", "number", number, "hash", hash, "td", td, "reorg", reorg) - h.server.peers.broadcast(announceData{Hash: hash, Number: number, Td: td, ReorgDepth: reorg}) - case <-h.closeCh: - return - } - } -} diff --git a/les/server_requests.go b/les/server_requests.go deleted file mode 100644 index cc5b601713..0000000000 --- a/les/server_requests.go +++ /dev/null @@ -1,566 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "encoding/binary" - "encoding/json" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/metrics" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -// serverBackend defines the backend functions needed for serving LES requests -type serverBackend interface { - ArchiveMode() bool - AddTxsSync() bool - BlockChain() *core.BlockChain - TxPool() *txpool.TxPool - GetHelperTrie(typ uint, index uint64) *trie.Trie -} - -// Decoder is implemented by the messages passed to the handler functions -type Decoder interface { - Decode(val interface{}) error -} - -// RequestType is a static struct that describes an LES request type and references -// its handler function. -type RequestType struct { - Name string - MaxCount uint64 - InPacketsMeter, InTrafficMeter, OutPacketsMeter, OutTrafficMeter metrics.Meter - ServingTimeMeter metrics.Timer - Handle func(msg Decoder) (serve serveRequestFn, reqID, amount uint64, err error) -} - -// serveRequestFn is returned by the request handler functions after decoding the request. -// This function does the actual request serving using the supplied backend. waitOrStop is -// called between serving individual request items and may block if the serving process -// needs to be throttled. If it returns false then the process is terminated. -// The reply is not sent by this function yet. The flow control feedback value is supplied -// by the protocol handler when calling the send function of the returned reply struct. -type serveRequestFn func(backend serverBackend, peer *clientPeer, waitOrStop func() bool) *reply - -// Les3 contains the request types supported by les/2 and les/3 -var Les3 = map[uint64]RequestType{ - GetBlockHeadersMsg: { - Name: "block header request", - MaxCount: MaxHeaderFetch, - InPacketsMeter: miscInHeaderPacketsMeter, - InTrafficMeter: miscInHeaderTrafficMeter, - OutPacketsMeter: miscOutHeaderPacketsMeter, - OutTrafficMeter: miscOutHeaderTrafficMeter, - ServingTimeMeter: miscServingTimeHeaderTimer, - Handle: handleGetBlockHeaders, - }, - GetBlockBodiesMsg: { - Name: "block bodies request", - MaxCount: MaxBodyFetch, - InPacketsMeter: miscInBodyPacketsMeter, - InTrafficMeter: miscInBodyTrafficMeter, - OutPacketsMeter: miscOutBodyPacketsMeter, - OutTrafficMeter: miscOutBodyTrafficMeter, - ServingTimeMeter: miscServingTimeBodyTimer, - Handle: handleGetBlockBodies, - }, - GetCodeMsg: { - Name: "code request", - MaxCount: MaxCodeFetch, - InPacketsMeter: miscInCodePacketsMeter, - InTrafficMeter: miscInCodeTrafficMeter, - OutPacketsMeter: miscOutCodePacketsMeter, - OutTrafficMeter: miscOutCodeTrafficMeter, - ServingTimeMeter: miscServingTimeCodeTimer, - Handle: handleGetCode, - }, - GetReceiptsMsg: { - Name: "receipts request", - MaxCount: MaxReceiptFetch, - InPacketsMeter: miscInReceiptPacketsMeter, - InTrafficMeter: miscInReceiptTrafficMeter, - OutPacketsMeter: miscOutReceiptPacketsMeter, - OutTrafficMeter: miscOutReceiptTrafficMeter, - ServingTimeMeter: miscServingTimeReceiptTimer, - Handle: handleGetReceipts, - }, - GetProofsV2Msg: { - Name: "les/2 proofs request", - MaxCount: MaxProofsFetch, - InPacketsMeter: miscInTrieProofPacketsMeter, - InTrafficMeter: miscInTrieProofTrafficMeter, - OutPacketsMeter: miscOutTrieProofPacketsMeter, - OutTrafficMeter: miscOutTrieProofTrafficMeter, - ServingTimeMeter: miscServingTimeTrieProofTimer, - Handle: handleGetProofs, - }, - GetHelperTrieProofsMsg: { - Name: "helper trie proof request", - MaxCount: MaxHelperTrieProofsFetch, - InPacketsMeter: miscInHelperTriePacketsMeter, - InTrafficMeter: miscInHelperTrieTrafficMeter, - OutPacketsMeter: miscOutHelperTriePacketsMeter, - OutTrafficMeter: miscOutHelperTrieTrafficMeter, - ServingTimeMeter: miscServingTimeHelperTrieTimer, - Handle: handleGetHelperTrieProofs, - }, - SendTxV2Msg: { - Name: "new transactions", - MaxCount: MaxTxSend, - InPacketsMeter: miscInTxsPacketsMeter, - InTrafficMeter: miscInTxsTrafficMeter, - OutPacketsMeter: miscOutTxsPacketsMeter, - OutTrafficMeter: miscOutTxsTrafficMeter, - ServingTimeMeter: miscServingTimeTxTimer, - Handle: handleSendTx, - }, - GetTxStatusMsg: { - Name: "transaction status query request", - MaxCount: MaxTxStatus, - InPacketsMeter: miscInTxStatusPacketsMeter, - InTrafficMeter: miscInTxStatusTrafficMeter, - OutPacketsMeter: miscOutTxStatusPacketsMeter, - OutTrafficMeter: miscOutTxStatusTrafficMeter, - ServingTimeMeter: miscServingTimeTxStatusTimer, - Handle: handleGetTxStatus, - }, -} - -// handleGetBlockHeaders handles a block header request -func handleGetBlockHeaders(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r GetBlockHeadersPacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - // Gather headers until the fetch or network limits is reached - var ( - bc = backend.BlockChain() - hashMode = r.Query.Origin.Hash != (common.Hash{}) - first = true - maxNonCanonical = uint64(100) - bytes common.StorageSize - headers []*types.Header - unknown bool - ) - for !unknown && len(headers) < int(r.Query.Amount) && bytes < softResponseLimit { - if !first && !waitOrStop() { - return nil - } - // Retrieve the next header satisfying the r - var origin *types.Header - if hashMode { - if first { - origin = bc.GetHeaderByHash(r.Query.Origin.Hash) - if origin != nil { - r.Query.Origin.Number = origin.Number.Uint64() - } - } else { - origin = bc.GetHeader(r.Query.Origin.Hash, r.Query.Origin.Number) - } - } else { - origin = bc.GetHeaderByNumber(r.Query.Origin.Number) - } - if origin == nil { - break - } - headers = append(headers, origin) - bytes += estHeaderRlpSize - - // Advance to the next header of the r - switch { - case hashMode && r.Query.Reverse: - // Hash based traversal towards the genesis block - ancestor := r.Query.Skip + 1 - if ancestor == 0 { - unknown = true - } else { - r.Query.Origin.Hash, r.Query.Origin.Number = bc.GetAncestor(r.Query.Origin.Hash, r.Query.Origin.Number, ancestor, &maxNonCanonical) - unknown = r.Query.Origin.Hash == common.Hash{} - } - case hashMode && !r.Query.Reverse: - // Hash based traversal towards the leaf block - var ( - current = origin.Number.Uint64() - next = current + r.Query.Skip + 1 - ) - if next <= current { - infos, _ := json.Marshal(p.Peer.Info()) - p.Log().Warn("GetBlockHeaders skip overflow attack", "current", current, "skip", r.Query.Skip, "next", next, "attacker", string(infos)) - unknown = true - } else { - if header := bc.GetHeaderByNumber(next); header != nil { - nextHash := header.Hash() - expOldHash, _ := bc.GetAncestor(nextHash, next, r.Query.Skip+1, &maxNonCanonical) - if expOldHash == r.Query.Origin.Hash { - r.Query.Origin.Hash, r.Query.Origin.Number = nextHash, next - } else { - unknown = true - } - } else { - unknown = true - } - } - case r.Query.Reverse: - // Number based traversal towards the genesis block - if r.Query.Origin.Number >= r.Query.Skip+1 { - r.Query.Origin.Number -= r.Query.Skip + 1 - } else { - unknown = true - } - - case !r.Query.Reverse: - // Number based traversal towards the leaf block - r.Query.Origin.Number += r.Query.Skip + 1 - } - first = false - } - return p.replyBlockHeaders(r.ReqID, headers) - }, r.ReqID, r.Query.Amount, nil -} - -// handleGetBlockBodies handles a block body request -func handleGetBlockBodies(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r GetBlockBodiesPacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - var ( - bytes int - bodies []rlp.RawValue - ) - bc := backend.BlockChain() - for i, hash := range r.Hashes { - if i != 0 && !waitOrStop() { - return nil - } - if bytes >= softResponseLimit { - break - } - body := bc.GetBodyRLP(hash) - if body == nil { - p.bumpInvalid() - continue - } - bodies = append(bodies, body) - bytes += len(body) - } - return p.replyBlockBodiesRLP(r.ReqID, bodies) - }, r.ReqID, uint64(len(r.Hashes)), nil -} - -// handleGetCode handles a contract code request -func handleGetCode(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r GetCodePacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - var ( - bytes int - data [][]byte - ) - bc := backend.BlockChain() - for i, request := range r.Reqs { - if i != 0 && !waitOrStop() { - return nil - } - // Look up the root hash belonging to the request - header := bc.GetHeaderByHash(request.BHash) - if header == nil { - p.Log().Warn("Failed to retrieve associate header for code", "hash", request.BHash) - p.bumpInvalid() - continue - } - // Refuse to search stale state data in the database since looking for - // a non-exist key is kind of expensive. - local := bc.CurrentHeader().Number.Uint64() - if !backend.ArchiveMode() && header.Number.Uint64()+core.TriesInMemory <= local { - p.Log().Debug("Reject stale code request", "number", header.Number.Uint64(), "head", local) - p.bumpInvalid() - continue - } - address := common.BytesToAddress(request.AccountAddress) - account, err := getAccount(bc.TrieDB(), header.Root, address) - if err != nil { - p.Log().Warn("Failed to retrieve account for code", "block", header.Number, "hash", header.Hash(), "account", address, "err", err) - p.bumpInvalid() - continue - } - code, err := bc.StateCache().ContractCode(address, common.BytesToHash(account.CodeHash)) - if err != nil { - p.Log().Warn("Failed to retrieve account code", "block", header.Number, "hash", header.Hash(), "account", address, "codehash", common.BytesToHash(account.CodeHash), "err", err) - continue - } - // Accumulate the code and abort if enough data was retrieved - data = append(data, code) - if bytes += len(code); bytes >= softResponseLimit { - break - } - } - return p.replyCode(r.ReqID, data) - }, r.ReqID, uint64(len(r.Reqs)), nil -} - -// handleGetReceipts handles a block receipts request -func handleGetReceipts(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r GetReceiptsPacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - var ( - bytes int - receipts []rlp.RawValue - ) - bc := backend.BlockChain() - for i, hash := range r.Hashes { - if i != 0 && !waitOrStop() { - return nil - } - if bytes >= softResponseLimit { - break - } - // Retrieve the requested block's receipts, skipping if unknown to us - results := bc.GetReceiptsByHash(hash) - if results == nil { - if header := bc.GetHeaderByHash(hash); header == nil || header.ReceiptHash != types.EmptyReceiptsHash { - p.bumpInvalid() - continue - } - } - // If known, encode and queue for response packet - if encoded, err := rlp.EncodeToBytes(results); err != nil { - log.Error("Failed to encode receipt", "err", err) - } else { - receipts = append(receipts, encoded) - bytes += len(encoded) - } - } - return p.replyReceiptsRLP(r.ReqID, receipts) - }, r.ReqID, uint64(len(r.Hashes)), nil -} - -// handleGetProofs handles a proof request -func handleGetProofs(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r GetProofsPacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - var ( - lastBHash common.Hash - root common.Hash - header *types.Header - err error - ) - bc := backend.BlockChain() - nodes := trienode.NewProofSet() - - for i, request := range r.Reqs { - if i != 0 && !waitOrStop() { - return nil - } - // Look up the root hash belonging to the request - if request.BHash != lastBHash { - root, lastBHash = common.Hash{}, request.BHash - - if header = bc.GetHeaderByHash(request.BHash); header == nil { - p.Log().Warn("Failed to retrieve header for proof", "hash", request.BHash) - p.bumpInvalid() - continue - } - // Refuse to search stale state data in the database since looking for - // a non-exist key is kind of expensive. - local := bc.CurrentHeader().Number.Uint64() - if !backend.ArchiveMode() && header.Number.Uint64()+core.TriesInMemory <= local { - p.Log().Debug("Reject stale trie request", "number", header.Number.Uint64(), "head", local) - p.bumpInvalid() - continue - } - root = header.Root - } - // If a header lookup failed (non existent), ignore subsequent requests for the same header - if root == (common.Hash{}) { - p.bumpInvalid() - continue - } - // Open the account or storage trie for the request - statedb := bc.StateCache() - - var trie state.Trie - switch len(request.AccountAddress) { - case 0: - // No account key specified, open an account trie - trie, err = statedb.OpenTrie(root) - if trie == nil || err != nil { - p.Log().Warn("Failed to open storage trie for proof", "block", header.Number, "hash", header.Hash(), "root", root, "err", err) - continue - } - default: - // Account key specified, open a storage trie - address := common.BytesToAddress(request.AccountAddress) - account, err := getAccount(bc.TrieDB(), root, address) - if err != nil { - p.Log().Warn("Failed to retrieve account for proof", "block", header.Number, "hash", header.Hash(), "account", address, "err", err) - p.bumpInvalid() - continue - } - trie, err = statedb.OpenStorageTrie(root, address, account.Root, nil) - if trie == nil || err != nil { - p.Log().Warn("Failed to open storage trie for proof", "block", header.Number, "hash", header.Hash(), "account", address, "root", account.Root, "err", err) - continue - } - } - // Prove the user's request from the account or storage trie - if err := trie.Prove(request.Key, nodes); err != nil { - p.Log().Warn("Failed to prove state request", "block", header.Number, "hash", header.Hash(), "err", err) - continue - } - if nodes.DataSize() >= softResponseLimit { - break - } - } - return p.replyProofsV2(r.ReqID, nodes.List()) - }, r.ReqID, uint64(len(r.Reqs)), nil -} - -// handleGetHelperTrieProofs handles a helper trie proof request -func handleGetHelperTrieProofs(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r GetHelperTrieProofsPacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - var ( - lastIdx uint64 - lastType uint - auxTrie *trie.Trie - auxBytes int - auxData [][]byte - ) - bc := backend.BlockChain() - nodes := trienode.NewProofSet() - for i, request := range r.Reqs { - if i != 0 && !waitOrStop() { - return nil - } - if auxTrie == nil || request.Type != lastType || request.TrieIdx != lastIdx { - lastType, lastIdx = request.Type, request.TrieIdx - auxTrie = backend.GetHelperTrie(request.Type, request.TrieIdx) - } - if auxTrie == nil { - return nil - } - // TODO(rjl493456442) short circuit if the proving is failed. - // The original client side code has a dirty hack to retrieve - // the headers with no valid proof. Keep the compatibility for - // legacy les protocol and drop this hack when the les2/3 are - // not supported. - err := auxTrie.Prove(request.Key, nodes) - if p.version >= lpv4 && err != nil { - return nil - } - if request.Type == htCanonical && request.AuxReq == htAuxHeader && len(request.Key) == 8 { - header := bc.GetHeaderByNumber(binary.BigEndian.Uint64(request.Key)) - data, err := rlp.EncodeToBytes(header) - if err != nil { - log.Error("Failed to encode header", "err", err) - return nil - } - auxData = append(auxData, data) - auxBytes += len(data) - } - if nodes.DataSize()+auxBytes >= softResponseLimit { - break - } - } - return p.replyHelperTrieProofs(r.ReqID, HelperTrieResps{Proofs: nodes.List(), AuxData: auxData}) - }, r.ReqID, uint64(len(r.Reqs)), nil -} - -// handleSendTx handles a transaction propagation request -func handleSendTx(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r SendTxPacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - amount := uint64(len(r.Txs)) - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - stats := make([]light.TxStatus, len(r.Txs)) - for i, tx := range r.Txs { - if i != 0 && !waitOrStop() { - return nil - } - hash := tx.Hash() - stats[i] = txStatus(backend, hash) - if stats[i].Status == txpool.TxStatusUnknown { - if errs := backend.TxPool().Add([]*types.Transaction{tx}, false, backend.AddTxsSync()); errs[0] != nil { - stats[i].Error = errs[0].Error() - continue - } - stats[i] = txStatus(backend, hash) - } - } - return p.replyTxStatus(r.ReqID, stats) - }, r.ReqID, amount, nil -} - -// handleGetTxStatus handles a transaction status query -func handleGetTxStatus(msg Decoder) (serveRequestFn, uint64, uint64, error) { - var r GetTxStatusPacket - if err := msg.Decode(&r); err != nil { - return nil, 0, 0, err - } - return func(backend serverBackend, p *clientPeer, waitOrStop func() bool) *reply { - stats := make([]light.TxStatus, len(r.Hashes)) - for i, hash := range r.Hashes { - if i != 0 && !waitOrStop() { - return nil - } - stats[i] = txStatus(backend, hash) - } - return p.replyTxStatus(r.ReqID, stats) - }, r.ReqID, uint64(len(r.Hashes)), nil -} - -// txStatus returns the status of a specified transaction. -func txStatus(b serverBackend, hash common.Hash) light.TxStatus { - var stat light.TxStatus - // Looking the transaction in txpool first. - stat.Status = b.TxPool().Status(hash) - - // If the transaction is unknown to the pool, try looking it up locally. - if stat.Status == txpool.TxStatusUnknown { - lookup := b.BlockChain().GetTransactionLookup(hash) - if lookup != nil { - stat.Status = txpool.TxStatusIncluded - stat.Lookup = lookup - } - } - return stat -} diff --git a/les/servingqueue.go b/les/servingqueue.go deleted file mode 100644 index b258fc3caf..0000000000 --- a/les/servingqueue.go +++ /dev/null @@ -1,365 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "sync" - "sync/atomic" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/common/prque" - "golang.org/x/exp/slices" -) - -// servingQueue allows running tasks in a limited number of threads and puts the -// waiting tasks in a priority queue -type servingQueue struct { - recentTime, queuedTime uint64 - servingTimeDiff atomic.Uint64 - burstLimit, burstDropLimit uint64 - burstDecRate float64 - lastUpdate mclock.AbsTime - - queueAddCh, queueBestCh chan *servingTask - stopThreadCh, quit chan struct{} - setThreadsCh chan int - - wg sync.WaitGroup - threadCount int // number of currently running threads - queue *prque.Prque[int64, *servingTask] // priority queue for waiting or suspended tasks - best *servingTask // the highest priority task (not included in the queue) - suspendBias int64 // priority bias against suspending an already running task -} - -// servingTask represents a request serving task. Tasks can be implemented to -// run in multiple steps, allowing the serving queue to suspend execution between -// steps if higher priority tasks are entered. The creator of the task should -// set the following fields: -// -// - priority: greater value means higher priority; values can wrap around the int64 range -// - run: execute a single step; return true if finished -// - after: executed after run finishes or returns an error, receives the total serving time -type servingTask struct { - sq *servingQueue - servingTime, timeAdded, maxTime, expTime uint64 - peer *clientPeer - priority int64 - biasAdded bool - token runToken - tokenCh chan runToken -} - -// runToken received by servingTask.start allows the task to run. Closing the -// channel by servingTask.stop signals the thread controller to allow a new task -// to start running. -type runToken chan struct{} - -// start blocks until the task can start and returns true if it is allowed to run. -// Returning false means that the task should be cancelled. -func (t *servingTask) start() bool { - if t.peer.isFrozen() { - return false - } - t.tokenCh = make(chan runToken, 1) - select { - case t.sq.queueAddCh <- t: - case <-t.sq.quit: - return false - } - select { - case t.token = <-t.tokenCh: - case <-t.sq.quit: - return false - } - if t.token == nil { - return false - } - t.servingTime -= uint64(mclock.Now()) - return true -} - -// done signals the thread controller about the task being finished and returns -// the total serving time of the task in nanoseconds. -func (t *servingTask) done() uint64 { - t.servingTime += uint64(mclock.Now()) - close(t.token) - diff := t.servingTime - t.timeAdded - t.timeAdded = t.servingTime - if t.expTime > diff { - t.expTime -= diff - t.sq.servingTimeDiff.Add(t.expTime) - } else { - t.expTime = 0 - } - return t.servingTime -} - -// waitOrStop can be called during the execution of the task. It blocks if there -// is a higher priority task waiting (a bias is applied in favor of the currently -// running task). Returning true means that the execution can be resumed. False -// means the task should be cancelled. -func (t *servingTask) waitOrStop() bool { - t.done() - if !t.biasAdded { - t.priority += t.sq.suspendBias - t.biasAdded = true - } - return t.start() -} - -// newServingQueue returns a new servingQueue -func newServingQueue(suspendBias int64, utilTarget float64) *servingQueue { - sq := &servingQueue{ - queue: prque.New[int64, *servingTask](nil), - suspendBias: suspendBias, - queueAddCh: make(chan *servingTask, 100), - queueBestCh: make(chan *servingTask), - stopThreadCh: make(chan struct{}), - quit: make(chan struct{}), - setThreadsCh: make(chan int, 10), - burstLimit: uint64(utilTarget * bufLimitRatio * 1200000), - burstDropLimit: uint64(utilTarget * bufLimitRatio * 1000000), - burstDecRate: utilTarget, - lastUpdate: mclock.Now(), - } - sq.wg.Add(2) - go sq.queueLoop() - go sq.threadCountLoop() - return sq -} - -// newTask creates a new task with the given priority -func (sq *servingQueue) newTask(peer *clientPeer, maxTime uint64, priority int64) *servingTask { - return &servingTask{ - sq: sq, - peer: peer, - maxTime: maxTime, - expTime: maxTime, - priority: priority, - } -} - -// threadController is started in multiple goroutines and controls the execution -// of tasks. The number of active thread controllers equals the allowed number of -// concurrently running threads. It tries to fetch the highest priority queued -// task first. If there are no queued tasks waiting then it can directly catch -// run tokens from the token channel and allow the corresponding tasks to run -// without entering the priority queue. -func (sq *servingQueue) threadController() { - defer sq.wg.Done() - for { - token := make(runToken) - select { - case best := <-sq.queueBestCh: - best.tokenCh <- token - case <-sq.stopThreadCh: - return - case <-sq.quit: - return - } - select { - case <-sq.stopThreadCh: - return - case <-sq.quit: - return - case <-token: - } - } -} - -// peerTasks lists the tasks received from a given peer when selecting peers to freeze -type peerTasks struct { - peer *clientPeer - list []*servingTask - sumTime uint64 - priority float64 -} - -// freezePeers selects the peers with the worst priority queued tasks and freezes -// them until burstTime goes under burstDropLimit or all peers are frozen -func (sq *servingQueue) freezePeers() { - peerMap := make(map[*clientPeer]*peerTasks) - var peerList []*peerTasks - if sq.best != nil { - sq.queue.Push(sq.best, sq.best.priority) - } - sq.best = nil - for sq.queue.Size() > 0 { - task := sq.queue.PopItem() - tasks := peerMap[task.peer] - if tasks == nil { - bufValue, bufLimit := task.peer.fcClient.BufferStatus() - if bufLimit < 1 { - bufLimit = 1 - } - tasks = &peerTasks{ - peer: task.peer, - priority: float64(bufValue) / float64(bufLimit), // lower value comes first - } - peerMap[task.peer] = tasks - peerList = append(peerList, tasks) - } - tasks.list = append(tasks.list, task) - tasks.sumTime += task.expTime - } - slices.SortFunc(peerList, func(a, b *peerTasks) int { - if a.priority < b.priority { - return -1 - } - if a.priority > b.priority { - return 1 - } - return 0 - }) - drop := true - for _, tasks := range peerList { - if drop { - tasks.peer.freeze() - tasks.peer.fcClient.Freeze() - sq.queuedTime -= tasks.sumTime - sqQueuedGauge.Update(int64(sq.queuedTime)) - clientFreezeMeter.Mark(1) - drop = sq.recentTime+sq.queuedTime > sq.burstDropLimit - for _, task := range tasks.list { - task.tokenCh <- nil - } - } else { - for _, task := range tasks.list { - sq.queue.Push(task, task.priority) - } - } - } - if sq.queue.Size() > 0 { - sq.best = sq.queue.PopItem() - } -} - -// updateRecentTime recalculates the recent serving time value -func (sq *servingQueue) updateRecentTime() { - subTime := sq.servingTimeDiff.Swap(0) - now := mclock.Now() - dt := now - sq.lastUpdate - sq.lastUpdate = now - if dt > 0 { - subTime += uint64(float64(dt) * sq.burstDecRate) - } - if sq.recentTime > subTime { - sq.recentTime -= subTime - } else { - sq.recentTime = 0 - } -} - -// addTask inserts a task into the priority queue -func (sq *servingQueue) addTask(task *servingTask) { - if sq.best == nil { - sq.best = task - } else if task.priority-sq.best.priority > 0 { - sq.queue.Push(sq.best, sq.best.priority) - sq.best = task - } else { - sq.queue.Push(task, task.priority) - } - sq.updateRecentTime() - sq.queuedTime += task.expTime - sqServedGauge.Update(int64(sq.recentTime)) - sqQueuedGauge.Update(int64(sq.queuedTime)) - if sq.recentTime+sq.queuedTime > sq.burstLimit { - sq.freezePeers() - } -} - -// queueLoop is an event loop running in a goroutine. It receives tasks from queueAddCh -// and always tries to send the highest priority task to queueBestCh. Successfully sent -// tasks are removed from the queue. -func (sq *servingQueue) queueLoop() { - defer sq.wg.Done() - for { - if sq.best != nil { - expTime := sq.best.expTime - select { - case task := <-sq.queueAddCh: - sq.addTask(task) - case sq.queueBestCh <- sq.best: - sq.updateRecentTime() - sq.queuedTime -= expTime - sq.recentTime += expTime - sqServedGauge.Update(int64(sq.recentTime)) - sqQueuedGauge.Update(int64(sq.queuedTime)) - if sq.queue.Size() == 0 { - sq.best = nil - } else { - sq.best = sq.queue.PopItem() - } - case <-sq.quit: - return - } - } else { - select { - case task := <-sq.queueAddCh: - sq.addTask(task) - case <-sq.quit: - return - } - } - } -} - -// threadCountLoop is an event loop running in a goroutine. It adjusts the number -// of active thread controller goroutines. -func (sq *servingQueue) threadCountLoop() { - var threadCountTarget int - defer sq.wg.Done() - for { - for threadCountTarget > sq.threadCount { - sq.wg.Add(1) - go sq.threadController() - sq.threadCount++ - } - if threadCountTarget < sq.threadCount { - select { - case threadCountTarget = <-sq.setThreadsCh: - case sq.stopThreadCh <- struct{}{}: - sq.threadCount-- - case <-sq.quit: - return - } - } else { - select { - case threadCountTarget = <-sq.setThreadsCh: - case <-sq.quit: - return - } - } - } -} - -// setThreads sets the allowed processing thread count, suspending tasks as soon as -// possible if necessary. -func (sq *servingQueue) setThreads(threadCount int) { - select { - case sq.setThreadsCh <- threadCount: - case <-sq.quit: - return - } -} - -// stop stops task processing as soon as possible and shuts down the serving queue. -func (sq *servingQueue) stop() { - close(sq.quit) - sq.wg.Wait() -} diff --git a/les/state_accessor.go b/les/state_accessor.go deleted file mode 100644 index 9a8214ac2f..0000000000 --- a/les/state_accessor.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "context" - "errors" - "fmt" - - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/eth/tracers" - "github.com/ethereum/go-ethereum/light" -) - -// noopReleaser is returned in case there is no operation expected -// for releasing state. -var noopReleaser = tracers.StateReleaseFunc(func() {}) - -// stateAtBlock retrieves the state database associated with a certain block. -func (leth *LightEthereum) stateAtBlock(ctx context.Context, block *types.Block, reexec uint64) (*state.StateDB, tracers.StateReleaseFunc, error) { - return light.NewState(ctx, block.Header(), leth.odr), noopReleaser, nil -} - -// stateAtTransaction returns the execution environment of a certain transaction. -func (leth *LightEthereum) stateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (*core.Message, vm.BlockContext, *state.StateDB, tracers.StateReleaseFunc, error) { - // Short circuit if it's genesis block. - if block.NumberU64() == 0 { - return nil, vm.BlockContext{}, nil, nil, errors.New("no transaction in genesis") - } - // Create the parent state database - parent, err := leth.blockchain.GetBlock(ctx, block.ParentHash(), block.NumberU64()-1) - if err != nil { - return nil, vm.BlockContext{}, nil, nil, err - } - statedb, release, err := leth.stateAtBlock(ctx, parent, reexec) - if err != nil { - return nil, vm.BlockContext{}, nil, nil, err - } - if txIndex == 0 && len(block.Transactions()) == 0 { - return nil, vm.BlockContext{}, statedb, release, nil - } - // Recompute transactions up to the target index. - signer := types.MakeSigner(leth.blockchain.Config(), block.Number(), block.Time()) - for idx, tx := range block.Transactions() { - // Assemble the transaction call message and return if the requested offset - msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) - txContext := core.NewEVMTxContext(msg) - context := core.NewEVMBlockContext(block.Header(), leth.blockchain, nil) - statedb.SetTxContext(tx.Hash(), idx) - if idx == txIndex { - return msg, context, statedb, release, nil - } - // Not yet the searched for transaction, execute on top of the current state - vmenv := vm.NewEVM(context, txContext, statedb, leth.blockchain.Config(), vm.Config{}) - if _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(tx.Gas())); err != nil { - return nil, vm.BlockContext{}, nil, nil, fmt.Errorf("transaction %#x failed: %v", tx.Hash(), err) - } - // Ensure any modifications are committed to the state - // Only delete empty objects if EIP158/161 (a.k.a Spurious Dragon) is in effect - statedb.Finalise(vmenv.ChainConfig().IsEIP158(block.Number())) - } - return nil, vm.BlockContext{}, nil, nil, fmt.Errorf("transaction index %d out of range for block %#x", txIndex, block.Hash()) -} diff --git a/les/test_helper.go b/les/test_helper.go deleted file mode 100644 index 6be13eaecd..0000000000 --- a/les/test_helper.go +++ /dev/null @@ -1,626 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -// This file contains some shares testing functionality, common to multiple -// different files and modules being tested. Client based network and Server -// based network can be created easily with available APIs. - -package les - -import ( - "context" - "crypto/rand" - "fmt" - "math/big" - "testing" - "time" - - "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/forkid" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/txpool/legacypool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/les/flowcontrol" - vfs "github.com/ethereum/go-ethereum/les/vflux/server" - "github.com/ethereum/go-ethereum/light" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" -) - -var ( - bankKey, _ = crypto.GenerateKey() - bankAddr = crypto.PubkeyToAddress(bankKey.PublicKey) - bankFunds = big.NewInt(1_000_000_000_000_000_000) - - userKey1, _ = crypto.GenerateKey() - userKey2, _ = crypto.GenerateKey() - userAddr1 = crypto.PubkeyToAddress(userKey1.PublicKey) - userAddr2 = crypto.PubkeyToAddress(userKey2.PublicKey) - - testContractAddr common.Address - testContractCode = common.Hex2Bytes("606060405260cc8060106000396000f360606040526000357c01000000000000000000000000000000000000000000000000000000009004806360cd2685146041578063c16431b914606b57603f565b005b6055600480803590602001909190505060a9565b6040518082815260200191505060405180910390f35b60886004808035906020019091908035906020019091905050608a565b005b80600060005083606481101560025790900160005b50819055505b5050565b6000600060005082606481101560025790900160005b5054905060c7565b91905056") - testContractCodeDeployed = testContractCode[16:] - testContractDeployed = uint64(2) - - testEventEmitterCode = common.Hex2Bytes("60606040523415600e57600080fd5b7f57050ab73f6b9ebdd9f76b8d4997793f48cf956e965ee070551b9ca0bb71584e60405160405180910390a160358060476000396000f3006060604052600080fd00a165627a7a723058203f727efcad8b5811f8cb1fc2620ce5e8c63570d697aef968172de296ea3994140029") - - // Checkpoint oracle relative fields - signerKey, _ = crypto.GenerateKey() - signerAddr = crypto.PubkeyToAddress(signerKey.PublicKey) -) - -var ( - // The token bucket buffer limit for testing purpose. - testBufLimit = uint64(1000000) - - // The buffer recharging speed for testing purpose. - testBufRecharge = uint64(1000) -) - -/* -contract test { - - uint256[100] data; - - function Put(uint256 addr, uint256 value) { - data[addr] = value; - } - - function Get(uint256 addr) constant returns (uint256 value) { - return data[addr]; - } -} -*/ - -// prepare pre-commits specified number customized blocks into chain. -func prepare(n int, backend *backends.SimulatedBackend) { - var ( - ctx = context.Background() - signer = types.HomesteadSigner{} - ) - for i := 0; i < n; i++ { - switch i { - case 0: - // Builtin-block - // number: 1 - // txs: 1 - - // bankUser transfers some ether to user1 - nonce, _ := backend.PendingNonceAt(ctx, bankAddr) - tx, _ := types.SignTx(types.NewTransaction(nonce, userAddr1, big.NewInt(10_000_000_000_000_000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), signer, bankKey) - backend.SendTransaction(ctx, tx) - case 1: - // Builtin-block - // number: 2 - // txs: 4 - - bankNonce, _ := backend.PendingNonceAt(ctx, bankAddr) - userNonce1, _ := backend.PendingNonceAt(ctx, userAddr1) - - // bankUser transfers more ether to user1 - tx1, _ := types.SignTx(types.NewTransaction(bankNonce, userAddr1, big.NewInt(1_000_000_000_000_000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), signer, bankKey) - backend.SendTransaction(ctx, tx1) - - // user1 relays ether to user2 - tx2, _ := types.SignTx(types.NewTransaction(userNonce1, userAddr2, big.NewInt(1_000_000_000_000_000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), signer, userKey1) - backend.SendTransaction(ctx, tx2) - - // user1 deploys a test contract - tx3, _ := types.SignTx(types.NewContractCreation(userNonce1+1, big.NewInt(0), 200000, big.NewInt(params.InitialBaseFee), testContractCode), signer, userKey1) - backend.SendTransaction(ctx, tx3) - testContractAddr = crypto.CreateAddress(userAddr1, userNonce1+1) - - // user1 deploys a event contract - tx4, _ := types.SignTx(types.NewContractCreation(userNonce1+2, big.NewInt(0), 200000, big.NewInt(params.InitialBaseFee), testEventEmitterCode), signer, userKey1) - backend.SendTransaction(ctx, tx4) - case 2: - // Builtin-block - // number: 3 - // txs: 2 - - // bankUser transfer some ether to signer - bankNonce, _ := backend.PendingNonceAt(ctx, bankAddr) - tx1, _ := types.SignTx(types.NewTransaction(bankNonce, signerAddr, big.NewInt(1000000000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), signer, bankKey) - backend.SendTransaction(ctx, tx1) - - // invoke test contract - data := common.Hex2Bytes("C16431B900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001") - tx2, _ := types.SignTx(types.NewTransaction(bankNonce+1, testContractAddr, big.NewInt(0), 100000, big.NewInt(params.InitialBaseFee), data), signer, bankKey) - backend.SendTransaction(ctx, tx2) - case 3: - // Builtin-block - // number: 4 - // txs: 1 - - // invoke test contract - bankNonce, _ := backend.PendingNonceAt(ctx, bankAddr) - data := common.Hex2Bytes("C16431B900000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002") - tx, _ := types.SignTx(types.NewTransaction(bankNonce, testContractAddr, big.NewInt(0), 100000, big.NewInt(params.InitialBaseFee), data), signer, bankKey) - backend.SendTransaction(ctx, tx) - } - backend.Commit() - } -} - -// testIndexers creates a set of indexers with specified params for testing purpose. -func testIndexers(db ethdb.Database, odr light.OdrBackend, config *light.IndexerConfig, disablePruning bool) []*core.ChainIndexer { - var indexers [3]*core.ChainIndexer - indexers[0] = light.NewChtIndexer(db, odr, config.ChtSize, config.ChtConfirms, disablePruning) - indexers[1] = core.NewBloomIndexer(db, config.BloomSize, config.BloomConfirms) - indexers[2] = light.NewBloomTrieIndexer(db, odr, config.BloomSize, config.BloomTrieSize, disablePruning) - // make bloomTrieIndexer as a child indexer of bloom indexer. - indexers[1].AddChildIndexer(indexers[2]) - return indexers[:] -} - -func newTestClientHandler(backend *backends.SimulatedBackend, odr *LesOdr, indexers []*core.ChainIndexer, db ethdb.Database, peers *serverPeerSet) (*clientHandler, func()) { - var ( - evmux = new(event.TypeMux) - engine = ethash.NewFaker() - gspec = core.Genesis{ - Config: params.AllEthashProtocolChanges, - Alloc: core.GenesisAlloc{bankAddr: {Balance: bankFunds}}, - GasLimit: 100000000, - BaseFee: big.NewInt(params.InitialBaseFee), - } - ) - genesis := gspec.MustCommit(db, trie.NewDatabase(db, trie.HashDefaults)) - chain, _ := light.NewLightChain(odr, gspec.Config, engine) - - client := &LightEthereum{ - lesCommons: lesCommons{ - genesis: genesis.Hash(), - config: ðconfig.Config{LightPeers: 100, NetworkId: NetworkId}, - chainConfig: params.AllEthashProtocolChanges, - iConfig: light.TestClientIndexerConfig, - chainDb: db, - chainReader: chain, - closeCh: make(chan struct{}), - }, - peers: peers, - reqDist: odr.retriever.dist, - retriever: odr.retriever, - odr: odr, - engine: engine, - blockchain: chain, - eventMux: evmux, - merger: consensus.NewMerger(rawdb.NewMemoryDatabase()), - } - client.handler = newClientHandler(client) - - return client.handler, func() { - client.handler.stop() - } -} - -func newTestServerHandler(blocks int, indexers []*core.ChainIndexer, db ethdb.Database, clock mclock.Clock) (*serverHandler, *backends.SimulatedBackend, func()) { - var ( - gspec = core.Genesis{ - Config: params.AllEthashProtocolChanges, - Alloc: core.GenesisAlloc{bankAddr: {Balance: bankFunds}}, - GasLimit: 100000000, - BaseFee: big.NewInt(params.InitialBaseFee), - } - ) - genesis := gspec.MustCommit(db, trie.NewDatabase(db, trie.HashDefaults)) - - // create a simulation backend and pre-commit several customized block to the database. - simulation := backends.NewSimulatedBackendWithDatabase(db, gspec.Alloc, 100000000) - prepare(blocks, simulation) - - txpoolConfig := legacypool.DefaultConfig - txpoolConfig.Journal = "" - - pool := legacypool.New(txpoolConfig, simulation.Blockchain()) - txpool, _ := txpool.New(new(big.Int).SetUint64(txpoolConfig.PriceLimit), simulation.Blockchain(), []txpool.SubPool{pool}) - - server := &LesServer{ - lesCommons: lesCommons{ - genesis: genesis.Hash(), - config: ðconfig.Config{LightPeers: 100, NetworkId: NetworkId}, - chainConfig: params.AllEthashProtocolChanges, - iConfig: light.TestServerIndexerConfig, - chainDb: db, - chainReader: simulation.Blockchain(), - closeCh: make(chan struct{}), - }, - peers: newClientPeerSet(), - servingQueue: newServingQueue(int64(time.Millisecond*10), 1), - defParams: flowcontrol.ServerParams{ - BufLimit: testBufLimit, - MinRecharge: testBufRecharge, - }, - fcManager: flowcontrol.NewClientManager(nil, clock), - } - server.costTracker, server.minCapacity = newCostTracker(db, server.config) - server.costTracker.testCostList = testCostList(0) // Disable flow control mechanism. - server.clientPool = vfs.NewClientPool(db, testBufRecharge, defaultConnectedBias, clock, alwaysTrueFn) - server.clientPool.Start() - server.clientPool.SetLimits(10000, 10000) // Assign enough capacity for clientpool - server.handler = newServerHandler(server, simulation.Blockchain(), db, txpool, func() bool { return true }) - server.servingQueue.setThreads(4) - server.handler.start() - closer := func() { server.Stop() } - return server.handler, simulation, closer -} - -func alwaysTrueFn() bool { - return true -} - -// testPeer is a simulated peer to allow testing direct network calls. -type testPeer struct { - cpeer *clientPeer - speer *serverPeer - - net p2p.MsgReadWriter // Network layer reader/writer to simulate remote messaging - app *p2p.MsgPipeRW // Application layer reader/writer to simulate the local side -} - -// handshakeWithServer executes the handshake with the remote server peer. -func (p *testPeer) handshakeWithServer(t *testing.T, td *big.Int, head common.Hash, headNum uint64, genesis common.Hash, forkID forkid.ID) { - // It only works for the simulated client peer - if p.cpeer == nil { - t.Fatal("handshake for client peer only") - } - var sendList keyValueList - sendList = sendList.add("protocolVersion", uint64(p.cpeer.version)) - sendList = sendList.add("networkId", uint64(NetworkId)) - sendList = sendList.add("headTd", td) - sendList = sendList.add("headHash", head) - sendList = sendList.add("headNum", headNum) - sendList = sendList.add("genesisHash", genesis) - if p.cpeer.version >= lpv4 { - sendList = sendList.add("forkID", &forkID) - } - if err := p2p.ExpectMsg(p.app, StatusMsg, nil); err != nil { - t.Fatalf("status recv: %v", err) - } - if err := p2p.Send(p.app, StatusMsg, &sendList); err != nil { - t.Fatalf("status send: %v", err) - } -} - -// handshakeWithClient executes the handshake with the remote client peer. -// (used by temporarily disabled tests) -/*func (p *testPeer) handshakeWithClient(t *testing.T, td *big.Int, head common.Hash, headNum uint64, genesis common.Hash, forkID forkid.ID, costList RequestCostList, recentTxLookup uint64) { - // It only works for the simulated client peer - if p.speer == nil { - t.Fatal("handshake for server peer only") - } - var sendList keyValueList - sendList = sendList.add("protocolVersion", uint64(p.speer.version)) - sendList = sendList.add("networkId", uint64(NetworkId)) - sendList = sendList.add("headTd", td) - sendList = sendList.add("headHash", head) - sendList = sendList.add("headNum", headNum) - sendList = sendList.add("genesisHash", genesis) - sendList = sendList.add("serveHeaders", nil) - sendList = sendList.add("serveChainSince", uint64(0)) - sendList = sendList.add("serveStateSince", uint64(0)) - sendList = sendList.add("serveRecentState", uint64(core.TriesInMemory-4)) - sendList = sendList.add("txRelay", nil) - sendList = sendList.add("flowControl/BL", testBufLimit) - sendList = sendList.add("flowControl/MRR", testBufRecharge) - sendList = sendList.add("flowControl/MRC", costList) - if p.speer.version >= lpv4 { - sendList = sendList.add("forkID", &forkID) - sendList = sendList.add("recentTxLookup", recentTxLookup) - } - if err := p2p.ExpectMsg(p.app, StatusMsg, nil); err != nil { - t.Fatalf("status recv: %v", err) - } - if err := p2p.Send(p.app, StatusMsg, &sendList); err != nil { - t.Fatalf("status send: %v", err) - } -}*/ - -// close terminates the local side of the peer, notifying the remote protocol -// manager of termination. -func (p *testPeer) close() { - p.app.Close() -} - -func newTestPeerPair(name string, version int, server *serverHandler, client *clientHandler, noInitAnnounce bool) (*testPeer, *testPeer, error) { - // Create a message pipe to communicate through - app, net := p2p.MsgPipe() - - // Generate a random id and create the peer - var id enode.ID - rand.Read(id[:]) - - peer1 := newClientPeer(version, NetworkId, p2p.NewPeer(id, name, nil), net) - peer2 := newServerPeer(version, NetworkId, false, p2p.NewPeer(id, name, nil), app) - - // Start the peer on a new thread - errc1 := make(chan error, 1) - errc2 := make(chan error, 1) - go func() { - select { - case <-server.closeCh: - errc1 <- p2p.DiscQuitting - case errc1 <- server.handle(peer1): - } - }() - go func() { - select { - case <-client.closeCh: - errc2 <- p2p.DiscQuitting - case errc2 <- client.handle(peer2, noInitAnnounce): - } - }() - // Ensure the connection is established or exits when any error occurs - for { - select { - case err := <-errc1: - return nil, nil, fmt.Errorf("failed to establish protocol connection %v", err) - case err := <-errc2: - return nil, nil, fmt.Errorf("failed to establish protocol connection %v", err) - default: - } - if peer1.serving.Load() && peer2.serving.Load() { - break - } - time.Sleep(50 * time.Millisecond) - } - return &testPeer{cpeer: peer1, net: net, app: app}, &testPeer{speer: peer2, net: app, app: net}, nil -} - -type indexerCallback func(*core.ChainIndexer, *core.ChainIndexer, *core.ChainIndexer) - -// testClient represents a client object for testing with necessary auxiliary fields. -type testClient struct { - clock mclock.Clock - db ethdb.Database - peer *testPeer - handler *clientHandler - - chtIndexer *core.ChainIndexer - bloomIndexer *core.ChainIndexer - bloomTrieIndexer *core.ChainIndexer -} - -// newRawPeer creates a new server peer connects to the server and do the handshake. -// (used by temporarily disabled tests) -/*func (client *testClient) newRawPeer(t *testing.T, name string, version int, recentTxLookup uint64) (*testPeer, func(), <-chan error) { - // Create a message pipe to communicate through - app, net := p2p.MsgPipe() - - // Generate a random id and create the peer - var id enode.ID - rand.Read(id[:]) - peer := newServerPeer(version, NetworkId, false, p2p.NewPeer(id, name, nil), net) - - // Start the peer on a new thread - errCh := make(chan error, 1) - go func() { - select { - case <-client.handler.closeCh: - errCh <- p2p.DiscQuitting - case errCh <- client.handler.handle(peer, false): - } - }() - tp := &testPeer{ - app: app, - net: net, - speer: peer, - } - var ( - genesis = client.handler.backend.blockchain.Genesis() - head = client.handler.backend.blockchain.CurrentHeader() - td = client.handler.backend.blockchain.GetTd(head.Hash(), head.Number.Uint64()) - ) - forkID := forkid.NewID(client.handler.backend.blockchain.Config(), genesis.Hash(), head.Number.Uint64(), head.Time) - tp.handshakeWithClient(t, td, head.Hash(), head.Number.Uint64(), genesis.Hash(), forkID, testCostList(0), recentTxLookup) // disable flow control by default - - // Ensure the connection is established or exits when any error occurs - for { - select { - case <-errCh: - return nil, nil, nil - default: - } - if peer.serving.Load() { - break - } - time.Sleep(50 * time.Millisecond) - } - closePeer := func() { - tp.speer.close() - tp.close() - } - return tp, closePeer, errCh -}*/ - -// testServer represents a server object for testing with necessary auxiliary fields. -type testServer struct { - clock mclock.Clock - backend *backends.SimulatedBackend - db ethdb.Database - peer *testPeer - handler *serverHandler - - chtIndexer *core.ChainIndexer - bloomIndexer *core.ChainIndexer - bloomTrieIndexer *core.ChainIndexer -} - -// newRawPeer creates a new client peer connects to the server and do the handshake. -func (server *testServer) newRawPeer(t *testing.T, name string, version int) (*testPeer, func(), <-chan error) { - // Create a message pipe to communicate through - app, net := p2p.MsgPipe() - - // Generate a random id and create the peer - var id enode.ID - rand.Read(id[:]) - peer := newClientPeer(version, NetworkId, p2p.NewPeer(id, name, nil), net) - - // Start the peer on a new thread - errCh := make(chan error, 1) - go func() { - select { - case <-server.handler.closeCh: - errCh <- p2p.DiscQuitting - case errCh <- server.handler.handle(peer): - } - }() - tp := &testPeer{ - app: app, - net: net, - cpeer: peer, - } - var ( - genesis = server.handler.blockchain.Genesis() - head = server.handler.blockchain.CurrentHeader() - td = server.handler.blockchain.GetTd(head.Hash(), head.Number.Uint64()) - ) - forkID := forkid.NewID(server.handler.blockchain.Config(), genesis, head.Number.Uint64(), head.Time) - tp.handshakeWithServer(t, td, head.Hash(), head.Number.Uint64(), genesis.Hash(), forkID) - - // Ensure the connection is established or exits when any error occurs - for { - select { - case <-errCh: - return nil, nil, nil - default: - } - if peer.serving.Load() { - break - } - time.Sleep(50 * time.Millisecond) - } - closePeer := func() { - tp.cpeer.close() - tp.close() - } - return tp, closePeer, errCh -} - -// testnetConfig wraps all the configurations for testing network. -type testnetConfig struct { - blocks int - protocol int - indexFn indexerCallback - simClock bool - connect bool - nopruning bool -} - -func newClientServerEnv(t *testing.T, config testnetConfig) (*testServer, *testClient, func()) { - var ( - sdb = rawdb.NewMemoryDatabase() - cdb = rawdb.NewMemoryDatabase() - speers = newServerPeerSet() - ) - var clock mclock.Clock = &mclock.System{} - if config.simClock { - clock = &mclock.Simulated{} - } - dist := newRequestDistributor(speers, clock) - rm := newRetrieveManager(speers, dist, func() time.Duration { return time.Millisecond * 500 }) - odr := NewLesOdr(cdb, light.TestClientIndexerConfig, speers, rm) - - sindexers := testIndexers(sdb, nil, light.TestServerIndexerConfig, true) - cIndexers := testIndexers(cdb, odr, light.TestClientIndexerConfig, config.nopruning) - - scIndexer, sbIndexer, sbtIndexer := sindexers[0], sindexers[1], sindexers[2] - ccIndexer, cbIndexer, cbtIndexer := cIndexers[0], cIndexers[1], cIndexers[2] - odr.SetIndexers(ccIndexer, cbIndexer, cbtIndexer) - - server, b, serverClose := newTestServerHandler(config.blocks, sindexers, sdb, clock) - client, clientClose := newTestClientHandler(b, odr, cIndexers, cdb, speers) - - scIndexer.Start(server.blockchain) - sbIndexer.Start(server.blockchain) - ccIndexer.Start(client.backend.blockchain) - cbIndexer.Start(client.backend.blockchain) - - if config.indexFn != nil { - config.indexFn(scIndexer, sbIndexer, sbtIndexer) - } - var ( - err error - speer, cpeer *testPeer - ) - if config.connect { - done := make(chan struct{}) - cpeer, speer, err = newTestPeerPair("peer", config.protocol, server, client, false) - if err != nil { - t.Fatalf("Failed to connect testing peers %v", err) - } - select { - case <-done: - case <-time.After(10 * time.Second): - t.Fatal("test peer did not connect and sync within 3s") - } - } - s := &testServer{ - clock: clock, - backend: b, - db: sdb, - peer: cpeer, - handler: server, - chtIndexer: scIndexer, - bloomIndexer: sbIndexer, - bloomTrieIndexer: sbtIndexer, - } - c := &testClient{ - clock: clock, - db: cdb, - peer: speer, - handler: client, - chtIndexer: ccIndexer, - bloomIndexer: cbIndexer, - bloomTrieIndexer: cbtIndexer, - } - teardown := func() { - if config.connect { - speer.close() - cpeer.close() - cpeer.cpeer.close() - speer.speer.close() - } - ccIndexer.Close() - cbIndexer.Close() - scIndexer.Close() - sbIndexer.Close() - dist.close() - serverClose() - b.Close() - clientClose() - } - return s, c, teardown -} - -// NewFuzzerPeer creates a client peer for test purposes, and also returns -// a function to close the peer: this is needed to avoid goroutine leaks in the -// exec queue. -func NewFuzzerPeer(version int) (p *clientPeer, closer func()) { - p = newClientPeer(version, 0, p2p.NewPeer(enode.ID{}, "", nil), nil) - return p, func() { p.peerCommons.close() } -} diff --git a/les/txrelay.go b/les/txrelay.go deleted file mode 100644 index 40a51fb76f..0000000000 --- a/les/txrelay.go +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "context" - "math/rand" - "sync" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/rlp" -) - -type lesTxRelay struct { - txSent map[common.Hash]*types.Transaction - txPending map[common.Hash]struct{} - peerList []*serverPeer - peerStartPos int - lock sync.Mutex - stop chan struct{} - - retriever *retrieveManager -} - -func newLesTxRelay(ps *serverPeerSet, retriever *retrieveManager) *lesTxRelay { - r := &lesTxRelay{ - txSent: make(map[common.Hash]*types.Transaction), - txPending: make(map[common.Hash]struct{}), - retriever: retriever, - stop: make(chan struct{}), - } - ps.subscribe(r) - return r -} - -func (ltrx *lesTxRelay) Stop() { - close(ltrx.stop) -} - -func (ltrx *lesTxRelay) registerPeer(p *serverPeer) { - ltrx.lock.Lock() - defer ltrx.lock.Unlock() - - // Short circuit if the peer is announce only. - if p.onlyAnnounce { - return - } - ltrx.peerList = append(ltrx.peerList, p) -} - -func (ltrx *lesTxRelay) unregisterPeer(p *serverPeer) { - ltrx.lock.Lock() - defer ltrx.lock.Unlock() - - for i, peer := range ltrx.peerList { - if peer == p { - // Remove from the peer list - ltrx.peerList = append(ltrx.peerList[:i], ltrx.peerList[i+1:]...) - return - } - } -} - -// send sends a list of transactions to at most a given number of peers. -func (ltrx *lesTxRelay) send(txs types.Transactions, count int) { - sendTo := make(map[*serverPeer]types.Transactions) - - ltrx.peerStartPos++ // rotate the starting position of the peer list - if ltrx.peerStartPos >= len(ltrx.peerList) { - ltrx.peerStartPos = 0 - } - - for _, tx := range txs { - hash := tx.Hash() - _, ok := ltrx.txSent[hash] - if !ok { - ltrx.txSent[hash] = tx - ltrx.txPending[hash] = struct{}{} - } - if len(ltrx.peerList) > 0 { - cnt := count - pos := ltrx.peerStartPos - for { - peer := ltrx.peerList[pos] - sendTo[peer] = append(sendTo[peer], tx) - cnt-- - if cnt == 0 { - break // sent it to the desired number of peers - } - pos++ - if pos == len(ltrx.peerList) { - pos = 0 - } - if pos == ltrx.peerStartPos { - break // tried all available peers - } - } - } - } - - for p, list := range sendTo { - pp := p - ll := list - enc, _ := rlp.EncodeToBytes(ll) - - reqID := rand.Uint64() - rq := &distReq{ - getCost: func(dp distPeer) uint64 { - peer := dp.(*serverPeer) - return peer.getTxRelayCost(len(ll), len(enc)) - }, - canSend: func(dp distPeer) bool { - return !dp.(*serverPeer).onlyAnnounce && dp.(*serverPeer) == pp - }, - request: func(dp distPeer) func() { - peer := dp.(*serverPeer) - cost := peer.getTxRelayCost(len(ll), len(enc)) - peer.fcServer.QueuedRequest(reqID, cost) - return func() { peer.sendTxs(reqID, len(ll), enc) } - }, - } - go ltrx.retriever.retrieve(context.Background(), reqID, rq, func(p distPeer, msg *Msg) error { return nil }, ltrx.stop) - } -} - -func (ltrx *lesTxRelay) Send(txs types.Transactions) { - ltrx.lock.Lock() - defer ltrx.lock.Unlock() - - ltrx.send(txs, 3) -} - -func (ltrx *lesTxRelay) NewHead(head common.Hash, mined []common.Hash, rollback []common.Hash) { - ltrx.lock.Lock() - defer ltrx.lock.Unlock() - - for _, hash := range mined { - delete(ltrx.txPending, hash) - } - - for _, hash := range rollback { - ltrx.txPending[hash] = struct{}{} - } - - if len(ltrx.txPending) > 0 { - txs := make(types.Transactions, len(ltrx.txPending)) - i := 0 - for hash := range ltrx.txPending { - txs[i] = ltrx.txSent[hash] - i++ - } - ltrx.send(txs, 1) - } -} - -func (ltrx *lesTxRelay) Discard(hashes []common.Hash) { - ltrx.lock.Lock() - defer ltrx.lock.Unlock() - - for _, hash := range hashes { - delete(ltrx.txSent, hash) - delete(ltrx.txPending, hash) - } -} diff --git a/les/utils/exec_queue.go b/les/utils/exec_queue.go deleted file mode 100644 index 5942b06ec0..0000000000 --- a/les/utils/exec_queue.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import "sync" - -// ExecQueue implements a queue that executes function calls in a single thread, -// in the same order as they have been queued. -type ExecQueue struct { - mu sync.Mutex - cond *sync.Cond - funcs []func() - closeWait chan struct{} -} - -// NewExecQueue creates a new execution Queue. -func NewExecQueue(capacity int) *ExecQueue { - q := &ExecQueue{funcs: make([]func(), 0, capacity)} - q.cond = sync.NewCond(&q.mu) - go q.loop() - return q -} - -func (q *ExecQueue) loop() { - for f := q.waitNext(false); f != nil; f = q.waitNext(true) { - f() - } - close(q.closeWait) -} - -func (q *ExecQueue) waitNext(drop bool) (f func()) { - q.mu.Lock() - if drop && len(q.funcs) > 0 { - // Remove the function that just executed. We do this here instead of when - // dequeuing so len(q.funcs) includes the function that is running. - q.funcs = append(q.funcs[:0], q.funcs[1:]...) - } - for !q.isClosed() { - if len(q.funcs) > 0 { - f = q.funcs[0] - break - } - q.cond.Wait() - } - q.mu.Unlock() - return f -} - -func (q *ExecQueue) isClosed() bool { - return q.closeWait != nil -} - -// CanQueue returns true if more function calls can be added to the execution Queue. -func (q *ExecQueue) CanQueue() bool { - q.mu.Lock() - ok := !q.isClosed() && len(q.funcs) < cap(q.funcs) - q.mu.Unlock() - return ok -} - -// Queue adds a function call to the execution Queue. Returns true if successful. -func (q *ExecQueue) Queue(f func()) bool { - q.mu.Lock() - ok := !q.isClosed() && len(q.funcs) < cap(q.funcs) - if ok { - q.funcs = append(q.funcs, f) - q.cond.Signal() - } - q.mu.Unlock() - return ok -} - -// Clear drops all queued functions. -func (q *ExecQueue) Clear() { - q.mu.Lock() - q.funcs = q.funcs[:0] - q.mu.Unlock() -} - -// Quit stops the exec Queue. -// -// Quit waits for the current execution to finish before returning. -func (q *ExecQueue) Quit() { - q.mu.Lock() - if !q.isClosed() { - q.closeWait = make(chan struct{}) - q.cond.Signal() - } - q.mu.Unlock() - <-q.closeWait -} diff --git a/les/utils/exec_queue_test.go b/les/utils/exec_queue_test.go deleted file mode 100644 index 98601c4486..0000000000 --- a/les/utils/exec_queue_test.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import "testing" - -func TestExecQueue(t *testing.T) { - var ( - N = 10000 - q = NewExecQueue(N) - counter int - execd = make(chan int) - testexit = make(chan struct{}) - ) - defer q.Quit() - defer close(testexit) - - check := func(state string, wantOK bool) { - c := counter - counter++ - qf := func() { - select { - case execd <- c: - case <-testexit: - } - } - if q.CanQueue() != wantOK { - t.Fatalf("CanQueue() == %t for %s", !wantOK, state) - } - if q.Queue(qf) != wantOK { - t.Fatalf("Queue() == %t for %s", !wantOK, state) - } - } - - for i := 0; i < N; i++ { - check("queue below cap", true) - } - check("full queue", false) - for i := 0; i < N; i++ { - if c := <-execd; c != i { - t.Fatal("execution out of order") - } - } - q.Quit() - check("closed queue", false) -} diff --git a/les/utils/expiredvalue.go b/les/utils/expiredvalue.go deleted file mode 100644 index 099b61d053..0000000000 --- a/les/utils/expiredvalue.go +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "math" - "sync" - - "github.com/ethereum/go-ethereum/common/mclock" -) - -// ExpiredValue is a scalar value that is continuously expired (decreased -// exponentially) based on the provided logarithmic expiration offset value. -// -// The formula for value calculation is: base*2^(exp-logOffset). In order to -// simplify the calculation of ExpiredValue, its value is expressed in the form -// of an exponent with a base of 2. -// -// Also here is a trick to reduce a lot of calculations. In theory, when a value X -// decays over time and then a new value Y is added, the final result should be -// X*2^(exp-logOffset)+Y. However it's very hard to represent in memory. -// So the trick is using the idea of inflation instead of exponential decay. At this -// moment the temporary value becomes: X*2^exp+Y*2^logOffset_1, apply the exponential -// decay when we actually want to calculate the value. -// -// e.g. -// t0: V = 100 -// t1: add 30, inflationary value is: 100 + 30/0.3, 0.3 is the decay coefficient -// t2: get value, decay coefficient is 0.2 now, final result is: 200*0.2 = 40 -type ExpiredValue struct { - Base, Exp uint64 // rlp encoding works by default -} - -// ExpirationFactor is calculated from logOffset. 1 <= Factor < 2 and Factor*2^Exp -// describes the multiplier applicable for additions and the divider for readouts. -// If logOffset changes slowly then it saves some expensive operations to not calculate -// them for each addition and readout but cache this intermediate form for some time. -// It is also useful for structures where multiple values are expired with the same -// Expirer. -type ExpirationFactor struct { - Exp uint64 - Factor float64 -} - -// ExpFactor calculates ExpirationFactor based on logOffset -func ExpFactor(logOffset Fixed64) ExpirationFactor { - return ExpirationFactor{Exp: logOffset.ToUint64(), Factor: logOffset.Fraction().Pow2()} -} - -// Value calculates the expired value based on a floating point base and integer -// power-of-2 exponent. This function should be used by multi-value expired structures. -func (e ExpirationFactor) Value(base float64, exp uint64) float64 { - return base / e.Factor * math.Pow(2, float64(int64(exp-e.Exp))) -} - -// Value calculates the value at the given moment. -func (e ExpiredValue) Value(logOffset Fixed64) uint64 { - offset := Uint64ToFixed64(e.Exp) - logOffset - return uint64(float64(e.Base) * offset.Pow2()) -} - -// Add adds a signed value at the given moment -func (e *ExpiredValue) Add(amount int64, logOffset Fixed64) int64 { - integer, frac := logOffset.ToUint64(), logOffset.Fraction() - factor := frac.Pow2() - base := factor * float64(amount) - if integer < e.Exp { - base /= math.Pow(2, float64(e.Exp-integer)) - } - if integer > e.Exp { - e.Base >>= (integer - e.Exp) - e.Exp = integer - } - if base >= 0 || uint64(-base) <= e.Base { - // The conversion from negative float64 to - // uint64 is undefined in golang, and doesn't - // work with ARMv8. More details at: - // https://github.com/golang/go/issues/43047 - if base >= 0 { - e.Base += uint64(base) - } else { - e.Base -= uint64(-base) - } - return amount - } - net := int64(-float64(e.Base) / factor) - e.Base = 0 - return net -} - -// AddExp adds another ExpiredValue -func (e *ExpiredValue) AddExp(a ExpiredValue) { - if e.Exp > a.Exp { - a.Base >>= (e.Exp - a.Exp) - } - if e.Exp < a.Exp { - e.Base >>= (a.Exp - e.Exp) - e.Exp = a.Exp - } - e.Base += a.Base -} - -// SubExp subtracts another ExpiredValue -func (e *ExpiredValue) SubExp(a ExpiredValue) { - if e.Exp > a.Exp { - a.Base >>= (e.Exp - a.Exp) - } - if e.Exp < a.Exp { - e.Base >>= (a.Exp - e.Exp) - e.Exp = a.Exp - } - if e.Base > a.Base { - e.Base -= a.Base - } else { - e.Base = 0 - } -} - -// IsZero returns true if the value is zero -func (e *ExpiredValue) IsZero() bool { - return e.Base == 0 -} - -// LinearExpiredValue is very similar with the expiredValue which the value -// will continuously expired. But the different part is it's expired linearly. -type LinearExpiredValue struct { - Offset uint64 // The latest time offset - Val uint64 // The remaining value, can never be negative - Rate mclock.AbsTime `rlp:"-"` // Expiration rate(by nanosecond), will ignored by RLP -} - -// Value calculates the value at the given moment. This function always has the -// assumption that the given timestamp shouldn't less than the recorded one. -func (e LinearExpiredValue) Value(now mclock.AbsTime) uint64 { - offset := uint64(now / e.Rate) - if e.Offset < offset { - diff := offset - e.Offset - if e.Val >= diff { - e.Val -= diff - } else { - e.Val = 0 - } - } - return e.Val -} - -// Add adds a signed value at the given moment. This function always has the -// assumption that the given timestamp shouldn't less than the recorded one. -func (e *LinearExpiredValue) Add(amount int64, now mclock.AbsTime) uint64 { - offset := uint64(now / e.Rate) - if e.Offset < offset { - diff := offset - e.Offset - if e.Val >= diff { - e.Val -= diff - } else { - e.Val = 0 - } - e.Offset = offset - } - if amount < 0 && uint64(-amount) > e.Val { - e.Val = 0 - } else { - e.Val = uint64(int64(e.Val) + amount) - } - return e.Val -} - -// ValueExpirer controls value expiration rate -type ValueExpirer interface { - SetRate(now mclock.AbsTime, rate float64) - SetLogOffset(now mclock.AbsTime, logOffset Fixed64) - LogOffset(now mclock.AbsTime) Fixed64 -} - -// Expirer changes logOffset with a linear rate which can be changed during operation. -// It is not thread safe, if access by multiple goroutines is needed then it should be -// encapsulated into a locked structure. -// Note that if neither SetRate nor SetLogOffset are used during operation then LogOffset -// is thread safe. -type Expirer struct { - lock sync.RWMutex - logOffset Fixed64 - rate float64 - lastUpdate mclock.AbsTime -} - -// SetRate changes the expiration rate which is the inverse of the time constant in -// nanoseconds. -func (e *Expirer) SetRate(now mclock.AbsTime, rate float64) { - e.lock.Lock() - defer e.lock.Unlock() - - dt := now - e.lastUpdate - if dt > 0 { - e.logOffset += Fixed64(logToFixedFactor * float64(dt) * e.rate) - } - e.lastUpdate = now - e.rate = rate -} - -// SetLogOffset sets logOffset instantly. -func (e *Expirer) SetLogOffset(now mclock.AbsTime, logOffset Fixed64) { - e.lock.Lock() - defer e.lock.Unlock() - - e.lastUpdate = now - e.logOffset = logOffset -} - -// LogOffset returns the current logarithmic offset. -func (e *Expirer) LogOffset(now mclock.AbsTime) Fixed64 { - e.lock.RLock() - defer e.lock.RUnlock() - - dt := now - e.lastUpdate - if dt <= 0 { - return e.logOffset - } - return e.logOffset + Fixed64(logToFixedFactor*float64(dt)*e.rate) -} - -// fixedFactor is the fixed point multiplier factor used by Fixed64. -const fixedFactor = 0x1000000 - -// Fixed64 implements 64-bit fixed point arithmetic functions. -type Fixed64 int64 - -// Uint64ToFixed64 converts uint64 integer to Fixed64 format. -func Uint64ToFixed64(f uint64) Fixed64 { - return Fixed64(f * fixedFactor) -} - -// Float64ToFixed64 converts float64 to Fixed64 format. -func Float64ToFixed64(f float64) Fixed64 { - return Fixed64(f * fixedFactor) -} - -// ToUint64 converts Fixed64 format to uint64. -func (f64 Fixed64) ToUint64() uint64 { - return uint64(f64) / fixedFactor -} - -// Fraction returns the fractional part of a Fixed64 value. -func (f64 Fixed64) Fraction() Fixed64 { - return f64 % fixedFactor -} - -var ( - logToFixedFactor = float64(fixedFactor) / math.Log(2) - fixedToLogFactor = math.Log(2) / float64(fixedFactor) -) - -// Pow2 returns the base 2 power of the fixed point value. -func (f64 Fixed64) Pow2() float64 { - return math.Exp(float64(f64) * fixedToLogFactor) -} diff --git a/les/utils/expiredvalue_test.go b/les/utils/expiredvalue_test.go deleted file mode 100644 index 1c751d8cc6..0000000000 --- a/les/utils/expiredvalue_test.go +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "testing" - - "github.com/ethereum/go-ethereum/common/mclock" -) - -func TestValueExpiration(t *testing.T) { - var cases = []struct { - input ExpiredValue - timeOffset Fixed64 - expect uint64 - }{ - {ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(0), 128}, - {ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(1), 64}, - {ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(2), 32}, - {ExpiredValue{Base: 128, Exp: 2}, Uint64ToFixed64(2), 128}, - {ExpiredValue{Base: 128, Exp: 2}, Uint64ToFixed64(3), 64}, - } - for _, c := range cases { - if got := c.input.Value(c.timeOffset); got != c.expect { - t.Fatalf("Value mismatch, want=%d, got=%d", c.expect, got) - } - } -} - -func TestValueAddition(t *testing.T) { - var cases = []struct { - input ExpiredValue - addend int64 - timeOffset Fixed64 - expect uint64 - expectNet int64 - }{ - // Addition - {ExpiredValue{Base: 128, Exp: 0}, 128, Uint64ToFixed64(0), 256, 128}, - {ExpiredValue{Base: 128, Exp: 2}, 128, Uint64ToFixed64(0), 640, 128}, - - // Addition with offset - {ExpiredValue{Base: 128, Exp: 0}, 128, Uint64ToFixed64(1), 192, 128}, - {ExpiredValue{Base: 128, Exp: 2}, 128, Uint64ToFixed64(1), 384, 128}, - {ExpiredValue{Base: 128, Exp: 2}, 128, Uint64ToFixed64(3), 192, 128}, - - // Subtraction - {ExpiredValue{Base: 128, Exp: 0}, -64, Uint64ToFixed64(0), 64, -64}, - {ExpiredValue{Base: 128, Exp: 0}, -128, Uint64ToFixed64(0), 0, -128}, - {ExpiredValue{Base: 128, Exp: 0}, -192, Uint64ToFixed64(0), 0, -128}, - - // Subtraction with offset - {ExpiredValue{Base: 128, Exp: 0}, -64, Uint64ToFixed64(1), 0, -64}, - {ExpiredValue{Base: 128, Exp: 0}, -128, Uint64ToFixed64(1), 0, -64}, - {ExpiredValue{Base: 128, Exp: 2}, -128, Uint64ToFixed64(1), 128, -128}, - {ExpiredValue{Base: 128, Exp: 2}, -128, Uint64ToFixed64(2), 0, -128}, - } - for _, c := range cases { - if net := c.input.Add(c.addend, c.timeOffset); net != c.expectNet { - t.Fatalf("Net amount mismatch, want=%d, got=%d", c.expectNet, net) - } - if got := c.input.Value(c.timeOffset); got != c.expect { - t.Fatalf("Value mismatch, want=%d, got=%d", c.expect, got) - } - } -} - -func TestExpiredValueAddition(t *testing.T) { - var cases = []struct { - input ExpiredValue - another ExpiredValue - timeOffset Fixed64 - expect uint64 - }{ - {ExpiredValue{Base: 128, Exp: 0}, ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(0), 256}, - {ExpiredValue{Base: 128, Exp: 1}, ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(0), 384}, - {ExpiredValue{Base: 128, Exp: 0}, ExpiredValue{Base: 128, Exp: 1}, Uint64ToFixed64(0), 384}, - {ExpiredValue{Base: 128, Exp: 0}, ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(1), 128}, - } - for _, c := range cases { - c.input.AddExp(c.another) - if got := c.input.Value(c.timeOffset); got != c.expect { - t.Fatalf("Value mismatch, want=%d, got=%d", c.expect, got) - } - } -} - -func TestExpiredValueSubtraction(t *testing.T) { - var cases = []struct { - input ExpiredValue - another ExpiredValue - timeOffset Fixed64 - expect uint64 - }{ - {ExpiredValue{Base: 128, Exp: 0}, ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(0), 0}, - {ExpiredValue{Base: 128, Exp: 0}, ExpiredValue{Base: 128, Exp: 1}, Uint64ToFixed64(0), 0}, - {ExpiredValue{Base: 128, Exp: 1}, ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(0), 128}, - {ExpiredValue{Base: 128, Exp: 1}, ExpiredValue{Base: 128, Exp: 0}, Uint64ToFixed64(1), 64}, - } - for _, c := range cases { - c.input.SubExp(c.another) - if got := c.input.Value(c.timeOffset); got != c.expect { - t.Fatalf("Value mismatch, want=%d, got=%d", c.expect, got) - } - } -} - -func TestLinearExpiredValue(t *testing.T) { - var cases = []struct { - value LinearExpiredValue - now mclock.AbsTime - expect uint64 - }{ - {LinearExpiredValue{ - Offset: 0, - Val: 0, - Rate: mclock.AbsTime(1), - }, 0, 0}, - - {LinearExpiredValue{ - Offset: 1, - Val: 1, - Rate: mclock.AbsTime(1), - }, 0, 1}, - - {LinearExpiredValue{ - Offset: 1, - Val: 1, - Rate: mclock.AbsTime(1), - }, mclock.AbsTime(2), 0}, - - {LinearExpiredValue{ - Offset: 1, - Val: 1, - Rate: mclock.AbsTime(1), - }, mclock.AbsTime(3), 0}, - } - for _, c := range cases { - if value := c.value.Value(c.now); value != c.expect { - t.Fatalf("Value mismatch, want=%d, got=%d", c.expect, value) - } - } -} - -func TestLinearExpiredAddition(t *testing.T) { - var cases = []struct { - value LinearExpiredValue - amount int64 - now mclock.AbsTime - expect uint64 - }{ - {LinearExpiredValue{ - Offset: 0, - Val: 0, - Rate: mclock.AbsTime(1), - }, -1, 0, 0}, - - {LinearExpiredValue{ - Offset: 1, - Val: 1, - Rate: mclock.AbsTime(1), - }, -1, 0, 0}, - - {LinearExpiredValue{ - Offset: 1, - Val: 2, - Rate: mclock.AbsTime(1), - }, -1, mclock.AbsTime(2), 0}, - - {LinearExpiredValue{ - Offset: 1, - Val: 2, - Rate: mclock.AbsTime(1), - }, -2, mclock.AbsTime(2), 0}, - } - for _, c := range cases { - if value := c.value.Add(c.amount, c.now); value != c.expect { - t.Fatalf("Value mismatch, want=%d, got=%d", c.expect, value) - } - } -} diff --git a/les/utils/limiter.go b/les/utils/limiter.go deleted file mode 100644 index 70b7ff64f7..0000000000 --- a/les/utils/limiter.go +++ /dev/null @@ -1,398 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "sync" - - "github.com/ethereum/go-ethereum/p2p/enode" - "golang.org/x/exp/slices" -) - -const maxSelectionWeight = 1000000000 // maximum selection weight of each individual node/address group - -// Limiter protects a network request serving mechanism from denial-of-service attacks. -// It limits the total amount of resources used for serving requests while ensuring that -// the most valuable connections always have a reasonable chance of being served. -type Limiter struct { - lock sync.Mutex - cond *sync.Cond - quit bool - - nodes map[enode.ID]*nodeQueue - addresses map[string]*addressGroup - addressSelect, valueSelect *WeightedRandomSelect - maxValue float64 - maxCost, sumCost, sumCostLimit uint - selectAddressNext bool -} - -// nodeQueue represents queued requests coming from a single node ID -type nodeQueue struct { - queue []request // always nil if penaltyCost != 0 - id enode.ID - address string - value float64 - flatWeight, valueWeight uint64 // current selection weights in the address/value selectors - sumCost uint // summed cost of requests queued by the node - penaltyCost uint // cumulative cost of dropped requests since last processed request - groupIndex int -} - -// addressGroup is a group of node IDs that have sent their last requests from the same -// network address -type addressGroup struct { - nodes []*nodeQueue - nodeSelect *WeightedRandomSelect - sumFlatWeight, groupWeight uint64 -} - -// request represents an incoming request scheduled for processing -type request struct { - process chan chan struct{} - cost uint -} - -// flatWeight distributes weights equally between each active network address -func flatWeight(item interface{}) uint64 { return item.(*nodeQueue).flatWeight } - -// add adds the node queue to the address group. It is the caller's responsibility to -// add the address group to the address map and the address selector if it wasn't -// there before. -func (ag *addressGroup) add(nq *nodeQueue) { - if nq.groupIndex != -1 { - panic("added node queue is already in an address group") - } - l := len(ag.nodes) - nq.groupIndex = l - ag.nodes = append(ag.nodes, nq) - ag.sumFlatWeight += nq.flatWeight - ag.groupWeight = ag.sumFlatWeight / uint64(l+1) - ag.nodeSelect.Update(ag.nodes[l]) -} - -// update updates the selection weight of the node queue inside the address group. -// It is the caller's responsibility to update the group's selection weight in the -// address selector. -func (ag *addressGroup) update(nq *nodeQueue, weight uint64) { - if nq.groupIndex == -1 || nq.groupIndex >= len(ag.nodes) || ag.nodes[nq.groupIndex] != nq { - panic("updated node queue is not in this address group") - } - ag.sumFlatWeight += weight - nq.flatWeight - nq.flatWeight = weight - ag.groupWeight = ag.sumFlatWeight / uint64(len(ag.nodes)) - ag.nodeSelect.Update(nq) -} - -// remove removes the node queue from the address group. It is the caller's responsibility -// to remove the address group from the address map if it is empty. -func (ag *addressGroup) remove(nq *nodeQueue) { - if nq.groupIndex == -1 || nq.groupIndex >= len(ag.nodes) || ag.nodes[nq.groupIndex] != nq { - panic("removed node queue is not in this address group") - } - - l := len(ag.nodes) - 1 - if nq.groupIndex != l { - ag.nodes[nq.groupIndex] = ag.nodes[l] - ag.nodes[nq.groupIndex].groupIndex = nq.groupIndex - } - nq.groupIndex = -1 - ag.nodes = ag.nodes[:l] - ag.sumFlatWeight -= nq.flatWeight - if l >= 1 { - ag.groupWeight = ag.sumFlatWeight / uint64(l) - } else { - ag.groupWeight = 0 - } - ag.nodeSelect.Remove(nq) -} - -// choose selects one of the node queues belonging to the address group -func (ag *addressGroup) choose() *nodeQueue { - return ag.nodeSelect.Choose().(*nodeQueue) -} - -// NewLimiter creates a new Limiter -func NewLimiter(sumCostLimit uint) *Limiter { - l := &Limiter{ - addressSelect: NewWeightedRandomSelect(func(item interface{}) uint64 { return item.(*addressGroup).groupWeight }), - valueSelect: NewWeightedRandomSelect(func(item interface{}) uint64 { return item.(*nodeQueue).valueWeight }), - nodes: make(map[enode.ID]*nodeQueue), - addresses: make(map[string]*addressGroup), - sumCostLimit: sumCostLimit, - } - l.cond = sync.NewCond(&l.lock) - go l.processLoop() - return l -} - -// selectionWeights calculates the selection weights of a node for both the address and -// the value selector. The selection weight depends on the next request cost or the -// summed cost of recently dropped requests. -func (l *Limiter) selectionWeights(reqCost uint, value float64) (flatWeight, valueWeight uint64) { - if value > l.maxValue { - l.maxValue = value - } - if value > 0 { - // normalize value to <= 1 - value /= l.maxValue - } - if reqCost > l.maxCost { - l.maxCost = reqCost - } - relCost := float64(reqCost) / float64(l.maxCost) - var f float64 - if relCost <= 0.001 { - f = 1 - } else { - f = 0.001 / relCost - } - f *= maxSelectionWeight - flatWeight, valueWeight = uint64(f), uint64(f*value) - if flatWeight == 0 { - flatWeight = 1 - } - return -} - -// Add adds a new request to the node queue belonging to the given id. Value belongs -// to the requesting node. A higher value gives the request a higher chance of being -// served quickly in case of heavy load or a DDoS attack. Cost is a rough estimate -// of the serving cost of the request. A lower cost also gives the request a -// better chance. -func (l *Limiter) Add(id enode.ID, address string, value float64, reqCost uint) chan chan struct{} { - l.lock.Lock() - defer l.lock.Unlock() - - process := make(chan chan struct{}, 1) - if l.quit { - close(process) - return process - } - if reqCost == 0 { - reqCost = 1 - } - if nq, ok := l.nodes[id]; ok { - if nq.queue != nil { - nq.queue = append(nq.queue, request{process, reqCost}) - nq.sumCost += reqCost - nq.value = value - if address != nq.address { - // known id sending request from a new address, move to different address group - l.removeFromGroup(nq) - l.addToGroup(nq, address) - } - } else { - // already waiting on a penalty, just add to the penalty cost and drop the request - nq.penaltyCost += reqCost - l.update(nq) - close(process) - return process - } - } else { - nq := &nodeQueue{ - queue: []request{{process, reqCost}}, - id: id, - value: value, - sumCost: reqCost, - groupIndex: -1, - } - nq.flatWeight, nq.valueWeight = l.selectionWeights(reqCost, value) - if len(l.nodes) == 0 { - l.cond.Signal() - } - l.nodes[id] = nq - if nq.valueWeight != 0 { - l.valueSelect.Update(nq) - } - l.addToGroup(nq, address) - } - l.sumCost += reqCost - if l.sumCost > l.sumCostLimit { - l.dropRequests() - } - return process -} - -// update updates the selection weights of the node queue -func (l *Limiter) update(nq *nodeQueue) { - var cost uint - if nq.queue != nil { - cost = nq.queue[0].cost - } else { - cost = nq.penaltyCost - } - flatWeight, valueWeight := l.selectionWeights(cost, nq.value) - ag := l.addresses[nq.address] - ag.update(nq, flatWeight) - l.addressSelect.Update(ag) - nq.valueWeight = valueWeight - l.valueSelect.Update(nq) -} - -// addToGroup adds the node queue to the given address group. The group is created if -// it does not exist yet. -func (l *Limiter) addToGroup(nq *nodeQueue, address string) { - nq.address = address - ag := l.addresses[address] - if ag == nil { - ag = &addressGroup{nodeSelect: NewWeightedRandomSelect(flatWeight)} - l.addresses[address] = ag - } - ag.add(nq) - l.addressSelect.Update(ag) -} - -// removeFromGroup removes the node queue from its address group -func (l *Limiter) removeFromGroup(nq *nodeQueue) { - ag := l.addresses[nq.address] - ag.remove(nq) - if len(ag.nodes) == 0 { - delete(l.addresses, nq.address) - } - l.addressSelect.Update(ag) -} - -// remove removes the node queue from its address group, the nodes map and the value -// selector -func (l *Limiter) remove(nq *nodeQueue) { - l.removeFromGroup(nq) - if nq.valueWeight != 0 { - l.valueSelect.Remove(nq) - } - delete(l.nodes, nq.id) -} - -// choose selects the next node queue to process. -func (l *Limiter) choose() *nodeQueue { - if l.valueSelect.IsEmpty() || l.selectAddressNext { - if ag, ok := l.addressSelect.Choose().(*addressGroup); ok { - l.selectAddressNext = false - return ag.choose() - } - } - nq, _ := l.valueSelect.Choose().(*nodeQueue) - l.selectAddressNext = true - return nq -} - -// processLoop processes requests sequentially -func (l *Limiter) processLoop() { - l.lock.Lock() - defer l.lock.Unlock() - - for { - if l.quit { - for _, nq := range l.nodes { - for _, request := range nq.queue { - close(request.process) - } - } - return - } - nq := l.choose() - if nq == nil { - l.cond.Wait() - continue - } - if nq.queue != nil { - request := nq.queue[0] - nq.queue = nq.queue[1:] - nq.sumCost -= request.cost - l.sumCost -= request.cost - l.lock.Unlock() - ch := make(chan struct{}) - request.process <- ch - <-ch - l.lock.Lock() - if len(nq.queue) > 0 { - l.update(nq) - } else { - l.remove(nq) - } - } else { - // penalized queue removed, next request will be added to a clean queue - l.remove(nq) - } - } -} - -// Stop stops the processing loop. All queued and future requests are rejected. -func (l *Limiter) Stop() { - l.lock.Lock() - defer l.lock.Unlock() - - l.quit = true - l.cond.Signal() -} - -type dropListItem struct { - nq *nodeQueue - priority float64 -} - -// dropRequests selects the nodes with the highest queued request cost to selection -// weight ratio and drops their queued request. The empty node queues stay in the -// selectors with a low selection weight in order to penalize these nodes. -func (l *Limiter) dropRequests() { - var ( - sumValue float64 - list []dropListItem - ) - for _, nq := range l.nodes { - sumValue += nq.value - } - for _, nq := range l.nodes { - if nq.sumCost == 0 { - continue - } - w := 1 / float64(len(l.addresses)*len(l.addresses[nq.address].nodes)) - if sumValue > 0 { - w += nq.value / sumValue - } - list = append(list, dropListItem{ - nq: nq, - priority: w / float64(nq.sumCost), - }) - } - slices.SortFunc(list, func(a, b dropListItem) int { - if a.priority < b.priority { - return -1 - } - if a.priority < b.priority { - return 1 - } - return 0 - }) - for _, item := range list { - for _, request := range item.nq.queue { - close(request.process) - } - // make the queue penalized; no more requests are accepted until the node is - // selected based on the penalty cost which is the cumulative cost of all dropped - // requests. This ensures that sending excess requests is always penalized - // and incentivizes the sender to stop for a while if no replies are received. - item.nq.queue = nil - item.nq.penaltyCost = item.nq.sumCost - l.sumCost -= item.nq.sumCost // penalty costs are not counted in sumCost - item.nq.sumCost = 0 - l.update(item.nq) - if l.sumCost <= l.sumCostLimit/2 { - return - } - } -} diff --git a/les/utils/limiter_test.go b/les/utils/limiter_test.go deleted file mode 100644 index c031b21de5..0000000000 --- a/les/utils/limiter_test.go +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "crypto/rand" - "testing" - - "github.com/ethereum/go-ethereum/p2p/enode" -) - -const ( - ltTolerance = 0.03 - ltRounds = 7 -) - -type ( - ltNode struct { - addr, id int - value, exp float64 - cost uint - reqRate float64 - reqMax, runCount int - lastTotalCost uint - - served, dropped int - } - - ltResult struct { - node *ltNode - ch chan struct{} - } - - limTest struct { - limiter *Limiter - results chan ltResult - runCount int - expCost, totalCost uint - } -) - -func (lt *limTest) request(n *ltNode) { - var ( - address string - id enode.ID - ) - if n.addr >= 0 { - address = string([]byte{byte(n.addr)}) - } else { - var b [32]byte - rand.Read(b[:]) - address = string(b[:]) - } - if n.id >= 0 { - id = enode.ID{byte(n.id)} - } else { - rand.Read(id[:]) - } - lt.runCount++ - n.runCount++ - cch := lt.limiter.Add(id, address, n.value, n.cost) - go func() { - lt.results <- ltResult{n, <-cch} - }() -} - -func (lt *limTest) moreRequests(n *ltNode) { - maxStart := int(float64(lt.totalCost-n.lastTotalCost) * n.reqRate) - if maxStart != 0 { - n.lastTotalCost = lt.totalCost - } - for n.reqMax > n.runCount && maxStart > 0 { - lt.request(n) - maxStart-- - } -} - -func (lt *limTest) process() { - res := <-lt.results - lt.runCount-- - res.node.runCount-- - if res.ch != nil { - res.node.served++ - if res.node.exp != 0 { - lt.expCost += res.node.cost - } - lt.totalCost += res.node.cost - close(res.ch) - } else { - res.node.dropped++ - } -} - -func TestLimiter(t *testing.T) { - limTests := [][]*ltNode{ - { // one id from an individual address and two ids from a shared address - {addr: 0, id: 0, value: 0, cost: 1, reqRate: 1, reqMax: 1, exp: 0.5}, - {addr: 1, id: 1, value: 0, cost: 1, reqRate: 1, reqMax: 1, exp: 0.25}, - {addr: 1, id: 2, value: 0, cost: 1, reqRate: 1, reqMax: 1, exp: 0.25}, - }, - { // varying request costs - {addr: 0, id: 0, value: 0, cost: 10, reqRate: 0.2, reqMax: 1, exp: 0.5}, - {addr: 1, id: 1, value: 0, cost: 3, reqRate: 0.5, reqMax: 1, exp: 0.25}, - {addr: 1, id: 2, value: 0, cost: 1, reqRate: 1, reqMax: 1, exp: 0.25}, - }, - { // different request rate - {addr: 0, id: 0, value: 0, cost: 1, reqRate: 2, reqMax: 2, exp: 0.5}, - {addr: 1, id: 1, value: 0, cost: 1, reqRate: 10, reqMax: 10, exp: 0.25}, - {addr: 1, id: 2, value: 0, cost: 1, reqRate: 1, reqMax: 1, exp: 0.25}, - }, - { // adding value - {addr: 0, id: 0, value: 3, cost: 1, reqRate: 1, reqMax: 1, exp: (0.5 + 0.3) / 2}, - {addr: 1, id: 1, value: 0, cost: 1, reqRate: 1, reqMax: 1, exp: 0.25 / 2}, - {addr: 1, id: 2, value: 7, cost: 1, reqRate: 1, reqMax: 1, exp: (0.25 + 0.7) / 2}, - }, - { // DoS attack from a single address with a single id - {addr: 0, id: 0, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 1, id: 1, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 2, id: 2, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 3, id: 3, value: 0, cost: 1, reqRate: 10, reqMax: 1000000000, exp: 0}, - }, - { // DoS attack from a single address with different ids - {addr: 0, id: 0, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 1, id: 1, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 2, id: 2, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 3, id: -1, value: 0, cost: 1, reqRate: 1, reqMax: 1000000000, exp: 0}, - }, - { // DDoS attack from different addresses with a single id - {addr: 0, id: 0, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 1, id: 1, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 2, id: 2, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: -1, id: 3, value: 0, cost: 1, reqRate: 1, reqMax: 1000000000, exp: 0}, - }, - { // DDoS attack from different addresses with different ids - {addr: 0, id: 0, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 1, id: 1, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: 2, id: 2, value: 1, cost: 1, reqRate: 1, reqMax: 1, exp: 0.3333}, - {addr: -1, id: -1, value: 0, cost: 1, reqRate: 1, reqMax: 1000000000, exp: 0}, - }, - } - - lt := &limTest{ - limiter: NewLimiter(100), - results: make(chan ltResult), - } - for _, test := range limTests { - lt.expCost, lt.totalCost = 0, 0 - iterCount := 10000 - for j := 0; j < ltRounds; j++ { - // try to reach expected target range in multiple rounds with increasing iteration counts - last := j == ltRounds-1 - for _, n := range test { - lt.request(n) - } - for i := 0; i < iterCount; i++ { - lt.process() - for _, n := range test { - lt.moreRequests(n) - } - } - for lt.runCount > 0 { - lt.process() - } - if spamRatio := 1 - float64(lt.expCost)/float64(lt.totalCost); spamRatio > 0.5*(1+ltTolerance) { - t.Errorf("Spam ratio too high (%f)", spamRatio) - } - fail, success := false, true - for _, n := range test { - if n.exp != 0 { - if n.dropped > 0 { - t.Errorf("Dropped %d requests of non-spam node", n.dropped) - fail = true - } - r := float64(n.served) * float64(n.cost) / float64(lt.expCost) - if r < n.exp*(1-ltTolerance) || r > n.exp*(1+ltTolerance) { - if last { - // print error only if the target is still not reached in the last round - t.Errorf("Request ratio (%f) does not match expected value (%f)", r, n.exp) - } - success = false - } - } - } - if fail || success { - break - } - // neither failed nor succeeded; try more iterations to reach probability targets - iterCount *= 2 - } - } - lt.limiter.Stop() -} diff --git a/les/utils/timeutils.go b/les/utils/timeutils.go deleted file mode 100644 index 62a4285d15..0000000000 --- a/les/utils/timeutils.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" -) - -type UpdateTimer struct { - clock mclock.Clock - lock sync.Mutex - last mclock.AbsTime - threshold time.Duration -} - -func NewUpdateTimer(clock mclock.Clock, threshold time.Duration) *UpdateTimer { - // We don't accept the update threshold less than 0. - if threshold < 0 { - return nil - } - // Don't panic for lazy users - if clock == nil { - clock = mclock.System{} - } - return &UpdateTimer{ - clock: clock, - last: clock.Now(), - threshold: threshold, - } -} - -func (t *UpdateTimer) Update(callback func(diff time.Duration) bool) bool { - return t.UpdateAt(t.clock.Now(), callback) -} - -func (t *UpdateTimer) UpdateAt(at mclock.AbsTime, callback func(diff time.Duration) bool) bool { - t.lock.Lock() - defer t.lock.Unlock() - - diff := time.Duration(at - t.last) - if diff < 0 { - diff = 0 - } - if diff < t.threshold { - return false - } - if callback(diff) { - t.last = at - return true - } - return false -} diff --git a/les/utils/timeutils_test.go b/les/utils/timeutils_test.go deleted file mode 100644 index b219d0439d..0000000000 --- a/les/utils/timeutils_test.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" -) - -func TestUpdateTimer(t *testing.T) { - timer := NewUpdateTimer(mclock.System{}, -1) - if timer != nil { - t.Fatalf("Create update timer with negative threshold") - } - sim := &mclock.Simulated{} - timer = NewUpdateTimer(sim, time.Second) - if updated := timer.Update(func(diff time.Duration) bool { return true }); updated { - t.Fatalf("Update the clock without reaching the threshold") - } - sim.Run(time.Second) - if updated := timer.Update(func(diff time.Duration) bool { return true }); !updated { - t.Fatalf("Doesn't update the clock when reaching the threshold") - } - if updated := timer.UpdateAt(sim.Now().Add(time.Second), func(diff time.Duration) bool { return true }); !updated { - t.Fatalf("Doesn't update the clock when reaching the threshold") - } - timer = NewUpdateTimer(sim, 0) - if updated := timer.Update(func(diff time.Duration) bool { return true }); !updated { - t.Fatalf("Doesn't update the clock without threshold limitaion") - } -} diff --git a/les/utils/weighted_select.go b/les/utils/weighted_select.go deleted file mode 100644 index 486b00820a..0000000000 --- a/les/utils/weighted_select.go +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "math" - "math/rand" - - "github.com/ethereum/go-ethereum/log" -) - -type ( - // WeightedRandomSelect is capable of weighted random selection from a set of items - WeightedRandomSelect struct { - root *wrsNode - idx map[WrsItem]int - wfn WeightFn - } - WrsItem interface{} - WeightFn func(interface{}) uint64 -) - -// NewWeightedRandomSelect returns a new WeightedRandomSelect structure -func NewWeightedRandomSelect(wfn WeightFn) *WeightedRandomSelect { - return &WeightedRandomSelect{root: &wrsNode{maxItems: wrsBranches}, idx: make(map[WrsItem]int), wfn: wfn} -} - -// Update updates an item's weight, adds it if it was non-existent or removes it if -// the new weight is zero. Note that explicitly updating decreasing weights is not necessary. -func (w *WeightedRandomSelect) Update(item WrsItem) { - w.setWeight(item, w.wfn(item)) -} - -// Remove removes an item from the set -func (w *WeightedRandomSelect) Remove(item WrsItem) { - w.setWeight(item, 0) -} - -// IsEmpty returns true if the set is empty -func (w *WeightedRandomSelect) IsEmpty() bool { - return w.root.sumCost == 0 -} - -// setWeight sets an item's weight to a specific value (removes it if zero) -func (w *WeightedRandomSelect) setWeight(item WrsItem, weight uint64) { - if weight > math.MaxInt64-w.root.sumCost { - // old weight is still included in sumCost, remove and check again - w.setWeight(item, 0) - if weight > math.MaxInt64-w.root.sumCost { - log.Error("WeightedRandomSelect overflow", "sumCost", w.root.sumCost, "new weight", weight) - weight = math.MaxInt64 - w.root.sumCost - } - } - idx, ok := w.idx[item] - if ok { - w.root.setWeight(idx, weight) - if weight == 0 { - delete(w.idx, item) - } - } else { - if weight != 0 { - if w.root.itemCnt == w.root.maxItems { - // add a new level - newRoot := &wrsNode{sumCost: w.root.sumCost, itemCnt: w.root.itemCnt, level: w.root.level + 1, maxItems: w.root.maxItems * wrsBranches} - newRoot.items[0] = w.root - newRoot.weights[0] = w.root.sumCost - w.root = newRoot - } - w.idx[item] = w.root.insert(item, weight) - } - } -} - -// Choose randomly selects an item from the set, with a chance proportional to its -// current weight. If the weight of the chosen element has been decreased since the -// last stored value, returns it with a newWeight/oldWeight chance, otherwise just -// updates its weight and selects another one -func (w *WeightedRandomSelect) Choose() WrsItem { - for { - if w.root.sumCost == 0 { - return nil - } - val := uint64(rand.Int63n(int64(w.root.sumCost))) - choice, lastWeight := w.root.choose(val) - weight := w.wfn(choice) - if weight != lastWeight { - w.setWeight(choice, weight) - } - if weight >= lastWeight || uint64(rand.Int63n(int64(lastWeight))) < weight { - return choice - } - } -} - -const wrsBranches = 8 // max number of branches in the wrsNode tree - -// wrsNode is a node of a tree structure that can store WrsItems or further wrsNodes. -type wrsNode struct { - items [wrsBranches]interface{} - weights [wrsBranches]uint64 - sumCost uint64 - level, itemCnt, maxItems int -} - -// insert recursively inserts a new item to the tree and returns the item index -func (n *wrsNode) insert(item WrsItem, weight uint64) int { - branch := 0 - for n.items[branch] != nil && (n.level == 0 || n.items[branch].(*wrsNode).itemCnt == n.items[branch].(*wrsNode).maxItems) { - branch++ - if branch == wrsBranches { - panic(nil) - } - } - n.itemCnt++ - n.sumCost += weight - n.weights[branch] += weight - if n.level == 0 { - n.items[branch] = item - return branch - } - var subNode *wrsNode - if n.items[branch] == nil { - subNode = &wrsNode{maxItems: n.maxItems / wrsBranches, level: n.level - 1} - n.items[branch] = subNode - } else { - subNode = n.items[branch].(*wrsNode) - } - subIdx := subNode.insert(item, weight) - return subNode.maxItems*branch + subIdx -} - -// setWeight updates the weight of a certain item (which should exist) and returns -// the change of the last weight value stored in the tree -func (n *wrsNode) setWeight(idx int, weight uint64) uint64 { - if n.level == 0 { - oldWeight := n.weights[idx] - n.weights[idx] = weight - diff := weight - oldWeight - n.sumCost += diff - if weight == 0 { - n.items[idx] = nil - n.itemCnt-- - } - return diff - } - branchItems := n.maxItems / wrsBranches - branch := idx / branchItems - diff := n.items[branch].(*wrsNode).setWeight(idx-branch*branchItems, weight) - n.weights[branch] += diff - n.sumCost += diff - if weight == 0 { - n.itemCnt-- - } - return diff -} - -// choose recursively selects an item from the tree and returns it along with its weight -func (n *wrsNode) choose(val uint64) (WrsItem, uint64) { - for i, w := range n.weights { - if val < w { - if n.level == 0 { - return n.items[i].(WrsItem), n.weights[i] - } - return n.items[i].(*wrsNode).choose(val) - } - val -= w - } - panic(nil) -} diff --git a/les/utils/weighted_select_test.go b/les/utils/weighted_select_test.go deleted file mode 100644 index 3e1c0ad987..0000000000 --- a/les/utils/weighted_select_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package utils - -import ( - "math/rand" - "testing" -) - -type testWrsItem struct { - idx int - widx *int -} - -func testWeight(i interface{}) uint64 { - t := i.(*testWrsItem) - w := *t.widx - if w == -1 || w == t.idx { - return uint64(t.idx + 1) - } - return 0 -} - -func TestWeightedRandomSelect(t *testing.T) { - testFn := func(cnt int) { - s := NewWeightedRandomSelect(testWeight) - w := -1 - list := make([]testWrsItem, cnt) - for i := range list { - list[i] = testWrsItem{idx: i, widx: &w} - s.Update(&list[i]) - } - w = rand.Intn(cnt) - c := s.Choose() - if c == nil { - t.Errorf("expected item, got nil") - } else { - if c.(*testWrsItem).idx != w { - t.Errorf("expected another item") - } - } - w = -2 - if s.Choose() != nil { - t.Errorf("expected nil, got item") - } - } - testFn(1) - testFn(10) - testFn(100) - testFn(1000) - testFn(10000) - testFn(100000) - testFn(1000000) -} diff --git a/les/vflux/client/api.go b/les/vflux/client/api.go deleted file mode 100644 index 135273ef96..0000000000 --- a/les/vflux/client/api.go +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/p2p/enode" -) - -// PrivateClientAPI implements the vflux client side API -type PrivateClientAPI struct { - vt *ValueTracker -} - -// NewPrivateClientAPI creates a PrivateClientAPI -func NewPrivateClientAPI(vt *ValueTracker) *PrivateClientAPI { - return &PrivateClientAPI{vt} -} - -// parseNodeStr converts either an enode address or a plain hex node id to enode.ID -func parseNodeStr(nodeStr string) (enode.ID, error) { - if id, err := enode.ParseID(nodeStr); err == nil { - return id, nil - } - if node, err := enode.Parse(enode.ValidSchemes, nodeStr); err == nil { - return node.ID(), nil - } else { - return enode.ID{}, err - } -} - -// RequestStats returns the current contents of the reference request basket, with -// request values meaning average per request rather than total. -func (api *PrivateClientAPI) RequestStats() []RequestStatsItem { - return api.vt.RequestStats() -} - -// Distribution returns a distribution as a series of (X, Y) chart coordinates, -// where the X axis is the response time in seconds while the Y axis is the amount of -// service value received with a response time close to the X coordinate. -// The distribution is optionally normalized to a sum of 1. -// If nodeStr == "" then the global distribution is returned, otherwise the individual -// distribution of the specified server node. -func (api *PrivateClientAPI) Distribution(nodeStr string, normalized bool) (RtDistribution, error) { - var expFactor utils.ExpirationFactor - if !normalized { - expFactor = utils.ExpFactor(api.vt.StatsExpirer().LogOffset(mclock.Now())) - } - if nodeStr == "" { - return api.vt.RtStats().Distribution(normalized, expFactor), nil - } - if id, err := parseNodeStr(nodeStr); err == nil { - return api.vt.GetNode(id).RtStats().Distribution(normalized, expFactor), nil - } else { - return RtDistribution{}, err - } -} - -// Timeout suggests a timeout value based on either the global distribution or the -// distribution of the specified node. The parameter is the desired rate of timeouts -// assuming a similar distribution in the future. -// Note that the actual timeout should have a sensible minimum bound so that operating -// under ideal working conditions for a long time (for example, using a local server -// with very low response times) will not make it very hard for the system to accommodate -// longer response times in the future. -func (api *PrivateClientAPI) Timeout(nodeStr string, failRate float64) (float64, error) { - if nodeStr == "" { - return float64(api.vt.RtStats().Timeout(failRate)) / float64(time.Second), nil - } - if id, err := parseNodeStr(nodeStr); err == nil { - return float64(api.vt.GetNode(id).RtStats().Timeout(failRate)) / float64(time.Second), nil - } else { - return 0, err - } -} - -// Value calculates the total service value provided either globally or by the specified -// server node, using a weight function based on the given timeout. -func (api *PrivateClientAPI) Value(nodeStr string, timeout float64) (float64, error) { - wt := TimeoutWeights(time.Duration(timeout * float64(time.Second))) - expFactor := utils.ExpFactor(api.vt.StatsExpirer().LogOffset(mclock.Now())) - if nodeStr == "" { - return api.vt.RtStats().Value(wt, expFactor), nil - } - if id, err := parseNodeStr(nodeStr); err == nil { - return api.vt.GetNode(id).RtStats().Value(wt, expFactor), nil - } else { - return 0, err - } -} diff --git a/les/vflux/client/fillset.go b/les/vflux/client/fillset.go deleted file mode 100644 index 0da850bcac..0000000000 --- a/les/vflux/client/fillset.go +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "sync" - - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -// FillSet tries to read nodes from an input iterator and add them to a node set by -// setting the specified node state flag(s) until the size of the set reaches the target. -// Note that other mechanisms (like other FillSet instances reading from different inputs) -// can also set the same flag(s) and FillSet will always care about the total number of -// nodes having those flags. -type FillSet struct { - lock sync.Mutex - cond *sync.Cond - ns *nodestate.NodeStateMachine - input enode.Iterator - closed bool - flags nodestate.Flags - count, target int -} - -// NewFillSet creates a new FillSet -func NewFillSet(ns *nodestate.NodeStateMachine, input enode.Iterator, flags nodestate.Flags) *FillSet { - fs := &FillSet{ - ns: ns, - input: input, - flags: flags, - } - fs.cond = sync.NewCond(&fs.lock) - - ns.SubscribeState(flags, func(n *enode.Node, oldState, newState nodestate.Flags) { - fs.lock.Lock() - if oldState.Equals(flags) { - fs.count-- - } - if newState.Equals(flags) { - fs.count++ - } - if fs.target > fs.count { - fs.cond.Signal() - } - fs.lock.Unlock() - }) - - go fs.readLoop() - return fs -} - -// readLoop keeps reading nodes from the input and setting the specified flags for them -// whenever the node set size is under the current target -func (fs *FillSet) readLoop() { - for { - fs.lock.Lock() - for fs.target <= fs.count && !fs.closed { - fs.cond.Wait() - } - - fs.lock.Unlock() - if !fs.input.Next() { - return - } - fs.ns.SetState(fs.input.Node(), fs.flags, nodestate.Flags{}, 0) - } -} - -// SetTarget sets the current target for node set size. If the previous target was not -// reached and FillSet was still waiting for the next node from the input then the next -// incoming node will be added to the set regardless of the target. This ensures that -// all nodes coming from the input are eventually added to the set. -func (fs *FillSet) SetTarget(target int) { - fs.lock.Lock() - defer fs.lock.Unlock() - - fs.target = target - if fs.target > fs.count { - fs.cond.Signal() - } -} - -// Close shuts FillSet down and closes the input iterator -func (fs *FillSet) Close() { - fs.lock.Lock() - defer fs.lock.Unlock() - - fs.closed = true - fs.input.Close() - fs.cond.Signal() -} diff --git a/les/vflux/client/fillset_test.go b/les/vflux/client/fillset_test.go deleted file mode 100644 index 9a5a2a98a8..0000000000 --- a/les/vflux/client/fillset_test.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "crypto/rand" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -type testIter struct { - waitCh chan struct{} - nodeCh chan *enode.Node - node *enode.Node -} - -func (i *testIter) Next() bool { - if _, ok := <-i.waitCh; !ok { - return false - } - i.node = <-i.nodeCh - return true -} - -func (i *testIter) Node() *enode.Node { - return i.node -} - -func (i *testIter) Close() { - close(i.waitCh) -} - -func (i *testIter) push() { - var id enode.ID - rand.Read(id[:]) - i.nodeCh <- enode.SignNull(new(enr.Record), id) -} - -func (i *testIter) waiting(timeout time.Duration) bool { - select { - case i.waitCh <- struct{}{}: - return true - case <-time.After(timeout): - return false - } -} - -func TestFillSet(t *testing.T) { - t.Parallel() - - ns := nodestate.NewNodeStateMachine(nil, nil, &mclock.Simulated{}, testSetup) - iter := &testIter{ - waitCh: make(chan struct{}), - nodeCh: make(chan *enode.Node), - } - fs := NewFillSet(ns, iter, sfTest1) - ns.Start() - - expWaiting := func(i int, push bool) { - for ; i > 0; i-- { - if !iter.waiting(time.Second * 10) { - t.Fatalf("FillSet not waiting for new nodes") - } - if push { - iter.push() - } - } - } - - expNotWaiting := func() { - if iter.waiting(time.Millisecond * 100) { - t.Fatalf("FillSet unexpectedly waiting for new nodes") - } - } - - expNotWaiting() - fs.SetTarget(3) - expWaiting(3, true) - expNotWaiting() - fs.SetTarget(100) - expWaiting(2, true) - expWaiting(1, false) - // lower the target before the previous one has been filled up - fs.SetTarget(0) - iter.push() - expNotWaiting() - fs.SetTarget(10) - expWaiting(4, true) - expNotWaiting() - // remove all previously set flags - ns.ForEach(sfTest1, nodestate.Flags{}, func(node *enode.Node, state nodestate.Flags) { - ns.SetState(node, nodestate.Flags{}, sfTest1, 0) - }) - // now expect FillSet to fill the set up again with 10 new nodes - expWaiting(10, true) - expNotWaiting() - - fs.Close() - ns.Stop() -} diff --git a/les/vflux/client/queueiterator.go b/les/vflux/client/queueiterator.go deleted file mode 100644 index ad3f8df5bb..0000000000 --- a/les/vflux/client/queueiterator.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "sync" - - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -// QueueIterator returns nodes from the specified selectable set in the same order as -// they entered the set. -type QueueIterator struct { - lock sync.Mutex - cond *sync.Cond - - ns *nodestate.NodeStateMachine - queue []*enode.Node - nextNode *enode.Node - waitCallback func(bool) - fifo, closed bool -} - -// NewQueueIterator creates a new QueueIterator. Nodes are selectable if they have all the required -// and none of the disabled flags set. When a node is selected the selectedFlag is set which also -// disables further selectability until it is removed or times out. -func NewQueueIterator(ns *nodestate.NodeStateMachine, requireFlags, disableFlags nodestate.Flags, fifo bool, waitCallback func(bool)) *QueueIterator { - qi := &QueueIterator{ - ns: ns, - fifo: fifo, - waitCallback: waitCallback, - } - qi.cond = sync.NewCond(&qi.lock) - - ns.SubscribeState(requireFlags.Or(disableFlags), func(n *enode.Node, oldState, newState nodestate.Flags) { - oldMatch := oldState.HasAll(requireFlags) && oldState.HasNone(disableFlags) - newMatch := newState.HasAll(requireFlags) && newState.HasNone(disableFlags) - if newMatch == oldMatch { - return - } - - qi.lock.Lock() - defer qi.lock.Unlock() - - if newMatch { - qi.queue = append(qi.queue, n) - } else { - id := n.ID() - for i, qn := range qi.queue { - if qn.ID() == id { - copy(qi.queue[i:len(qi.queue)-1], qi.queue[i+1:]) - qi.queue = qi.queue[:len(qi.queue)-1] - break - } - } - } - qi.cond.Signal() - }) - return qi -} - -// Next moves to the next selectable node. -func (qi *QueueIterator) Next() bool { - qi.lock.Lock() - if !qi.closed && len(qi.queue) == 0 { - if qi.waitCallback != nil { - qi.waitCallback(true) - } - for !qi.closed && len(qi.queue) == 0 { - qi.cond.Wait() - } - if qi.waitCallback != nil { - qi.waitCallback(false) - } - } - if qi.closed { - qi.nextNode = nil - qi.lock.Unlock() - return false - } - // Move to the next node in queue. - if qi.fifo { - qi.nextNode = qi.queue[0] - copy(qi.queue[:len(qi.queue)-1], qi.queue[1:]) - qi.queue = qi.queue[:len(qi.queue)-1] - } else { - qi.nextNode = qi.queue[len(qi.queue)-1] - qi.queue = qi.queue[:len(qi.queue)-1] - } - qi.lock.Unlock() - return true -} - -// Close ends the iterator. -func (qi *QueueIterator) Close() { - qi.lock.Lock() - qi.closed = true - qi.lock.Unlock() - qi.cond.Signal() -} - -// Node returns the current node. -func (qi *QueueIterator) Node() *enode.Node { - qi.lock.Lock() - defer qi.lock.Unlock() - - return qi.nextNode -} diff --git a/les/vflux/client/queueiterator_test.go b/les/vflux/client/queueiterator_test.go deleted file mode 100644 index c7cb649082..0000000000 --- a/les/vflux/client/queueiterator_test.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -func testNode(i int) *enode.Node { - return enode.SignNull(new(enr.Record), testNodeID(i)) -} - -func TestQueueIteratorFIFO(t *testing.T) { - t.Parallel() - - testQueueIterator(t, true) -} - -func TestQueueIteratorLIFO(t *testing.T) { - t.Parallel() - - testQueueIterator(t, false) -} - -func testQueueIterator(t *testing.T, fifo bool) { - ns := nodestate.NewNodeStateMachine(nil, nil, &mclock.Simulated{}, testSetup) - qi := NewQueueIterator(ns, sfTest2, sfTest3.Or(sfTest4), fifo, nil) - ns.Start() - for i := 1; i <= iterTestNodeCount; i++ { - ns.SetState(testNode(i), sfTest1, nodestate.Flags{}, 0) - } - next := func() int { - ch := make(chan struct{}) - go func() { - qi.Next() - close(ch) - }() - select { - case <-ch: - case <-time.After(time.Second * 5): - t.Fatalf("Iterator.Next() timeout") - } - node := qi.Node() - ns.SetState(node, sfTest4, nodestate.Flags{}, 0) - return testNodeIndex(node.ID()) - } - exp := func(i int) { - n := next() - if n != i { - t.Errorf("Wrong item returned by iterator (expected %d, got %d)", i, n) - } - } - explist := func(list []int) { - for i := range list { - if fifo { - exp(list[i]) - } else { - exp(list[len(list)-1-i]) - } - } - } - - ns.SetState(testNode(1), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(2), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(3), sfTest2, nodestate.Flags{}, 0) - explist([]int{1, 2, 3}) - ns.SetState(testNode(4), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(5), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(6), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(5), sfTest3, nodestate.Flags{}, 0) - explist([]int{4, 6}) - ns.SetState(testNode(1), nodestate.Flags{}, sfTest4, 0) - ns.SetState(testNode(2), nodestate.Flags{}, sfTest4, 0) - ns.SetState(testNode(3), nodestate.Flags{}, sfTest4, 0) - ns.SetState(testNode(2), sfTest3, nodestate.Flags{}, 0) - ns.SetState(testNode(2), nodestate.Flags{}, sfTest3, 0) - explist([]int{1, 3, 2}) - ns.Stop() -} diff --git a/les/vflux/client/requestbasket.go b/les/vflux/client/requestbasket.go deleted file mode 100644 index 55d4b165df..0000000000 --- a/les/vflux/client/requestbasket.go +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "io" - - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/rlp" -) - -const basketFactor = 1000000 // reference basket amount and value scale factor - -// referenceBasket keeps track of global request usage statistics and the usual prices -// of each used request type relative to each other. The amounts in the basket are scaled -// up by basketFactor because of the exponential expiration of long-term statistical data. -// Values are scaled so that the sum of all amounts and the sum of all values are equal. -// -// reqValues represent the internal relative value estimates for each request type and are -// calculated as value / amount. The average reqValue of all used requests is 1. -// In other words: SUM(refBasket[type].amount * reqValue[type]) = SUM(refBasket[type].amount) -type referenceBasket struct { - basket requestBasket - reqValues []float64 // contents are read only, new slice is created for each update -} - -// serverBasket collects served request amount and value statistics for a single server. -// -// Values are gradually transferred to the global reference basket with a long time -// constant so that each server basket represents long term usage and price statistics. -// When the transferred part is added to the reference basket the values are scaled so -// that their sum equals the total value calculated according to the previous reqValues. -// The ratio of request values coming from the server basket represent the pricing of -// the specific server and modify the global estimates with a weight proportional to -// the amount of service provided by the server. -type serverBasket struct { - basket requestBasket - rvFactor float64 -} - -type ( - // requestBasket holds amounts and values for each request type. - // These values are exponentially expired (see utils.ExpiredValue). The power of 2 - // exponent is applicable to all values within. - requestBasket struct { - items []basketItem - exp uint64 - } - // basketItem holds amount and value for a single request type. Value is the total - // relative request value accumulated for served requests while amount is the counter - // for each request type. - // Note that these values are both scaled up by basketFactor because of the exponential - // expiration. - basketItem struct { - amount, value uint64 - } -) - -// setExp sets the power of 2 exponent of the structure, scaling base values (the amounts -// and request values) up or down if necessary. -func (b *requestBasket) setExp(exp uint64) { - if exp > b.exp { - shift := exp - b.exp - for i, item := range b.items { - item.amount >>= shift - item.value >>= shift - b.items[i] = item - } - b.exp = exp - } - if exp < b.exp { - shift := b.exp - exp - for i, item := range b.items { - item.amount <<= shift - item.value <<= shift - b.items[i] = item - } - b.exp = exp - } -} - -// init initializes a new server basket with the given service vector size (number of -// different request types) -func (s *serverBasket) init(size int) { - if s.basket.items == nil { - s.basket.items = make([]basketItem, size) - } -} - -// add adds the give type and amount of requests to the basket. Cost is calculated -// according to the server's own cost table. -func (s *serverBasket) add(reqType, reqAmount uint32, reqCost uint64, expFactor utils.ExpirationFactor) { - s.basket.setExp(expFactor.Exp) - i := &s.basket.items[reqType] - i.amount += uint64(float64(uint64(reqAmount)*basketFactor) * expFactor.Factor) - i.value += uint64(float64(reqCost) * s.rvFactor * expFactor.Factor) -} - -// updateRvFactor updates the request value factor that scales server costs into the -// local value dimensions. -func (s *serverBasket) updateRvFactor(rvFactor float64) { - s.rvFactor = rvFactor -} - -// transfer decreases amounts and values in the basket with the given ratio and -// moves the removed amounts into a new basket which is returned and can be added -// to the global reference basket. -func (s *serverBasket) transfer(ratio float64) requestBasket { - res := requestBasket{ - items: make([]basketItem, len(s.basket.items)), - exp: s.basket.exp, - } - for i, v := range s.basket.items { - ta := uint64(float64(v.amount) * ratio) - tv := uint64(float64(v.value) * ratio) - if ta > v.amount { - ta = v.amount - } - if tv > v.value { - tv = v.value - } - s.basket.items[i] = basketItem{v.amount - ta, v.value - tv} - res.items[i] = basketItem{ta, tv} - } - return res -} - -// init initializes the reference basket with the given service vector size (number of -// different request types) -func (r *referenceBasket) init(size int) { - r.reqValues = make([]float64, size) - r.normalize() - r.updateReqValues() -} - -// add adds the transferred part of a server basket to the reference basket while scaling -// value amounts so that their sum equals the total value calculated according to the -// previous reqValues. -func (r *referenceBasket) add(newBasket requestBasket) { - r.basket.setExp(newBasket.exp) - // scale newBasket to match service unit value - var ( - totalCost uint64 - totalValue float64 - ) - for i, v := range newBasket.items { - totalCost += v.value - totalValue += float64(v.amount) * r.reqValues[i] - } - if totalCost > 0 { - // add to reference with scaled values - scaleValues := totalValue / float64(totalCost) - for i, v := range newBasket.items { - r.basket.items[i].amount += v.amount - r.basket.items[i].value += uint64(float64(v.value) * scaleValues) - } - } - r.updateReqValues() -} - -// updateReqValues recalculates reqValues after adding transferred baskets. Note that -// values should be normalized first. -func (r *referenceBasket) updateReqValues() { - r.reqValues = make([]float64, len(r.reqValues)) - for i, b := range r.basket.items { - if b.amount > 0 { - r.reqValues[i] = float64(b.value) / float64(b.amount) - } else { - r.reqValues[i] = 0 - } - } -} - -// normalize ensures that the sum of values equal the sum of amounts in the basket. -func (r *referenceBasket) normalize() { - var sumAmount, sumValue uint64 - for _, b := range r.basket.items { - sumAmount += b.amount - sumValue += b.value - } - add := float64(int64(sumAmount-sumValue)) / float64(sumValue) - for i, b := range r.basket.items { - b.value += uint64(int64(float64(b.value) * add)) - r.basket.items[i] = b - } -} - -// reqValueFactor calculates the request value factor applicable to the server with -// the given announced request cost list -func (r *referenceBasket) reqValueFactor(costList []uint64) float64 { - var ( - totalCost float64 - totalValue uint64 - ) - for i, b := range r.basket.items { - totalCost += float64(costList[i]) * float64(b.amount) // use floats to avoid overflow - totalValue += b.value - } - if totalCost < 1 { - return 0 - } - return float64(totalValue) * basketFactor / totalCost -} - -// EncodeRLP implements rlp.Encoder -func (b *basketItem) EncodeRLP(w io.Writer) error { - return rlp.Encode(w, []interface{}{b.amount, b.value}) -} - -// DecodeRLP implements rlp.Decoder -func (b *basketItem) DecodeRLP(s *rlp.Stream) error { - var item struct { - Amount, Value uint64 - } - if err := s.Decode(&item); err != nil { - return err - } - b.amount, b.value = item.Amount, item.Value - return nil -} - -// EncodeRLP implements rlp.Encoder -func (r *requestBasket) EncodeRLP(w io.Writer) error { - return rlp.Encode(w, []interface{}{r.items, r.exp}) -} - -// DecodeRLP implements rlp.Decoder -func (r *requestBasket) DecodeRLP(s *rlp.Stream) error { - var enc struct { - Items []basketItem - Exp uint64 - } - if err := s.Decode(&enc); err != nil { - return err - } - r.items, r.exp = enc.Items, enc.Exp - return nil -} - -// convertMapping converts a basket loaded from the database into the current format. -// If the available request types and their mapping into the service vector differ from -// the one used when saving the basket then this function reorders old fields and fills -// in previously unknown fields by scaling up amounts and values taken from the -// initialization basket. -func (r requestBasket) convertMapping(oldMapping, newMapping []string, initBasket requestBasket) requestBasket { - nameMap := make(map[string]int) - for i, name := range oldMapping { - nameMap[name] = i - } - rc := requestBasket{items: make([]basketItem, len(newMapping))} - var scale, oldScale, newScale float64 - for i, name := range newMapping { - if ii, ok := nameMap[name]; ok { - rc.items[i] = r.items[ii] - oldScale += float64(initBasket.items[i].amount) * float64(initBasket.items[i].amount) - newScale += float64(rc.items[i].amount) * float64(initBasket.items[i].amount) - } - } - if oldScale > 1e-10 { - scale = newScale / oldScale - } else { - scale = 1 - } - for i, name := range newMapping { - if _, ok := nameMap[name]; !ok { - rc.items[i].amount = uint64(float64(initBasket.items[i].amount) * scale) - rc.items[i].value = uint64(float64(initBasket.items[i].value) * scale) - } - } - return rc -} diff --git a/les/vflux/client/requestbasket_test.go b/les/vflux/client/requestbasket_test.go deleted file mode 100644 index 320d1b4b3e..0000000000 --- a/les/vflux/client/requestbasket_test.go +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "math/rand" - "testing" - - "github.com/ethereum/go-ethereum/les/utils" -) - -func checkU64(t *testing.T, name string, value, exp uint64) { - if value != exp { - t.Errorf("Incorrect value for %s: got %d, expected %d", name, value, exp) - } -} - -func checkF64(t *testing.T, name string, value, exp, tol float64) { - if value < exp-tol || value > exp+tol { - t.Errorf("Incorrect value for %s: got %f, expected %f", name, value, exp) - } -} - -func TestServerBasket(t *testing.T) { - t.Parallel() - - var s serverBasket - s.init(2) - // add some requests with different request value factors - s.updateRvFactor(1) - noexp := utils.ExpirationFactor{Factor: 1} - s.add(0, 1000, 10000, noexp) - s.add(1, 3000, 60000, noexp) - s.updateRvFactor(10) - s.add(0, 4000, 4000, noexp) - s.add(1, 2000, 4000, noexp) - s.updateRvFactor(10) - // check basket contents directly - checkU64(t, "s.basket[0].amount", s.basket.items[0].amount, 5000*basketFactor) - checkU64(t, "s.basket[0].value", s.basket.items[0].value, 50000) - checkU64(t, "s.basket[1].amount", s.basket.items[1].amount, 5000*basketFactor) - checkU64(t, "s.basket[1].value", s.basket.items[1].value, 100000) - // transfer 50% of the contents of the basket - transfer1 := s.transfer(0.5) - checkU64(t, "transfer1[0].amount", transfer1.items[0].amount, 2500*basketFactor) - checkU64(t, "transfer1[0].value", transfer1.items[0].value, 25000) - checkU64(t, "transfer1[1].amount", transfer1.items[1].amount, 2500*basketFactor) - checkU64(t, "transfer1[1].value", transfer1.items[1].value, 50000) - // add more requests - s.updateRvFactor(100) - s.add(0, 1000, 100, noexp) - // transfer 25% of the contents of the basket - transfer2 := s.transfer(0.25) - checkU64(t, "transfer2[0].amount", transfer2.items[0].amount, (2500+1000)/4*basketFactor) - checkU64(t, "transfer2[0].value", transfer2.items[0].value, (25000+10000)/4) - checkU64(t, "transfer2[1].amount", transfer2.items[1].amount, 2500/4*basketFactor) - checkU64(t, "transfer2[1].value", transfer2.items[1].value, 50000/4) -} - -func TestConvertMapping(t *testing.T) { - t.Parallel() - - b := requestBasket{items: []basketItem{{3, 3}, {1, 1}, {2, 2}}} - oldMap := []string{"req3", "req1", "req2"} - newMap := []string{"req1", "req2", "req3", "req4"} - init := requestBasket{items: []basketItem{{2, 2}, {4, 4}, {6, 6}, {8, 8}}} - bc := b.convertMapping(oldMap, newMap, init) - checkU64(t, "bc[0].amount", bc.items[0].amount, 1) - checkU64(t, "bc[1].amount", bc.items[1].amount, 2) - checkU64(t, "bc[2].amount", bc.items[2].amount, 3) - checkU64(t, "bc[3].amount", bc.items[3].amount, 4) // 8 should be scaled down to 4 -} - -func TestReqValueFactor(t *testing.T) { - t.Parallel() - - var ref referenceBasket - ref.basket = requestBasket{items: make([]basketItem, 4)} - for i := range ref.basket.items { - ref.basket.items[i].amount = uint64(i+1) * basketFactor - ref.basket.items[i].value = uint64(i+1) * basketFactor - } - ref.init(4) - rvf := ref.reqValueFactor([]uint64{1000, 2000, 3000, 4000}) - // expected value is (1000000+2000000+3000000+4000000) / (1*1000+2*2000+3*3000+4*4000) = 10000000/30000 = 333.333 - checkF64(t, "reqValueFactor", rvf, 333.333, 1) -} - -func TestNormalize(t *testing.T) { - t.Parallel() - - for cycle := 0; cycle < 100; cycle += 1 { - // Initialize data for testing - valueRange, lower := 1000000, 1000000 - ref := referenceBasket{basket: requestBasket{items: make([]basketItem, 10)}} - for i := 0; i < 10; i++ { - ref.basket.items[i].amount = uint64(rand.Intn(valueRange) + lower) - ref.basket.items[i].value = uint64(rand.Intn(valueRange) + lower) - } - ref.normalize() - - // Check whether SUM(amount) ~= SUM(value) - var sumAmount, sumValue uint64 - for i := 0; i < 10; i++ { - sumAmount += ref.basket.items[i].amount - sumValue += ref.basket.items[i].value - } - var epsilon = 0.01 - if float64(sumAmount)*(1+epsilon) < float64(sumValue) || float64(sumAmount)*(1-epsilon) > float64(sumValue) { - t.Fatalf("Failed to normalize sumAmount: %d sumValue: %d", sumAmount, sumValue) - } - } -} - -func TestReqValueAdjustment(t *testing.T) { - t.Parallel() - - var s1, s2 serverBasket - s1.init(3) - s2.init(3) - cost1 := []uint64{30000, 60000, 90000} - cost2 := []uint64{100000, 200000, 300000} - var ref referenceBasket - ref.basket = requestBasket{items: make([]basketItem, 3)} - for i := range ref.basket.items { - ref.basket.items[i].amount = 123 * basketFactor - ref.basket.items[i].value = 123 * basketFactor - } - ref.init(3) - // initial reqValues are expected to be {1, 1, 1} - checkF64(t, "reqValues[0]", ref.reqValues[0], 1, 0.01) - checkF64(t, "reqValues[1]", ref.reqValues[1], 1, 0.01) - checkF64(t, "reqValues[2]", ref.reqValues[2], 1, 0.01) - var logOffset utils.Fixed64 - for period := 0; period < 1000; period++ { - exp := utils.ExpFactor(logOffset) - s1.updateRvFactor(ref.reqValueFactor(cost1)) - s2.updateRvFactor(ref.reqValueFactor(cost2)) - // throw in random requests into each basket using their internal pricing - for i := 0; i < 1000; i++ { - reqType, reqAmount := uint32(rand.Intn(3)), uint32(rand.Intn(10)+1) - reqCost := uint64(reqAmount) * cost1[reqType] - s1.add(reqType, reqAmount, reqCost, exp) - reqType, reqAmount = uint32(rand.Intn(3)), uint32(rand.Intn(10)+1) - reqCost = uint64(reqAmount) * cost2[reqType] - s2.add(reqType, reqAmount, reqCost, exp) - } - ref.add(s1.transfer(0.1)) - ref.add(s2.transfer(0.1)) - ref.normalize() - ref.updateReqValues() - logOffset += utils.Float64ToFixed64(0.1) - } - checkF64(t, "reqValues[0]", ref.reqValues[0], 0.5, 0.01) - checkF64(t, "reqValues[1]", ref.reqValues[1], 1, 0.01) - checkF64(t, "reqValues[2]", ref.reqValues[2], 1.5, 0.01) -} diff --git a/les/vflux/client/serverpool.go b/les/vflux/client/serverpool.go deleted file mode 100644 index 271d6e0224..0000000000 --- a/les/vflux/client/serverpool.go +++ /dev/null @@ -1,605 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "errors" - "math/rand" - "reflect" - "sync" - "sync/atomic" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/metrics" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/p2p/nodestate" - "github.com/ethereum/go-ethereum/rlp" -) - -const ( - minTimeout = time.Millisecond * 500 // minimum request timeout suggested by the server pool - timeoutRefresh = time.Second * 5 // recalculate timeout if older than this - dialCost = 10000 // cost of a TCP dial (used for known node selection weight calculation) - dialWaitStep = 1.5 // exponential multiplier of redial wait time when no value was provided by the server - queryCost = 500 // cost of a UDP pre-negotiation query - queryWaitStep = 1.02 // exponential multiplier of redial wait time when no value was provided by the server - waitThreshold = time.Hour * 2000 // drop node if waiting time is over the threshold - nodeWeightMul = 1000000 // multiplier constant for node weight calculation - nodeWeightThreshold = 100 // minimum weight for keeping a node in the known (valuable) set - minRedialWait = 10 // minimum redial wait time in seconds - preNegLimit = 5 // maximum number of simultaneous pre-negotiation queries - warnQueryFails = 20 // number of consecutive UDP query failures before we print a warning - maxQueryFails = 100 // number of consecutive UDP query failures when then chance of skipping a query reaches 50% -) - -// ServerPool provides a node iterator for dial candidates. The output is a mix of newly discovered -// nodes, a weighted random selection of known (previously valuable) nodes and trusted/paid nodes. -type ServerPool struct { - clock mclock.Clock - unixTime func() int64 - db ethdb.KeyValueStore - - ns *nodestate.NodeStateMachine - vt *ValueTracker - mixer *enode.FairMix - mixSources []enode.Iterator - dialIterator enode.Iterator - validSchemes enr.IdentityScheme - trustedURLs []string - fillSet *FillSet - started, queryFails uint32 - - timeoutLock sync.RWMutex - timeout time.Duration - timeWeights ResponseTimeWeights - timeoutRefreshed mclock.AbsTime - - suggestedTimeoutGauge, totalValueGauge metrics.Gauge - sessionValueMeter metrics.Meter -} - -// nodeHistory keeps track of dial costs which determine node weight together with the -// service value calculated by ValueTracker. -type nodeHistory struct { - dialCost utils.ExpiredValue - redialWaitStart, redialWaitEnd int64 // unix time (seconds) -} - -type nodeHistoryEnc struct { - DialCost utils.ExpiredValue - RedialWaitStart, RedialWaitEnd uint64 -} - -// QueryFunc sends a pre-negotiation query and blocks until a response arrives or timeout occurs. -// It returns 1 if the remote node has confirmed that connection is possible, 0 if not -// possible and -1 if no response arrived (timeout). -type QueryFunc func(*enode.Node) int - -var ( - clientSetup = &nodestate.Setup{Version: 2} - sfHasValue = clientSetup.NewPersistentFlag("hasValue") - sfQuery = clientSetup.NewFlag("query") - sfCanDial = clientSetup.NewFlag("canDial") - sfDialing = clientSetup.NewFlag("dialed") - sfWaitDialTimeout = clientSetup.NewFlag("dialTimeout") - sfConnected = clientSetup.NewFlag("connected") - sfRedialWait = clientSetup.NewFlag("redialWait") - sfAlwaysConnect = clientSetup.NewFlag("alwaysConnect") - sfDialProcess = nodestate.MergeFlags(sfQuery, sfCanDial, sfDialing, sfConnected, sfRedialWait) - - sfiNodeHistory = clientSetup.NewPersistentField("nodeHistory", reflect.TypeOf(nodeHistory{}), - func(field interface{}) ([]byte, error) { - if n, ok := field.(nodeHistory); ok { - ne := nodeHistoryEnc{ - DialCost: n.dialCost, - RedialWaitStart: uint64(n.redialWaitStart), - RedialWaitEnd: uint64(n.redialWaitEnd), - } - enc, err := rlp.EncodeToBytes(&ne) - return enc, err - } - return nil, errors.New("invalid field type") - }, - func(enc []byte) (interface{}, error) { - var ne nodeHistoryEnc - err := rlp.DecodeBytes(enc, &ne) - n := nodeHistory{ - dialCost: ne.DialCost, - redialWaitStart: int64(ne.RedialWaitStart), - redialWaitEnd: int64(ne.RedialWaitEnd), - } - return n, err - }, - ) - sfiNodeWeight = clientSetup.NewField("nodeWeight", reflect.TypeOf(uint64(0))) - sfiConnectedStats = clientSetup.NewField("connectedStats", reflect.TypeOf(ResponseTimeStats{})) - sfiLocalAddress = clientSetup.NewPersistentField("localAddress", reflect.TypeOf(&enr.Record{}), - func(field interface{}) ([]byte, error) { - if enr, ok := field.(*enr.Record); ok { - enc, err := rlp.EncodeToBytes(enr) - return enc, err - } - return nil, errors.New("invalid field type") - }, - func(enc []byte) (interface{}, error) { - var enr enr.Record - if err := rlp.DecodeBytes(enc, &enr); err != nil { - return nil, err - } - return &enr, nil - }, - ) -) - -// NewServerPool creates a new server pool -func NewServerPool(db ethdb.KeyValueStore, dbKey []byte, mixTimeout time.Duration, query QueryFunc, clock mclock.Clock, trustedURLs []string, requestList []RequestInfo) (*ServerPool, enode.Iterator) { - s := &ServerPool{ - db: db, - clock: clock, - unixTime: func() int64 { return time.Now().Unix() }, - validSchemes: enode.ValidSchemes, - trustedURLs: trustedURLs, - vt: NewValueTracker(db, &mclock.System{}, requestList, time.Minute, 1/float64(time.Hour), 1/float64(time.Hour*100), 1/float64(time.Hour*1000)), - ns: nodestate.NewNodeStateMachine(db, []byte(string(dbKey)+"ns:"), clock, clientSetup), - } - s.recalTimeout() - s.mixer = enode.NewFairMix(mixTimeout) - knownSelector := NewWrsIterator(s.ns, sfHasValue, sfDialProcess, sfiNodeWeight) - alwaysConnect := NewQueueIterator(s.ns, sfAlwaysConnect, sfDialProcess, true, nil) - s.mixSources = append(s.mixSources, knownSelector) - s.mixSources = append(s.mixSources, alwaysConnect) - - s.dialIterator = s.mixer - if query != nil { - s.dialIterator = s.addPreNegFilter(s.dialIterator, query) - } - - s.ns.SubscribeState(nodestate.MergeFlags(sfWaitDialTimeout, sfConnected), func(n *enode.Node, oldState, newState nodestate.Flags) { - if oldState.Equals(sfWaitDialTimeout) && newState.IsEmpty() { - // dial timeout, no connection - s.setRedialWait(n, dialCost, dialWaitStep) - s.ns.SetStateSub(n, nodestate.Flags{}, sfDialing, 0) - } - }) - - return s, &serverPoolIterator{ - dialIterator: s.dialIterator, - nextFn: func(node *enode.Node) { - s.ns.Operation(func() { - s.ns.SetStateSub(node, sfDialing, sfCanDial, 0) - s.ns.SetStateSub(node, sfWaitDialTimeout, nodestate.Flags{}, time.Second*10) - }) - }, - nodeFn: s.DialNode, - } -} - -type serverPoolIterator struct { - dialIterator enode.Iterator - nextFn func(*enode.Node) - nodeFn func(*enode.Node) *enode.Node -} - -// Next implements enode.Iterator -func (s *serverPoolIterator) Next() bool { - if s.dialIterator.Next() { - s.nextFn(s.dialIterator.Node()) - return true - } - return false -} - -// Node implements enode.Iterator -func (s *serverPoolIterator) Node() *enode.Node { - return s.nodeFn(s.dialIterator.Node()) -} - -// Close implements enode.Iterator -func (s *serverPoolIterator) Close() { - s.dialIterator.Close() -} - -// AddMetrics adds metrics to the server pool. Should be called before Start(). -func (s *ServerPool) AddMetrics( - suggestedTimeoutGauge, totalValueGauge, serverSelectableGauge, serverConnectedGauge metrics.Gauge, - sessionValueMeter, serverDialedMeter metrics.Meter) { - s.suggestedTimeoutGauge = suggestedTimeoutGauge - s.totalValueGauge = totalValueGauge - s.sessionValueMeter = sessionValueMeter - if serverSelectableGauge != nil { - s.ns.AddLogMetrics(sfHasValue, sfDialProcess, "selectable", nil, nil, serverSelectableGauge) - } - if serverDialedMeter != nil { - s.ns.AddLogMetrics(sfDialing, nodestate.Flags{}, "dialed", serverDialedMeter, nil, nil) - } - if serverConnectedGauge != nil { - s.ns.AddLogMetrics(sfConnected, nodestate.Flags{}, "connected", nil, nil, serverConnectedGauge) - } -} - -// AddSource adds a node discovery source to the server pool (should be called before start) -func (s *ServerPool) AddSource(source enode.Iterator) { - if source != nil { - s.mixSources = append(s.mixSources, source) - } -} - -// addPreNegFilter installs a node filter mechanism that performs a pre-negotiation query. -// Nodes that are filtered out and does not appear on the output iterator are put back -// into redialWait state. -func (s *ServerPool) addPreNegFilter(input enode.Iterator, query QueryFunc) enode.Iterator { - s.fillSet = NewFillSet(s.ns, input, sfQuery) - s.ns.SubscribeState(sfDialProcess, func(n *enode.Node, oldState, newState nodestate.Flags) { - if !newState.Equals(sfQuery) { - if newState.HasAll(sfQuery) { - // remove query flag if the node is already somewhere in the dial process - s.ns.SetStateSub(n, nodestate.Flags{}, sfQuery, 0) - } - return - } - fails := atomic.LoadUint32(&s.queryFails) - failMax := fails - if failMax > maxQueryFails { - failMax = maxQueryFails - } - if rand.Intn(maxQueryFails*2) < int(failMax) { - // skip pre-negotiation with increasing chance, max 50% - // this ensures that the client can operate even if UDP is not working at all - s.ns.SetStateSub(n, sfCanDial, nodestate.Flags{}, time.Second*10) - // set canDial before resetting queried so that FillSet will not read more - // candidates unnecessarily - s.ns.SetStateSub(n, nodestate.Flags{}, sfQuery, 0) - return - } - go func() { - q := query(n) - if q == -1 { - atomic.AddUint32(&s.queryFails, 1) - fails++ - if fails%warnQueryFails == 0 { - // warn if a large number of consecutive queries have failed - log.Warn("UDP connection queries failed", "count", fails) - } - } else { - atomic.StoreUint32(&s.queryFails, 0) - } - s.ns.Operation(func() { - // we are no longer running in the operation that the callback belongs to, start a new one because of setRedialWait - if q == 1 { - s.ns.SetStateSub(n, sfCanDial, nodestate.Flags{}, time.Second*10) - } else { - s.setRedialWait(n, queryCost, queryWaitStep) - } - s.ns.SetStateSub(n, nodestate.Flags{}, sfQuery, 0) - }) - }() - }) - return NewQueueIterator(s.ns, sfCanDial, nodestate.Flags{}, false, func(waiting bool) { - if waiting { - s.fillSet.SetTarget(preNegLimit) - } else { - s.fillSet.SetTarget(0) - } - }) -} - -// Start starts the server pool. Note that NodeStateMachine should be started first. -func (s *ServerPool) Start() { - s.ns.Start() - for _, iter := range s.mixSources { - // add sources to mixer at startup because the mixer instantly tries to read them - // which should only happen after NodeStateMachine has been started - s.mixer.AddSource(iter) - } - for _, url := range s.trustedURLs { - if node, err := enode.Parse(s.validSchemes, url); err == nil { - s.ns.SetState(node, sfAlwaysConnect, nodestate.Flags{}, 0) - } else { - log.Error("Invalid trusted server URL", "url", url, "error", err) - } - } - unixTime := s.unixTime() - s.ns.Operation(func() { - s.ns.ForEach(sfHasValue, nodestate.Flags{}, func(node *enode.Node, state nodestate.Flags) { - s.calculateWeight(node) - if n, ok := s.ns.GetField(node, sfiNodeHistory).(nodeHistory); ok && n.redialWaitEnd > unixTime { - wait := n.redialWaitEnd - unixTime - lastWait := n.redialWaitEnd - n.redialWaitStart - if wait > lastWait { - // if the time until expiration is larger than the last suggested - // waiting time then the system clock was probably adjusted - wait = lastWait - } - s.ns.SetStateSub(node, sfRedialWait, nodestate.Flags{}, time.Duration(wait)*time.Second) - } - }) - }) - atomic.StoreUint32(&s.started, 1) -} - -// Stop stops the server pool -func (s *ServerPool) Stop() { - if s.fillSet != nil { - s.fillSet.Close() - } - s.ns.Operation(func() { - s.ns.ForEach(sfConnected, nodestate.Flags{}, func(n *enode.Node, state nodestate.Flags) { - // recalculate weight of connected nodes in order to update hasValue flag if necessary - s.calculateWeight(n) - }) - }) - s.ns.Stop() - s.vt.Stop() -} - -// RegisterNode implements serverPeerSubscriber -func (s *ServerPool) RegisterNode(node *enode.Node) (*NodeValueTracker, error) { - if atomic.LoadUint32(&s.started) == 0 { - return nil, errors.New("server pool not started yet") - } - nvt := s.vt.Register(node.ID()) - s.ns.Operation(func() { - s.ns.SetStateSub(node, sfConnected, sfDialing.Or(sfWaitDialTimeout), 0) - s.ns.SetFieldSub(node, sfiConnectedStats, nvt.RtStats()) - if node.IP().IsLoopback() { - s.ns.SetFieldSub(node, sfiLocalAddress, node.Record()) - } - }) - return nvt, nil -} - -// UnregisterNode implements serverPeerSubscriber -func (s *ServerPool) UnregisterNode(node *enode.Node) { - s.ns.Operation(func() { - s.setRedialWait(node, dialCost, dialWaitStep) - s.ns.SetStateSub(node, nodestate.Flags{}, sfConnected, 0) - s.ns.SetFieldSub(node, sfiConnectedStats, nil) - }) - s.vt.Unregister(node.ID()) -} - -// recalTimeout calculates the current recommended timeout. This value is used by -// the client as a "soft timeout" value. It also affects the service value calculation -// of individual nodes. -func (s *ServerPool) recalTimeout() { - // Use cached result if possible, avoid recalculating too frequently. - s.timeoutLock.RLock() - refreshed := s.timeoutRefreshed - s.timeoutLock.RUnlock() - now := s.clock.Now() - if refreshed != 0 && time.Duration(now-refreshed) < timeoutRefresh { - return - } - // Cached result is stale, recalculate a new one. - rts := s.vt.RtStats() - - // Add a fake statistic here. It is an easy way to initialize with some - // conservative values when the database is new. As soon as we have a - // considerable amount of real stats this small value won't matter. - rts.Add(time.Second*2, 10, s.vt.StatsExpFactor()) - - // Use either 10% failure rate timeout or twice the median response time - // as the recommended timeout. - timeout := minTimeout - if t := rts.Timeout(0.1); t > timeout { - timeout = t - } - if t := rts.Timeout(0.5) * 2; t > timeout { - timeout = t - } - s.timeoutLock.Lock() - if s.timeout != timeout { - s.timeout = timeout - s.timeWeights = TimeoutWeights(s.timeout) - - if s.suggestedTimeoutGauge != nil { - s.suggestedTimeoutGauge.Update(int64(s.timeout / time.Millisecond)) - } - if s.totalValueGauge != nil { - s.totalValueGauge.Update(int64(rts.Value(s.timeWeights, s.vt.StatsExpFactor()))) - } - } - s.timeoutRefreshed = now - s.timeoutLock.Unlock() -} - -// GetTimeout returns the recommended request timeout. -func (s *ServerPool) GetTimeout() time.Duration { - s.recalTimeout() - s.timeoutLock.RLock() - defer s.timeoutLock.RUnlock() - return s.timeout -} - -// getTimeoutAndWeight returns the recommended request timeout as well as the -// response time weight which is necessary to calculate service value. -func (s *ServerPool) getTimeoutAndWeight() (time.Duration, ResponseTimeWeights) { - s.recalTimeout() - s.timeoutLock.RLock() - defer s.timeoutLock.RUnlock() - return s.timeout, s.timeWeights -} - -// addDialCost adds the given amount of dial cost to the node history and returns the current -// amount of total dial cost -func (s *ServerPool) addDialCost(n *nodeHistory, amount int64) uint64 { - logOffset := s.vt.StatsExpirer().LogOffset(s.clock.Now()) - if amount > 0 { - n.dialCost.Add(amount, logOffset) - } - totalDialCost := n.dialCost.Value(logOffset) - if totalDialCost < dialCost { - totalDialCost = dialCost - } - return totalDialCost -} - -// serviceValue returns the service value accumulated in this session and in total -func (s *ServerPool) serviceValue(node *enode.Node) (sessionValue, totalValue float64) { - nvt := s.vt.GetNode(node.ID()) - if nvt == nil { - return 0, 0 - } - currentStats := nvt.RtStats() - _, timeWeights := s.getTimeoutAndWeight() - expFactor := s.vt.StatsExpFactor() - - totalValue = currentStats.Value(timeWeights, expFactor) - if connStats, ok := s.ns.GetField(node, sfiConnectedStats).(ResponseTimeStats); ok { - diff := currentStats - diff.SubStats(&connStats) - sessionValue = diff.Value(timeWeights, expFactor) - if s.sessionValueMeter != nil { - s.sessionValueMeter.Mark(int64(sessionValue)) - } - } - return -} - -// updateWeight calculates the node weight and updates the nodeWeight field and the -// hasValue flag. It also saves the node state if necessary. -// Note: this function should run inside a NodeStateMachine operation -func (s *ServerPool) updateWeight(node *enode.Node, totalValue float64, totalDialCost uint64) { - weight := uint64(totalValue * nodeWeightMul / float64(totalDialCost)) - if weight >= nodeWeightThreshold { - s.ns.SetStateSub(node, sfHasValue, nodestate.Flags{}, 0) - s.ns.SetFieldSub(node, sfiNodeWeight, weight) - } else { - s.ns.SetStateSub(node, nodestate.Flags{}, sfHasValue, 0) - s.ns.SetFieldSub(node, sfiNodeWeight, nil) - s.ns.SetFieldSub(node, sfiNodeHistory, nil) - s.ns.SetFieldSub(node, sfiLocalAddress, nil) - } - s.ns.Persist(node) // saved if node history or hasValue changed -} - -// setRedialWait calculates and sets the redialWait timeout based on the service value -// and dial cost accumulated during the last session/attempt and in total. -// The waiting time is raised exponentially if no service value has been received in order -// to prevent dialing an unresponsive node frequently for a very long time just because it -// was useful in the past. It can still be occasionally dialed though and once it provides -// a significant amount of service value again its waiting time is quickly reduced or reset -// to the minimum. -// Note: node weight is also recalculated and updated by this function. -// Note 2: this function should run inside a NodeStateMachine operation -func (s *ServerPool) setRedialWait(node *enode.Node, addDialCost int64, waitStep float64) { - n, _ := s.ns.GetField(node, sfiNodeHistory).(nodeHistory) - sessionValue, totalValue := s.serviceValue(node) - totalDialCost := s.addDialCost(&n, addDialCost) - - // if the current dial session has yielded at least the average value/dial cost ratio - // then the waiting time should be reset to the minimum. If the session value - // is below average but still positive then timeout is limited to the ratio of - // average / current service value multiplied by the minimum timeout. If the attempt - // was unsuccessful then timeout is raised exponentially without limitation. - // Note: dialCost is used in the formula below even if dial was not attempted at all - // because the pre-negotiation query did not return a positive result. In this case - // the ratio has no meaning anyway and waitFactor is always raised, though in smaller - // steps because queries are cheaper and therefore we can allow more failed attempts. - unixTime := s.unixTime() - plannedTimeout := float64(n.redialWaitEnd - n.redialWaitStart) // last planned redialWait timeout - var actualWait float64 // actual waiting time elapsed - if unixTime > n.redialWaitEnd { - // the planned timeout has elapsed - actualWait = plannedTimeout - } else { - // if the node was redialed earlier then we do not raise the planned timeout - // exponentially because that could lead to the timeout rising very high in - // a short amount of time - // Note that in case of an early redial actualWait also includes the dial - // timeout or connection time of the last attempt but it still serves its - // purpose of preventing the timeout rising quicker than linearly as a function - // of total time elapsed without a successful connection. - actualWait = float64(unixTime - n.redialWaitStart) - } - // raise timeout exponentially if the last planned timeout has elapsed - // (use at least the last planned timeout otherwise) - nextTimeout := actualWait * waitStep - if plannedTimeout > nextTimeout { - nextTimeout = plannedTimeout - } - // we reduce the waiting time if the server has provided service value during the - // connection (but never under the minimum) - a := totalValue * dialCost * float64(minRedialWait) - b := float64(totalDialCost) * sessionValue - if a < b*nextTimeout { - nextTimeout = a / b - } - if nextTimeout < minRedialWait { - nextTimeout = minRedialWait - } - wait := time.Duration(float64(time.Second) * nextTimeout) - if wait < waitThreshold { - n.redialWaitStart = unixTime - n.redialWaitEnd = unixTime + int64(nextTimeout) - s.ns.SetFieldSub(node, sfiNodeHistory, n) - s.ns.SetStateSub(node, sfRedialWait, nodestate.Flags{}, wait) - s.updateWeight(node, totalValue, totalDialCost) - } else { - // discard known node statistics if waiting time is very long because the node - // hasn't been responsive for a very long time - s.ns.SetFieldSub(node, sfiNodeHistory, nil) - s.ns.SetFieldSub(node, sfiNodeWeight, nil) - s.ns.SetStateSub(node, nodestate.Flags{}, sfHasValue, 0) - } -} - -// calculateWeight calculates and sets the node weight without altering the node history. -// This function should be called during startup and shutdown only, otherwise setRedialWait -// will keep the weights updated as the underlying statistics are adjusted. -// Note: this function should run inside a NodeStateMachine operation -func (s *ServerPool) calculateWeight(node *enode.Node) { - n, _ := s.ns.GetField(node, sfiNodeHistory).(nodeHistory) - _, totalValue := s.serviceValue(node) - totalDialCost := s.addDialCost(&n, 0) - s.updateWeight(node, totalValue, totalDialCost) -} - -// API returns the vflux client API -func (s *ServerPool) API() *PrivateClientAPI { - return NewPrivateClientAPI(s.vt) -} - -type dummyIdentity enode.ID - -func (id dummyIdentity) Verify(r *enr.Record, sig []byte) error { return nil } -func (id dummyIdentity) NodeAddr(r *enr.Record) []byte { return id[:] } - -// DialNode replaces the given enode with a locally generated one containing the ENR -// stored in the sfiLocalAddress field if present. This workaround ensures that nodes -// on the local network can be dialed at the local address if a connection has been -// successfully established previously. -// Note that NodeStateMachine always remembers the enode with the latest version of -// the remote signed ENR. ENR filtering should be performed on that version while -// dialNode should be used for dialing the node over TCP or UDP. -func (s *ServerPool) DialNode(n *enode.Node) *enode.Node { - if enr, ok := s.ns.GetField(n, sfiLocalAddress).(*enr.Record); ok { - n, _ := enode.New(dummyIdentity(n.ID()), enr) - return n - } - return n -} - -// Persist immediately stores the state of a node in the node database -func (s *ServerPool) Persist(n *enode.Node) { - s.ns.Persist(n) -} diff --git a/les/vflux/client/serverpool_test.go b/les/vflux/client/serverpool_test.go deleted file mode 100644 index 19d4fe6630..0000000000 --- a/les/vflux/client/serverpool_test.go +++ /dev/null @@ -1,424 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "math/rand" - "strconv" - "sync" - "sync/atomic" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/ethdb/memorydb" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" -) - -const ( - spTestNodes = 1000 - spTestTarget = 5 - spTestLength = 10000 - spMinTotal = 40000 - spMaxTotal = 50000 -) - -func testNodeID(i int) enode.ID { - return enode.ID{42, byte(i % 256), byte(i / 256)} -} - -func testNodeIndex(id enode.ID) int { - if id[0] != 42 { - return -1 - } - return int(id[1]) + int(id[2])*256 -} - -type ServerPoolTest struct { - db ethdb.KeyValueStore - clock *mclock.Simulated - quit chan chan struct{} - preNeg, preNegFail bool - sp *ServerPool - spi enode.Iterator - input enode.Iterator - testNodes []spTestNode - trusted []string - waitCount, waitEnded int32 - - // preNegLock protects the cycle counter, testNodes list and its connected field - // (accessed from both the main thread and the preNeg callback) - preNegLock sync.Mutex - queryWg *sync.WaitGroup // a new wait group is created each time the simulation is started - stopping bool // stopping avoid calling queryWg.Add after queryWg.Wait - - cycle, conn, servedConn int - serviceCycles, dialCount int - disconnect map[int][]int -} - -type spTestNode struct { - connectCycles, waitCycles int - nextConnCycle, totalConn int - connected, service bool - node *enode.Node -} - -func newServerPoolTest(preNeg, preNegFail bool) *ServerPoolTest { - nodes := make([]*enode.Node, spTestNodes) - for i := range nodes { - nodes[i] = enode.SignNull(&enr.Record{}, testNodeID(i)) - } - return &ServerPoolTest{ - clock: &mclock.Simulated{}, - db: memorydb.New(), - input: enode.CycleNodes(nodes), - testNodes: make([]spTestNode, spTestNodes), - preNeg: preNeg, - preNegFail: preNegFail, - } -} - -func (s *ServerPoolTest) beginWait() { - // ensure that dialIterator and the maximal number of pre-neg queries are not all stuck in a waiting state - for atomic.AddInt32(&s.waitCount, 1) > preNegLimit { - atomic.AddInt32(&s.waitCount, -1) - s.clock.Run(time.Second) - } -} - -func (s *ServerPoolTest) endWait() { - atomic.AddInt32(&s.waitCount, -1) - atomic.AddInt32(&s.waitEnded, 1) -} - -func (s *ServerPoolTest) addTrusted(i int) { - s.trusted = append(s.trusted, enode.SignNull(&enr.Record{}, testNodeID(i)).String()) -} - -func (s *ServerPoolTest) start() { - var testQuery QueryFunc - s.queryWg = new(sync.WaitGroup) - if s.preNeg { - testQuery = func(node *enode.Node) int { - s.preNegLock.Lock() - if s.stopping { - s.preNegLock.Unlock() - return 0 - } - s.queryWg.Add(1) - idx := testNodeIndex(node.ID()) - n := &s.testNodes[idx] - canConnect := !n.connected && n.connectCycles != 0 && s.cycle >= n.nextConnCycle - s.preNegLock.Unlock() - defer s.queryWg.Done() - - if s.preNegFail { - // simulate a scenario where UDP queries never work - s.beginWait() - s.clock.Sleep(time.Second * 5) - s.endWait() - return -1 - } - switch idx % 3 { - case 0: - // pre-neg returns true only if connection is possible - if canConnect { - return 1 - } - return 0 - case 1: - // pre-neg returns true but connection might still fail - return 1 - case 2: - // pre-neg returns true if connection is possible, otherwise timeout (node unresponsive) - if canConnect { - return 1 - } - s.beginWait() - s.clock.Sleep(time.Second * 5) - s.endWait() - return -1 - } - return -1 - } - } - - requestList := make([]RequestInfo, testReqTypes) - for i := range requestList { - requestList[i] = RequestInfo{Name: "testreq" + strconv.Itoa(i), InitAmount: 1, InitValue: 1} - } - - s.sp, s.spi = NewServerPool(s.db, []byte("sp:"), 0, testQuery, s.clock, s.trusted, requestList) - s.sp.AddSource(s.input) - s.sp.validSchemes = enode.ValidSchemesForTesting - s.sp.unixTime = func() int64 { return int64(s.clock.Now()) / int64(time.Second) } - s.disconnect = make(map[int][]int) - s.sp.Start() - s.quit = make(chan chan struct{}) - go func() { - last := int32(-1) - for { - select { - case <-time.After(time.Millisecond * 100): - c := atomic.LoadInt32(&s.waitEnded) - if c == last { - // advance clock if test is stuck (might happen in rare cases) - s.clock.Run(time.Second) - } - last = c - case quit := <-s.quit: - close(quit) - return - } - } - }() -} - -func (s *ServerPoolTest) stop() { - // disable further queries and wait if one is currently running - s.preNegLock.Lock() - s.stopping = true - s.preNegLock.Unlock() - s.queryWg.Wait() - - quit := make(chan struct{}) - s.quit <- quit - <-quit - s.sp.Stop() - s.spi.Close() - s.preNegLock.Lock() - s.stopping = false - s.preNegLock.Unlock() - for i := range s.testNodes { - n := &s.testNodes[i] - if n.connected { - n.totalConn += s.cycle - } - n.connected = false - n.node = nil - n.nextConnCycle = 0 - } - s.conn, s.servedConn = 0, 0 -} - -func (s *ServerPoolTest) run() { - for count := spTestLength; count > 0; count-- { - if dcList := s.disconnect[s.cycle]; dcList != nil { - for _, idx := range dcList { - n := &s.testNodes[idx] - s.sp.UnregisterNode(n.node) - n.totalConn += s.cycle - s.preNegLock.Lock() - n.connected = false - s.preNegLock.Unlock() - n.node = nil - s.conn-- - if n.service { - s.servedConn-- - } - n.nextConnCycle = s.cycle + n.waitCycles - } - delete(s.disconnect, s.cycle) - } - if s.conn < spTestTarget { - s.dialCount++ - s.beginWait() - s.spi.Next() - s.endWait() - dial := s.spi.Node() - id := dial.ID() - idx := testNodeIndex(id) - n := &s.testNodes[idx] - if !n.connected && n.connectCycles != 0 && s.cycle >= n.nextConnCycle { - s.conn++ - if n.service { - s.servedConn++ - } - n.totalConn -= s.cycle - s.preNegLock.Lock() - n.connected = true - s.preNegLock.Unlock() - dc := s.cycle + n.connectCycles - s.disconnect[dc] = append(s.disconnect[dc], idx) - n.node = dial - nv, _ := s.sp.RegisterNode(n.node) - if n.service { - nv.Served([]ServedRequest{{ReqType: 0, Amount: 100}}, 0) - } - } - } - s.serviceCycles += s.servedConn - s.clock.Run(time.Second) - s.preNegLock.Lock() - s.cycle++ - s.preNegLock.Unlock() - } -} - -func (s *ServerPoolTest) setNodes(count, conn, wait int, service, trusted bool) (res []int) { - for ; count > 0; count-- { - idx := rand.Intn(spTestNodes) - for s.testNodes[idx].connectCycles != 0 || s.testNodes[idx].connected { - idx = rand.Intn(spTestNodes) - } - res = append(res, idx) - s.preNegLock.Lock() - s.testNodes[idx] = spTestNode{ - connectCycles: conn, - waitCycles: wait, - service: service, - } - s.preNegLock.Unlock() - if trusted { - s.addTrusted(idx) - } - } - return -} - -func (s *ServerPoolTest) resetNodes() { - for i, n := range s.testNodes { - if n.connected { - n.totalConn += s.cycle - s.sp.UnregisterNode(n.node) - } - s.preNegLock.Lock() - s.testNodes[i] = spTestNode{totalConn: n.totalConn} - s.preNegLock.Unlock() - } - s.conn, s.servedConn = 0, 0 - s.disconnect = make(map[int][]int) - s.trusted = nil -} - -func (s *ServerPoolTest) checkNodes(t *testing.T, nodes []int) { - var sum int - for _, idx := range nodes { - n := &s.testNodes[idx] - if n.connected { - n.totalConn += s.cycle - } - sum += n.totalConn - n.totalConn = 0 - if n.connected { - n.totalConn -= s.cycle - } - } - if sum < spMinTotal || sum > spMaxTotal { - t.Errorf("Total connection amount %d outside expected range %d to %d", sum, spMinTotal, spMaxTotal) - } -} - -func TestServerPool(t *testing.T) { - t.Parallel() - - testServerPool(t, false, false) -} -func TestServerPoolWithPreNeg(t *testing.T) { - t.Parallel() - - testServerPool(t, true, false) -} -func TestServerPoolWithPreNegFail(t *testing.T) { - t.Parallel() - - testServerPool(t, true, true) -} -func testServerPool(t *testing.T, preNeg, fail bool) { - s := newServerPoolTest(preNeg, fail) - nodes := s.setNodes(100, 200, 200, true, false) - s.setNodes(100, 20, 20, false, false) - s.start() - s.run() - s.stop() - s.checkNodes(t, nodes) -} - -func TestServerPoolChangedNodes(t *testing.T) { - t.Parallel() - - testServerPoolChangedNodes(t, false) -} -func TestServerPoolChangedNodesWithPreNeg(t *testing.T) { - t.Parallel() - - testServerPoolChangedNodes(t, true) -} -func testServerPoolChangedNodes(t *testing.T, preNeg bool) { - s := newServerPoolTest(preNeg, false) - nodes := s.setNodes(100, 200, 200, true, false) - s.setNodes(100, 20, 20, false, false) - s.start() - s.run() - s.checkNodes(t, nodes) - for i := 0; i < 3; i++ { - s.resetNodes() - nodes := s.setNodes(100, 200, 200, true, false) - s.setNodes(100, 20, 20, false, false) - s.run() - s.checkNodes(t, nodes) - } - s.stop() -} - -func TestServerPoolRestartNoDiscovery(t *testing.T) { - t.Parallel() - - testServerPoolRestartNoDiscovery(t, false) -} -func TestServerPoolRestartNoDiscoveryWithPreNeg(t *testing.T) { - t.Parallel() - - testServerPoolRestartNoDiscovery(t, true) -} -func testServerPoolRestartNoDiscovery(t *testing.T, preNeg bool) { - s := newServerPoolTest(preNeg, false) - nodes := s.setNodes(100, 200, 200, true, false) - s.setNodes(100, 20, 20, false, false) - s.start() - s.run() - s.stop() - s.checkNodes(t, nodes) - s.input = nil - s.start() - s.run() - s.stop() - s.checkNodes(t, nodes) -} - -func TestServerPoolTrustedNoDiscovery(t *testing.T) { - t.Parallel() - - testServerPoolTrustedNoDiscovery(t, false) -} -func TestServerPoolTrustedNoDiscoveryWithPreNeg(t *testing.T) { - t.Parallel() - - testServerPoolTrustedNoDiscovery(t, true) -} -func testServerPoolTrustedNoDiscovery(t *testing.T, preNeg bool) { - s := newServerPoolTest(preNeg, false) - trusted := s.setNodes(200, 200, 200, true, true) - s.input = nil - s.start() - s.run() - s.stop() - s.checkNodes(t, trusted) -} diff --git a/les/vflux/client/timestats.go b/les/vflux/client/timestats.go deleted file mode 100644 index 7f1ffdbe26..0000000000 --- a/les/vflux/client/timestats.go +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "io" - "math" - "time" - - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/rlp" -) - -const ( - minResponseTime = time.Millisecond * 50 - maxResponseTime = time.Second * 10 - timeStatLength = 32 - weightScaleFactor = 1000000 -) - -// ResponseTimeStats is the response time distribution of a set of answered requests, -// weighted with request value, either served by a single server or aggregated for -// multiple servers. -// It it a fixed length (timeStatLength) distribution vector with linear interpolation. -// The X axis (the time values) are not linear, they should be transformed with -// TimeToStatScale and StatScaleToTime. -type ( - ResponseTimeStats struct { - stats [timeStatLength]uint64 - exp uint64 - } - ResponseTimeWeights [timeStatLength]float64 -) - -var timeStatsLogFactor = (timeStatLength - 1) / (math.Log(float64(maxResponseTime)/float64(minResponseTime)) + 1) - -// TimeToStatScale converts a response time to a distribution vector index. The index -// is represented by a float64 so that linear interpolation can be applied. -func TimeToStatScale(d time.Duration) float64 { - if d < 0 { - return 0 - } - r := float64(d) / float64(minResponseTime) - if r > 1 { - r = math.Log(r) + 1 - } - r *= timeStatsLogFactor - if r > timeStatLength-1 { - return timeStatLength - 1 - } - return r -} - -// StatScaleToTime converts a distribution vector index to a response time. The index -// is represented by a float64 so that linear interpolation can be applied. -func StatScaleToTime(r float64) time.Duration { - r /= timeStatsLogFactor - if r > 1 { - r = math.Exp(r - 1) - } - return time.Duration(r * float64(minResponseTime)) -} - -// TimeoutWeights calculates the weight function used for calculating service value -// based on the response time distribution of the received service. -// It is based on the request timeout value of the system. It consists of a half cosine -// function starting with 1, crossing zero at timeout and reaching -1 at 2*timeout. -// After 2*timeout the weight is constant -1. -func TimeoutWeights(timeout time.Duration) (res ResponseTimeWeights) { - for i := range res { - t := StatScaleToTime(float64(i)) - if t < 2*timeout { - res[i] = math.Cos(math.Pi / 2 * float64(t) / float64(timeout)) - } else { - res[i] = -1 - } - } - return -} - -// EncodeRLP implements rlp.Encoder -func (rt *ResponseTimeStats) EncodeRLP(w io.Writer) error { - enc := struct { - Stats [timeStatLength]uint64 - Exp uint64 - }{rt.stats, rt.exp} - return rlp.Encode(w, &enc) -} - -// DecodeRLP implements rlp.Decoder -func (rt *ResponseTimeStats) DecodeRLP(s *rlp.Stream) error { - var enc struct { - Stats [timeStatLength]uint64 - Exp uint64 - } - if err := s.Decode(&enc); err != nil { - return err - } - rt.stats, rt.exp = enc.Stats, enc.Exp - return nil -} - -// Add adds a new response time with the given weight to the distribution. -func (rt *ResponseTimeStats) Add(respTime time.Duration, weight float64, expFactor utils.ExpirationFactor) { - rt.setExp(expFactor.Exp) - weight *= expFactor.Factor * weightScaleFactor - r := TimeToStatScale(respTime) - i := int(r) - r -= float64(i) - rt.stats[i] += uint64(weight * (1 - r)) - if i < timeStatLength-1 { - rt.stats[i+1] += uint64(weight * r) - } -} - -// setExp sets the power of 2 exponent of the structure, scaling base values (the vector -// itself) up or down if necessary. -func (rt *ResponseTimeStats) setExp(exp uint64) { - if exp > rt.exp { - shift := exp - rt.exp - for i, v := range rt.stats { - rt.stats[i] = v >> shift - } - rt.exp = exp - } - if exp < rt.exp { - shift := rt.exp - exp - for i, v := range rt.stats { - rt.stats[i] = v << shift - } - rt.exp = exp - } -} - -// Value calculates the total service value based on the given distribution, using the -// specified weight function. -func (rt ResponseTimeStats) Value(weights ResponseTimeWeights, expFactor utils.ExpirationFactor) float64 { - var v float64 - for i, s := range rt.stats { - v += float64(s) * weights[i] - } - if v < 0 { - return 0 - } - return expFactor.Value(v, rt.exp) / weightScaleFactor -} - -// AddStats adds the given ResponseTimeStats to the current one. -func (rt *ResponseTimeStats) AddStats(s *ResponseTimeStats) { - rt.setExp(s.exp) - for i, v := range s.stats { - rt.stats[i] += v - } -} - -// SubStats subtracts the given ResponseTimeStats from the current one. -func (rt *ResponseTimeStats) SubStats(s *ResponseTimeStats) { - rt.setExp(s.exp) - for i, v := range s.stats { - if v < rt.stats[i] { - rt.stats[i] -= v - } else { - rt.stats[i] = 0 - } - } -} - -// Timeout suggests a timeout value based on the previous distribution. The parameter -// is the desired rate of timeouts assuming a similar distribution in the future. -// Note that the actual timeout should have a sensible minimum bound so that operating -// under ideal working conditions for a long time (for example, using a local server -// with very low response times) will not make it very hard for the system to accommodate -// longer response times in the future. -func (rt ResponseTimeStats) Timeout(failRatio float64) time.Duration { - var sum uint64 - for _, v := range rt.stats { - sum += v - } - s := uint64(float64(sum) * failRatio) - i := timeStatLength - 1 - for i > 0 && s >= rt.stats[i] { - s -= rt.stats[i] - i-- - } - r := float64(i) + 0.5 - if rt.stats[i] > 0 { - r -= float64(s) / float64(rt.stats[i]) - } - if r < 0 { - r = 0 - } - th := StatScaleToTime(r) - if th > maxResponseTime { - th = maxResponseTime - } - return th -} - -// RtDistribution represents a distribution as a series of (X, Y) chart coordinates, -// where the X axis is the response time in seconds while the Y axis is the amount of -// service value received with a response time close to the X coordinate. -type RtDistribution [timeStatLength][2]float64 - -// Distribution returns a RtDistribution, optionally normalized to a sum of 1. -func (rt ResponseTimeStats) Distribution(normalized bool, expFactor utils.ExpirationFactor) (res RtDistribution) { - var mul float64 - if normalized { - var sum uint64 - for _, v := range rt.stats { - sum += v - } - if sum > 0 { - mul = 1 / float64(sum) - } - } else { - mul = expFactor.Value(float64(1)/weightScaleFactor, rt.exp) - } - for i, v := range rt.stats { - res[i][0] = float64(StatScaleToTime(float64(i))) / float64(time.Second) - res[i][1] = float64(v) * mul - } - return -} diff --git a/les/vflux/client/timestats_test.go b/les/vflux/client/timestats_test.go deleted file mode 100644 index 80ea2047c6..0000000000 --- a/les/vflux/client/timestats_test.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "math" - "math/rand" - "testing" - "time" - - "github.com/ethereum/go-ethereum/les/utils" -) - -func TestTransition(t *testing.T) { - t.Parallel() - - var epsilon = 0.01 - var cases = []time.Duration{ - time.Millisecond, minResponseTime, - time.Second, time.Second * 5, maxResponseTime, - } - for _, c := range cases { - got := StatScaleToTime(TimeToStatScale(c)) - if float64(got)*(1+epsilon) < float64(c) || float64(got)*(1-epsilon) > float64(c) { - t.Fatalf("Failed to transition back") - } - } - // If the time is too large(exceeds the max response time. - got := StatScaleToTime(TimeToStatScale(2 * maxResponseTime)) - if float64(got)*(1+epsilon) < float64(maxResponseTime) || float64(got)*(1-epsilon) > float64(maxResponseTime) { - t.Fatalf("Failed to transition back") - } -} - -var maxResponseWeights = TimeoutWeights(maxResponseTime) - -func TestValue(t *testing.T) { - t.Parallel() - - noexp := utils.ExpirationFactor{Factor: 1} - for i := 0; i < 1000; i++ { - max := minResponseTime + time.Duration(rand.Int63n(int64(maxResponseTime-minResponseTime))) - min := minResponseTime + time.Duration(rand.Int63n(int64(max-minResponseTime))) - timeout := max/2 + time.Duration(rand.Int63n(int64(maxResponseTime-max/2))) - s := makeRangeStats(min, max, 1000, noexp) - value := s.Value(TimeoutWeights(timeout), noexp) - // calculate the average weight (the average of the given range of the half cosine - // weight function). - minx := math.Pi / 2 * float64(min) / float64(timeout) - maxx := math.Pi / 2 * float64(max) / float64(timeout) - avgWeight := (math.Sin(maxx) - math.Sin(minx)) / (maxx - minx) - expv := 1000 * avgWeight - if expv < 0 { - expv = 0 - } - if value < expv-10 || value > expv+10 { - t.Errorf("Value failed (expected %v, got %v)", expv, value) - } - } -} - -func TestAddSubExpire(t *testing.T) { - t.Parallel() - - var ( - sum1, sum2 ResponseTimeStats - sum1ValueExp, sum2ValueExp float64 - logOffset utils.Fixed64 - ) - for i := 0; i < 1000; i++ { - exp := utils.ExpFactor(logOffset) - max := minResponseTime + time.Duration(rand.Int63n(int64(maxResponseTime-minResponseTime))) - min := minResponseTime + time.Duration(rand.Int63n(int64(max-minResponseTime))) - s := makeRangeStats(min, max, 1000, exp) - value := s.Value(maxResponseWeights, exp) - sum1.AddStats(&s) - sum1ValueExp += value - if rand.Intn(2) == 1 { - sum2.AddStats(&s) - sum2ValueExp += value - } - logOffset += utils.Float64ToFixed64(0.001 / math.Log(2)) - sum1ValueExp -= sum1ValueExp * 0.001 - sum2ValueExp -= sum2ValueExp * 0.001 - } - exp := utils.ExpFactor(logOffset) - sum1Value := sum1.Value(maxResponseWeights, exp) - if sum1Value < sum1ValueExp*0.99 || sum1Value > sum1ValueExp*1.01 { - t.Errorf("sum1Value failed (expected %v, got %v)", sum1ValueExp, sum1Value) - } - sum2Value := sum2.Value(maxResponseWeights, exp) - if sum2Value < sum2ValueExp*0.99 || sum2Value > sum2ValueExp*1.01 { - t.Errorf("sum2Value failed (expected %v, got %v)", sum2ValueExp, sum2Value) - } - diff := sum1 - diff.SubStats(&sum2) - diffValue := diff.Value(maxResponseWeights, exp) - diffValueExp := sum1ValueExp - sum2ValueExp - if diffValue < diffValueExp*0.99 || diffValue > diffValueExp*1.01 { - t.Errorf("diffValue failed (expected %v, got %v)", diffValueExp, diffValue) - } -} - -func TestTimeout(t *testing.T) { - t.Parallel() - - testTimeoutRange(t, 0, time.Second) - testTimeoutRange(t, time.Second, time.Second*2) - testTimeoutRange(t, time.Second, maxResponseTime) -} - -func testTimeoutRange(t *testing.T, min, max time.Duration) { - s := makeRangeStats(min, max, 1000, utils.ExpirationFactor{Factor: 1}) - for i := 2; i < 9; i++ { - to := s.Timeout(float64(i) / 10) - exp := max - (max-min)*time.Duration(i)/10 - tol := (max - min) / 50 - if to < exp-tol || to > exp+tol { - t.Errorf("Timeout failed (expected %v, got %v)", exp, to) - } - } -} - -func makeRangeStats(min, max time.Duration, amount float64, exp utils.ExpirationFactor) ResponseTimeStats { - var s ResponseTimeStats - amount /= 1000 - for i := 0; i < 1000; i++ { - s.Add(min+(max-min)*time.Duration(i)/999, amount, exp) - } - return s -} diff --git a/les/vflux/client/valuetracker.go b/les/vflux/client/valuetracker.go deleted file mode 100644 index e0d1010ffe..0000000000 --- a/les/vflux/client/valuetracker.go +++ /dev/null @@ -1,506 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "bytes" - "fmt" - "math" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/rlp" -) - -const ( - vtVersion = 1 // database encoding format for ValueTracker - nvtVersion = 1 // database encoding format for NodeValueTracker -) - -var ( - vtKey = []byte("vt:") - vtNodeKey = []byte("vtNode:") -) - -// NodeValueTracker collects service value statistics for a specific server node -type NodeValueTracker struct { - lock sync.Mutex - - vt *ValueTracker - rtStats, lastRtStats ResponseTimeStats - lastTransfer mclock.AbsTime - basket serverBasket - reqCosts []uint64 - reqValues []float64 -} - -// UpdateCosts updates the node value tracker's request cost table -func (nv *NodeValueTracker) UpdateCosts(reqCosts []uint64) { - nv.vt.lock.Lock() - defer nv.vt.lock.Unlock() - - nv.updateCosts(reqCosts, nv.vt.refBasket.reqValues, nv.vt.refBasket.reqValueFactor(reqCosts)) -} - -// updateCosts updates the request cost table of the server. The request value factor -// is also updated based on the given cost table and the current reference basket. -// Note that the contents of the referenced reqValues slice will not change; a new -// reference is passed if the values are updated by ValueTracker. -func (nv *NodeValueTracker) updateCosts(reqCosts []uint64, reqValues []float64, rvFactor float64) { - nv.lock.Lock() - defer nv.lock.Unlock() - - nv.reqCosts = reqCosts - nv.reqValues = reqValues - nv.basket.updateRvFactor(rvFactor) -} - -// transferStats returns request basket and response time statistics that should be -// added to the global statistics. The contents of the server's own request basket are -// gradually transferred to the main reference basket and removed from the server basket -// with the specified transfer rate. -// The response time statistics are retained at both places and therefore the global -// distribution is always the sum of the individual server distributions. -func (nv *NodeValueTracker) transferStats(now mclock.AbsTime, transferRate float64) (requestBasket, ResponseTimeStats) { - nv.lock.Lock() - defer nv.lock.Unlock() - - dt := now - nv.lastTransfer - nv.lastTransfer = now - if dt < 0 { - dt = 0 - } - recentRtStats := nv.rtStats - recentRtStats.SubStats(&nv.lastRtStats) - nv.lastRtStats = nv.rtStats - return nv.basket.transfer(-math.Expm1(-transferRate * float64(dt))), recentRtStats -} - -type ServedRequest struct { - ReqType, Amount uint32 -} - -// Served adds a served request to the node's statistics. An actual request may be composed -// of one or more request types (service vector indices). -func (nv *NodeValueTracker) Served(reqs []ServedRequest, respTime time.Duration) { - nv.vt.statsExpLock.RLock() - expFactor := nv.vt.statsExpFactor - nv.vt.statsExpLock.RUnlock() - - nv.lock.Lock() - defer nv.lock.Unlock() - - var value float64 - for _, r := range reqs { - nv.basket.add(r.ReqType, r.Amount, nv.reqCosts[r.ReqType]*uint64(r.Amount), expFactor) - value += nv.reqValues[r.ReqType] * float64(r.Amount) - } - nv.rtStats.Add(respTime, value, expFactor) -} - -// RtStats returns the node's own response time distribution statistics -func (nv *NodeValueTracker) RtStats() ResponseTimeStats { - nv.lock.Lock() - defer nv.lock.Unlock() - - return nv.rtStats -} - -// ValueTracker coordinates service value calculation for individual servers and updates -// global statistics -type ValueTracker struct { - clock mclock.Clock - lock sync.Mutex - quit chan chan struct{} - db ethdb.KeyValueStore - connected map[enode.ID]*NodeValueTracker - reqTypeCount int - - refBasket referenceBasket - mappings [][]string - currentMapping int - initRefBasket requestBasket - rtStats ResponseTimeStats - - transferRate float64 - statsExpLock sync.RWMutex - statsExpRate, offlineExpRate float64 - statsExpirer utils.Expirer - statsExpFactor utils.ExpirationFactor -} - -type valueTrackerEncV1 struct { - Mappings [][]string - RefBasketMapping uint - RefBasket requestBasket - RtStats ResponseTimeStats - ExpOffset, SavedAt uint64 -} - -type nodeValueTrackerEncV1 struct { - RtStats ResponseTimeStats - ServerBasketMapping uint - ServerBasket requestBasket -} - -// RequestInfo is an initializer structure for the service vector. -type RequestInfo struct { - // Name identifies the request type and is used for re-mapping the service vector if necessary - Name string - // InitAmount and InitValue are used to initialize the reference basket - InitAmount, InitValue float64 -} - -// NewValueTracker creates a new ValueTracker and loads its previously saved state from -// the database if possible. -func NewValueTracker(db ethdb.KeyValueStore, clock mclock.Clock, reqInfo []RequestInfo, updatePeriod time.Duration, transferRate, statsExpRate, offlineExpRate float64) *ValueTracker { - now := clock.Now() - - initRefBasket := requestBasket{items: make([]basketItem, len(reqInfo))} - mapping := make([]string, len(reqInfo)) - - var sumAmount, sumValue float64 - for _, req := range reqInfo { - sumAmount += req.InitAmount - sumValue += req.InitAmount * req.InitValue - } - scaleValues := sumAmount * basketFactor / sumValue - for i, req := range reqInfo { - mapping[i] = req.Name - initRefBasket.items[i].amount = uint64(req.InitAmount * basketFactor) - initRefBasket.items[i].value = uint64(req.InitAmount * req.InitValue * scaleValues) - } - - vt := &ValueTracker{ - clock: clock, - connected: make(map[enode.ID]*NodeValueTracker), - quit: make(chan chan struct{}), - db: db, - reqTypeCount: len(initRefBasket.items), - initRefBasket: initRefBasket, - transferRate: transferRate, - statsExpRate: statsExpRate, - offlineExpRate: offlineExpRate, - } - if vt.loadFromDb(mapping) != nil { - // previous state not saved or invalid, init with default values - vt.refBasket.basket = initRefBasket - vt.mappings = [][]string{mapping} - vt.currentMapping = 0 - } - vt.statsExpirer.SetRate(now, statsExpRate) - vt.refBasket.init(vt.reqTypeCount) - vt.periodicUpdate() - - go func() { - for { - select { - case <-clock.After(updatePeriod): - vt.lock.Lock() - vt.periodicUpdate() - vt.lock.Unlock() - case quit := <-vt.quit: - close(quit) - return - } - } - }() - return vt -} - -// StatsExpirer returns the statistics expirer so that other values can be expired -// with the same rate as the service value statistics. -func (vt *ValueTracker) StatsExpirer() *utils.Expirer { - return &vt.statsExpirer -} - -// StatsExpFactor returns the current expiration factor so that other values can be expired -// with the same rate as the service value statistics. -func (vt *ValueTracker) StatsExpFactor() utils.ExpirationFactor { - vt.statsExpLock.RLock() - defer vt.statsExpLock.RUnlock() - - return vt.statsExpFactor -} - -// loadFromDb loads the value tracker's state from the database and converts saved -// request basket index mapping if it does not match the specified index to name mapping. -func (vt *ValueTracker) loadFromDb(mapping []string) error { - enc, err := vt.db.Get(vtKey) - if err != nil { - return err - } - r := bytes.NewReader(enc) - var version uint - if err := rlp.Decode(r, &version); err != nil { - log.Error("Decoding value tracker state failed", "err", err) - return err - } - if version != vtVersion { - log.Error("Unknown ValueTracker version", "stored", version, "current", nvtVersion) - return fmt.Errorf("unknown ValueTracker version %d (current version is %d)", version, vtVersion) - } - var vte valueTrackerEncV1 - if err := rlp.Decode(r, &vte); err != nil { - log.Error("Decoding value tracker state failed", "err", err) - return err - } - logOffset := utils.Fixed64(vte.ExpOffset) - dt := time.Now().UnixNano() - int64(vte.SavedAt) - if dt > 0 { - logOffset += utils.Float64ToFixed64(float64(dt) * vt.offlineExpRate / math.Log(2)) - } - vt.statsExpirer.SetLogOffset(vt.clock.Now(), logOffset) - vt.rtStats = vte.RtStats - vt.mappings = vte.Mappings - vt.currentMapping = -1 -loop: - for i, m := range vt.mappings { - if len(m) != len(mapping) { - continue loop - } - for j, s := range mapping { - if m[j] != s { - continue loop - } - } - vt.currentMapping = i - break - } - if vt.currentMapping == -1 { - vt.currentMapping = len(vt.mappings) - vt.mappings = append(vt.mappings, mapping) - } - if int(vte.RefBasketMapping) == vt.currentMapping { - vt.refBasket.basket = vte.RefBasket - } else { - if vte.RefBasketMapping >= uint(len(vt.mappings)) { - log.Error("Unknown request basket mapping", "stored", vte.RefBasketMapping, "current", vt.currentMapping) - return fmt.Errorf("unknown request basket mapping %d (current version is %d)", vte.RefBasketMapping, vt.currentMapping) - } - vt.refBasket.basket = vte.RefBasket.convertMapping(vt.mappings[vte.RefBasketMapping], mapping, vt.initRefBasket) - } - return nil -} - -// saveToDb saves the value tracker's state to the database -func (vt *ValueTracker) saveToDb() { - vte := valueTrackerEncV1{ - Mappings: vt.mappings, - RefBasketMapping: uint(vt.currentMapping), - RefBasket: vt.refBasket.basket, - RtStats: vt.rtStats, - ExpOffset: uint64(vt.statsExpirer.LogOffset(vt.clock.Now())), - SavedAt: uint64(time.Now().UnixNano()), - } - enc1, err := rlp.EncodeToBytes(uint(vtVersion)) - if err != nil { - log.Error("Encoding value tracker state failed", "err", err) - return - } - enc2, err := rlp.EncodeToBytes(&vte) - if err != nil { - log.Error("Encoding value tracker state failed", "err", err) - return - } - if err := vt.db.Put(vtKey, append(enc1, enc2...)); err != nil { - log.Error("Saving value tracker state failed", "err", err) - } -} - -// Stop saves the value tracker's state and each loaded node's individual state and -// returns after shutting the internal goroutines down. -func (vt *ValueTracker) Stop() { - quit := make(chan struct{}) - vt.quit <- quit - <-quit - vt.lock.Lock() - vt.periodicUpdate() - for id, nv := range vt.connected { - vt.saveNode(id, nv) - } - vt.connected = nil - vt.saveToDb() - vt.lock.Unlock() -} - -// Register adds a server node to the value tracker -func (vt *ValueTracker) Register(id enode.ID) *NodeValueTracker { - vt.lock.Lock() - defer vt.lock.Unlock() - - if vt.connected == nil { - // ValueTracker has already been stopped - return nil - } - nv := vt.loadOrNewNode(id) - reqTypeCount := len(vt.refBasket.reqValues) - nv.reqCosts = make([]uint64, reqTypeCount) - nv.lastTransfer = vt.clock.Now() - nv.reqValues = vt.refBasket.reqValues - nv.basket.init(reqTypeCount) - - vt.connected[id] = nv - return nv -} - -// Unregister removes a server node from the value tracker -func (vt *ValueTracker) Unregister(id enode.ID) { - vt.lock.Lock() - defer vt.lock.Unlock() - - if nv := vt.connected[id]; nv != nil { - vt.saveNode(id, nv) - delete(vt.connected, id) - } -} - -// GetNode returns an individual server node's value tracker. If it did not exist before -// then a new node is created. -func (vt *ValueTracker) GetNode(id enode.ID) *NodeValueTracker { - vt.lock.Lock() - defer vt.lock.Unlock() - - return vt.loadOrNewNode(id) -} - -// loadOrNewNode returns an individual server node's value tracker. If it did not exist before -// then a new node is created. -func (vt *ValueTracker) loadOrNewNode(id enode.ID) *NodeValueTracker { - if nv, ok := vt.connected[id]; ok { - return nv - } - nv := &NodeValueTracker{vt: vt, lastTransfer: vt.clock.Now()} - enc, err := vt.db.Get(append(vtNodeKey, id[:]...)) - if err != nil { - return nv - } - r := bytes.NewReader(enc) - var version uint - if err := rlp.Decode(r, &version); err != nil { - log.Error("Failed to decode node value tracker", "id", id, "err", err) - return nv - } - if version != nvtVersion { - log.Error("Unknown NodeValueTracker version", "stored", version, "current", nvtVersion) - return nv - } - var nve nodeValueTrackerEncV1 - if err := rlp.Decode(r, &nve); err != nil { - log.Error("Failed to decode node value tracker", "id", id, "err", err) - return nv - } - nv.rtStats = nve.RtStats - nv.lastRtStats = nve.RtStats - if int(nve.ServerBasketMapping) == vt.currentMapping { - nv.basket.basket = nve.ServerBasket - } else { - if nve.ServerBasketMapping >= uint(len(vt.mappings)) { - log.Error("Unknown request basket mapping", "stored", nve.ServerBasketMapping, "current", vt.currentMapping) - return nv - } - nv.basket.basket = nve.ServerBasket.convertMapping(vt.mappings[nve.ServerBasketMapping], vt.mappings[vt.currentMapping], vt.initRefBasket) - } - return nv -} - -// saveNode saves a server node's value tracker to the database -func (vt *ValueTracker) saveNode(id enode.ID, nv *NodeValueTracker) { - recentRtStats := nv.rtStats - recentRtStats.SubStats(&nv.lastRtStats) - vt.rtStats.AddStats(&recentRtStats) - nv.lastRtStats = nv.rtStats - - nve := nodeValueTrackerEncV1{ - RtStats: nv.rtStats, - ServerBasketMapping: uint(vt.currentMapping), - ServerBasket: nv.basket.basket, - } - enc1, err := rlp.EncodeToBytes(uint(nvtVersion)) - if err != nil { - log.Error("Failed to encode service value information", "id", id, "err", err) - return - } - enc2, err := rlp.EncodeToBytes(&nve) - if err != nil { - log.Error("Failed to encode service value information", "id", id, "err", err) - return - } - if err := vt.db.Put(append(vtNodeKey, id[:]...), append(enc1, enc2...)); err != nil { - log.Error("Failed to save service value information", "id", id, "err", err) - } -} - -// RtStats returns the global response time distribution statistics -func (vt *ValueTracker) RtStats() ResponseTimeStats { - vt.lock.Lock() - defer vt.lock.Unlock() - - vt.periodicUpdate() - return vt.rtStats -} - -// periodicUpdate transfers individual node data to the global statistics, normalizes -// the reference basket and updates request values. The global state is also saved to -// the database with each update. -func (vt *ValueTracker) periodicUpdate() { - now := vt.clock.Now() - vt.statsExpLock.Lock() - vt.statsExpFactor = utils.ExpFactor(vt.statsExpirer.LogOffset(now)) - vt.statsExpLock.Unlock() - - for _, nv := range vt.connected { - basket, rtStats := nv.transferStats(now, vt.transferRate) - vt.refBasket.add(basket) - vt.rtStats.AddStats(&rtStats) - } - vt.refBasket.normalize() - vt.refBasket.updateReqValues() - for _, nv := range vt.connected { - nv.updateCosts(nv.reqCosts, vt.refBasket.reqValues, vt.refBasket.reqValueFactor(nv.reqCosts)) - } - vt.saveToDb() -} - -type RequestStatsItem struct { - Name string - ReqAmount, ReqValue float64 -} - -// RequestStats returns the current contents of the reference request basket, with -// request values meaning average per request rather than total. -func (vt *ValueTracker) RequestStats() []RequestStatsItem { - vt.statsExpLock.RLock() - expFactor := vt.statsExpFactor - vt.statsExpLock.RUnlock() - vt.lock.Lock() - defer vt.lock.Unlock() - - vt.periodicUpdate() - res := make([]RequestStatsItem, len(vt.refBasket.basket.items)) - for i, item := range vt.refBasket.basket.items { - res[i].Name = vt.mappings[vt.currentMapping][i] - res[i].ReqAmount = expFactor.Value(float64(item.amount)/basketFactor, vt.refBasket.basket.exp) - res[i].ReqValue = vt.refBasket.reqValues[i] - } - return res -} diff --git a/les/vflux/client/valuetracker_test.go b/les/vflux/client/valuetracker_test.go deleted file mode 100644 index 332d65ee51..0000000000 --- a/les/vflux/client/valuetracker_test.go +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "math" - "math/rand" - "strconv" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb/memorydb" - "github.com/ethereum/go-ethereum/p2p/enode" - - "github.com/ethereum/go-ethereum/les/utils" -) - -const ( - testReqTypes = 3 - testNodeCount = 5 - testReqCount = 10000 - testRounds = 10 -) - -func TestValueTracker(t *testing.T) { - t.Parallel() - - db := memorydb.New() - clock := &mclock.Simulated{} - requestList := make([]RequestInfo, testReqTypes) - relPrices := make([]float64, testReqTypes) - totalAmount := make([]uint64, testReqTypes) - for i := range requestList { - requestList[i] = RequestInfo{Name: "testreq" + strconv.Itoa(i), InitAmount: 1, InitValue: 1} - totalAmount[i] = 1 - relPrices[i] = rand.Float64() + 0.1 - } - nodes := make([]*NodeValueTracker, testNodeCount) - for round := 0; round < testRounds; round++ { - makeRequests := round < testRounds-2 - useExpiration := round == testRounds-1 - var expRate float64 - if useExpiration { - expRate = math.Log(2) / float64(time.Hour*100) - } - - vt := NewValueTracker(db, clock, requestList, time.Minute, 1/float64(time.Hour), expRate, expRate) - updateCosts := func(i int) { - costList := make([]uint64, testReqTypes) - baseCost := rand.Float64()*10000000 + 100000 - for j := range costList { - costList[j] = uint64(baseCost * relPrices[j]) - } - nodes[i].UpdateCosts(costList) - } - for i := range nodes { - nodes[i] = vt.Register(enode.ID{byte(i)}) - updateCosts(i) - } - if makeRequests { - for i := 0; i < testReqCount; i++ { - reqType := rand.Intn(testReqTypes) - reqAmount := rand.Intn(10) + 1 - node := rand.Intn(testNodeCount) - respTime := time.Duration((rand.Float64() + 1) * float64(time.Second) * float64(node+1) / testNodeCount) - totalAmount[reqType] += uint64(reqAmount) - nodes[node].Served([]ServedRequest{{uint32(reqType), uint32(reqAmount)}}, respTime) - clock.Run(time.Second) - } - } else { - clock.Run(time.Hour * 100) - if useExpiration { - for i, a := range totalAmount { - totalAmount[i] = a / 2 - } - } - } - vt.Stop() - var sumrp, sumrv float64 - for i, rp := range relPrices { - sumrp += rp - sumrv += vt.refBasket.reqValues[i] - } - for i, rp := range relPrices { - ratio := vt.refBasket.reqValues[i] * sumrp / (rp * sumrv) - if ratio < 0.99 || ratio > 1.01 { - t.Errorf("reqValues (%v) does not match relPrices (%v)", vt.refBasket.reqValues, relPrices) - break - } - } - exp := utils.ExpFactor(vt.StatsExpirer().LogOffset(clock.Now())) - basketAmount := make([]uint64, testReqTypes) - for i, bi := range vt.refBasket.basket.items { - basketAmount[i] += uint64(exp.Value(float64(bi.amount), vt.refBasket.basket.exp)) - } - if makeRequests { - // if we did not make requests in this round then we expect all amounts to be - // in the reference basket - for _, node := range nodes { - for i, bi := range node.basket.basket.items { - basketAmount[i] += uint64(exp.Value(float64(bi.amount), node.basket.basket.exp)) - } - } - } - for i, a := range basketAmount { - amount := a / basketFactor - if amount+10 < totalAmount[i] || amount > totalAmount[i]+10 { - t.Errorf("totalAmount[%d] mismatch in round %d (expected %d, got %d)", i, round, totalAmount[i], amount) - } - } - var sumValue float64 - for _, node := range nodes { - s := node.RtStats() - sumValue += s.Value(maxResponseWeights, exp) - } - s := vt.RtStats() - mainValue := s.Value(maxResponseWeights, exp) - if sumValue < mainValue-10 || sumValue > mainValue+10 { - t.Errorf("Main rtStats value does not match sum of node rtStats values in round %d (main %v, sum %v)", round, mainValue, sumValue) - } - } -} diff --git a/les/vflux/client/wrsiterator.go b/les/vflux/client/wrsiterator.go deleted file mode 100644 index 1b37cba6e5..0000000000 --- a/les/vflux/client/wrsiterator.go +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "sync" - - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -// WrsIterator returns nodes from the specified selectable set with a weighted random -// selection. Selection weights are provided by a callback function. -type WrsIterator struct { - lock sync.Mutex - cond *sync.Cond - - ns *nodestate.NodeStateMachine - wrs *utils.WeightedRandomSelect - nextNode *enode.Node - closed bool -} - -// NewWrsIterator creates a new WrsIterator. Nodes are selectable if they have all the required -// and none of the disabled flags set. When a node is selected the selectedFlag is set which also -// disables further selectability until it is removed or times out. -func NewWrsIterator(ns *nodestate.NodeStateMachine, requireFlags, disableFlags nodestate.Flags, weightField nodestate.Field) *WrsIterator { - wfn := func(i interface{}) uint64 { - n := ns.GetNode(i.(enode.ID)) - if n == nil { - return 0 - } - wt, _ := ns.GetField(n, weightField).(uint64) - return wt - } - - w := &WrsIterator{ - ns: ns, - wrs: utils.NewWeightedRandomSelect(wfn), - } - w.cond = sync.NewCond(&w.lock) - - ns.SubscribeField(weightField, func(n *enode.Node, state nodestate.Flags, oldValue, newValue interface{}) { - if state.HasAll(requireFlags) && state.HasNone(disableFlags) { - w.lock.Lock() - w.wrs.Update(n.ID()) - w.lock.Unlock() - w.cond.Signal() - } - }) - - ns.SubscribeState(requireFlags.Or(disableFlags), func(n *enode.Node, oldState, newState nodestate.Flags) { - oldMatch := oldState.HasAll(requireFlags) && oldState.HasNone(disableFlags) - newMatch := newState.HasAll(requireFlags) && newState.HasNone(disableFlags) - if newMatch == oldMatch { - return - } - - w.lock.Lock() - if newMatch { - w.wrs.Update(n.ID()) - } else { - w.wrs.Remove(n.ID()) - } - w.lock.Unlock() - w.cond.Signal() - }) - return w -} - -// Next selects the next node. -func (w *WrsIterator) Next() bool { - w.nextNode = w.chooseNode() - return w.nextNode != nil -} - -func (w *WrsIterator) chooseNode() *enode.Node { - w.lock.Lock() - defer w.lock.Unlock() - - for { - for !w.closed && w.wrs.IsEmpty() { - w.cond.Wait() - } - if w.closed { - return nil - } - // Choose the next node at random. Even though w.wrs is guaranteed - // non-empty here, Choose might return nil if all items have weight - // zero. - if c := w.wrs.Choose(); c != nil { - id := c.(enode.ID) - w.wrs.Remove(id) - return w.ns.GetNode(id) - } - } -} - -// Close ends the iterator. -func (w *WrsIterator) Close() { - w.lock.Lock() - w.closed = true - w.lock.Unlock() - w.cond.Signal() -} - -// Node returns the current node. -func (w *WrsIterator) Node() *enode.Node { - w.lock.Lock() - defer w.lock.Unlock() - return w.nextNode -} diff --git a/les/vflux/client/wrsiterator_test.go b/les/vflux/client/wrsiterator_test.go deleted file mode 100644 index f6eb2d8813..0000000000 --- a/les/vflux/client/wrsiterator_test.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package client - -import ( - "reflect" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -var ( - testSetup = &nodestate.Setup{} - sfTest1 = testSetup.NewFlag("test1") - sfTest2 = testSetup.NewFlag("test2") - sfTest3 = testSetup.NewFlag("test3") - sfTest4 = testSetup.NewFlag("test4") - sfiTestWeight = testSetup.NewField("nodeWeight", reflect.TypeOf(uint64(0))) -) - -const iterTestNodeCount = 6 - -func TestWrsIterator(t *testing.T) { - t.Parallel() - - ns := nodestate.NewNodeStateMachine(nil, nil, &mclock.Simulated{}, testSetup) - w := NewWrsIterator(ns, sfTest2, sfTest3.Or(sfTest4), sfiTestWeight) - ns.Start() - for i := 1; i <= iterTestNodeCount; i++ { - ns.SetState(testNode(i), sfTest1, nodestate.Flags{}, 0) - ns.SetField(testNode(i), sfiTestWeight, uint64(1)) - } - next := func() int { - ch := make(chan struct{}) - go func() { - w.Next() - close(ch) - }() - select { - case <-ch: - case <-time.After(time.Second * 5): - t.Fatalf("Iterator.Next() timeout") - } - node := w.Node() - ns.SetState(node, sfTest4, nodestate.Flags{}, 0) - return testNodeIndex(node.ID()) - } - set := make(map[int]bool) - expset := func() { - for len(set) > 0 { - n := next() - if !set[n] { - t.Errorf("Item returned by iterator not in the expected set (got %d)", n) - } - delete(set, n) - } - } - - ns.SetState(testNode(1), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(2), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(3), sfTest2, nodestate.Flags{}, 0) - set[1] = true - set[2] = true - set[3] = true - expset() - ns.SetState(testNode(4), sfTest2, nodestate.Flags{}, 0) - ns.SetState(testNode(5), sfTest2.Or(sfTest3), nodestate.Flags{}, 0) - ns.SetState(testNode(6), sfTest2, nodestate.Flags{}, 0) - set[4] = true - set[6] = true - expset() - ns.SetField(testNode(2), sfiTestWeight, uint64(0)) - ns.SetState(testNode(1), nodestate.Flags{}, sfTest4, 0) - ns.SetState(testNode(2), nodestate.Flags{}, sfTest4, 0) - ns.SetState(testNode(3), nodestate.Flags{}, sfTest4, 0) - set[1] = true - set[3] = true - expset() - ns.SetField(testNode(2), sfiTestWeight, uint64(1)) - ns.SetState(testNode(2), nodestate.Flags{}, sfTest2, 0) - ns.SetState(testNode(1), nodestate.Flags{}, sfTest4, 0) - ns.SetState(testNode(2), sfTest2, sfTest4, 0) - ns.SetState(testNode(3), nodestate.Flags{}, sfTest4, 0) - set[1] = true - set[2] = true - set[3] = true - expset() - ns.Stop() -} diff --git a/les/vflux/requests.go b/les/vflux/requests.go deleted file mode 100644 index 5abae2f537..0000000000 --- a/les/vflux/requests.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package vflux - -import ( - "errors" - "math" - "math/big" - - "github.com/ethereum/go-ethereum/rlp" -) - -var ErrNoReply = errors.New("no reply for given request") - -const ( - MaxRequestLength = 16 // max number of individual requests in a batch - CapacityQueryName = "cq" - CapacityQueryMaxLen = 16 -) - -type ( - // Request describes a single vflux request inside a batch. Service and request - // type are identified by strings, parameters are RLP encoded. - Request struct { - Service, Name string - Params []byte - } - // Requests are a batch of vflux requests - Requests []Request - - // Replies are the replies to a batch of requests - Replies [][]byte - - // CapacityQueryReq is the encoding format of the capacity query - CapacityQueryReq struct { - Bias uint64 // seconds - AddTokens []IntOrInf - } - // CapacityQueryReply is the encoding format of the response to the capacity query - CapacityQueryReply []uint64 -) - -// Add encodes and adds a new request to the batch -func (r *Requests) Add(service, name string, val interface{}) (int, error) { - enc, err := rlp.EncodeToBytes(val) - if err != nil { - return -1, err - } - *r = append(*r, Request{ - Service: service, - Name: name, - Params: enc, - }) - return len(*r) - 1, nil -} - -// Get decodes the reply to the i-th request in the batch -func (r Replies) Get(i int, val interface{}) error { - if i < 0 || i >= len(r) { - return ErrNoReply - } - return rlp.DecodeBytes(r[i], val) -} - -const ( - IntNonNegative = iota - IntNegative - IntPlusInf - IntMinusInf -) - -// IntOrInf is the encoding format for arbitrary length signed integers that can also -// hold the values of +Inf or -Inf -type IntOrInf struct { - Type uint8 - Value big.Int -} - -// BigInt returns the value as a big.Int or panics if the value is infinity -func (i *IntOrInf) BigInt() *big.Int { - switch i.Type { - case IntNonNegative: - return new(big.Int).Set(&i.Value) - case IntNegative: - return new(big.Int).Neg(&i.Value) - case IntPlusInf: - panic(nil) // caller should check Inf() before trying to convert to big.Int - case IntMinusInf: - panic(nil) - } - return &big.Int{} // invalid type decodes to 0 value -} - -// Inf returns 1 if the value is +Inf, -1 if it is -Inf, 0 otherwise -func (i *IntOrInf) Inf() int { - switch i.Type { - case IntPlusInf: - return 1 - case IntMinusInf: - return -1 - } - return 0 // invalid type decodes to 0 value -} - -// Int64 limits the value between MinInt64 and MaxInt64 (even if it is +-Inf) and returns an int64 type -func (i *IntOrInf) Int64() int64 { - switch i.Type { - case IntNonNegative: - if i.Value.IsInt64() { - return i.Value.Int64() - } else { - return math.MaxInt64 - } - case IntNegative: - if i.Value.IsInt64() { - return -i.Value.Int64() - } else { - return math.MinInt64 - } - case IntPlusInf: - return math.MaxInt64 - case IntMinusInf: - return math.MinInt64 - } - return 0 // invalid type decodes to 0 value -} - -// SetBigInt sets the value to the given big.Int -func (i *IntOrInf) SetBigInt(v *big.Int) { - if v.Sign() >= 0 { - i.Type = IntNonNegative - i.Value.Set(v) - } else { - i.Type = IntNegative - i.Value.Neg(v) - } -} - -// SetInt64 sets the value to the given int64. Note that MaxInt64 translates to +Inf -// while MinInt64 translates to -Inf. -func (i *IntOrInf) SetInt64(v int64) { - if v >= 0 { - if v == math.MaxInt64 { - i.Type = IntPlusInf - } else { - i.Type = IntNonNegative - i.Value.SetInt64(v) - } - } else { - if v == math.MinInt64 { - i.Type = IntMinusInf - } else { - i.Type = IntNegative - i.Value.SetInt64(-v) - } - } -} - -// SetInf sets the value to +Inf or -Inf -func (i *IntOrInf) SetInf(sign int) { - if sign == 1 { - i.Type = IntPlusInf - } else { - i.Type = IntMinusInf - } -} diff --git a/les/vflux/server/balance.go b/les/vflux/server/balance.go deleted file mode 100644 index b09f7bb501..0000000000 --- a/les/vflux/server/balance.go +++ /dev/null @@ -1,693 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "errors" - "math" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -var errBalanceOverflow = errors.New("balance overflow") - -const maxBalance = math.MaxInt64 // maximum allowed balance value - -const ( - balanceCallbackUpdate = iota // called when priority drops below the last minimum estimate - balanceCallbackZero // called when priority drops to zero (positive balance exhausted) - balanceCallbackCount // total number of balance callbacks -) - -// PriceFactors determine the pricing policy (may apply either to positive or -// negative balances which may have different factors). -// - TimeFactor is cost unit per nanosecond of connection time -// - CapacityFactor is cost unit per nanosecond of connection time per 1000000 capacity -// - RequestFactor is cost unit per request "realCost" unit -type PriceFactors struct { - TimeFactor, CapacityFactor, RequestFactor float64 -} - -// connectionPrice returns the price of connection per nanosecond at the given capacity -// and the estimated average request cost. -func (p PriceFactors) connectionPrice(cap uint64, avgReqCost float64) float64 { - return p.TimeFactor + float64(cap)*p.CapacityFactor/1000000 + p.RequestFactor*avgReqCost -} - -type ( - // nodePriority interface provides current and estimated future priorities on demand - nodePriority interface { - // priority should return the current priority of the node (higher is better) - priority(cap uint64) int64 - // estimatePriority should return a lower estimate for the minimum of the node priority - // value starting from the current moment until the given time. If the priority goes - // under the returned estimate before the specified moment then it is the caller's - // responsibility to signal with updateFlag. - estimatePriority(cap uint64, addBalance int64, future, bias time.Duration, update bool) int64 - } - - // ReadOnlyBalance provides read-only operations on the node balance - ReadOnlyBalance interface { - nodePriority - GetBalance() (uint64, uint64) - GetRawBalance() (utils.ExpiredValue, utils.ExpiredValue) - GetPriceFactors() (posFactor, negFactor PriceFactors) - } - - // ConnectedBalance provides operations permitted on connected nodes (non-read-only - // operations are not permitted inside a BalanceOperation) - ConnectedBalance interface { - ReadOnlyBalance - SetPriceFactors(posFactor, negFactor PriceFactors) - RequestServed(cost uint64) uint64 - } - - // AtomicBalanceOperator provides operations permitted in an atomic BalanceOperation - AtomicBalanceOperator interface { - ReadOnlyBalance - AddBalance(amount int64) (uint64, uint64, error) - SetBalance(pos, neg uint64) error - } -) - -// nodeBalance keeps track of the positive and negative balances of a connected -// client and calculates actual and projected future priority values. -// Implements nodePriority interface. -type nodeBalance struct { - bt *balanceTracker - lock sync.RWMutex - node *enode.Node - connAddress string - active, hasPriority, setFlags bool - capacity uint64 - balance balance - posFactor, negFactor PriceFactors - sumReqCost uint64 - lastUpdate, nextUpdate, initTime mclock.AbsTime - updateEvent mclock.Timer - // since only a limited and fixed number of callbacks are needed, they are - // stored in a fixed size array ordered by priority threshold. - callbacks [balanceCallbackCount]balanceCallback - // callbackIndex maps balanceCallback constants to callbacks array indexes (-1 if not active) - callbackIndex [balanceCallbackCount]int - callbackCount int // number of active callbacks -} - -// balance represents a pair of positive and negative balances -type balance struct { - pos, neg utils.ExpiredValue - posExp, negExp utils.ValueExpirer -} - -// posValue returns the value of positive balance at a given timestamp. -func (b balance) posValue(now mclock.AbsTime) uint64 { - return b.pos.Value(b.posExp.LogOffset(now)) -} - -// negValue returns the value of negative balance at a given timestamp. -func (b balance) negValue(now mclock.AbsTime) uint64 { - return b.neg.Value(b.negExp.LogOffset(now)) -} - -// addValue adds the value of a given amount to the balance. The original value and -// updated value will also be returned if the addition is successful. -// Returns the error if the given value is too large and the value overflows. -func (b *balance) addValue(now mclock.AbsTime, amount int64, pos bool, force bool) (uint64, uint64, int64, error) { - var ( - val utils.ExpiredValue - offset utils.Fixed64 - ) - if pos { - offset, val = b.posExp.LogOffset(now), b.pos - } else { - offset, val = b.negExp.LogOffset(now), b.neg - } - old := val.Value(offset) - if amount > 0 && (amount > maxBalance || old > maxBalance-uint64(amount)) { - if !force { - return old, 0, 0, errBalanceOverflow - } - val = utils.ExpiredValue{} - amount = maxBalance - } - net := val.Add(amount, offset) - if pos { - b.pos = val - } else { - b.neg = val - } - return old, val.Value(offset), net, nil -} - -// setValue sets the internal balance amount to the given values. Returns the -// error if the given value is too large. -func (b *balance) setValue(now mclock.AbsTime, pos uint64, neg uint64) error { - if pos > maxBalance || neg > maxBalance { - return errBalanceOverflow - } - var pb, nb utils.ExpiredValue - pb.Add(int64(pos), b.posExp.LogOffset(now)) - nb.Add(int64(neg), b.negExp.LogOffset(now)) - b.pos = pb - b.neg = nb - return nil -} - -// balanceCallback represents a single callback that is activated when client priority -// reaches the given threshold -type balanceCallback struct { - id int - threshold int64 - callback func() -} - -// GetBalance returns the current positive and negative balance. -func (n *nodeBalance) GetBalance() (uint64, uint64) { - n.lock.Lock() - defer n.lock.Unlock() - - now := n.bt.clock.Now() - n.updateBalance(now) - return n.balance.posValue(now), n.balance.negValue(now) -} - -// GetRawBalance returns the current positive and negative balance -// but in the raw(expired value) format. -func (n *nodeBalance) GetRawBalance() (utils.ExpiredValue, utils.ExpiredValue) { - n.lock.Lock() - defer n.lock.Unlock() - - now := n.bt.clock.Now() - n.updateBalance(now) - return n.balance.pos, n.balance.neg -} - -// AddBalance adds the given amount to the positive balance and returns the balance -// before and after the operation. Exceeding maxBalance results in an error (balance is -// unchanged) while adding a negative amount higher than the current balance results in -// zero balance. -// Note: this function should run inside a NodeStateMachine operation -func (n *nodeBalance) AddBalance(amount int64) (uint64, uint64, error) { - var ( - err error - old, new uint64 - now = n.bt.clock.Now() - callbacks []func() - setPriority bool - ) - // Operation with holding the lock - n.bt.updateTotalBalance(n, func() bool { - n.updateBalance(now) - if old, new, _, err = n.balance.addValue(now, amount, true, false); err != nil { - return false - } - callbacks, setPriority = n.checkCallbacks(now), n.checkPriorityStatus() - n.storeBalance(true, false) - return true - }) - if err != nil { - return old, old, err - } - // Operation without holding the lock - for _, cb := range callbacks { - cb() - } - if n.setFlags { - if setPriority { - n.bt.ns.SetStateSub(n.node, n.bt.setup.priorityFlag, nodestate.Flags{}, 0) - } - // Note: priority flag is automatically removed by the zero priority callback if necessary - n.signalPriorityUpdate() - } - return old, new, nil -} - -// SetBalance sets the positive and negative balance to the given values -// Note: this function should run inside a NodeStateMachine operation -func (n *nodeBalance) SetBalance(pos, neg uint64) error { - var ( - now = n.bt.clock.Now() - callbacks []func() - setPriority bool - ) - // Operation with holding the lock - n.bt.updateTotalBalance(n, func() bool { - n.updateBalance(now) - if err := n.balance.setValue(now, pos, neg); err != nil { - return false - } - callbacks, setPriority = n.checkCallbacks(now), n.checkPriorityStatus() - n.storeBalance(true, true) - return true - }) - // Operation without holding the lock - for _, cb := range callbacks { - cb() - } - if n.setFlags { - if setPriority { - n.bt.ns.SetStateSub(n.node, n.bt.setup.priorityFlag, nodestate.Flags{}, 0) - } - // Note: priority flag is automatically removed by the zero priority callback if necessary - n.signalPriorityUpdate() - } - return nil -} - -// RequestServed should be called after serving a request for the given peer -func (n *nodeBalance) RequestServed(cost uint64) (newBalance uint64) { - n.lock.Lock() - - var ( - check bool - fcost = float64(cost) - now = n.bt.clock.Now() - ) - n.updateBalance(now) - if !n.balance.pos.IsZero() { - posCost := -int64(fcost * n.posFactor.RequestFactor) - if posCost == 0 { - fcost = 0 - newBalance = n.balance.posValue(now) - } else { - var net int64 - _, newBalance, net, _ = n.balance.addValue(now, posCost, true, false) - if posCost == net { - fcost = 0 - } else { - fcost *= 1 - float64(net)/float64(posCost) - } - check = true - } - } - if fcost > 0 && n.negFactor.RequestFactor != 0 { - n.balance.addValue(now, int64(fcost*n.negFactor.RequestFactor), false, false) - check = true - } - n.sumReqCost += cost - - var callbacks []func() - if check { - callbacks = n.checkCallbacks(now) - } - n.lock.Unlock() - - if callbacks != nil { - n.bt.ns.Operation(func() { - for _, cb := range callbacks { - cb() - } - }) - } - return -} - -// priority returns the actual priority based on the current balance -func (n *nodeBalance) priority(capacity uint64) int64 { - n.lock.Lock() - defer n.lock.Unlock() - - now := n.bt.clock.Now() - n.updateBalance(now) - return n.balanceToPriority(now, n.balance, capacity) -} - -// EstMinPriority gives a lower estimate for the priority at a given time in the future. -// An average request cost per time is assumed that is twice the average cost per time -// in the current session. -// If update is true then a priority callback is added that turns updateFlag on and off -// in case the priority goes below the estimated minimum. -func (n *nodeBalance) estimatePriority(capacity uint64, addBalance int64, future, bias time.Duration, update bool) int64 { - n.lock.Lock() - defer n.lock.Unlock() - - now := n.bt.clock.Now() - n.updateBalance(now) - - b := n.balance // copy the balance - if addBalance != 0 { - b.addValue(now, addBalance, true, true) - } - if future > 0 { - var avgReqCost float64 - dt := time.Duration(n.lastUpdate - n.initTime) - if dt > time.Second { - avgReqCost = float64(n.sumReqCost) * 2 / float64(dt) - } - b = n.reducedBalance(b, now, future, capacity, avgReqCost) - } - if bias > 0 { - b = n.reducedBalance(b, now.Add(future), bias, capacity, 0) - } - pri := n.balanceToPriority(now, b, capacity) - // Ensure that biased estimates are always lower than actual priorities, even if - // the bias is very small. - // This ensures that two nodes will not ping-pong update signals forever if both of - // them have zero estimated priority drop in the projected future. - current := n.balanceToPriority(now, n.balance, capacity) - if pri >= current { - pri = current - 1 - } - if update { - n.addCallback(balanceCallbackUpdate, pri, n.signalPriorityUpdate) - } - return pri -} - -// SetPriceFactors sets the price factors. TimeFactor is the price of a nanosecond of -// connection while RequestFactor is the price of a request cost unit. -func (n *nodeBalance) SetPriceFactors(posFactor, negFactor PriceFactors) { - n.lock.Lock() - now := n.bt.clock.Now() - n.updateBalance(now) - n.posFactor, n.negFactor = posFactor, negFactor - callbacks := n.checkCallbacks(now) - n.lock.Unlock() - if callbacks != nil { - n.bt.ns.Operation(func() { - for _, cb := range callbacks { - cb() - } - }) - } -} - -// GetPriceFactors returns the price factors -func (n *nodeBalance) GetPriceFactors() (posFactor, negFactor PriceFactors) { - n.lock.Lock() - defer n.lock.Unlock() - - return n.posFactor, n.negFactor -} - -// activate starts time/capacity cost deduction. -func (n *nodeBalance) activate() { - n.bt.updateTotalBalance(n, func() bool { - if n.active { - return false - } - n.active = true - n.lastUpdate = n.bt.clock.Now() - return true - }) -} - -// deactivate stops time/capacity cost deduction and saves the balances in the database -func (n *nodeBalance) deactivate() { - n.bt.updateTotalBalance(n, func() bool { - if !n.active { - return false - } - n.updateBalance(n.bt.clock.Now()) - if n.updateEvent != nil { - n.updateEvent.Stop() - n.updateEvent = nil - } - n.storeBalance(true, true) - n.active = false - return true - }) -} - -// updateBalance updates balance based on the time factor -func (n *nodeBalance) updateBalance(now mclock.AbsTime) { - if n.active && now > n.lastUpdate { - n.balance = n.reducedBalance(n.balance, n.lastUpdate, time.Duration(now-n.lastUpdate), n.capacity, 0) - n.lastUpdate = now - } -} - -// storeBalance stores the positive and/or negative balance of the node in the database -func (n *nodeBalance) storeBalance(pos, neg bool) { - if pos { - n.bt.storeBalance(n.node.ID().Bytes(), false, n.balance.pos) - } - if neg { - n.bt.storeBalance([]byte(n.connAddress), true, n.balance.neg) - } -} - -// addCallback sets up a one-time callback to be called when priority reaches -// the threshold. If it has already reached the threshold the callback is called -// immediately. -// Note: should be called while n.lock is held -// Note 2: the callback function runs inside a NodeStateMachine operation -func (n *nodeBalance) addCallback(id int, threshold int64, callback func()) { - n.removeCallback(id) - idx := 0 - for idx < n.callbackCount && threshold > n.callbacks[idx].threshold { - idx++ - } - for i := n.callbackCount - 1; i >= idx; i-- { - n.callbackIndex[n.callbacks[i].id]++ - n.callbacks[i+1] = n.callbacks[i] - } - n.callbackCount++ - n.callbackIndex[id] = idx - n.callbacks[idx] = balanceCallback{id, threshold, callback} - now := n.bt.clock.Now() - n.updateBalance(now) - n.scheduleCheck(now) -} - -// removeCallback removes the given callback and returns true if it was active -// Note: should be called while n.lock is held -func (n *nodeBalance) removeCallback(id int) bool { - idx := n.callbackIndex[id] - if idx == -1 { - return false - } - n.callbackIndex[id] = -1 - for i := idx; i < n.callbackCount-1; i++ { - n.callbackIndex[n.callbacks[i+1].id]-- - n.callbacks[i] = n.callbacks[i+1] - } - n.callbackCount-- - return true -} - -// checkCallbacks checks whether the threshold of any of the active callbacks -// have been reached and returns triggered callbacks. -// Note: checkCallbacks assumes that the balance has been recently updated. -func (n *nodeBalance) checkCallbacks(now mclock.AbsTime) (callbacks []func()) { - if n.callbackCount == 0 || n.capacity == 0 { - return - } - pri := n.balanceToPriority(now, n.balance, n.capacity) - for n.callbackCount != 0 && n.callbacks[n.callbackCount-1].threshold >= pri { - n.callbackCount-- - n.callbackIndex[n.callbacks[n.callbackCount].id] = -1 - callbacks = append(callbacks, n.callbacks[n.callbackCount].callback) - } - n.scheduleCheck(now) - return -} - -// scheduleCheck sets up or updates a scheduled event to ensure that it will be called -// again just after the next threshold has been reached. -func (n *nodeBalance) scheduleCheck(now mclock.AbsTime) { - if n.callbackCount != 0 { - d, ok := n.timeUntil(n.callbacks[n.callbackCount-1].threshold) - if !ok { - n.nextUpdate = 0 - n.updateAfter(0) - return - } - if n.nextUpdate == 0 || n.nextUpdate > now.Add(d) { - if d > time.Second { - // Note: if the scheduled update is not in the very near future then we - // schedule the update a bit earlier. This way we do need to update a few - // extra times but don't need to reschedule every time a processed request - // brings the expected firing time a little bit closer. - d = ((d - time.Second) * 7 / 8) + time.Second - } - n.nextUpdate = now.Add(d) - n.updateAfter(d) - } - } else { - n.nextUpdate = 0 - n.updateAfter(0) - } -} - -// updateAfter schedules a balance update and callback check in the future -func (n *nodeBalance) updateAfter(dt time.Duration) { - if n.updateEvent == nil || n.updateEvent.Stop() { - if dt == 0 { - n.updateEvent = nil - } else { - n.updateEvent = n.bt.clock.AfterFunc(dt, func() { - var callbacks []func() - n.lock.Lock() - if n.callbackCount != 0 { - now := n.bt.clock.Now() - n.updateBalance(now) - callbacks = n.checkCallbacks(now) - } - n.lock.Unlock() - if callbacks != nil { - n.bt.ns.Operation(func() { - for _, cb := range callbacks { - cb() - } - }) - } - }) - } - } -} - -// balanceExhausted should be called when the positive balance is exhausted (priority goes to zero/negative) -// Note: this function should run inside a NodeStateMachine operation -func (n *nodeBalance) balanceExhausted() { - n.lock.Lock() - n.storeBalance(true, false) - n.hasPriority = false - n.lock.Unlock() - if n.setFlags { - n.bt.ns.SetStateSub(n.node, nodestate.Flags{}, n.bt.setup.priorityFlag, 0) - } -} - -// checkPriorityStatus checks whether the node has gained priority status and sets the priority -// callback and flag if necessary. It assumes that the balance has been recently updated. -// Note that the priority flag has to be set by the caller after the mutex has been released. -func (n *nodeBalance) checkPriorityStatus() bool { - if !n.hasPriority && !n.balance.pos.IsZero() { - n.hasPriority = true - n.addCallback(balanceCallbackZero, 0, func() { n.balanceExhausted() }) - return true - } - return false -} - -// signalPriorityUpdate signals that the priority fell below the previous minimum estimate -// Note: this function should run inside a NodeStateMachine operation -func (n *nodeBalance) signalPriorityUpdate() { - n.bt.ns.SetStateSub(n.node, n.bt.setup.updateFlag, nodestate.Flags{}, 0) - n.bt.ns.SetStateSub(n.node, nodestate.Flags{}, n.bt.setup.updateFlag, 0) -} - -// setCapacity updates the capacity value used for priority calculation -// Note: capacity should never be zero -// Note 2: this function should run inside a NodeStateMachine operation -func (n *nodeBalance) setCapacity(capacity uint64) { - n.lock.Lock() - now := n.bt.clock.Now() - n.updateBalance(now) - n.capacity = capacity - callbacks := n.checkCallbacks(now) - n.lock.Unlock() - for _, cb := range callbacks { - cb() - } -} - -// balanceToPriority converts a balance to a priority value. Lower priority means -// first to disconnect. Positive balance translates to positive priority. If positive -// balance is zero then negative balance translates to a negative priority. -func (n *nodeBalance) balanceToPriority(now mclock.AbsTime, b balance, capacity uint64) int64 { - pos := b.posValue(now) - if pos > 0 { - return int64(pos / capacity) - } - return -int64(b.negValue(now)) -} - -// priorityToBalance converts a target priority to a requested balance value. -// If the priority is negative, then minimal negative balance is returned; -// otherwise the minimal positive balance is returned. -func (n *nodeBalance) priorityToBalance(priority int64, capacity uint64) (uint64, uint64) { - if priority > 0 { - return uint64(priority) * n.capacity, 0 - } - return 0, uint64(-priority) -} - -// reducedBalance estimates the reduced balance at a given time in the future based -// on the given balance, the time factor and an estimated average request cost per time ratio -func (n *nodeBalance) reducedBalance(b balance, start mclock.AbsTime, dt time.Duration, capacity uint64, avgReqCost float64) balance { - // since the costs are applied continuously during the dt time period we calculate - // the expiration offset at the middle of the period - var ( - at = start.Add(dt / 2) - dtf = float64(dt) - ) - if !b.pos.IsZero() { - factor := n.posFactor.connectionPrice(capacity, avgReqCost) - diff := -int64(dtf * factor) - _, _, net, _ := b.addValue(at, diff, true, false) - if net == diff { - dtf = 0 - } else { - dtf += float64(net) / factor - } - } - if dtf > 0 { - factor := n.negFactor.connectionPrice(capacity, avgReqCost) - b.addValue(at, int64(dtf*factor), false, false) - } - return b -} - -// timeUntil calculates the remaining time needed to reach a given priority level -// assuming that no requests are processed until then. If the given level is never -// reached then (0, false) is returned. If it has already been reached then (0, true) -// is returned. -// Note: the function assumes that the balance has been recently updated and -// calculates the time starting from the last update. -func (n *nodeBalance) timeUntil(priority int64) (time.Duration, bool) { - var ( - now = n.bt.clock.Now() - pos = n.balance.posValue(now) - targetPos, targetNeg = n.priorityToBalance(priority, n.capacity) - diffTime float64 - ) - if pos > 0 { - timePrice := n.posFactor.connectionPrice(n.capacity, 0) - if timePrice < 1e-100 { - return 0, false - } - if targetPos > 0 { - if targetPos > pos { - return 0, true - } - diffTime = float64(pos-targetPos) / timePrice - return time.Duration(diffTime), true - } else { - diffTime = float64(pos) / timePrice - } - } else { - if targetPos > 0 { - return 0, true - } - } - neg := n.balance.negValue(now) - if targetNeg > neg { - timePrice := n.negFactor.connectionPrice(n.capacity, 0) - if timePrice < 1e-100 { - return 0, false - } - diffTime += float64(targetNeg-neg) / timePrice - } - return time.Duration(diffTime), true -} diff --git a/les/vflux/server/balance_test.go b/les/vflux/server/balance_test.go deleted file mode 100644 index e1ff7bf4e9..0000000000 --- a/les/vflux/server/balance_test.go +++ /dev/null @@ -1,459 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "math" - "math/rand" - "reflect" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/ethdb/memorydb" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -type zeroExpirer struct{} - -func (z zeroExpirer) SetRate(now mclock.AbsTime, rate float64) {} -func (z zeroExpirer) SetLogOffset(now mclock.AbsTime, logOffset utils.Fixed64) {} -func (z zeroExpirer) LogOffset(now mclock.AbsTime) utils.Fixed64 { return 0 } - -type balanceTestClient struct{} - -func (client balanceTestClient) FreeClientId() string { return "" } - -type balanceTestSetup struct { - clock *mclock.Simulated - db ethdb.KeyValueStore - ns *nodestate.NodeStateMachine - setup *serverSetup - bt *balanceTracker -} - -func newBalanceTestSetup(db ethdb.KeyValueStore, posExp, negExp utils.ValueExpirer) *balanceTestSetup { - // Initialize and customize the setup for the balance testing - clock := &mclock.Simulated{} - setup := newServerSetup() - setup.clientField = setup.setup.NewField("balanceTestClient", reflect.TypeOf(balanceTestClient{})) - - ns := nodestate.NewNodeStateMachine(nil, nil, clock, setup.setup) - if posExp == nil { - posExp = zeroExpirer{} - } - if negExp == nil { - negExp = zeroExpirer{} - } - if db == nil { - db = memorydb.New() - } - bt := newBalanceTracker(ns, setup, db, clock, posExp, negExp) - ns.Start() - return &balanceTestSetup{ - clock: clock, - db: db, - ns: ns, - setup: setup, - bt: bt, - } -} - -func (b *balanceTestSetup) newNode(capacity uint64) *nodeBalance { - node := enode.SignNull(&enr.Record{}, enode.ID{}) - b.ns.SetField(node, b.setup.clientField, balanceTestClient{}) - if capacity != 0 { - b.ns.SetField(node, b.setup.capacityField, capacity) - } - n, _ := b.ns.GetField(node, b.setup.balanceField).(*nodeBalance) - return n -} - -func (b *balanceTestSetup) setBalance(node *nodeBalance, pos, neg uint64) (err error) { - b.bt.BalanceOperation(node.node.ID(), node.connAddress, func(balance AtomicBalanceOperator) { - err = balance.SetBalance(pos, neg) - }) - return -} - -func (b *balanceTestSetup) addBalance(node *nodeBalance, add int64) (old, new uint64, err error) { - b.bt.BalanceOperation(node.node.ID(), node.connAddress, func(balance AtomicBalanceOperator) { - old, new, err = balance.AddBalance(add) - }) - return -} - -func (b *balanceTestSetup) stop() { - b.bt.stop() - b.ns.Stop() -} - -func TestAddBalance(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - - node := b.newNode(1000) - var inputs = []struct { - delta int64 - expect [2]uint64 - total uint64 - expectErr bool - }{ - {100, [2]uint64{0, 100}, 100, false}, - {-100, [2]uint64{100, 0}, 0, false}, - {-100, [2]uint64{0, 0}, 0, false}, - {1, [2]uint64{0, 1}, 1, false}, - {maxBalance, [2]uint64{0, 0}, 0, true}, - } - for _, i := range inputs { - old, new, err := b.addBalance(node, i.delta) - if i.expectErr { - if err == nil { - t.Fatalf("Expect get error but nil") - } - continue - } else if err != nil { - t.Fatalf("Expect get no error but %v", err) - } - if old != i.expect[0] || new != i.expect[1] { - t.Fatalf("Positive balance mismatch, got %v -> %v", old, new) - } - if b.bt.TotalTokenAmount() != i.total { - t.Fatalf("Total positive balance mismatch, want %v, got %v", i.total, b.bt.TotalTokenAmount()) - } - } -} - -func TestSetBalance(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - node := b.newNode(1000) - - var inputs = []struct { - pos, neg uint64 - }{ - {1000, 0}, - {0, 1000}, - {1000, 1000}, - } - for _, i := range inputs { - b.setBalance(node, i.pos, i.neg) - pos, neg := node.GetBalance() - if pos != i.pos { - t.Fatalf("Positive balance mismatch, want %v, got %v", i.pos, pos) - } - if neg != i.neg { - t.Fatalf("Negative balance mismatch, want %v, got %v", i.neg, neg) - } - } -} - -func TestBalanceTimeCost(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - node := b.newNode(1000) - - node.SetPriceFactors(PriceFactors{1, 0, 1}, PriceFactors{1, 0, 1}) - b.setBalance(node, uint64(time.Minute), 0) // 1 minute time allowance - - var inputs = []struct { - runTime time.Duration - expPos uint64 - expNeg uint64 - }{ - {time.Second, uint64(time.Second * 59), 0}, - {0, uint64(time.Second * 59), 0}, - {time.Second * 59, 0, 0}, - {time.Second, 0, uint64(time.Second)}, - } - for _, i := range inputs { - b.clock.Run(i.runTime) - if pos, _ := node.GetBalance(); pos != i.expPos { - t.Fatalf("Positive balance mismatch, want %v, got %v", i.expPos, pos) - } - if _, neg := node.GetBalance(); neg != i.expNeg { - t.Fatalf("Negative balance mismatch, want %v, got %v", i.expNeg, neg) - } - } - - b.setBalance(node, uint64(time.Minute), 0) // Refill 1 minute time allowance - for _, i := range inputs { - b.clock.Run(i.runTime) - if pos, _ := node.GetBalance(); pos != i.expPos { - t.Fatalf("Positive balance mismatch, want %v, got %v", i.expPos, pos) - } - if _, neg := node.GetBalance(); neg != i.expNeg { - t.Fatalf("Negative balance mismatch, want %v, got %v", i.expNeg, neg) - } - } -} - -func TestBalanceReqCost(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - node := b.newNode(1000) - node.SetPriceFactors(PriceFactors{1, 0, 1}, PriceFactors{1, 0, 1}) - - b.setBalance(node, uint64(time.Minute), 0) // 1 minute time serving time allowance - var inputs = []struct { - reqCost uint64 - expPos uint64 - expNeg uint64 - }{ - {uint64(time.Second), uint64(time.Second * 59), 0}, - {0, uint64(time.Second * 59), 0}, - {uint64(time.Second * 59), 0, 0}, - {uint64(time.Second), 0, uint64(time.Second)}, - } - for _, i := range inputs { - node.RequestServed(i.reqCost) - if pos, _ := node.GetBalance(); pos != i.expPos { - t.Fatalf("Positive balance mismatch, want %v, got %v", i.expPos, pos) - } - if _, neg := node.GetBalance(); neg != i.expNeg { - t.Fatalf("Negative balance mismatch, want %v, got %v", i.expNeg, neg) - } - } -} - -func TestBalanceToPriority(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - node := b.newNode(1000) - node.SetPriceFactors(PriceFactors{1, 0, 1}, PriceFactors{1, 0, 1}) - - var inputs = []struct { - pos uint64 - neg uint64 - priority int64 - }{ - {1000, 0, 1}, - {2000, 0, 2}, // Higher balance, higher priority value - {0, 0, 0}, - {0, 1000, -1000}, - } - for _, i := range inputs { - b.setBalance(node, i.pos, i.neg) - priority := node.priority(1000) - if priority != i.priority { - t.Fatalf("priority mismatch, want %v, got %v", i.priority, priority) - } - } -} - -func TestEstimatedPriority(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - node := b.newNode(1000000000) - node.SetPriceFactors(PriceFactors{1, 0, 1}, PriceFactors{1, 0, 1}) - b.setBalance(node, uint64(time.Minute), 0) - var inputs = []struct { - runTime time.Duration // time cost - futureTime time.Duration // diff of future time - reqCost uint64 // single request cost - priority int64 // expected estimated priority - }{ - {time.Second, time.Second, 0, 58}, - {0, time.Second, 0, 58}, - - // 2 seconds time cost, 1 second estimated time cost, 10^9 request cost, - // 10^9 estimated request cost per second. - {time.Second, time.Second, 1000000000, 55}, - - // 3 seconds time cost, 3 second estimated time cost, 10^9*2 request cost, - // 4*10^9 estimated request cost. - {time.Second, 3 * time.Second, 1000000000, 48}, - - // All positive balance is used up - {time.Second * 55, 0, 0, -1}, - - // 1 minute estimated time cost, 4/58 * 10^9 estimated request cost per sec. - {0, time.Minute, 0, -int64(time.Minute) - int64(time.Second)*120/29}, - } - for _, i := range inputs { - b.clock.Run(i.runTime) - node.RequestServed(i.reqCost) - priority := node.estimatePriority(1000000000, 0, i.futureTime, 0, false) - if priority != i.priority { - t.Fatalf("Estimated priority mismatch, want %v, got %v", i.priority, priority) - } - } -} - -func TestPositiveBalanceCounting(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - - var nodes []*nodeBalance - for i := 0; i < 100; i += 1 { - node := b.newNode(1000000) - node.SetPriceFactors(PriceFactors{1, 0, 1}, PriceFactors{1, 0, 1}) - nodes = append(nodes, node) - } - - // Allocate service token - var sum uint64 - for i := 0; i < 100; i += 1 { - amount := int64(rand.Intn(100) + 100) - b.addBalance(nodes[i], amount) - sum += uint64(amount) - } - if b.bt.TotalTokenAmount() != sum { - t.Fatalf("Invalid token amount") - } - - // Change client status - for i := 0; i < 100; i += 1 { - if rand.Intn(2) == 0 { - b.ns.SetField(nodes[i].node, b.setup.capacityField, uint64(1)) - } - } - if b.bt.TotalTokenAmount() != sum { - t.Fatalf("Invalid token amount") - } - for i := 0; i < 100; i += 1 { - if rand.Intn(2) == 0 { - b.ns.SetField(nodes[i].node, b.setup.capacityField, uint64(1)) - } - } - if b.bt.TotalTokenAmount() != sum { - t.Fatalf("Invalid token amount") - } -} - -func TestCallbackChecking(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - node := b.newNode(1000000) - node.SetPriceFactors(PriceFactors{1, 0, 1}, PriceFactors{1, 0, 1}) - - var inputs = []struct { - priority int64 - expDiff time.Duration - }{ - {500, time.Millisecond * 500}, - {0, time.Second}, - {-int64(time.Second), 2 * time.Second}, - } - b.setBalance(node, uint64(time.Second), 0) - for _, i := range inputs { - diff, _ := node.timeUntil(i.priority) - if diff != i.expDiff { - t.Fatalf("Time difference mismatch, want %v, got %v", i.expDiff, diff) - } - } -} - -func TestCallback(t *testing.T) { - t.Parallel() - - b := newBalanceTestSetup(nil, nil, nil) - defer b.stop() - node := b.newNode(1000) - node.SetPriceFactors(PriceFactors{1, 0, 1}, PriceFactors{1, 0, 1}) - - callCh := make(chan struct{}, 1) - b.setBalance(node, uint64(time.Minute), 0) - node.addCallback(balanceCallbackZero, 0, func() { callCh <- struct{}{} }) - - b.clock.Run(time.Minute) - select { - case <-callCh: - case <-time.NewTimer(time.Second).C: - t.Fatalf("Callback hasn't been called yet") - } - - b.setBalance(node, uint64(time.Minute), 0) - node.addCallback(balanceCallbackZero, 0, func() { callCh <- struct{}{} }) - node.removeCallback(balanceCallbackZero) - - b.clock.Run(time.Minute) - select { - case <-callCh: - t.Fatalf("Callback shouldn't be called") - case <-time.NewTimer(time.Millisecond * 100).C: - } -} - -func TestBalancePersistence(t *testing.T) { - t.Parallel() - - posExp := &utils.Expirer{} - negExp := &utils.Expirer{} - posExp.SetRate(0, math.Log(2)/float64(time.Hour*2)) // halves every two hours - negExp.SetRate(0, math.Log(2)/float64(time.Hour)) // halves every hour - setup := newBalanceTestSetup(nil, posExp, negExp) - - exp := func(balance *nodeBalance, expPos, expNeg uint64) { - pos, neg := balance.GetBalance() - if pos != expPos { - t.Fatalf("Positive balance incorrect, want %v, got %v", expPos, pos) - } - if neg != expNeg { - t.Fatalf("Positive balance incorrect, want %v, got %v", expPos, pos) - } - } - expTotal := func(expTotal uint64) { - total := setup.bt.TotalTokenAmount() - if total != expTotal { - t.Fatalf("Total token amount incorrect, want %v, got %v", expTotal, total) - } - } - - expTotal(0) - balance := setup.newNode(0) - expTotal(0) - setup.setBalance(balance, 16000000000, 16000000000) - exp(balance, 16000000000, 16000000000) - expTotal(16000000000) - - setup.clock.Run(time.Hour * 2) - exp(balance, 8000000000, 4000000000) - expTotal(8000000000) - setup.stop() - - // Test the functionalities after restart - setup = newBalanceTestSetup(setup.db, posExp, negExp) - expTotal(8000000000) - balance = setup.newNode(0) - exp(balance, 8000000000, 4000000000) - expTotal(8000000000) - setup.clock.Run(time.Hour * 2) - exp(balance, 4000000000, 1000000000) - expTotal(4000000000) - setup.stop() -} diff --git a/les/vflux/server/balance_tracker.go b/les/vflux/server/balance_tracker.go deleted file mode 100644 index 9695e79638..0000000000 --- a/les/vflux/server/balance_tracker.go +++ /dev/null @@ -1,300 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -const ( - posThreshold = 1000000 // minimum positive balance that is persisted in the database - negThreshold = 1000000 // minimum negative balance that is persisted in the database - persistExpirationRefresh = time.Minute * 5 // refresh period of the token expiration persistence -) - -// balanceTracker tracks positive and negative balances for connected nodes. -// After clientField is set externally, a nodeBalance is created and previous -// balance values are loaded from the database. Both balances are exponentially expired -// values. Costs are deducted from the positive balance if present, otherwise added to -// the negative balance. If the capacity is non-zero then a time cost is applied -// continuously while individual request costs are applied immediately. -// The two balances are translated into a single priority value that also depends -// on the actual capacity. -type balanceTracker struct { - setup *serverSetup - clock mclock.Clock - lock sync.Mutex - ns *nodestate.NodeStateMachine - ndb *nodeDB - posExp, negExp utils.ValueExpirer - - posExpTC, negExpTC uint64 - defaultPosFactors, defaultNegFactors PriceFactors - - active, inactive utils.ExpiredValue - balanceTimer *utils.UpdateTimer - quit chan struct{} -} - -// newBalanceTracker creates a new balanceTracker -func newBalanceTracker(ns *nodestate.NodeStateMachine, setup *serverSetup, db ethdb.KeyValueStore, clock mclock.Clock, posExp, negExp utils.ValueExpirer) *balanceTracker { - ndb := newNodeDB(db, clock) - bt := &balanceTracker{ - ns: ns, - setup: setup, - ndb: ndb, - clock: clock, - posExp: posExp, - negExp: negExp, - balanceTimer: utils.NewUpdateTimer(clock, time.Second*10), - quit: make(chan struct{}), - } - posOffset, negOffset := bt.ndb.getExpiration() - posExp.SetLogOffset(clock.Now(), posOffset) - negExp.SetLogOffset(clock.Now(), negOffset) - - // Load all persisted balance entries of priority nodes, - // calculate the total number of issued service tokens. - bt.ndb.forEachBalance(false, func(id enode.ID, balance utils.ExpiredValue) bool { - bt.inactive.AddExp(balance) - return true - }) - - ns.SubscribeField(bt.setup.capacityField, func(node *enode.Node, state nodestate.Flags, oldValue, newValue interface{}) { - n, _ := ns.GetField(node, bt.setup.balanceField).(*nodeBalance) - if n == nil { - return - } - - ov, _ := oldValue.(uint64) - nv, _ := newValue.(uint64) - if ov == 0 && nv != 0 { - n.activate() - } - if nv != 0 { - n.setCapacity(nv) - } - if ov != 0 && nv == 0 { - n.deactivate() - } - }) - ns.SubscribeField(bt.setup.clientField, func(node *enode.Node, state nodestate.Flags, oldValue, newValue interface{}) { - type peer interface { - FreeClientId() string - } - if newValue != nil { - n := bt.newNodeBalance(node, newValue.(peer).FreeClientId(), true) - bt.lock.Lock() - n.SetPriceFactors(bt.defaultPosFactors, bt.defaultNegFactors) - bt.lock.Unlock() - ns.SetFieldSub(node, bt.setup.balanceField, n) - } else { - ns.SetStateSub(node, nodestate.Flags{}, bt.setup.priorityFlag, 0) - if b, _ := ns.GetField(node, bt.setup.balanceField).(*nodeBalance); b != nil { - b.deactivate() - } - ns.SetFieldSub(node, bt.setup.balanceField, nil) - } - }) - - // The positive and negative balances of clients are stored in database - // and both of these decay exponentially over time. Delete them if the - // value is small enough. - bt.ndb.evictCallBack = bt.canDropBalance - - go func() { - for { - select { - case <-clock.After(persistExpirationRefresh): - now := clock.Now() - bt.ndb.setExpiration(posExp.LogOffset(now), negExp.LogOffset(now)) - case <-bt.quit: - return - } - } - }() - return bt -} - -// Stop saves expiration offset and unsaved node balances and shuts balanceTracker down -func (bt *balanceTracker) stop() { - now := bt.clock.Now() - bt.ndb.setExpiration(bt.posExp.LogOffset(now), bt.negExp.LogOffset(now)) - close(bt.quit) - bt.ns.ForEach(nodestate.Flags{}, nodestate.Flags{}, func(node *enode.Node, state nodestate.Flags) { - if n, ok := bt.ns.GetField(node, bt.setup.balanceField).(*nodeBalance); ok { - n.lock.Lock() - n.storeBalance(true, true) - n.lock.Unlock() - bt.ns.SetField(node, bt.setup.balanceField, nil) - } - }) - bt.ndb.close() -} - -// TotalTokenAmount returns the current total amount of service tokens in existence -func (bt *balanceTracker) TotalTokenAmount() uint64 { - bt.lock.Lock() - defer bt.lock.Unlock() - - bt.balanceTimer.Update(func(_ time.Duration) bool { - bt.active = utils.ExpiredValue{} - bt.ns.ForEach(nodestate.Flags{}, nodestate.Flags{}, func(node *enode.Node, state nodestate.Flags) { - if n, ok := bt.ns.GetField(node, bt.setup.balanceField).(*nodeBalance); ok && n.active { - pos, _ := n.GetRawBalance() - bt.active.AddExp(pos) - } - }) - return true - }) - total := bt.active - total.AddExp(bt.inactive) - return total.Value(bt.posExp.LogOffset(bt.clock.Now())) -} - -// GetPosBalanceIDs lists node IDs with an associated positive balance -func (bt *balanceTracker) GetPosBalanceIDs(start, stop enode.ID, maxCount int) (result []enode.ID) { - return bt.ndb.getPosBalanceIDs(start, stop, maxCount) -} - -// SetDefaultFactors sets the default price factors applied to subsequently connected clients -func (bt *balanceTracker) SetDefaultFactors(posFactors, negFactors PriceFactors) { - bt.lock.Lock() - bt.defaultPosFactors = posFactors - bt.defaultNegFactors = negFactors - bt.lock.Unlock() -} - -// SetExpirationTCs sets positive and negative token expiration time constants. -// Specified in seconds, 0 means infinite (no expiration). -func (bt *balanceTracker) SetExpirationTCs(pos, neg uint64) { - bt.lock.Lock() - defer bt.lock.Unlock() - - bt.posExpTC, bt.negExpTC = pos, neg - now := bt.clock.Now() - if pos > 0 { - bt.posExp.SetRate(now, 1/float64(pos*uint64(time.Second))) - } else { - bt.posExp.SetRate(now, 0) - } - if neg > 0 { - bt.negExp.SetRate(now, 1/float64(neg*uint64(time.Second))) - } else { - bt.negExp.SetRate(now, 0) - } -} - -// GetExpirationTCs returns the current positive and negative token expiration -// time constants -func (bt *balanceTracker) GetExpirationTCs() (pos, neg uint64) { - bt.lock.Lock() - defer bt.lock.Unlock() - - return bt.posExpTC, bt.negExpTC -} - -// BalanceOperation allows atomic operations on the balance of a node regardless of whether -// it is currently connected or not -func (bt *balanceTracker) BalanceOperation(id enode.ID, connAddress string, cb func(AtomicBalanceOperator)) { - bt.ns.Operation(func() { - var nb *nodeBalance - if node := bt.ns.GetNode(id); node != nil { - nb, _ = bt.ns.GetField(node, bt.setup.balanceField).(*nodeBalance) - } - if nb == nil { - node := enode.SignNull(&enr.Record{}, id) - nb = bt.newNodeBalance(node, connAddress, false) - } - cb(nb) - }) -} - -// newNodeBalance loads balances from the database and creates a nodeBalance instance -// for the given node. It also sets the priorityFlag and adds balanceCallbackZero if -// the node has a positive balance. -// Note: this function should run inside a NodeStateMachine operation -func (bt *balanceTracker) newNodeBalance(node *enode.Node, connAddress string, setFlags bool) *nodeBalance { - pb := bt.ndb.getOrNewBalance(node.ID().Bytes(), false) - nb := bt.ndb.getOrNewBalance([]byte(connAddress), true) - n := &nodeBalance{ - bt: bt, - node: node, - setFlags: setFlags, - connAddress: connAddress, - balance: balance{pos: pb, neg: nb, posExp: bt.posExp, negExp: bt.negExp}, - initTime: bt.clock.Now(), - lastUpdate: bt.clock.Now(), - } - for i := range n.callbackIndex { - n.callbackIndex[i] = -1 - } - if setFlags && n.checkPriorityStatus() { - n.bt.ns.SetStateSub(n.node, n.bt.setup.priorityFlag, nodestate.Flags{}, 0) - } - return n -} - -// storeBalance stores either a positive or a negative balance in the database -func (bt *balanceTracker) storeBalance(id []byte, neg bool, value utils.ExpiredValue) { - if bt.canDropBalance(bt.clock.Now(), neg, value) { - bt.ndb.delBalance(id, neg) // balance is small enough, drop it directly. - } else { - bt.ndb.setBalance(id, neg, value) - } -} - -// canDropBalance tells whether a positive or negative balance is below the threshold -// and therefore can be dropped from the database -func (bt *balanceTracker) canDropBalance(now mclock.AbsTime, neg bool, b utils.ExpiredValue) bool { - if neg { - return b.Value(bt.negExp.LogOffset(now)) <= negThreshold - } - return b.Value(bt.posExp.LogOffset(now)) <= posThreshold -} - -// updateTotalBalance adjusts the total balance after executing given callback. -func (bt *balanceTracker) updateTotalBalance(n *nodeBalance, callback func() bool) { - bt.lock.Lock() - defer bt.lock.Unlock() - - n.lock.Lock() - defer n.lock.Unlock() - - original, active := n.balance.pos, n.active - if !callback() { - return - } - if active { - bt.active.SubExp(original) - } else { - bt.inactive.SubExp(original) - } - if n.active { - bt.active.AddExp(n.balance.pos) - } else { - bt.inactive.AddExp(n.balance.pos) - } -} diff --git a/les/vflux/server/clientdb.go b/les/vflux/server/clientdb.go deleted file mode 100644 index a39cbec36a..0000000000 --- a/les/vflux/server/clientdb.go +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "bytes" - "encoding/binary" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/lru" - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/rlp" -) - -const ( - balanceCacheLimit = 8192 // the maximum number of cached items in service token balance queue - - // nodeDBVersion is the version identifier of the node data in db - // - // Changelog: - // Version 0 => 1 - // * Replace `lastTotal` with `meta` in positive balance: version 0=>1 - // - // Version 1 => 2 - // * Positive Balance and negative balance is changed: - // * Cumulative time is replaced with expiration - nodeDBVersion = 2 - - // dbCleanupCycle is the cycle of db for useless data cleanup - dbCleanupCycle = time.Hour -) - -var ( - positiveBalancePrefix = []byte("pb:") // dbVersion(uint16 big endian) + positiveBalancePrefix + id -> balance - negativeBalancePrefix = []byte("nb:") // dbVersion(uint16 big endian) + negativeBalancePrefix + ip -> balance - expirationKey = []byte("expiration:") // dbVersion(uint16 big endian) + expirationKey -> posExp, negExp -) - -type nodeDB struct { - db ethdb.KeyValueStore - cache *lru.Cache[string, utils.ExpiredValue] - auxbuf []byte // 37-byte auxiliary buffer for key encoding - verbuf [2]byte // 2-byte auxiliary buffer for db version - evictCallBack func(mclock.AbsTime, bool, utils.ExpiredValue) bool // Callback to determine whether the balance can be evicted. - clock mclock.Clock - closeCh chan struct{} - cleanupHook func() // Test hook used for testing -} - -func newNodeDB(db ethdb.KeyValueStore, clock mclock.Clock) *nodeDB { - ndb := &nodeDB{ - db: db, - cache: lru.NewCache[string, utils.ExpiredValue](balanceCacheLimit), - auxbuf: make([]byte, 37), - clock: clock, - closeCh: make(chan struct{}), - } - binary.BigEndian.PutUint16(ndb.verbuf[:], uint16(nodeDBVersion)) - go ndb.expirer() - return ndb -} - -func (db *nodeDB) close() { - close(db.closeCh) -} - -func (db *nodeDB) getPrefix(neg bool) []byte { - prefix := positiveBalancePrefix - if neg { - prefix = negativeBalancePrefix - } - return append(db.verbuf[:], prefix...) -} - -func (db *nodeDB) key(id []byte, neg bool) []byte { - prefix := positiveBalancePrefix - if neg { - prefix = negativeBalancePrefix - } - if len(prefix)+len(db.verbuf)+len(id) > len(db.auxbuf) { - db.auxbuf = append(db.auxbuf, make([]byte, len(prefix)+len(db.verbuf)+len(id)-len(db.auxbuf))...) - } - copy(db.auxbuf[:len(db.verbuf)], db.verbuf[:]) - copy(db.auxbuf[len(db.verbuf):len(db.verbuf)+len(prefix)], prefix) - copy(db.auxbuf[len(prefix)+len(db.verbuf):len(prefix)+len(db.verbuf)+len(id)], id) - return db.auxbuf[:len(prefix)+len(db.verbuf)+len(id)] -} - -func (db *nodeDB) getExpiration() (utils.Fixed64, utils.Fixed64) { - blob, err := db.db.Get(append(db.verbuf[:], expirationKey...)) - if err != nil || len(blob) != 16 { - return 0, 0 - } - return utils.Fixed64(binary.BigEndian.Uint64(blob[:8])), utils.Fixed64(binary.BigEndian.Uint64(blob[8:16])) -} - -func (db *nodeDB) setExpiration(pos, neg utils.Fixed64) { - var buff [16]byte - binary.BigEndian.PutUint64(buff[:8], uint64(pos)) - binary.BigEndian.PutUint64(buff[8:16], uint64(neg)) - db.db.Put(append(db.verbuf[:], expirationKey...), buff[:16]) -} - -func (db *nodeDB) getOrNewBalance(id []byte, neg bool) utils.ExpiredValue { - key := db.key(id, neg) - item, exist := db.cache.Get(string(key)) - if exist { - return item - } - - var b utils.ExpiredValue - enc, err := db.db.Get(key) - if err != nil || len(enc) == 0 { - return b - } - if err := rlp.DecodeBytes(enc, &b); err != nil { - log.Crit("Failed to decode positive balance", "err", err) - } - db.cache.Add(string(key), b) - return b -} - -func (db *nodeDB) setBalance(id []byte, neg bool, b utils.ExpiredValue) { - key := db.key(id, neg) - enc, err := rlp.EncodeToBytes(&(b)) - if err != nil { - log.Crit("Failed to encode positive balance", "err", err) - } - db.db.Put(key, enc) - db.cache.Add(string(key), b) -} - -func (db *nodeDB) delBalance(id []byte, neg bool) { - key := db.key(id, neg) - db.db.Delete(key) - db.cache.Remove(string(key)) -} - -// getPosBalanceIDs returns a lexicographically ordered list of IDs of accounts -// with a positive balance -func (db *nodeDB) getPosBalanceIDs(start, stop enode.ID, maxCount int) (result []enode.ID) { - if maxCount <= 0 { - return - } - prefix := db.getPrefix(false) - keylen := len(prefix) + len(enode.ID{}) - - it := db.db.NewIterator(prefix, start.Bytes()) - defer it.Release() - - for it.Next() { - var id enode.ID - if len(it.Key()) != keylen { - return - } - copy(id[:], it.Key()[keylen-len(id):]) - if bytes.Compare(id.Bytes(), stop.Bytes()) >= 0 { - return - } - result = append(result, id) - if len(result) == maxCount { - return - } - } - return -} - -// forEachBalance iterates all balances and passes values to callback. -func (db *nodeDB) forEachBalance(neg bool, callback func(id enode.ID, balance utils.ExpiredValue) bool) { - prefix := db.getPrefix(neg) - keylen := len(prefix) + len(enode.ID{}) - - it := db.db.NewIterator(prefix, nil) - defer it.Release() - - for it.Next() { - var id enode.ID - if len(it.Key()) != keylen { - return - } - copy(id[:], it.Key()[keylen-len(id):]) - - var b utils.ExpiredValue - if err := rlp.DecodeBytes(it.Value(), &b); err != nil { - continue - } - if !callback(id, b) { - return - } - } -} - -func (db *nodeDB) expirer() { - for { - select { - case <-db.clock.After(dbCleanupCycle): - db.expireNodes() - case <-db.closeCh: - return - } - } -} - -// expireNodes iterates the whole node db and checks whether the -// token balances can be deleted. -func (db *nodeDB) expireNodes() { - var ( - visited int - deleted int - start = time.Now() - ) - for _, neg := range []bool{false, true} { - iter := db.db.NewIterator(db.getPrefix(neg), nil) - for iter.Next() { - visited++ - var balance utils.ExpiredValue - if err := rlp.DecodeBytes(iter.Value(), &balance); err != nil { - log.Crit("Failed to decode negative balance", "err", err) - } - if db.evictCallBack != nil && db.evictCallBack(db.clock.Now(), neg, balance) { - deleted++ - db.db.Delete(iter.Key()) - } - } - } - // Invoke testing hook if it's not nil. - if db.cleanupHook != nil { - db.cleanupHook() - } - log.Debug("Expire nodes", "visited", visited, "deleted", deleted, "elapsed", common.PrettyDuration(time.Since(start))) -} diff --git a/les/vflux/server/clientdb_test.go b/les/vflux/server/clientdb_test.go deleted file mode 100644 index caa4384e19..0000000000 --- a/les/vflux/server/clientdb_test.go +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "reflect" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/p2p/enode" -) - -func expval(v uint64) utils.ExpiredValue { - return utils.ExpiredValue{Base: v} -} - -func TestNodeDB(t *testing.T) { - t.Parallel() - - ndb := newNodeDB(rawdb.NewMemoryDatabase(), mclock.System{}) - defer ndb.close() - - var cases = []struct { - id enode.ID - ip string - balance utils.ExpiredValue - positive bool - }{ - {enode.ID{0x00, 0x01, 0x02}, "", expval(100), true}, - {enode.ID{0x00, 0x01, 0x02}, "", expval(200), true}, - {enode.ID{}, "127.0.0.1", expval(100), false}, - {enode.ID{}, "127.0.0.1", expval(200), false}, - } - for _, c := range cases { - if c.positive { - ndb.setBalance(c.id.Bytes(), false, c.balance) - if pb := ndb.getOrNewBalance(c.id.Bytes(), false); !reflect.DeepEqual(pb, c.balance) { - t.Fatalf("Positive balance mismatch, want %v, got %v", c.balance, pb) - } - } else { - ndb.setBalance([]byte(c.ip), true, c.balance) - if nb := ndb.getOrNewBalance([]byte(c.ip), true); !reflect.DeepEqual(nb, c.balance) { - t.Fatalf("Negative balance mismatch, want %v, got %v", c.balance, nb) - } - } - } - for _, c := range cases { - if c.positive { - ndb.delBalance(c.id.Bytes(), false) - if pb := ndb.getOrNewBalance(c.id.Bytes(), false); !reflect.DeepEqual(pb, utils.ExpiredValue{}) { - t.Fatalf("Positive balance mismatch, want %v, got %v", utils.ExpiredValue{}, pb) - } - } else { - ndb.delBalance([]byte(c.ip), true) - if nb := ndb.getOrNewBalance([]byte(c.ip), true); !reflect.DeepEqual(nb, utils.ExpiredValue{}) { - t.Fatalf("Negative balance mismatch, want %v, got %v", utils.ExpiredValue{}, nb) - } - } - } - posExp, negExp := utils.Fixed64(1000), utils.Fixed64(2000) - ndb.setExpiration(posExp, negExp) - if pos, neg := ndb.getExpiration(); pos != posExp || neg != negExp { - t.Fatalf("Expiration mismatch, want %v / %v, got %v / %v", posExp, negExp, pos, neg) - } - /* curBalance := currencyBalance{typ: "ETH", amount: 10000} - ndb.setCurrencyBalance(enode.ID{0x01, 0x02}, curBalance) - if got := ndb.getCurrencyBalance(enode.ID{0x01, 0x02}); !reflect.DeepEqual(got, curBalance) { - t.Fatalf("Currency balance mismatch, want %v, got %v", curBalance, got) - }*/ -} - -func TestNodeDBExpiration(t *testing.T) { - t.Parallel() - - var ( - iterated int - done = make(chan struct{}, 1) - ) - callback := func(now mclock.AbsTime, neg bool, b utils.ExpiredValue) bool { - iterated += 1 - return true - } - clock := &mclock.Simulated{} - ndb := newNodeDB(rawdb.NewMemoryDatabase(), clock) - defer ndb.close() - ndb.evictCallBack = callback - ndb.cleanupHook = func() { done <- struct{}{} } - - var cases = []struct { - id []byte - neg bool - balance utils.ExpiredValue - }{ - {[]byte{0x01, 0x02}, false, expval(1)}, - {[]byte{0x03, 0x04}, false, expval(1)}, - {[]byte{0x05, 0x06}, false, expval(1)}, - {[]byte{0x07, 0x08}, false, expval(1)}, - - {[]byte("127.0.0.1"), true, expval(1)}, - {[]byte("127.0.0.2"), true, expval(1)}, - {[]byte("127.0.0.3"), true, expval(1)}, - {[]byte("127.0.0.4"), true, expval(1)}, - } - for _, c := range cases { - ndb.setBalance(c.id, c.neg, c.balance) - } - clock.WaitForTimers(1) - clock.Run(time.Hour + time.Minute) - select { - case <-done: - case <-time.NewTimer(time.Second).C: - t.Fatalf("timeout") - } - if iterated != 8 { - t.Fatalf("Failed to evict useless balances, want %v, got %d", 8, iterated) - } - - for _, c := range cases { - ndb.setBalance(c.id, c.neg, c.balance) - } - clock.WaitForTimers(1) - clock.Run(time.Hour + time.Minute) - select { - case <-done: - case <-time.NewTimer(time.Second).C: - t.Fatalf("timeout") - } - if iterated != 16 { - t.Fatalf("Failed to evict useless balances, want %v, got %d", 16, iterated) - } -} diff --git a/les/vflux/server/clientpool.go b/les/vflux/server/clientpool.go deleted file mode 100644 index a525f86368..0000000000 --- a/les/vflux/server/clientpool.go +++ /dev/null @@ -1,328 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "errors" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/les/vflux" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/nodestate" - "github.com/ethereum/go-ethereum/rlp" -) - -var ( - ErrNotConnected = errors.New("client not connected") - ErrNoPriority = errors.New("priority too low to raise capacity") - ErrCantFindMaximum = errors.New("unable to find maximum allowed capacity") -) - -// ClientPool implements a client database that assigns a priority to each client -// based on a positive and negative balance. Positive balance is externally assigned -// to prioritized clients and is decreased with connection time and processed -// requests (unless the price factors are zero). If the positive balance is zero -// then negative balance is accumulated. -// -// Balance tracking and priority calculation for connected clients is done by -// balanceTracker. PriorityQueue ensures that clients with the lowest positive or -// highest negative balance get evicted when the total capacity allowance is full -// and new clients with a better balance want to connect. -// -// Already connected nodes receive a small bias in their favor in order to avoid -// accepting and instantly kicking out clients. In theory, we try to ensure that -// each client can have several minutes of connection time. -// -// Balances of disconnected clients are stored in nodeDB including positive balance -// and negative balance. Both positive balance and negative balance will decrease -// exponentially. If the balance is low enough, then the record will be dropped. -type ClientPool struct { - *priorityPool - *balanceTracker - - setup *serverSetup - clock mclock.Clock - ns *nodestate.NodeStateMachine - synced func() bool - - lock sync.RWMutex - connectedBias time.Duration - - minCap uint64 // the minimal capacity value allowed for any client - capReqNode *enode.Node // node that is requesting capacity change; only used inside NSM operation -} - -// clientPeer represents a peer in the client pool. None of the callbacks should block. -type clientPeer interface { - Node() *enode.Node - FreeClientId() string // unique id for non-priority clients (typically a prefix of the network address) - InactiveAllowance() time.Duration // disconnection timeout for inactive non-priority peers - UpdateCapacity(newCap uint64, requested bool) // signals a capacity update (requested is true if it is a result of a SetCapacity call on the given peer - Disconnect() // initiates disconnection (Unregister should always be called) -} - -// NewClientPool creates a new client pool -func NewClientPool(balanceDb ethdb.KeyValueStore, minCap uint64, connectedBias time.Duration, clock mclock.Clock, synced func() bool) *ClientPool { - setup := newServerSetup() - ns := nodestate.NewNodeStateMachine(nil, nil, clock, setup.setup) - cp := &ClientPool{ - priorityPool: newPriorityPool(ns, setup, clock, minCap, connectedBias, 4, 100), - balanceTracker: newBalanceTracker(ns, setup, balanceDb, clock, &utils.Expirer{}, &utils.Expirer{}), - setup: setup, - ns: ns, - clock: clock, - minCap: minCap, - connectedBias: connectedBias, - synced: synced, - } - - ns.SubscribeState(nodestate.MergeFlags(setup.activeFlag, setup.inactiveFlag, setup.priorityFlag), func(node *enode.Node, oldState, newState nodestate.Flags) { - if newState.Equals(setup.inactiveFlag) { - // set timeout for non-priority inactive client - var timeout time.Duration - if c, ok := ns.GetField(node, setup.clientField).(clientPeer); ok { - timeout = c.InactiveAllowance() - } - ns.AddTimeout(node, setup.inactiveFlag, timeout) - } - if oldState.Equals(setup.inactiveFlag) && newState.Equals(setup.inactiveFlag.Or(setup.priorityFlag)) { - ns.SetStateSub(node, setup.inactiveFlag, nodestate.Flags{}, 0) // priority gained; remove timeout - } - if newState.Equals(setup.activeFlag) { - // active with no priority; limit capacity to minCap - cap, _ := ns.GetField(node, setup.capacityField).(uint64) - if cap > minCap { - cp.requestCapacity(node, minCap, minCap, 0) - } - } - if newState.Equals(nodestate.Flags{}) { - if c, ok := ns.GetField(node, setup.clientField).(clientPeer); ok { - c.Disconnect() - } - } - }) - - ns.SubscribeField(setup.capacityField, func(node *enode.Node, state nodestate.Flags, oldValue, newValue interface{}) { - if c, ok := ns.GetField(node, setup.clientField).(clientPeer); ok { - newCap, _ := newValue.(uint64) - c.UpdateCapacity(newCap, node == cp.capReqNode) - } - }) - - // add metrics - cp.ns.SubscribeState(nodestate.MergeFlags(cp.setup.activeFlag, cp.setup.inactiveFlag), func(node *enode.Node, oldState, newState nodestate.Flags) { - if oldState.IsEmpty() && !newState.IsEmpty() { - clientConnectedMeter.Mark(1) - } - if !oldState.IsEmpty() && newState.IsEmpty() { - clientDisconnectedMeter.Mark(1) - } - if oldState.HasNone(cp.setup.activeFlag) && oldState.HasAll(cp.setup.activeFlag) { - clientActivatedMeter.Mark(1) - } - if oldState.HasAll(cp.setup.activeFlag) && oldState.HasNone(cp.setup.activeFlag) { - clientDeactivatedMeter.Mark(1) - } - activeCount, activeCap := cp.Active() - totalActiveCountGauge.Update(int64(activeCount)) - totalActiveCapacityGauge.Update(int64(activeCap)) - totalInactiveCountGauge.Update(int64(cp.Inactive())) - }) - return cp -} - -// Start starts the client pool. Should be called before Register/Unregister. -func (cp *ClientPool) Start() { - cp.ns.Start() -} - -// Stop shuts the client pool down. The clientPeer interface callbacks will not be called -// after Stop. Register calls will return nil. -func (cp *ClientPool) Stop() { - cp.balanceTracker.stop() - cp.ns.Stop() -} - -// Register registers the peer into the client pool. If the peer has insufficient -// priority and remains inactive for longer than the allowed timeout then it will be -// disconnected by calling the Disconnect function of the clientPeer interface. -func (cp *ClientPool) Register(peer clientPeer) ConnectedBalance { - cp.ns.SetField(peer.Node(), cp.setup.clientField, peerWrapper{peer}) - balance, _ := cp.ns.GetField(peer.Node(), cp.setup.balanceField).(*nodeBalance) - return balance -} - -// Unregister removes the peer from the client pool -func (cp *ClientPool) Unregister(peer clientPeer) { - cp.ns.SetField(peer.Node(), cp.setup.clientField, nil) -} - -// SetConnectedBias sets the connection bias, which is applied to already connected clients -// So that already connected client won't be kicked out very soon and we can ensure all -// connected clients can have enough time to request or sync some data. -func (cp *ClientPool) SetConnectedBias(bias time.Duration) { - cp.lock.Lock() - cp.connectedBias = bias - cp.setActiveBias(bias) - cp.lock.Unlock() -} - -// SetCapacity sets the assigned capacity of a connected client -func (cp *ClientPool) SetCapacity(node *enode.Node, reqCap uint64, bias time.Duration, requested bool) (capacity uint64, err error) { - cp.lock.RLock() - if cp.connectedBias > bias { - bias = cp.connectedBias - } - cp.lock.RUnlock() - - cp.ns.Operation(func() { - balance, _ := cp.ns.GetField(node, cp.setup.balanceField).(*nodeBalance) - if balance == nil { - err = ErrNotConnected - return - } - capacity, _ = cp.ns.GetField(node, cp.setup.capacityField).(uint64) - if capacity == 0 { - // if the client is inactive then it has insufficient priority for the minimal capacity - // (will be activated automatically with minCap when possible) - return - } - if reqCap < cp.minCap { - // can't request less than minCap; switching between 0 (inactive state) and minCap is - // performed by the server automatically as soon as necessary/possible - reqCap = cp.minCap - } - if reqCap > cp.minCap && cp.ns.GetState(node).HasNone(cp.setup.priorityFlag) { - err = ErrNoPriority - return - } - if reqCap == capacity { - return - } - if requested { - // mark the requested node so that the UpdateCapacity callback can signal - // whether the update is the direct result of a SetCapacity call on the given node - cp.capReqNode = node - defer func() { - cp.capReqNode = nil - }() - } - - var minTarget, maxTarget uint64 - if reqCap > capacity { - // Estimate maximum available capacity at the current priority level and request - // the estimated amount. - // Note: requestCapacity could find the highest available capacity between the - // current and the requested capacity but it could cost a lot of iterations with - // fine step adjustment if the requested capacity is very high. By doing a quick - // estimation of the maximum available capacity based on the capacity curve we - // can limit the number of required iterations. - curve := cp.getCapacityCurve().exclude(node.ID()) - maxTarget = curve.maxCapacity(func(capacity uint64) int64 { - return balance.estimatePriority(capacity, 0, 0, bias, false) - }) - if maxTarget < reqCap { - return - } - maxTarget = reqCap - - // Specify a narrow target range that allows a limited number of fine step - // iterations - minTarget = maxTarget - maxTarget/20 - if minTarget < capacity { - minTarget = capacity - } - } else { - minTarget, maxTarget = reqCap, reqCap - } - if newCap := cp.requestCapacity(node, minTarget, maxTarget, bias); newCap >= minTarget && newCap <= maxTarget { - capacity = newCap - return - } - // we should be able to find the maximum allowed capacity in a few iterations - log.Error("Unable to find maximum allowed capacity") - err = ErrCantFindMaximum - }) - return -} - -// serveCapQuery serves a vflux capacity query. It receives multiple token amount values -// and a bias time value. For each given token amount it calculates the maximum achievable -// capacity in case the amount is added to the balance. -func (cp *ClientPool) serveCapQuery(id enode.ID, freeID string, data []byte) []byte { - var req vflux.CapacityQueryReq - if rlp.DecodeBytes(data, &req) != nil { - return nil - } - if l := len(req.AddTokens); l == 0 || l > vflux.CapacityQueryMaxLen { - return nil - } - result := make(vflux.CapacityQueryReply, len(req.AddTokens)) - if !cp.synced() { - capacityQueryZeroMeter.Mark(1) - reply, _ := rlp.EncodeToBytes(&result) - return reply - } - - bias := time.Second * time.Duration(req.Bias) - cp.lock.RLock() - if cp.connectedBias > bias { - bias = cp.connectedBias - } - cp.lock.RUnlock() - - // use capacityCurve to answer request for multiple newly bought token amounts - curve := cp.getCapacityCurve().exclude(id) - cp.BalanceOperation(id, freeID, func(balance AtomicBalanceOperator) { - pb, _ := balance.GetBalance() - for i, addTokens := range req.AddTokens { - add := addTokens.Int64() - result[i] = curve.maxCapacity(func(capacity uint64) int64 { - return balance.estimatePriority(capacity, add, 0, bias, false) / int64(capacity) - }) - if add <= 0 && uint64(-add) >= pb && result[i] > cp.minCap { - result[i] = cp.minCap - } - if result[i] < cp.minCap { - result[i] = 0 - } - } - }) - // add first result to metrics (don't care about priority client multi-queries yet) - if result[0] == 0 { - capacityQueryZeroMeter.Mark(1) - } else { - capacityQueryNonZeroMeter.Mark(1) - } - reply, _ := rlp.EncodeToBytes(&result) - return reply -} - -// Handle implements Service -func (cp *ClientPool) Handle(id enode.ID, address string, name string, data []byte) []byte { - switch name { - case vflux.CapacityQueryName: - return cp.serveCapQuery(id, address, data) - default: - return nil - } -} diff --git a/les/vflux/server/clientpool_test.go b/les/vflux/server/clientpool_test.go deleted file mode 100644 index 7319be0824..0000000000 --- a/les/vflux/server/clientpool_test.go +++ /dev/null @@ -1,640 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "fmt" - "math/rand" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -const defaultConnectedBias = time.Minute * 3 - -func TestClientPoolL10C100Free(t *testing.T) { - t.Parallel() - - testClientPool(t, 10, 100, 0, true) -} - -func TestClientPoolL40C200Free(t *testing.T) { - t.Parallel() - - testClientPool(t, 40, 200, 0, true) -} - -func TestClientPoolL100C300Free(t *testing.T) { - t.Parallel() - - testClientPool(t, 100, 300, 0, true) -} - -func TestClientPoolL10C100P4(t *testing.T) { - t.Parallel() - - testClientPool(t, 10, 100, 4, false) -} - -func TestClientPoolL40C200P30(t *testing.T) { - t.Parallel() - - testClientPool(t, 40, 200, 30, false) -} - -func TestClientPoolL100C300P20(t *testing.T) { - t.Parallel() - - testClientPool(t, 100, 300, 20, false) -} - -const testClientPoolTicks = 100000 - -type poolTestPeer struct { - node *enode.Node - index int - disconnCh chan int - cap uint64 - inactiveAllowed bool -} - -func newPoolTestPeer(i int, disconnCh chan int) *poolTestPeer { - return &poolTestPeer{ - index: i, - disconnCh: disconnCh, - node: enode.SignNull(&enr.Record{}, enode.ID{byte(i % 256), byte(i >> 8)}), - } -} - -func (i *poolTestPeer) Node() *enode.Node { - return i.node -} - -func (i *poolTestPeer) FreeClientId() string { - return fmt.Sprintf("addr #%d", i.index) -} - -func (i *poolTestPeer) InactiveAllowance() time.Duration { - if i.inactiveAllowed { - return time.Second * 10 - } - return 0 -} - -func (i *poolTestPeer) UpdateCapacity(capacity uint64, requested bool) { - i.cap = capacity -} - -func (i *poolTestPeer) Disconnect() { - if i.disconnCh == nil { - return - } - id := i.node.ID() - i.disconnCh <- int(id[0]) + int(id[1])<<8 -} - -func getBalance(pool *ClientPool, p *poolTestPeer) (pos, neg uint64) { - pool.BalanceOperation(p.node.ID(), p.FreeClientId(), func(nb AtomicBalanceOperator) { - pos, neg = nb.GetBalance() - }) - return -} - -func addBalance(pool *ClientPool, id enode.ID, amount int64) { - pool.BalanceOperation(id, "", func(nb AtomicBalanceOperator) { - nb.AddBalance(amount) - }) -} - -func checkDiff(a, b uint64) bool { - maxDiff := (a + b) / 2000 - if maxDiff < 1 { - maxDiff = 1 - } - return a > b+maxDiff || b > a+maxDiff -} - -func connect(pool *ClientPool, peer *poolTestPeer) uint64 { - pool.Register(peer) - return peer.cap -} - -func disconnect(pool *ClientPool, peer *poolTestPeer) { - pool.Unregister(peer) -} - -func alwaysTrueFn() bool { - return true -} - -func testClientPool(t *testing.T, activeLimit, clientCount, paidCount int, randomDisconnect bool) { - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - connected = make([]bool, clientCount) - connTicks = make([]int, clientCount) - disconnCh = make(chan int, clientCount) - pool = NewClientPool(db, 1, 0, &clock, alwaysTrueFn) - ) - pool.Start() - pool.SetExpirationTCs(0, 1000) - - pool.SetLimits(uint64(activeLimit), uint64(activeLimit)) - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - // pool should accept new peers up to its connected limit - for i := 0; i < activeLimit; i++ { - if cap := connect(pool, newPoolTestPeer(i, disconnCh)); cap != 0 { - connected[i] = true - } else { - t.Fatalf("Test peer #%d rejected", i) - } - } - // randomly connect and disconnect peers, expect to have a similar total connection time at the end - for tickCounter := 0; tickCounter < testClientPoolTicks; tickCounter++ { - clock.Run(1 * time.Second) - - if tickCounter == testClientPoolTicks/4 { - // give a positive balance to some of the peers - amount := testClientPoolTicks / 2 * int64(time.Second) // enough for half of the simulation period - for i := 0; i < paidCount; i++ { - addBalance(pool, newPoolTestPeer(i, disconnCh).node.ID(), amount) - } - } - - i := rand.Intn(clientCount) - if connected[i] { - if randomDisconnect { - disconnect(pool, newPoolTestPeer(i, disconnCh)) - connected[i] = false - connTicks[i] += tickCounter - } - } else { - if cap := connect(pool, newPoolTestPeer(i, disconnCh)); cap != 0 { - connected[i] = true - connTicks[i] -= tickCounter - } else { - disconnect(pool, newPoolTestPeer(i, disconnCh)) - } - } - pollDisconnects: - for { - select { - case i := <-disconnCh: - disconnect(pool, newPoolTestPeer(i, disconnCh)) - if connected[i] { - connTicks[i] += tickCounter - connected[i] = false - } - default: - break pollDisconnects - } - } - } - - expTicks := testClientPoolTicks/2*activeLimit/clientCount + testClientPoolTicks/2*(activeLimit-paidCount)/(clientCount-paidCount) - expMin := expTicks - expTicks/5 - expMax := expTicks + expTicks/5 - paidTicks := testClientPoolTicks/2*activeLimit/clientCount + testClientPoolTicks/2 - paidMin := paidTicks - paidTicks/5 - paidMax := paidTicks + paidTicks/5 - - // check if the total connected time of peers are all in the expected range - for i, c := range connected { - if c { - connTicks[i] += testClientPoolTicks - } - min, max := expMin, expMax - if i < paidCount { - // expect a higher amount for clients with a positive balance - min, max = paidMin, paidMax - } - if connTicks[i] < min || connTicks[i] > max { - t.Errorf("Total connected time of test node #%d (%d) outside expected range (%d to %d)", i, connTicks[i], min, max) - } - } - pool.Stop() -} - -func testPriorityConnect(t *testing.T, pool *ClientPool, p *poolTestPeer, cap uint64, expSuccess bool) { - if cap := connect(pool, p); cap == 0 { - if expSuccess { - t.Fatalf("Failed to connect paid client") - } else { - return - } - } - if newCap, _ := pool.SetCapacity(p.node, cap, defaultConnectedBias, true); newCap != cap { - if expSuccess { - t.Fatalf("Failed to raise capacity of paid client") - } else { - return - } - } - if !expSuccess { - t.Fatalf("Should reject high capacity paid client") - } -} - -func TestConnectPaidClient(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - // Add balance for an external client and mark it as paid client - addBalance(pool, newPoolTestPeer(0, nil).node.ID(), int64(time.Minute)) - testPriorityConnect(t, pool, newPoolTestPeer(0, nil), 10, true) -} - -func TestConnectPaidClientToSmallPool(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - // Add balance for an external client and mark it as paid client - addBalance(pool, newPoolTestPeer(0, nil).node.ID(), int64(time.Minute)) - - // connect a fat paid client to pool, should reject it. - testPriorityConnect(t, pool, newPoolTestPeer(0, nil), 100, false) -} - -func TestConnectPaidClientToFullPool(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - for i := 0; i < 10; i++ { - addBalance(pool, newPoolTestPeer(i, nil).node.ID(), int64(time.Second*20)) - connect(pool, newPoolTestPeer(i, nil)) - } - addBalance(pool, newPoolTestPeer(11, nil).node.ID(), int64(time.Second*2)) // Add low balance to new paid client - if cap := connect(pool, newPoolTestPeer(11, nil)); cap != 0 { - t.Fatalf("Low balance paid client should be rejected") - } - clock.Run(time.Second) - addBalance(pool, newPoolTestPeer(12, nil).node.ID(), int64(time.Minute*5)) // Add high balance to new paid client - if cap := connect(pool, newPoolTestPeer(12, nil)); cap == 0 { - t.Fatalf("High balance paid client should be accepted") - } -} - -func TestPaidClientKickedOut(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - kickedCh = make(chan int, 100) - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - pool.SetExpirationTCs(0, 0) - defer pool.Stop() - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - for i := 0; i < 10; i++ { - addBalance(pool, newPoolTestPeer(i, kickedCh).node.ID(), 10000000000) // 10 second allowance - connect(pool, newPoolTestPeer(i, kickedCh)) - clock.Run(time.Millisecond) - } - clock.Run(defaultConnectedBias + time.Second*11) - if cap := connect(pool, newPoolTestPeer(11, kickedCh)); cap == 0 { - t.Fatalf("Free client should be accepted") - } - clock.Run(0) - select { - case id := <-kickedCh: - if id != 0 { - t.Fatalf("Kicked client mismatch, want %v, got %v", 0, id) - } - default: - t.Fatalf("timeout") - } -} - -func TestConnectFreeClient(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - if cap := connect(pool, newPoolTestPeer(0, nil)); cap == 0 { - t.Fatalf("Failed to connect free client") - } - testPriorityConnect(t, pool, newPoolTestPeer(0, nil), 2, false) -} - -func TestConnectFreeClientToFullPool(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - for i := 0; i < 10; i++ { - connect(pool, newPoolTestPeer(i, nil)) - } - if cap := connect(pool, newPoolTestPeer(11, nil)); cap != 0 { - t.Fatalf("New free client should be rejected") - } - clock.Run(time.Minute) - if cap := connect(pool, newPoolTestPeer(12, nil)); cap != 0 { - t.Fatalf("New free client should be rejected") - } - clock.Run(time.Millisecond) - clock.Run(4 * time.Minute) - if cap := connect(pool, newPoolTestPeer(13, nil)); cap == 0 { - t.Fatalf("Old client connects more than 5min should be kicked") - } -} - -func TestFreeClientKickedOut(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - kicked = make(chan int, 100) - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - for i := 0; i < 10; i++ { - connect(pool, newPoolTestPeer(i, kicked)) - clock.Run(time.Millisecond) - } - if cap := connect(pool, newPoolTestPeer(10, kicked)); cap != 0 { - t.Fatalf("New free client should be rejected") - } - clock.Run(0) - select { - case <-kicked: - default: - t.Fatalf("timeout") - } - disconnect(pool, newPoolTestPeer(10, kicked)) - clock.Run(5 * time.Minute) - for i := 0; i < 10; i++ { - connect(pool, newPoolTestPeer(i+10, kicked)) - } - clock.Run(0) - - for i := 0; i < 10; i++ { - select { - case id := <-kicked: - if id >= 10 { - t.Fatalf("Old client should be kicked, now got: %d", id) - } - default: - t.Fatalf("timeout") - } - } -} - -func TestPositiveBalanceCalculation(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - kicked = make(chan int, 10) - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - addBalance(pool, newPoolTestPeer(0, kicked).node.ID(), int64(time.Minute*3)) - testPriorityConnect(t, pool, newPoolTestPeer(0, kicked), 10, true) - clock.Run(time.Minute) - - disconnect(pool, newPoolTestPeer(0, kicked)) - pb, _ := getBalance(pool, newPoolTestPeer(0, kicked)) - if checkDiff(pb, uint64(time.Minute*2)) { - t.Fatalf("Positive balance mismatch, want %v, got %v", uint64(time.Minute*2), pb) - } -} - -func TestDowngradePriorityClient(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - kicked = make(chan int, 10) - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 1}) - - p := newPoolTestPeer(0, kicked) - addBalance(pool, p.node.ID(), int64(time.Minute)) - testPriorityConnect(t, pool, p, 10, true) - if p.cap != 10 { - t.Fatalf("The capacity of priority peer hasn't been updated, got: %d", p.cap) - } - - clock.Run(time.Minute) // All positive balance should be used up. - time.Sleep(300 * time.Millisecond) // Ensure the callback is called - if p.cap != 1 { - t.Fatalf("The capcacity of peer should be downgraded, got: %d", p.cap) - } - pb, _ := getBalance(pool, newPoolTestPeer(0, kicked)) - if pb != 0 { - t.Fatalf("Positive balance mismatch, want %v, got %v", 0, pb) - } - - addBalance(pool, newPoolTestPeer(0, kicked).node.ID(), int64(time.Minute)) - pb, _ = getBalance(pool, newPoolTestPeer(0, kicked)) - if checkDiff(pb, uint64(time.Minute)) { - t.Fatalf("Positive balance mismatch, want %v, got %v", uint64(time.Minute), pb) - } -} - -func TestNegativeBalanceCalculation(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetExpirationTCs(0, 3600) - pool.SetLimits(10, uint64(10)) // Total capacity limit is 10 - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1e-3, CapacityFactor: 0, RequestFactor: 1}, PriceFactors{TimeFactor: 1e-3, CapacityFactor: 0, RequestFactor: 1}) - - for i := 0; i < 10; i++ { - connect(pool, newPoolTestPeer(i, nil)) - } - clock.Run(time.Second) - - for i := 0; i < 10; i++ { - disconnect(pool, newPoolTestPeer(i, nil)) - _, nb := getBalance(pool, newPoolTestPeer(i, nil)) - if nb != 0 { - t.Fatalf("Short connection shouldn't be recorded") - } - } - for i := 0; i < 10; i++ { - connect(pool, newPoolTestPeer(i, nil)) - } - clock.Run(time.Minute) - for i := 0; i < 10; i++ { - disconnect(pool, newPoolTestPeer(i, nil)) - _, nb := getBalance(pool, newPoolTestPeer(i, nil)) - exp := uint64(time.Minute) / 1000 - exp -= exp / 120 // correct for negative balance expiration - if checkDiff(nb, exp) { - t.Fatalf("Negative balance mismatch, want %v, got %v", exp, nb) - } - } -} - -func TestInactiveClient(t *testing.T) { - t.Parallel() - - var ( - clock mclock.Simulated - db = rawdb.NewMemoryDatabase() - ) - pool := NewClientPool(db, 1, defaultConnectedBias, &clock, alwaysTrueFn) - pool.Start() - defer pool.Stop() - pool.SetLimits(2, uint64(2)) - - p1 := newPoolTestPeer(1, nil) - p1.inactiveAllowed = true - p2 := newPoolTestPeer(2, nil) - p2.inactiveAllowed = true - p3 := newPoolTestPeer(3, nil) - p3.inactiveAllowed = true - addBalance(pool, p1.node.ID(), 1000*int64(time.Second)) - addBalance(pool, p3.node.ID(), 2000*int64(time.Second)) - // p1: 1000 p2: 0 p3: 2000 - p1.cap = connect(pool, p1) - if p1.cap != 1 { - t.Fatalf("Failed to connect peer #1") - } - p2.cap = connect(pool, p2) - if p2.cap != 1 { - t.Fatalf("Failed to connect peer #2") - } - p3.cap = connect(pool, p3) - if p3.cap != 1 { - t.Fatalf("Failed to connect peer #3") - } - if p2.cap != 0 { - t.Fatalf("Failed to deactivate peer #2") - } - addBalance(pool, p2.node.ID(), 3000*int64(time.Second)) - // p1: 1000 p2: 3000 p3: 2000 - if p2.cap != 1 { - t.Fatalf("Failed to activate peer #2") - } - if p1.cap != 0 { - t.Fatalf("Failed to deactivate peer #1") - } - addBalance(pool, p2.node.ID(), -2500*int64(time.Second)) - // p1: 1000 p2: 500 p3: 2000 - if p1.cap != 1 { - t.Fatalf("Failed to activate peer #1") - } - if p2.cap != 0 { - t.Fatalf("Failed to deactivate peer #2") - } - pool.SetDefaultFactors(PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 0}, PriceFactors{TimeFactor: 1, CapacityFactor: 0, RequestFactor: 0}) - p4 := newPoolTestPeer(4, nil) - addBalance(pool, p4.node.ID(), 1500*int64(time.Second)) - // p1: 1000 p2: 500 p3: 2000 p4: 1500 - p4.cap = connect(pool, p4) - if p4.cap != 1 { - t.Fatalf("Failed to activate peer #4") - } - if p1.cap != 0 { - t.Fatalf("Failed to deactivate peer #1") - } - clock.Run(time.Second * 600) - // manually trigger a check to avoid a long real-time wait - pool.ns.SetState(p1.node, pool.setup.updateFlag, nodestate.Flags{}, 0) - pool.ns.SetState(p1.node, nodestate.Flags{}, pool.setup.updateFlag, 0) - // p1: 1000 p2: 500 p3: 2000 p4: 900 - if p1.cap != 1 { - t.Fatalf("Failed to activate peer #1") - } - if p4.cap != 0 { - t.Fatalf("Failed to deactivate peer #4") - } - disconnect(pool, p2) - disconnect(pool, p4) - addBalance(pool, p1.node.ID(), -1000*int64(time.Second)) - if p1.cap != 1 { - t.Fatalf("Should not deactivate peer #1") - } - if p2.cap != 0 { - t.Fatalf("Should not activate peer #2") - } -} diff --git a/les/vflux/server/metrics.go b/les/vflux/server/metrics.go deleted file mode 100644 index 680aebe2ea..0000000000 --- a/les/vflux/server/metrics.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "github.com/ethereum/go-ethereum/metrics" -) - -var ( - totalActiveCapacityGauge = metrics.NewRegisteredGauge("vflux/server/active/capacity", nil) - totalActiveCountGauge = metrics.NewRegisteredGauge("vflux/server/active/count", nil) - totalInactiveCountGauge = metrics.NewRegisteredGauge("vflux/server/inactive/count", nil) - - clientConnectedMeter = metrics.NewRegisteredMeter("vflux/server/clientEvent/connected", nil) - clientActivatedMeter = metrics.NewRegisteredMeter("vflux/server/clientEvent/activated", nil) - clientDeactivatedMeter = metrics.NewRegisteredMeter("vflux/server/clientEvent/deactivated", nil) - clientDisconnectedMeter = metrics.NewRegisteredMeter("vflux/server/clientEvent/disconnected", nil) - - capacityQueryZeroMeter = metrics.NewRegisteredMeter("vflux/server/capQueryZero", nil) - capacityQueryNonZeroMeter = metrics.NewRegisteredMeter("vflux/server/capQueryNonZero", nil) -) diff --git a/les/vflux/server/prioritypool.go b/les/vflux/server/prioritypool.go deleted file mode 100644 index 766026a808..0000000000 --- a/les/vflux/server/prioritypool.go +++ /dev/null @@ -1,695 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "math" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/common/prque" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -const ( - lazyQueueRefresh = time.Second * 10 // refresh period of the active queue -) - -// priorityPool handles a set of nodes where each node has a capacity (a scalar value) -// and a priority (which can change over time and can also depend on the capacity). -// A node is active if it has at least the necessary minimal amount of capacity while -// inactive nodes have 0 capacity (values between 0 and the minimum are not allowed). -// The pool ensures that the number and total capacity of all active nodes are limited -// and the highest priority nodes are active at all times (limits can be changed -// during operation with immediate effect). -// -// When activating clients a priority bias is applied in favor of the already active -// nodes in order to avoid nodes quickly alternating between active and inactive states -// when their priorities are close to each other. The bias is specified in terms of -// duration (time) because priorities are expected to usually get lower over time and -// therefore a future minimum prediction (see EstMinPriority) should monotonously -// decrease with the specified time parameter. -// This time bias can be interpreted as minimum expected active time at the given -// capacity (if the threshold priority stays the same). -// -// Nodes in the pool always have either inactiveFlag or activeFlag set. A new node is -// added to the pool by externally setting inactiveFlag. priorityPool can switch a node -// between inactiveFlag and activeFlag at any time. Nodes can be removed from the pool -// by externally resetting both flags. activeFlag should not be set externally. -// -// The highest priority nodes in "inactive" state are moved to "active" state as soon as -// the minimum capacity can be granted for them. The capacity of lower priority active -// nodes is reduced or they are demoted to "inactive" state if their priority is -// insufficient even at minimal capacity. -type priorityPool struct { - setup *serverSetup - ns *nodestate.NodeStateMachine - clock mclock.Clock - lock sync.Mutex - maxCount, maxCap uint64 - minCap uint64 - activeBias time.Duration - capacityStepDiv, fineStepDiv uint64 - - // The snapshot of priority pool for query. - cachedCurve *capacityCurve - ccUpdatedAt mclock.AbsTime - ccUpdateForced bool - - // Runtime status of prioritypool, represents the - // temporary state if tempState is not empty - tempState []*ppNodeInfo - activeCount, activeCap uint64 - activeQueue *prque.LazyQueue[int64, *ppNodeInfo] - inactiveQueue *prque.Prque[int64, *ppNodeInfo] -} - -// ppNodeInfo is the internal node descriptor of priorityPool -type ppNodeInfo struct { - nodePriority nodePriority - node *enode.Node - connected bool - capacity uint64 // only changed when temporary state is committed - activeIndex, inactiveIndex int - - tempState bool // should only be true while the priorityPool lock is held - tempCapacity uint64 // equals capacity when tempState is false - - // the following fields only affect the temporary state and they are set to their - // default value when leaving the temp state - minTarget, stepDiv uint64 - bias time.Duration -} - -// newPriorityPool creates a new priorityPool -func newPriorityPool(ns *nodestate.NodeStateMachine, setup *serverSetup, clock mclock.Clock, minCap uint64, activeBias time.Duration, capacityStepDiv, fineStepDiv uint64) *priorityPool { - pp := &priorityPool{ - setup: setup, - ns: ns, - clock: clock, - inactiveQueue: prque.New[int64, *ppNodeInfo](inactiveSetIndex), - minCap: minCap, - activeBias: activeBias, - capacityStepDiv: capacityStepDiv, - fineStepDiv: fineStepDiv, - } - if pp.activeBias < time.Duration(1) { - pp.activeBias = time.Duration(1) - } - pp.activeQueue = prque.NewLazyQueue(activeSetIndex, activePriority, pp.activeMaxPriority, clock, lazyQueueRefresh) - - ns.SubscribeField(pp.setup.balanceField, func(node *enode.Node, state nodestate.Flags, oldValue, newValue interface{}) { - if newValue != nil { - c := &ppNodeInfo{ - node: node, - nodePriority: newValue.(nodePriority), - activeIndex: -1, - inactiveIndex: -1, - } - ns.SetFieldSub(node, pp.setup.queueField, c) - ns.SetStateSub(node, setup.inactiveFlag, nodestate.Flags{}, 0) - } else { - ns.SetStateSub(node, nodestate.Flags{}, pp.setup.activeFlag.Or(pp.setup.inactiveFlag), 0) - if n, _ := pp.ns.GetField(node, pp.setup.queueField).(*ppNodeInfo); n != nil { - pp.disconnectNode(n) - } - ns.SetFieldSub(node, pp.setup.capacityField, nil) - ns.SetFieldSub(node, pp.setup.queueField, nil) - } - }) - ns.SubscribeState(pp.setup.activeFlag.Or(pp.setup.inactiveFlag), func(node *enode.Node, oldState, newState nodestate.Flags) { - if c, _ := pp.ns.GetField(node, pp.setup.queueField).(*ppNodeInfo); c != nil { - if oldState.IsEmpty() { - pp.connectNode(c) - } - if newState.IsEmpty() { - pp.disconnectNode(c) - } - } - }) - ns.SubscribeState(pp.setup.updateFlag, func(node *enode.Node, oldState, newState nodestate.Flags) { - if !newState.IsEmpty() { - pp.updatePriority(node) - } - }) - return pp -} - -// requestCapacity tries to set the capacity of a connected node to the highest possible -// value inside the given target range. If maxTarget is not reachable then the capacity is -// iteratively reduced in fine steps based on the fineStepDiv parameter until minTarget is reached. -// The function returns the new capacity if successful and the original capacity otherwise. -// Note: this function should run inside a NodeStateMachine operation -func (pp *priorityPool) requestCapacity(node *enode.Node, minTarget, maxTarget uint64, bias time.Duration) uint64 { - pp.lock.Lock() - pp.activeQueue.Refresh() - - if minTarget < pp.minCap { - minTarget = pp.minCap - } - if maxTarget < minTarget { - maxTarget = minTarget - } - if bias < pp.activeBias { - bias = pp.activeBias - } - c, _ := pp.ns.GetField(node, pp.setup.queueField).(*ppNodeInfo) - if c == nil { - log.Error("requestCapacity called for unknown node", "id", node.ID()) - pp.lock.Unlock() - return 0 - } - pp.setTempState(c) - if maxTarget > c.capacity { - pp.setTempStepDiv(c, pp.fineStepDiv) - pp.setTempBias(c, bias) - } - pp.setTempCapacity(c, maxTarget) - c.minTarget = minTarget - pp.removeFromQueues(c) - pp.activeQueue.Push(c) - pp.enforceLimits() - updates := pp.finalizeChanges(c.tempCapacity >= minTarget && c.tempCapacity <= maxTarget && c.tempCapacity != c.capacity) - pp.lock.Unlock() - pp.updateFlags(updates) - return c.capacity -} - -// SetLimits sets the maximum number and total capacity of simultaneously active nodes -func (pp *priorityPool) SetLimits(maxCount, maxCap uint64) { - pp.lock.Lock() - pp.activeQueue.Refresh() - inc := (maxCount > pp.maxCount) || (maxCap > pp.maxCap) - dec := (maxCount < pp.maxCount) || (maxCap < pp.maxCap) - pp.maxCount, pp.maxCap = maxCount, maxCap - - var updates []capUpdate - if dec { - pp.enforceLimits() - updates = pp.finalizeChanges(true) - } - if inc { - updates = append(updates, pp.tryActivate(false)...) - } - pp.lock.Unlock() - pp.ns.Operation(func() { pp.updateFlags(updates) }) -} - -// setActiveBias sets the bias applied when trying to activate inactive nodes -func (pp *priorityPool) setActiveBias(bias time.Duration) { - pp.lock.Lock() - pp.activeBias = bias - if pp.activeBias < time.Duration(1) { - pp.activeBias = time.Duration(1) - } - updates := pp.tryActivate(false) - pp.lock.Unlock() - pp.ns.Operation(func() { pp.updateFlags(updates) }) -} - -// Active returns the number and total capacity of currently active nodes -func (pp *priorityPool) Active() (uint64, uint64) { - pp.lock.Lock() - defer pp.lock.Unlock() - - return pp.activeCount, pp.activeCap -} - -// Inactive returns the number of currently inactive nodes -func (pp *priorityPool) Inactive() int { - pp.lock.Lock() - defer pp.lock.Unlock() - - return pp.inactiveQueue.Size() -} - -// Limits returns the maximum allowed number and total capacity of active nodes -func (pp *priorityPool) Limits() (uint64, uint64) { - pp.lock.Lock() - defer pp.lock.Unlock() - - return pp.maxCount, pp.maxCap -} - -// inactiveSetIndex callback updates ppNodeInfo item index in inactiveQueue -func inactiveSetIndex(a *ppNodeInfo, index int) { - a.inactiveIndex = index -} - -// activeSetIndex callback updates ppNodeInfo item index in activeQueue -func activeSetIndex(a *ppNodeInfo, index int) { - a.activeIndex = index -} - -// invertPriority inverts a priority value. The active queue uses inverted priorities -// because the node on the top is the first to be deactivated. -func invertPriority(p int64) int64 { - if p == math.MinInt64 { - return math.MaxInt64 - } - return -p -} - -// activePriority callback returns actual priority of ppNodeInfo item in activeQueue -func activePriority(c *ppNodeInfo) int64 { - if c.bias == 0 { - return invertPriority(c.nodePriority.priority(c.tempCapacity)) - } else { - return invertPriority(c.nodePriority.estimatePriority(c.tempCapacity, 0, 0, c.bias, true)) - } -} - -// activeMaxPriority callback returns estimated maximum priority of ppNodeInfo item in activeQueue -func (pp *priorityPool) activeMaxPriority(c *ppNodeInfo, until mclock.AbsTime) int64 { - future := time.Duration(until - pp.clock.Now()) - if future < 0 { - future = 0 - } - return invertPriority(c.nodePriority.estimatePriority(c.tempCapacity, 0, future, c.bias, false)) -} - -// inactivePriority callback returns actual priority of ppNodeInfo item in inactiveQueue -func (pp *priorityPool) inactivePriority(p *ppNodeInfo) int64 { - return p.nodePriority.priority(pp.minCap) -} - -// removeFromQueues removes the node from the active/inactive queues -func (pp *priorityPool) removeFromQueues(c *ppNodeInfo) { - if c.activeIndex >= 0 { - pp.activeQueue.Remove(c.activeIndex) - } - if c.inactiveIndex >= 0 { - pp.inactiveQueue.Remove(c.inactiveIndex) - } -} - -// connectNode is called when a new node has been added to the pool (inactiveFlag set) -// Note: this function should run inside a NodeStateMachine operation -func (pp *priorityPool) connectNode(c *ppNodeInfo) { - pp.lock.Lock() - pp.activeQueue.Refresh() - if c.connected { - pp.lock.Unlock() - return - } - c.connected = true - pp.inactiveQueue.Push(c, pp.inactivePriority(c)) - updates := pp.tryActivate(false) - pp.lock.Unlock() - pp.updateFlags(updates) -} - -// disconnectNode is called when a node has been removed from the pool (both inactiveFlag -// and activeFlag reset) -// Note: this function should run inside a NodeStateMachine operation -func (pp *priorityPool) disconnectNode(c *ppNodeInfo) { - pp.lock.Lock() - pp.activeQueue.Refresh() - if !c.connected { - pp.lock.Unlock() - return - } - c.connected = false - pp.removeFromQueues(c) - - var updates []capUpdate - if c.capacity != 0 { - pp.setTempState(c) - pp.setTempCapacity(c, 0) - updates = pp.tryActivate(true) - } - pp.lock.Unlock() - pp.updateFlags(updates) -} - -// setTempState internally puts a node in a temporary state that can either be reverted -// or confirmed later. This temporary state allows changing the capacity of a node and -// moving it between the active and inactive queue. activeFlag/inactiveFlag and -// capacityField are not changed while the changes are still temporary. -func (pp *priorityPool) setTempState(c *ppNodeInfo) { - if c.tempState { - return - } - c.tempState = true - if c.tempCapacity != c.capacity { // should never happen - log.Error("tempCapacity != capacity when entering tempState") - } - // Assign all the defaults to the temp state. - c.minTarget = pp.minCap - c.stepDiv = pp.capacityStepDiv - c.bias = 0 - pp.tempState = append(pp.tempState, c) -} - -// unsetTempState revokes the temp status of the node and reset all internal -// fields to the default value. -func (pp *priorityPool) unsetTempState(c *ppNodeInfo) { - if !c.tempState { - return - } - c.tempState = false - if c.tempCapacity != c.capacity { // should never happen - log.Error("tempCapacity != capacity when leaving tempState") - } - c.minTarget = pp.minCap - c.stepDiv = pp.capacityStepDiv - c.bias = 0 -} - -// setTempCapacity changes the capacity of a node in the temporary state and adjusts -// activeCap and activeCount accordingly. Since this change is performed in the temporary -// state it should be called after setTempState and before finalizeChanges. -func (pp *priorityPool) setTempCapacity(c *ppNodeInfo, cap uint64) { - if !c.tempState { // should never happen - log.Error("Node is not in temporary state") - return - } - pp.activeCap += cap - c.tempCapacity - if c.tempCapacity == 0 { - pp.activeCount++ - } - if cap == 0 { - pp.activeCount-- - } - c.tempCapacity = cap -} - -// setTempBias changes the connection bias of a node in the temporary state. -func (pp *priorityPool) setTempBias(c *ppNodeInfo, bias time.Duration) { - if !c.tempState { // should never happen - log.Error("Node is not in temporary state") - return - } - c.bias = bias -} - -// setTempStepDiv changes the capacity divisor of a node in the temporary state. -func (pp *priorityPool) setTempStepDiv(c *ppNodeInfo, stepDiv uint64) { - if !c.tempState { // should never happen - log.Error("Node is not in temporary state") - return - } - c.stepDiv = stepDiv -} - -// enforceLimits enforces active node count and total capacity limits. It returns the -// lowest active node priority. Note that this function is performed on the temporary -// internal state. -func (pp *priorityPool) enforceLimits() (*ppNodeInfo, int64) { - if pp.activeCap <= pp.maxCap && pp.activeCount <= pp.maxCount { - return nil, math.MinInt64 - } - var ( - lastNode *ppNodeInfo - maxActivePriority int64 - ) - pp.activeQueue.MultiPop(func(c *ppNodeInfo, priority int64) bool { - lastNode = c - pp.setTempState(c) - maxActivePriority = priority - if c.tempCapacity == c.minTarget || pp.activeCount > pp.maxCount { - pp.setTempCapacity(c, 0) - } else { - sub := c.tempCapacity / c.stepDiv - if sub == 0 { - sub = 1 - } - if c.tempCapacity-sub < c.minTarget { - sub = c.tempCapacity - c.minTarget - } - pp.setTempCapacity(c, c.tempCapacity-sub) - pp.activeQueue.Push(c) - } - return pp.activeCap > pp.maxCap || pp.activeCount > pp.maxCount - }) - return lastNode, invertPriority(maxActivePriority) -} - -// finalizeChanges either commits or reverts temporary changes. The necessary capacity -// field and according flag updates are not performed here but returned in a list because -// they should be performed while the mutex is not held. -func (pp *priorityPool) finalizeChanges(commit bool) (updates []capUpdate) { - for _, c := range pp.tempState { - // always remove and push back in order to update biased priority - pp.removeFromQueues(c) - oldCapacity := c.capacity - if commit { - c.capacity = c.tempCapacity - } else { - pp.setTempCapacity(c, c.capacity) // revert activeCount/activeCap - } - pp.unsetTempState(c) - - if c.connected { - if c.capacity != 0 { - pp.activeQueue.Push(c) - } else { - pp.inactiveQueue.Push(c, pp.inactivePriority(c)) - } - if c.capacity != oldCapacity { - updates = append(updates, capUpdate{c.node, oldCapacity, c.capacity}) - } - } - } - pp.tempState = nil - if commit { - pp.ccUpdateForced = true - } - return -} - -// capUpdate describes a capacityField and activeFlag/inactiveFlag update -type capUpdate struct { - node *enode.Node - oldCap, newCap uint64 -} - -// updateFlags performs capacityField and activeFlag/inactiveFlag updates while the -// pool mutex is not held -// Note: this function should run inside a NodeStateMachine operation -func (pp *priorityPool) updateFlags(updates []capUpdate) { - for _, f := range updates { - if f.oldCap == 0 { - pp.ns.SetStateSub(f.node, pp.setup.activeFlag, pp.setup.inactiveFlag, 0) - } - if f.newCap == 0 { - pp.ns.SetStateSub(f.node, pp.setup.inactiveFlag, pp.setup.activeFlag, 0) - pp.ns.SetFieldSub(f.node, pp.setup.capacityField, nil) - } else { - pp.ns.SetFieldSub(f.node, pp.setup.capacityField, f.newCap) - } - } -} - -// tryActivate tries to activate inactive nodes if possible -func (pp *priorityPool) tryActivate(commit bool) []capUpdate { - for pp.inactiveQueue.Size() > 0 { - c := pp.inactiveQueue.PopItem() - pp.setTempState(c) - pp.setTempBias(c, pp.activeBias) - pp.setTempCapacity(c, pp.minCap) - pp.activeQueue.Push(c) - pp.enforceLimits() - if c.tempCapacity > 0 { - commit = true - pp.setTempBias(c, 0) - } else { - break - } - } - pp.ccUpdateForced = true - return pp.finalizeChanges(commit) -} - -// updatePriority gets the current priority value of the given node from the nodePriority -// interface and performs the necessary changes. It is triggered by updateFlag. -// Note: this function should run inside a NodeStateMachine operation -func (pp *priorityPool) updatePriority(node *enode.Node) { - pp.lock.Lock() - pp.activeQueue.Refresh() - c, _ := pp.ns.GetField(node, pp.setup.queueField).(*ppNodeInfo) - if c == nil || !c.connected { - pp.lock.Unlock() - return - } - pp.removeFromQueues(c) - if c.capacity != 0 { - pp.activeQueue.Push(c) - } else { - pp.inactiveQueue.Push(c, pp.inactivePriority(c)) - } - updates := pp.tryActivate(false) - pp.lock.Unlock() - pp.updateFlags(updates) -} - -// capacityCurve is a snapshot of the priority pool contents in a format that can efficiently -// estimate how much capacity could be granted to a given node at a given priority level. -type capacityCurve struct { - points []curvePoint // curve points sorted in descending order of priority - index map[enode.ID][]int // curve point indexes belonging to each node - excludeList []int // curve point indexes of excluded node - excludeFirst bool // true if activeCount == maxCount -} - -type curvePoint struct { - freeCap uint64 // available capacity and node count at the current priority level - nextPri int64 // next priority level where more capacity will be available -} - -// getCapacityCurve returns a new or recently cached capacityCurve based on the contents of the pool -func (pp *priorityPool) getCapacityCurve() *capacityCurve { - pp.lock.Lock() - defer pp.lock.Unlock() - - now := pp.clock.Now() - dt := time.Duration(now - pp.ccUpdatedAt) - if !pp.ccUpdateForced && pp.cachedCurve != nil && dt < time.Second*10 { - return pp.cachedCurve - } - - pp.ccUpdateForced = false - pp.ccUpdatedAt = now - curve := &capacityCurve{ - index: make(map[enode.ID][]int), - } - pp.cachedCurve = curve - - var excludeID enode.ID - excludeFirst := pp.maxCount == pp.activeCount - // reduce node capacities or remove nodes until nothing is left in the queue; - // record the available capacity and the necessary priority after each step - lastPri := int64(math.MinInt64) - for pp.activeCap > 0 { - cp := curvePoint{} - if pp.activeCap > pp.maxCap { - log.Error("Active capacity is greater than allowed maximum", "active", pp.activeCap, "maximum", pp.maxCap) - } else { - cp.freeCap = pp.maxCap - pp.activeCap - } - // temporarily increase activeCap to enforce reducing or removing a node capacity - tempCap := cp.freeCap + 1 - pp.activeCap += tempCap - var next *ppNodeInfo - // enforceLimits removes the lowest priority node if it has minimal capacity, - // otherwise reduces its capacity - next, cp.nextPri = pp.enforceLimits() - if cp.nextPri < lastPri { - // enforce monotonicity which may be broken by continuously changing priorities - cp.nextPri = lastPri - } else { - lastPri = cp.nextPri - } - pp.activeCap -= tempCap - if next == nil { - log.Error("getCapacityCurve: cannot remove next element from the priority queue") - break - } - id := next.node.ID() - if excludeFirst { - // if the node count limit is already reached then mark the node with the - // lowest priority for exclusion - curve.excludeFirst = true - excludeID = id - excludeFirst = false - } - // multiple curve points and therefore multiple indexes may belong to a node - // if it was removed in multiple steps (if its capacity was more than the minimum) - curve.index[id] = append(curve.index[id], len(curve.points)) - curve.points = append(curve.points, cp) - } - // restore original state of the queue - pp.finalizeChanges(false) - curve.points = append(curve.points, curvePoint{ - freeCap: pp.maxCap, - nextPri: math.MaxInt64, - }) - if curve.excludeFirst { - curve.excludeList = curve.index[excludeID] - } - return curve -} - -// exclude returns a capacityCurve with the given node excluded from the original curve -func (cc *capacityCurve) exclude(id enode.ID) *capacityCurve { - if excludeList, ok := cc.index[id]; ok { - // return a new version of the curve (only one excluded node can be selected) - // Note: if the first node was excluded by default (excludeFirst == true) then - // we can forget about that and exclude the node with the given id instead. - return &capacityCurve{ - points: cc.points, - index: cc.index, - excludeList: excludeList, - } - } - return cc -} - -func (cc *capacityCurve) getPoint(i int) curvePoint { - cp := cc.points[i] - if i == 0 && cc.excludeFirst { - cp.freeCap = 0 - return cp - } - for ii := len(cc.excludeList) - 1; ii >= 0; ii-- { - ei := cc.excludeList[ii] - if ei < i { - break - } - e1, e2 := cc.points[ei], cc.points[ei+1] - cp.freeCap += e2.freeCap - e1.freeCap - } - return cp -} - -// maxCapacity calculates the maximum capacity available for a node with a given -// (monotonically decreasing) priority vs. capacity function. Note that if the requesting -// node is already in the pool then it should be excluded from the curve in order to get -// the correct result. -func (cc *capacityCurve) maxCapacity(priority func(cap uint64) int64) uint64 { - min, max := 0, len(cc.points)-1 // the curve always has at least one point - for min < max { - mid := (min + max) / 2 - cp := cc.getPoint(mid) - if cp.freeCap == 0 || priority(cp.freeCap) > cp.nextPri { - min = mid + 1 - } else { - max = mid - } - } - cp2 := cc.getPoint(min) - if cp2.freeCap == 0 || min == 0 { - return cp2.freeCap - } - cp1 := cc.getPoint(min - 1) - if priority(cp2.freeCap) > cp1.nextPri { - return cp2.freeCap - } - minc, maxc := cp1.freeCap, cp2.freeCap-1 - for minc < maxc { - midc := (minc + maxc + 1) / 2 - if midc == 0 || priority(midc) > cp1.nextPri { - minc = midc - } else { - maxc = midc - 1 - } - } - return maxc -} diff --git a/les/vflux/server/prioritypool_test.go b/les/vflux/server/prioritypool_test.go deleted file mode 100644 index 60b7b83bbc..0000000000 --- a/les/vflux/server/prioritypool_test.go +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "math/rand" - "reflect" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -const ( - testCapacityStepDiv = 100 - testCapacityToleranceDiv = 10 - testMinCap = 100 -) - -type ppTestClient struct { - node *enode.Node - balance, cap uint64 -} - -func (c *ppTestClient) priority(cap uint64) int64 { - return int64(c.balance / cap) -} - -func (c *ppTestClient) estimatePriority(cap uint64, addBalance int64, future, bias time.Duration, update bool) int64 { - return int64(c.balance / cap) -} - -func TestPriorityPool(t *testing.T) { - t.Parallel() - - clock := &mclock.Simulated{} - setup := newServerSetup() - setup.balanceField = setup.setup.NewField("ppTestClient", reflect.TypeOf(&ppTestClient{})) - ns := nodestate.NewNodeStateMachine(nil, nil, clock, setup.setup) - - ns.SubscribeField(setup.capacityField, func(node *enode.Node, state nodestate.Flags, oldValue, newValue interface{}) { - if n := ns.GetField(node, setup.balanceField); n != nil { - c := n.(*ppTestClient) - c.cap = newValue.(uint64) - } - }) - pp := newPriorityPool(ns, setup, clock, testMinCap, 0, testCapacityStepDiv, testCapacityStepDiv) - ns.Start() - pp.SetLimits(100, 1000000) - clients := make([]*ppTestClient, 100) - raise := func(c *ppTestClient) { - for { - var ok bool - ns.Operation(func() { - newCap := c.cap + c.cap/testCapacityStepDiv - ok = pp.requestCapacity(c.node, newCap, newCap, 0) == newCap - }) - if !ok { - return - } - } - } - var sumBalance uint64 - check := func(c *ppTestClient) { - expCap := 1000000 * c.balance / sumBalance - capTol := expCap / testCapacityToleranceDiv - if c.cap < expCap-capTol || c.cap > expCap+capTol { - t.Errorf("Wrong node capacity (expected %d, got %d)", expCap, c.cap) - } - } - - for i := range clients { - c := &ppTestClient{ - node: enode.SignNull(&enr.Record{}, enode.ID{byte(i)}), - balance: 100000000000, - cap: 1000, - } - sumBalance += c.balance - clients[i] = c - ns.SetField(c.node, setup.balanceField, c) - ns.SetState(c.node, setup.inactiveFlag, nodestate.Flags{}, 0) - raise(c) - check(c) - } - - for count := 0; count < 100; count++ { - c := clients[rand.Intn(len(clients))] - oldBalance := c.balance - c.balance = uint64(rand.Int63n(100000000000) + 100000000000) - sumBalance += c.balance - oldBalance - pp.ns.SetState(c.node, setup.updateFlag, nodestate.Flags{}, 0) - pp.ns.SetState(c.node, nodestate.Flags{}, setup.updateFlag, 0) - if c.balance > oldBalance { - raise(c) - } else { - for _, c := range clients { - raise(c) - } - } - // check whether capacities are proportional to balances - for _, c := range clients { - check(c) - } - if count%10 == 0 { - // test available capacity calculation with capacity curve - c = clients[rand.Intn(len(clients))] - curve := pp.getCapacityCurve().exclude(c.node.ID()) - - add := uint64(rand.Int63n(10000000000000)) - c.balance += add - sumBalance += add - expCap := curve.maxCapacity(func(cap uint64) int64 { - return int64(c.balance / cap) - }) - var ok bool - expFail := expCap + 10 - if expFail < testMinCap { - expFail = testMinCap - } - ns.Operation(func() { - ok = pp.requestCapacity(c.node, expFail, expFail, 0) == expFail - }) - if ok { - t.Errorf("Request for more than expected available capacity succeeded") - } - if expCap >= testMinCap { - ns.Operation(func() { - ok = pp.requestCapacity(c.node, expCap, expCap, 0) == expCap - }) - if !ok { - t.Errorf("Request for expected available capacity failed") - } - } - c.balance -= add - sumBalance -= add - pp.ns.SetState(c.node, setup.updateFlag, nodestate.Flags{}, 0) - pp.ns.SetState(c.node, nodestate.Flags{}, setup.updateFlag, 0) - for _, c := range clients { - raise(c) - } - } - } - - ns.Stop() -} - -func TestCapacityCurve(t *testing.T) { - t.Parallel() - - clock := &mclock.Simulated{} - setup := newServerSetup() - setup.balanceField = setup.setup.NewField("ppTestClient", reflect.TypeOf(&ppTestClient{})) - ns := nodestate.NewNodeStateMachine(nil, nil, clock, setup.setup) - - pp := newPriorityPool(ns, setup, clock, 400000, 0, 2, 2) - ns.Start() - pp.SetLimits(10, 10000000) - clients := make([]*ppTestClient, 10) - - for i := range clients { - c := &ppTestClient{ - node: enode.SignNull(&enr.Record{}, enode.ID{byte(i)}), - balance: 100000000000 * uint64(i+1), - cap: 1000000, - } - clients[i] = c - ns.SetField(c.node, setup.balanceField, c) - ns.SetState(c.node, setup.inactiveFlag, nodestate.Flags{}, 0) - ns.Operation(func() { - pp.requestCapacity(c.node, c.cap, c.cap, 0) - }) - } - - curve := pp.getCapacityCurve() - check := func(balance, expCap uint64) { - cap := curve.maxCapacity(func(cap uint64) int64 { - return int64(balance / cap) - }) - var fail bool - if cap == 0 || expCap == 0 { - fail = cap != expCap - } else { - pri := balance / cap - expPri := balance / expCap - fail = pri != expPri && pri != expPri+1 - } - if fail { - t.Errorf("Incorrect capacity for %d balance (got %d, expected %d)", balance, cap, expCap) - } - } - - check(0, 0) - check(10000000000, 100000) - check(50000000000, 500000) - check(100000000000, 1000000) - check(200000000000, 1000000) - check(300000000000, 1500000) - check(450000000000, 1500000) - check(600000000000, 2000000) - check(800000000000, 2000000) - check(1000000000000, 2500000) - - pp.SetLimits(11, 10000000) - curve = pp.getCapacityCurve() - - check(0, 0) - check(10000000000, 100000) - check(50000000000, 500000) - check(150000000000, 750000) - check(200000000000, 1000000) - check(220000000000, 1100000) - check(275000000000, 1100000) - check(375000000000, 1500000) - check(450000000000, 1500000) - check(600000000000, 2000000) - check(800000000000, 2000000) - check(1000000000000, 2500000) - - ns.Stop() -} diff --git a/les/vflux/server/service.go b/les/vflux/server/service.go deleted file mode 100644 index 40515f072e..0000000000 --- a/les/vflux/server/service.go +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "net" - "strings" - "sync" - "time" - - "github.com/ethereum/go-ethereum/les/utils" - "github.com/ethereum/go-ethereum/les/vflux" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/rlp" -) - -type ( - // Server serves vflux requests - Server struct { - limiter *utils.Limiter - lock sync.Mutex - services map[string]*serviceEntry - delayPerRequest time.Duration - } - - // Service is a service registered at the Server and identified by a string id - Service interface { - Handle(id enode.ID, address string, name string, data []byte) []byte // never called concurrently - } - - serviceEntry struct { - id, desc string - backend Service - } -) - -// NewServer creates a new Server -func NewServer(delayPerRequest time.Duration) *Server { - return &Server{ - limiter: utils.NewLimiter(1000), - delayPerRequest: delayPerRequest, - services: make(map[string]*serviceEntry), - } -} - -// Register registers a Service -func (s *Server) Register(b Service, id, desc string) { - srv := &serviceEntry{backend: b, id: id, desc: desc} - if strings.Contains(srv.id, ":") { - // srv.id + ":" will be used as a service database prefix - log.Error("Service ID contains ':'", "id", srv.id) - return - } - s.lock.Lock() - s.services[srv.id] = srv - s.lock.Unlock() -} - -// Serve serves a vflux request batch -// Note: requests are served by the Handle functions of the registered services. Serve -// may be called concurrently but the Handle functions are called sequentially and -// therefore thread safety is guaranteed. -func (s *Server) Serve(id enode.ID, address string, requests vflux.Requests) vflux.Replies { - reqLen := uint(len(requests)) - if reqLen == 0 || reqLen > vflux.MaxRequestLength { - return nil - } - // Note: the value parameter will be supplied by the token sale module (total amount paid) - ch := <-s.limiter.Add(id, address, 0, reqLen) - if ch == nil { - return nil - } - // Note: the limiter ensures that the following section is not running concurrently, - // the lock only protects against contention caused by new service registration - s.lock.Lock() - results := make(vflux.Replies, len(requests)) - for i, req := range requests { - if service := s.services[req.Service]; service != nil { - results[i] = service.backend.Handle(id, address, req.Name, req.Params) - } - } - s.lock.Unlock() - time.Sleep(s.delayPerRequest * time.Duration(reqLen)) - close(ch) - return results -} - -// ServeEncoded serves an encoded vflux request batch and returns the encoded replies -func (s *Server) ServeEncoded(id enode.ID, addr *net.UDPAddr, req []byte) []byte { - var requests vflux.Requests - if err := rlp.DecodeBytes(req, &requests); err != nil { - return nil - } - results := s.Serve(id, addr.String(), requests) - if results == nil { - return nil - } - res, _ := rlp.EncodeToBytes(&results) - return res -} - -// Stop shuts down the server -func (s *Server) Stop() { - s.limiter.Stop() -} diff --git a/les/vflux/server/status.go b/les/vflux/server/status.go deleted file mode 100644 index 2d7e25b684..0000000000 --- a/les/vflux/server/status.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package server - -import ( - "reflect" - - "github.com/ethereum/go-ethereum/p2p/nodestate" -) - -type peerWrapper struct{ clientPeer } // the NodeStateMachine type system needs this wrapper - -// serverSetup is a wrapper of the node state machine setup, which contains -// all the created flags and fields used in the vflux server side. -type serverSetup struct { - setup *nodestate.Setup - clientField nodestate.Field // Field contains the client peer handler - - // Flags and fields controlled by balance tracker. BalanceTracker - // is responsible for setting/deleting these flags or fields. - priorityFlag nodestate.Flags // Flag is set if the node has a positive balance - updateFlag nodestate.Flags // Flag is set whenever the node balance is changed(priority changed) - balanceField nodestate.Field // Field contains the client balance for priority calculation - - // Flags and fields controlled by priority queue. Priority queue - // is responsible for setting/deleting these flags or fields. - activeFlag nodestate.Flags // Flag is set if the node is active - inactiveFlag nodestate.Flags // Flag is set if the node is inactive - capacityField nodestate.Field // Field contains the capacity of the node - queueField nodestate.Field // Field contains the information in the priority queue -} - -// newServerSetup initializes the setup for state machine and returns the flags/fields group. -func newServerSetup() *serverSetup { - setup := &serverSetup{setup: &nodestate.Setup{}} - setup.clientField = setup.setup.NewField("client", reflect.TypeOf(peerWrapper{})) - setup.priorityFlag = setup.setup.NewFlag("priority") - setup.updateFlag = setup.setup.NewFlag("update") - setup.balanceField = setup.setup.NewField("balance", reflect.TypeOf(&nodeBalance{})) - setup.activeFlag = setup.setup.NewFlag("active") - setup.inactiveFlag = setup.setup.NewFlag("inactive") - setup.capacityField = setup.setup.NewField("capacity", reflect.TypeOf(uint64(0))) - setup.queueField = setup.setup.NewField("queue", reflect.TypeOf(&ppNodeInfo{})) - return setup -} diff --git a/tests/fuzzers/les/les-fuzzer.go b/tests/fuzzers/les/les-fuzzer.go deleted file mode 100644 index 209dda0bb9..0000000000 --- a/tests/fuzzers/les/les-fuzzer.go +++ /dev/null @@ -1,411 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import ( - "bytes" - "encoding/binary" - "io" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/txpool/legacypool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/crypto" - l "github.com/ethereum/go-ethereum/les" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie" -) - -var ( - bankKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") - bankAddr = crypto.PubkeyToAddress(bankKey.PublicKey) - bankFunds = new(big.Int).Mul(big.NewInt(100), big.NewInt(params.Ether)) - - testChainLen = 256 - testContractCode = common.Hex2Bytes("606060405260cc8060106000396000f360606040526000357c01000000000000000000000000000000000000000000000000000000009004806360cd2685146041578063c16431b914606b57603f565b005b6055600480803590602001909190505060a9565b6040518082815260200191505060405180910390f35b60886004808035906020019091908035906020019091905050608a565b005b80600060005083606481101560025790900160005b50819055505b5050565b6000600060005082606481101560025790900160005b5054905060c7565b91905056") - - chain *core.BlockChain - addresses []common.Address - txHashes []common.Hash - - chtTrie *trie.Trie - bloomTrie *trie.Trie - chtKeys [][]byte - bloomKeys [][]byte -) - -func makechain() (bc *core.BlockChain, addresses []common.Address, txHashes []common.Hash) { - gspec := &core.Genesis{ - Config: params.TestChainConfig, - Alloc: core.GenesisAlloc{bankAddr: {Balance: bankFunds}}, - GasLimit: 100000000, - } - signer := types.HomesteadSigner{} - _, blocks, _ := core.GenerateChainWithGenesis(gspec, ethash.NewFaker(), testChainLen, - func(i int, gen *core.BlockGen) { - var ( - tx *types.Transaction - addr common.Address - ) - nonce := uint64(i) - if i%4 == 0 { - tx, _ = types.SignTx(types.NewContractCreation(nonce, big.NewInt(0), 200000, big.NewInt(params.GWei), testContractCode), signer, bankKey) - addr = crypto.CreateAddress(bankAddr, nonce) - } else { - addr = common.BigToAddress(big.NewInt(int64(i))) - tx, _ = types.SignTx(types.NewTransaction(nonce, addr, big.NewInt(10000), params.TxGas, big.NewInt(params.GWei), nil), signer, bankKey) - } - gen.AddTx(tx) - addresses = append(addresses, addr) - txHashes = append(txHashes, tx.Hash()) - }) - bc, _ = core.NewBlockChain(rawdb.NewMemoryDatabase(), nil, gspec, nil, ethash.NewFaker(), vm.Config{}, nil, nil) - if _, err := bc.InsertChain(blocks); err != nil { - panic(err) - } - return -} - -func makeTries() (chtTrie *trie.Trie, bloomTrie *trie.Trie, chtKeys, bloomKeys [][]byte) { - chtTrie = trie.NewEmpty(trie.NewDatabase(rawdb.NewMemoryDatabase(), trie.HashDefaults)) - bloomTrie = trie.NewEmpty(trie.NewDatabase(rawdb.NewMemoryDatabase(), trie.HashDefaults)) - for i := 0; i < testChainLen; i++ { - // The element in CHT is -> - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(i+1)) - chtTrie.MustUpdate(key, []byte{0x1, 0xf}) - chtKeys = append(chtKeys, key) - - // The element in Bloom trie is <2 byte bit index> + -> bloom - key2 := make([]byte, 10) - binary.BigEndian.PutUint64(key2[2:], uint64(i+1)) - bloomTrie.MustUpdate(key2, []byte{0x2, 0xe}) - bloomKeys = append(bloomKeys, key2) - } - return -} - -func init() { - chain, addresses, txHashes = makechain() - chtTrie, bloomTrie, chtKeys, bloomKeys = makeTries() -} - -type fuzzer struct { - chain *core.BlockChain - pool *txpool.TxPool - - chainLen int - addresses []common.Address - txs []common.Hash - nonce uint64 - - chtKeys [][]byte - bloomKeys [][]byte - chtTrie *trie.Trie - bloomTrie *trie.Trie - - input io.Reader - exhausted bool -} - -func newFuzzer(input []byte) *fuzzer { - pool := legacypool.New(legacypool.DefaultConfig, chain) - txpool, _ := txpool.New(new(big.Int).SetUint64(legacypool.DefaultConfig.PriceLimit), chain, []txpool.SubPool{pool}) - - return &fuzzer{ - chain: chain, - chainLen: testChainLen, - addresses: addresses, - txs: txHashes, - chtTrie: chtTrie, - bloomTrie: bloomTrie, - chtKeys: chtKeys, - bloomKeys: bloomKeys, - nonce: uint64(len(txHashes)), - pool: txpool, - input: bytes.NewReader(input), - } -} - -func (f *fuzzer) read(size int) []byte { - out := make([]byte, size) - if _, err := f.input.Read(out); err != nil { - f.exhausted = true - } - return out -} - -func (f *fuzzer) randomByte() byte { - d := f.read(1) - return d[0] -} - -func (f *fuzzer) randomBool() bool { - d := f.read(1) - return d[0]&1 == 1 -} - -func (f *fuzzer) randomInt(max int) int { - if max == 0 { - return 0 - } - if max <= 256 { - return int(f.randomByte()) % max - } - var a uint16 - if err := binary.Read(f.input, binary.LittleEndian, &a); err != nil { - f.exhausted = true - } - return int(a % uint16(max)) -} - -func (f *fuzzer) randomX(max int) uint64 { - var a uint16 - if err := binary.Read(f.input, binary.LittleEndian, &a); err != nil { - f.exhausted = true - } - if a < 0x8000 { - return uint64(a%uint16(max+1)) - 1 - } - return (uint64(1)<<(a%64+1) - 1) & (uint64(a) * 343897772345826595) -} - -func (f *fuzzer) randomBlockHash() common.Hash { - h := f.chain.GetCanonicalHash(uint64(f.randomInt(3 * f.chainLen))) - if h != (common.Hash{}) { - return h - } - return common.BytesToHash(f.read(common.HashLength)) -} - -func (f *fuzzer) randomAddress() []byte { - i := f.randomInt(3 * len(f.addresses)) - if i < len(f.addresses) { - return f.addresses[i].Bytes() - } - return f.read(common.AddressLength) -} - -func (f *fuzzer) randomCHTTrieKey() []byte { - i := f.randomInt(3 * len(f.chtKeys)) - if i < len(f.chtKeys) { - return f.chtKeys[i] - } - return f.read(8) -} - -func (f *fuzzer) randomBloomTrieKey() []byte { - i := f.randomInt(3 * len(f.bloomKeys)) - if i < len(f.bloomKeys) { - return f.bloomKeys[i] - } - return f.read(10) -} - -func (f *fuzzer) randomTxHash() common.Hash { - i := f.randomInt(3 * len(f.txs)) - if i < len(f.txs) { - return f.txs[i] - } - return common.BytesToHash(f.read(common.HashLength)) -} - -func (f *fuzzer) BlockChain() *core.BlockChain { - return f.chain -} - -func (f *fuzzer) TxPool() *txpool.TxPool { - return f.pool -} - -func (f *fuzzer) ArchiveMode() bool { - return false -} - -func (f *fuzzer) AddTxsSync() bool { - return false -} - -func (f *fuzzer) GetHelperTrie(typ uint, index uint64) *trie.Trie { - if typ == 0 { - return f.chtTrie - } else if typ == 1 { - return f.bloomTrie - } - return nil -} - -type dummyMsg struct { - data []byte -} - -func (d dummyMsg) Decode(val interface{}) error { - return rlp.DecodeBytes(d.data, val) -} - -func (f *fuzzer) doFuzz(msgCode uint64, packet interface{}) { - enc, err := rlp.EncodeToBytes(packet) - if err != nil { - panic(err) - } - version := f.randomInt(3) + 2 // [LES2, LES3, LES4] - peer, closeFn := l.NewFuzzerPeer(version) - defer closeFn() - fn, _, _, err := l.Les3[msgCode].Handle(dummyMsg{enc}) - if err != nil { - panic(err) - } - fn(f, peer, func() bool { return true }) -} - -func fuzz(input []byte) int { - // We expect some large inputs - if len(input) < 100 { - return -1 - } - f := newFuzzer(input) - if f.exhausted { - return -1 - } - for !f.exhausted { - switch f.randomInt(8) { - case 0: - req := &l.GetBlockHeadersPacket{ - Query: l.GetBlockHeadersData{ - Amount: f.randomX(l.MaxHeaderFetch + 1), - Skip: f.randomX(10), - Reverse: f.randomBool(), - }, - } - if f.randomBool() { - req.Query.Origin.Hash = f.randomBlockHash() - } else { - req.Query.Origin.Number = uint64(f.randomInt(f.chainLen * 2)) - } - f.doFuzz(l.GetBlockHeadersMsg, req) - - case 1: - req := &l.GetBlockBodiesPacket{Hashes: make([]common.Hash, f.randomInt(l.MaxBodyFetch+1))} - for i := range req.Hashes { - req.Hashes[i] = f.randomBlockHash() - } - f.doFuzz(l.GetBlockBodiesMsg, req) - - case 2: - req := &l.GetCodePacket{Reqs: make([]l.CodeReq, f.randomInt(l.MaxCodeFetch+1))} - for i := range req.Reqs { - req.Reqs[i] = l.CodeReq{ - BHash: f.randomBlockHash(), - AccountAddress: f.randomAddress(), - } - } - f.doFuzz(l.GetCodeMsg, req) - - case 3: - req := &l.GetReceiptsPacket{Hashes: make([]common.Hash, f.randomInt(l.MaxReceiptFetch+1))} - for i := range req.Hashes { - req.Hashes[i] = f.randomBlockHash() - } - f.doFuzz(l.GetReceiptsMsg, req) - - case 4: - req := &l.GetProofsPacket{Reqs: make([]l.ProofReq, f.randomInt(l.MaxProofsFetch+1))} - for i := range req.Reqs { - if f.randomBool() { - req.Reqs[i] = l.ProofReq{ - BHash: f.randomBlockHash(), - AccountAddress: f.randomAddress(), - Key: f.randomAddress(), - FromLevel: uint(f.randomX(3)), - } - } else { - req.Reqs[i] = l.ProofReq{ - BHash: f.randomBlockHash(), - Key: f.randomAddress(), - FromLevel: uint(f.randomX(3)), - } - } - } - f.doFuzz(l.GetProofsV2Msg, req) - - case 5: - req := &l.GetHelperTrieProofsPacket{Reqs: make([]l.HelperTrieReq, f.randomInt(l.MaxHelperTrieProofsFetch+1))} - for i := range req.Reqs { - switch f.randomInt(3) { - case 0: - // Canonical hash trie - req.Reqs[i] = l.HelperTrieReq{ - Type: 0, - TrieIdx: f.randomX(3), - Key: f.randomCHTTrieKey(), - FromLevel: uint(f.randomX(3)), - AuxReq: uint(2), - } - case 1: - // Bloom trie - req.Reqs[i] = l.HelperTrieReq{ - Type: 1, - TrieIdx: f.randomX(3), - Key: f.randomBloomTrieKey(), - FromLevel: uint(f.randomX(3)), - AuxReq: 0, - } - default: - // Random trie - req.Reqs[i] = l.HelperTrieReq{ - Type: 2, - TrieIdx: f.randomX(3), - Key: f.randomCHTTrieKey(), - FromLevel: uint(f.randomX(3)), - AuxReq: 0, - } - } - } - f.doFuzz(l.GetHelperTrieProofsMsg, req) - - case 6: - req := &l.SendTxPacket{Txs: make([]*types.Transaction, f.randomInt(l.MaxTxSend+1))} - signer := types.HomesteadSigner{} - for i := range req.Txs { - var nonce uint64 - if f.randomBool() { - nonce = uint64(f.randomByte()) - } else { - nonce = f.nonce - f.nonce += 1 - } - req.Txs[i], _ = types.SignTx(types.NewTransaction(nonce, common.Address{}, big.NewInt(10000), params.TxGas, big.NewInt(1000000000*int64(f.randomByte())), nil), signer, bankKey) - } - f.doFuzz(l.SendTxV2Msg, req) - - case 7: - req := &l.GetTxStatusPacket{Hashes: make([]common.Hash, f.randomInt(l.MaxTxStatus+1))} - for i := range req.Hashes { - req.Hashes[i] = f.randomTxHash() - } - f.doFuzz(l.GetTxStatusMsg, req) - } - } - return 0 -} diff --git a/tests/fuzzers/les/les_test.go b/tests/fuzzers/les/les_test.go deleted file mode 100644 index 53af45ceb4..0000000000 --- a/tests/fuzzers/les/les_test.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package les - -import "testing" - -func Fuzz(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzz(data) - }) -} diff --git a/tests/fuzzers/vflux/clientpool-fuzzer.go b/tests/fuzzers/vflux/clientpool-fuzzer.go deleted file mode 100644 index de694a7b3f..0000000000 --- a/tests/fuzzers/vflux/clientpool-fuzzer.go +++ /dev/null @@ -1,333 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package vflux - -import ( - "bytes" - "encoding/binary" - "io" - "math" - "math/big" - "time" - - "github.com/ethereum/go-ethereum/common/mclock" - "github.com/ethereum/go-ethereum/ethdb/memorydb" - "github.com/ethereum/go-ethereum/les/vflux" - vfs "github.com/ethereum/go-ethereum/les/vflux/server" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/p2p/enr" - "github.com/ethereum/go-ethereum/rlp" -) - -var ( - debugMode = false - doLog = func(msg string, ctx ...interface{}) { - if !debugMode { - return - } - log.Info(msg, ctx...) - } -) - -type fuzzer struct { - peers [256]*clientPeer - disconnectList []*clientPeer - input io.Reader - exhausted bool - activeCount, activeCap uint64 - maxCount, maxCap uint64 -} - -type clientPeer struct { - fuzzer *fuzzer - node *enode.Node - freeID string - timeout time.Duration - - balance vfs.ConnectedBalance - capacity uint64 -} - -func (p *clientPeer) Node() *enode.Node { - return p.node -} - -func (p *clientPeer) FreeClientId() string { - return p.freeID -} - -func (p *clientPeer) InactiveAllowance() time.Duration { - return p.timeout -} - -func (p *clientPeer) UpdateCapacity(newCap uint64, requested bool) { - origin, originTotal := p.capacity, p.fuzzer.activeCap - p.fuzzer.activeCap -= p.capacity - if p.capacity != 0 { - p.fuzzer.activeCount-- - } - p.capacity = newCap - p.fuzzer.activeCap += p.capacity - if p.capacity != 0 { - p.fuzzer.activeCount++ - } - doLog("Update capacity", "peer", p.node.ID(), "origin", origin, "cap", newCap, "origintotal", originTotal, "total", p.fuzzer.activeCap, "requested", requested) -} - -func (p *clientPeer) Disconnect() { - origin, originTotal := p.capacity, p.fuzzer.activeCap - p.fuzzer.disconnectList = append(p.fuzzer.disconnectList, p) - p.fuzzer.activeCap -= p.capacity - if p.capacity != 0 { - p.fuzzer.activeCount-- - } - p.capacity = 0 - p.balance = nil - doLog("Disconnect", "peer", p.node.ID(), "origin", origin, "origintotal", originTotal, "total", p.fuzzer.activeCap) -} - -func newFuzzer(input []byte) *fuzzer { - f := &fuzzer{ - input: bytes.NewReader(input), - } - for i := range f.peers { - f.peers[i] = &clientPeer{ - fuzzer: f, - node: enode.SignNull(new(enr.Record), enode.ID{byte(i)}), - freeID: string([]byte{byte(i)}), - timeout: f.randomDelay(), - } - } - return f -} - -func (f *fuzzer) read(size int) []byte { - out := make([]byte, size) - if _, err := f.input.Read(out); err != nil { - f.exhausted = true - } - return out -} - -func (f *fuzzer) randomByte() byte { - d := f.read(1) - return d[0] -} - -func (f *fuzzer) randomBool() bool { - d := f.read(1) - return d[0]&1 == 1 -} - -func (f *fuzzer) randomInt(max int) int { - if max == 0 { - return 0 - } - if max <= 256 { - return int(f.randomByte()) % max - } - var a uint16 - if err := binary.Read(f.input, binary.LittleEndian, &a); err != nil { - f.exhausted = true - } - return int(a % uint16(max)) -} - -func (f *fuzzer) randomTokenAmount(signed bool) int64 { - x := uint64(f.randomInt(65000)) - x = x * x * x * x - - if signed && (x&1) == 1 { - if x <= math.MaxInt64 { - return -int64(x) - } - return math.MinInt64 - } - if x <= math.MaxInt64 { - return int64(x) - } - return math.MaxInt64 -} - -func (f *fuzzer) randomDelay() time.Duration { - delay := f.randomByte() - if delay < 128 { - return time.Duration(delay) * time.Second - } - return 0 -} - -func (f *fuzzer) randomFactors() vfs.PriceFactors { - return vfs.PriceFactors{ - TimeFactor: float64(f.randomByte()) / 25500, - CapacityFactor: float64(f.randomByte()) / 255, - RequestFactor: float64(f.randomByte()) / 255, - } -} - -func (f *fuzzer) connectedBalanceOp(balance vfs.ConnectedBalance, id enode.ID) { - switch f.randomInt(3) { - case 0: - cost := uint64(f.randomTokenAmount(false)) - balance.RequestServed(cost) - doLog("Serve request cost", "id", id, "amount", cost) - case 1: - posFactor, negFactor := f.randomFactors(), f.randomFactors() - balance.SetPriceFactors(posFactor, negFactor) - doLog("Set price factor", "pos", posFactor, "neg", negFactor) - case 2: - balance.GetBalance() - balance.GetRawBalance() - balance.GetPriceFactors() - } -} - -func (f *fuzzer) atomicBalanceOp(balance vfs.AtomicBalanceOperator, id enode.ID) { - switch f.randomInt(3) { - case 0: - amount := f.randomTokenAmount(true) - balance.AddBalance(amount) - doLog("Add balance", "id", id, "amount", amount) - case 1: - pos, neg := uint64(f.randomTokenAmount(false)), uint64(f.randomTokenAmount(false)) - balance.SetBalance(pos, neg) - doLog("Set balance", "id", id, "pos", pos, "neg", neg) - case 2: - balance.GetBalance() - balance.GetRawBalance() - balance.GetPriceFactors() - } -} - -func fuzzClientPool(input []byte) int { - if len(input) > 10000 { - return -1 - } - f := newFuzzer(input) - if f.exhausted { - return 0 - } - clock := &mclock.Simulated{} - db := memorydb.New() - pool := vfs.NewClientPool(db, 10, f.randomDelay(), clock, func() bool { return true }) - pool.Start() - defer pool.Stop() - - count := 0 - for !f.exhausted && count < 1000 { - count++ - switch f.randomInt(11) { - case 0: - i := int(f.randomByte()) - f.peers[i].balance = pool.Register(f.peers[i]) - doLog("Register peer", "id", f.peers[i].node.ID()) - case 1: - i := int(f.randomByte()) - f.peers[i].Disconnect() - doLog("Disconnect peer", "id", f.peers[i].node.ID()) - case 2: - f.maxCount = uint64(f.randomByte()) - f.maxCap = uint64(f.randomByte()) - f.maxCap *= f.maxCap - - count, cap := pool.Limits() - pool.SetLimits(f.maxCount, f.maxCap) - doLog("Set limits", "maxcount", f.maxCount, "maxcap", f.maxCap, "origincount", count, "oricap", cap) - case 3: - bias := f.randomDelay() - pool.SetConnectedBias(f.randomDelay()) - doLog("Set connection bias", "bias", bias) - case 4: - pos, neg := f.randomFactors(), f.randomFactors() - pool.SetDefaultFactors(pos, neg) - doLog("Set default factors", "pos", pos, "neg", neg) - case 5: - pos, neg := uint64(f.randomInt(50000)), uint64(f.randomInt(50000)) - pool.SetExpirationTCs(pos, neg) - doLog("Set expiration constants", "pos", pos, "neg", neg) - case 6: - var ( - index = f.randomByte() - reqCap = uint64(f.randomByte()) - bias = f.randomDelay() - requested = f.randomBool() - ) - pool.SetCapacity(f.peers[index].node, reqCap, bias, requested) - doLog("Set capacity", "id", f.peers[index].node.ID(), "reqcap", reqCap, "bias", bias, "requested", requested) - case 7: - index := f.randomByte() - if balance := f.peers[index].balance; balance != nil { - f.connectedBalanceOp(balance, f.peers[index].node.ID()) - } - case 8: - index := f.randomByte() - pool.BalanceOperation(f.peers[index].node.ID(), f.peers[index].freeID, func(balance vfs.AtomicBalanceOperator) { - count := f.randomInt(4) - for i := 0; i < count; i++ { - f.atomicBalanceOp(balance, f.peers[index].node.ID()) - } - }) - case 9: - pool.TotalTokenAmount() - pool.GetExpirationTCs() - pool.Active() - pool.Limits() - pool.GetPosBalanceIDs(f.peers[f.randomByte()].node.ID(), f.peers[f.randomByte()].node.ID(), f.randomInt(100)) - case 10: - req := vflux.CapacityQueryReq{ - Bias: uint64(f.randomByte()), - AddTokens: make([]vflux.IntOrInf, f.randomInt(vflux.CapacityQueryMaxLen+1)), - } - for i := range req.AddTokens { - v := vflux.IntOrInf{Type: uint8(f.randomInt(4))} - if v.Type < 2 { - v.Value = *big.NewInt(f.randomTokenAmount(false)) - } - req.AddTokens[i] = v - } - reqEnc, err := rlp.EncodeToBytes(&req) - if err != nil { - panic(err) - } - p := int(f.randomByte()) - if p < len(reqEnc) { - reqEnc[p] = f.randomByte() - } - pool.Handle(f.peers[f.randomByte()].node.ID(), f.peers[f.randomByte()].freeID, vflux.CapacityQueryName, reqEnc) - } - - for _, peer := range f.disconnectList { - pool.Unregister(peer) - doLog("Unregister peer", "id", peer.node.ID()) - } - f.disconnectList = nil - if d := f.randomDelay(); d > 0 { - clock.Run(d) - } - doLog("Clientpool stats in fuzzer", "count", f.activeCap, "maxcount", f.maxCount, "cap", f.activeCap, "maxcap", f.maxCap) - activeCount, activeCap := pool.Active() - doLog("Clientpool stats in pool", "count", activeCount, "cap", activeCap) - if activeCount != f.activeCount || activeCap != f.activeCap { - panic(nil) - } - if f.activeCount > f.maxCount || f.activeCap > f.maxCap { - panic(nil) - } - } - return 0 -} diff --git a/tests/fuzzers/vflux/clientpool_test.go b/tests/fuzzers/vflux/clientpool_test.go deleted file mode 100644 index 40c5f22905..0000000000 --- a/tests/fuzzers/vflux/clientpool_test.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package vflux - -import "testing" - -func FuzzClientPool(f *testing.F) { - f.Fuzz(func(t *testing.T, data []byte) { - fuzzClientPool(data) - }) -} From 6ad221afab85925227b9c5c3eab5b1a54e627e37 Mon Sep 17 00:00:00 2001 From: protolambda Date: Thu, 23 Nov 2023 16:38:32 +0100 Subject: [PATCH 092/223] params: interopTime configuration and override option --- cmd/geth/config.go | 5 +++++ cmd/geth/main.go | 1 + cmd/utils/flags.go | 5 +++++ core/genesis.go | 4 ++++ eth/backend.go | 3 +++ eth/ethconfig/config.go | 2 ++ params/config.go | 9 +++++++++ 7 files changed, 29 insertions(+) diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 81128ab007..194f779842 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -180,6 +180,11 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { cfg.Eth.OverrideOptimismCanyon = &v } + if ctx.IsSet(utils.OverrideOptimismInterop.Name) { + v := ctx.Uint64(utils.OverrideOptimismInterop.Name) + cfg.Eth.OverrideOptimismInterop = &v + } + if ctx.IsSet(utils.OverrideVerkle.Name) { v := ctx.Uint64(utils.OverrideVerkle.Name) cfg.Eth.OverrideVerkle = &v diff --git a/cmd/geth/main.go b/cmd/geth/main.go index d4942aabf9..17b9d3216d 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -68,6 +68,7 @@ var ( utils.OverrideCancun, utils.OverrideVerkle, utils.OverrideOptimismCanyon, + utils.OverrideOptimismInterop, utils.EnablePersonal, utils.TxPoolLocalsFlag, utils.TxPoolNoLocalsFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 7b4316d054..c5c81dc16b 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -267,6 +267,11 @@ var ( Usage: "Manually specify the Optimsim Canyon fork timestamp, overriding the bundled setting", Category: flags.EthCategory, } + OverrideOptimismInterop = &cli.Uint64Flag{ + Name: "override.interop", + Usage: "Manually specify the Optimsim Interop feature-set fork timestamp, overriding the bundled setting", + Category: flags.EthCategory, + } SyncModeFlag = &flags.TextMarshalerFlag{ Name: "syncmode", Usage: `Blockchain sync mode ("snap", "full" or "light")`, diff --git a/core/genesis.go b/core/genesis.go index bc346d5ace..47cc0c2cb2 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -259,6 +259,7 @@ type ChainOverrides struct { // optimism OverrideOptimismCanyon *uint64 ApplySuperchainUpgrades bool + OverrideOptimismInterop *uint64 } // SetupGenesisBlock writes or updates the genesis block in db. @@ -318,6 +319,9 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen config.Optimism.EIP1559DenominatorCanyon = 250 } } + if overrides != nil && overrides.OverrideOptimismInterop != nil { + config.InteropTime = overrides.OverrideOptimismInterop + } } } // Just commit the new block if there is no stored genesis block. diff --git a/eth/backend.go b/eth/backend.go index 97224ecbfc..a1b4c4ba09 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -219,6 +219,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if config.OverrideOptimismCanyon != nil { overrides.OverrideOptimismCanyon = config.OverrideOptimismCanyon } + if config.OverrideOptimismInterop != nil { + overrides.OverrideOptimismInterop = config.OverrideOptimismInterop + } overrides.ApplySuperchainUpgrades = config.ApplySuperchainUpgrades eth.blockchain, err = core.NewBlockChain(chainDb, cacheConfig, config.Genesis, &overrides, eth.engine, vmConfig, eth.shouldPreserve, &config.TransactionHistory) if err != nil { diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index f31d31aab8..0422bef155 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -172,6 +172,8 @@ type Config struct { OverrideOptimismCanyon *uint64 `toml:",omitempty"` + OverrideOptimismInterop *uint64 `toml:",omitempty"` + // ApplySuperchainUpgrades requests the node to load chain-configuration from the superchain-registry. ApplySuperchainUpgrades bool `toml:",omitempty"` diff --git a/params/config.go b/params/config.go index 22041b76e6..3f9cabc159 100644 --- a/params/config.go +++ b/params/config.go @@ -359,6 +359,8 @@ type ChainConfig struct { RegolithTime *uint64 `json:"regolithTime,omitempty"` // Regolith switch time (nil = no fork, 0 = already on optimism regolith) CanyonTime *uint64 `json:"canyonTime,omitempty"` // Canyon switch time (nil = no fork, 0 = already on optimism canyon) + InteropTime *uint64 `json:"interopTime,omitempty"` // Interop switch time (nil = no fork, 0 = already on optimism interop) + // TerminalTotalDifficulty is the amount of total difficulty reached by // the network that triggers the consensus upgrade. TerminalTotalDifficulty *big.Int `json:"terminalTotalDifficulty,omitempty"` @@ -505,6 +507,9 @@ func (c *ChainConfig) Description() string { if c.CanyonTime != nil { banner += fmt.Sprintf(" - Canyon: @%-10v\n", *c.CanyonTime) } + if c.InteropTime != nil { + banner += fmt.Sprintf(" - Interop: @%-10v\n", *c.InteropTime) + } return banner } @@ -621,6 +626,10 @@ func (c *ChainConfig) IsCanyon(time uint64) bool { return isTimestampForked(c.CanyonTime, time) } +func (c *ChainConfig) IsInterop(time uint64) bool { + return isTimestampForked(c.InteropTime, time) +} + // IsOptimism returns whether the node is an optimism node or not. func (c *ChainConfig) IsOptimism() bool { return c.Optimism != nil From 2a2013014c46844728421a1acc5ad40ca823414b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Fri, 24 Nov 2023 13:26:42 +0200 Subject: [PATCH 093/223] eth, internal/ethapi: drop some weird indirection (#28597) --- eth/api_backend.go | 4 ++-- internal/ethapi/api.go | 6 +++--- internal/ethapi/api_test.go | 5 ++--- internal/ethapi/backend.go | 2 +- internal/ethapi/transaction_args_test.go | 4 ++-- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/eth/api_backend.go b/eth/api_backend.go index 601e555158..84eb200095 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -249,7 +249,7 @@ func (b *EthAPIBackend) GetTd(ctx context.Context, hash common.Hash) *big.Int { return nil } -func (b *EthAPIBackend) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) (*vm.EVM, func() error) { +func (b *EthAPIBackend) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) *vm.EVM { if vmConfig == nil { vmConfig = b.eth.blockchain.GetVMConfig() } @@ -260,7 +260,7 @@ func (b *EthAPIBackend) GetEVM(ctx context.Context, msg *core.Message, state *st } else { context = core.NewEVMBlockContext(header, b.eth.BlockChain(), nil) } - return vm.NewEVM(context, txContext, state, b.eth.blockchain.Config(), *vmConfig), state.Error + return vm.NewEVM(context, txContext, state, b.eth.blockchain.Config(), *vmConfig) } func (b *EthAPIBackend) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription { diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 38a7924124..89c132ddee 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -1083,7 +1083,7 @@ func doCall(ctx context.Context, b Backend, args TransactionArgs, state *state.S if blockOverrides != nil { blockOverrides.Apply(&blockCtx) } - evm, vmError := b.GetEVM(ctx, msg, state, header, &vm.Config{NoBaseFee: true}, &blockCtx) + evm := b.GetEVM(ctx, msg, state, header, &vm.Config{NoBaseFee: true}, &blockCtx) // Wait for the context to be done and cancel the evm. Even if the // EVM has finished, cancelling may be done (repeatedly) @@ -1095,7 +1095,7 @@ func doCall(ctx context.Context, b Backend, args TransactionArgs, state *state.S // Execute the message. gp := new(core.GasPool).AddGas(math.MaxUint64) result, err := core.ApplyMessage(evm, msg, gp) - if err := vmError(); err != nil { + if err := state.Error(); err != nil { return nil, err } @@ -1640,7 +1640,7 @@ func AccessList(ctx context.Context, b Backend, blockNrOrHash rpc.BlockNumberOrH // Apply the transaction with the access list tracer tracer := logger.NewAccessListTracer(accessList, args.from(), to, precompiles) config := vm.Config{Tracer: tracer, NoBaseFee: true} - vmenv, _ := b.GetEVM(ctx, msg, statedb, header, &config, nil) + vmenv := b.GetEVM(ctx, msg, statedb, header, &config, nil) res, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(msg.GasLimit)) if err != nil { return nil, 0, nil, fmt.Errorf("failed to apply transaction: %v err: %v", args.toTransaction().Hash(), err) diff --git a/internal/ethapi/api_test.go b/internal/ethapi/api_test.go index a67bd1203b..4a7694737e 100644 --- a/internal/ethapi/api_test.go +++ b/internal/ethapi/api_test.go @@ -536,8 +536,7 @@ func (b testBackend) GetTd(ctx context.Context, hash common.Hash) *big.Int { } return big.NewInt(1) } -func (b testBackend) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockContext *vm.BlockContext) (*vm.EVM, func() error) { - vmError := func() error { return nil } +func (b testBackend) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockContext *vm.BlockContext) *vm.EVM { if vmConfig == nil { vmConfig = b.chain.GetVMConfig() } @@ -546,7 +545,7 @@ func (b testBackend) GetEVM(ctx context.Context, msg *core.Message, state *state if blockContext != nil { context = *blockContext } - return vm.NewEVM(context, txContext, state, b.chain.Config(), *vmConfig), vmError + return vm.NewEVM(context, txContext, state, b.chain.Config(), *vmConfig) } func (b testBackend) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription { panic("implement me") diff --git a/internal/ethapi/backend.go b/internal/ethapi/backend.go index 458fb811ed..50f338f5ca 100644 --- a/internal/ethapi/backend.go +++ b/internal/ethapi/backend.go @@ -68,7 +68,7 @@ type Backend interface { PendingBlockAndReceipts() (*types.Block, types.Receipts) GetReceipts(ctx context.Context, hash common.Hash) (types.Receipts, error) GetTd(ctx context.Context, hash common.Hash) *big.Int - GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) (*vm.EVM, func() error) + GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) *vm.EVM SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription diff --git a/internal/ethapi/transaction_args_test.go b/internal/ethapi/transaction_args_test.go index 9161d5e681..9dc58bdeb5 100644 --- a/internal/ethapi/transaction_args_test.go +++ b/internal/ethapi/transaction_args_test.go @@ -305,8 +305,8 @@ func (b *backendMock) GetLogs(ctx context.Context, blockHash common.Hash, number return nil, nil } func (b *backendMock) GetTd(ctx context.Context, hash common.Hash) *big.Int { return nil } -func (b *backendMock) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) (*vm.EVM, func() error) { - return nil, nil +func (b *backendMock) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) *vm.EVM { + return nil } func (b *backendMock) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription { return nil } func (b *backendMock) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription { From 333dd956bfdf1d5086d38cceedbba25a366fb6ac Mon Sep 17 00:00:00 2001 From: Ng Wei Han <47109095+weiihann@users.noreply.github.com> Date: Sat, 25 Nov 2023 21:56:22 +0800 Subject: [PATCH 094/223] trie: fix random test generator early terminate (#28590) This change fixes a minor bug in the `randTest.Generate` function, which caused the `quick.Check` to be a no-op. --- trie/trie_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/trie/trie_test.go b/trie/trie_test.go index 6af0f67b9f..c5bd3faf53 100644 --- a/trie/trie_test.go +++ b/trie/trie_test.go @@ -372,6 +372,9 @@ func TestRandomCases(t *testing.T) { // Instances of this test are created by Generate. type randTest []randTestStep +// compile-time interface check +var _ quick.Generator = (randTest)(nil) + type randTestStep struct { op int key []byte // for opUpdate, opDelete, opGet @@ -394,7 +397,7 @@ const ( func (randTest) Generate(r *rand.Rand, size int) reflect.Value { var finishedFn = func() bool { size-- - return size > 0 + return size == 0 } return reflect.ValueOf(generateSteps(finishedFn, r)) } From 1e28e0bb03c6911a691d7125cb8c5e41faac2eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Mon, 27 Nov 2023 16:20:09 +0200 Subject: [PATCH 095/223] eth/gasestimator, internal/ethapi: move gas estimator out of rpc (#28600) --- eth/gasestimator/gasestimator.go | 194 +++++++++++++++++++++++++++++++ internal/ethapi/api.go | 149 ++++-------------------- internal/ethapi/api_test.go | 8 +- 3 files changed, 222 insertions(+), 129 deletions(-) create mode 100644 eth/gasestimator/gasestimator.go diff --git a/eth/gasestimator/gasestimator.go b/eth/gasestimator/gasestimator.go new file mode 100644 index 0000000000..3e74b5b08b --- /dev/null +++ b/eth/gasestimator/gasestimator.go @@ -0,0 +1,194 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package gasestimator + +import ( + "context" + "errors" + "fmt" + "math" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" +) + +// Options are the contextual parameters to execute the requested call. +// +// Whilst it would be possible to pass a blockchain object that aggregates all +// these together, it would be excessively hard to test. Splitting the parts out +// allows testing without needing a proper live chain. +type Options struct { + Config *params.ChainConfig // Chain configuration for hard fork selection + Chain core.ChainContext // Chain context to access past block hashes + Header *types.Header // Header defining the block context to execute in + State *state.StateDB // Pre-state on top of which to estimate the gas +} + +// Estimate returns the lowest possible gas limit that allows the transaction to +// run successfully with the provided context optons. It returns an error if the +// transaction would always revert, or if there are unexpected failures. +func Estimate(ctx context.Context, call *core.Message, opts *Options, gasCap uint64) (uint64, []byte, error) { + // Binary search the gas limit, as it may need to be higher than the amount used + var ( + lo uint64 // lowest-known gas limit where tx execution fails + hi uint64 // lowest-known gas limit where tx execution succeeds + ) + // Determine the highest gas limit can be used during the estimation. + hi = opts.Header.GasLimit + if call.GasLimit >= params.TxGas { + hi = call.GasLimit + } + // Normalize the max fee per gas the call is willing to spend. + var feeCap *big.Int + if call.GasFeeCap != nil { + feeCap = call.GasFeeCap + } else if call.GasPrice != nil { + feeCap = call.GasPrice + } else { + feeCap = common.Big0 + } + // Recap the highest gas limit with account's available balance. + if feeCap.BitLen() != 0 { + balance := opts.State.GetBalance(call.From) + + available := new(big.Int).Set(balance) + if call.Value != nil { + if call.Value.Cmp(available) >= 0 { + return 0, nil, core.ErrInsufficientFundsForTransfer + } + available.Sub(available, call.Value) + } + allowance := new(big.Int).Div(available, feeCap) + + // If the allowance is larger than maximum uint64, skip checking + if allowance.IsUint64() && hi > allowance.Uint64() { + transfer := call.Value + if transfer == nil { + transfer = new(big.Int) + } + log.Warn("Gas estimation capped by limited funds", "original", hi, "balance", balance, + "sent", transfer, "maxFeePerGas", feeCap, "fundable", allowance) + hi = allowance.Uint64() + } + } + // Recap the highest gas allowance with specified gascap. + if gasCap != 0 && hi > gasCap { + log.Warn("Caller gas above allowance, capping", "requested", hi, "cap", gasCap) + hi = gasCap + } + // We first execute the transaction at the highest allowable gas limit, since if this fails we + // can return error immediately. + failed, result, err := execute(ctx, call, opts, hi) + if err != nil { + return 0, nil, err + } + if failed { + if result != nil && !errors.Is(result.Err, vm.ErrOutOfGas) { + return 0, result.Revert(), result.Err + } + return 0, nil, fmt.Errorf("gas required exceeds allowance (%d)", hi) + } + // For almost any transaction, the gas consumed by the unconstrained execution + // above lower-bounds the gas limit required for it to succeed. One exception + // is those that explicitly check gas remaining in order to execute within a + // given limit, but we probably don't want to return the lowest possible gas + // limit for these cases anyway. + lo = result.UsedGas - 1 + + // Binary search for the smallest gas limit that allows the tx to execute successfully. + for lo+1 < hi { + mid := (hi + lo) / 2 + if mid > lo*2 { + // Most txs don't need much higher gas limit than their gas used, and most txs don't + // require near the full block limit of gas, so the selection of where to bisect the + // range here is skewed to favor the low side. + mid = lo * 2 + } + failed, _, err = execute(ctx, call, opts, mid) + if err != nil { + // This should not happen under normal conditions since if we make it this far the + // transaction had run without error at least once before. + log.Error("Execution error in estimate gas", "err", err) + return 0, nil, err + } + if failed { + lo = mid + } else { + hi = mid + } + } + return hi, nil, nil +} + +// execute is a helper that executes the transaction under a given gas limit and +// returns true if the transaction fails for a reason that might be related to +// not enough gas. A non-nil error means execution failed due to reasons unrelated +// to the gas limit. +func execute(ctx context.Context, call *core.Message, opts *Options, gasLimit uint64) (bool, *core.ExecutionResult, error) { + // Configure the call for this specific execution (and revert the change after) + defer func(gas uint64) { call.GasLimit = gas }(call.GasLimit) + call.GasLimit = gasLimit + + // Execute the call and separate execution faults caused by a lack of gas or + // other non-fixable conditions + result, err := run(ctx, call, opts) + if err != nil { + if errors.Is(err, core.ErrIntrinsicGas) { + return true, nil, nil // Special case, raise gas limit + } + return true, nil, err // Bail out + } + return result.Failed(), result, nil +} + +// run assembles the EVM as defined by the consensus rules and runs the requested +// call invocation. +func run(ctx context.Context, call *core.Message, opts *Options) (*core.ExecutionResult, error) { + // Assemble the call and the call context + var ( + msgContext = core.NewEVMTxContext(call) + evmContext = core.NewEVMBlockContext(opts.Header, opts.Chain, nil) + + dirtyState = opts.State.Copy() + evm = vm.NewEVM(evmContext, msgContext, dirtyState, opts.Config, vm.Config{NoBaseFee: true}) + ) + // Monitor the outer context and interrupt the EVM upon cancellation. To avoid + // a dangling goroutine until the outer estimation finishes, create an internal + // context for the lifetime of this method call. + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + go func() { + <-ctx.Done() + evm.Cancel() + }() + // Execute the call, returning a wrapped error or the result + result, err := core.ApplyMessage(evm, call, new(core.GasPool).AddGas(math.MaxUint64)) + if vmerr := dirtyState.Error(); vmerr != nil { + return nil, vmerr + } + if err != nil { + return result, fmt.Errorf("failed with %d gas: %w", call.GasLimit, err) + } + return result, nil +} diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 89c132ddee..f322132769 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -40,6 +40,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/gasestimator" "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p" @@ -1120,15 +1121,16 @@ func DoCall(ctx context.Context, b Backend, args TransactionArgs, blockNrOrHash return doCall(ctx, b, args, state, header, overrides, blockOverrides, timeout, globalGasCap) } -func newRevertError(result *core.ExecutionResult) *revertError { - reason, errUnpack := abi.UnpackRevert(result.Revert()) - err := errors.New("execution reverted") +func newRevertError(revert []byte) *revertError { + err := vm.ErrExecutionReverted + + reason, errUnpack := abi.UnpackRevert(revert) if errUnpack == nil { - err = fmt.Errorf("execution reverted: %v", reason) + err = fmt.Errorf("%w: %v", vm.ErrExecutionReverted, reason) } return &revertError{ error: err, - reason: hexutil.Encode(result.Revert()), + reason: hexutil.Encode(revert), } } @@ -1167,147 +1169,44 @@ func (s *BlockChainAPI) Call(ctx context.Context, args TransactionArgs, blockNrO } // If the result contains a revert reason, try to unpack and return it. if len(result.Revert()) > 0 { - return nil, newRevertError(result) + return nil, newRevertError(result.Revert()) } return result.Return(), result.Err } -// executeEstimate is a helper that executes the transaction under a given gas limit and returns -// true if the transaction fails for a reason that might be related to not enough gas. A non-nil -// error means execution failed due to reasons unrelated to the gas limit. -func executeEstimate(ctx context.Context, b Backend, args TransactionArgs, state *state.StateDB, header *types.Header, gasCap uint64, gasLimit uint64) (bool, *core.ExecutionResult, error) { - args.Gas = (*hexutil.Uint64)(&gasLimit) - result, err := doCall(ctx, b, args, state, header, nil, nil, 0, gasCap) - if err != nil { - if errors.Is(err, core.ErrIntrinsicGas) { - return true, nil, nil // Special case, raise gas limit - } - return true, nil, err // Bail out - } - return result.Failed(), result, nil -} - // DoEstimateGas returns the lowest possible gas limit that allows the transaction to run // successfully at block `blockNrOrHash`. It returns error if the transaction would revert, or if // there are unexpected failures. The gas limit is capped by both `args.Gas` (if non-nil & // non-zero) and `gasCap` (if non-zero). func DoEstimateGas(ctx context.Context, b Backend, args TransactionArgs, blockNrOrHash rpc.BlockNumberOrHash, overrides *StateOverride, gasCap uint64) (hexutil.Uint64, error) { - // Binary search the gas limit, as it may need to be higher than the amount used - var ( - lo uint64 // lowest-known gas limit where tx execution fails - hi uint64 // lowest-known gas limit where tx execution succeeds - ) - // Use zero address if sender unspecified. - if args.From == nil { - args.From = new(common.Address) - } - // Determine the highest gas limit can be used during the estimation. - if args.Gas != nil && uint64(*args.Gas) >= params.TxGas { - hi = uint64(*args.Gas) - } else { - // Retrieve the block to act as the gas ceiling - block, err := b.BlockByNumberOrHash(ctx, blockNrOrHash) - if err != nil { - return 0, err - } - if block == nil { - return 0, errors.New("block not found") - } - hi = block.GasLimit() - } - // Normalize the max fee per gas the call is willing to spend. - var feeCap *big.Int - if args.GasPrice != nil && (args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil) { - return 0, errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified") - } else if args.GasPrice != nil { - feeCap = args.GasPrice.ToInt() - } else if args.MaxFeePerGas != nil { - feeCap = args.MaxFeePerGas.ToInt() - } else { - feeCap = common.Big0 - } - + // Retrieve the base state and mutate it with any overrides state, header, err := b.StateAndHeaderByNumberOrHash(ctx, blockNrOrHash) if state == nil || err != nil { return 0, err } - if err := overrides.Apply(state); err != nil { + if err = overrides.Apply(state); err != nil { return 0, err } - - // Recap the highest gas limit with account's available balance. - if feeCap.BitLen() != 0 { - balance := state.GetBalance(*args.From) // from can't be nil - available := new(big.Int).Set(balance) - if args.Value != nil { - if args.Value.ToInt().Cmp(available) >= 0 { - return 0, core.ErrInsufficientFundsForTransfer - } - available.Sub(available, args.Value.ToInt()) - } - allowance := new(big.Int).Div(available, feeCap) - - // If the allowance is larger than maximum uint64, skip checking - if allowance.IsUint64() && hi > allowance.Uint64() { - transfer := args.Value - if transfer == nil { - transfer = new(hexutil.Big) - } - log.Warn("Gas estimation capped by limited funds", "original", hi, "balance", balance, - "sent", transfer.ToInt(), "maxFeePerGas", feeCap, "fundable", allowance) - hi = allowance.Uint64() - } + // Construct the gas estimator option from the user input + opts := &gasestimator.Options{ + Config: b.ChainConfig(), + Chain: NewChainContext(ctx, b), + Header: header, + State: state, } - // Recap the highest gas allowance with specified gascap. - if gasCap != 0 && hi > gasCap { - log.Warn("Caller gas above allowance, capping", "requested", hi, "cap", gasCap) - hi = gasCap - } - - // We first execute the transaction at the highest allowable gas limit, since if this fails we - // can return error immediately. - failed, result, err := executeEstimate(ctx, b, args, state.Copy(), header, gasCap, hi) + // Run the gas estimation andwrap any revertals into a custom return + call, err := args.ToMessage(gasCap, header.BaseFee) if err != nil { return 0, err } - if failed { - if result != nil && !errors.Is(result.Err, vm.ErrOutOfGas) { - if len(result.Revert()) > 0 { - return 0, newRevertError(result) - } - return 0, result.Err - } - return 0, fmt.Errorf("gas required exceeds allowance (%d)", hi) - } - // For almost any transaction, the gas consumed by the unconstrained execution above - // lower-bounds the gas limit required for it to succeed. One exception is those txs that - // explicitly check gas remaining in order to successfully execute within a given limit, but we - // probably don't want to return a lowest possible gas limit for these cases anyway. - lo = result.UsedGas - 1 - - // Binary search for the smallest gas limit that allows the tx to execute successfully. - for lo+1 < hi { - mid := (hi + lo) / 2 - if mid > lo*2 { - // Most txs don't need much higher gas limit than their gas used, and most txs don't - // require near the full block limit of gas, so the selection of where to bisect the - // range here is skewed to favor the low side. - mid = lo * 2 - } - failed, _, err = executeEstimate(ctx, b, args, state.Copy(), header, gasCap, mid) - if err != nil { - // This should not happen under normal conditions since if we make it this far the - // transaction had run without error at least once before. - log.Error("execution error in estimate gas", "err", err) - return 0, err - } - if failed { - lo = mid - } else { - hi = mid + estimate, revert, err := gasestimator.Estimate(ctx, call, opts, gasCap) + if err != nil { + if len(revert) > 0 { + return 0, newRevertError(revert) } + return 0, err } - return hexutil.Uint64(hi), nil + return hexutil.Uint64(estimate), nil } // EstimateGas returns the lowest possible gas limit that allows the transaction to run diff --git a/internal/ethapi/api_test.go b/internal/ethapi/api_test.go index 4a7694737e..9b08fd8d42 100644 --- a/internal/ethapi/api_test.go +++ b/internal/ethapi/api_test.go @@ -910,18 +910,18 @@ func TestCall(t *testing.T) { } } -type Account struct { +type account struct { key *ecdsa.PrivateKey addr common.Address } -func newAccounts(n int) (accounts []Account) { +func newAccounts(n int) (accounts []account) { for i := 0; i < n; i++ { key, _ := crypto.GenerateKey() addr := crypto.PubkeyToAddress(key.PublicKey) - accounts = append(accounts, Account{key: key, addr: addr}) + accounts = append(accounts, account{key: key, addr: addr}) } - slices.SortFunc(accounts, func(a, b Account) int { return a.addr.Cmp(b.addr) }) + slices.SortFunc(accounts, func(a, b account) int { return a.addr.Cmp(b.addr) }) return accounts } From 5b57727d6de25493245ead838412188ffb6f1324 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Mon, 27 Nov 2023 15:39:28 +0100 Subject: [PATCH 096/223] go.mod: update uint256 to v1.2.4 (#28612) --- go.mod | 2 +- go.sum | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 32cfe26b14..042d7155be 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,7 @@ require ( github.com/hashicorp/go-bexpr v0.1.10 github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 github.com/holiman/bloomfilter/v2 v2.0.3 - github.com/holiman/uint256 v1.2.3 + github.com/holiman/uint256 v1.2.4 github.com/huin/goupnp v1.3.0 github.com/influxdata/influxdb-client-go/v2 v2.4.0 github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c diff --git a/go.sum b/go.sum index e62d7d36ab..d5e7901e5a 100644 --- a/go.sum +++ b/go.sum @@ -97,8 +97,6 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.7.0 h1:YjAGVd3XmtK9ktAbX8Zg2g2PwLIMjGREZJHlV4j7NEo= -github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= @@ -147,8 +145,6 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20230914135612-d1b03fcb8e58 h1:PwUlswsGOrLB677lW4XrlWLeszY3BaDGbvZ6dYk28tQ= -github.com/crate-crypto/go-ipa v0.0.0-20230914135612-d1b03fcb8e58/go.mod h1:J+gsi6D4peY0kyhaklyXFRVHOQWI2I5uU0c2+/90HYc= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= @@ -205,8 +201,6 @@ github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61/go.mod h1:Q0X6pkwTILD github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.1.1-0.20231004173727-0a4e93ed640b h1:LHeiiSTL2FEGCP1ov6FqkikiViqygeVo1ZwJ1x3nYSE= -github.com/gballet/go-verkle v0.1.1-0.20231004173727-0a4e93ed640b/go.mod h1:7JamHhSTnnHDhcI3G8r4sWaD9XlleriqVlC3FeAQJKM= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= @@ -347,8 +341,8 @@ github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 h1:3JQNjnMRil1yD0IfZ github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= -github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= From 71817f318edc8c37161f38aa7a0407d4efc2429f Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Tue, 28 Nov 2023 15:38:30 +0800 Subject: [PATCH 097/223] eth/catalyst, eth/downloader: expose more sync information (#28584) This change exposes more information from sync module internally --- eth/catalyst/api.go | 7 ++--- eth/downloader/skeleton.go | 46 ++++++++++++++++----------------- eth/downloader/skeleton_test.go | 12 ++++----- trie/verkle_test.go | 8 +++--- 4 files changed, 37 insertions(+), 36 deletions(-) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index d1e1991414..37b0248f28 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -611,7 +611,8 @@ func (api *ConsensusAPI) delayPayloadImport(block *types.Block) (engine.PayloadS // Although we don't want to trigger a sync, if there is one already in // progress, try to extend if with the current payload request to relieve // some strain from the forkchoice update. - if err := api.eth.Downloader().BeaconExtend(api.eth.SyncMode(), block.Header()); err == nil { + err := api.eth.Downloader().BeaconExtend(api.eth.SyncMode(), block.Header()) + if err == nil { log.Debug("Payload accepted for sync extension", "number", block.NumberU64(), "hash", block.Hash()) return engine.PayloadStatusV1{Status: engine.SYNCING}, nil } @@ -623,12 +624,12 @@ func (api *ConsensusAPI) delayPayloadImport(block *types.Block) (engine.PayloadS // In full sync mode, failure to import a well-formed block can only mean // that the parent state is missing and the syncer rejected extending the // current cycle with the new payload. - log.Warn("Ignoring payload with missing parent", "number", block.NumberU64(), "hash", block.Hash(), "parent", block.ParentHash()) + log.Warn("Ignoring payload with missing parent", "number", block.NumberU64(), "hash", block.Hash(), "parent", block.ParentHash(), "reason", err) } else { // In non-full sync mode (i.e. snap sync) all payloads are rejected until // snap sync terminates as snap sync relies on direct database injections // and cannot afford concurrent out-if-band modifications via imports. - log.Warn("Ignoring payload while snap syncing", "number", block.NumberU64(), "hash", block.Hash()) + log.Warn("Ignoring payload while snap syncing", "number", block.NumberU64(), "hash", block.Hash(), "reason", err) } return engine.PayloadStatusV1{Status: engine.SYNCING}, nil } diff --git a/eth/downloader/skeleton.go b/eth/downloader/skeleton.go index 4f1f462048..f40ca24d99 100644 --- a/eth/downloader/skeleton.go +++ b/eth/downloader/skeleton.go @@ -69,9 +69,17 @@ var errSyncReorged = errors.New("sync reorged") // might still be propagating. var errTerminated = errors.New("terminated") -// errReorgDenied is returned if an attempt is made to extend the beacon chain -// with a new header, but it does not link up to the existing sync. -var errReorgDenied = errors.New("non-forced head reorg denied") +// errChainReorged is an internal helper error to signal that the header chain +// of the current sync cycle was (partially) reorged. +var errChainReorged = errors.New("chain reorged") + +// errChainGapped is an internal helper error to signal that the header chain +// of the current sync cycle is gaped with the one advertised by consensus client. +var errChainGapped = errors.New("chain gapped") + +// errChainForked is an internal helper error to signal that the header chain +// of the current sync cycle is forked with the one advertised by consensus client. +var errChainForked = errors.New("chain forked") func init() { // Tuning parameters is nice, but the scratch space must be assignable in @@ -271,9 +279,9 @@ func (s *skeleton) startup() { newhead, err := s.sync(head) switch { case err == errSyncLinked: - // Sync cycle linked up to the genesis block. Tear down the loop - // and restart it so, it can properly notify the backfiller. Don't - // account a new head. + // Sync cycle linked up to the genesis block, or the existent chain + // segment. Tear down the loop and restart it so, it can properly + // notify the backfiller. Don't account a new head. head = nil case err == errSyncMerged: @@ -457,15 +465,16 @@ func (s *skeleton) sync(head *types.Header) (*types.Header, error) { // we don't seamlessly integrate reorgs to keep things simple. If the // network starts doing many mini reorgs, it might be worthwhile handling // a limited depth without an error. - if reorged := s.processNewHead(event.header, event.final, event.force); reorged { + if err := s.processNewHead(event.header, event.final); err != nil { // If a reorg is needed, and we're forcing the new head, signal // the syncer to tear down and start over. Otherwise, drop the // non-force reorg. if event.force { event.errc <- nil // forced head reorg accepted + log.Info("Restarting sync cycle", "reason", err) return event.header, errSyncReorged } - event.errc <- errReorgDenied + event.errc <- err continue } event.errc <- nil // head extension accepted @@ -610,7 +619,7 @@ func (s *skeleton) saveSyncStatus(db ethdb.KeyValueWriter) { // accepts and integrates it into the skeleton or requests a reorg. Upon reorg, // the syncer will tear itself down and restart with a fresh head. It is simpler // to reconstruct the sync state than to mutate it and hope for the best. -func (s *skeleton) processNewHead(head *types.Header, final *types.Header, force bool) bool { +func (s *skeleton) processNewHead(head *types.Header, final *types.Header) error { // If a new finalized block was announced, update the sync process independent // of what happens with the sync head below if final != nil { @@ -631,26 +640,17 @@ func (s *skeleton) processNewHead(head *types.Header, final *types.Header, force // once more, ignore it instead of tearing down sync for a noop. if lastchain.Head == lastchain.Tail { if current := rawdb.ReadSkeletonHeader(s.db, number); current.Hash() == head.Hash() { - return false + return nil } } // Not a noop / double head announce, abort with a reorg - if force { - log.Warn("Beacon chain reorged", "tail", lastchain.Tail, "head", lastchain.Head, "newHead", number) - } - return true + return fmt.Errorf("%w, tail: %d, head: %d, newHead: %d", errChainReorged, lastchain.Tail, lastchain.Head, number) } if lastchain.Head+1 < number { - if force { - log.Warn("Beacon chain gapped", "head", lastchain.Head, "newHead", number) - } - return true + return fmt.Errorf("%w, head: %d, newHead: %d", errChainGapped, lastchain.Head, number) } if parent := rawdb.ReadSkeletonHeader(s.db, number-1); parent.Hash() != head.ParentHash { - if force { - log.Warn("Beacon chain forked", "ancestor", number-1, "hash", parent.Hash(), "want", head.ParentHash) - } - return true + return fmt.Errorf("%w, ancestor: %d, hash: %s, want: %s", errChainForked, number-1, parent.Hash(), head.ParentHash) } // New header seems to be in the last subchain range. Unwind any extra headers // from the chain tip and insert the new head. We won't delete any trimmed @@ -666,7 +666,7 @@ func (s *skeleton) processNewHead(head *types.Header, final *types.Header, force if err := batch.Write(); err != nil { log.Crit("Failed to write skeleton sync status", "err", err) } - return false + return nil } // assignTasks attempts to match idle peers to pending header retrievals. diff --git a/eth/downloader/skeleton_test.go b/eth/downloader/skeleton_test.go index c31007765a..aceadd00d3 100644 --- a/eth/downloader/skeleton_test.go +++ b/eth/downloader/skeleton_test.go @@ -434,7 +434,7 @@ func TestSkeletonSyncExtend(t *testing.T) { newstate: []*subchain{ {Head: 49, Tail: 49}, }, - err: errReorgDenied, + err: errChainReorged, }, // Initialize a sync and try to extend it with a number-wise sequential // header, but a hash wise non-linking one. @@ -444,7 +444,7 @@ func TestSkeletonSyncExtend(t *testing.T) { newstate: []*subchain{ {Head: 49, Tail: 49}, }, - err: errReorgDenied, + err: errChainForked, }, // Initialize a sync and try to extend it with a non-linking future block. { @@ -453,7 +453,7 @@ func TestSkeletonSyncExtend(t *testing.T) { newstate: []*subchain{ {Head: 49, Tail: 49}, }, - err: errReorgDenied, + err: errChainGapped, }, // Initialize a sync and try to extend it with a past canonical block. { @@ -462,7 +462,7 @@ func TestSkeletonSyncExtend(t *testing.T) { newstate: []*subchain{ {Head: 50, Tail: 50}, }, - err: errReorgDenied, + err: errChainReorged, }, // Initialize a sync and try to extend it with a past sidechain block. { @@ -471,7 +471,7 @@ func TestSkeletonSyncExtend(t *testing.T) { newstate: []*subchain{ {Head: 50, Tail: 50}, }, - err: errReorgDenied, + err: errChainReorged, }, } for i, tt := range tests { @@ -487,7 +487,7 @@ func TestSkeletonSyncExtend(t *testing.T) { skeleton.Sync(tt.head, nil, true) <-wait - if err := skeleton.Sync(tt.extend, nil, false); err != tt.err { + if err := skeleton.Sync(tt.extend, nil, false); !errors.Is(err, tt.err) { t.Errorf("test %d: extension failure mismatch: have %v, want %v", i, err, tt.err) } skeleton.Terminate() diff --git a/trie/verkle_test.go b/trie/verkle_test.go index 44fb7dc29e..bd31ea3879 100644 --- a/trie/verkle_test.go +++ b/trie/verkle_test.go @@ -31,24 +31,24 @@ import ( var ( accounts = map[common.Address]*types.StateAccount{ - common.Address{1}: { + {1}: { Nonce: 100, Balance: big.NewInt(100), CodeHash: common.Hash{0x1}.Bytes(), }, - common.Address{2}: { + {2}: { Nonce: 200, Balance: big.NewInt(200), CodeHash: common.Hash{0x2}.Bytes(), }, } storages = map[common.Address]map[common.Hash][]byte{ - common.Address{1}: { + {1}: { common.Hash{10}: []byte{10}, common.Hash{11}: []byte{11}, common.MaxHash: []byte{0xff}, }, - common.Address{2}: { + {2}: { common.Hash{20}: []byte{20}, common.Hash{21}: []byte{21}, common.MaxHash: []byte{0xff}, From 58297e339b26d09a0c21e550ee4b6ed6205cedcd Mon Sep 17 00:00:00 2001 From: lightclient <14004106+lightclient@users.noreply.github.com> Date: Tue, 28 Nov 2023 01:01:23 -0700 Subject: [PATCH 098/223] light: remove package light(#28614) This changes removes the package 'light', which is currently unused. --- light/lightchain.go | 531 ------------------------------------- light/lightchain_test.go | 358 ------------------------- light/odr.go | 196 -------------- light/odr_test.go | 339 ------------------------ light/odr_util.go | 275 ------------------- light/postprocess.go | 538 ------------------------------------- light/trie.go | 319 ---------------------- light/trie_test.go | 95 ------- light/txpool.go | 556 --------------------------------------- light/txpool_test.go | 147 ----------- 10 files changed, 3354 deletions(-) delete mode 100644 light/lightchain.go delete mode 100644 light/lightchain_test.go delete mode 100644 light/odr.go delete mode 100644 light/odr_test.go delete mode 100644 light/odr_util.go delete mode 100644 light/postprocess.go delete mode 100644 light/trie.go delete mode 100644 light/trie_test.go delete mode 100644 light/txpool.go delete mode 100644 light/txpool_test.go diff --git a/light/lightchain.go b/light/lightchain.go deleted file mode 100644 index 617658b85b..0000000000 --- a/light/lightchain.go +++ /dev/null @@ -1,531 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -// Package light implements on-demand retrieval capable state and chain objects -// for the Ethereum Light Client. -package light - -import ( - "context" - "errors" - "math/big" - "sync" - "sync/atomic" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/lru" - "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" -) - -var ( - bodyCacheLimit = 256 - blockCacheLimit = 256 -) - -// LightChain represents a canonical chain that by default only handles block -// headers, downloading block bodies and receipts on demand through an ODR -// interface. It only does header validation during chain insertion. -type LightChain struct { - hc *core.HeaderChain - indexerConfig *IndexerConfig - chainDb ethdb.Database - engine consensus.Engine - odr OdrBackend - chainFeed event.Feed - chainSideFeed event.Feed - chainHeadFeed event.Feed - scope event.SubscriptionScope - genesisBlock *types.Block - forker *core.ForkChoice - - bodyCache *lru.Cache[common.Hash, *types.Body] - bodyRLPCache *lru.Cache[common.Hash, rlp.RawValue] - blockCache *lru.Cache[common.Hash, *types.Block] - - chainmu sync.RWMutex // protects header inserts - quit chan struct{} - wg sync.WaitGroup - - // Atomic boolean switches: - stopped atomic.Bool // whether LightChain is stopped or running - procInterrupt atomic.Bool // interrupts chain insert -} - -// NewLightChain returns a fully initialised light chain using information -// available in the database. It initialises the default Ethereum header -// validator. -func NewLightChain(odr OdrBackend, config *params.ChainConfig, engine consensus.Engine) (*LightChain, error) { - bc := &LightChain{ - chainDb: odr.Database(), - indexerConfig: odr.IndexerConfig(), - odr: odr, - quit: make(chan struct{}), - bodyCache: lru.NewCache[common.Hash, *types.Body](bodyCacheLimit), - bodyRLPCache: lru.NewCache[common.Hash, rlp.RawValue](bodyCacheLimit), - blockCache: lru.NewCache[common.Hash, *types.Block](blockCacheLimit), - engine: engine, - } - bc.forker = core.NewForkChoice(bc, nil) - var err error - bc.hc, err = core.NewHeaderChain(odr.Database(), config, bc.engine, bc.getProcInterrupt) - if err != nil { - return nil, err - } - bc.genesisBlock, _ = bc.GetBlockByNumber(NoOdr, 0) - if bc.genesisBlock == nil { - return nil, core.ErrNoGenesis - } - if err := bc.loadLastState(); err != nil { - return nil, err - } - // Check the current state of the block hashes and make sure that we do not have any of the bad blocks in our chain - for hash := range core.BadHashes { - if header := bc.GetHeaderByHash(hash); header != nil { - log.Error("Found bad hash, rewinding chain", "number", header.Number, "hash", header.ParentHash) - bc.SetHead(header.Number.Uint64() - 1) - log.Info("Chain rewind was successful, resuming normal operation") - } - } - return bc, nil -} - -func (lc *LightChain) getProcInterrupt() bool { - return lc.procInterrupt.Load() -} - -// Odr returns the ODR backend of the chain -func (lc *LightChain) Odr() OdrBackend { - return lc.odr -} - -// HeaderChain returns the underlying header chain. -func (lc *LightChain) HeaderChain() *core.HeaderChain { - return lc.hc -} - -// loadLastState loads the last known chain state from the database. This method -// assumes that the chain manager mutex is held. -func (lc *LightChain) loadLastState() error { - if head := rawdb.ReadHeadHeaderHash(lc.chainDb); head == (common.Hash{}) { - // Corrupt or empty database, init from scratch - lc.Reset() - } else { - header := lc.GetHeaderByHash(head) - if header == nil { - // Corrupt or empty database, init from scratch - lc.Reset() - } else { - lc.hc.SetCurrentHeader(header) - } - } - // Issue a status log and return - header := lc.hc.CurrentHeader() - headerTd := lc.GetTd(header.Hash(), header.Number.Uint64()) - log.Info("Loaded most recent local header", "number", header.Number, "hash", header.Hash(), "td", headerTd, "age", common.PrettyAge(time.Unix(int64(header.Time), 0))) - return nil -} - -// SetHead rewinds the local chain to a new head. Everything above the new -// head will be deleted and the new one set. -func (lc *LightChain) SetHead(head uint64) error { - lc.chainmu.Lock() - defer lc.chainmu.Unlock() - - lc.hc.SetHead(head, nil, nil) - return lc.loadLastState() -} - -// SetHeadWithTimestamp rewinds the local chain to a new head that has at max -// the given timestamp. Everything above the new head will be deleted and the -// new one set. -func (lc *LightChain) SetHeadWithTimestamp(timestamp uint64) error { - lc.chainmu.Lock() - defer lc.chainmu.Unlock() - - lc.hc.SetHeadWithTimestamp(timestamp, nil, nil) - return lc.loadLastState() -} - -// GasLimit returns the gas limit of the current HEAD block. -func (lc *LightChain) GasLimit() uint64 { - return lc.hc.CurrentHeader().GasLimit -} - -// Reset purges the entire blockchain, restoring it to its genesis state. -func (lc *LightChain) Reset() { - lc.ResetWithGenesisBlock(lc.genesisBlock) -} - -// ResetWithGenesisBlock purges the entire blockchain, restoring it to the -// specified genesis state. -func (lc *LightChain) ResetWithGenesisBlock(genesis *types.Block) { - // Dump the entire block chain and purge the caches - lc.SetHead(0) - - lc.chainmu.Lock() - defer lc.chainmu.Unlock() - - // Prepare the genesis block and reinitialise the chain - batch := lc.chainDb.NewBatch() - rawdb.WriteTd(batch, genesis.Hash(), genesis.NumberU64(), genesis.Difficulty()) - rawdb.WriteBlock(batch, genesis) - rawdb.WriteHeadHeaderHash(batch, genesis.Hash()) - if err := batch.Write(); err != nil { - log.Crit("Failed to reset genesis block", "err", err) - } - lc.genesisBlock = genesis - lc.hc.SetGenesis(lc.genesisBlock.Header()) - lc.hc.SetCurrentHeader(lc.genesisBlock.Header()) -} - -// Accessors - -// Engine retrieves the light chain's consensus engine. -func (lc *LightChain) Engine() consensus.Engine { return lc.engine } - -// Genesis returns the genesis block -func (lc *LightChain) Genesis() *types.Block { - return lc.genesisBlock -} - -func (lc *LightChain) StateCache() state.Database { - panic("not implemented") -} - -// GetBody retrieves a block body (transactions and uncles) from the database -// or ODR service by hash, caching it if found. -func (lc *LightChain) GetBody(ctx context.Context, hash common.Hash) (*types.Body, error) { - // Short circuit if the body's already in the cache, retrieve otherwise - if cached, ok := lc.bodyCache.Get(hash); ok { - return cached, nil - } - number := lc.hc.GetBlockNumber(hash) - if number == nil { - return nil, errors.New("unknown block") - } - body, err := GetBody(ctx, lc.odr, hash, *number) - if err != nil { - return nil, err - } - // Cache the found body for next time and return - lc.bodyCache.Add(hash, body) - return body, nil -} - -// GetBodyRLP retrieves a block body in RLP encoding from the database or -// ODR service by hash, caching it if found. -func (lc *LightChain) GetBodyRLP(ctx context.Context, hash common.Hash) (rlp.RawValue, error) { - // Short circuit if the body's already in the cache, retrieve otherwise - if cached, ok := lc.bodyRLPCache.Get(hash); ok { - return cached, nil - } - number := lc.hc.GetBlockNumber(hash) - if number == nil { - return nil, errors.New("unknown block") - } - body, err := GetBodyRLP(ctx, lc.odr, hash, *number) - if err != nil { - return nil, err - } - // Cache the found body for next time and return - lc.bodyRLPCache.Add(hash, body) - return body, nil -} - -// HasBlock checks if a block is fully present in the database or not, caching -// it if present. -func (lc *LightChain) HasBlock(hash common.Hash, number uint64) bool { - blk, _ := lc.GetBlock(NoOdr, hash, number) - return blk != nil -} - -// GetBlock retrieves a block from the database or ODR service by hash and number, -// caching it if found. -func (lc *LightChain) GetBlock(ctx context.Context, hash common.Hash, number uint64) (*types.Block, error) { - // Short circuit if the block's already in the cache, retrieve otherwise - if block, ok := lc.blockCache.Get(hash); ok { - return block, nil - } - block, err := GetBlock(ctx, lc.odr, hash, number) - if err != nil { - return nil, err - } - // Cache the found block for next time and return - lc.blockCache.Add(block.Hash(), block) - return block, nil -} - -// GetBlockByHash retrieves a block from the database or ODR service by hash, -// caching it if found. -func (lc *LightChain) GetBlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) { - number := lc.hc.GetBlockNumber(hash) - if number == nil { - return nil, errors.New("unknown block") - } - return lc.GetBlock(ctx, hash, *number) -} - -// GetBlockByNumber retrieves a block from the database or ODR service by -// number, caching it (associated with its hash) if found. -func (lc *LightChain) GetBlockByNumber(ctx context.Context, number uint64) (*types.Block, error) { - hash, err := GetCanonicalHash(ctx, lc.odr, number) - if hash == (common.Hash{}) || err != nil { - return nil, err - } - return lc.GetBlock(ctx, hash, number) -} - -// Stop stops the blockchain service. If any imports are currently in progress -// it will abort them using the procInterrupt. -func (lc *LightChain) Stop() { - if !lc.stopped.CompareAndSwap(false, true) { - return - } - close(lc.quit) - lc.StopInsert() - lc.wg.Wait() - log.Info("Blockchain stopped") -} - -// StopInsert interrupts all insertion methods, causing them to return -// errInsertionInterrupted as soon as possible. Insertion is permanently disabled after -// calling this method. -func (lc *LightChain) StopInsert() { - lc.procInterrupt.Store(true) -} - -// Rollback is designed to remove a chain of links from the database that aren't -// certain enough to be valid. -func (lc *LightChain) Rollback(chain []common.Hash) { - lc.chainmu.Lock() - defer lc.chainmu.Unlock() - - batch := lc.chainDb.NewBatch() - for i := len(chain) - 1; i >= 0; i-- { - hash := chain[i] - - // Degrade the chain markers if they are explicitly reverted. - // In theory we should update all in-memory markers in the - // last step, however the direction of rollback is from high - // to low, so it's safe the update in-memory markers directly. - if head := lc.hc.CurrentHeader(); head.Hash() == hash { - rawdb.WriteHeadHeaderHash(batch, head.ParentHash) - lc.hc.SetCurrentHeader(lc.GetHeader(head.ParentHash, head.Number.Uint64()-1)) - } - } - if err := batch.Write(); err != nil { - log.Crit("Failed to rollback light chain", "error", err) - } -} - -func (lc *LightChain) InsertHeader(header *types.Header) error { - // Verify the header first before obtaining the lock - headers := []*types.Header{header} - if _, err := lc.hc.ValidateHeaderChain(headers); err != nil { - return err - } - // Make sure only one thread manipulates the chain at once - lc.chainmu.Lock() - defer lc.chainmu.Unlock() - - lc.wg.Add(1) - defer lc.wg.Done() - - _, err := lc.hc.WriteHeaders(headers) - log.Info("Inserted header", "number", header.Number, "hash", header.Hash()) - return err -} - -func (lc *LightChain) SetCanonical(header *types.Header) error { - lc.chainmu.Lock() - defer lc.chainmu.Unlock() - - lc.wg.Add(1) - defer lc.wg.Done() - - if err := lc.hc.Reorg([]*types.Header{header}); err != nil { - return err - } - // Emit events - block := types.NewBlockWithHeader(header) - lc.chainFeed.Send(core.ChainEvent{Block: block, Hash: block.Hash()}) - lc.chainHeadFeed.Send(core.ChainHeadEvent{Block: block}) - log.Info("Set the chain head", "number", block.Number(), "hash", block.Hash()) - return nil -} - -// InsertHeaderChain attempts to insert the given header chain in to the local -// chain, possibly creating a reorg. If an error is returned, it will return the -// index number of the failing header as well an error describing what went wrong. - -// In the case of a light chain, InsertHeaderChain also creates and posts light -// chain events when necessary. -func (lc *LightChain) InsertHeaderChain(chain []*types.Header) (int, error) { - if len(chain) == 0 { - return 0, nil - } - start := time.Now() - if i, err := lc.hc.ValidateHeaderChain(chain); err != nil { - return i, err - } - - // Make sure only one thread manipulates the chain at once - lc.chainmu.Lock() - defer lc.chainmu.Unlock() - - lc.wg.Add(1) - defer lc.wg.Done() - - status, err := lc.hc.InsertHeaderChain(chain, start, lc.forker) - if err != nil || len(chain) == 0 { - return 0, err - } - - // Create chain event for the new head block of this insertion. - var ( - lastHeader = chain[len(chain)-1] - block = types.NewBlockWithHeader(lastHeader) - ) - switch status { - case core.CanonStatTy: - lc.chainFeed.Send(core.ChainEvent{Block: block, Hash: block.Hash()}) - lc.chainHeadFeed.Send(core.ChainHeadEvent{Block: block}) - case core.SideStatTy: - lc.chainSideFeed.Send(core.ChainSideEvent{Block: block}) - } - return 0, err -} - -// CurrentHeader retrieves the current head header of the canonical chain. The -// header is retrieved from the HeaderChain's internal cache. -func (lc *LightChain) CurrentHeader() *types.Header { - return lc.hc.CurrentHeader() -} - -// GetTd retrieves a block's total difficulty in the canonical chain from the -// database by hash and number, caching it if found. -func (lc *LightChain) GetTd(hash common.Hash, number uint64) *big.Int { - return lc.hc.GetTd(hash, number) -} - -// GetTdOdr retrieves the total difficult from the database or -// network by hash and number, caching it (associated with its hash) if found. -func (lc *LightChain) GetTdOdr(ctx context.Context, hash common.Hash, number uint64) *big.Int { - td := lc.GetTd(hash, number) - if td != nil { - return td - } - td, _ = GetTd(ctx, lc.odr, hash, number) - return td -} - -// GetHeader retrieves a block header from the database by hash and number, -// caching it if found. -func (lc *LightChain) GetHeader(hash common.Hash, number uint64) *types.Header { - return lc.hc.GetHeader(hash, number) -} - -// GetHeaderByHash retrieves a block header from the database by hash, caching it if -// found. -func (lc *LightChain) GetHeaderByHash(hash common.Hash) *types.Header { - return lc.hc.GetHeaderByHash(hash) -} - -// HasHeader checks if a block header is present in the database or not, caching -// it if present. -func (lc *LightChain) HasHeader(hash common.Hash, number uint64) bool { - return lc.hc.HasHeader(hash, number) -} - -// GetCanonicalHash returns the canonical hash for a given block number -func (bc *LightChain) GetCanonicalHash(number uint64) common.Hash { - return bc.hc.GetCanonicalHash(number) -} - -// GetAncestor retrieves the Nth ancestor of a given block. It assumes that either the given block or -// a close ancestor of it is canonical. maxNonCanonical points to a downwards counter limiting the -// number of blocks to be individually checked before we reach the canonical chain. -// -// Note: ancestor == 0 returns the same block, 1 returns its parent and so on. -func (lc *LightChain) GetAncestor(hash common.Hash, number, ancestor uint64, maxNonCanonical *uint64) (common.Hash, uint64) { - return lc.hc.GetAncestor(hash, number, ancestor, maxNonCanonical) -} - -// GetHeaderByNumber retrieves a block header from the database by number, -// caching it (associated with its hash) if found. -func (lc *LightChain) GetHeaderByNumber(number uint64) *types.Header { - return lc.hc.GetHeaderByNumber(number) -} - -// GetHeaderByNumberOdr retrieves a block header from the database or network -// by number, caching it (associated with its hash) if found. -func (lc *LightChain) GetHeaderByNumberOdr(ctx context.Context, number uint64) (*types.Header, error) { - if header := lc.hc.GetHeaderByNumber(number); header != nil { - return header, nil - } - return GetHeaderByNumber(ctx, lc.odr, number) -} - -// Config retrieves the header chain's chain configuration. -func (lc *LightChain) Config() *params.ChainConfig { return lc.hc.Config() } - -// LockChain locks the chain mutex for reading so that multiple canonical hashes can be -// retrieved while it is guaranteed that they belong to the same version of the chain -func (lc *LightChain) LockChain() { - lc.chainmu.RLock() -} - -// UnlockChain unlocks the chain mutex -func (lc *LightChain) UnlockChain() { - lc.chainmu.RUnlock() -} - -// SubscribeChainEvent registers a subscription of ChainEvent. -func (lc *LightChain) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription { - return lc.scope.Track(lc.chainFeed.Subscribe(ch)) -} - -// SubscribeChainHeadEvent registers a subscription of ChainHeadEvent. -func (lc *LightChain) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription { - return lc.scope.Track(lc.chainHeadFeed.Subscribe(ch)) -} - -// SubscribeChainSideEvent registers a subscription of ChainSideEvent. -func (lc *LightChain) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription { - return lc.scope.Track(lc.chainSideFeed.Subscribe(ch)) -} - -// SubscribeLogsEvent implements the interface of filters.Backend -// LightChain does not send logs events, so return an empty subscription. -func (lc *LightChain) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription { - return lc.scope.Track(new(event.Feed).Subscribe(ch)) -} - -// SubscribeRemovedLogsEvent implements the interface of filters.Backend -// LightChain does not send core.RemovedLogsEvent, so return an empty subscription. -func (lc *LightChain) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription { - return lc.scope.Track(new(event.Feed).Subscribe(ch)) -} diff --git a/light/lightchain_test.go b/light/lightchain_test.go deleted file mode 100644 index 5694ca72c2..0000000000 --- a/light/lightchain_test.go +++ /dev/null @@ -1,358 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "context" - "errors" - "math/big" - "testing" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" -) - -// So we can deterministically seed different blockchains -var ( - canonicalSeed = 1 - forkSeed = 2 -) - -// makeHeaderChain creates a deterministic chain of headers rooted at parent. -func makeHeaderChain(parent *types.Header, n int, db ethdb.Database, seed int) []*types.Header { - blocks, _ := core.GenerateChain(params.TestChainConfig, types.NewBlockWithHeader(parent), ethash.NewFaker(), db, n, func(i int, b *core.BlockGen) { - b.SetCoinbase(common.Address{0: byte(seed), 19: byte(i)}) - }) - headers := make([]*types.Header, len(blocks)) - for i, block := range blocks { - headers[i] = block.Header() - } - return headers -} - -// newCanonical creates a chain database, and injects a deterministic canonical -// chain. Depending on the full flag, if creates either a full block chain or a -// header only chain. -func newCanonical(n int) (ethdb.Database, *LightChain, error) { - db := rawdb.NewMemoryDatabase() - gspec := core.Genesis{Config: params.TestChainConfig} - genesis := gspec.MustCommit(db, trie.NewDatabase(db, trie.HashDefaults)) - blockchain, _ := NewLightChain(&dummyOdr{db: db, indexerConfig: TestClientIndexerConfig}, gspec.Config, ethash.NewFaker()) - - // Create and inject the requested chain - if n == 0 { - return db, blockchain, nil - } - // Header-only chain requested - headers := makeHeaderChain(genesis.Header(), n, db, canonicalSeed) - _, err := blockchain.InsertHeaderChain(headers) - return db, blockchain, err -} - -// newTestLightChain creates a LightChain that doesn't validate anything. -func newTestLightChain() *LightChain { - db := rawdb.NewMemoryDatabase() - gspec := &core.Genesis{ - Difficulty: big.NewInt(1), - Config: params.TestChainConfig, - } - gspec.MustCommit(db, trie.NewDatabase(db, trie.HashDefaults)) - lc, err := NewLightChain(&dummyOdr{db: db}, gspec.Config, ethash.NewFullFaker()) - if err != nil { - panic(err) - } - return lc -} - -// Test fork of length N starting from block i -func testFork(t *testing.T, LightChain *LightChain, i, n int, comparator func(td1, td2 *big.Int)) { - // Copy old chain up to #i into a new db - db, LightChain2, err := newCanonical(i) - if err != nil { - t.Fatal("could not make new canonical in testFork", err) - } - // Assert the chains have the same header/block at #i - var hash1, hash2 common.Hash - hash1 = LightChain.GetHeaderByNumber(uint64(i)).Hash() - hash2 = LightChain2.GetHeaderByNumber(uint64(i)).Hash() - if hash1 != hash2 { - t.Errorf("chain content mismatch at %d: have hash %v, want hash %v", i, hash2, hash1) - } - // Extend the newly created chain - headerChainB := makeHeaderChain(LightChain2.CurrentHeader(), n, db, forkSeed) - if _, err := LightChain2.InsertHeaderChain(headerChainB); err != nil { - t.Fatalf("failed to insert forking chain: %v", err) - } - // Sanity check that the forked chain can be imported into the original - var tdPre, tdPost *big.Int - cur := LightChain.CurrentHeader() - tdPre = LightChain.GetTd(cur.Hash(), cur.Number.Uint64()) - if err := testHeaderChainImport(headerChainB, LightChain); err != nil { - t.Fatalf("failed to import forked header chain: %v", err) - } - last := headerChainB[len(headerChainB)-1] - tdPost = LightChain.GetTd(last.Hash(), last.Number.Uint64()) - // Compare the total difficulties of the chains - comparator(tdPre, tdPost) -} - -// testHeaderChainImport tries to process a chain of header, writing them into -// the database if successful. -func testHeaderChainImport(chain []*types.Header, lightchain *LightChain) error { - for _, header := range chain { - // Try and validate the header - if err := lightchain.engine.VerifyHeader(lightchain.hc, header); err != nil { - return err - } - // Manually insert the header into the database, but don't reorganize (allows subsequent testing) - lightchain.chainmu.Lock() - rawdb.WriteTd(lightchain.chainDb, header.Hash(), header.Number.Uint64(), - new(big.Int).Add(header.Difficulty, lightchain.GetTd(header.ParentHash, header.Number.Uint64()-1))) - rawdb.WriteHeader(lightchain.chainDb, header) - lightchain.chainmu.Unlock() - } - return nil -} - -// Tests that given a starting canonical chain of a given size, it can be extended -// with various length chains. -func TestExtendCanonicalHeaders(t *testing.T) { - length := 5 - - // Make first chain starting from genesis - _, processor, err := newCanonical(length) - if err != nil { - t.Fatalf("failed to make new canonical chain: %v", err) - } - // Define the difficulty comparator - better := func(td1, td2 *big.Int) { - if td2.Cmp(td1) <= 0 { - t.Errorf("total difficulty mismatch: have %v, expected more than %v", td2, td1) - } - } - // Start fork from current height - testFork(t, processor, length, 1, better) - testFork(t, processor, length, 2, better) - testFork(t, processor, length, 5, better) - testFork(t, processor, length, 10, better) -} - -// Tests that given a starting canonical chain of a given size, creating shorter -// forks do not take canonical ownership. -func TestShorterForkHeaders(t *testing.T) { - length := 10 - - // Make first chain starting from genesis - _, processor, err := newCanonical(length) - if err != nil { - t.Fatalf("failed to make new canonical chain: %v", err) - } - // Define the difficulty comparator - worse := func(td1, td2 *big.Int) { - if td2.Cmp(td1) >= 0 { - t.Errorf("total difficulty mismatch: have %v, expected less than %v", td2, td1) - } - } - // Sum of numbers must be less than `length` for this to be a shorter fork - testFork(t, processor, 0, 3, worse) - testFork(t, processor, 0, 7, worse) - testFork(t, processor, 1, 1, worse) - testFork(t, processor, 1, 7, worse) - testFork(t, processor, 5, 3, worse) - testFork(t, processor, 5, 4, worse) -} - -// Tests that given a starting canonical chain of a given size, creating longer -// forks do take canonical ownership. -func TestLongerForkHeaders(t *testing.T) { - length := 10 - - // Make first chain starting from genesis - _, processor, err := newCanonical(length) - if err != nil { - t.Fatalf("failed to make new canonical chain: %v", err) - } - // Define the difficulty comparator - better := func(td1, td2 *big.Int) { - if td2.Cmp(td1) <= 0 { - t.Errorf("total difficulty mismatch: have %v, expected more than %v", td2, td1) - } - } - // Sum of numbers must be greater than `length` for this to be a longer fork - testFork(t, processor, 0, 11, better) - testFork(t, processor, 0, 15, better) - testFork(t, processor, 1, 10, better) - testFork(t, processor, 1, 12, better) - testFork(t, processor, 5, 6, better) - testFork(t, processor, 5, 8, better) -} - -// Tests that given a starting canonical chain of a given size, creating equal -// forks do take canonical ownership. -func TestEqualForkHeaders(t *testing.T) { - length := 10 - - // Make first chain starting from genesis - _, processor, err := newCanonical(length) - if err != nil { - t.Fatalf("failed to make new canonical chain: %v", err) - } - // Define the difficulty comparator - equal := func(td1, td2 *big.Int) { - if td2.Cmp(td1) != 0 { - t.Errorf("total difficulty mismatch: have %v, want %v", td2, td1) - } - } - // Sum of numbers must be equal to `length` for this to be an equal fork - testFork(t, processor, 0, 10, equal) - testFork(t, processor, 1, 9, equal) - testFork(t, processor, 2, 8, equal) - testFork(t, processor, 5, 5, equal) - testFork(t, processor, 6, 4, equal) - testFork(t, processor, 9, 1, equal) -} - -// Tests that chains missing links do not get accepted by the processor. -func TestBrokenHeaderChain(t *testing.T) { - // Make chain starting from genesis - db, LightChain, err := newCanonical(10) - if err != nil { - t.Fatalf("failed to make new canonical chain: %v", err) - } - // Create a forked chain, and try to insert with a missing link - chain := makeHeaderChain(LightChain.CurrentHeader(), 5, db, forkSeed)[1:] - if err := testHeaderChainImport(chain, LightChain); err == nil { - t.Errorf("broken header chain not reported") - } -} - -func makeHeaderChainWithDiff(genesis *types.Block, d []int, seed byte) []*types.Header { - var chain []*types.Header - for i, difficulty := range d { - header := &types.Header{ - Coinbase: common.Address{seed}, - Number: big.NewInt(int64(i + 1)), - Difficulty: big.NewInt(int64(difficulty)), - UncleHash: types.EmptyUncleHash, - TxHash: types.EmptyTxsHash, - ReceiptHash: types.EmptyReceiptsHash, - } - if i == 0 { - header.ParentHash = genesis.Hash() - } else { - header.ParentHash = chain[i-1].Hash() - } - chain = append(chain, types.CopyHeader(header)) - } - return chain -} - -type dummyOdr struct { - OdrBackend - db ethdb.Database - indexerConfig *IndexerConfig -} - -func (odr *dummyOdr) Database() ethdb.Database { - return odr.db -} - -func (odr *dummyOdr) Retrieve(ctx context.Context, req OdrRequest) error { - return nil -} - -func (odr *dummyOdr) IndexerConfig() *IndexerConfig { - return odr.indexerConfig -} - -// Tests that reorganizing a long difficult chain after a short easy one -// overwrites the canonical numbers and links in the database. -func TestReorgLongHeaders(t *testing.T) { - testReorg(t, []int{1, 2, 4}, []int{1, 2, 3, 4}, 10) -} - -// Tests that reorganizing a short difficult chain after a long easy one -// overwrites the canonical numbers and links in the database. -func TestReorgShortHeaders(t *testing.T) { - testReorg(t, []int{1, 2, 3, 4}, []int{1, 10}, 11) -} - -func testReorg(t *testing.T, first, second []int, td int64) { - bc := newTestLightChain() - - // Insert an easy and a difficult chain afterwards - bc.InsertHeaderChain(makeHeaderChainWithDiff(bc.genesisBlock, first, 11)) - bc.InsertHeaderChain(makeHeaderChainWithDiff(bc.genesisBlock, second, 22)) - // Check that the chain is valid number and link wise - prev := bc.CurrentHeader() - for header := bc.GetHeaderByNumber(bc.CurrentHeader().Number.Uint64() - 1); header.Number.Uint64() != 0; prev, header = header, bc.GetHeaderByNumber(header.Number.Uint64()-1) { - if prev.ParentHash != header.Hash() { - t.Errorf("parent header hash mismatch: have %x, want %x", prev.ParentHash, header.Hash()) - } - } - // Make sure the chain total difficulty is the correct one - want := new(big.Int).Add(bc.genesisBlock.Difficulty(), big.NewInt(td)) - if have := bc.GetTd(bc.CurrentHeader().Hash(), bc.CurrentHeader().Number.Uint64()); have.Cmp(want) != 0 { - t.Errorf("total difficulty mismatch: have %v, want %v", have, want) - } -} - -// Tests that the insertion functions detect banned hashes. -func TestBadHeaderHashes(t *testing.T) { - bc := newTestLightChain() - - // Create a chain, ban a hash and try to import - var err error - headers := makeHeaderChainWithDiff(bc.genesisBlock, []int{1, 2, 4}, 10) - core.BadHashes[headers[2].Hash()] = true - if _, err = bc.InsertHeaderChain(headers); !errors.Is(err, core.ErrBannedHash) { - t.Errorf("error mismatch: have: %v, want %v", err, core.ErrBannedHash) - } -} - -// Tests that bad hashes are detected on boot, and the chan rolled back to a -// good state prior to the bad hash. -func TestReorgBadHeaderHashes(t *testing.T) { - bc := newTestLightChain() - - // Create a chain, import and ban afterwards - headers := makeHeaderChainWithDiff(bc.genesisBlock, []int{1, 2, 3, 4}, 10) - - if _, err := bc.InsertHeaderChain(headers); err != nil { - t.Fatalf("failed to import headers: %v", err) - } - if bc.CurrentHeader().Hash() != headers[3].Hash() { - t.Errorf("last header hash mismatch: have: %x, want %x", bc.CurrentHeader().Hash(), headers[3].Hash()) - } - core.BadHashes[headers[3].Hash()] = true - defer func() { delete(core.BadHashes, headers[3].Hash()) }() - - // Create a new LightChain and check that it rolled back the state. - ncm, err := NewLightChain(&dummyOdr{db: bc.chainDb}, params.TestChainConfig, ethash.NewFaker()) - if err != nil { - t.Fatalf("failed to create new chain manager: %v", err) - } - if ncm.CurrentHeader().Hash() != headers[2].Hash() { - t.Errorf("last header hash mismatch: have: %x, want %x", ncm.CurrentHeader().Hash(), headers[2].Hash()) - } -} diff --git a/light/odr.go b/light/odr.go deleted file mode 100644 index 39f626ee2c..0000000000 --- a/light/odr.go +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2015 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "context" - "errors" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -// NoOdr is the default context passed to an ODR capable function when the ODR -// service is not required. -var NoOdr = context.Background() - -// ErrNoPeers is returned if no peers capable of serving a queued request are available -var ErrNoPeers = errors.New("no suitable peers available") - -// OdrBackend is an interface to a backend service that handles ODR retrievals type -type OdrBackend interface { - Database() ethdb.Database - ChtIndexer() *core.ChainIndexer - BloomTrieIndexer() *core.ChainIndexer - BloomIndexer() *core.ChainIndexer - Retrieve(ctx context.Context, req OdrRequest) error - RetrieveTxStatus(ctx context.Context, req *TxStatusRequest) error - IndexerConfig() *IndexerConfig -} - -// OdrRequest is an interface for retrieval requests -type OdrRequest interface { - StoreResult(db ethdb.Database) -} - -// TrieID identifies a state or account storage trie -type TrieID struct { - BlockHash common.Hash - BlockNumber uint64 - StateRoot common.Hash - Root common.Hash - AccountAddress []byte -} - -// StateTrieID returns a TrieID for a state trie belonging to a certain block -// header. -func StateTrieID(header *types.Header) *TrieID { - return &TrieID{ - BlockHash: header.Hash(), - BlockNumber: header.Number.Uint64(), - StateRoot: header.Root, - Root: header.Root, - AccountAddress: nil, - } -} - -// StorageTrieID returns a TrieID for a contract storage trie at a given account -// of a given state trie. It also requires the root hash of the trie for -// checking Merkle proofs. -func StorageTrieID(state *TrieID, address common.Address, root common.Hash) *TrieID { - return &TrieID{ - BlockHash: state.BlockHash, - BlockNumber: state.BlockNumber, - StateRoot: state.StateRoot, - AccountAddress: address[:], - Root: root, - } -} - -// TrieRequest is the ODR request type for state/storage trie entries -type TrieRequest struct { - Id *TrieID - Key []byte - Proof *trienode.ProofSet -} - -// StoreResult stores the retrieved data in local database -func (req *TrieRequest) StoreResult(db ethdb.Database) { - req.Proof.Store(db) -} - -// CodeRequest is the ODR request type for retrieving contract code -type CodeRequest struct { - Id *TrieID // references storage trie of the account - Hash common.Hash - Data []byte -} - -// StoreResult stores the retrieved data in local database -func (req *CodeRequest) StoreResult(db ethdb.Database) { - rawdb.WriteCode(db, req.Hash, req.Data) -} - -// BlockRequest is the ODR request type for retrieving block bodies -type BlockRequest struct { - Hash common.Hash - Number uint64 - Header *types.Header - Rlp []byte -} - -// StoreResult stores the retrieved data in local database -func (req *BlockRequest) StoreResult(db ethdb.Database) { - rawdb.WriteBodyRLP(db, req.Hash, req.Number, req.Rlp) -} - -// ReceiptsRequest is the ODR request type for retrieving receipts. -type ReceiptsRequest struct { - Hash common.Hash - Number uint64 - Header *types.Header - Receipts types.Receipts -} - -// StoreResult stores the retrieved data in local database -func (req *ReceiptsRequest) StoreResult(db ethdb.Database) { - rawdb.WriteReceipts(db, req.Hash, req.Number, req.Receipts) -} - -// ChtRequest is the ODR request type for retrieving header by Canonical Hash Trie -type ChtRequest struct { - Config *IndexerConfig - ChtNum, BlockNum uint64 - ChtRoot common.Hash - Header *types.Header - Td *big.Int - Proof *trienode.ProofSet -} - -// StoreResult stores the retrieved data in local database -func (req *ChtRequest) StoreResult(db ethdb.Database) { - hash, num := req.Header.Hash(), req.Header.Number.Uint64() - rawdb.WriteHeader(db, req.Header) - rawdb.WriteTd(db, hash, num, req.Td) - rawdb.WriteCanonicalHash(db, hash, num) -} - -// BloomRequest is the ODR request type for retrieving bloom filters from a CHT structure -type BloomRequest struct { - OdrRequest - Config *IndexerConfig - BloomTrieNum uint64 - BitIdx uint - SectionIndexList []uint64 - BloomTrieRoot common.Hash - BloomBits [][]byte - Proofs *trienode.ProofSet -} - -// StoreResult stores the retrieved data in local database -func (req *BloomRequest) StoreResult(db ethdb.Database) { - for i, sectionIdx := range req.SectionIndexList { - sectionHead := rawdb.ReadCanonicalHash(db, (sectionIdx+1)*req.Config.BloomTrieSize-1) - // if we don't have the canonical hash stored for this section head number, we'll still store it under - // a key with a zero sectionHead. GetBloomBits will look there too if we still don't have the canonical - // hash. In the unlikely case we've retrieved the section head hash since then, we'll just retrieve the - // bit vector again from the network. - rawdb.WriteBloomBits(db, req.BitIdx, sectionIdx, sectionHead, req.BloomBits[i]) - } -} - -// TxStatus describes the status of a transaction -type TxStatus struct { - Status txpool.TxStatus - Lookup *rawdb.LegacyTxLookupEntry `rlp:"nil"` - Error string -} - -// TxStatusRequest is the ODR request type for retrieving transaction status -type TxStatusRequest struct { - Hashes []common.Hash - Status []TxStatus -} - -// StoreResult stores the retrieved data in local database -func (req *TxStatusRequest) StoreResult(db ethdb.Database) {} diff --git a/light/odr_test.go b/light/odr_test.go deleted file mode 100644 index de12f9b7ef..0000000000 --- a/light/odr_test.go +++ /dev/null @@ -1,339 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "bytes" - "context" - "errors" - "math/big" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/math" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -var ( - testBankKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") - testBankAddress = crypto.PubkeyToAddress(testBankKey.PublicKey) - testBankFunds = big.NewInt(1_000_000_000_000_000_000) - - acc1Key, _ = crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a") - acc2Key, _ = crypto.HexToECDSA("49a7b37aa6f6645917e7b807e9d1c00d4fa71f18343b0d4122a4d2df64dd6fee") - acc1Addr = crypto.PubkeyToAddress(acc1Key.PublicKey) - acc2Addr = crypto.PubkeyToAddress(acc2Key.PublicKey) - - testContractCode = common.Hex2Bytes("606060405260cc8060106000396000f360606040526000357c01000000000000000000000000000000000000000000000000000000009004806360cd2685146041578063c16431b914606b57603f565b005b6055600480803590602001909190505060a9565b6040518082815260200191505060405180910390f35b60886004808035906020019091908035906020019091905050608a565b005b80600060005083606481101560025790900160005b50819055505b5050565b6000600060005082606481101560025790900160005b5054905060c7565b91905056") - testContractAddr common.Address -) - -type testOdr struct { - OdrBackend - indexerConfig *IndexerConfig - sdb, ldb ethdb.Database - serverState state.Database - disable bool -} - -func (odr *testOdr) Database() ethdb.Database { - return odr.ldb -} - -var ErrOdrDisabled = errors.New("ODR disabled") - -func (odr *testOdr) Retrieve(ctx context.Context, req OdrRequest) error { - if odr.disable { - return ErrOdrDisabled - } - switch req := req.(type) { - case *BlockRequest: - number := rawdb.ReadHeaderNumber(odr.sdb, req.Hash) - if number != nil { - req.Rlp = rawdb.ReadBodyRLP(odr.sdb, req.Hash, *number) - } - case *ReceiptsRequest: - number := rawdb.ReadHeaderNumber(odr.sdb, req.Hash) - if number != nil { - req.Receipts = rawdb.ReadRawReceipts(odr.sdb, req.Hash, *number) - } - case *TrieRequest: - var ( - err error - t state.Trie - ) - if len(req.Id.AccountAddress) > 0 { - t, err = odr.serverState.OpenStorageTrie(req.Id.StateRoot, common.BytesToAddress(req.Id.AccountAddress), req.Id.Root, nil) - } else { - t, err = odr.serverState.OpenTrie(req.Id.Root) - } - if err != nil { - panic(err) - } - nodes := trienode.NewProofSet() - t.Prove(req.Key, nodes) - req.Proof = nodes - case *CodeRequest: - req.Data = rawdb.ReadCode(odr.sdb, req.Hash) - } - req.StoreResult(odr.ldb) - return nil -} - -func (odr *testOdr) IndexerConfig() *IndexerConfig { - return odr.indexerConfig -} - -type odrTestFn func(ctx context.Context, db ethdb.Database, bc *core.BlockChain, lc *LightChain, bhash common.Hash) ([]byte, error) - -func TestOdrGetBlockLes2(t *testing.T) { testChainOdr(t, 1, odrGetBlock) } - -func odrGetBlock(ctx context.Context, db ethdb.Database, bc *core.BlockChain, lc *LightChain, bhash common.Hash) ([]byte, error) { - var block *types.Block - if bc != nil { - block = bc.GetBlockByHash(bhash) - } else { - block, _ = lc.GetBlockByHash(ctx, bhash) - } - if block == nil { - return nil, nil - } - rlp, _ := rlp.EncodeToBytes(block) - return rlp, nil -} - -func TestOdrGetReceiptsLes2(t *testing.T) { testChainOdr(t, 1, odrGetReceipts) } - -func odrGetReceipts(ctx context.Context, db ethdb.Database, bc *core.BlockChain, lc *LightChain, bhash common.Hash) ([]byte, error) { - var receipts types.Receipts - if bc != nil { - if number := rawdb.ReadHeaderNumber(db, bhash); number != nil { - if header := rawdb.ReadHeader(db, bhash, *number); header != nil { - receipts = rawdb.ReadReceipts(db, bhash, *number, header.Time, bc.Config()) - } - } - } else { - number := rawdb.ReadHeaderNumber(db, bhash) - if number != nil { - receipts, _ = GetBlockReceipts(ctx, lc.Odr(), bhash, *number) - } - } - if receipts == nil { - return nil, nil - } - rlp, _ := rlp.EncodeToBytes(receipts) - return rlp, nil -} - -func TestOdrAccountsLes2(t *testing.T) { testChainOdr(t, 1, odrAccounts) } - -func odrAccounts(ctx context.Context, db ethdb.Database, bc *core.BlockChain, lc *LightChain, bhash common.Hash) ([]byte, error) { - dummyAddr := common.HexToAddress("1234567812345678123456781234567812345678") - acc := []common.Address{testBankAddress, acc1Addr, acc2Addr, dummyAddr} - - var st *state.StateDB - if bc == nil { - header := lc.GetHeaderByHash(bhash) - st = NewState(ctx, header, lc.Odr()) - } else { - header := bc.GetHeaderByHash(bhash) - st, _ = state.New(header.Root, bc.StateCache(), nil) - } - - var res []byte - for _, addr := range acc { - bal := st.GetBalance(addr) - rlp, _ := rlp.EncodeToBytes(bal) - res = append(res, rlp...) - } - return res, st.Error() -} - -func TestOdrContractCallLes2(t *testing.T) { testChainOdr(t, 1, odrContractCall) } - -func odrContractCall(ctx context.Context, db ethdb.Database, bc *core.BlockChain, lc *LightChain, bhash common.Hash) ([]byte, error) { - data := common.Hex2Bytes("60CD26850000000000000000000000000000000000000000000000000000000000000000") - config := params.TestChainConfig - - var res []byte - for i := 0; i < 3; i++ { - data[35] = byte(i) - - var ( - st *state.StateDB - header *types.Header - chain core.ChainContext - ) - if bc == nil { - chain = lc - header = lc.GetHeaderByHash(bhash) - st = NewState(ctx, header, lc.Odr()) - } else { - chain = bc - header = bc.GetHeaderByHash(bhash) - st, _ = state.New(header.Root, bc.StateCache(), nil) - } - - // Perform read-only call. - st.SetBalance(testBankAddress, math.MaxBig256) - msg := &core.Message{ - From: testBankAddress, - To: &testContractAddr, - Value: new(big.Int), - GasLimit: 1000000, - GasPrice: big.NewInt(params.InitialBaseFee), - GasFeeCap: big.NewInt(params.InitialBaseFee), - GasTipCap: new(big.Int), - Data: data, - SkipAccountChecks: true, - } - txContext := core.NewEVMTxContext(msg) - context := core.NewEVMBlockContext(header, chain, nil) - vmenv := vm.NewEVM(context, txContext, st, config, vm.Config{NoBaseFee: true}) - gp := new(core.GasPool).AddGas(math.MaxUint64) - result, _ := core.ApplyMessage(vmenv, msg, gp) - res = append(res, result.Return()...) - if st.Error() != nil { - return res, st.Error() - } - } - return res, nil -} - -func testChainGen(i int, block *core.BlockGen) { - signer := types.HomesteadSigner{} - switch i { - case 0: - // In block 1, the test bank sends account #1 some ether. - tx, _ := types.SignTx(types.NewTransaction(block.TxNonce(testBankAddress), acc1Addr, big.NewInt(10_000_000_000_000_000), params.TxGas, block.BaseFee(), nil), signer, testBankKey) - block.AddTx(tx) - case 1: - // In block 2, the test bank sends some more ether to account #1. - // acc1Addr passes it on to account #2. - // acc1Addr creates a test contract. - tx1, _ := types.SignTx(types.NewTransaction(block.TxNonce(testBankAddress), acc1Addr, big.NewInt(1_000_000_000_000_000), params.TxGas, block.BaseFee(), nil), signer, testBankKey) - nonce := block.TxNonce(acc1Addr) - tx2, _ := types.SignTx(types.NewTransaction(nonce, acc2Addr, big.NewInt(1_000_000_000_000_000), params.TxGas, block.BaseFee(), nil), signer, acc1Key) - nonce++ - tx3, _ := types.SignTx(types.NewContractCreation(nonce, big.NewInt(0), 1000000, block.BaseFee(), testContractCode), signer, acc1Key) - testContractAddr = crypto.CreateAddress(acc1Addr, nonce) - block.AddTx(tx1) - block.AddTx(tx2) - block.AddTx(tx3) - case 2: - // Block 3 is empty but was mined by account #2. - block.SetCoinbase(acc2Addr) - block.SetExtra([]byte("yeehaw")) - data := common.Hex2Bytes("C16431B900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001") - tx, _ := types.SignTx(types.NewTransaction(block.TxNonce(testBankAddress), testContractAddr, big.NewInt(0), 100000, block.BaseFee(), data), signer, testBankKey) - block.AddTx(tx) - case 3: - // Block 4 includes blocks 2 and 3 as uncle headers (with modified extra data). - b2 := block.PrevBlock(1).Header() - b2.Extra = []byte("foo") - block.AddUncle(b2) - b3 := block.PrevBlock(2).Header() - b3.Extra = []byte("foo") - block.AddUncle(b3) - data := common.Hex2Bytes("C16431B900000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002") - tx, _ := types.SignTx(types.NewTransaction(block.TxNonce(testBankAddress), testContractAddr, big.NewInt(0), 100000, block.BaseFee(), data), signer, testBankKey) - block.AddTx(tx) - } -} - -func testChainOdr(t *testing.T, protocol int, fn odrTestFn) { - var ( - sdb = rawdb.NewMemoryDatabase() - ldb = rawdb.NewMemoryDatabase() - gspec = &core.Genesis{ - Config: params.TestChainConfig, - Alloc: core.GenesisAlloc{testBankAddress: {Balance: testBankFunds}}, - BaseFee: big.NewInt(params.InitialBaseFee), - } - ) - // Assemble the test environment - blockchain, _ := core.NewBlockChain(sdb, nil, gspec, nil, ethash.NewFullFaker(), vm.Config{}, nil, nil) - _, gchain, _ := core.GenerateChainWithGenesis(gspec, ethash.NewFaker(), 4, testChainGen) - if _, err := blockchain.InsertChain(gchain); err != nil { - t.Fatal(err) - } - - gspec.MustCommit(ldb, trie.NewDatabase(ldb, trie.HashDefaults)) - odr := &testOdr{sdb: sdb, ldb: ldb, serverState: blockchain.StateCache(), indexerConfig: TestClientIndexerConfig} - lightchain, err := NewLightChain(odr, gspec.Config, ethash.NewFullFaker()) - if err != nil { - t.Fatal(err) - } - headers := make([]*types.Header, len(gchain)) - for i, block := range gchain { - headers[i] = block.Header() - } - if _, err := lightchain.InsertHeaderChain(headers); err != nil { - t.Fatal(err) - } - - test := func(expFail int) { - for i := uint64(0); i <= blockchain.CurrentHeader().Number.Uint64(); i++ { - bhash := rawdb.ReadCanonicalHash(sdb, i) - b1, err := fn(NoOdr, sdb, blockchain, nil, bhash) - if err != nil { - t.Fatalf("error in full-node test for block %d: %v", i, err) - } - - ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond) - defer cancel() - - exp := i < uint64(expFail) - b2, err := fn(ctx, ldb, nil, lightchain, bhash) - if err != nil && exp { - t.Errorf("error in ODR test for block %d: %v", i, err) - } - - eq := bytes.Equal(b1, b2) - if exp && !eq { - t.Errorf("ODR test output for block %d doesn't match full node", i) - } - } - } - - // expect retrievals to fail (except genesis block) without a les peer - t.Log("checking without ODR") - odr.disable = true - test(1) - - // expect all retrievals to pass with ODR enabled - t.Log("checking with ODR") - odr.disable = false - test(len(gchain)) - - // still expect all retrievals to pass, now data should be cached locally - t.Log("checking without ODR, should be cached") - odr.disable = true - test(len(gchain)) -} diff --git a/light/odr_util.go b/light/odr_util.go deleted file mode 100644 index 9cac7df4fa..0000000000 --- a/light/odr_util.go +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "context" - "errors" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/rlp" -) - -// errNonCanonicalHash is returned if the requested chain data doesn't belong -// to the canonical chain. ODR can only retrieve the canonical chain data covered -// by the CHT or Bloom trie for verification. -var errNonCanonicalHash = errors.New("hash is not currently canonical") - -// GetHeaderByNumber retrieves the canonical block header corresponding to the -// given number. The returned header is proven by local CHT. -func GetHeaderByNumber(ctx context.Context, odr OdrBackend, number uint64) (*types.Header, error) { - // Try to find it in the local database first. - db := odr.Database() - hash := rawdb.ReadCanonicalHash(db, number) - - // If there is a canonical hash, there should have a header too. - // But if it's pruned, re-fetch from network again. - if (hash != common.Hash{}) { - if header := rawdb.ReadHeader(db, hash, number); header != nil { - return header, nil - } - } - // Retrieve the header via ODR, ensure the requested header is covered - // by local trusted CHT. - chts, _, chtHead := odr.ChtIndexer().Sections() - if number >= chts*odr.IndexerConfig().ChtSize { - return nil, errNoTrustedCht - } - r := &ChtRequest{ - ChtRoot: GetChtRoot(db, chts-1, chtHead), - ChtNum: chts - 1, - BlockNum: number, - Config: odr.IndexerConfig(), - } - if err := odr.Retrieve(ctx, r); err != nil { - return nil, err - } - return r.Header, nil -} - -// GetCanonicalHash retrieves the canonical block hash corresponding to the number. -func GetCanonicalHash(ctx context.Context, odr OdrBackend, number uint64) (common.Hash, error) { - hash := rawdb.ReadCanonicalHash(odr.Database(), number) - if hash != (common.Hash{}) { - return hash, nil - } - header, err := GetHeaderByNumber(ctx, odr, number) - if err != nil { - return common.Hash{}, err - } - // number -> canonical mapping already be stored in db, get it. - return header.Hash(), nil -} - -// GetTd retrieves the total difficulty corresponding to the number and hash. -func GetTd(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (*big.Int, error) { - td := rawdb.ReadTd(odr.Database(), hash, number) - if td != nil { - return td, nil - } - header, err := GetHeaderByNumber(ctx, odr, number) - if err != nil { - return nil, err - } - if header.Hash() != hash { - return nil, errNonCanonicalHash - } - // -> td mapping already be stored in db, get it. - return rawdb.ReadTd(odr.Database(), hash, number), nil -} - -// GetBodyRLP retrieves the block body (transactions and uncles) in RLP encoding. -func GetBodyRLP(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (rlp.RawValue, error) { - if data := rawdb.ReadBodyRLP(odr.Database(), hash, number); data != nil { - return data, nil - } - // Retrieve the block header first and pass it for verification. - header, err := GetHeaderByNumber(ctx, odr, number) - if err != nil { - return nil, errNoHeader - } - if header.Hash() != hash { - return nil, errNonCanonicalHash - } - r := &BlockRequest{Hash: hash, Number: number, Header: header} - if err := odr.Retrieve(ctx, r); err != nil { - return nil, err - } - return r.Rlp, nil -} - -// GetBody retrieves the block body (transactions, uncles) corresponding to the -// hash. -func GetBody(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (*types.Body, error) { - data, err := GetBodyRLP(ctx, odr, hash, number) - if err != nil { - return nil, err - } - body := new(types.Body) - if err := rlp.DecodeBytes(data, body); err != nil { - return nil, err - } - return body, nil -} - -// GetBlock retrieves an entire block corresponding to the hash, assembling it -// back from the stored header and body. -func GetBlock(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (*types.Block, error) { - // Retrieve the block header and body contents - header, err := GetHeaderByNumber(ctx, odr, number) - if err != nil { - return nil, errNoHeader - } - body, err := GetBody(ctx, odr, hash, number) - if err != nil { - return nil, err - } - // Reassemble the block and return - return types.NewBlockWithHeader(header).WithBody(body.Transactions, body.Uncles), nil -} - -// GetBlockReceipts retrieves the receipts generated by the transactions included -// in a block given by its hash. Receipts will be filled in with context data. -func GetBlockReceipts(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (types.Receipts, error) { - // Assume receipts are already stored locally and attempt to retrieve. - receipts := rawdb.ReadRawReceipts(odr.Database(), hash, number) - if receipts == nil { - header, err := GetHeaderByNumber(ctx, odr, number) - if err != nil { - return nil, errNoHeader - } - if header.Hash() != hash { - return nil, errNonCanonicalHash - } - r := &ReceiptsRequest{Hash: hash, Number: number, Header: header} - if err := odr.Retrieve(ctx, r); err != nil { - return nil, err - } - receipts = r.Receipts - } - // If the receipts are incomplete, fill the derived fields - if len(receipts) > 0 && receipts[0].TxHash == (common.Hash{}) { - block, err := GetBlock(ctx, odr, hash, number) - if err != nil { - return nil, err - } - genesis := rawdb.ReadCanonicalHash(odr.Database(), 0) - config := rawdb.ReadChainConfig(odr.Database(), genesis) - - var blobGasPrice *big.Int - excessBlobGas := block.ExcessBlobGas() - if excessBlobGas != nil { - blobGasPrice = eip4844.CalcBlobFee(*excessBlobGas) - } - - if err := receipts.DeriveFields(config, block.Hash(), block.NumberU64(), block.Time(), block.BaseFee(), blobGasPrice, block.Transactions()); err != nil { - return nil, err - } - rawdb.WriteReceipts(odr.Database(), hash, number, receipts) - } - return receipts, nil -} - -// GetBlockLogs retrieves the logs generated by the transactions included in a -// block given by its hash. Logs will be filled in with context data. -func GetBlockLogs(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) ([][]*types.Log, error) { - receipts, err := GetBlockReceipts(ctx, odr, hash, number) - if err != nil { - return nil, err - } - logs := make([][]*types.Log, len(receipts)) - for i, receipt := range receipts { - logs[i] = receipt.Logs - } - return logs, nil -} - -// GetBloomBits retrieves a batch of compressed bloomBits vectors belonging to -// the given bit index and section indexes. -func GetBloomBits(ctx context.Context, odr OdrBackend, bit uint, sections []uint64) ([][]byte, error) { - var ( - reqIndex []int - reqSections []uint64 - db = odr.Database() - result = make([][]byte, len(sections)) - ) - blooms, _, sectionHead := odr.BloomTrieIndexer().Sections() - for i, section := range sections { - sectionHead := rawdb.ReadCanonicalHash(db, (section+1)*odr.IndexerConfig().BloomSize-1) - // If we don't have the canonical hash stored for this section head number, - // we'll still look for an entry with a zero sectionHead (we store it with - // zero section head too if we don't know it at the time of the retrieval) - if bloomBits, _ := rawdb.ReadBloomBits(db, bit, section, sectionHead); len(bloomBits) != 0 { - result[i] = bloomBits - continue - } - // TODO(rjl493456442) Convert sectionIndex to BloomTrie relative index - if section >= blooms { - return nil, errNoTrustedBloomTrie - } - reqSections = append(reqSections, section) - reqIndex = append(reqIndex, i) - } - // Find all bloombits in database, nothing to query via odr, return. - if reqSections == nil { - return result, nil - } - // Send odr request to retrieve missing bloombits. - r := &BloomRequest{ - BloomTrieRoot: GetBloomTrieRoot(db, blooms-1, sectionHead), - BloomTrieNum: blooms - 1, - BitIdx: bit, - SectionIndexList: reqSections, - Config: odr.IndexerConfig(), - } - if err := odr.Retrieve(ctx, r); err != nil { - return nil, err - } - for i, idx := range reqIndex { - result[idx] = r.BloomBits[i] - } - return result, nil -} - -// GetTransaction retrieves a canonical transaction by hash and also returns -// its position in the chain. There is no guarantee in the LES protocol that -// the mined transaction will be retrieved back for sure because of different -// reasons(the transaction is unindexed, the malicious server doesn't reply it -// deliberately, etc). Therefore, unretrieved transactions will receive a certain -// number of retries, thus giving a weak guarantee. -func GetTransaction(ctx context.Context, odr OdrBackend, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) { - r := &TxStatusRequest{Hashes: []common.Hash{txHash}} - if err := odr.RetrieveTxStatus(ctx, r); err != nil || r.Status[0].Status != txpool.TxStatusIncluded { - return nil, common.Hash{}, 0, 0, err - } - pos := r.Status[0].Lookup - // first ensure that we have the header, otherwise block body retrieval will fail - // also verify if this is a canonical block by getting the header by number and checking its hash - if header, err := GetHeaderByNumber(ctx, odr, pos.BlockIndex); err != nil || header.Hash() != pos.BlockHash { - return nil, common.Hash{}, 0, 0, err - } - body, err := GetBody(ctx, odr, pos.BlockHash, pos.BlockIndex) - if err != nil || uint64(len(body.Transactions)) <= pos.Index || body.Transactions[pos.Index].Hash() != txHash { - return nil, common.Hash{}, 0, 0, err - } - return body.Transactions[pos.Index], pos.BlockHash, pos.BlockIndex, pos.Index, nil -} diff --git a/light/postprocess.go b/light/postprocess.go deleted file mode 100644 index a317e30b90..0000000000 --- a/light/postprocess.go +++ /dev/null @@ -1,538 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "bytes" - "context" - "encoding/binary" - "errors" - "fmt" - "math/big" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/bitutil" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -// IndexerConfig includes a set of configs for chain indexers. -type IndexerConfig struct { - // The block frequency for creating CHTs. - ChtSize uint64 - - // The number of confirmations needed to generate/accept a canonical hash help trie. - ChtConfirms uint64 - - // The block frequency for creating new bloom bits. - BloomSize uint64 - - // The number of confirmation needed before a bloom section is considered probably final and its rotated bits - // are calculated. - BloomConfirms uint64 - - // The block frequency for creating BloomTrie. - BloomTrieSize uint64 - - // The number of confirmations needed to generate/accept a bloom trie. - BloomTrieConfirms uint64 -} - -var ( - // DefaultServerIndexerConfig wraps a set of configs as a default indexer config for server side. - DefaultServerIndexerConfig = &IndexerConfig{ - ChtSize: params.CHTFrequency, - ChtConfirms: params.HelperTrieProcessConfirmations, - BloomSize: params.BloomBitsBlocks, - BloomConfirms: params.BloomConfirms, - BloomTrieSize: params.BloomTrieFrequency, - BloomTrieConfirms: params.HelperTrieProcessConfirmations, - } - // DefaultClientIndexerConfig wraps a set of configs as a default indexer config for client side. - DefaultClientIndexerConfig = &IndexerConfig{ - ChtSize: params.CHTFrequency, - ChtConfirms: params.HelperTrieConfirmations, - BloomSize: params.BloomBitsBlocksClient, - BloomConfirms: params.HelperTrieConfirmations, - BloomTrieSize: params.BloomTrieFrequency, - BloomTrieConfirms: params.HelperTrieConfirmations, - } - // TestServerIndexerConfig wraps a set of configs as a test indexer config for server side. - TestServerIndexerConfig = &IndexerConfig{ - ChtSize: 128, - ChtConfirms: 1, - BloomSize: 16, - BloomConfirms: 1, - BloomTrieSize: 128, - BloomTrieConfirms: 1, - } - // TestClientIndexerConfig wraps a set of configs as a test indexer config for client side. - TestClientIndexerConfig = &IndexerConfig{ - ChtSize: 128, - ChtConfirms: 8, - BloomSize: 128, - BloomConfirms: 8, - BloomTrieSize: 128, - BloomTrieConfirms: 8, - } -) - -var ( - errNoTrustedCht = errors.New("no trusted canonical hash trie") - errNoTrustedBloomTrie = errors.New("no trusted bloom trie") - errNoHeader = errors.New("header not found") -) - -// ChtNode structures are stored in the Canonical Hash Trie in an RLP encoded format -type ChtNode struct { - Hash common.Hash - Td *big.Int -} - -// GetChtRoot reads the CHT root associated to the given section from the database -func GetChtRoot(db ethdb.Database, sectionIdx uint64, sectionHead common.Hash) common.Hash { - var encNumber [8]byte - binary.BigEndian.PutUint64(encNumber[:], sectionIdx) - data, _ := db.Get(append(append(rawdb.ChtPrefix, encNumber[:]...), sectionHead.Bytes()...)) - return common.BytesToHash(data) -} - -// StoreChtRoot writes the CHT root associated to the given section into the database -func StoreChtRoot(db ethdb.Database, sectionIdx uint64, sectionHead, root common.Hash) { - var encNumber [8]byte - binary.BigEndian.PutUint64(encNumber[:], sectionIdx) - db.Put(append(append(rawdb.ChtPrefix, encNumber[:]...), sectionHead.Bytes()...), root.Bytes()) -} - -// ChtIndexerBackend implements core.ChainIndexerBackend. -type ChtIndexerBackend struct { - disablePruning bool - diskdb, trieTable ethdb.Database - odr OdrBackend - triedb *trie.Database - section, sectionSize uint64 - lastHash common.Hash - trie *trie.Trie - originRoot common.Hash -} - -// NewChtIndexer creates a Cht chain indexer -func NewChtIndexer(db ethdb.Database, odr OdrBackend, size, confirms uint64, disablePruning bool) *core.ChainIndexer { - trieTable := rawdb.NewTable(db, string(rawdb.ChtTablePrefix)) - backend := &ChtIndexerBackend{ - diskdb: db, - odr: odr, - trieTable: trieTable, - triedb: trie.NewDatabase(trieTable, trie.HashDefaults), - sectionSize: size, - disablePruning: disablePruning, - } - return core.NewChainIndexer(db, rawdb.NewTable(db, string(rawdb.ChtIndexTablePrefix)), backend, size, confirms, time.Millisecond*100, "cht") -} - -// fetchMissingNodes tries to retrieve the last entry of the latest trusted CHT from the -// ODR backend in order to be able to add new entries and calculate subsequent root hashes -func (c *ChtIndexerBackend) fetchMissingNodes(ctx context.Context, section uint64, root common.Hash) error { - batch := c.trieTable.NewBatch() - r := &ChtRequest{ChtRoot: root, ChtNum: section - 1, BlockNum: section*c.sectionSize - 1, Config: c.odr.IndexerConfig()} - for { - err := c.odr.Retrieve(ctx, r) - switch err { - case nil: - r.Proof.Store(batch) - return batch.Write() - case ErrNoPeers: - // if there are no peers to serve, retry later - select { - case <-ctx.Done(): - return ctx.Err() - case <-time.After(time.Second * 10): - // stay in the loop and try again - } - default: - return err - } - } -} - -// Reset implements core.ChainIndexerBackend -func (c *ChtIndexerBackend) Reset(ctx context.Context, section uint64, lastSectionHead common.Hash) error { - root := types.EmptyRootHash - if section > 0 { - root = GetChtRoot(c.diskdb, section-1, lastSectionHead) - } - var err error - c.trie, err = trie.New(trie.TrieID(root), c.triedb) - - if err != nil && c.odr != nil { - err = c.fetchMissingNodes(ctx, section, root) - if err == nil { - c.trie, err = trie.New(trie.TrieID(root), c.triedb) - } - } - c.section = section - c.originRoot = root - return err -} - -// Process implements core.ChainIndexerBackend -func (c *ChtIndexerBackend) Process(ctx context.Context, header *types.Header) error { - hash, num := header.Hash(), header.Number.Uint64() - c.lastHash = hash - - td := rawdb.ReadTd(c.diskdb, hash, num) - if td == nil { - panic(nil) - } - var encNumber [8]byte - binary.BigEndian.PutUint64(encNumber[:], num) - data, _ := rlp.EncodeToBytes(ChtNode{hash, td}) - return c.trie.Update(encNumber[:], data) -} - -// Commit implements core.ChainIndexerBackend -func (c *ChtIndexerBackend) Commit() error { - root, nodes, err := c.trie.Commit(false) - if err != nil { - return err - } - // Commit trie changes into trie database in case it's not nil. - if nodes != nil { - if err := c.triedb.Update(root, c.originRoot, 0, trienode.NewWithNodeSet(nodes), nil); err != nil { - return err - } - if err := c.triedb.Commit(root, false); err != nil { - return err - } - } - // Re-create trie with newly generated root and updated database. - c.trie, err = trie.New(trie.TrieID(root), c.triedb) - if err != nil { - return err - } - // Pruning historical trie nodes if necessary. - if !c.disablePruning { - it := c.trieTable.NewIterator(nil, nil) - defer it.Release() - - var ( - deleted int - batch = c.trieTable.NewBatch() - t = time.Now() - ) - hashes := make(map[common.Hash]struct{}) - if nodes != nil { - for _, hash := range nodes.Hashes() { - hashes[hash] = struct{}{} - } - } - for it.Next() { - trimmed := bytes.TrimPrefix(it.Key(), rawdb.ChtTablePrefix) - if len(trimmed) == common.HashLength { - if _, ok := hashes[common.BytesToHash(trimmed)]; !ok { - batch.Delete(trimmed) - deleted += 1 - } - } - } - if err := batch.Write(); err != nil { - return err - } - log.Debug("Prune historical CHT trie nodes", "deleted", deleted, "remaining", len(hashes), "elapsed", common.PrettyDuration(time.Since(t))) - } - log.Info("Storing CHT", "section", c.section, "head", fmt.Sprintf("%064x", c.lastHash), "root", fmt.Sprintf("%064x", root)) - StoreChtRoot(c.diskdb, c.section, c.lastHash, root) - return nil -} - -// Prune implements core.ChainIndexerBackend which deletes all chain data -// (except hash<->number mappings) older than the specified threshold. -func (c *ChtIndexerBackend) Prune(threshold uint64) error { - // Short circuit if the light pruning is disabled. - if c.disablePruning { - return nil - } - t := time.Now() - // Always keep genesis header in database. - start, end := uint64(1), (threshold+1)*c.sectionSize - - var batch = c.diskdb.NewBatch() - for { - numbers, hashes := rawdb.ReadAllCanonicalHashes(c.diskdb, start, end, 10240) - if len(numbers) == 0 { - break - } - for i := 0; i < len(numbers); i++ { - // Keep hash<->number mapping in database otherwise the hash based - // API(e.g. GetReceipt, GetLogs) will be broken. - // - // Storage size wise, the size of a mapping is ~41bytes. For one - // section is about 1.3MB which is acceptable. - // - // In order to totally get rid of this index, we need an additional - // flag to specify how many historical data light client can serve. - rawdb.DeleteCanonicalHash(batch, numbers[i]) - rawdb.DeleteBlockWithoutNumber(batch, hashes[i], numbers[i]) - } - if batch.ValueSize() > ethdb.IdealBatchSize { - if err := batch.Write(); err != nil { - return err - } - batch.Reset() - } - start = numbers[len(numbers)-1] + 1 - } - if err := batch.Write(); err != nil { - return err - } - log.Debug("Prune history headers", "threshold", threshold, "elapsed", common.PrettyDuration(time.Since(t))) - return nil -} - -// GetBloomTrieRoot reads the BloomTrie root associated to the given section from the database -func GetBloomTrieRoot(db ethdb.Database, sectionIdx uint64, sectionHead common.Hash) common.Hash { - var encNumber [8]byte - binary.BigEndian.PutUint64(encNumber[:], sectionIdx) - data, _ := db.Get(append(append(rawdb.BloomTriePrefix, encNumber[:]...), sectionHead.Bytes()...)) - return common.BytesToHash(data) -} - -// StoreBloomTrieRoot writes the BloomTrie root associated to the given section into the database -func StoreBloomTrieRoot(db ethdb.Database, sectionIdx uint64, sectionHead, root common.Hash) { - var encNumber [8]byte - binary.BigEndian.PutUint64(encNumber[:], sectionIdx) - db.Put(append(append(rawdb.BloomTriePrefix, encNumber[:]...), sectionHead.Bytes()...), root.Bytes()) -} - -// BloomTrieIndexerBackend implements core.ChainIndexerBackend -type BloomTrieIndexerBackend struct { - disablePruning bool - diskdb, trieTable ethdb.Database - triedb *trie.Database - odr OdrBackend - section uint64 - parentSize uint64 - size uint64 - bloomTrieRatio uint64 - trie *trie.Trie - originRoot common.Hash - sectionHeads []common.Hash -} - -// NewBloomTrieIndexer creates a BloomTrie chain indexer -func NewBloomTrieIndexer(db ethdb.Database, odr OdrBackend, parentSize, size uint64, disablePruning bool) *core.ChainIndexer { - trieTable := rawdb.NewTable(db, string(rawdb.BloomTrieTablePrefix)) - backend := &BloomTrieIndexerBackend{ - diskdb: db, - odr: odr, - trieTable: trieTable, - triedb: trie.NewDatabase(trieTable, trie.HashDefaults), - parentSize: parentSize, - size: size, - disablePruning: disablePruning, - } - backend.bloomTrieRatio = size / parentSize - backend.sectionHeads = make([]common.Hash, backend.bloomTrieRatio) - return core.NewChainIndexer(db, rawdb.NewTable(db, string(rawdb.BloomTrieIndexPrefix)), backend, size, 0, time.Millisecond*100, "bloomtrie") -} - -// fetchMissingNodes tries to retrieve the last entries of the latest trusted bloom trie from the -// ODR backend in order to be able to add new entries and calculate subsequent root hashes -func (b *BloomTrieIndexerBackend) fetchMissingNodes(ctx context.Context, section uint64, root common.Hash) error { - indexCh := make(chan uint, types.BloomBitLength) - type res struct { - nodes *trienode.ProofSet - err error - } - resCh := make(chan res, types.BloomBitLength) - for i := 0; i < 20; i++ { - go func() { - for bitIndex := range indexCh { - r := &BloomRequest{BloomTrieRoot: root, BloomTrieNum: section - 1, BitIdx: bitIndex, SectionIndexList: []uint64{section - 1}, Config: b.odr.IndexerConfig()} - for { - if err := b.odr.Retrieve(ctx, r); err == ErrNoPeers { - // if there are no peers to serve, retry later - select { - case <-ctx.Done(): - resCh <- res{nil, ctx.Err()} - return - case <-time.After(time.Second * 10): - // stay in the loop and try again - } - } else { - resCh <- res{r.Proofs, err} - break - } - } - } - }() - } - for i := uint(0); i < types.BloomBitLength; i++ { - indexCh <- i - } - close(indexCh) - batch := b.trieTable.NewBatch() - for i := uint(0); i < types.BloomBitLength; i++ { - res := <-resCh - if res.err != nil { - return res.err - } - res.nodes.Store(batch) - } - return batch.Write() -} - -// Reset implements core.ChainIndexerBackend -func (b *BloomTrieIndexerBackend) Reset(ctx context.Context, section uint64, lastSectionHead common.Hash) error { - root := types.EmptyRootHash - if section > 0 { - root = GetBloomTrieRoot(b.diskdb, section-1, lastSectionHead) - } - var err error - b.trie, err = trie.New(trie.TrieID(root), b.triedb) - if err != nil && b.odr != nil { - err = b.fetchMissingNodes(ctx, section, root) - if err == nil { - b.trie, err = trie.New(trie.TrieID(root), b.triedb) - } - } - b.section = section - b.originRoot = root - return err -} - -// Process implements core.ChainIndexerBackend -func (b *BloomTrieIndexerBackend) Process(ctx context.Context, header *types.Header) error { - num := header.Number.Uint64() - b.section*b.size - if (num+1)%b.parentSize == 0 { - b.sectionHeads[num/b.parentSize] = header.Hash() - } - return nil -} - -// Commit implements core.ChainIndexerBackend -func (b *BloomTrieIndexerBackend) Commit() error { - var compSize, decompSize uint64 - - for i := uint(0); i < types.BloomBitLength; i++ { - var encKey [10]byte - binary.BigEndian.PutUint16(encKey[0:2], uint16(i)) - binary.BigEndian.PutUint64(encKey[2:10], b.section) - var decomp []byte - for j := uint64(0); j < b.bloomTrieRatio; j++ { - data, err := rawdb.ReadBloomBits(b.diskdb, i, b.section*b.bloomTrieRatio+j, b.sectionHeads[j]) - if err != nil { - return err - } - decompData, err2 := bitutil.DecompressBytes(data, int(b.parentSize/8)) - if err2 != nil { - return err2 - } - decomp = append(decomp, decompData...) - } - comp := bitutil.CompressBytes(decomp) - - decompSize += uint64(len(decomp)) - compSize += uint64(len(comp)) - - var terr error - if len(comp) > 0 { - terr = b.trie.Update(encKey[:], comp) - } else { - terr = b.trie.Delete(encKey[:]) - } - if terr != nil { - return terr - } - } - root, nodes, err := b.trie.Commit(false) - if err != nil { - return err - } - // Commit trie changes into trie database in case it's not nil. - if nodes != nil { - if err := b.triedb.Update(root, b.originRoot, 0, trienode.NewWithNodeSet(nodes), nil); err != nil { - return err - } - if err := b.triedb.Commit(root, false); err != nil { - return err - } - } - // Re-create trie with newly generated root and updated database. - b.trie, err = trie.New(trie.TrieID(root), b.triedb) - if err != nil { - return err - } - // Pruning historical trie nodes if necessary. - if !b.disablePruning { - it := b.trieTable.NewIterator(nil, nil) - defer it.Release() - - var ( - deleted int - batch = b.trieTable.NewBatch() - t = time.Now() - ) - hashes := make(map[common.Hash]struct{}) - if nodes != nil { - for _, hash := range nodes.Hashes() { - hashes[hash] = struct{}{} - } - } - for it.Next() { - trimmed := bytes.TrimPrefix(it.Key(), rawdb.BloomTrieTablePrefix) - if len(trimmed) == common.HashLength { - if _, ok := hashes[common.BytesToHash(trimmed)]; !ok { - batch.Delete(trimmed) - deleted += 1 - } - } - } - if err := batch.Write(); err != nil { - return err - } - log.Debug("Prune historical bloom trie nodes", "deleted", deleted, "remaining", len(hashes), "elapsed", common.PrettyDuration(time.Since(t))) - } - sectionHead := b.sectionHeads[b.bloomTrieRatio-1] - StoreBloomTrieRoot(b.diskdb, b.section, sectionHead, root) - log.Info("Storing bloom trie", "section", b.section, "head", fmt.Sprintf("%064x", sectionHead), "root", fmt.Sprintf("%064x", root), "compression", float64(compSize)/float64(decompSize)) - - return nil -} - -// Prune implements core.ChainIndexerBackend which deletes all -// bloombits which older than the specified threshold. -func (b *BloomTrieIndexerBackend) Prune(threshold uint64) error { - // Short circuit if the light pruning is disabled. - if b.disablePruning { - return nil - } - start := time.Now() - for i := uint(0); i < types.BloomBitLength; i++ { - rawdb.DeleteBloombits(b.diskdb, i, 0, threshold*b.bloomTrieRatio+b.bloomTrieRatio) - } - log.Debug("Prune history bloombits", "threshold", threshold, "elapsed", common.PrettyDuration(time.Since(start))) - return nil -} diff --git a/light/trie.go b/light/trie.go deleted file mode 100644 index 1d93bdf415..0000000000 --- a/light/trie.go +++ /dev/null @@ -1,319 +0,0 @@ -// Copyright 2015 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "context" - "errors" - "fmt" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/trie/trienode" -) - -var ( - sha3Nil = crypto.Keccak256Hash(nil) -) - -func NewState(ctx context.Context, head *types.Header, odr OdrBackend) *state.StateDB { - state, _ := state.New(head.Root, NewStateDatabase(ctx, head, odr), nil) - return state -} - -func NewStateDatabase(ctx context.Context, head *types.Header, odr OdrBackend) state.Database { - return &odrDatabase{ctx, StateTrieID(head), odr} -} - -type odrDatabase struct { - ctx context.Context - id *TrieID - backend OdrBackend -} - -func (db *odrDatabase) OpenTrie(root common.Hash) (state.Trie, error) { - return &odrTrie{db: db, id: db.id}, nil -} - -func (db *odrDatabase) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash, _ state.Trie) (state.Trie, error) { - return &odrTrie{db: db, id: StorageTrieID(db.id, address, root)}, nil -} - -func (db *odrDatabase) CopyTrie(t state.Trie) state.Trie { - switch t := t.(type) { - case *odrTrie: - cpy := &odrTrie{db: t.db, id: t.id} - if t.trie != nil { - cpy.trie = t.trie.Copy() - } - return cpy - default: - panic(fmt.Errorf("unknown trie type %T", t)) - } -} - -func (db *odrDatabase) ContractCode(addr common.Address, codeHash common.Hash) ([]byte, error) { - if codeHash == sha3Nil { - return nil, nil - } - code := rawdb.ReadCode(db.backend.Database(), codeHash) - if len(code) != 0 { - return code, nil - } - id := *db.id - id.AccountAddress = addr[:] - req := &CodeRequest{Id: &id, Hash: codeHash} - err := db.backend.Retrieve(db.ctx, req) - return req.Data, err -} - -func (db *odrDatabase) ContractCodeSize(addr common.Address, codeHash common.Hash) (int, error) { - code, err := db.ContractCode(addr, codeHash) - return len(code), err -} - -func (db *odrDatabase) TrieDB() *trie.Database { - return nil -} - -func (db *odrDatabase) DiskDB() ethdb.KeyValueStore { - panic("not implemented") -} - -type odrTrie struct { - db *odrDatabase - id *TrieID - trie *trie.Trie -} - -func (t *odrTrie) GetStorage(_ common.Address, key []byte) ([]byte, error) { - key = crypto.Keccak256(key) - var enc []byte - err := t.do(key, func() (err error) { - enc, err = t.trie.Get(key) - return err - }) - if err != nil || len(enc) == 0 { - return nil, err - } - _, content, _, err := rlp.Split(enc) - return content, err -} - -func (t *odrTrie) GetAccount(address common.Address) (*types.StateAccount, error) { - var ( - enc []byte - key = crypto.Keccak256(address.Bytes()) - ) - err := t.do(key, func() (err error) { - enc, err = t.trie.Get(key) - return err - }) - if err != nil || len(enc) == 0 { - return nil, err - } - acct := new(types.StateAccount) - if err := rlp.DecodeBytes(enc, acct); err != nil { - return nil, err - } - return acct, nil -} - -func (t *odrTrie) UpdateAccount(address common.Address, acc *types.StateAccount) error { - key := crypto.Keccak256(address.Bytes()) - value, err := rlp.EncodeToBytes(acc) - if err != nil { - return fmt.Errorf("decoding error in account update: %w", err) - } - return t.do(key, func() error { - return t.trie.Update(key, value) - }) -} - -func (t *odrTrie) UpdateContractCode(_ common.Address, _ common.Hash, _ []byte) error { - return nil -} - -func (t *odrTrie) UpdateStorage(_ common.Address, key, value []byte) error { - key = crypto.Keccak256(key) - v, _ := rlp.EncodeToBytes(value) - return t.do(key, func() error { - return t.trie.Update(key, v) - }) -} - -func (t *odrTrie) DeleteStorage(_ common.Address, key []byte) error { - key = crypto.Keccak256(key) - return t.do(key, func() error { - return t.trie.Delete(key) - }) -} - -// DeleteAccount abstracts an account deletion from the trie. -func (t *odrTrie) DeleteAccount(address common.Address) error { - key := crypto.Keccak256(address.Bytes()) - return t.do(key, func() error { - return t.trie.Delete(key) - }) -} - -func (t *odrTrie) Commit(collectLeaf bool) (common.Hash, *trienode.NodeSet, error) { - if t.trie == nil { - return t.id.Root, nil, nil - } - return t.trie.Commit(collectLeaf) -} - -func (t *odrTrie) Hash() common.Hash { - if t.trie == nil { - return t.id.Root - } - return t.trie.Hash() -} - -func (t *odrTrie) NodeIterator(startkey []byte) (trie.NodeIterator, error) { - return newNodeIterator(t, startkey), nil -} - -func (t *odrTrie) GetKey(sha []byte) []byte { - return nil -} - -func (t *odrTrie) Prove(key []byte, proofDb ethdb.KeyValueWriter) error { - return errors.New("not implemented, needs client/server interface split") -} - -// do tries and retries to execute a function until it returns with no error or -// an error type other than MissingNodeError -func (t *odrTrie) do(key []byte, fn func() error) error { - for { - var err error - if t.trie == nil { - var id *trie.ID - if len(t.id.AccountAddress) > 0 { - id = trie.StorageTrieID(t.id.StateRoot, crypto.Keccak256Hash(t.id.AccountAddress), t.id.Root) - } else { - id = trie.StateTrieID(t.id.StateRoot) - } - triedb := trie.NewDatabase(t.db.backend.Database(), trie.HashDefaults) - t.trie, err = trie.New(id, triedb) - } - if err == nil { - err = fn() - } - if _, ok := err.(*trie.MissingNodeError); !ok { - return err - } - r := &TrieRequest{Id: t.id, Key: key} - if err := t.db.backend.Retrieve(t.db.ctx, r); err != nil { - return err - } - } -} - -type nodeIterator struct { - trie.NodeIterator - t *odrTrie - err error -} - -func newNodeIterator(t *odrTrie, startkey []byte) trie.NodeIterator { - it := &nodeIterator{t: t} - // Open the actual non-ODR trie if that hasn't happened yet. - if t.trie == nil { - it.do(func() error { - var id *trie.ID - if len(t.id.AccountAddress) > 0 { - id = trie.StorageTrieID(t.id.StateRoot, crypto.Keccak256Hash(t.id.AccountAddress), t.id.Root) - } else { - id = trie.StateTrieID(t.id.StateRoot) - } - triedb := trie.NewDatabase(t.db.backend.Database(), trie.HashDefaults) - t, err := trie.New(id, triedb) - if err == nil { - it.t.trie = t - } - return err - }) - } - it.do(func() error { - var err error - it.NodeIterator, err = it.t.trie.NodeIterator(startkey) - if err != nil { - return err - } - return it.NodeIterator.Error() - }) - return it -} - -func (it *nodeIterator) Next(descend bool) bool { - var ok bool - it.do(func() error { - ok = it.NodeIterator.Next(descend) - return it.NodeIterator.Error() - }) - return ok -} - -// do runs fn and attempts to fill in missing nodes by retrieving. -func (it *nodeIterator) do(fn func() error) { - var lasthash common.Hash - for { - it.err = fn() - missing, ok := it.err.(*trie.MissingNodeError) - if !ok { - return - } - if missing.NodeHash == lasthash { - it.err = fmt.Errorf("retrieve loop for trie node %x", missing.NodeHash) - return - } - lasthash = missing.NodeHash - r := &TrieRequest{Id: it.t.id, Key: nibblesToKey(missing.Path)} - if it.err = it.t.db.backend.Retrieve(it.t.db.ctx, r); it.err != nil { - return - } - } -} - -func (it *nodeIterator) Error() error { - if it.err != nil { - return it.err - } - return it.NodeIterator.Error() -} - -func nibblesToKey(nib []byte) []byte { - if len(nib) > 0 && nib[len(nib)-1] == 0x10 { - nib = nib[:len(nib)-1] // drop terminator - } - if len(nib)&1 == 1 { - nib = append(nib, 0) // make even - } - key := make([]byte, len(nib)/2) - for bi, ni := 0, 0; ni < len(nib); bi, ni = bi+1, ni+2 { - key[bi] = nib[ni]<<4 | nib[ni+1] - } - return key -} diff --git a/light/trie_test.go b/light/trie_test.go deleted file mode 100644 index fe724e9eea..0000000000 --- a/light/trie_test.go +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "bytes" - "context" - "errors" - "fmt" - "math/big" - "testing" - - "github.com/davecgh/go-spew/spew" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" -) - -func TestNodeIterator(t *testing.T) { - var ( - fulldb = rawdb.NewMemoryDatabase() - lightdb = rawdb.NewMemoryDatabase() - gspec = &core.Genesis{ - Config: params.TestChainConfig, - Alloc: core.GenesisAlloc{testBankAddress: {Balance: testBankFunds}}, - BaseFee: big.NewInt(params.InitialBaseFee), - } - ) - blockchain, _ := core.NewBlockChain(fulldb, nil, gspec, nil, ethash.NewFullFaker(), vm.Config{}, nil, nil) - _, gchain, _ := core.GenerateChainWithGenesis(gspec, ethash.NewFaker(), 4, testChainGen) - if _, err := blockchain.InsertChain(gchain); err != nil { - panic(err) - } - - gspec.MustCommit(lightdb, trie.NewDatabase(lightdb, trie.HashDefaults)) - ctx := context.Background() - odr := &testOdr{sdb: fulldb, ldb: lightdb, serverState: blockchain.StateCache(), indexerConfig: TestClientIndexerConfig} - head := blockchain.CurrentHeader() - lightTrie, _ := NewStateDatabase(ctx, head, odr).OpenTrie(head.Root) - fullTrie, _ := blockchain.StateCache().OpenTrie(head.Root) - if err := diffTries(fullTrie, lightTrie); err != nil { - t.Fatal(err) - } -} - -func diffTries(t1, t2 state.Trie) error { - trieIt1, err := t1.NodeIterator(nil) - if err != nil { - return err - } - trieIt2, err := t2.NodeIterator(nil) - if err != nil { - return err - } - i1 := trie.NewIterator(trieIt1) - i2 := trie.NewIterator(trieIt2) - for i1.Next() && i2.Next() { - if !bytes.Equal(i1.Key, i2.Key) { - spew.Dump(i2) - return fmt.Errorf("tries have different keys %x, %x", i1.Key, i2.Key) - } - if !bytes.Equal(i1.Value, i2.Value) { - return fmt.Errorf("tries differ at key %x", i1.Key) - } - } - switch { - case i1.Err != nil: - return fmt.Errorf("full trie iterator error: %v", i1.Err) - case i2.Err != nil: - return fmt.Errorf("light trie iterator error: %v", i2.Err) - case i1.Next(): - return errors.New("full trie iterator has more k/v pairs") - case i2.Next(): - return errors.New("light trie iterator has more k/v pairs") - } - return nil -} diff --git a/light/txpool.go b/light/txpool.go deleted file mode 100644 index b792d70b14..0000000000 --- a/light/txpool.go +++ /dev/null @@ -1,556 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "context" - "fmt" - "math/big" - "sync" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/txpool" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/params" -) - -const ( - // chainHeadChanSize is the size of channel listening to ChainHeadEvent. - chainHeadChanSize = 10 -) - -// txPermanent is the number of mined blocks after a mined transaction is -// considered permanent and no rollback is expected -var txPermanent = uint64(500) - -// TxPool implements the transaction pool for light clients, which keeps track -// of the status of locally created transactions, detecting if they are included -// in a block (mined) or rolled back. There are no queued transactions since we -// always receive all locally signed transactions in the same order as they are -// created. -type TxPool struct { - config *params.ChainConfig - signer types.Signer - quit chan bool - txFeed event.Feed - scope event.SubscriptionScope - chainHeadCh chan core.ChainHeadEvent - chainHeadSub event.Subscription - mu sync.RWMutex - chain *LightChain - odr OdrBackend - chainDb ethdb.Database - relay TxRelayBackend - head common.Hash - nonce map[common.Address]uint64 // "pending" nonce - pending map[common.Hash]*types.Transaction // pending transactions by tx hash - mined map[common.Hash][]*types.Transaction // mined transactions by block hash - clearIdx uint64 // earliest block nr that can contain mined tx info - - istanbul bool // Fork indicator whether we are in the istanbul stage. - eip2718 bool // Fork indicator whether we are in the eip2718 stage. - shanghai bool // Fork indicator whether we are in the shanghai stage. -} - -// TxRelayBackend provides an interface to the mechanism that forwards transactions to the -// ETH network. The implementations of the functions should be non-blocking. -// -// Send instructs backend to forward new transactions NewHead notifies backend about a new -// head after processed by the tx pool, including mined and rolled back transactions since -// the last event. -// -// Discard notifies backend about transactions that should be discarded either because -// they have been replaced by a re-send or because they have been mined long ago and no -// rollback is expected. -type TxRelayBackend interface { - Send(txs types.Transactions) - NewHead(head common.Hash, mined []common.Hash, rollback []common.Hash) - Discard(hashes []common.Hash) -} - -// NewTxPool creates a new light transaction pool -func NewTxPool(config *params.ChainConfig, chain *LightChain, relay TxRelayBackend) *TxPool { - pool := &TxPool{ - config: config, - signer: types.LatestSigner(config), - nonce: make(map[common.Address]uint64), - pending: make(map[common.Hash]*types.Transaction), - mined: make(map[common.Hash][]*types.Transaction), - quit: make(chan bool), - chainHeadCh: make(chan core.ChainHeadEvent, chainHeadChanSize), - chain: chain, - relay: relay, - odr: chain.Odr(), - chainDb: chain.Odr().Database(), - head: chain.CurrentHeader().Hash(), - clearIdx: chain.CurrentHeader().Number.Uint64(), - } - // Subscribe events from blockchain - pool.chainHeadSub = pool.chain.SubscribeChainHeadEvent(pool.chainHeadCh) - go pool.eventLoop() - - return pool -} - -// currentState returns the light state of the current head header -func (pool *TxPool) currentState(ctx context.Context) *state.StateDB { - return NewState(ctx, pool.chain.CurrentHeader(), pool.odr) -} - -// GetNonce returns the "pending" nonce of a given address. It always queries -// the nonce belonging to the latest header too in order to detect if another -// client using the same key sent a transaction. -func (pool *TxPool) GetNonce(ctx context.Context, addr common.Address) (uint64, error) { - state := pool.currentState(ctx) - nonce := state.GetNonce(addr) - if state.Error() != nil { - return 0, state.Error() - } - sn, ok := pool.nonce[addr] - if ok && sn > nonce { - nonce = sn - } - if !ok || sn < nonce { - pool.nonce[addr] = nonce - } - return nonce, nil -} - -// txStateChanges stores the recent changes between pending/mined states of -// transactions. True means mined, false means rolled back, no entry means no change -type txStateChanges map[common.Hash]bool - -// setState sets the status of a tx to either recently mined or recently rolled back -func (txc txStateChanges) setState(txHash common.Hash, mined bool) { - val, ent := txc[txHash] - if ent && (val != mined) { - delete(txc, txHash) - } else { - txc[txHash] = mined - } -} - -// getLists creates lists of mined and rolled back tx hashes -func (txc txStateChanges) getLists() (mined []common.Hash, rollback []common.Hash) { - for hash, val := range txc { - if val { - mined = append(mined, hash) - } else { - rollback = append(rollback, hash) - } - } - return -} - -// checkMinedTxs checks newly added blocks for the currently pending transactions -// and marks them as mined if necessary. It also stores block position in the db -// and adds them to the received txStateChanges map. -func (pool *TxPool) checkMinedTxs(ctx context.Context, hash common.Hash, number uint64, txc txStateChanges) error { - // If no transactions are pending, we don't care about anything - if len(pool.pending) == 0 { - return nil - } - block, err := GetBlock(ctx, pool.odr, hash, number) - if err != nil { - return err - } - // Gather all the local transaction mined in this block - list := pool.mined[hash] - for _, tx := range block.Transactions() { - if _, ok := pool.pending[tx.Hash()]; ok { - list = append(list, tx) - } - } - // If some transactions have been mined, write the needed data to disk and update - if list != nil { - // Retrieve all the receipts belonging to this block and write the lookup table - if _, err := GetBlockReceipts(ctx, pool.odr, hash, number); err != nil { // ODR caches, ignore results - return err - } - rawdb.WriteTxLookupEntriesByBlock(pool.chainDb, block) - - // Update the transaction pool's state - for _, tx := range list { - delete(pool.pending, tx.Hash()) - txc.setState(tx.Hash(), true) - } - pool.mined[hash] = list - } - return nil -} - -// rollbackTxs marks the transactions contained in recently rolled back blocks -// as rolled back. It also removes any positional lookup entries. -func (pool *TxPool) rollbackTxs(hash common.Hash, txc txStateChanges) { - batch := pool.chainDb.NewBatch() - if list, ok := pool.mined[hash]; ok { - for _, tx := range list { - txHash := tx.Hash() - rawdb.DeleteTxLookupEntry(batch, txHash) - pool.pending[txHash] = tx - txc.setState(txHash, false) - } - delete(pool.mined, hash) - } - batch.Write() -} - -// reorgOnNewHead sets a new head header, processing (and rolling back if necessary) -// the blocks since the last known head and returns a txStateChanges map containing -// the recently mined and rolled back transaction hashes. If an error (context -// timeout) occurs during checking new blocks, it leaves the locally known head -// at the latest checked block and still returns a valid txStateChanges, making it -// possible to continue checking the missing blocks at the next chain head event -func (pool *TxPool) reorgOnNewHead(ctx context.Context, newHeader *types.Header) (txStateChanges, error) { - txc := make(txStateChanges) - oldh := pool.chain.GetHeaderByHash(pool.head) - newh := newHeader - // find common ancestor, create list of rolled back and new block hashes - var oldHashes, newHashes []common.Hash - for oldh.Hash() != newh.Hash() { - if oldh.Number.Uint64() >= newh.Number.Uint64() { - oldHashes = append(oldHashes, oldh.Hash()) - oldh = pool.chain.GetHeader(oldh.ParentHash, oldh.Number.Uint64()-1) - } - if oldh.Number.Uint64() < newh.Number.Uint64() { - newHashes = append(newHashes, newh.Hash()) - newh = pool.chain.GetHeader(newh.ParentHash, newh.Number.Uint64()-1) - if newh == nil { - // happens when CHT syncing, nothing to do - newh = oldh - } - } - } - if oldh.Number.Uint64() < pool.clearIdx { - pool.clearIdx = oldh.Number.Uint64() - } - // roll back old blocks - for _, hash := range oldHashes { - pool.rollbackTxs(hash, txc) - } - pool.head = oldh.Hash() - // check mined txs of new blocks (array is in reversed order) - for i := len(newHashes) - 1; i >= 0; i-- { - hash := newHashes[i] - if err := pool.checkMinedTxs(ctx, hash, newHeader.Number.Uint64()-uint64(i), txc); err != nil { - return txc, err - } - pool.head = hash - } - - // clear old mined tx entries of old blocks - if idx := newHeader.Number.Uint64(); idx > pool.clearIdx+txPermanent { - idx2 := idx - txPermanent - if len(pool.mined) > 0 { - for i := pool.clearIdx; i < idx2; i++ { - hash := rawdb.ReadCanonicalHash(pool.chainDb, i) - if list, ok := pool.mined[hash]; ok { - hashes := make([]common.Hash, len(list)) - for i, tx := range list { - hashes[i] = tx.Hash() - } - pool.relay.Discard(hashes) - delete(pool.mined, hash) - } - } - } - pool.clearIdx = idx2 - } - - return txc, nil -} - -// blockCheckTimeout is the time limit for checking new blocks for mined -// transactions. Checking resumes at the next chain head event if timed out. -const blockCheckTimeout = time.Second * 3 - -// eventLoop processes chain head events and also notifies the tx relay backend -// about the new head hash and tx state changes -func (pool *TxPool) eventLoop() { - for { - select { - case ev := <-pool.chainHeadCh: - pool.setNewHead(ev.Block.Header()) - // hack in order to avoid hogging the lock; this part will - // be replaced by a subsequent PR. - time.Sleep(time.Millisecond) - - // System stopped - case <-pool.chainHeadSub.Err(): - return - } - } -} - -func (pool *TxPool) setNewHead(head *types.Header) { - pool.mu.Lock() - defer pool.mu.Unlock() - - ctx, cancel := context.WithTimeout(context.Background(), blockCheckTimeout) - defer cancel() - - txc, _ := pool.reorgOnNewHead(ctx, head) - m, r := txc.getLists() - pool.relay.NewHead(pool.head, m, r) - - // Update fork indicator by next pending block number - next := new(big.Int).Add(head.Number, big.NewInt(1)) - pool.istanbul = pool.config.IsIstanbul(next) - pool.eip2718 = pool.config.IsBerlin(next) - pool.shanghai = pool.config.IsShanghai(next, uint64(time.Now().Unix())) -} - -// Stop stops the light transaction pool -func (pool *TxPool) Stop() { - // Unsubscribe all subscriptions registered from txpool - pool.scope.Close() - // Unsubscribe subscriptions registered from blockchain - pool.chainHeadSub.Unsubscribe() - close(pool.quit) - log.Info("Transaction pool stopped") -} - -// SubscribeNewTxsEvent registers a subscription of core.NewTxsEvent and -// starts sending event to the given channel. -func (pool *TxPool) SubscribeNewTxsEvent(ch chan<- core.NewTxsEvent) event.Subscription { - return pool.scope.Track(pool.txFeed.Subscribe(ch)) -} - -// Stats returns the number of currently pending (locally created) transactions -func (pool *TxPool) Stats() (pending int) { - pool.mu.RLock() - defer pool.mu.RUnlock() - - pending = len(pool.pending) - return -} - -// validateTx checks whether a transaction is valid according to the consensus rules. -func (pool *TxPool) validateTx(ctx context.Context, tx *types.Transaction) error { - // Validate sender - var ( - from common.Address - err error - ) - - // Validate the transaction sender and it's sig. Throw - // if the from fields is invalid. - if from, err = types.Sender(pool.signer, tx); err != nil { - return txpool.ErrInvalidSender - } - // Last but not least check for nonce errors - currentState := pool.currentState(ctx) - if n := currentState.GetNonce(from); n > tx.Nonce() { - return core.ErrNonceTooLow - } - - // Check the transaction doesn't exceed the current - // block limit gas. - header := pool.chain.GetHeaderByHash(pool.head) - if header.GasLimit < tx.Gas() { - return txpool.ErrGasLimit - } - - // Transactions can't be negative. This may never happen - // using RLP decoded transactions but may occur if you create - // a transaction using the RPC for example. - if tx.Value().Sign() < 0 { - return txpool.ErrNegativeValue - } - - // Transactor should have enough funds to cover the costs - // cost == V + GP * GL - if b := currentState.GetBalance(from); b.Cmp(tx.Cost()) < 0 { - return core.ErrInsufficientFunds - } - - // Should supply enough intrinsic gas - gas, err := core.IntrinsicGas(tx.Data(), tx.AccessList(), tx.To() == nil, true, pool.istanbul, pool.shanghai) - if err != nil { - return err - } - if tx.Gas() < gas { - return core.ErrIntrinsicGas - } - return currentState.Error() -} - -// add validates a new transaction and sets its state pending if processable. -// It also updates the locally stored nonce if necessary. -func (pool *TxPool) add(ctx context.Context, tx *types.Transaction) error { - hash := tx.Hash() - - if pool.pending[hash] != nil { - return fmt.Errorf("known transaction (%x)", hash[:4]) - } - err := pool.validateTx(ctx, tx) - if err != nil { - return err - } - - if _, ok := pool.pending[hash]; !ok { - pool.pending[hash] = tx - - nonce := tx.Nonce() + 1 - - addr, _ := types.Sender(pool.signer, tx) - if nonce > pool.nonce[addr] { - pool.nonce[addr] = nonce - } - - // Notify the subscribers. This event is posted in a goroutine - // because it's possible that somewhere during the post "Remove transaction" - // gets called which will then wait for the global tx pool lock and deadlock. - go pool.txFeed.Send(core.NewTxsEvent{Txs: types.Transactions{tx}}) - } - - // Print a log message if low enough level is set - log.Debug("Pooled new transaction", "hash", hash, "from", log.Lazy{Fn: func() common.Address { from, _ := types.Sender(pool.signer, tx); return from }}, "to", tx.To()) - return nil -} - -// Add adds a transaction to the pool if valid and passes it to the tx relay -// backend -func (pool *TxPool) Add(ctx context.Context, tx *types.Transaction) error { - pool.mu.Lock() - defer pool.mu.Unlock() - data, err := tx.MarshalBinary() - if err != nil { - return err - } - - if err := pool.add(ctx, tx); err != nil { - return err - } - //fmt.Println("Send", tx.Hash()) - pool.relay.Send(types.Transactions{tx}) - - pool.chainDb.Put(tx.Hash().Bytes(), data) - return nil -} - -// AddBatch adds all valid transactions to the pool and passes them to -// the tx relay backend -func (pool *TxPool) AddBatch(ctx context.Context, txs []*types.Transaction) { - pool.mu.Lock() - defer pool.mu.Unlock() - var sendTx types.Transactions - - for _, tx := range txs { - if err := pool.add(ctx, tx); err == nil { - sendTx = append(sendTx, tx) - } - } - if len(sendTx) > 0 { - pool.relay.Send(sendTx) - } -} - -// GetTransaction returns a transaction if it is contained in the pool -// and nil otherwise. -func (pool *TxPool) GetTransaction(hash common.Hash) *types.Transaction { - // check the txs first - if tx, ok := pool.pending[hash]; ok { - return tx - } - return nil -} - -// GetTransactions returns all currently processable transactions. -// The returned slice may be modified by the caller. -func (pool *TxPool) GetTransactions() (txs types.Transactions, err error) { - pool.mu.RLock() - defer pool.mu.RUnlock() - - txs = make(types.Transactions, len(pool.pending)) - i := 0 - for _, tx := range pool.pending { - txs[i] = tx - i++ - } - return txs, nil -} - -// Content retrieves the data content of the transaction pool, returning all the -// pending as well as queued transactions, grouped by account and nonce. -func (pool *TxPool) Content() (map[common.Address][]*types.Transaction, map[common.Address][]*types.Transaction) { - pool.mu.RLock() - defer pool.mu.RUnlock() - - // Retrieve all the pending transactions and sort by account and by nonce - pending := make(map[common.Address][]*types.Transaction) - for _, tx := range pool.pending { - account, _ := types.Sender(pool.signer, tx) - pending[account] = append(pending[account], tx) - } - // There are no queued transactions in a light pool, just return an empty map - queued := make(map[common.Address][]*types.Transaction) - return pending, queued -} - -// ContentFrom retrieves the data content of the transaction pool, returning the -// pending as well as queued transactions of this address, grouped by nonce. -func (pool *TxPool) ContentFrom(addr common.Address) ([]*types.Transaction, []*types.Transaction) { - pool.mu.RLock() - defer pool.mu.RUnlock() - - // Retrieve the pending transactions and sort by nonce - var pending []*types.Transaction - for _, tx := range pool.pending { - account, _ := types.Sender(pool.signer, tx) - if account != addr { - continue - } - pending = append(pending, tx) - } - // There are no queued transactions in a light pool, just return an empty map - return pending, []*types.Transaction{} -} - -// RemoveTransactions removes all given transactions from the pool. -func (pool *TxPool) RemoveTransactions(txs types.Transactions) { - pool.mu.Lock() - defer pool.mu.Unlock() - - var hashes []common.Hash - batch := pool.chainDb.NewBatch() - for _, tx := range txs { - hash := tx.Hash() - delete(pool.pending, hash) - batch.Delete(hash.Bytes()) - hashes = append(hashes, hash) - } - batch.Write() - pool.relay.Discard(hashes) -} - -// RemoveTx removes the transaction with the given hash from the pool. -func (pool *TxPool) RemoveTx(hash common.Hash) { - pool.mu.Lock() - defer pool.mu.Unlock() - // delete from pending pool - delete(pool.pending, hash) - pool.chainDb.Delete(hash[:]) - pool.relay.Discard([]common.Hash{hash}) -} diff --git a/light/txpool_test.go b/light/txpool_test.go deleted file mode 100644 index 1eec7bc427..0000000000 --- a/light/txpool_test.go +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package light - -import ( - "context" - "math" - "math/big" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" -) - -type testTxRelay struct { - send, discard, mined chan int -} - -func (r *testTxRelay) Send(txs types.Transactions) { - r.send <- len(txs) -} - -func (r *testTxRelay) NewHead(head common.Hash, mined []common.Hash, rollback []common.Hash) { - m := len(mined) - if m != 0 { - r.mined <- m - } -} - -func (r *testTxRelay) Discard(hashes []common.Hash) { - r.discard <- len(hashes) -} - -const poolTestTxs = 1000 -const poolTestBlocks = 100 - -// test tx 0..n-1 -var testTx [poolTestTxs]*types.Transaction - -// txs sent before block i -func sentTx(i int) int { - return int(math.Pow(float64(i)/float64(poolTestBlocks), 0.9) * poolTestTxs) -} - -// txs included in block i or before that (minedTx(i) <= sentTx(i)) -func minedTx(i int) int { - return int(math.Pow(float64(i)/float64(poolTestBlocks), 1.1) * poolTestTxs) -} - -func txPoolTestChainGen(i int, block *core.BlockGen) { - s := minedTx(i) - e := minedTx(i + 1) - for i := s; i < e; i++ { - block.AddTx(testTx[i]) - } -} - -func TestTxPool(t *testing.T) { - for i := range testTx { - testTx[i], _ = types.SignTx(types.NewTransaction(uint64(i), acc1Addr, big.NewInt(10000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), types.HomesteadSigner{}, testBankKey) - } - - var ( - sdb = rawdb.NewMemoryDatabase() - ldb = rawdb.NewMemoryDatabase() - gspec = &core.Genesis{ - Config: params.TestChainConfig, - Alloc: core.GenesisAlloc{testBankAddress: {Balance: testBankFunds}}, - BaseFee: big.NewInt(params.InitialBaseFee), - } - ) - // Assemble the test environment - blockchain, _ := core.NewBlockChain(sdb, nil, gspec, nil, ethash.NewFullFaker(), vm.Config{}, nil, nil) - _, gchain, _ := core.GenerateChainWithGenesis(gspec, ethash.NewFaker(), poolTestBlocks, txPoolTestChainGen) - if _, err := blockchain.InsertChain(gchain); err != nil { - panic(err) - } - - gspec.MustCommit(ldb, trie.NewDatabase(ldb, trie.HashDefaults)) - odr := &testOdr{sdb: sdb, ldb: ldb, serverState: blockchain.StateCache(), indexerConfig: TestClientIndexerConfig} - relay := &testTxRelay{ - send: make(chan int, 1), - discard: make(chan int, 1), - mined: make(chan int, 1), - } - lightchain, _ := NewLightChain(odr, params.TestChainConfig, ethash.NewFullFaker()) - txPermanent = 50 - pool := NewTxPool(params.TestChainConfig, lightchain, relay) - ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) - defer cancel() - - for ii, block := range gchain { - i := ii + 1 - s := sentTx(i - 1) - e := sentTx(i) - for i := s; i < e; i++ { - pool.Add(ctx, testTx[i]) - got := <-relay.send - exp := 1 - if got != exp { - t.Errorf("relay.Send expected len = %d, got %d", exp, got) - } - } - - if _, err := lightchain.InsertHeaderChain([]*types.Header{block.Header()}); err != nil { - panic(err) - } - - got := <-relay.mined - exp := minedTx(i) - minedTx(i-1) - if got != exp { - t.Errorf("relay.NewHead expected len(mined) = %d, got %d", exp, got) - } - - exp = 0 - if i > int(txPermanent)+1 { - exp = minedTx(i-int(txPermanent)-1) - minedTx(i-int(txPermanent)-2) - } - if exp != 0 { - got = <-relay.discard - if got != exp { - t.Errorf("relay.Discard expected len = %d, got %d", exp, got) - } - } - } -} From 63979bc9cc461d1f05e6be4646d4dc788de1698f Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Tue, 28 Nov 2023 13:54:17 +0100 Subject: [PATCH 099/223] cmd/evm, core/state: fix post-exec dump of state (statetests, blockchaintests) (#28504) There were several problems related to dumping state. - If a preimage was missing, even if we had set the `OnlyWithAddresses` to `false`, to export them anyway, the way the mapping was constructed (using `common.Address` as key) made the entries get lost anyway. Concerns both state- and blockchain tests. - Blockchain test execution was not configured to store preimages. This changes makes it so that the block test executor takes a callback, just like the state test executor already does. This callback can be used to examine the post-execution state, e.g. to aid debugging of test failures. --- cmd/evm/blockrunner.go | 9 +++- cmd/geth/chaincmd.go | 5 -- cmd/geth/snapshot.go | 10 ++-- core/state/dump.go | 100 ++++++++++++++++----------------------- core/state/state_test.go | 3 ++ eth/api_debug.go | 18 +++---- eth/api_debug_test.go | 25 +++++----- tests/block_test.go | 8 ++-- tests/block_test_util.go | 13 +++-- 9 files changed, 92 insertions(+), 99 deletions(-) diff --git a/cmd/evm/blockrunner.go b/cmd/evm/blockrunner.go index caed9b65fc..c5d836e0ea 100644 --- a/cmd/evm/blockrunner.go +++ b/cmd/evm/blockrunner.go @@ -24,6 +24,7 @@ import ( "regexp" "sort" + "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers/logger" @@ -85,7 +86,13 @@ func blockTestCmd(ctx *cli.Context) error { continue } test := tests[name] - if err := test.Run(false, rawdb.HashScheme, tracer); err != nil { + if err := test.Run(false, rawdb.HashScheme, tracer, func(res error, chain *core.BlockChain) { + if ctx.Bool(DumpFlag.Name) { + if state, _ := chain.State(); state != nil { + fmt.Println(string(state.Dump(nil))) + } + } + }); err != nil { return fmt.Errorf("test %v: %w", name, err) } } diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 4e528d6502..3b4f516af7 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -473,11 +473,6 @@ func dump(ctx *cli.Context) error { if ctx.Bool(utils.IterativeOutputFlag.Name) { state.IterativeDump(conf, json.NewEncoder(os.Stdout)) } else { - if conf.OnlyWithAddresses { - fmt.Fprintf(os.Stderr, "If you want to include accounts with missing preimages, you need iterative output, since"+ - " otherwise the accounts will overwrite each other in the resulting mapping.") - return errors.New("incompatible options") - } fmt.Println(string(state.Dump(conf))) } return nil diff --git a/cmd/geth/snapshot.go b/cmd/geth/snapshot.go index 80d946b894..4284005a02 100644 --- a/cmd/geth/snapshot.go +++ b/cmd/geth/snapshot.go @@ -580,11 +580,11 @@ func dumpState(ctx *cli.Context) error { return err } da := &state.DumpAccount{ - Balance: account.Balance.String(), - Nonce: account.Nonce, - Root: account.Root.Bytes(), - CodeHash: account.CodeHash, - SecureKey: accIt.Hash().Bytes(), + Balance: account.Balance.String(), + Nonce: account.Nonce, + Root: account.Root.Bytes(), + CodeHash: account.CodeHash, + AddressHash: accIt.Hash().Bytes(), } if !conf.SkipCode && !bytes.Equal(account.CodeHash, types.EmptyCodeHash.Bytes()) { da.Code = rawdb.ReadCode(db, common.BytesToHash(account.CodeHash)) diff --git a/core/state/dump.go b/core/state/dump.go index 9ce6cd394b..cf46621144 100644 --- a/core/state/dump.go +++ b/core/state/dump.go @@ -49,21 +49,24 @@ type DumpCollector interface { // DumpAccount represents an account in the state. type DumpAccount struct { - Balance string `json:"balance"` - Nonce uint64 `json:"nonce"` - Root hexutil.Bytes `json:"root"` - CodeHash hexutil.Bytes `json:"codeHash"` - Code hexutil.Bytes `json:"code,omitempty"` - Storage map[common.Hash]string `json:"storage,omitempty"` - Address *common.Address `json:"address,omitempty"` // Address only present in iterative (line-by-line) mode - SecureKey hexutil.Bytes `json:"key,omitempty"` // If we don't have address, we can output the key + Balance string `json:"balance"` + Nonce uint64 `json:"nonce"` + Root hexutil.Bytes `json:"root"` + CodeHash hexutil.Bytes `json:"codeHash"` + Code hexutil.Bytes `json:"code,omitempty"` + Storage map[common.Hash]string `json:"storage,omitempty"` + Address *common.Address `json:"address,omitempty"` // Address only present in iterative (line-by-line) mode + AddressHash hexutil.Bytes `json:"key,omitempty"` // If we don't have address, we can output the key } // Dump represents the full dump in a collected format, as one large map. type Dump struct { - Root string `json:"root"` - Accounts map[common.Address]DumpAccount `json:"accounts"` + Root string `json:"root"` + Accounts map[string]DumpAccount `json:"accounts"` + // Next can be set to represent that this dump is only partial, and Next + // is where an iterator should be positioned in order to continue the dump. + Next []byte `json:"next,omitempty"` // nil if no more accounts } // OnRoot implements DumpCollector interface @@ -73,27 +76,11 @@ func (d *Dump) OnRoot(root common.Hash) { // OnAccount implements DumpCollector interface func (d *Dump) OnAccount(addr *common.Address, account DumpAccount) { - if addr != nil { - d.Accounts[*addr] = account + if addr == nil { + d.Accounts[fmt.Sprintf("pre(%s)", account.AddressHash)] = account } -} - -// IteratorDump is an implementation for iterating over data. -type IteratorDump struct { - Root string `json:"root"` - Accounts map[common.Address]DumpAccount `json:"accounts"` - Next []byte `json:"next,omitempty"` // nil if no more accounts -} - -// OnRoot implements DumpCollector interface -func (d *IteratorDump) OnRoot(root common.Hash) { - d.Root = fmt.Sprintf("%x", root) -} - -// OnAccount implements DumpCollector interface -func (d *IteratorDump) OnAccount(addr *common.Address, account DumpAccount) { if addr != nil { - d.Accounts[*addr] = account + d.Accounts[(*addr).String()] = account } } @@ -105,14 +92,14 @@ type iterativeDump struct { // OnAccount implements DumpCollector interface func (d iterativeDump) OnAccount(addr *common.Address, account DumpAccount) { dumpAccount := &DumpAccount{ - Balance: account.Balance, - Nonce: account.Nonce, - Root: account.Root, - CodeHash: account.CodeHash, - Code: account.Code, - Storage: account.Storage, - SecureKey: account.SecureKey, - Address: addr, + Balance: account.Balance, + Nonce: account.Nonce, + Root: account.Root, + CodeHash: account.CodeHash, + Code: account.Code, + Storage: account.Storage, + AddressHash: account.AddressHash, + Address: addr, } d.Encode(dumpAccount) } @@ -150,26 +137,27 @@ func (s *StateDB) DumpToCollector(c DumpCollector, conf *DumpConfig) (nextKey [] if err := rlp.DecodeBytes(it.Value, &data); err != nil { panic(err) } - account := DumpAccount{ - Balance: data.Balance.String(), - Nonce: data.Nonce, - Root: data.Root[:], - CodeHash: data.CodeHash, - SecureKey: it.Key, - } var ( - addrBytes = s.trie.GetKey(it.Key) - addr = common.BytesToAddress(addrBytes) + account = DumpAccount{ + Balance: data.Balance.String(), + Nonce: data.Nonce, + Root: data.Root[:], + CodeHash: data.CodeHash, + AddressHash: it.Key, + } address *common.Address + addr common.Address + addrBytes = s.trie.GetKey(it.Key) ) if addrBytes == nil { - // Preimage missing missingPreimages++ if conf.OnlyWithAddresses { continue } } else { + addr = common.BytesToAddress(addrBytes) address = &addr + account.Address = address } obj := newObject(s, addr, &data) if !conf.SkipCode { @@ -220,12 +208,13 @@ func (s *StateDB) DumpToCollector(c DumpCollector, conf *DumpConfig) (nextKey [] return nextKey } -// RawDump returns the entire state an a single large object +// RawDump returns the state. If the processing is aborted e.g. due to options +// reaching Max, the `Next` key is set on the returned Dump. func (s *StateDB) RawDump(opts *DumpConfig) Dump { dump := &Dump{ - Accounts: make(map[common.Address]DumpAccount), + Accounts: make(map[string]DumpAccount), } - s.DumpToCollector(dump, opts) + dump.Next = s.DumpToCollector(dump, opts) return *dump } @@ -234,7 +223,7 @@ func (s *StateDB) Dump(opts *DumpConfig) []byte { dump := s.RawDump(opts) json, err := json.MarshalIndent(dump, "", " ") if err != nil { - fmt.Println("Dump err", err) + log.Error("Error dumping state", "err", err) } return json } @@ -243,12 +232,3 @@ func (s *StateDB) Dump(opts *DumpConfig) []byte { func (s *StateDB) IterativeDump(opts *DumpConfig, output *json.Encoder) { s.DumpToCollector(iterativeDump{output}, opts) } - -// IteratorDump dumps out a batch of accounts starts with the given start key -func (s *StateDB) IteratorDump(opts *DumpConfig) IteratorDump { - iterator := &IteratorDump{ - Accounts: make(map[common.Address]DumpAccount), - } - iterator.Next = s.DumpToCollector(iterator, opts) - return *iterator -} diff --git a/core/state/state_test.go b/core/state/state_test.go index 2553133dea..2f45ba44b4 100644 --- a/core/state/state_test.go +++ b/core/state/state_test.go @@ -71,6 +71,7 @@ func TestDump(t *testing.T) { "nonce": 0, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "address": "0x0000000000000000000000000000000000000001", "key": "0x1468288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d" }, "0x0000000000000000000000000000000000000002": { @@ -78,6 +79,7 @@ func TestDump(t *testing.T) { "nonce": 0, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "address": "0x0000000000000000000000000000000000000002", "key": "0xd52688a8f926c816ca1e079067caba944f158e764817b83fc43594370ca9cf62" }, "0x0000000000000000000000000000000000000102": { @@ -86,6 +88,7 @@ func TestDump(t *testing.T) { "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0x87874902497a5bb968da31a2998d8f22e949d1ef6214bcdedd8bae24cca4b9e3", "code": "0x03030303030303", + "address": "0x0000000000000000000000000000000000000102", "key": "0xa17eacbc25cda025e81db9c5c62868822c73ce097cee2a63e33a2e41268358a1" } } diff --git a/eth/api_debug.go b/eth/api_debug.go index dc9f568146..05010a3969 100644 --- a/eth/api_debug.go +++ b/eth/api_debug.go @@ -133,7 +133,7 @@ func (api *DebugAPI) GetBadBlocks(ctx context.Context) ([]*BadBlockArgs, error) const AccountRangeMaxResults = 256 // AccountRange enumerates all accounts in the given block and start point in paging request -func (api *DebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hexutil.Bytes, maxResults int, nocode, nostorage, incompletes bool) (state.IteratorDump, error) { +func (api *DebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hexutil.Bytes, maxResults int, nocode, nostorage, incompletes bool) (state.Dump, error) { var stateDb *state.StateDB var err error @@ -144,7 +144,7 @@ func (api *DebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hex // the miner and operate on those _, stateDb = api.eth.miner.Pending() if stateDb == nil { - return state.IteratorDump{}, errors.New("pending state is not available") + return state.Dump{}, errors.New("pending state is not available") } } else { var header *types.Header @@ -158,29 +158,29 @@ func (api *DebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hex default: block := api.eth.blockchain.GetBlockByNumber(uint64(number)) if block == nil { - return state.IteratorDump{}, fmt.Errorf("block #%d not found", number) + return state.Dump{}, fmt.Errorf("block #%d not found", number) } header = block.Header() } if header == nil { - return state.IteratorDump{}, fmt.Errorf("block #%d not found", number) + return state.Dump{}, fmt.Errorf("block #%d not found", number) } stateDb, err = api.eth.BlockChain().StateAt(header.Root) if err != nil { - return state.IteratorDump{}, err + return state.Dump{}, err } } } else if hash, ok := blockNrOrHash.Hash(); ok { block := api.eth.blockchain.GetBlockByHash(hash) if block == nil { - return state.IteratorDump{}, fmt.Errorf("block %s not found", hash.Hex()) + return state.Dump{}, fmt.Errorf("block %s not found", hash.Hex()) } stateDb, err = api.eth.BlockChain().StateAt(block.Root()) if err != nil { - return state.IteratorDump{}, err + return state.Dump{}, err } } else { - return state.IteratorDump{}, errors.New("either block number or block hash must be specified") + return state.Dump{}, errors.New("either block number or block hash must be specified") } opts := &state.DumpConfig{ @@ -193,7 +193,7 @@ func (api *DebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hex if maxResults > AccountRangeMaxResults || maxResults <= 0 { opts.Max = AccountRangeMaxResults } - return stateDb.IteratorDump(opts), nil + return stateDb.RawDump(opts), nil } // StorageRangeResult is the result of a debug_storageRangeAt API call. diff --git a/eth/api_debug_test.go b/eth/api_debug_test.go index 3d3444a871..184b90dd09 100644 --- a/eth/api_debug_test.go +++ b/eth/api_debug_test.go @@ -21,6 +21,7 @@ import ( "fmt" "math/big" "reflect" + "strings" "testing" "github.com/davecgh/go-spew/spew" @@ -35,8 +36,8 @@ import ( var dumper = spew.ConfigState{Indent: " "} -func accountRangeTest(t *testing.T, trie *state.Trie, statedb *state.StateDB, start common.Hash, requestedNum int, expectedNum int) state.IteratorDump { - result := statedb.IteratorDump(&state.DumpConfig{ +func accountRangeTest(t *testing.T, trie *state.Trie, statedb *state.StateDB, start common.Hash, requestedNum int, expectedNum int) state.Dump { + result := statedb.RawDump(&state.DumpConfig{ SkipCode: true, SkipStorage: true, OnlyWithAddresses: false, @@ -47,12 +48,12 @@ func accountRangeTest(t *testing.T, trie *state.Trie, statedb *state.StateDB, st if len(result.Accounts) != expectedNum { t.Fatalf("expected %d results, got %d", expectedNum, len(result.Accounts)) } - for address := range result.Accounts { - if address == (common.Address{}) { - t.Fatalf("empty address returned") + for addr, acc := range result.Accounts { + if strings.HasSuffix(addr, "pre") || acc.Address == nil { + t.Fatalf("account without prestate (address) returned: %v", addr) } - if !statedb.Exist(address) { - t.Fatalf("account not found in state %s", address.Hex()) + if !statedb.Exist(*acc.Address) { + t.Fatalf("account not found in state %s", acc.Address.Hex()) } } return result @@ -92,16 +93,16 @@ func TestAccountRange(t *testing.T) { secondResult := accountRangeTest(t, &trie, sdb, common.BytesToHash(firstResult.Next), AccountRangeMaxResults, AccountRangeMaxResults) hList := make([]common.Hash, 0) - for addr1 := range firstResult.Accounts { - // If address is empty, then it makes no sense to compare + for addr1, acc := range firstResult.Accounts { + // If address is non-available, then it makes no sense to compare // them as they might be two different accounts. - if addr1 == (common.Address{}) { + if acc.Address == nil { continue } if _, duplicate := secondResult.Accounts[addr1]; duplicate { t.Fatalf("pagination test failed: results should not overlap") } - hList = append(hList, crypto.Keccak256Hash(addr1.Bytes())) + hList = append(hList, crypto.Keccak256Hash(acc.Address.Bytes())) } // Test to see if it's possible to recover from the middle of the previous // set and get an even split between the first and second sets. @@ -140,7 +141,7 @@ func TestEmptyAccountRange(t *testing.T) { st.Commit(0, true) st, _ = state.New(types.EmptyRootHash, statedb, nil) - results := st.IteratorDump(&state.DumpConfig{ + results := st.RawDump(&state.DumpConfig{ SkipCode: true, SkipStorage: true, OnlyWithAddresses: true, diff --git a/tests/block_test.go b/tests/block_test.go index e913ecbc90..aa6f27b8f3 100644 --- a/tests/block_test.go +++ b/tests/block_test.go @@ -74,19 +74,19 @@ func TestExecutionSpec(t *testing.T) { } func execBlockTest(t *testing.T, bt *testMatcher, test *BlockTest) { - if err := bt.checkFailure(t, test.Run(false, rawdb.HashScheme, nil)); err != nil { + if err := bt.checkFailure(t, test.Run(false, rawdb.HashScheme, nil, nil)); err != nil { t.Errorf("test in hash mode without snapshotter failed: %v", err) return } - if err := bt.checkFailure(t, test.Run(true, rawdb.HashScheme, nil)); err != nil { + if err := bt.checkFailure(t, test.Run(true, rawdb.HashScheme, nil, nil)); err != nil { t.Errorf("test in hash mode with snapshotter failed: %v", err) return } - if err := bt.checkFailure(t, test.Run(false, rawdb.PathScheme, nil)); err != nil { + if err := bt.checkFailure(t, test.Run(false, rawdb.PathScheme, nil, nil)); err != nil { t.Errorf("test in path mode without snapshotter failed: %v", err) return } - if err := bt.checkFailure(t, test.Run(true, rawdb.PathScheme, nil)); err != nil { + if err := bt.checkFailure(t, test.Run(true, rawdb.PathScheme, nil, nil)); err != nil { t.Errorf("test in path mode with snapshotter failed: %v", err) return } diff --git a/tests/block_test_util.go b/tests/block_test_util.go index d7409f8000..e0130be48a 100644 --- a/tests/block_test_util.go +++ b/tests/block_test_util.go @@ -108,7 +108,7 @@ type btHeaderMarshaling struct { ExcessBlobGas *math.HexOrDecimal64 } -func (t *BlockTest) Run(snapshotter bool, scheme string, tracer vm.EVMLogger) error { +func (t *BlockTest) Run(snapshotter bool, scheme string, tracer vm.EVMLogger, postCheck func(error, *core.BlockChain)) (result error) { config, ok := Forks[t.json.Network] if !ok { return UnsupportedForkError{t.json.Network} @@ -116,7 +116,9 @@ func (t *BlockTest) Run(snapshotter bool, scheme string, tracer vm.EVMLogger) er // import pre accounts & construct test genesis block & state root var ( db = rawdb.NewMemoryDatabase() - tconf = &trie.Config{} + tconf = &trie.Config{ + Preimages: true, + } ) if scheme == rawdb.PathScheme { tconf.PathDB = pathdb.Defaults @@ -141,7 +143,7 @@ func (t *BlockTest) Run(snapshotter bool, scheme string, tracer vm.EVMLogger) er // Wrap the original engine within the beacon-engine engine := beacon.New(ethash.NewFaker()) - cache := &core.CacheConfig{TrieCleanLimit: 0, StateScheme: scheme} + cache := &core.CacheConfig{TrieCleanLimit: 0, StateScheme: scheme, Preimages: true} if snapshotter { cache.SnapshotLimit = 1 cache.SnapshotWait = true @@ -158,6 +160,11 @@ func (t *BlockTest) Run(snapshotter bool, scheme string, tracer vm.EVMLogger) er if err != nil { return err } + // Import succeeded: regardless of whether the _test_ succeeds or not, schedule + // the post-check to run + if postCheck != nil { + defer postCheck(result, chain) + } cmlast := chain.CurrentBlock().Hash() if common.Hash(t.json.BestBlock) != cmlast { return fmt.Errorf("last block hash validation mismatch: want: %x, have: %x", t.json.BestBlock, cmlast) From 248dc50ee81310a2ad45d52f091c70b6c1ecaa35 Mon Sep 17 00:00:00 2001 From: Shivam Sandbhor Date: Tue, 28 Nov 2023 19:19:08 +0530 Subject: [PATCH 100/223] ethereum: remove TODO comment about subscription (#28609) --- interfaces.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/interfaces.go b/interfaces.go index eb9af60076..c4948191d1 100644 --- a/interfaces.go +++ b/interfaces.go @@ -29,8 +29,6 @@ import ( // NotFound is returned by API methods if the requested item does not exist. var NotFound = errors.New("not found") -// TODO: move subscription to package event - // Subscription represents an event subscription where events are // delivered on a data channel. type Subscription interface { From bbc5db840553a39141e1a8630181ff37a9cc85d8 Mon Sep 17 00:00:00 2001 From: Sina Mahmoodi <1591639+s1na@users.noreply.github.com> Date: Tue, 28 Nov 2023 17:30:35 +0330 Subject: [PATCH 101/223] eth/tracers/js: fix type inconsistencies (#28488) This change fixes two type-inconsistencies in the JS tracer: - In most places we return byte arrays as a `Uint8Array` to the tracer. However it seems we missed doing the conversion for `ctx` fields which are passed to the tracer during `result`. They are passed as simple arrays. I think Uint8Arrays are more suitable and we should change this inconsistency. Note: this will be a breaking-change. But I believe the effect is small. If we look at our tracers we see that these fields (`ctx.from`, `ctx.to`, etc.) are used in 2 ways. Passed to `toHex` which takes both array or buffer. Or the length was measured which is the same for both types. - The `slice` taking in `int, int` params versus `memory.slice` taking `int64, int64` params. I suggest changing `slice` types to `int64`. This should have no effect almost in any case. --- eth/tracers/js/goja.go | 58 +++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/eth/tracers/js/goja.go b/eth/tracers/js/goja.go index d22d140988..07c138bae4 100644 --- a/eth/tracers/js/goja.go +++ b/eth/tracers/js/goja.go @@ -142,19 +142,29 @@ func newJsTracer(code string, ctx *tracers.Context, cfg json.RawMessage) (tracer vm: vm, ctx: make(map[string]goja.Value), } + + t.setTypeConverters() + t.setBuiltinFunctions() + if ctx == nil { ctx = new(tracers.Context) } if ctx.BlockHash != (common.Hash{}) { - t.ctx["blockHash"] = vm.ToValue(ctx.BlockHash.Bytes()) + blockHash, err := t.toBuf(vm, ctx.BlockHash.Bytes()) + if err != nil { + return nil, err + } + t.ctx["blockHash"] = blockHash if ctx.TxHash != (common.Hash{}) { t.ctx["txIndex"] = vm.ToValue(ctx.TxIndex) - t.ctx["txHash"] = vm.ToValue(ctx.TxHash.Bytes()) + txHash, err := t.toBuf(vm, ctx.TxHash.Bytes()) + if err != nil { + return nil, err + } + t.ctx["txHash"] = txHash } } - t.setTypeConverters() - t.setBuiltinFunctions() ret, err := vm.RunString("(" + code + ")") if err != nil { return nil, err @@ -224,6 +234,10 @@ func (t *jsTracer) CaptureTxEnd(restGas uint64) { // CaptureStart implements the Tracer interface to initialize the tracing operation. func (t *jsTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + cancel := func(err error) { + t.err = err + t.env.Cancel() + } t.env = env db := &dbObj{db: env.StateDB, vm: t.vm, toBig: t.toBig, toBuf: t.toBuf, fromBuf: t.fromBuf} t.dbValue = db.setupObject() @@ -232,19 +246,34 @@ func (t *jsTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Addr } else { t.ctx["type"] = t.vm.ToValue("CALL") } - t.ctx["from"] = t.vm.ToValue(from.Bytes()) - t.ctx["to"] = t.vm.ToValue(to.Bytes()) - t.ctx["input"] = t.vm.ToValue(input) + fromVal, err := t.toBuf(t.vm, from.Bytes()) + if err != nil { + cancel(err) + return + } + t.ctx["from"] = fromVal + toVal, err := t.toBuf(t.vm, to.Bytes()) + if err != nil { + cancel(err) + return + } + t.ctx["to"] = toVal + inputVal, err := t.toBuf(t.vm, input) + if err != nil { + cancel(err) + return + } + t.ctx["input"] = inputVal t.ctx["gas"] = t.vm.ToValue(t.gasLimit) gasPriceBig, err := t.toBig(t.vm, env.TxContext.GasPrice.String()) if err != nil { - t.err = err + cancel(err) return } t.ctx["gasPrice"] = gasPriceBig valueBig, err := t.toBig(t.vm, value.String()) if err != nil { - t.err = err + cancel(err) return } t.ctx["value"] = valueBig @@ -293,10 +322,15 @@ func (t *jsTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope // CaptureEnd is called after the call finishes to finalize the tracing. func (t *jsTracer) CaptureEnd(output []byte, gasUsed uint64, err error) { - t.ctx["output"] = t.vm.ToValue(output) if err != nil { t.ctx["error"] = t.vm.ToValue(err.Error()) } + outputVal, err := t.toBuf(t.vm, output) + if err != nil { + t.err = err + return + } + t.ctx["output"] = outputVal } // CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). @@ -465,13 +499,13 @@ func (t *jsTracer) setBuiltinFunctions() { } return false }) - vm.Set("slice", func(slice goja.Value, start, end int) goja.Value { + vm.Set("slice", func(slice goja.Value, start, end int64) goja.Value { b, err := t.fromBuf(vm, slice, false) if err != nil { vm.Interrupt(err) return nil } - if start < 0 || start > end || end > len(b) { + if start < 0 || start > end || end > int64(len(b)) { vm.Interrupt(fmt.Sprintf("Tracer accessed out of bound memory: available %d, offset %d, size %d", len(b), start, end-start)) return nil } From 34dcd749355f161f1ed7efe9e59c6c9d13402ff6 Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Tue, 28 Nov 2023 19:16:50 +0100 Subject: [PATCH 102/223] crypto/secp256k1: fix 32-bit tests when CGO_ENABLED=0 (#28602) --- crypto/secp256k1/secp256_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crypto/secp256k1/secp256_test.go b/crypto/secp256k1/secp256_test.go index ef2a3a3790..74408d06d2 100644 --- a/crypto/secp256k1/secp256_test.go +++ b/crypto/secp256k1/secp256_test.go @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be found in // the LICENSE file. +//go:build !gofuzz && cgo +// +build !gofuzz,cgo + package secp256k1 import ( From e0c7ad01abb325e443e63ca15e09282bcd1b6909 Mon Sep 17 00:00:00 2001 From: Jakub Freebit <49676311+jakub-freebit@users.noreply.github.com> Date: Wed, 29 Nov 2023 05:29:00 +0900 Subject: [PATCH 103/223] consensus: verify the nonexistence of shanghai- and cancun-specific header fields (#28605) --- consensus/clique/clique.go | 22 ++++++++++++++++++++++ consensus/ethash/consensus.go | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go index f708050abd..c693189ea5 100644 --- a/consensus/clique/clique.go +++ b/consensus/clique/clique.go @@ -302,9 +302,22 @@ func (c *Clique) verifyHeader(chain consensus.ChainHeaderReader, header *types.H if chain.Config().IsShanghai(header.Number, header.Time) { return errors.New("clique does not support shanghai fork") } + // Verify the non-existence of withdrawalsHash. + if header.WithdrawalsHash != nil { + return fmt.Errorf("invalid withdrawalsHash: have %x, expected nil", header.WithdrawalsHash) + } if chain.Config().IsCancun(header.Number, header.Time) { return errors.New("clique does not support cancun fork") } + // Verify the non-existence of cancun-specific header fields + switch { + case header.ExcessBlobGas != nil: + return fmt.Errorf("invalid excessBlobGas: have %d, expected nil", header.ExcessBlobGas) + case header.BlobGasUsed != nil: + return fmt.Errorf("invalid blobGasUsed: have %d, expected nil", header.BlobGasUsed) + case header.ParentBeaconRoot != nil: + return fmt.Errorf("invalid parentBeaconRoot, have %#x, expected nil", header.ParentBeaconRoot) + } // All basic checks passed, verify cascading fields return c.verifyCascadingFields(chain, header, parents) } @@ -753,6 +766,15 @@ func encodeSigHeader(w io.Writer, header *types.Header) { if header.WithdrawalsHash != nil { panic("unexpected withdrawal hash value in clique") } + if header.ExcessBlobGas != nil { + panic("unexpected excess blob gas value in clique") + } + if header.BlobGasUsed != nil { + panic("unexpected blob gas used value in clique") + } + if header.ParentBeaconRoot != nil { + panic("unexpected parent beacon root value in clique") + } if err := rlp.Encode(w, enc); err != nil { panic("can't encode: " + err.Error()) } diff --git a/consensus/ethash/consensus.go b/consensus/ethash/consensus.go index 8eb9863da1..130dfdf213 100644 --- a/consensus/ethash/consensus.go +++ b/consensus/ethash/consensus.go @@ -266,9 +266,22 @@ func (ethash *Ethash) verifyHeader(chain consensus.ChainHeaderReader, header, pa if chain.Config().IsShanghai(header.Number, header.Time) { return errors.New("ethash does not support shanghai fork") } + // Verify the non-existence of withdrawalsHash. + if header.WithdrawalsHash != nil { + return fmt.Errorf("invalid withdrawalsHash: have %x, expected nil", header.WithdrawalsHash) + } if chain.Config().IsCancun(header.Number, header.Time) { return errors.New("ethash does not support cancun fork") } + // Verify the non-existence of cancun-specific header fields + switch { + case header.ExcessBlobGas != nil: + return fmt.Errorf("invalid excessBlobGas: have %d, expected nil", header.ExcessBlobGas) + case header.BlobGasUsed != nil: + return fmt.Errorf("invalid blobGasUsed: have %d, expected nil", header.BlobGasUsed) + case header.ParentBeaconRoot != nil: + return fmt.Errorf("invalid parentBeaconRoot, have %#x, expected nil", header.ParentBeaconRoot) + } // Add some fake checks for tests if ethash.fakeDelay != nil { time.Sleep(*ethash.fakeDelay) @@ -533,6 +546,15 @@ func (ethash *Ethash) SealHash(header *types.Header) (hash common.Hash) { if header.WithdrawalsHash != nil { panic("withdrawal hash set on ethash") } + if header.ExcessBlobGas != nil { + panic("excess blob gas set on ethash") + } + if header.BlobGasUsed != nil { + panic("blob gas used set on ethash") + } + if header.ParentBeaconRoot != nil { + panic("parent beacon root set on ethash") + } rlp.Encode(hasher, enc) hasher.Sum(hash[:0]) return hash From 61b844f2b2cf6b9233a5bcd43c68d9be6f7392b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Tue, 28 Nov 2023 22:31:47 +0200 Subject: [PATCH 104/223] eth/gasestimator: allow slight estimation error in favor of less iterations (#28618) * eth/gasestimator: early exit for plain transfer and error allowance * core, eth/gasestimator: hard guess at a possible required gas * internal/ethapi: update estimation tests with the error ratio * eth/gasestimator: I hate you linter * graphql: fix gas estimation test --------- Co-authored-by: Oren --- core/state_transition.go | 23 +++++++++------- eth/gasestimator/gasestimator.go | 45 ++++++++++++++++++++++++++++++-- graphql/graphql_test.go | 2 +- internal/ethapi/api.go | 13 ++++++--- internal/ethapi/api_test.go | 2 +- 5 files changed, 68 insertions(+), 17 deletions(-) diff --git a/core/state_transition.go b/core/state_transition.go index 612fdd7813..540f63fda7 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -32,9 +32,10 @@ import ( // ExecutionResult includes all output after executing given evm // message no matter the execution itself is successful or not. type ExecutionResult struct { - UsedGas uint64 // Total used gas but include the refunded gas - Err error // Any error encountered during the execution(listed in core/vm/errors.go) - ReturnData []byte // Returned data from evm(function result or data supplied with revert opcode) + UsedGas uint64 // Total used gas, not including the refunded gas + RefundedGas uint64 // Total gas refunded after execution + Err error // Any error encountered during the execution(listed in core/vm/errors.go) + ReturnData []byte // Returned data from evm(function result or data supplied with revert opcode) } // Unwrap returns the internal evm error which allows us for further @@ -419,12 +420,13 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) { ret, st.gasRemaining, vmerr = st.evm.Call(sender, st.to(), msg.Data, st.gasRemaining, msg.Value) } + var gasRefund uint64 if !rules.IsLondon { // Before EIP-3529: refunds were capped to gasUsed / 2 - st.refundGas(params.RefundQuotient) + gasRefund = st.refundGas(params.RefundQuotient) } else { // After EIP-3529: refunds are capped to gasUsed / 5 - st.refundGas(params.RefundQuotientEIP3529) + gasRefund = st.refundGas(params.RefundQuotientEIP3529) } effectiveTip := msg.GasPrice if rules.IsLondon { @@ -442,13 +444,14 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) { } return &ExecutionResult{ - UsedGas: st.gasUsed(), - Err: vmerr, - ReturnData: ret, + UsedGas: st.gasUsed(), + RefundedGas: gasRefund, + Err: vmerr, + ReturnData: ret, }, nil } -func (st *StateTransition) refundGas(refundQuotient uint64) { +func (st *StateTransition) refundGas(refundQuotient uint64) uint64 { // Apply refund counter, capped to a refund quotient refund := st.gasUsed() / refundQuotient if refund > st.state.GetRefund() { @@ -463,6 +466,8 @@ func (st *StateTransition) refundGas(refundQuotient uint64) { // Also return remaining gas to the block gas counter so it is // available for the next transaction. st.gp.AddGas(st.gasRemaining) + + return refund } // gasUsed returns the amount of gas used up by the state transition. diff --git a/eth/gasestimator/gasestimator.go b/eth/gasestimator/gasestimator.go index 3e74b5b08b..4a8e20dfed 100644 --- a/eth/gasestimator/gasestimator.go +++ b/eth/gasestimator/gasestimator.go @@ -42,6 +42,8 @@ type Options struct { Chain core.ChainContext // Chain context to access past block hashes Header *types.Header // Header defining the block context to execute in State *state.StateDB // Pre-state on top of which to estimate the gas + + ErrorRatio float64 // Allowed overestimation ratio for faster estimation termination } // Estimate returns the lowest possible gas limit that allows the transaction to @@ -86,16 +88,28 @@ func Estimate(ctx context.Context, call *core.Message, opts *Options, gasCap uin if transfer == nil { transfer = new(big.Int) } - log.Warn("Gas estimation capped by limited funds", "original", hi, "balance", balance, + log.Debug("Gas estimation capped by limited funds", "original", hi, "balance", balance, "sent", transfer, "maxFeePerGas", feeCap, "fundable", allowance) hi = allowance.Uint64() } } // Recap the highest gas allowance with specified gascap. if gasCap != 0 && hi > gasCap { - log.Warn("Caller gas above allowance, capping", "requested", hi, "cap", gasCap) + log.Debug("Caller gas above allowance, capping", "requested", hi, "cap", gasCap) hi = gasCap } + // If the transaction is a plain value transfer, short circuit estimation and + // directly try 21000. Returning 21000 without any execution is dangerous as + // some tx field combos might bump the price up even for plain transfers (e.g. + // unused access list items). Ever so slightly wasteful, but safer overall. + if len(call.Data) == 0 { + if call.To != nil && opts.State.GetCodeSize(*call.To) == 0 { + failed, _, err := execute(ctx, call, opts, params.TxGas) + if !failed && err == nil { + return params.TxGas, nil, nil + } + } + } // We first execute the transaction at the highest allowable gas limit, since if this fails we // can return error immediately. failed, result, err := execute(ctx, call, opts, hi) @@ -115,8 +129,35 @@ func Estimate(ctx context.Context, call *core.Message, opts *Options, gasCap uin // limit for these cases anyway. lo = result.UsedGas - 1 + // There's a fairly high chance for the transaction to execute successfully + // with gasLimit set to the first execution's usedGas + gasRefund. Explicitly + // check that gas amount and use as a limit for the binary search. + optimisticGasLimit := (result.UsedGas + result.RefundedGas + params.CallStipend) * 64 / 63 + if optimisticGasLimit < hi { + failed, _, err = execute(ctx, call, opts, optimisticGasLimit) + if err != nil { + // This should not happen under normal conditions since if we make it this far the + // transaction had run without error at least once before. + log.Error("Execution error in estimate gas", "err", err) + return 0, nil, err + } + if failed { + lo = optimisticGasLimit + } else { + hi = optimisticGasLimit + } + } // Binary search for the smallest gas limit that allows the tx to execute successfully. for lo+1 < hi { + if opts.ErrorRatio > 0 { + // It is a bit pointless to return a perfect estimation, as changing + // network conditions require the caller to bump it up anyway. Since + // wallets tend to use 20-25% bump, allowing a small approximation + // error is fine (as long as it's upwards). + if float64(hi-lo)/float64(hi) < opts.ErrorRatio { + break + } + } mid := (hi + lo) / 2 if mid > lo*2 { // Most txs don't need much higher gas limit than their gas used, and most txs don't diff --git a/graphql/graphql_test.go b/graphql/graphql_test.go index a83d6bbd46..f91229d015 100644 --- a/graphql/graphql_test.go +++ b/graphql/graphql_test.go @@ -139,7 +139,7 @@ func TestGraphQLBlockSerialization(t *testing.T) { // should return `estimateGas` as decimal { body: `{"query": "{block{ estimateGas(data:{}) }}"}`, - want: `{"data":{"block":{"estimateGas":"0xcf08"}}}`, + want: `{"data":{"block":{"estimateGas":"0xd221"}}}`, code: 200, }, // should return `status` as decimal diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index f322132769..c0b28e4b69 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -51,6 +51,10 @@ import ( "github.com/tyler-smith/go-bip39" ) +// estimateGasErrorRatio is the amount of overestimation eth_estimateGas is +// allowed to produce in order to speed up calculations. +const estimateGasErrorRatio = 0.015 + // EthereumAPI provides an API to access Ethereum related information. type EthereumAPI struct { b Backend @@ -1189,10 +1193,11 @@ func DoEstimateGas(ctx context.Context, b Backend, args TransactionArgs, blockNr } // Construct the gas estimator option from the user input opts := &gasestimator.Options{ - Config: b.ChainConfig(), - Chain: NewChainContext(ctx, b), - Header: header, - State: state, + Config: b.ChainConfig(), + Chain: NewChainContext(ctx, b), + Header: header, + State: state, + ErrorRatio: estimateGasErrorRatio, } // Run the gas estimation andwrap any revertals into a custom return call, err := args.ToMessage(gasCap, header.BaseFee) diff --git a/internal/ethapi/api_test.go b/internal/ethapi/api_test.go index 9b08fd8d42..c2490ac703 100644 --- a/internal/ethapi/api_test.go +++ b/internal/ethapi/api_test.go @@ -735,7 +735,7 @@ func TestEstimateGas(t *testing.T) { t.Errorf("test %d: want no error, have %v", i, err) continue } - if uint64(result) != tc.want { + if float64(result) > float64(tc.want)*(1+estimateGasErrorRatio) { t.Errorf("test %d, result mismatch, have\n%v\n, want\n%v\n", i, uint64(result), tc.want) } } From 28e73717016cdc9ebdb5fdb3474cfbd3bd2d2524 Mon Sep 17 00:00:00 2001 From: jwasinger Date: Wed, 29 Nov 2023 15:33:50 +0800 Subject: [PATCH 105/223] all: replace log15 with slog (#28187) This PR replaces Geth's logger package (a fork of [log15](https://github.com/inconshreveable/log15)) with an implementation using slog, a logging library included as part of the Go standard library as of Go1.21. Main changes are as follows: * removes any log handlers that were unused in the Geth codebase. * Json, logfmt, and terminal formatters are now slog handlers. * Verbosity level constants are changed to match slog constant values. Internal translation is done to make this opaque to the user and backwards compatible with existing `--verbosity` and `--vmodule` options. * `--log.backtraceat` and `--log.debug` are removed. The external-facing API is largely the same as the existing Geth logger. Logger method signatures remain unchanged. A small semantic difference is that a `Handler` can only be set once per `Logger` and not changed dynamically. This just means that a new logger must be instantiated every time the handler of the root logger is changed. ---- For users of the `go-ethereum/log` module. If you were using this module for your own project, you will need to change the initialization. If you previously did ```golang log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) ``` You now instead need to do ```golang log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelInfo, true))) ``` See more about reasoning here: https://github.com/ethereum/go-ethereum/issues/28558#issuecomment-1820606613 --- cmd/abigen/main.go | 2 +- cmd/bootnode/main.go | 7 +- cmd/clef/main.go | 3 +- cmd/devp2p/runtest.go | 2 +- cmd/evm/internal/t8ntool/block.go | 7 +- cmd/evm/internal/t8ntool/transaction.go | 7 +- cmd/evm/internal/t8ntool/transition.go | 8 +- cmd/geth/logging_test.go | 48 ++ cmd/geth/logtestcmd_active.go | 5 +- cmd/geth/main.go | 2 + cmd/geth/testdata/logging/logtest-json.txt | 100 ++-- cmd/geth/testdata/logging/logtest-logfmt.txt | 102 ++-- .../testdata/logging/logtest-terminal.txt | 102 ++-- cmd/utils/flags.go | 7 + cmd/utils/flags_legacy.go | 14 + core/state/snapshot/generate_test.go | 2 +- core/txpool/blobpool/blobpool_test.go | 10 +- eth/catalyst/api_test.go | 2 +- eth/downloader/queue_test.go | 4 +- go.mod | 17 +- go.sum | 34 +- internal/debug/api.go | 9 +- internal/debug/flags.go | 116 +++-- internal/testlog/testlog.go | 118 +++-- log/CONTRIBUTORS | 11 - log/LICENSE | 13 - log/README.md | 77 --- log/README_ETHEREUM.md | 5 - log/doc.go | 327 ------------ log/format.go | 337 +++---------- log/handler.go | 470 ++++++------------ log/handler_glog.go | 151 +++--- log/logger.go | 358 ++++++------- log/logger_test.go | 52 +- log/root.go | 49 +- log/syslog.go | 58 --- miner/stress/clique/main.go | 2 +- p2p/discover/v4_udp_test.go | 7 +- p2p/discover/v5_udp_test.go | 7 +- p2p/simulations/adapters/exec.go | 20 +- p2p/simulations/adapters/types.go | 5 +- p2p/simulations/examples/ping-pong.go | 2 +- p2p/simulations/http_test.go | 4 +- signer/core/auditlog.go | 9 +- signer/storage/aes_gcm_storage_test.go | 5 +- 45 files changed, 932 insertions(+), 1765 deletions(-) delete mode 100644 log/CONTRIBUTORS delete mode 100644 log/LICENSE delete mode 100644 log/README.md delete mode 100644 log/README_ETHEREUM.md delete mode 100644 log/doc.go delete mode 100644 log/syslog.go diff --git a/cmd/abigen/main.go b/cmd/abigen/main.go index 221f45c078..0149dec527 100644 --- a/cmd/abigen/main.go +++ b/cmd/abigen/main.go @@ -232,7 +232,7 @@ func abigen(c *cli.Context) error { } func main() { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelInfo, true))) if err := app.Run(os.Args); err != nil { fmt.Fprintln(os.Stderr, err) diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go index 5c1635de39..1660b43b74 100644 --- a/cmd/bootnode/main.go +++ b/cmd/bootnode/main.go @@ -32,6 +32,7 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/nat" "github.com/ethereum/go-ethereum/p2p/netutil" + "golang.org/x/exp/slog" ) func main() { @@ -52,10 +53,10 @@ func main() { ) flag.Parse() - glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) - glogger.Verbosity(log.Lvl(*verbosity)) + glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) + glogger.Verbosity(slog.Level(*verbosity)) glogger.Vmodule(*vmodule) - log.Root().SetHandler(glogger) + log.SetDefault(log.NewLogger(glogger)) natm, err := nat.Parse(*natdesc) if err != nil { diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 63f34effb7..27b7b70771 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -57,6 +57,7 @@ import ( "github.com/mattn/go-colorable" "github.com/mattn/go-isatty" "github.com/urfave/cli/v2" + "golang.org/x/exp/slog" ) const legalWarning = ` @@ -492,7 +493,7 @@ func initialize(c *cli.Context) error { if usecolor { output = colorable.NewColorable(logOutput) } - log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(c.Int(logLevelFlag.Name)), log.StreamHandler(output, log.TerminalFormat(usecolor)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(output, slog.Level(c.Int(logLevelFlag.Name)), usecolor))) return nil } diff --git a/cmd/devp2p/runtest.go b/cmd/devp2p/runtest.go index f72aa91119..76af53ee4d 100644 --- a/cmd/devp2p/runtest.go +++ b/cmd/devp2p/runtest.go @@ -54,7 +54,7 @@ func runTests(ctx *cli.Context, tests []utesting.Test) error { } // Disable logging unless explicitly enabled. if !ctx.IsSet("verbosity") && !ctx.IsSet("vmodule") { - log.Root().SetHandler(log.DiscardHandler()) + log.SetDefault(log.NewLogger(log.DiscardHandler())) } // Run the tests. var run = utesting.RunTests diff --git a/cmd/evm/internal/t8ntool/block.go b/cmd/evm/internal/t8ntool/block.go index 5c0e28e284..429ae12c54 100644 --- a/cmd/evm/internal/t8ntool/block.go +++ b/cmd/evm/internal/t8ntool/block.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rlp" "github.com/urfave/cli/v2" + "golang.org/x/exp/slog" ) //go:generate go run github.com/fjl/gencodec -type header -field-override headerMarshaling -out gen_header.go @@ -216,9 +217,9 @@ func (i *bbInput) sealClique(block *types.Block) (*types.Block, error) { // BuildBlock constructs a block from the given inputs. func BuildBlock(ctx *cli.Context) error { // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) - glogger.Verbosity(log.Lvl(ctx.Int(VerbosityFlag.Name))) - log.Root().SetHandler(glogger) + glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) + glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) + log.SetDefault(log.NewLogger(glogger)) baseDir, err := createBasedir(ctx) if err != nil { diff --git a/cmd/evm/internal/t8ntool/transaction.go b/cmd/evm/internal/t8ntool/transaction.go index 03a2e2eb99..e1c98c7fe2 100644 --- a/cmd/evm/internal/t8ntool/transaction.go +++ b/cmd/evm/internal/t8ntool/transaction.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/tests" "github.com/urfave/cli/v2" + "golang.org/x/exp/slog" ) type result struct { @@ -66,9 +67,9 @@ func (r *result) MarshalJSON() ([]byte, error) { func Transaction(ctx *cli.Context) error { // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) - glogger.Verbosity(log.Lvl(ctx.Int(VerbosityFlag.Name))) - log.Root().SetHandler(glogger) + glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) + glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) + log.SetDefault(log.NewLogger(glogger)) var ( err error diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index d517592e5c..a01dfedab9 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -24,6 +24,8 @@ import ( "os" "path" + "golang.org/x/exp/slog" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/consensus/misc/eip1559" @@ -81,9 +83,9 @@ type input struct { func Transition(ctx *cli.Context) error { // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) - glogger.Verbosity(log.Lvl(ctx.Int(VerbosityFlag.Name))) - log.Root().SetHandler(glogger) + glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) + glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) + log.SetDefault(log.NewLogger(glogger)) var ( err error diff --git a/cmd/geth/logging_test.go b/cmd/geth/logging_test.go index 69fe0fadf7..50991554b4 100644 --- a/cmd/geth/logging_test.go +++ b/cmd/geth/logging_test.go @@ -28,6 +28,7 @@ import ( "os/exec" "strings" "testing" + "encoding/json" "github.com/ethereum/go-ethereum/internal/reexec" ) @@ -98,6 +99,53 @@ func testConsoleLogging(t *testing.T, format string, tStart, tEnd int) { } } +func TestJsonLogging(t *testing.T) { + t.Parallel() + haveB, err := runSelf("--log.format", "json", "logtest") + if err != nil { + t.Fatal(err) + } + readFile, err := os.Open("testdata/logging/logtest-json.txt") + if err != nil { + t.Fatal(err) + } + wantLines := split(readFile) + haveLines := split(bytes.NewBuffer(haveB)) + for i, wantLine := range wantLines { + if i > len(haveLines)-1 { + t.Fatalf("format %v, line %d missing, want:%v", "json", i, wantLine) + } + haveLine := haveLines[i] + for strings.Contains(haveLine, "Unknown config environment variable") { + // This can happen on CI runs. Drop it. + haveLines = append(haveLines[:i], haveLines[i+1:]...) + haveLine = haveLines[i] + } + var have, want []byte + { + var h map[string]any + if err := json.Unmarshal([]byte(haveLine), &h); err != nil { + t.Fatal(err) + } + h["t"] = "xxx" + have, _ = json.Marshal(h) + } + { + var w map[string]any + if err := json.Unmarshal([]byte(wantLine), &w); err != nil { + t.Fatal(err) + } + w["t"] = "xxx" + want, _ = json.Marshal(w) + } + if !bytes.Equal(have, want) { + // show an intelligent diff + t.Logf(nicediff(have, want)) + t.Errorf("file content wrong") + } + } +} + func TestVmodule(t *testing.T) { t.Parallel() checkOutput := func(level int, want, wantNot string) { diff --git a/cmd/geth/logtestcmd_active.go b/cmd/geth/logtestcmd_active.go index 0632f9ca4b..0ca4cc621d 100644 --- a/cmd/geth/logtestcmd_active.go +++ b/cmd/geth/logtestcmd_active.go @@ -26,6 +26,7 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/internal/debug" "github.com/ethereum/go-ethereum/log" "github.com/holiman/uint256" "github.com/urfave/cli/v2" @@ -49,7 +50,9 @@ func (c customQuotedStringer) String() string { // logTest is an entry point which spits out some logs. This is used by testing // to verify expected outputs func logTest(ctx *cli.Context) error { - log.ResetGlobalState() + // clear field padding map + debug.ResetLogging() + { // big.Int ba, _ := new(big.Int).SetString("111222333444555678999", 10) // "111,222,333,444,555,678,999" bb, _ := new(big.Int).SetString("-111222333444555678999", 10) // "-111,222,333,444,555,678,999" diff --git a/cmd/geth/main.go b/cmd/geth/main.go index e5a17e45cf..0d5939bd20 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -144,6 +144,8 @@ var ( utils.GpoMaxGasPriceFlag, utils.GpoIgnoreGasPriceFlag, configFileFlag, + utils.LogDebugFlag, + utils.LogBacktraceAtFlag, }, utils.NetworkFlags, utils.DatabaseFlags) rpcFlags = []cli.Flag{ diff --git a/cmd/geth/testdata/logging/logtest-json.txt b/cmd/geth/testdata/logging/logtest-json.txt index 6cb2476dbd..bdc1ae4de6 100644 --- a/cmd/geth/testdata/logging/logtest-json.txt +++ b/cmd/geth/testdata/logging/logtest-json.txt @@ -1,49 +1,51 @@ -{"111,222,333,444,555,678,999":"111222333444555678999","lvl":"info","msg":"big.Int","t":"2023-11-09T08:33:19.464383209+01:00"} -{"-111,222,333,444,555,678,999":"-111222333444555678999","lvl":"info","msg":"-big.Int","t":"2023-11-09T08:33:19.46455928+01:00"} -{"11,122,233,344,455,567,899,900":"11122233344455567899900","lvl":"info","msg":"big.Int","t":"2023-11-09T08:33:19.464582073+01:00"} -{"-11,122,233,344,455,567,899,900":"-11122233344455567899900","lvl":"info","msg":"-big.Int","t":"2023-11-09T08:33:19.464594846+01:00"} -{"111,222,333,444,555,678,999":"0x607851afc94ca2517","lvl":"info","msg":"uint256","t":"2023-11-09T08:33:19.464607873+01:00"} -{"11,122,233,344,455,567,899,900":"0x25aeffe8aaa1ef67cfc","lvl":"info","msg":"uint256","t":"2023-11-09T08:33:19.464694639+01:00"} -{"1,000,000":1000000,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464708835+01:00"} -{"-1,000,000":-1000000,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464725054+01:00"} -{"9,223,372,036,854,775,807":9223372036854775807,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464735773+01:00"} -{"-9,223,372,036,854,775,808":-9223372036854775808,"lvl":"info","msg":"int64","t":"2023-11-09T08:33:19.464744532+01:00"} -{"1,000,000":1000000,"lvl":"info","msg":"uint64","t":"2023-11-09T08:33:19.464752807+01:00"} -{"18,446,744,073,709,551,615":18446744073709551615,"lvl":"info","msg":"uint64","t":"2023-11-09T08:33:19.464779296+01:00"} -{"key":"special \r\n\t chars","lvl":"info","msg":"Special chars in value","t":"2023-11-09T08:33:19.464794181+01:00"} -{"lvl":"info","msg":"Special chars in key","special \n\t chars":"value","t":"2023-11-09T08:33:19.464827197+01:00"} -{"lvl":"info","msg":"nospace","nospace":"nospace","t":"2023-11-09T08:33:19.464841118+01:00"} -{"lvl":"info","msg":"with space","t":"2023-11-09T08:33:19.464862818+01:00","with nospace":"with nospace"} -{"key":"\u001b[1G\u001b[K\u001b[1A","lvl":"info","msg":"Bash escapes in value","t":"2023-11-09T08:33:19.464876802+01:00"} -{"\u001b[1G\u001b[K\u001b[1A":"value","lvl":"info","msg":"Bash escapes in key","t":"2023-11-09T08:33:19.464885416+01:00"} -{"key":"value","lvl":"info","msg":"Bash escapes in message \u001b[1G\u001b[K\u001b[1A end","t":"2023-11-09T08:33:19.464906946+01:00"} -{"\u001b[35mColored\u001b[0m[":"\u001b[35mColored\u001b[0m[","lvl":"info","msg":"\u001b[35mColored\u001b[0m[","t":"2023-11-09T08:33:19.464921455+01:00"} -{"2562047h47m16.854s":"2562047h47m16.854s","lvl":"info","msg":"Custom Stringer value","t":"2023-11-09T08:33:19.464943893+01:00"} -{"key":"lazy value","lvl":"info","msg":"Lazy evaluation of value","t":"2023-11-09T08:33:19.465013552+01:00"} -{"lvl":"info","msg":"A message with wonky 💩 characters","t":"2023-11-09T08:33:19.465069437+01:00"} -{"lvl":"info","msg":"A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩","t":"2023-11-09T08:33:19.465083053+01:00"} -{"lvl":"info","msg":"A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above","t":"2023-11-09T08:33:19.465104289+01:00"} -{"false":"false","lvl":"info","msg":"boolean","t":"2023-11-09T08:33:19.465117185+01:00","true":"true"} -{"foo":"beta","lvl":"info","msg":"repeated-key 1","t":"2023-11-09T08:33:19.465143425+01:00"} -{"lvl":"info","msg":"repeated-key 2","t":"2023-11-09T08:33:19.465156323+01:00","xx":"longer"} -{"lvl":"info","msg":"log at level info","t":"2023-11-09T08:33:19.465193158+01:00"} -{"lvl":"warn","msg":"log at level warn","t":"2023-11-09T08:33:19.465228964+01:00"} -{"lvl":"eror","msg":"log at level error","t":"2023-11-09T08:33:19.465240352+01:00"} -{"a":"aligned left","bar":"short","lvl":"info","msg":"test","t":"2023-11-09T08:33:19.465247226+01:00"} -{"a":1,"bar":"a long message","lvl":"info","msg":"test","t":"2023-11-09T08:33:19.465269028+01:00"} -{"a":"aligned right","bar":"short","lvl":"info","msg":"test","t":"2023-11-09T08:33:19.465313611+01:00"} -{"lvl":"info","msg":"The following logs should align so that the key-fields make 5 columns","t":"2023-11-09T08:33:19.465328188+01:00"} -{"gas":1123123,"hash":"0x0000000000000000000000000000000000000000000000000000000000001234","lvl":"info","msg":"Inserted known block","number":1012,"other":"first","t":"2023-11-09T08:33:19.465350507+01:00","txs":200} -{"gas":1123,"hash":"0x0000000000000000000000000000000000000000000000000000000000001235","lvl":"info","msg":"Inserted new block","number":1,"other":"second","t":"2023-11-09T08:33:19.465387952+01:00","txs":2} -{"gas":1,"hash":"0x0000000000000000000000000000000000000000000000000000000000012322","lvl":"info","msg":"Inserted known block","number":99,"other":"third","t":"2023-11-09T08:33:19.465406687+01:00","txs":10} -{"gas":99,"hash":"0x0000000000000000000000000000000000000000000000000000000000001234","lvl":"warn","msg":"Inserted known block","number":1012,"other":"fourth","t":"2023-11-09T08:33:19.465433025+01:00","txs":200} -{"\u003cnil\u003e":"\u003cnil\u003e","lvl":"info","msg":"(*big.Int)(nil)","t":"2023-11-09T08:33:19.465450283+01:00"} -{"\u003cnil\u003e":"nil","lvl":"info","msg":"(*uint256.Int)(nil)","t":"2023-11-09T08:33:19.465472953+01:00"} -{"lvl":"info","msg":"(fmt.Stringer)(nil)","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465538633+01:00"} -{"lvl":"info","msg":"nil-concrete-stringer","res":"nil","t":"2023-11-09T08:33:19.465552355+01:00"} -{"lvl":"info","msg":"error(nil) ","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465601029+01:00"} -{"lvl":"info","msg":"nil-concrete-error","res":"","t":"2023-11-09T08:33:19.46561622+01:00"} -{"lvl":"info","msg":"nil-custom-struct","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465638888+01:00"} -{"lvl":"info","msg":"raw nil","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465673664+01:00"} -{"lvl":"info","msg":"(*uint64)(nil)","res":"\u003cnil\u003e","t":"2023-11-09T08:33:19.465700264+01:00"} -{"level":"level","lvl":"lvl","msg":"msg","t":"t","time":"time"} +{"t":"2023-11-22T15:42:00.407963+08:00","lvl":"info","msg":"big.Int","111,222,333,444,555,678,999":"111222333444555678999"} +{"t":"2023-11-22T15:42:00.408084+08:00","lvl":"info","msg":"-big.Int","-111,222,333,444,555,678,999":"-111222333444555678999"} +{"t":"2023-11-22T15:42:00.408092+08:00","lvl":"info","msg":"big.Int","11,122,233,344,455,567,899,900":"11122233344455567899900"} +{"t":"2023-11-22T15:42:00.408097+08:00","lvl":"info","msg":"-big.Int","-11,122,233,344,455,567,899,900":"-11122233344455567899900"} +{"t":"2023-11-22T15:42:00.408127+08:00","lvl":"info","msg":"uint256","111,222,333,444,555,678,999":"111222333444555678999"} +{"t":"2023-11-22T15:42:00.408133+08:00","lvl":"info","msg":"uint256","11,122,233,344,455,567,899,900":"11122233344455567899900"} +{"t":"2023-11-22T15:42:00.408137+08:00","lvl":"info","msg":"int64","1,000,000":1000000} +{"t":"2023-11-22T15:42:00.408145+08:00","lvl":"info","msg":"int64","-1,000,000":-1000000} +{"t":"2023-11-22T15:42:00.408149+08:00","lvl":"info","msg":"int64","9,223,372,036,854,775,807":9223372036854775807} +{"t":"2023-11-22T15:42:00.408153+08:00","lvl":"info","msg":"int64","-9,223,372,036,854,775,808":-9223372036854775808} +{"t":"2023-11-22T15:42:00.408156+08:00","lvl":"info","msg":"uint64","1,000,000":1000000} +{"t":"2023-11-22T15:42:00.40816+08:00","lvl":"info","msg":"uint64","18,446,744,073,709,551,615":18446744073709551615} +{"t":"2023-11-22T15:42:00.408164+08:00","lvl":"info","msg":"Special chars in value","key":"special \r\n\t chars"} +{"t":"2023-11-22T15:42:00.408167+08:00","lvl":"info","msg":"Special chars in key","special \n\t chars":"value"} +{"t":"2023-11-22T15:42:00.408171+08:00","lvl":"info","msg":"nospace","nospace":"nospace"} +{"t":"2023-11-22T15:42:00.408174+08:00","lvl":"info","msg":"with space","with nospace":"with nospace"} +{"t":"2023-11-22T15:42:00.408178+08:00","lvl":"info","msg":"Bash escapes in value","key":"\u001b[1G\u001b[K\u001b[1A"} +{"t":"2023-11-22T15:42:00.408182+08:00","lvl":"info","msg":"Bash escapes in key","\u001b[1G\u001b[K\u001b[1A":"value"} +{"t":"2023-11-22T15:42:00.408186+08:00","lvl":"info","msg":"Bash escapes in message \u001b[1G\u001b[K\u001b[1A end","key":"value"} +{"t":"2023-11-22T15:42:00.408194+08:00","lvl":"info","msg":"\u001b[35mColored\u001b[0m[","\u001b[35mColored\u001b[0m[":"\u001b[35mColored\u001b[0m["} +{"t":"2023-11-22T15:42:00.408197+08:00","lvl":"info","msg":"an error message with quotes","error":"this is an 'error'"} +{"t":"2023-11-22T15:42:00.408202+08:00","lvl":"info","msg":"Custom Stringer value","2562047h47m16.854s":"2562047h47m16.854s"} +{"t":"2023-11-22T15:42:00.408208+08:00","lvl":"info","msg":"a custom stringer that emits quoted text","output":"output with 'quotes'"} +{"t":"2023-11-22T15:42:00.408215+08:00","lvl":"info","msg":"Lazy evaluation of value","key":"lazy value"} +{"t":"2023-11-22T15:42:00.408219+08:00","lvl":"info","msg":"A message with wonky 💩 characters"} +{"t":"2023-11-22T15:42:00.408222+08:00","lvl":"info","msg":"A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩"} +{"t":"2023-11-22T15:42:00.408226+08:00","lvl":"info","msg":"A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above"} +{"t":"2023-11-22T15:42:00.408229+08:00","lvl":"info","msg":"boolean","true":true,"false":false} +{"t":"2023-11-22T15:42:00.408234+08:00","lvl":"info","msg":"repeated-key 1","foo":"alpha","foo":"beta"} +{"t":"2023-11-22T15:42:00.408237+08:00","lvl":"info","msg":"repeated-key 2","xx":"short","xx":"longer"} +{"t":"2023-11-22T15:42:00.408241+08:00","lvl":"info","msg":"log at level info"} +{"t":"2023-11-22T15:42:00.408244+08:00","lvl":"warn","msg":"log at level warn"} +{"t":"2023-11-22T15:42:00.408247+08:00","lvl":"eror","msg":"log at level error"} +{"t":"2023-11-22T15:42:00.408251+08:00","lvl":"info","msg":"test","bar":"short","a":"aligned left"} +{"t":"2023-11-22T15:42:00.408254+08:00","lvl":"info","msg":"test","bar":"a long message","a":1} +{"t":"2023-11-22T15:42:00.408258+08:00","lvl":"info","msg":"test","bar":"short","a":"aligned right"} +{"t":"2023-11-22T15:42:00.408261+08:00","lvl":"info","msg":"The following logs should align so that the key-fields make 5 columns"} +{"t":"2023-11-22T15:42:00.408275+08:00","lvl":"info","msg":"Inserted known block","number":1012,"hash":"0x0000000000000000000000000000000000000000000000000000000000001234","txs":200,"gas":1123123,"other":"first"} +{"t":"2023-11-22T15:42:00.408281+08:00","lvl":"info","msg":"Inserted new block","number":1,"hash":"0x0000000000000000000000000000000000000000000000000000000000001235","txs":2,"gas":1123,"other":"second"} +{"t":"2023-11-22T15:42:00.408287+08:00","lvl":"info","msg":"Inserted known block","number":99,"hash":"0x0000000000000000000000000000000000000000000000000000000000012322","txs":10,"gas":1,"other":"third"} +{"t":"2023-11-22T15:42:00.408296+08:00","lvl":"warn","msg":"Inserted known block","number":1012,"hash":"0x0000000000000000000000000000000000000000000000000000000000001234","txs":200,"gas":99,"other":"fourth"} +{"t":"2023-11-22T15:42:00.4083+08:00","lvl":"info","msg":"(*big.Int)(nil)","":""} +{"t":"2023-11-22T15:42:00.408303+08:00","lvl":"info","msg":"(*uint256.Int)(nil)","":""} +{"t":"2023-11-22T15:42:00.408311+08:00","lvl":"info","msg":"(fmt.Stringer)(nil)","res":null} +{"t":"2023-11-22T15:42:00.408318+08:00","lvl":"info","msg":"nil-concrete-stringer","res":""} +{"t":"2023-11-22T15:42:00.408322+08:00","lvl":"info","msg":"error(nil) ","res":null} +{"t":"2023-11-22T15:42:00.408326+08:00","lvl":"info","msg":"nil-concrete-error","res":""} +{"t":"2023-11-22T15:42:00.408334+08:00","lvl":"info","msg":"nil-custom-struct","res":null} +{"t":"2023-11-22T15:42:00.40835+08:00","lvl":"info","msg":"raw nil","res":null} +{"t":"2023-11-22T15:42:00.408354+08:00","lvl":"info","msg":"(*uint64)(nil)","res":null} +{"t":"2023-11-22T15:42:00.408361+08:00","lvl":"info","msg":"Using keys 't', 'lvl', 'time', 'level' and 'msg'","t":"t","time":"time","lvl":"lvl","level":"level","msg":"msg"} diff --git a/cmd/geth/testdata/logging/logtest-logfmt.txt b/cmd/geth/testdata/logging/logtest-logfmt.txt index f097143a55..114569e467 100644 --- a/cmd/geth/testdata/logging/logtest-logfmt.txt +++ b/cmd/geth/testdata/logging/logtest-logfmt.txt @@ -1,51 +1,51 @@ -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=-big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=-big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 1,000,000=1,000,000 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 -1,000,000=-1,000,000 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint64 1,000,000=1,000,000 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Special chars in value" key="special \r\n\t chars" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Special chars in key" "special \n\t chars"=value -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nospace nospace=nospace -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="with space" "with nospace"="with nospace" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in value" key="\x1b[1G\x1b[K\x1b[1A" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in key" "\x1b[1G\x1b[K\x1b[1A"=value -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="an error message with quotes" error="this is an 'error'" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="a custom stringer that emits quoted text" output="output with 'quotes'" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Lazy evaluation of value" key="lazy value" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A message with wonky 💩 characters" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=boolean true=true false=false -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="repeated-key 1" foo=alpha foo=beta -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="repeated-key 2" xx=short xx=longer -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="log at level info" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=warn msg="log at level warn" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=eror msg="log at level error" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=test bar=short a="aligned left" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=test bar="a long message" a=1 -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=test bar=short a="aligned right" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="The following logs should align so that the key-fields make 5 columns" -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=1,123,123 other=first -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Inserted new block" number=1 hash=0x0000000000000000000000000000000000000000000000000000000000001235 txs=2 gas=1123 other=second -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Inserted known block" number=99 hash=0x0000000000000000000000000000000000000000000000000000000000012322 txs=10 gas=1 other=third -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=warn msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=99 other=fourth -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(*big.Int)(nil) = -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(*uint256.Int)(nil) = -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(fmt.Stringer)(nil) res=nil -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nil-concrete-stringer res=nil -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="error(nil) " res=nil -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nil-concrete-error res= -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=nil-custom-struct res= -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="raw nil" res=nil -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg=(*uint64)(nil) res= -t=xxxxxxxxxxxxxxxxxxxxxxxx lvl=info msg="Using keys 't', 'lvl', 'time', 'level' and 'msg'" t=t time=time lvl=lvl level=level msg=msg +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=big.Int 111,222,333,444,555,678,999=111222333444555678999 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=-big.Int -111,222,333,444,555,678,999=-111222333444555678999 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=big.Int 11,122,233,344,455,567,899,900=11122233344455567899900 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=-big.Int -11,122,233,344,455,567,899,900=-11122233344455567899900 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=uint256 111,222,333,444,555,678,999=111222333444555678999 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=uint256 11,122,233,344,455,567,899,900=11122233344455567899900 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=int64 1,000,000=1000000 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=int64 -1,000,000=-1000000 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=int64 9,223,372,036,854,775,807=9223372036854775807 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=int64 -9,223,372,036,854,775,808=-9223372036854775808 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=uint64 1,000,000=1000000 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=uint64 18,446,744,073,709,551,615=18446744073709551615 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Special chars in value" key="special \r\n\t chars" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Special chars in key" "special \n\t chars"=value +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=nospace nospace=nospace +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="with space" "with nospace"="with nospace" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Bash escapes in value" key="\x1b[1G\x1b[K\x1b[1A" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Bash escapes in key" "\x1b[1G\x1b[K\x1b[1A"=value +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="an error message with quotes" error="this is an 'error'" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="a custom stringer that emits quoted text" output="output with 'quotes'" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Lazy evaluation of value" key="lazy value" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="A message with wonky 💩 characters" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=boolean true=true false=false +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="repeated-key 1" foo=alpha foo=beta +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="repeated-key 2" xx=short xx=longer +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="log at level info" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=warn msg="log at level warn" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=eror msg="log at level error" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=test bar=short a="aligned left" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=test bar="a long message" a=1 +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=test bar=short a="aligned right" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="The following logs should align so that the key-fields make 5 columns" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=1123123 other=first +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Inserted new block" number=1 hash=0x0000000000000000000000000000000000000000000000000000000000001235 txs=2 gas=1123 other=second +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Inserted known block" number=99 hash=0x0000000000000000000000000000000000000000000000000000000000012322 txs=10 gas=1 other=third +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=warn msg="Inserted known block" number=1012 hash=0x0000000000000000000000000000000000000000000000000000000000001234 txs=200 gas=99 other=fourth +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=(*big.Int)(nil) = +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=(*uint256.Int)(nil) = +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=(fmt.Stringer)(nil) res= +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=nil-concrete-stringer res= +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="error(nil) " res= +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=nil-concrete-error res="" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=nil-custom-struct res= +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="raw nil" res= +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=(*uint64)(nil) res= +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Using keys 't', 'lvl', 'time', 'level' and 'msg'" t=t time=time lvl=lvl level=level msg=msg diff --git a/cmd/geth/testdata/logging/logtest-terminal.txt b/cmd/geth/testdata/logging/logtest-terminal.txt index 051a6267fa..4da3f49d46 100644 --- a/cmd/geth/testdata/logging/logtest-terminal.txt +++ b/cmd/geth/testdata/logging/logtest-terminal.txt @@ -1,52 +1,52 @@ -INFO [XX-XX|XX:XX:XX.XXX] big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -INFO [XX-XX|XX:XX:XX.XXX] -big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 -INFO [XX-XX|XX:XX:XX.XXX] big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -INFO [XX-XX|XX:XX:XX.XXX] -big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 -INFO [XX-XX|XX:XX:XX.XXX] uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 -INFO [XX-XX|XX:XX:XX.XXX] uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 -INFO [XX-XX|XX:XX:XX.XXX] int64 1,000,000=1,000,000 -INFO [XX-XX|XX:XX:XX.XXX] int64 -1,000,000=-1,000,000 -INFO [XX-XX|XX:XX:XX.XXX] int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 -INFO [XX-XX|XX:XX:XX.XXX] int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 -INFO [XX-XX|XX:XX:XX.XXX] uint64 1,000,000=1,000,000 -INFO [XX-XX|XX:XX:XX.XXX] uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 -INFO [XX-XX|XX:XX:XX.XXX] Special chars in value key="special \r\n\t chars" -INFO [XX-XX|XX:XX:XX.XXX] Special chars in key "special \n\t chars"=value -INFO [XX-XX|XX:XX:XX.XXX] nospace nospace=nospace -INFO [XX-XX|XX:XX:XX.XXX] with space "with nospace"="with nospace" -INFO [XX-XX|XX:XX:XX.XXX] Bash escapes in value key="\x1b[1G\x1b[K\x1b[1A" -INFO [XX-XX|XX:XX:XX.XXX] Bash escapes in key "\x1b[1G\x1b[K\x1b[1A"=value -INFO [XX-XX|XX:XX:XX.XXX] "Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value -INFO [XX-XX|XX:XX:XX.XXX] "\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" -INFO [XX-XX|XX:XX:XX.XXX] an error message with quotes error="this is an 'error'" -INFO [XX-XX|XX:XX:XX.XXX] Custom Stringer value 2562047h47m16.854s=2562047h47m16.854s -INFO [XX-XX|XX:XX:XX.XXX] a custom stringer that emits quoted text output="output with 'quotes'" -INFO [XX-XX|XX:XX:XX.XXX] Lazy evaluation of value key="lazy value" -INFO [XX-XX|XX:XX:XX.XXX] "A message with wonky 💩 characters" -INFO [XX-XX|XX:XX:XX.XXX] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" -INFO [XX-XX|XX:XX:XX.XXX] A multiline message +INFO [xx-xx|xx:xx:xx.xxx] big.Int 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +INFO [xx-xx|xx:xx:xx.xxx] -big.Int -111,222,333,444,555,678,999=-111,222,333,444,555,678,999 +INFO [xx-xx|xx:xx:xx.xxx] big.Int 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +INFO [xx-xx|xx:xx:xx.xxx] -big.Int -11,122,233,344,455,567,899,900=-11,122,233,344,455,567,899,900 +INFO [xx-xx|xx:xx:xx.xxx] uint256 111,222,333,444,555,678,999=111,222,333,444,555,678,999 +INFO [xx-xx|xx:xx:xx.xxx] uint256 11,122,233,344,455,567,899,900=11,122,233,344,455,567,899,900 +INFO [xx-xx|xx:xx:xx.xxx] int64 1,000,000=1,000,000 +INFO [xx-xx|xx:xx:xx.xxx] int64 -1,000,000=-1,000,000 +INFO [xx-xx|xx:xx:xx.xxx] int64 9,223,372,036,854,775,807=9,223,372,036,854,775,807 +INFO [xx-xx|xx:xx:xx.xxx] int64 -9,223,372,036,854,775,808=-9,223,372,036,854,775,808 +INFO [xx-xx|xx:xx:xx.xxx] uint64 1,000,000=1,000,000 +INFO [xx-xx|xx:xx:xx.xxx] uint64 18,446,744,073,709,551,615=18,446,744,073,709,551,615 +INFO [xx-xx|xx:xx:xx.xxx] Special chars in value key="special \r\n\t chars" +INFO [xx-xx|xx:xx:xx.xxx] Special chars in key "special \n\t chars"=value +INFO [xx-xx|xx:xx:xx.xxx] nospace nospace=nospace +INFO [xx-xx|xx:xx:xx.xxx] with space "with nospace"="with nospace" +INFO [xx-xx|xx:xx:xx.xxx] Bash escapes in value key="\x1b[1G\x1b[K\x1b[1A" +INFO [xx-xx|xx:xx:xx.xxx] Bash escapes in key "\x1b[1G\x1b[K\x1b[1A"=value +INFO [xx-xx|xx:xx:xx.xxx] "Bash escapes in message \x1b[1G\x1b[K\x1b[1A end" key=value +INFO [xx-xx|xx:xx:xx.xxx] "\x1b[35mColored\x1b[0m[" "\x1b[35mColored\x1b[0m["="\x1b[35mColored\x1b[0m[" +INFO [xx-xx|xx:xx:xx.xxx] an error message with quotes error="this is an 'error'" +INFO [xx-xx|xx:xx:xx.xxx] Custom Stringer value 2562047h47m16.854s=2562047h47m16.854s +INFO [xx-xx|xx:xx:xx.xxx] a custom stringer that emits quoted text output="output with 'quotes'" +INFO [xx-xx|xx:xx:xx.xxx] Lazy evaluation of value key="lazy value" +INFO [xx-xx|xx:xx:xx.xxx] "A message with wonky 💩 characters" +INFO [xx-xx|xx:xx:xx.xxx] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" +INFO [xx-xx|xx:xx:xx.xxx] A multiline message LALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above -INFO [XX-XX|XX:XX:XX.XXX] boolean true=true false=false -INFO [XX-XX|XX:XX:XX.XXX] repeated-key 1 foo=alpha foo=beta -INFO [XX-XX|XX:XX:XX.XXX] repeated-key 2 xx=short xx=longer -INFO [XX-XX|XX:XX:XX.XXX] log at level info -WARN [XX-XX|XX:XX:XX.XXX] log at level warn -ERROR[XX-XX|XX:XX:XX.XXX] log at level error -INFO [XX-XX|XX:XX:XX.XXX] test bar=short a="aligned left" -INFO [XX-XX|XX:XX:XX.XXX] test bar="a long message" a=1 -INFO [XX-XX|XX:XX:XX.XXX] test bar=short a="aligned right" -INFO [XX-XX|XX:XX:XX.XXX] The following logs should align so that the key-fields make 5 columns -INFO [XX-XX|XX:XX:XX.XXX] Inserted known block number=1012 hash=000000..001234 txs=200 gas=1,123,123 other=first -INFO [XX-XX|XX:XX:XX.XXX] Inserted new block number=1 hash=000000..001235 txs=2 gas=1123 other=second -INFO [XX-XX|XX:XX:XX.XXX] Inserted known block number=99 hash=000000..012322 txs=10 gas=1 other=third -WARN [XX-XX|XX:XX:XX.XXX] Inserted known block number=1012 hash=000000..001234 txs=200 gas=99 other=fourth -INFO [XX-XX|XX:XX:XX.XXX] (*big.Int)(nil) = -INFO [XX-XX|XX:XX:XX.XXX] (*uint256.Int)(nil) = -INFO [XX-XX|XX:XX:XX.XXX] (fmt.Stringer)(nil) res=nil -INFO [XX-XX|XX:XX:XX.XXX] nil-concrete-stringer res=nil -INFO [XX-XX|XX:XX:XX.XXX] error(nil) res=nil -INFO [XX-XX|XX:XX:XX.XXX] nil-concrete-error res= -INFO [XX-XX|XX:XX:XX.XXX] nil-custom-struct res= -INFO [XX-XX|XX:XX:XX.XXX] raw nil res=nil -INFO [XX-XX|XX:XX:XX.XXX] (*uint64)(nil) res= -INFO [XX-XX|XX:XX:XX.XXX] Using keys 't', 'lvl', 'time', 'level' and 'msg' t=t time=time lvl=lvl level=level msg=msg +INFO [xx-xx|xx:xx:xx.xxx] boolean true=true false=false +INFO [xx-xx|xx:xx:xx.xxx] repeated-key 1 foo=alpha foo=beta +INFO [xx-xx|xx:xx:xx.xxx] repeated-key 2 xx=short xx=longer +INFO [xx-xx|xx:xx:xx.xxx] log at level info +WARN [xx-xx|xx:xx:xx.xxx] log at level warn +ERROR[xx-xx|xx:xx:xx.xxx] log at level error +INFO [xx-xx|xx:xx:xx.xxx] test bar=short a="aligned left" +INFO [xx-xx|xx:xx:xx.xxx] test bar="a long message" a=1 +INFO [xx-xx|xx:xx:xx.xxx] test bar=short a="aligned right" +INFO [xx-xx|xx:xx:xx.xxx] The following logs should align so that the key-fields make 5 columns +INFO [xx-xx|xx:xx:xx.xxx] Inserted known block number=1012 hash=000000..001234 txs=200 gas=1,123,123 other=first +INFO [xx-xx|xx:xx:xx.xxx] Inserted new block number=1 hash=000000..001235 txs=2 gas=1123 other=second +INFO [xx-xx|xx:xx:xx.xxx] Inserted known block number=99 hash=000000..012322 txs=10 gas=1 other=third +WARN [xx-xx|xx:xx:xx.xxx] Inserted known block number=1012 hash=000000..001234 txs=200 gas=99 other=fourth +INFO [xx-xx|xx:xx:xx.xxx] (*big.Int)(nil) = +INFO [xx-xx|xx:xx:xx.xxx] (*uint256.Int)(nil) = +INFO [xx-xx|xx:xx:xx.xxx] (fmt.Stringer)(nil) res= +INFO [xx-xx|xx:xx:xx.xxx] nil-concrete-stringer res= +INFO [xx-xx|xx:xx:xx.xxx] error(nil) res= +INFO [xx-xx|xx:xx:xx.xxx] nil-concrete-error res= +INFO [xx-xx|xx:xx:xx.xxx] nil-custom-struct res= +INFO [xx-xx|xx:xx:xx.xxx] raw nil res= +INFO [xx-xx|xx:xx:xx.xxx] (*uint64)(nil) res= +INFO [xx-xx|xx:xx:xx.xxx] Using keys 't', 'lvl', 'time', 'level' and 'msg' t=t time=time lvl=lvl level=level msg=msg diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index b49c7c36d5..27e1b3f623 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1389,6 +1389,13 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) { log.Info(fmt.Sprintf("Using %s as db engine", dbEngine)) cfg.DBEngine = dbEngine } + // deprecation notice for log debug flags (TODO: find a more appropriate place to put these?) + if ctx.IsSet(LogBacktraceAtFlag.Name) { + log.Warn("log.backtrace flag is deprecated") + } + if ctx.IsSet(LogDebugFlag.Name) { + log.Warn("log.debug flag is deprecated") + } } func setSmartCard(ctx *cli.Context, cfg *node.Config) { diff --git a/cmd/utils/flags_legacy.go b/cmd/utils/flags_legacy.go index 00237fecaf..243abd8311 100644 --- a/cmd/utils/flags_legacy.go +++ b/cmd/utils/flags_legacy.go @@ -45,6 +45,8 @@ var DeprecatedFlags = []cli.Flag{ LightMaxPeersFlag, LightNoPruneFlag, LightNoSyncServeFlag, + LogBacktraceAtFlag, + LogDebugFlag, } var ( @@ -118,6 +120,18 @@ var ( Usage: "Enables serving light clients before syncing (deprecated)", Category: flags.LightCategory, } + // Deprecated November 2023 + LogBacktraceAtFlag = &cli.StringFlag{ + Name: "log.backtrace", + Usage: "Request a stack trace at a specific logging statement (deprecated)", + Value: "", + Category: flags.DeprecatedCategory, + } + LogDebugFlag = &cli.BoolFlag{ + Name: "log.debug", + Usage: "Prepends log messages with call-site location (deprecated)", + Category: flags.DeprecatedCategory, + } ) // showDeprecated displays deprecated flags that will be soon removed from the codebase. diff --git a/core/state/snapshot/generate_test.go b/core/state/snapshot/generate_test.go index 07016b675c..c25f3e7e8b 100644 --- a/core/state/snapshot/generate_test.go +++ b/core/state/snapshot/generate_test.go @@ -601,7 +601,7 @@ func testGenerateWithExtraAccounts(t *testing.T, scheme string) { } func enableLogging() { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelTrace, true))) } // Tests that snapshot generation when an extra account with storage exists in the snap state. diff --git a/core/txpool/blobpool/blobpool_test.go b/core/txpool/blobpool/blobpool_test.go index 8914301e14..fa3e8edc90 100644 --- a/core/txpool/blobpool/blobpool_test.go +++ b/core/txpool/blobpool/blobpool_test.go @@ -319,7 +319,7 @@ func verifyPoolInternals(t *testing.T, pool *BlobPool) { // - 3. All transactions after a nonce gap must be dropped // - 4. All transactions after an underpriced one (including it) must be dropped func TestOpenDrops(t *testing.T) { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelTrace, true))) // Create a temporary folder for the persistent backend storage, _ := os.MkdirTemp("", "blobpool-") @@ -600,7 +600,7 @@ func TestOpenDrops(t *testing.T) { // - 2. Eviction thresholds are calculated correctly for the sequences // - 3. Balance usage of an account is totals across all transactions func TestOpenIndex(t *testing.T) { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelTrace, true))) // Create a temporary folder for the persistent backend storage, _ := os.MkdirTemp("", "blobpool-") @@ -689,7 +689,7 @@ func TestOpenIndex(t *testing.T) { // Tests that after indexing all the loaded transactions from disk, a price heap // is correctly constructed based on the head basefee and blobfee. func TestOpenHeap(t *testing.T) { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelTrace, true))) // Create a temporary folder for the persistent backend storage, _ := os.MkdirTemp("", "blobpool-") @@ -776,7 +776,7 @@ func TestOpenHeap(t *testing.T) { // Tests that after the pool's previous state is loaded back, any transactions // over the new storage cap will get dropped. func TestOpenCap(t *testing.T) { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelTrace, true))) // Create a temporary folder for the persistent backend storage, _ := os.MkdirTemp("", "blobpool-") @@ -868,7 +868,7 @@ func TestOpenCap(t *testing.T) { // specific to the blob pool. It does not do an exhaustive transaction validity // check. func TestAdd(t *testing.T) { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelTrace, true))) // seed is a helper tumpe to seed an initial state db and pool type seed struct { diff --git a/eth/catalyst/api_test.go b/eth/catalyst/api_test.go index 59f44fafea..c875c485dd 100644 --- a/eth/catalyst/api_test.go +++ b/eth/catalyst/api_test.go @@ -1562,7 +1562,7 @@ func TestBlockToPayloadWithBlobs(t *testing.T) { // This checks that beaconRoot is applied to the state from the engine API. func TestParentBeaconBlockRoot(t *testing.T) { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(colorable.NewColorableStderr(), log.LevelTrace, true))) genesis, blocks := generateMergeChain(10, true) diff --git a/eth/downloader/queue_test.go b/eth/downloader/queue_test.go index a8b1b45e00..50b9031a27 100644 --- a/eth/downloader/queue_test.go +++ b/eth/downloader/queue_test.go @@ -20,6 +20,7 @@ import ( "fmt" "math/big" "math/rand" + "os" "sync" "testing" "time" @@ -31,6 +32,7 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/trie" + "golang.org/x/exp/slog" ) // makeChain creates a chain of n blocks starting at and including parent. @@ -271,7 +273,7 @@ func XTestDelivery(t *testing.T) { world.chain = blo world.progress(10) if false { - log.Root().SetHandler(log.StdoutHandler) + log.SetDefault(log.NewLogger(slog.NewTextHandler(os.Stdout, nil))) } q := newQueue(10, 10) var wg sync.WaitGroup diff --git a/go.mod b/go.mod index 042d7155be..75c2b899d6 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,6 @@ require ( github.com/fsnotify/fsnotify v1.6.0 github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 - github.com/go-stack/stack v1.8.1 github.com/gofrs/flock v0.8.1 github.com/golang-jwt/jwt/v4 v4.5.0 github.com/golang/protobuf v1.5.3 @@ -64,13 +63,13 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 github.com/urfave/cli/v2 v2.25.7 go.uber.org/automaxprocs v1.5.2 - golang.org/x/crypto v0.14.0 - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 - golang.org/x/sync v0.4.0 - golang.org/x/sys v0.13.0 - golang.org/x/text v0.13.0 + golang.org/x/crypto v0.15.0 + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa + golang.org/x/sync v0.5.0 + golang.org/x/sys v0.14.0 + golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 - golang.org/x/tools v0.13.0 + golang.org/x/tools v0.15.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -136,8 +135,8 @@ require ( github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.17.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.18.0 // indirect google.golang.org/protobuf v1.27.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect diff --git a/go.sum b/go.sum index d5e7901e5a..f89adbe571 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,6 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -616,8 +614,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -628,8 +626,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -651,8 +649,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -692,8 +690,8 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -712,8 +710,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -776,8 +774,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -790,8 +788,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -846,8 +844,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/internal/debug/api.go b/internal/debug/api.go index 42d0fa15ed..482989e0d0 100644 --- a/internal/debug/api.go +++ b/internal/debug/api.go @@ -37,6 +37,7 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/hashicorp/go-bexpr" + "golang.org/x/exp/slog" ) // Handler is the global debugging handler. @@ -56,7 +57,7 @@ type HandlerT struct { // Verbosity sets the log verbosity ceiling. The verbosity of individual packages // and source files can be raised using Vmodule. func (*HandlerT) Verbosity(level int) { - glogger.Verbosity(log.Lvl(level)) + glogger.Verbosity(slog.Level(level)) } // Vmodule sets the log verbosity pattern. See package log for details on the @@ -65,12 +66,6 @@ func (*HandlerT) Vmodule(pattern string) error { return glogger.Vmodule(pattern) } -// BacktraceAt sets the log backtrace location. See package log for details on -// the pattern syntax. -func (*HandlerT) BacktraceAt(location string) error { - return glogger.BacktraceAt(location) -} - // MemStats returns detailed runtime memory statistics. func (*HandlerT) MemStats() *runtime.MemStats { s := new(runtime.MemStats) diff --git a/internal/debug/flags.go b/internal/debug/flags.go index 4f0f5fe860..23e4745e8c 100644 --- a/internal/debug/flags.go +++ b/internal/debug/flags.go @@ -34,6 +34,7 @@ import ( "github.com/mattn/go-colorable" "github.com/mattn/go-isatty" "github.com/urfave/cli/v2" + "golang.org/x/exp/slog" "gopkg.in/natefinch/lumberjack.v2" ) @@ -75,17 +76,6 @@ var ( Usage: "Write logs to a file", Category: flags.LoggingCategory, } - backtraceAtFlag = &cli.StringFlag{ - Name: "log.backtrace", - Usage: "Request a stack trace at a specific logging statement (e.g. \"block.go:271\")", - Value: "", - Category: flags.LoggingCategory, - } - debugFlag = &cli.BoolFlag{ - Name: "log.debug", - Usage: "Prepends log messages with call-site location (file and line number)", - Category: flags.LoggingCategory, - } logRotateFlag = &cli.BoolFlag{ Name: "log.rotate", Usage: "Enables log file rotation", @@ -160,8 +150,6 @@ var Flags = []cli.Flag{ verbosityFlag, logVmoduleFlag, vmoduleFlag, - backtraceAtFlag, - debugFlag, logjsonFlag, logFormatFlag, logFileFlag, @@ -180,45 +168,34 @@ var Flags = []cli.Flag{ } var ( - glogger *log.GlogHandler - logOutputStream log.Handler + glogger *log.GlogHandler + logOutputFile io.WriteCloser + defaultTerminalHandler *log.TerminalHandler ) func init() { - glogger = log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) + defaultTerminalHandler = log.NewTerminalHandler(os.Stderr, false) + glogger = log.NewGlogHandler(defaultTerminalHandler) glogger.Verbosity(log.LvlInfo) - log.Root().SetHandler(glogger) + log.SetDefault(log.NewLogger(glogger)) +} + +func ResetLogging() { + if defaultTerminalHandler != nil { + defaultTerminalHandler.ResetFieldPadding() + } } // Setup initializes profiling and logging based on the CLI flags. // It should be called as early as possible in the program. func Setup(ctx *cli.Context) error { var ( - logfmt log.Format - output = io.Writer(os.Stderr) - logFmtFlag = ctx.String(logFormatFlag.Name) + handler slog.Handler + terminalOutput = io.Writer(os.Stderr) + output io.Writer + logFmtFlag = ctx.String(logFormatFlag.Name) ) - switch { - case ctx.Bool(logjsonFlag.Name): - // Retain backwards compatibility with `--log.json` flag if `--log.format` not set - defer log.Warn("The flag '--log.json' is deprecated, please use '--log.format=json' instead") - logfmt = log.JSONFormat() - case logFmtFlag == "json": - logfmt = log.JSONFormat() - case logFmtFlag == "logfmt": - logfmt = log.LogfmtFormat() - case logFmtFlag == "", logFmtFlag == "terminal": - useColor := (isatty.IsTerminal(os.Stderr.Fd()) || isatty.IsCygwinTerminal(os.Stderr.Fd())) && os.Getenv("TERM") != "dumb" - if useColor { - output = colorable.NewColorableStderr() - } - logfmt = log.TerminalFormat(useColor) - default: - // Unknown log format specified - return fmt.Errorf("unknown log format: %v", ctx.String(logFormatFlag.Name)) - } var ( - ostream = log.StreamHandler(output, logfmt) logFile = ctx.String(logFileFlag.Name) rotation = ctx.Bool(logRotateFlag.Name) ) @@ -241,27 +218,55 @@ func Setup(ctx *cli.Context) error { } else { context = append(context, "location", filepath.Join(os.TempDir(), "geth-lumberjack.log")) } - lumberWriter := &lumberjack.Logger{ + logOutputFile = &lumberjack.Logger{ Filename: logFile, MaxSize: ctx.Int(logMaxSizeMBsFlag.Name), MaxBackups: ctx.Int(logMaxBackupsFlag.Name), MaxAge: ctx.Int(logMaxAgeFlag.Name), Compress: ctx.Bool(logCompressFlag.Name), } - ostream = log.StreamHandler(io.MultiWriter(output, lumberWriter), logfmt) + output = io.MultiWriter(terminalOutput, logOutputFile) } else if logFile != "" { - f, err := os.OpenFile(logFile, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) - if err != nil { + var err error + if logOutputFile, err = os.OpenFile(logFile, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644); err != nil { return err } - ostream = log.StreamHandler(io.MultiWriter(output, f), logfmt) + output = io.MultiWriter(logOutputFile, terminalOutput) context = append(context, "location", logFile) + } else { + output = terminalOutput } - glogger.SetHandler(ostream) + + switch { + case ctx.Bool(logjsonFlag.Name): + // Retain backwards compatibility with `--log.json` flag if `--log.format` not set + defer log.Warn("The flag '--log.json' is deprecated, please use '--log.format=json' instead") + handler = log.JSONHandler(output) + case logFmtFlag == "json": + handler = log.JSONHandler(output) + case logFmtFlag == "logfmt": + handler = log.LogfmtHandler(output) + case logFmtFlag == "", logFmtFlag == "terminal": + useColor := (isatty.IsTerminal(os.Stderr.Fd()) || isatty.IsCygwinTerminal(os.Stderr.Fd())) && os.Getenv("TERM") != "dumb" + if useColor { + terminalOutput = colorable.NewColorableStderr() + if logOutputFile != nil { + output = io.MultiWriter(logOutputFile, terminalOutput) + } else { + output = terminalOutput + } + } + handler = log.NewTerminalHandler(output, useColor) + default: + // Unknown log format specified + return fmt.Errorf("unknown log format: %v", ctx.String(logFormatFlag.Name)) + } + + glogger = log.NewGlogHandler(handler) // logging - verbosity := ctx.Int(verbosityFlag.Name) - glogger.Verbosity(log.Lvl(verbosity)) + verbosity := log.FromLegacyLevel(ctx.Int(verbosityFlag.Name)) + glogger.Verbosity(verbosity) vmodule := ctx.String(logVmoduleFlag.Name) if vmodule == "" { // Retain backwards compatibility with `--vmodule` flag if `--log.vmodule` not set @@ -272,16 +277,7 @@ func Setup(ctx *cli.Context) error { } glogger.Vmodule(vmodule) - debug := ctx.Bool(debugFlag.Name) - if ctx.IsSet(debugFlag.Name) { - debug = ctx.Bool(debugFlag.Name) - } - log.PrintOrigins(debug) - - backtrace := ctx.String(backtraceAtFlag.Name) - glogger.BacktraceAt(backtrace) - - log.Root().SetHandler(glogger) + log.SetDefault(log.NewLogger(glogger)) // profiling, tracing runtime.MemProfileRate = memprofilerateFlag.Value @@ -341,8 +337,8 @@ func StartPProf(address string, withMetrics bool) { func Exit() { Handler.StopCPUProfile() Handler.StopGoTrace() - if closer, ok := logOutputStream.(io.Closer); ok { - closer.Close() + if logOutputFile != nil { + logOutputFile.Close() } } diff --git a/internal/testlog/testlog.go b/internal/testlog/testlog.go index 684339f16d..68b9fb19f8 100644 --- a/internal/testlog/testlog.go +++ b/internal/testlog/testlog.go @@ -18,26 +18,19 @@ package testlog import ( + "bytes" + "context" + "fmt" "sync" "testing" "github.com/ethereum/go-ethereum/log" + "golang.org/x/exp/slog" ) -// Handler returns a log handler which logs to the unit test log of t. -func Handler(t *testing.T, level log.Lvl) log.Handler { - return log.LvlFilterHandler(level, &handler{t, log.TerminalFormat(false)}) -} - -type handler struct { - t *testing.T - fmt log.Format -} - -func (h *handler) Log(r *log.Record) error { - h.t.Logf("%s", h.fmt.Format(r)) - return nil -} +const ( + termTimeFormat = "01-02|15:04:05.000" +) // logger implements log.Logger such that all output goes to the unit test log via // t.Logf(). All methods in between logger.Trace, logger.Debug, etc. are marked as test @@ -51,27 +44,62 @@ type logger struct { } type bufHandler struct { - buf []*log.Record - fmt log.Format + buf []slog.Record + attrs []slog.Attr + level slog.Level } -func (h *bufHandler) Log(r *log.Record) error { +func (h *bufHandler) Handle(_ context.Context, r slog.Record) error { h.buf = append(h.buf, r) return nil } +func (h *bufHandler) Enabled(_ context.Context, lvl slog.Level) bool { + return lvl <= h.level +} + +func (h *bufHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + records := make([]slog.Record, len(h.buf)) + copy(records[:], h.buf[:]) + return &bufHandler{ + records, + append(h.attrs, attrs...), + h.level, + } +} + +func (h *bufHandler) WithGroup(_ string) slog.Handler { + panic("not implemented") +} + // Logger returns a logger which logs to the unit test log of t. -func Logger(t *testing.T, level log.Lvl) log.Logger { - l := &logger{ +func Logger(t *testing.T, level slog.Level) log.Logger { + handler := bufHandler{ + []slog.Record{}, + []slog.Attr{}, + level, + } + return &logger{ + t: t, + l: log.NewLogger(&handler), + mu: new(sync.Mutex), + h: &handler, + } +} + +// LoggerWithHandler returns +func LoggerWithHandler(t *testing.T, handler slog.Handler) log.Logger { + var bh bufHandler + return &logger{ t: t, - l: log.New(), + l: log.NewLogger(handler), mu: new(sync.Mutex), - h: &bufHandler{fmt: log.TerminalFormat(false)}, + h: &bh, } - l.l.SetHandler(log.LvlFilterHandler(level, l.h)) - return l } +func (l *logger) Write(level slog.Level, msg string, ctx ...interface{}) {} + func (l *logger) Trace(msg string, ctx ...interface{}) { l.t.Helper() l.mu.Lock() @@ -80,6 +108,14 @@ func (l *logger) Trace(msg string, ctx ...interface{}) { l.flush() } +func (l *logger) Log(level slog.Level, msg string, ctx ...interface{}) { + l.t.Helper() + l.mu.Lock() + defer l.mu.Unlock() + l.l.Log(level, msg, ctx...) + l.flush() +} + func (l *logger) Debug(msg string, ctx ...interface{}) { l.t.Helper() l.mu.Lock() @@ -120,23 +156,45 @@ func (l *logger) Crit(msg string, ctx ...interface{}) { l.flush() } -func (l *logger) New(ctx ...interface{}) log.Logger { - return &logger{l.t, l.l.New(ctx...), l.mu, l.h} +func (l *logger) With(ctx ...interface{}) log.Logger { + return &logger{l.t, l.l.With(ctx...), l.mu, l.h} } -func (l *logger) GetHandler() log.Handler { - return l.l.GetHandler() +func (l *logger) New(ctx ...interface{}) log.Logger { + return l.With(ctx...) } -func (l *logger) SetHandler(h log.Handler) { - l.l.SetHandler(h) +// terminalFormat formats a message similarly to the NewTerminalHandler in the log package. +// The difference is that terminalFormat does not escape messages/attributes and does not pad attributes. +func (h *bufHandler) terminalFormat(r slog.Record) string { + buf := &bytes.Buffer{} + lvl := log.LevelAlignedString(r.Level) + attrs := []slog.Attr{} + r.Attrs(func(attr slog.Attr) bool { + attrs = append(attrs, attr) + return true + }) + + attrs = append(h.attrs, attrs...) + + fmt.Fprintf(buf, "%s[%s] %s ", lvl, r.Time.Format(termTimeFormat), r.Message) + if length := len(r.Message); length < 40 { + buf.Write(bytes.Repeat([]byte{' '}, 40-length)) + } + + for _, attr := range attrs { + rawVal := attr.Value.Any() + fmt.Fprintf(buf, " %s=%s", attr.Key, log.FormatLogfmtValue(rawVal, true)) + } + buf.WriteByte('\n') + return buf.String() } // flush writes all buffered messages and clears the buffer. func (l *logger) flush() { l.t.Helper() for _, r := range l.h.buf { - l.t.Logf("%s", l.h.fmt.Format(r)) + l.t.Logf("%s", l.h.terminalFormat(r)) } l.h.buf = nil } diff --git a/log/CONTRIBUTORS b/log/CONTRIBUTORS deleted file mode 100644 index a0866713be..0000000000 --- a/log/CONTRIBUTORS +++ /dev/null @@ -1,11 +0,0 @@ -Contributors to log15: - -- Aaron L -- Alan Shreve -- Chris Hines -- Ciaran Downey -- Dmitry Chestnykh -- Evan Shaw -- Péter Szilágyi -- Trevor Gattis -- Vincent Vanackere diff --git a/log/LICENSE b/log/LICENSE deleted file mode 100644 index 5f0d1fb6a7..0000000000 --- a/log/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2014 Alan Shreve - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/log/README.md b/log/README.md deleted file mode 100644 index 47426806dd..0000000000 --- a/log/README.md +++ /dev/null @@ -1,77 +0,0 @@ -![obligatory xkcd](https://imgs.xkcd.com/comics/standards.png) - -# log15 [![godoc reference](https://godoc.org/github.com/inconshreveable/log15?status.png)](https://godoc.org/github.com/inconshreveable/log15) [![Build Status](https://travis-ci.org/inconshreveable/log15.svg?branch=master)](https://travis-ci.org/inconshreveable/log15) - -Package log15 provides an opinionated, simple toolkit for best-practice logging in Go (golang) that is both human and machine readable. It is modeled after the Go standard library's [`io`](https://golang.org/pkg/io/) and [`net/http`](https://golang.org/pkg/net/http/) packages and is an alternative to the standard library's [`log`](https://golang.org/pkg/log/) package. - -## Features -- A simple, easy-to-understand API -- Promotes structured logging by encouraging use of key/value pairs -- Child loggers which inherit and add their own private context -- Lazy evaluation of expensive operations -- Simple Handler interface allowing for construction of flexible, custom logging configurations with a tiny API. -- Color terminal support -- Built-in support for logging to files, streams, syslog, and the network -- Support for forking records to multiple handlers, buffering records for output, failing over from failed handler writes, + more - -## Versioning -The API of the master branch of log15 should always be considered unstable. If you want to rely on a stable API, -you must vendor the library. - -## Importing - -```go -import log "github.com/inconshreveable/log15" -``` - -## Examples - -```go -// all loggers can have key/value context -srvlog := log.New("module", "app/server") - -// all log messages can have key/value context -srvlog.Warn("abnormal conn rate", "rate", curRate, "low", lowRate, "high", highRate) - -// child loggers with inherited context -connlog := srvlog.New("raddr", c.RemoteAddr()) -connlog.Info("connection open") - -// lazy evaluation -connlog.Debug("ping remote", "latency", log.Lazy{pingRemote}) - -// flexible configuration -srvlog.SetHandler(log.MultiHandler( - log.StreamHandler(os.Stderr, log.LogfmtFormat()), - log.LvlFilterHandler( - log.LvlError, - log.Must.FileHandler("errors.json", log.JSONFormat())))) -``` - -Will result in output that looks like this: - -``` -WARN[06-17|21:58:10] abnormal conn rate module=app/server rate=0.500 low=0.100 high=0.800 -INFO[06-17|21:58:10] connection open module=app/server raddr=10.0.0.1 -``` - -## Breaking API Changes -The following commits broke API stability. This reference is intended to help you understand the consequences of updating to a newer version -of log15. - -- 57a084d014d4150152b19e4e531399a7145d1540 - Added a `Get()` method to the `Logger` interface to retrieve the current handler -- 93404652ee366648fa622b64d1e2b67d75a3094a - `Record` field `Call` changed to `stack.Call` with switch to `github.com/go-stack/stack` -- a5e7613673c73281f58e15a87d2cf0cf111e8152 - Restored `syslog.Priority` argument to the `SyslogXxx` handler constructors - -## FAQ - -### The varargs style is brittle and error prone! Can I have type safety please? -Yes. Use `log.Ctx`: - -```go -srvlog := log.New(log.Ctx{"module": "app/server"}) -srvlog.Warn("abnormal conn rate", log.Ctx{"rate": curRate, "low": lowRate, "high": highRate}) -``` - -## License -Apache diff --git a/log/README_ETHEREUM.md b/log/README_ETHEREUM.md deleted file mode 100644 index f6c42ccc03..0000000000 --- a/log/README_ETHEREUM.md +++ /dev/null @@ -1,5 +0,0 @@ -This package is a fork of https://github.com/inconshreveable/log15, with some -minor modifications required by the go-ethereum codebase: - - * Support for log level `trace` - * Modified behavior to exit on `critical` failure diff --git a/log/doc.go b/log/doc.go deleted file mode 100644 index d2e15140e4..0000000000 --- a/log/doc.go +++ /dev/null @@ -1,327 +0,0 @@ -/* -Package log15 provides an opinionated, simple toolkit for best-practice logging that is -both human and machine readable. It is modeled after the standard library's io and net/http -packages. - -This package enforces you to only log key/value pairs. Keys must be strings. Values may be -any type that you like. The default output format is logfmt, but you may also choose to use -JSON instead if that suits you. Here's how you log: - - log.Info("page accessed", "path", r.URL.Path, "user_id", user.id) - -This will output a line that looks like: - - lvl=info t=2014-05-02T16:07:23-0700 msg="page accessed" path=/org/71/profile user_id=9 - -# Getting Started - -To get started, you'll want to import the library: - - import log "github.com/inconshreveable/log15" - -Now you're ready to start logging: - - func main() { - log.Info("Program starting", "args", os.Args()) - } - -# Convention - -Because recording a human-meaningful message is common and good practice, the first argument to every -logging method is the value to the *implicit* key 'msg'. - -Additionally, the level you choose for a message will be automatically added with the key 'lvl', and so -will the current timestamp with key 't'. - -You may supply any additional context as a set of key/value pairs to the logging function. log15 allows -you to favor terseness, ordering, and speed over safety. This is a reasonable tradeoff for -logging functions. You don't need to explicitly state keys/values, log15 understands that they alternate -in the variadic argument list: - - log.Warn("size out of bounds", "low", lowBound, "high", highBound, "val", val) - -If you really do favor your type-safety, you may choose to pass a log.Ctx instead: - - log.Warn("size out of bounds", log.Ctx{"low": lowBound, "high": highBound, "val": val}) - -# Context loggers - -Frequently, you want to add context to a logger so that you can track actions associated with it. An http -request is a good example. You can easily create new loggers that have context that is automatically included -with each log line: - - requestlogger := log.New("path", r.URL.Path) - - // later - requestlogger.Debug("db txn commit", "duration", txnTimer.Finish()) - -This will output a log line that includes the path context that is attached to the logger: - - lvl=dbug t=2014-05-02T16:07:23-0700 path=/repo/12/add_hook msg="db txn commit" duration=0.12 - -# Handlers - -The Handler interface defines where log lines are printed to and how they are formatted. Handler is a -single interface that is inspired by net/http's handler interface: - - type Handler interface { - Log(r *Record) error - } - -Handlers can filter records, format them, or dispatch to multiple other Handlers. -This package implements a number of Handlers for common logging patterns that are -easily composed to create flexible, custom logging structures. - -Here's an example handler that prints logfmt output to Stdout: - - handler := log.StreamHandler(os.Stdout, log.LogfmtFormat()) - -Here's an example handler that defers to two other handlers. One handler only prints records -from the rpc package in logfmt to standard out. The other prints records at Error level -or above in JSON formatted output to the file /var/log/service.json - - handler := log.MultiHandler( - log.LvlFilterHandler(log.LvlError, log.Must.FileHandler("/var/log/service.json", log.JSONFormat())), - log.MatchFilterHandler("pkg", "app/rpc" log.StdoutHandler()) - ) - -# Logging File Names and Line Numbers - -This package implements three Handlers that add debugging information to the -context, CallerFileHandler, CallerFuncHandler and CallerStackHandler. Here's -an example that adds the source file and line number of each logging call to -the context. - - h := log.CallerFileHandler(log.StdoutHandler) - log.Root().SetHandler(h) - ... - log.Error("open file", "err", err) - -This will output a line that looks like: - - lvl=eror t=2014-05-02T16:07:23-0700 msg="open file" err="file not found" caller=data.go:42 - -Here's an example that logs the call stack rather than just the call site. - - h := log.CallerStackHandler("%+v", log.StdoutHandler) - log.Root().SetHandler(h) - ... - log.Error("open file", "err", err) - -This will output a line that looks like: - - lvl=eror t=2014-05-02T16:07:23-0700 msg="open file" err="file not found" stack="[pkg/data.go:42 pkg/cmd/main.go]" - -The "%+v" format instructs the handler to include the path of the source file -relative to the compile time GOPATH. The github.com/go-stack/stack package -documents the full list of formatting verbs and modifiers available. - -# Custom Handlers - -The Handler interface is so simple that it's also trivial to write your own. Let's create an -example handler which tries to write to one handler, but if that fails it falls back to -writing to another handler and includes the error that it encountered when trying to write -to the primary. This might be useful when trying to log over a network socket, but if that -fails you want to log those records to a file on disk. - - type BackupHandler struct { - Primary Handler - Secondary Handler - } - - func (h *BackupHandler) Log (r *Record) error { - err := h.Primary.Log(r) - if err != nil { - r.Ctx = append(ctx, "primary_err", err) - return h.Secondary.Log(r) - } - return nil - } - -This pattern is so useful that a generic version that handles an arbitrary number of Handlers -is included as part of this library called FailoverHandler. - -# Logging Expensive Operations - -Sometimes, you want to log values that are extremely expensive to compute, but you don't want to pay -the price of computing them if you haven't turned up your logging level to a high level of detail. - -This package provides a simple type to annotate a logging operation that you want to be evaluated -lazily, just when it is about to be logged, so that it would not be evaluated if an upstream Handler -filters it out. Just wrap any function which takes no arguments with the log.Lazy type. For example: - - func factorRSAKey() (factors []int) { - // return the factors of a very large number - } - - log.Debug("factors", log.Lazy{factorRSAKey}) - -If this message is not logged for any reason (like logging at the Error level), then -factorRSAKey is never evaluated. - -# Dynamic context values - -The same log.Lazy mechanism can be used to attach context to a logger which you want to be -evaluated when the message is logged, but not when the logger is created. For example, let's imagine -a game where you have Player objects: - - type Player struct { - name string - alive bool - log.Logger - } - -You always want to log a player's name and whether they're alive or dead, so when you create the player -object, you might do: - - p := &Player{name: name, alive: true} - p.Logger = log.New("name", p.name, "alive", p.alive) - -Only now, even after a player has died, the logger will still report they are alive because the logging -context is evaluated when the logger was created. By using the Lazy wrapper, we can defer the evaluation -of whether the player is alive or not to each log message, so that the log records will reflect the player's -current state no matter when the log message is written: - - p := &Player{name: name, alive: true} - isAlive := func() bool { return p.alive } - player.Logger = log.New("name", p.name, "alive", log.Lazy{isAlive}) - -# Terminal Format - -If log15 detects that stdout is a terminal, it will configure the default -handler for it (which is log.StdoutHandler) to use TerminalFormat. This format -logs records nicely for your terminal, including color-coded output based -on log level. - -# Error Handling - -Becasuse log15 allows you to step around the type system, there are a few ways you can specify -invalid arguments to the logging functions. You could, for example, wrap something that is not -a zero-argument function with log.Lazy or pass a context key that is not a string. Since logging libraries -are typically the mechanism by which errors are reported, it would be onerous for the logging functions -to return errors. Instead, log15 handles errors by making these guarantees to you: - -- Any log record containing an error will still be printed with the error explained to you as part of the log record. - -- Any log record containing an error will include the context key LOG15_ERROR, enabling you to easily -(and if you like, automatically) detect if any of your logging calls are passing bad values. - -Understanding this, you might wonder why the Handler interface can return an error value in its Log method. Handlers -are encouraged to return errors only if they fail to write their log records out to an external source like if the -syslog daemon is not responding. This allows the construction of useful handlers which cope with those failures -like the FailoverHandler. - -# Library Use - -log15 is intended to be useful for library authors as a way to provide configurable logging to -users of their library. Best practice for use in a library is to always disable all output for your logger -by default and to provide a public Logger instance that consumers of your library can configure. Like so: - - package yourlib - - import "github.com/inconshreveable/log15" - - var Log = log.New() - - func init() { - Log.SetHandler(log.DiscardHandler()) - } - -Users of your library may then enable it if they like: - - import "github.com/inconshreveable/log15" - import "example.com/yourlib" - - func main() { - handler := // custom handler setup - yourlib.Log.SetHandler(handler) - } - -# Best practices attaching logger context - -The ability to attach context to a logger is a powerful one. Where should you do it and why? -I favor embedding a Logger directly into any persistent object in my application and adding -unique, tracing context keys to it. For instance, imagine I am writing a web browser: - - type Tab struct { - url string - render *RenderingContext - // ... - - Logger - } - - func NewTab(url string) *Tab { - return &Tab { - // ... - url: url, - - Logger: log.New("url", url), - } - } - -When a new tab is created, I assign a logger to it with the url of -the tab as context so it can easily be traced through the logs. -Now, whenever we perform any operation with the tab, we'll log with its -embedded logger and it will include the tab title automatically: - - tab.Debug("moved position", "idx", tab.idx) - -There's only one problem. What if the tab url changes? We could -use log.Lazy to make sure the current url is always written, but that -would mean that we couldn't trace a tab's full lifetime through our -logs after the user navigate to a new URL. - -Instead, think about what values to attach to your loggers the -same way you think about what to use as a key in a SQL database schema. -If it's possible to use a natural key that is unique for the lifetime of the -object, do so. But otherwise, log15's ext package has a handy RandId -function to let you generate what you might call "surrogate keys" -They're just random hex identifiers to use for tracing. Back to our -Tab example, we would prefer to set up our Logger like so: - - import logext "github.com/inconshreveable/log15/ext" - - t := &Tab { - // ... - url: url, - } - - t.Logger = log.New("id", logext.RandId(8), "url", log.Lazy{t.getUrl}) - return t - -Now we'll have a unique traceable identifier even across loading new urls, but -we'll still be able to see the tab's current url in the log messages. - -# Must - -For all Handler functions which can return an error, there is a version of that -function which will return no error but panics on failure. They are all available -on the Must object. For example: - - log.Must.FileHandler("/path", log.JSONFormat) - log.Must.NetHandler("tcp", ":1234", log.JSONFormat) - -# Inspiration and Credit - -All of the following excellent projects inspired the design of this library: - -code.google.com/p/log4go - -github.com/op/go-logging - -github.com/technoweenie/grohl - -github.com/Sirupsen/logrus - -github.com/kr/logfmt - -github.com/spacemonkeygo/spacelog - -golang's stdlib, notably io and net/http - -# The Name - -https://xkcd.com/927/ -*/ -package log diff --git a/log/format.go b/log/format.go index 2fd1f28558..5cbbe3341e 100644 --- a/log/format.go +++ b/log/format.go @@ -2,18 +2,15 @@ package log import ( "bytes" - "encoding/json" "fmt" "math/big" "reflect" "strconv" - "strings" - "sync" - "sync/atomic" "time" "unicode/utf8" "github.com/holiman/uint256" + "golang.org/x/exp/slog" ) const ( @@ -24,61 +21,19 @@ const ( termCtxMaxPadding = 40 ) -// ResetGlobalState resets the fieldPadding, which is useful for producing -// predictable output. -func ResetGlobalState() { - fieldPaddingLock.Lock() - fieldPadding = make(map[string]int) - fieldPaddingLock.Unlock() -} - -// locationTrims are trimmed for display to avoid unwieldy log lines. -var locationTrims = []string{ - "github.com/ethereum/go-ethereum/", -} - -// PrintOrigins sets or unsets log location (file:line) printing for terminal -// format output. -func PrintOrigins(print bool) { - locationEnabled.Store(print) - if print { - stackEnabled.Store(true) - } -} - -// stackEnabled is an atomic flag controlling whether the log handler needs -// to store the callsite stack. This is needed in case any handler wants to -// print locations (locationEnabled), use vmodule, or print full stacks (BacktraceAt). -var stackEnabled atomic.Bool - -// locationEnabled is an atomic flag controlling whether the terminal formatter -// should append the log locations too when printing entries. -var locationEnabled atomic.Bool - -// locationLength is the maxmimum path length encountered, which all logs are -// padded to to aid in alignment. -var locationLength atomic.Uint32 - -// fieldPadding is a global map with maximum field value lengths seen until now -// to allow padding log contexts in a bit smarter way. -var fieldPadding = make(map[string]int) - -// fieldPaddingLock is a global mutex protecting the field padding map. -var fieldPaddingLock sync.RWMutex - type Format interface { - Format(r *Record) []byte + Format(r slog.Record) []byte } // FormatFunc returns a new Format object which uses // the given function to perform record formatting. -func FormatFunc(f func(*Record) []byte) Format { +func FormatFunc(f func(slog.Record) []byte) Format { return formatFunc(f) } -type formatFunc func(*Record) []byte +type formatFunc func(slog.Record) []byte -func (f formatFunc) Format(r *Record) []byte { +func (f formatFunc) Format(r slog.Record) []byte { return f(r) } @@ -89,263 +44,100 @@ type TerminalStringer interface { TerminalString() string } -// TerminalFormat formats log records optimized for human readability on -// a terminal with color-coded level output and terser human friendly timestamp. -// This format should only be used for interactive programs or while developing. -// -// [LEVEL] [TIME] MESSAGE key=value key=value ... -// -// Example: -// -// [DBUG] [May 16 20:58:45] remove route ns=haproxy addr=127.0.0.1:50002 -func TerminalFormat(usecolor bool) Format { - return FormatFunc(func(r *Record) []byte { - msg := escapeMessage(r.Msg) - var color = 0 - if usecolor { - switch r.Lvl { - case LvlCrit: - color = 35 - case LvlError: - color = 31 - case LvlWarn: - color = 33 - case LvlInfo: - color = 32 - case LvlDebug: - color = 36 - case LvlTrace: - color = 34 - } +func (h *TerminalHandler) TerminalFormat(r slog.Record, usecolor bool) []byte { + msg := escapeMessage(r.Message) + var color = 0 + if usecolor { + switch r.Level { + case LevelCrit: + color = 35 + case slog.LevelError: + color = 31 + case slog.LevelWarn: + color = 33 + case slog.LevelInfo: + color = 32 + case slog.LevelDebug: + color = 36 + case LevelTrace: + color = 34 } + } - b := &bytes.Buffer{} - lvl := r.Lvl.AlignedString() - if locationEnabled.Load() { - // Log origin printing was requested, format the location path and line number - location := fmt.Sprintf("%+v", r.Call) - for _, prefix := range locationTrims { - location = strings.TrimPrefix(location, prefix) - } - // Maintain the maximum location length for fancyer alignment - align := int(locationLength.Load()) - if align < len(location) { - align = len(location) - locationLength.Store(uint32(align)) - } - padding := strings.Repeat(" ", align-len(location)) + b := &bytes.Buffer{} + lvl := LevelAlignedString(r.Level) + if color > 0 { + fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %s ", color, lvl, r.Time.Format(termTimeFormat), msg) + } else { + fmt.Fprintf(b, "%s[%s] %s ", lvl, r.Time.Format(termTimeFormat), msg) + } + // try to justify the log output for short messages + length := utf8.RuneCountInString(msg) + if r.NumAttrs() > 0 && length < termMsgJust { + b.Write(bytes.Repeat([]byte{' '}, termMsgJust-length)) + } + // print the keys logfmt style + h.logfmt(b, r, color) - // Assemble and print the log heading - if color > 0 { - fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s|%s]%s %s ", color, lvl, r.Time.Format(termTimeFormat), location, padding, msg) - } else { - fmt.Fprintf(b, "%s[%s|%s]%s %s ", lvl, r.Time.Format(termTimeFormat), location, padding, msg) - } - } else { - if color > 0 { - fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %s ", color, lvl, r.Time.Format(termTimeFormat), msg) - } else { - fmt.Fprintf(b, "%s[%s] %s ", lvl, r.Time.Format(termTimeFormat), msg) - } - } - // try to justify the log output for short messages - length := utf8.RuneCountInString(msg) - if len(r.Ctx) > 0 && length < termMsgJust { - b.Write(bytes.Repeat([]byte{' '}, termMsgJust-length)) - } - // print the keys logfmt style - logfmt(b, r.Ctx, color, true) - return b.Bytes() - }) + return b.Bytes() } -// LogfmtFormat prints records in logfmt format, an easy machine-parseable but human-readable -// format for key/value pairs. -// -// For more details see: http://godoc.org/github.com/kr/logfmt -func LogfmtFormat() Format { - return FormatFunc(func(r *Record) []byte { - common := []interface{}{r.KeyNames.Time, r.Time, r.KeyNames.Lvl, r.Lvl, r.KeyNames.Msg, r.Msg} - buf := &bytes.Buffer{} - logfmt(buf, append(common, r.Ctx...), 0, false) - return buf.Bytes() +func (h *TerminalHandler) logfmt(buf *bytes.Buffer, r slog.Record, color int) { + attrs := []slog.Attr{} + r.Attrs(func(attr slog.Attr) bool { + attrs = append(attrs, attr) + return true }) -} -func logfmt(buf *bytes.Buffer, ctx []interface{}, color int, term bool) { - for i := 0; i < len(ctx); i += 2 { + attrs = append(h.attrs, attrs...) + + for i, attr := range attrs { if i != 0 { buf.WriteByte(' ') } - k, ok := ctx[i].(string) - v := formatLogfmtValue(ctx[i+1], term) - if !ok { - k, v = errorKey, fmt.Sprintf("%+T is not a string key", ctx[i]) - } else { - k = escapeString(k) - } + key := escapeString(attr.Key) + rawVal := attr.Value.Any() + val := FormatLogfmtValue(rawVal, true) // XXX: we should probably check that all of your key bytes aren't invalid - fieldPaddingLock.RLock() - padding := fieldPadding[k] - fieldPaddingLock.RUnlock() + // TODO (jwasinger) above comment was from log15 code. what does it mean? check that key bytes are ascii characters? + padding := h.fieldPadding[key] - length := utf8.RuneCountInString(v) + length := utf8.RuneCountInString(val) if padding < length && length <= termCtxMaxPadding { padding = length - - fieldPaddingLock.Lock() - fieldPadding[k] = padding - fieldPaddingLock.Unlock() + h.fieldPadding[key] = padding } if color > 0 { - fmt.Fprintf(buf, "\x1b[%dm%s\x1b[0m=", color, k) + fmt.Fprintf(buf, "\x1b[%dm%s\x1b[0m=", color, key) } else { - buf.WriteString(k) + buf.WriteString(key) buf.WriteByte('=') } - buf.WriteString(v) - if i < len(ctx)-2 && padding > length { + buf.WriteString(val) + if i < r.NumAttrs()-1 && padding > length { buf.Write(bytes.Repeat([]byte{' '}, padding-length)) } } buf.WriteByte('\n') } -// JSONFormat formats log records as JSON objects separated by newlines. -// It is the equivalent of JSONFormatEx(false, true). -func JSONFormat() Format { - return JSONFormatEx(false, true) -} - -// JSONFormatOrderedEx formats log records as JSON arrays. If pretty is true, -// records will be pretty-printed. If lineSeparated is true, records -// will be logged with a new line between each record. -func JSONFormatOrderedEx(pretty, lineSeparated bool) Format { - jsonMarshal := json.Marshal - if pretty { - jsonMarshal = func(v interface{}) ([]byte, error) { - return json.MarshalIndent(v, "", " ") - } - } - return FormatFunc(func(r *Record) []byte { - props := map[string]interface{}{ - r.KeyNames.Time: r.Time, - r.KeyNames.Lvl: r.Lvl.String(), - r.KeyNames.Msg: r.Msg, - } - - ctx := make([]string, len(r.Ctx)) - for i := 0; i < len(r.Ctx); i += 2 { - if k, ok := r.Ctx[i].(string); ok { - ctx[i] = k - ctx[i+1] = formatLogfmtValue(r.Ctx[i+1], true) - } else { - props[errorKey] = fmt.Sprintf("%+T is not a string key,", r.Ctx[i]) - } - } - props[r.KeyNames.Ctx] = ctx - - b, err := jsonMarshal(props) - if err != nil { - b, _ = jsonMarshal(map[string]string{ - errorKey: err.Error(), - }) - return b - } - if lineSeparated { - b = append(b, '\n') - } - return b - }) -} - -// JSONFormatEx formats log records as JSON objects. If pretty is true, -// records will be pretty-printed. If lineSeparated is true, records -// will be logged with a new line between each record. -func JSONFormatEx(pretty, lineSeparated bool) Format { - jsonMarshal := json.Marshal - if pretty { - jsonMarshal = func(v interface{}) ([]byte, error) { - return json.MarshalIndent(v, "", " ") - } +// formatValue formats a value for serialization +func FormatLogfmtValue(value interface{}, term bool) (result string) { + if value == nil { + return "" } - - return FormatFunc(func(r *Record) []byte { - props := map[string]interface{}{ - r.KeyNames.Time: r.Time, - r.KeyNames.Lvl: r.Lvl.String(), - r.KeyNames.Msg: r.Msg, - } - - for i := 0; i < len(r.Ctx); i += 2 { - k, ok := r.Ctx[i].(string) - if !ok { - props[errorKey] = fmt.Sprintf("%+T is not a string key", r.Ctx[i]) - } else { - props[k] = formatJSONValue(r.Ctx[i+1]) - } - } - - b, err := jsonMarshal(props) - if err != nil { - b, _ = jsonMarshal(map[string]string{ - errorKey: err.Error(), - }) - return b - } - - if lineSeparated { - b = append(b, '\n') - } - - return b - }) -} - -func formatShared(value interface{}) (result interface{}) { defer func() { if err := recover(); err != nil { if v := reflect.ValueOf(value); v.Kind() == reflect.Ptr && v.IsNil() { - result = "nil" + result = "" } else { panic(err) } } }() - switch v := value.(type) { - case time.Time: - return v.Format(timeFormat) - - case error: - return v.Error() - - case fmt.Stringer: - return v.String() - - default: - return v - } -} - -func formatJSONValue(value interface{}) interface{} { - value = formatShared(value) - switch value.(type) { - case int, int8, int16, int32, int64, float32, float64, uint, uint8, uint16, uint32, uint64, string: - return value - default: - return fmt.Sprintf("%+v", value) - } -} - -// formatValue formats a value for serialization -func formatLogfmtValue(value interface{}, term bool) string { - if value == nil { - return "nil" - } - switch v := value.(type) { case time.Time: // Performance optimization: No need for escaping since the provided @@ -375,8 +167,11 @@ func formatLogfmtValue(value interface{}, term bool) string { return escapeString(s.TerminalString()) } } - value = formatShared(value) switch v := value.(type) { + case error: + return escapeString(v.Error()) + case fmt.Stringer: + return escapeString(v.String()) case bool: return strconv.FormatBool(v) case float32: diff --git a/log/handler.go b/log/handler.go index 4a0cf578f6..ef1bcc1992 100644 --- a/log/handler.go +++ b/log/handler.go @@ -1,375 +1,223 @@ package log import ( + "context" "fmt" "io" - "net" - "os" + "math/big" "reflect" "sync" - "sync/atomic" + "time" - "github.com/go-stack/stack" + "github.com/holiman/uint256" + "golang.org/x/exp/slog" ) -// Handler defines where and how log records are written. -// A Logger prints its log records by writing to a Handler. -// Handlers are composable, providing you great flexibility in combining -// them to achieve the logging structure that suits your applications. -type Handler interface { - Log(r *Record) error -} - -// FuncHandler returns a Handler that logs records with the given -// function. -func FuncHandler(fn func(r *Record) error) Handler { - return funcHandler(fn) -} - -type funcHandler func(r *Record) error - -func (h funcHandler) Log(r *Record) error { - return h(r) -} - -// StreamHandler writes log records to an io.Writer -// with the given format. StreamHandler can be used -// to easily begin writing log records to other -// outputs. +// Lazy allows you to defer calculation of a logged value that is expensive +// to compute until it is certain that it must be evaluated with the given filters. // -// StreamHandler wraps itself with LazyHandler and SyncHandler -// to evaluate Lazy objects and perform safe concurrent writes. -func StreamHandler(wr io.Writer, fmtr Format) Handler { - h := FuncHandler(func(r *Record) error { - _, err := wr.Write(fmtr.Format(r)) - return err - }) - return LazyHandler(SyncHandler(h)) +// You may wrap any function which takes no arguments to Lazy. It may return any +// number of values of any type. +type Lazy struct { + Fn interface{} } -// SyncHandler can be wrapped around a handler to guarantee that -// only a single Log operation can proceed at a time. It's necessary -// for thread-safe concurrent writes. -func SyncHandler(h Handler) Handler { - var mu sync.Mutex - return FuncHandler(func(r *Record) error { - mu.Lock() - defer mu.Unlock() - - return h.Log(r) - }) -} +func evaluateLazy(lz Lazy) (interface{}, error) { + t := reflect.TypeOf(lz.Fn) -// FileHandler returns a handler which writes log records to the give file -// using the given format. If the path -// already exists, FileHandler will append to the given file. If it does not, -// FileHandler will create the file with mode 0644. -func FileHandler(path string, fmtr Format) (Handler, error) { - f, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) - if err != nil { - return nil, err + if t.Kind() != reflect.Func { + return nil, fmt.Errorf("INVALID_LAZY, not func: %+v", lz.Fn) } - return closingHandler{f, StreamHandler(f, fmtr)}, nil -} -// NetHandler opens a socket to the given address and writes records -// over the connection. -func NetHandler(network, addr string, fmtr Format) (Handler, error) { - conn, err := net.Dial(network, addr) - if err != nil { - return nil, err + if t.NumIn() > 0 { + return nil, fmt.Errorf("INVALID_LAZY, func takes args: %+v", lz.Fn) } - return closingHandler{conn, StreamHandler(conn, fmtr)}, nil -} - -// XXX: closingHandler is essentially unused at the moment -// it's meant for a future time when the Handler interface supports -// a possible Close() operation -type closingHandler struct { - io.WriteCloser - Handler -} + if t.NumOut() == 0 { + return nil, fmt.Errorf("INVALID_LAZY, no func return val: %+v", lz.Fn) + } -func (h *closingHandler) Close() error { - return h.WriteCloser.Close() + value := reflect.ValueOf(lz.Fn) + results := value.Call([]reflect.Value{}) + if len(results) == 1 { + return results[0].Interface(), nil + } + values := make([]interface{}, len(results)) + for i, v := range results { + values[i] = v.Interface() + } + return values, nil } -// CallerFileHandler returns a Handler that adds the line number and file of -// the calling function to the context with key "caller". -func CallerFileHandler(h Handler) Handler { - return FuncHandler(func(r *Record) error { - r.Ctx = append(r.Ctx, "caller", fmt.Sprint(r.Call)) - return h.Log(r) - }) -} +type discardHandler struct{} -// CallerFuncHandler returns a Handler that adds the calling function name to -// the context with key "fn". -func CallerFuncHandler(h Handler) Handler { - return FuncHandler(func(r *Record) error { - r.Ctx = append(r.Ctx, "fn", formatCall("%+n", r.Call)) - return h.Log(r) - }) +// DiscardHandler returns a no-op handler +func DiscardHandler() slog.Handler { + return &discardHandler{} } -// This function is here to please go vet on Go < 1.8. -func formatCall(format string, c stack.Call) string { - return fmt.Sprintf(format, c) +func (h *discardHandler) Handle(_ context.Context, r slog.Record) error { + return nil } -// CallerStackHandler returns a Handler that adds a stack trace to the context -// with key "stack". The stack trace is formatted as a space separated list of -// call sites inside matching []'s. The most recent call site is listed first. -// Each call site is formatted according to format. See the documentation of -// package github.com/go-stack/stack for the list of supported formats. -func CallerStackHandler(format string, h Handler) Handler { - return FuncHandler(func(r *Record) error { - s := stack.Trace().TrimBelow(r.Call).TrimRuntime() - if len(s) > 0 { - r.Ctx = append(r.Ctx, "stack", fmt.Sprintf(format, s)) - } - return h.Log(r) - }) +func (h *discardHandler) Enabled(_ context.Context, level slog.Level) bool { + return false } -// FilterHandler returns a Handler that only writes records to the -// wrapped Handler if the given function evaluates true. For example, -// to only log records where the 'err' key is not nil: -// -// logger.SetHandler(FilterHandler(func(r *Record) bool { -// for i := 0; i < len(r.Ctx); i += 2 { -// if r.Ctx[i] == "err" { -// return r.Ctx[i+1] != nil -// } -// } -// return false -// }, h)) -func FilterHandler(fn func(r *Record) bool, h Handler) Handler { - return FuncHandler(func(r *Record) error { - if fn(r) { - return h.Log(r) - } - return nil - }) +func (h *discardHandler) WithGroup(name string) slog.Handler { + panic("not implemented") } -// MatchFilterHandler returns a Handler that only writes records -// to the wrapped Handler if the given key in the logged -// context matches the value. For example, to only log records -// from your ui package: -// -// log.MatchFilterHandler("pkg", "app/ui", log.StdoutHandler) -func MatchFilterHandler(key string, value interface{}, h Handler) Handler { - return FilterHandler(func(r *Record) (pass bool) { - switch key { - case r.KeyNames.Lvl: - return r.Lvl == value - case r.KeyNames.Time: - return r.Time == value - case r.KeyNames.Msg: - return r.Msg == value - } - - for i := 0; i < len(r.Ctx); i += 2 { - if r.Ctx[i] == key { - return r.Ctx[i+1] == value - } - } - return false - }, h) +func (h *discardHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + return &discardHandler{} } -// LvlFilterHandler returns a Handler that only writes -// records which are less than the given verbosity -// level to the wrapped Handler. For example, to only -// log Error/Crit records: -// -// log.LvlFilterHandler(log.LvlError, log.StdoutHandler) -func LvlFilterHandler(maxLvl Lvl, h Handler) Handler { - return FilterHandler(func(r *Record) (pass bool) { - return r.Lvl <= maxLvl - }, h) +type TerminalHandler struct { + mu sync.Mutex + wr io.Writer + lvl slog.Level + useColor bool + attrs []slog.Attr + // fieldPadding is a map with maximum field value lengths seen until now + // to allow padding log contexts in a bit smarter way. + fieldPadding map[string]int } -// MultiHandler dispatches any write to each of its handlers. -// This is useful for writing different types of log information -// to different locations. For example, to log to a file and -// standard error: +// NewTerminalHandler returns a handler which formats log records at all levels optimized for human readability on +// a terminal with color-coded level output and terser human friendly timestamp. +// This format should only be used for interactive programs or while developing. // -// log.MultiHandler( -// log.Must.FileHandler("/var/log/app.log", log.LogfmtFormat()), -// log.StderrHandler) -func MultiHandler(hs ...Handler) Handler { - return FuncHandler(func(r *Record) error { - for _, h := range hs { - // what to do about failures? - h.Log(r) - } - return nil - }) -} - -// FailoverHandler writes all log records to the first handler -// specified, but will failover and write to the second handler if -// the first handler has failed, and so on for all handlers specified. -// For example you might want to log to a network socket, but failover -// to writing to a file if the network fails, and then to -// standard out if the file write fails: +// [LEVEL] [TIME] MESSAGE key=value key=value ... // -// log.FailoverHandler( -// log.Must.NetHandler("tcp", ":9090", log.JSONFormat()), -// log.Must.FileHandler("/var/log/app.log", log.LogfmtFormat()), -// log.StdoutHandler) +// Example: // -// All writes that do not go to the first handler will add context with keys of -// the form "failover_err_{idx}" which explain the error encountered while -// trying to write to the handlers before them in the list. -func FailoverHandler(hs ...Handler) Handler { - return FuncHandler(func(r *Record) error { - var err error - for i, h := range hs { - err = h.Log(r) - if err == nil { - return nil - } - r.Ctx = append(r.Ctx, fmt.Sprintf("failover_err_%d", i), err) - } - - return err - }) +// [DBUG] [May 16 20:58:45] remove route ns=haproxy addr=127.0.0.1:50002 +func NewTerminalHandler(wr io.Writer, useColor bool) *TerminalHandler { + return NewTerminalHandlerWithLevel(wr, levelMaxVerbosity, useColor) +} + +// NewTerminalHandlerWithLevel returns the same handler as NewTerminalHandler but only outputs +// records which are less than or equal to the specified verbosity level. +func NewTerminalHandlerWithLevel(wr io.Writer, lvl slog.Level, useColor bool) *TerminalHandler { + return &TerminalHandler{ + wr: wr, + lvl: lvl, + useColor: useColor, + fieldPadding: make(map[string]int), + } } -// ChannelHandler writes all records to the given channel. -// It blocks if the channel is full. Useful for async processing -// of log messages, it's used by BufferedHandler. -func ChannelHandler(recs chan<- *Record) Handler { - return FuncHandler(func(r *Record) error { - recs <- r - return nil - }) +func (h *TerminalHandler) Handle(_ context.Context, r slog.Record) error { + h.mu.Lock() + defer h.mu.Unlock() + h.wr.Write(h.TerminalFormat(r, h.useColor)) + return nil } -// BufferedHandler writes all records to a buffered -// channel of the given size which flushes into the wrapped -// handler whenever it is available for writing. Since these -// writes happen asynchronously, all writes to a BufferedHandler -// never return an error and any errors from the wrapped handler are ignored. -func BufferedHandler(bufSize int, h Handler) Handler { - recs := make(chan *Record, bufSize) - go func() { - for m := range recs { - _ = h.Log(m) - } - }() - return ChannelHandler(recs) +func (h *TerminalHandler) Enabled(_ context.Context, level slog.Level) bool { + return level >= h.lvl } -// LazyHandler writes all values to the wrapped handler after evaluating -// any lazy functions in the record's context. It is already wrapped -// around StreamHandler and SyslogHandler in this library, you'll only need -// it if you write your own Handler. -func LazyHandler(h Handler) Handler { - return FuncHandler(func(r *Record) error { - // go through the values (odd indices) and reassign - // the values of any lazy fn to the result of its execution - hadErr := false - for i := 1; i < len(r.Ctx); i += 2 { - lz, ok := r.Ctx[i].(Lazy) - if ok { - v, err := evaluateLazy(lz) - if err != nil { - hadErr = true - r.Ctx[i] = err - } else { - if cs, ok := v.(stack.CallStack); ok { - v = cs.TrimBelow(r.Call).TrimRuntime() - } - r.Ctx[i] = v - } - } - } - - if hadErr { - r.Ctx = append(r.Ctx, errorKey, "bad lazy") - } - - return h.Log(r) - }) +func (h *TerminalHandler) WithGroup(name string) slog.Handler { + panic("not implemented") } -func evaluateLazy(lz Lazy) (interface{}, error) { - t := reflect.TypeOf(lz.Fn) - - if t.Kind() != reflect.Func { - return nil, fmt.Errorf("INVALID_LAZY, not func: %+v", lz.Fn) - } - - if t.NumIn() > 0 { - return nil, fmt.Errorf("INVALID_LAZY, func takes args: %+v", lz.Fn) +func (h *TerminalHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + return &TerminalHandler{ + wr: h.wr, + lvl: h.lvl, + useColor: h.useColor, + attrs: append(h.attrs, attrs...), + fieldPadding: make(map[string]int), } - - if t.NumOut() == 0 { - return nil, fmt.Errorf("INVALID_LAZY, no func return val: %+v", lz.Fn) - } - - value := reflect.ValueOf(lz.Fn) - results := value.Call([]reflect.Value{}) - if len(results) == 1 { - return results[0].Interface(), nil - } - values := make([]interface{}, len(results)) - for i, v := range results { - values[i] = v.Interface() - } - return values, nil } -// DiscardHandler reports success for all writes but does nothing. -// It is useful for dynamically disabling logging at runtime via -// a Logger's SetHandler method. -func DiscardHandler() Handler { - return FuncHandler(func(r *Record) error { - return nil - }) +// ResetFieldPadding zeroes the field-padding for all attribute pairs. +func (t *TerminalHandler) ResetFieldPadding() { + t.mu.Lock() + t.fieldPadding = make(map[string]int) + t.mu.Unlock() } -// Must provides the following Handler creation functions -// which instead of returning an error parameter only return a Handler -// and panic on failure: FileHandler, NetHandler, SyslogHandler, SyslogNetHandler -var Must muster +type leveler struct{ minLevel slog.Level } -func must(h Handler, err error) Handler { - if err != nil { - panic(err) - } - return h +func (l *leveler) Level() slog.Level { + return l.minLevel } -type muster struct{} - -func (m muster) FileHandler(path string, fmtr Format) Handler { - return must(FileHandler(path, fmtr)) +func JSONHandler(wr io.Writer) slog.Handler { + return slog.NewJSONHandler(wr, &slog.HandlerOptions{ + ReplaceAttr: builtinReplaceJSON, + }) } -func (m muster) NetHandler(network, addr string, fmtr Format) Handler { - return must(NetHandler(network, addr, fmtr)) +// LogfmtHandler returns a handler which prints records in logfmt format, an easy machine-parseable but human-readable +// format for key/value pairs. +// +// For more details see: http://godoc.org/github.com/kr/logfmt +func LogfmtHandler(wr io.Writer) slog.Handler { + return slog.NewTextHandler(wr, &slog.HandlerOptions{ + ReplaceAttr: builtinReplaceLogfmt, + }) } -// swapHandler wraps another handler that may be swapped out -// dynamically at runtime in a thread-safe fashion. -type swapHandler struct { - handler atomic.Value +// LogfmtHandlerWithLevel returns the same handler as LogfmtHandler but it only outputs +// records which are less than or equal to the specified verbosity level. +func LogfmtHandlerWithLevel(wr io.Writer, level slog.Level) slog.Handler { + return slog.NewTextHandler(wr, &slog.HandlerOptions{ + ReplaceAttr: builtinReplaceLogfmt, + Level: &leveler{level}, + }) } -func (h *swapHandler) Log(r *Record) error { - return (*h.handler.Load().(*Handler)).Log(r) +func builtinReplaceLogfmt(_ []string, attr slog.Attr) slog.Attr { + return builtinReplace(nil, attr, true) } -func (h *swapHandler) Swap(newHandler Handler) { - h.handler.Store(&newHandler) +func builtinReplaceJSON(_ []string, attr slog.Attr) slog.Attr { + return builtinReplace(nil, attr, false) } -func (h *swapHandler) Get() Handler { - return *h.handler.Load().(*Handler) +func builtinReplace(_ []string, attr slog.Attr, logfmt bool) slog.Attr { + switch attr.Key { + case slog.TimeKey: + if attr.Value.Kind() == slog.KindTime { + if logfmt { + return slog.String("t", attr.Value.Time().Format(timeFormat)) + } else { + return slog.Attr{Key: "t", Value: attr.Value} + } + } + case slog.LevelKey: + if l, ok := attr.Value.Any().(slog.Level); ok { + attr = slog.Any("lvl", LevelString(l)) + return attr + } + } + + switch v := attr.Value.Any().(type) { + case time.Time: + if logfmt { + attr = slog.String(attr.Key, v.Format(timeFormat)) + } + case *big.Int: + if v == nil { + attr.Value = slog.StringValue("") + } else { + attr.Value = slog.StringValue(v.String()) + } + case *uint256.Int: + if v == nil { + attr.Value = slog.StringValue("") + } else { + attr.Value = slog.StringValue(v.Dec()) + } + case fmt.Stringer: + if v == nil || (reflect.ValueOf(v).Kind() == reflect.Pointer && reflect.ValueOf(v).IsNil()) { + attr.Value = slog.StringValue("") + } else { + attr.Value = slog.StringValue(v.String()) + } + } + return attr } diff --git a/log/handler_glog.go b/log/handler_glog.go index afca0808b3..fb1e03c5b5 100644 --- a/log/handler_glog.go +++ b/log/handler_glog.go @@ -17,6 +17,7 @@ package log import ( + "context" "errors" "fmt" "regexp" @@ -25,54 +26,47 @@ import ( "strings" "sync" "sync/atomic" + + "golang.org/x/exp/slog" ) // errVmoduleSyntax is returned when a user vmodule pattern is invalid. var errVmoduleSyntax = errors.New("expect comma-separated list of filename=N") -// errTraceSyntax is returned when a user backtrace pattern is invalid. -var errTraceSyntax = errors.New("expect file.go:234") - // GlogHandler is a log handler that mimics the filtering features of Google's // glog logger: setting global log levels; overriding with callsite pattern // matches; and requesting backtraces at certain positions. type GlogHandler struct { - origin Handler // The origin handler this wraps + origin slog.Handler // The origin handler this wraps - level atomic.Uint32 // Current log level, atomically accessible - override atomic.Bool // Flag whether overrides are used, atomically accessible - backtrace atomic.Bool // Flag whether backtrace location is set + level atomic.Int32 // Current log level, atomically accessible + override atomic.Bool // Flag whether overrides are used, atomically accessible - patterns []pattern // Current list of patterns to override with - siteCache map[uintptr]Lvl // Cache of callsite pattern evaluations - location string // file:line location where to do a stackdump at - lock sync.RWMutex // Lock protecting the override pattern list + patterns []pattern // Current list of patterns to override with + siteCache map[uintptr]slog.Level // Cache of callsite pattern evaluations + location string // file:line location where to do a stackdump at + lock sync.RWMutex // Lock protecting the override pattern list } // NewGlogHandler creates a new log handler with filtering functionality similar // to Google's glog logger. The returned handler implements Handler. -func NewGlogHandler(h Handler) *GlogHandler { +func NewGlogHandler(h slog.Handler) *GlogHandler { return &GlogHandler{ origin: h, } } -// SetHandler updates the handler to write records to the specified sub-handler. -func (h *GlogHandler) SetHandler(nh Handler) { - h.origin = nh -} - // pattern contains a filter for the Vmodule option, holding a verbosity level // and a file pattern to match. type pattern struct { pattern *regexp.Regexp - level Lvl + level slog.Level } // Verbosity sets the glog verbosity ceiling. The verbosity of individual packages // and source files can be raised using Vmodule. -func (h *GlogHandler) Verbosity(level Lvl) { - h.level.Store(uint32(level)) +func (h *GlogHandler) Verbosity(level slog.Level) { + h.level.Store(int32(level)) } // Vmodule sets the glog verbosity pattern. @@ -108,11 +102,13 @@ func (h *GlogHandler) Vmodule(ruleset string) error { return errVmoduleSyntax } // Parse the level and if correct, assemble the filter rule - level, err := strconv.Atoi(parts[1]) + l, err := strconv.Atoi(parts[1]) if err != nil { return errVmoduleSyntax } - if level <= 0 { + level := FromLegacyLevel(l) + + if level == LevelCrit { continue // Ignore. It's harmless but no point in paying the overhead. } // Compile the rule pattern into a regular expression @@ -130,107 +126,84 @@ func (h *GlogHandler) Vmodule(ruleset string) error { matcher = matcher + "$" re, _ := regexp.Compile(matcher) - filter = append(filter, pattern{re, Lvl(level)}) + filter = append(filter, pattern{re, level}) } // Swap out the vmodule pattern for the new filter system h.lock.Lock() defer h.lock.Unlock() h.patterns = filter - h.siteCache = make(map[uintptr]Lvl) + h.siteCache = make(map[uintptr]slog.Level) h.override.Store(len(filter) != 0) - // Enable location storage (globally) - if len(h.patterns) > 0 { - stackEnabled.Store(true) - } + return nil } -// BacktraceAt sets the glog backtrace location. When set to a file and line -// number holding a logging statement, a stack trace will be written to the Info -// log whenever execution hits that statement. -// -// Unlike with Vmodule, the ".go" must be present. -func (h *GlogHandler) BacktraceAt(location string) error { - // Ensure the backtrace location contains two non-empty elements - parts := strings.Split(location, ":") - if len(parts) != 2 { - return errTraceSyntax - } - parts[0] = strings.TrimSpace(parts[0]) - parts[1] = strings.TrimSpace(parts[1]) - if len(parts[0]) == 0 || len(parts[1]) == 0 { - return errTraceSyntax - } - // Ensure the .go prefix is present and the line is valid - if !strings.HasSuffix(parts[0], ".go") { - return errTraceSyntax +func (h *GlogHandler) Enabled(ctx context.Context, lvl slog.Level) bool { + // fast-track skipping logging if override not enabled and the provided verbosity is above configured + return h.override.Load() || slog.Level(h.level.Load()) <= lvl +} + +func (h *GlogHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + h.lock.RLock() + siteCache := make(map[uintptr]slog.Level) + for k, v := range h.siteCache { + siteCache[k] = v } - if _, err := strconv.Atoi(parts[1]); err != nil { - return errTraceSyntax + h.lock.RUnlock() + + patterns := []pattern{} + patterns = append(patterns, h.patterns...) + + res := GlogHandler{ + origin: h.origin.WithAttrs(attrs), + patterns: patterns, + siteCache: siteCache, + location: h.location, } - // All seems valid - h.lock.Lock() - defer h.lock.Unlock() - h.location = location - h.backtrace.Store(len(location) > 0) - // Enable location storage (globally) - stackEnabled.Store(true) - return nil + res.level.Store(h.level.Load()) + res.override.Store(h.override.Load()) + return &res +} + +func (h *GlogHandler) WithGroup(name string) slog.Handler { + panic("not implemented") } // Log implements Handler.Log, filtering a log record through the global, local // and backtrace filters, finally emitting it if either allow it through. -func (h *GlogHandler) Log(r *Record) error { - // If backtracing is requested, check whether this is the callsite - if h.backtrace.Load() { - // Everything below here is slow. Although we could cache the call sites the - // same way as for vmodule, backtracing is so rare it's not worth the extra - // complexity. - h.lock.RLock() - match := h.location == r.Call.String() - h.lock.RUnlock() - - if match { - // Callsite matched, raise the log level to info and gather the stacks - r.Lvl = LvlInfo - - buf := make([]byte, 1024*1024) - buf = buf[:runtime.Stack(buf, true)] - r.Msg += "\n\n" + string(buf) - } - } +func (h *GlogHandler) Handle(_ context.Context, r slog.Record) error { // If the global log level allows, fast track logging - if h.level.Load() >= uint32(r.Lvl) { - return h.origin.Log(r) - } - // If no local overrides are present, fast track skipping - if !h.override.Load() { - return nil + if slog.Level(h.level.Load()) <= r.Level { + return h.origin.Handle(context.Background(), r) } + // Check callsite cache for previously calculated log levels h.lock.RLock() - lvl, ok := h.siteCache[r.Call.Frame().PC] + lvl, ok := h.siteCache[r.PC] h.lock.RUnlock() // If we didn't cache the callsite yet, calculate it if !ok { h.lock.Lock() + + fs := runtime.CallersFrames([]uintptr{r.PC}) + frame, _ := fs.Next() + for _, rule := range h.patterns { - if rule.pattern.MatchString(fmt.Sprintf("%+s", r.Call)) { - h.siteCache[r.Call.Frame().PC], lvl, ok = rule.level, rule.level, true - break + if rule.pattern.MatchString(fmt.Sprintf("%+s", frame.File)) { + h.siteCache[r.PC], lvl, ok = rule.level, rule.level, true } } // If no rule matched, remember to drop log the next time if !ok { - h.siteCache[r.Call.Frame().PC] = 0 + h.siteCache[r.PC] = 0 } h.lock.Unlock() } - if lvl >= r.Lvl { - return h.origin.Log(r) + if lvl <= r.Level { + return h.origin.Handle(context.Background(), r) } return nil } diff --git a/log/logger.go b/log/logger.go index 42e7e375d0..3e227745ad 100644 --- a/log/logger.go +++ b/log/logger.go @@ -1,294 +1,222 @@ package log import ( - "fmt" + "context" + "math" "os" + "runtime" "time" - "github.com/go-stack/stack" + "golang.org/x/exp/slog" ) -const timeKey = "t" -const lvlKey = "lvl" -const msgKey = "msg" -const ctxKey = "ctx" -const errorKey = "LOG15_ERROR" -const skipLevel = 2 +const errorKey = "LOG_ERROR" -type Lvl int +const ( + legacyLevelCrit = iota + legacyLevelError + legacyLevelWarn + legacyLevelInfo + legacyLevelDebug + legacyLevelTrace +) const ( - LvlCrit Lvl = iota - LvlError - LvlWarn - LvlInfo - LvlDebug - LvlTrace + levelMaxVerbosity slog.Level = math.MinInt + LevelTrace slog.Level = -8 + LevelDebug = slog.LevelDebug + LevelInfo = slog.LevelInfo + LevelWarn = slog.LevelWarn + LevelError = slog.LevelError + LevelCrit slog.Level = 12 + + // for backward-compatibility + LvlTrace = LevelTrace + LvlInfo = LevelInfo + LvlDebug = LevelDebug ) -// AlignedString returns a 5-character string containing the name of a Lvl. -func (l Lvl) AlignedString() string { +// convert from old Geth verbosity level constants +// to levels defined by slog +func FromLegacyLevel(lvl int) slog.Level { + switch lvl { + case legacyLevelCrit: + return LevelCrit + case legacyLevelError: + return slog.LevelError + case legacyLevelWarn: + return slog.LevelWarn + case legacyLevelInfo: + return slog.LevelInfo + case legacyLevelDebug: + return slog.LevelDebug + case legacyLevelTrace: + return LevelTrace + default: + break + } + + // TODO: should we allow use of custom levels or force them to match existing max/min if they fall outside the range as I am doing here? + if lvl > legacyLevelTrace { + return LevelTrace + } + return LevelCrit +} + +// LevelAlignedString returns a 5-character string containing the name of a Lvl. +func LevelAlignedString(l slog.Level) string { switch l { - case LvlTrace: + case LevelTrace: return "TRACE" - case LvlDebug: + case slog.LevelDebug: return "DEBUG" - case LvlInfo: + case slog.LevelInfo: return "INFO " - case LvlWarn: + case slog.LevelWarn: return "WARN " - case LvlError: + case slog.LevelError: return "ERROR" - case LvlCrit: + case LevelCrit: return "CRIT " default: - panic("bad level") + return "unknown level" } } -// String returns the name of a Lvl. -func (l Lvl) String() string { +// LevelString returns a 5-character string containing the name of a Lvl. +func LevelString(l slog.Level) string { switch l { - case LvlTrace: - return "trce" - case LvlDebug: - return "dbug" - case LvlInfo: + case LevelTrace: + return "trace" + case slog.LevelDebug: + return "debug" + case slog.LevelInfo: return "info" - case LvlWarn: + case slog.LevelWarn: return "warn" - case LvlError: + case slog.LevelError: return "eror" - case LvlCrit: + case LevelCrit: return "crit" default: - panic("bad level") + return "unknown" } } -// LvlFromString returns the appropriate Lvl from a string name. -// Useful for parsing command line args and configuration files. -func LvlFromString(lvlString string) (Lvl, error) { - switch lvlString { - case "trace", "trce": - return LvlTrace, nil - case "debug", "dbug": - return LvlDebug, nil - case "info": - return LvlInfo, nil - case "warn": - return LvlWarn, nil - case "error", "eror": - return LvlError, nil - case "crit": - return LvlCrit, nil - default: - return LvlDebug, fmt.Errorf("unknown level: %v", lvlString) - } -} - -// A Record is what a Logger asks its handler to write -type Record struct { - Time time.Time - Lvl Lvl - Msg string - Ctx []interface{} - Call stack.Call - KeyNames RecordKeyNames -} - -// RecordKeyNames gets stored in a Record when the write function is executed. -type RecordKeyNames struct { - Time string - Msg string - Lvl string - Ctx string -} - // A Logger writes key/value pairs to a Handler type Logger interface { - // New returns a new Logger that has this logger's context plus the given context - New(ctx ...interface{}) Logger + // With returns a new Logger that has this logger's attributes plus the given attributes + With(ctx ...interface{}) Logger - // GetHandler gets the handler associated with the logger. - GetHandler() Handler + // With returns a new Logger that has this logger's attributes plus the given attributes. Identical to 'With'. + New(ctx ...interface{}) Logger - // SetHandler updates the logger to write records to the specified handler. - SetHandler(h Handler) + // Log logs a message at the specified level with context key/value pairs + Log(level slog.Level, msg string, ctx ...interface{}) - // Log a message at the trace level with context key/value pairs - // - // # Usage - // - // log.Trace("msg") - // log.Trace("msg", "key1", val1) - // log.Trace("msg", "key1", val1, "key2", val2) + // Trace log a message at the trace level with context key/value pairs Trace(msg string, ctx ...interface{}) - // Log a message at the debug level with context key/value pairs - // - // # Usage Examples - // - // log.Debug("msg") - // log.Debug("msg", "key1", val1) - // log.Debug("msg", "key1", val1, "key2", val2) + // Debug logs a message at the debug level with context key/value pairs Debug(msg string, ctx ...interface{}) - // Log a message at the info level with context key/value pairs - // - // # Usage Examples - // - // log.Info("msg") - // log.Info("msg", "key1", val1) - // log.Info("msg", "key1", val1, "key2", val2) + // Info logs a message at the info level with context key/value pairs Info(msg string, ctx ...interface{}) - // Log a message at the warn level with context key/value pairs - // - // # Usage Examples - // - // log.Warn("msg") - // log.Warn("msg", "key1", val1) - // log.Warn("msg", "key1", val1, "key2", val2) + // Warn logs a message at the warn level with context key/value pairs Warn(msg string, ctx ...interface{}) - // Log a message at the error level with context key/value pairs - // - // # Usage Examples - // - // log.Error("msg") - // log.Error("msg", "key1", val1) - // log.Error("msg", "key1", val1, "key2", val2) + // Error logs a message at the error level with context key/value pairs Error(msg string, ctx ...interface{}) - // Log a message at the crit level with context key/value pairs, and then exit. - // - // # Usage Examples - // - // log.Crit("msg") - // log.Crit("msg", "key1", val1) - // log.Crit("msg", "key1", val1, "key2", val2) + // Crit logs a message at the crit level with context key/value pairs, and exits Crit(msg string, ctx ...interface{}) + + // Write logs a message at the specified level + Write(level slog.Level, msg string, attrs ...any) } type logger struct { - ctx []interface{} - h *swapHandler + inner *slog.Logger } -func (l *logger) write(msg string, lvl Lvl, ctx []interface{}, skip int) { - record := &Record{ - Time: time.Now(), - Lvl: lvl, - Msg: msg, - Ctx: newContext(l.ctx, ctx), - KeyNames: RecordKeyNames{ - Time: timeKey, - Msg: msgKey, - Lvl: lvlKey, - Ctx: ctxKey, - }, - } - if stackEnabled.Load() { - record.Call = stack.Caller(skip) +// NewLogger returns a logger with the specified handler set +func NewLogger(h slog.Handler) Logger { + return &logger{ + slog.New(h), } - l.h.Log(record) } -func (l *logger) New(ctx ...interface{}) Logger { - child := &logger{newContext(l.ctx, ctx), new(swapHandler)} - child.SetHandler(l.h) - return child -} +// write logs a message at the specified level: +func (l *logger) Write(level slog.Level, msg string, attrs ...any) { + if !l.inner.Enabled(context.Background(), level) { + return + } -func newContext(prefix []interface{}, suffix []interface{}) []interface{} { - normalizedSuffix := normalize(suffix) - newCtx := make([]interface{}, len(prefix)+len(normalizedSuffix)) - n := copy(newCtx, prefix) - copy(newCtx[n:], normalizedSuffix) - return newCtx -} + var pcs [1]uintptr + runtime.Callers(3, pcs[:]) -func (l *logger) Trace(msg string, ctx ...interface{}) { - l.write(msg, LvlTrace, ctx, skipLevel) -} + if len(attrs)%2 != 0 { + attrs = append(attrs, nil, errorKey, "Normalized odd number of arguments by adding nil") + } -func (l *logger) Debug(msg string, ctx ...interface{}) { - l.write(msg, LvlDebug, ctx, skipLevel) -} + // evaluate lazy values + var hadErr bool + for i := 1; i < len(attrs); i += 2 { + lz, ok := attrs[i].(Lazy) + if ok { + v, err := evaluateLazy(lz) + if err != nil { + hadErr = true + attrs[i] = err + } else { + attrs[i] = v + } + } + } -func (l *logger) Info(msg string, ctx ...interface{}) { - l.write(msg, LvlInfo, ctx, skipLevel) -} + if hadErr { + attrs = append(attrs, errorKey, "bad lazy") + } -func (l *logger) Warn(msg string, ctx ...interface{}) { - l.write(msg, LvlWarn, ctx, skipLevel) + r := slog.NewRecord(time.Now(), level, msg, pcs[0]) + r.Add(attrs...) + l.inner.Handler().Handle(context.Background(), r) } -func (l *logger) Error(msg string, ctx ...interface{}) { - l.write(msg, LvlError, ctx, skipLevel) +func (l *logger) Log(level slog.Level, msg string, attrs ...any) { + l.Write(level, msg, attrs...) } -func (l *logger) Crit(msg string, ctx ...interface{}) { - l.write(msg, LvlCrit, ctx, skipLevel) - os.Exit(1) +func (l *logger) With(ctx ...interface{}) Logger { + return &logger{l.inner.With(ctx...)} } -func (l *logger) GetHandler() Handler { - return l.h.Get() +func (l *logger) New(ctx ...interface{}) Logger { + return l.With(ctx...) } -func (l *logger) SetHandler(h Handler) { - l.h.Swap(h) +func (l *logger) Trace(msg string, ctx ...interface{}) { + l.Write(LevelTrace, msg, ctx...) } -func normalize(ctx []interface{}) []interface{} { - // if the caller passed a Ctx object, then expand it - if len(ctx) == 1 { - if ctxMap, ok := ctx[0].(Ctx); ok { - ctx = ctxMap.toArray() - } - } - - // ctx needs to be even because it's a series of key/value pairs - // no one wants to check for errors on logging functions, - // so instead of erroring on bad input, we'll just make sure - // that things are the right length and users can fix bugs - // when they see the output looks wrong - if len(ctx)%2 != 0 { - ctx = append(ctx, nil, errorKey, "Normalized odd number of arguments by adding nil") - } - - return ctx +func (l *logger) Debug(msg string, ctx ...interface{}) { + l.Write(slog.LevelDebug, msg, ctx...) } -// Lazy allows you to defer calculation of a logged value that is expensive -// to compute until it is certain that it must be evaluated with the given filters. -// -// Lazy may also be used in conjunction with a Logger's New() function -// to generate a child logger which always reports the current value of changing -// state. -// -// You may wrap any function which takes no arguments to Lazy. It may return any -// number of values of any type. -type Lazy struct { - Fn interface{} +func (l *logger) Info(msg string, ctx ...interface{}) { + l.Write(slog.LevelInfo, msg, ctx...) } -// Ctx is a map of key/value pairs to pass as context to a log function -// Use this only if you really need greater safety around the arguments you pass -// to the logging functions. -type Ctx map[string]interface{} - -func (c Ctx) toArray() []interface{} { - arr := make([]interface{}, len(c)*2) +func (l *logger) Warn(msg string, ctx ...any) { + l.Write(slog.LevelWarn, msg, ctx...) +} - i := 0 - for k, v := range c { - arr[i] = k - arr[i+1] = v - i += 2 - } +func (l *logger) Error(msg string, ctx ...interface{}) { + l.Write(slog.LevelError, msg, ctx...) +} - return arr +func (l *logger) Crit(msg string, ctx ...interface{}) { + l.Write(LevelCrit, msg, ctx...) + os.Exit(1) } diff --git a/log/logger_test.go b/log/logger_test.go index 2e59b3fdf0..fca1f1680f 100644 --- a/log/logger_test.go +++ b/log/logger_test.go @@ -5,61 +5,47 @@ import ( "os" "strings" "testing" + + "golang.org/x/exp/slog" ) -// TestLoggingWithTrace checks that if BackTraceAt is set, then the -// gloghandler is capable of spitting out a stacktrace -func TestLoggingWithTrace(t *testing.T) { - defer stackEnabled.Store(stackEnabled.Load()) +// TestLoggingWithVmodule checks that vmodule works. +func TestLoggingWithVmodule(t *testing.T) { out := new(bytes.Buffer) - logger := New() - { - glog := NewGlogHandler(StreamHandler(out, TerminalFormat(false))) - glog.Verbosity(LvlTrace) - if err := glog.BacktraceAt("logger_test.go:24"); err != nil { - t.Fatal(err) - } - logger.SetHandler(glog) - } - logger.Trace("a message", "foo", "bar") // Will be bumped to INFO + glog := NewGlogHandler(NewTerminalHandlerWithLevel(out, LevelTrace, false)) + glog.Verbosity(LevelCrit) + logger := NewLogger(glog) + logger.Warn("This should not be seen", "ignored", "true") + glog.Vmodule("logger_test.go=5") + logger.Trace("a message", "foo", "bar") have := out.String() - if !strings.HasPrefix(have, "INFO") { - t.Fatalf("backtraceat should bump level to info: %s", have) - } // The timestamp is locale-dependent, so we want to trim that off // "INFO [01-01|00:00:00.000] a messag ..." -> "a messag..." have = strings.Split(have, "]")[1] - wantPrefix := " a message\n\ngoroutine" - if !strings.HasPrefix(have, wantPrefix) { - t.Errorf("\nhave: %q\nwant: %q\n", have, wantPrefix) + want := " a message foo=bar\n" + if have != want { + t.Errorf("\nhave: %q\nwant: %q\n", have, want) } } -// TestLoggingWithVmodule checks that vmodule works. -func TestLoggingWithVmodule(t *testing.T) { - defer stackEnabled.Store(stackEnabled.Load()) +func TestTerminalHandlerWithAttrs(t *testing.T) { out := new(bytes.Buffer) - logger := New() - { - glog := NewGlogHandler(StreamHandler(out, TerminalFormat(false))) - glog.Verbosity(LvlCrit) - logger.SetHandler(glog) - logger.Warn("This should not be seen", "ignored", "true") - glog.Vmodule("logger_test.go=5") - } + glog := NewGlogHandler(NewTerminalHandlerWithLevel(out, LevelTrace, false).WithAttrs([]slog.Attr{slog.String("baz", "bat")})) + glog.Verbosity(LevelTrace) + logger := NewLogger(glog) logger.Trace("a message", "foo", "bar") have := out.String() // The timestamp is locale-dependent, so we want to trim that off // "INFO [01-01|00:00:00.000] a messag ..." -> "a messag..." have = strings.Split(have, "]")[1] - want := " a message foo=bar\n" + want := " a message baz=bat foo=bar\n" if have != want { t.Errorf("\nhave: %q\nwant: %q\n", have, want) } } func BenchmarkTraceLogging(b *testing.B) { - Root().SetHandler(LvlFilterHandler(LvlInfo, StreamHandler(os.Stderr, TerminalFormat(true)))) + SetDefault(NewLogger(NewTerminalHandler(os.Stderr, true))) b.ResetTimer() for i := 0; i < b.N; i++ { Trace("a message", "v", i) diff --git a/log/root.go b/log/root.go index 5a41723c3e..71040fff47 100644 --- a/log/root.go +++ b/log/root.go @@ -2,31 +2,33 @@ package log import ( "os" -) + "sync/atomic" -var ( - root = &logger{[]interface{}{}, new(swapHandler)} - StdoutHandler = StreamHandler(os.Stdout, LogfmtFormat()) - StderrHandler = StreamHandler(os.Stderr, LogfmtFormat()) + "golang.org/x/exp/slog" ) +var root atomic.Value + func init() { - root.SetHandler(DiscardHandler()) + defaultLogger := &logger{slog.New(DiscardHandler())} + SetDefault(defaultLogger) } -// New returns a new logger with the given context. -// New is a convenient alias for Root().New -func New(ctx ...interface{}) Logger { - return root.New(ctx...) +// SetDefault sets the default global logger +func SetDefault(l Logger) { + root.Store(l) + if lg, ok := l.(*logger); ok { + slog.SetDefault(lg.inner) + } } // Root returns the root logger func Root() Logger { - return root + return root.Load().(Logger) } // The following functions bypass the exported logger methods (logger.Debug, -// etc.) to keep the call depth the same for all paths to logger.write so +// etc.) to keep the call depth the same for all paths to logger.Write so // runtime.Caller(2) always refers to the call site in client code. // Trace is a convenient alias for Root().Trace @@ -39,7 +41,7 @@ func Root() Logger { // log.Trace("msg", "key1", val1) // log.Trace("msg", "key1", val1, "key2", val2) func Trace(msg string, ctx ...interface{}) { - root.write(msg, LvlTrace, ctx, skipLevel) + Root().Write(LevelTrace, msg, ctx...) } // Debug is a convenient alias for Root().Debug @@ -52,7 +54,7 @@ func Trace(msg string, ctx ...interface{}) { // log.Debug("msg", "key1", val1) // log.Debug("msg", "key1", val1, "key2", val2) func Debug(msg string, ctx ...interface{}) { - root.write(msg, LvlDebug, ctx, skipLevel) + Root().Write(slog.LevelDebug, msg, ctx...) } // Info is a convenient alias for Root().Info @@ -65,7 +67,7 @@ func Debug(msg string, ctx ...interface{}) { // log.Info("msg", "key1", val1) // log.Info("msg", "key1", val1, "key2", val2) func Info(msg string, ctx ...interface{}) { - root.write(msg, LvlInfo, ctx, skipLevel) + Root().Write(slog.LevelInfo, msg, ctx...) } // Warn is a convenient alias for Root().Warn @@ -78,7 +80,7 @@ func Info(msg string, ctx ...interface{}) { // log.Warn("msg", "key1", val1) // log.Warn("msg", "key1", val1, "key2", val2) func Warn(msg string, ctx ...interface{}) { - root.write(msg, LvlWarn, ctx, skipLevel) + Root().Write(slog.LevelWarn, msg, ctx...) } // Error is a convenient alias for Root().Error @@ -91,7 +93,7 @@ func Warn(msg string, ctx ...interface{}) { // log.Error("msg", "key1", val1) // log.Error("msg", "key1", val1, "key2", val2) func Error(msg string, ctx ...interface{}) { - root.write(msg, LvlError, ctx, skipLevel) + Root().Write(slog.LevelError, msg, ctx...) } // Crit is a convenient alias for Root().Crit @@ -104,15 +106,12 @@ func Error(msg string, ctx ...interface{}) { // log.Crit("msg", "key1", val1) // log.Crit("msg", "key1", val1, "key2", val2) func Crit(msg string, ctx ...interface{}) { - root.write(msg, LvlCrit, ctx, skipLevel) + Root().Write(LevelCrit, msg, ctx...) os.Exit(1) } -// Output is a convenient alias for write, allowing for the modification of -// the calldepth (number of stack frames to skip). -// calldepth influences the reported line number of the log message. -// A calldepth of zero reports the immediate caller of Output. -// Non-zero calldepth skips as many stack frames. -func Output(msg string, lvl Lvl, calldepth int, ctx ...interface{}) { - root.write(msg, lvl, ctx, calldepth+skipLevel) +// New returns a new logger with the given context. +// New is a convenient alias for Root().New +func New(ctx ...interface{}) Logger { + return Root().With(ctx...) } diff --git a/log/syslog.go b/log/syslog.go deleted file mode 100644 index 451d831b6d..0000000000 --- a/log/syslog.go +++ /dev/null @@ -1,58 +0,0 @@ -//go:build !windows && !plan9 -// +build !windows,!plan9 - -package log - -import ( - "log/syslog" - "strings" -) - -// SyslogHandler opens a connection to the system syslog daemon by calling -// syslog.New and writes all records to it. -func SyslogHandler(priority syslog.Priority, tag string, fmtr Format) (Handler, error) { - wr, err := syslog.New(priority, tag) - return sharedSyslog(fmtr, wr, err) -} - -// SyslogNetHandler opens a connection to a log daemon over the network and writes -// all log records to it. -func SyslogNetHandler(net, addr string, priority syslog.Priority, tag string, fmtr Format) (Handler, error) { - wr, err := syslog.Dial(net, addr, priority, tag) - return sharedSyslog(fmtr, wr, err) -} - -func sharedSyslog(fmtr Format, sysWr *syslog.Writer, err error) (Handler, error) { - if err != nil { - return nil, err - } - h := FuncHandler(func(r *Record) error { - var syslogFn = sysWr.Info - switch r.Lvl { - case LvlCrit: - syslogFn = sysWr.Crit - case LvlError: - syslogFn = sysWr.Err - case LvlWarn: - syslogFn = sysWr.Warning - case LvlInfo: - syslogFn = sysWr.Info - case LvlDebug: - syslogFn = sysWr.Debug - case LvlTrace: - syslogFn = func(m string) error { return nil } // There's no syslog level for trace - } - - s := strings.TrimSpace(string(fmtr.Format(r))) - return syslogFn(s) - }) - return LazyHandler(&closingHandler{sysWr, h}), nil -} - -func (m muster) SyslogHandler(priority syslog.Priority, tag string, fmtr Format) Handler { - return must(SyslogHandler(priority, tag, fmtr)) -} - -func (m muster) SyslogNetHandler(net, addr string, priority syslog.Priority, tag string, fmtr Format) Handler { - return must(SyslogNetHandler(net, addr, priority, tag, fmtr)) -} diff --git a/miner/stress/clique/main.go b/miner/stress/clique/main.go index 7b29e63dfc..13336cd83c 100644 --- a/miner/stress/clique/main.go +++ b/miner/stress/clique/main.go @@ -45,7 +45,7 @@ import ( ) func main() { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelInfo, true))) fdlimit.Raise(2048) // Generate a batch of accounts to seal and fund with diff --git a/p2p/discover/v4_udp_test.go b/p2p/discover/v4_udp_test.go index 5add9cefa1..53ecb1bc6e 100644 --- a/p2p/discover/v4_udp_test.go +++ b/p2p/discover/v4_udp_test.go @@ -557,12 +557,7 @@ func startLocalhostV4(t *testing.T, cfg Config) *UDPv4 { // Prefix logs with node ID. lprefix := fmt.Sprintf("(%s)", ln.ID().TerminalString()) - lfmt := log.TerminalFormat(false) - cfg.Log = testlog.Logger(t, log.LvlTrace) - cfg.Log.SetHandler(log.FuncHandler(func(r *log.Record) error { - t.Logf("%s %s", lprefix, lfmt.Format(r)) - return nil - })) + cfg.Log = testlog.Logger(t, log.LevelTrace).With("node-id", lprefix) // Listen. socket, err := net.ListenUDP("udp4", &net.UDPAddr{IP: net.IP{127, 0, 0, 1}}) diff --git a/p2p/discover/v5_udp_test.go b/p2p/discover/v5_udp_test.go index 880b71a991..18d8aeac6d 100644 --- a/p2p/discover/v5_udp_test.go +++ b/p2p/discover/v5_udp_test.go @@ -79,12 +79,7 @@ func startLocalhostV5(t *testing.T, cfg Config) *UDPv5 { // Prefix logs with node ID. lprefix := fmt.Sprintf("(%s)", ln.ID().TerminalString()) - lfmt := log.TerminalFormat(false) - cfg.Log = testlog.Logger(t, log.LvlTrace) - cfg.Log.SetHandler(log.FuncHandler(func(r *log.Record) error { - t.Logf("%s %s", lprefix, lfmt.Format(r)) - return nil - })) + cfg.Log = testlog.Logger(t, log.LevelTrace).With("node-id", lprefix) // Listen. socket, err := net.ListenUDP("udp4", &net.UDPAddr{IP: net.IP{127, 0, 0, 1}}) diff --git a/p2p/simulations/adapters/exec.go b/p2p/simulations/adapters/exec.go index 5ac3379393..63cc4936c1 100644 --- a/p2p/simulations/adapters/exec.go +++ b/p2p/simulations/adapters/exec.go @@ -41,6 +41,7 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/rpc" "github.com/gorilla/websocket" + "golang.org/x/exp/slog" ) func init() { @@ -375,9 +376,11 @@ type execNodeConfig struct { func initLogging() { // Initialize the logging by default first. - glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.LogfmtFormat())) - glogger.Verbosity(log.LvlInfo) - log.Root().SetHandler(glogger) + var innerHandler slog.Handler + innerHandler = slog.NewTextHandler(os.Stderr, nil) + glogger := log.NewGlogHandler(innerHandler) + glogger.Verbosity(log.LevelInfo) + log.SetDefault(log.NewLogger(glogger)) confEnv := os.Getenv(envNodeConfig) if confEnv == "" { @@ -395,14 +398,15 @@ func initLogging() { } writer = logWriter } - var verbosity = log.LvlInfo - if conf.Node.LogVerbosity <= log.LvlTrace && conf.Node.LogVerbosity >= log.LvlCrit { - verbosity = conf.Node.LogVerbosity + var verbosity = log.LevelInfo + if conf.Node.LogVerbosity <= log.LevelTrace && conf.Node.LogVerbosity >= log.LevelCrit { + verbosity = log.FromLegacyLevel(int(conf.Node.LogVerbosity)) } // Reinitialize the logger - glogger = log.NewGlogHandler(log.StreamHandler(writer, log.TerminalFormat(true))) + innerHandler = log.NewTerminalHandler(writer, true) + glogger = log.NewGlogHandler(innerHandler) glogger.Verbosity(verbosity) - log.Root().SetHandler(glogger) + log.SetDefault(log.NewLogger(glogger)) } // execP2PNode starts a simulation node when the current binary is executed with diff --git a/p2p/simulations/adapters/types.go b/p2p/simulations/adapters/types.go index 098759599c..fb8463d221 100644 --- a/p2p/simulations/adapters/types.go +++ b/p2p/simulations/adapters/types.go @@ -34,6 +34,7 @@ import ( "github.com/ethereum/go-ethereum/p2p/enr" "github.com/ethereum/go-ethereum/rpc" "github.com/gorilla/websocket" + "golang.org/x/exp/slog" ) // Node represents a node in a simulation network which is created by a @@ -129,7 +130,7 @@ type NodeConfig struct { // LogVerbosity is the log verbosity of the p2p node at runtime. // // The default verbosity is INFO. - LogVerbosity log.Lvl + LogVerbosity slog.Level } // nodeConfigJSON is used to encode and decode NodeConfig as JSON by encoding @@ -197,7 +198,7 @@ func (n *NodeConfig) UnmarshalJSON(data []byte) error { n.Port = confJSON.Port n.EnableMsgEvents = confJSON.EnableMsgEvents n.LogFile = confJSON.LogFile - n.LogVerbosity = log.Lvl(confJSON.LogVerbosity) + n.LogVerbosity = slog.Level(confJSON.LogVerbosity) return nil } diff --git a/p2p/simulations/examples/ping-pong.go b/p2p/simulations/examples/ping-pong.go index f6cf5113a6..70b35ad777 100644 --- a/p2p/simulations/examples/ping-pong.go +++ b/p2p/simulations/examples/ping-pong.go @@ -41,7 +41,7 @@ func main() { flag.Parse() // set the log level to Trace - log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(false)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelTrace, false))) // register a single ping-pong service services := map[string]adapters.LifecycleConstructor{ diff --git a/p2p/simulations/http_test.go b/p2p/simulations/http_test.go index 05e43238ab..c53a49797b 100644 --- a/p2p/simulations/http_test.go +++ b/p2p/simulations/http_test.go @@ -37,14 +37,14 @@ import ( "github.com/ethereum/go-ethereum/p2p/simulations/adapters" "github.com/ethereum/go-ethereum/rpc" "github.com/mattn/go-colorable" + "golang.org/x/exp/slog" ) func TestMain(m *testing.M) { loglevel := flag.Int("loglevel", 2, "verbosity of logs") flag.Parse() - log.PrintOrigins(true) - log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(*loglevel), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(colorable.NewColorableStderr(), slog.Level(*loglevel), true))) os.Exit(m.Run()) } diff --git a/signer/core/auditlog.go b/signer/core/auditlog.go index a0b292bf71..d2207c9eb8 100644 --- a/signer/core/auditlog.go +++ b/signer/core/auditlog.go @@ -19,12 +19,14 @@ package core import ( "context" "encoding/json" + "os" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/signer/core/apitypes" + "golang.org/x/exp/slog" ) type AuditLogger struct { @@ -113,12 +115,13 @@ func (l *AuditLogger) Version(ctx context.Context) (string, error) { } func NewAuditLogger(path string, api ExternalAPI) (*AuditLogger, error) { - l := log.New("api", "signer") - handler, err := log.FileHandler(path, log.LogfmtFormat()) + f, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) if err != nil { return nil, err } - l.SetHandler(handler) + + handler := slog.NewTextHandler(f, nil) + l := log.NewLogger(handler).With("api", "signer") l.Info("Configured", "audit log", path) return &AuditLogger{l, api}, nil } diff --git a/signer/storage/aes_gcm_storage_test.go b/signer/storage/aes_gcm_storage_test.go index 74d407e431..a223b1a6b4 100644 --- a/signer/storage/aes_gcm_storage_test.go +++ b/signer/storage/aes_gcm_storage_test.go @@ -26,6 +26,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" "github.com/mattn/go-colorable" + "golang.org/x/exp/slog" ) func TestEncryption(t *testing.T) { @@ -92,7 +93,7 @@ func TestFileStorage(t *testing.T) { } func TestEnd2End(t *testing.T) { t.Parallel() - log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(3), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(colorable.NewColorableStderr(), slog.LevelInfo, true))) d := t.TempDir() @@ -115,7 +116,7 @@ func TestSwappedKeys(t *testing.T) { t.Parallel() // It should not be possible to swap the keys/values, so that // K1:V1, K2:V2 can be swapped into K1:V2, K2:V1 - log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(3), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(colorable.NewColorableStderr(), slog.LevelInfo, true))) d := t.TempDir() From ab0eb46a8466f12f8a53f4591a9563d86d9af9f5 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Wed, 29 Nov 2023 16:07:51 +0800 Subject: [PATCH 106/223] core/state: make stateobject.create selfcontain (#28459) --- core/state/state_object.go | 6 +++++- core/state/statedb.go | 3 --- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/state/state_object.go b/core/state/state_object.go index fc66b48114..9383b98e44 100644 --- a/core/state/state_object.go +++ b/core/state/state_object.go @@ -98,7 +98,10 @@ func (s *stateObject) empty() bool { // newObject creates a state object. func newObject(db *StateDB, address common.Address, acct *types.StateAccount) *stateObject { - origin := acct + var ( + origin = acct + created = acct == nil // true if the account was not existent + ) if acct == nil { acct = types.NewEmptyStateAccount() } @@ -111,6 +114,7 @@ func newObject(db *StateDB, address common.Address, acct *types.StateAccount) *s originStorage: make(Storage), pendingStorage: make(Storage), dirtyStorage: make(Storage), + created: created, } } diff --git a/core/state/statedb.go b/core/state/statedb.go index 674227857c..905944cbb5 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -658,9 +658,6 @@ func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject) delete(s.accountsOrigin, prev.address) delete(s.storagesOrigin, prev.address) } - - newobj.created = true - s.setStateObject(newobj) if prev != nil && !prev.deleted { return newobj, prev From 7e56d89f069c7172b2086ed6b0ca12fb47cbcac8 Mon Sep 17 00:00:00 2001 From: protolambda Date: Thu, 30 Nov 2023 02:10:16 +0100 Subject: [PATCH 107/223] params: add note about Delta, update protocol version to indicate Delta pre-release support --- params/config.go | 1 + params/superchain.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/params/config.go b/params/config.go index 3f9cabc159..fdfe454902 100644 --- a/params/config.go +++ b/params/config.go @@ -358,6 +358,7 @@ type ChainConfig struct { BedrockBlock *big.Int `json:"bedrockBlock,omitempty"` // Bedrock switch block (nil = no fork, 0 = already on optimism bedrock) RegolithTime *uint64 `json:"regolithTime,omitempty"` // Regolith switch time (nil = no fork, 0 = already on optimism regolith) CanyonTime *uint64 `json:"canyonTime,omitempty"` // Canyon switch time (nil = no fork, 0 = already on optimism canyon) + // Delta: the Delta upgrade does not affect the execution-layer, and is thus not configurable in the chain config. InteropTime *uint64 `json:"interopTime,omitempty"` // Interop switch time (nil = no fork, 0 = already on optimism interop) diff --git a/params/superchain.go b/params/superchain.go index 3928153fbe..174b0a16b1 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -11,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" ) -var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 4, Minor: 0, Patch: 0, PreRelease: 1}.Encode() +var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 5, Minor: 0, Patch: 0, PreRelease: 1}.Encode() func init() { for id, ch := range superchain.OPChains { From fa0df76f3cfd186a1f06f2b80aa5dbb89555b009 Mon Sep 17 00:00:00 2001 From: Maciej Kulawik <10907694+magicxyyz@users.noreply.github.com> Date: Thu, 30 Nov 2023 09:50:48 +0000 Subject: [PATCH 108/223] trie/triedb/hashdb: take lock around access to dirties cache (#28542) Add read locking of db lock around access to dirties cache in hashdb.Database to prevent data race versus hashdb.Database.dereference which can modify the dirities map by deleting an item. Fixes #28541 --------- Co-authored-by: Gary Rong --- trie/database.go | 11 ------ trie/triedb/hashdb/database.go | 69 ++++++++++++---------------------- 2 files changed, 23 insertions(+), 57 deletions(-) diff --git a/trie/database.go b/trie/database.go index 321b4f8955..e20f7ef903 100644 --- a/trie/database.go +++ b/trie/database.go @@ -240,17 +240,6 @@ func (db *Database) Dereference(root common.Hash) error { return nil } -// Node retrieves the rlp-encoded node blob with provided node hash. It's -// only supported by hash-based database and will return an error for others. -// Note, this function should be deprecated once ETH66 is deprecated. -func (db *Database) Node(hash common.Hash) ([]byte, error) { - hdb, ok := db.backend.(*hashdb.Database) - if !ok { - return nil, errors.New("not supported") - } - return hdb.Node(hash) -} - // Recover rollbacks the database to a specified historical point. The state is // supported as the rollback destination only if it's canonical state and the // corresponding trie histories are existent. It's only supported by path-based diff --git a/trie/triedb/hashdb/database.go b/trie/triedb/hashdb/database.go index 764ab24ec8..e45ccdba32 100644 --- a/trie/triedb/hashdb/database.go +++ b/trie/triedb/hashdb/database.go @@ -82,11 +82,6 @@ var Defaults = &Config{ // Database is an intermediate write layer between the trie data structures and // the disk database. The aim is to accumulate trie writes in-memory and only // periodically flush a couple tries to disk, garbage collecting the remainder. -// -// Note, the trie Database is **not** thread safe in its mutations, but it **is** -// thread safe in providing individual, independent node access. The rationale -// behind this split design is to provide read access to RPC handlers and sync -// servers even while the trie is executing expensive garbage collection. type Database struct { diskdb ethdb.Database // Persistent storage for matured trie nodes resolver ChildResolver // The handler to resolve children of nodes @@ -113,7 +108,7 @@ type Database struct { // cachedNode is all the information we know about a single cached trie node // in the memory database write layer. type cachedNode struct { - node []byte // Encoded node blob + node []byte // Encoded node blob, immutable parents uint32 // Number of live nodes referencing this one external map[common.Hash]struct{} // The set of external children flushPrev common.Hash // Previous node in the flush-list @@ -152,9 +147,9 @@ func New(diskdb ethdb.Database, config *Config, resolver ChildResolver) *Databas } } -// insert inserts a simplified trie node into the memory database. -// All nodes inserted by this function will be reference tracked -// and in theory should only used for **trie nodes** insertion. +// insert inserts a trie node into the memory database. All nodes inserted by +// this function will be reference tracked. This function assumes the lock is +// already held. func (db *Database) insert(hash common.Hash, node []byte) { // If the node's already cached, skip if _, ok := db.dirties[hash]; ok { @@ -183,9 +178,9 @@ func (db *Database) insert(hash common.Hash, node []byte) { db.dirtiesSize += common.StorageSize(common.HashLength + len(node)) } -// Node retrieves an encoded cached trie node from memory. If it cannot be found +// node retrieves an encoded cached trie node from memory. If it cannot be found // cached, the method queries the persistent database for the content. -func (db *Database) Node(hash common.Hash) ([]byte, error) { +func (db *Database) node(hash common.Hash) ([]byte, error) { // It doesn't make sense to retrieve the metaroot if hash == (common.Hash{}) { return nil, errors.New("not found") @@ -198,11 +193,14 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) { return enc, nil } } - // Retrieve the node from the dirty cache if available + // Retrieve the node from the dirty cache if available. db.lock.RLock() dirty := db.dirties[hash] db.lock.RUnlock() + // Return the cached node if it's found in the dirty set. + // The dirty.node field is immutable and safe to read it + // even without lock guard. if dirty != nil { memcacheDirtyHitMeter.Mark(1) memcacheDirtyReadMeter.Mark(int64(len(dirty.node))) @@ -223,20 +221,6 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) { return nil, errors.New("not found") } -// Nodes retrieves the hashes of all the nodes cached within the memory database. -// This method is extremely expensive and should only be used to validate internal -// states in test code. -func (db *Database) Nodes() []common.Hash { - db.lock.RLock() - defer db.lock.RUnlock() - - var hashes = make([]common.Hash, 0, len(db.dirties)) - for hash := range db.dirties { - hashes = append(hashes, hash) - } - return hashes -} - // Reference adds a new reference from a parent node to a child node. // This function is used to add reference between internal trie node // and external node(e.g. storage trie root), all internal trie nodes @@ -344,16 +328,16 @@ func (db *Database) dereference(hash common.Hash) { // Cap iteratively flushes old but still referenced trie nodes until the total // memory usage goes below the given threshold. -// -// Note, this method is a non-synchronized mutator. It is unsafe to call this -// concurrently with other mutators. func (db *Database) Cap(limit common.StorageSize) error { + db.lock.Lock() + defer db.lock.Unlock() + // Create a database batch to flush persistent data out. It is important that // outside code doesn't see an inconsistent state (referenced data removed from // memory cache during commit but not yet in persistent storage). This is ensured // by only uncaching existing data when the database write finalizes. - nodes, storage, start := len(db.dirties), db.dirtiesSize, time.Now() batch := db.diskdb.NewBatch() + nodes, storage, start := len(db.dirties), db.dirtiesSize, time.Now() // db.dirtiesSize only contains the useful data in the cache, but when reporting // the total memory consumption, the maintenance metadata is also needed to be @@ -391,9 +375,6 @@ func (db *Database) Cap(limit common.StorageSize) error { return err } // Write successful, clear out the flushed data - db.lock.Lock() - defer db.lock.Unlock() - for db.oldest != oldest { node := db.dirties[db.oldest] delete(db.dirties, db.oldest) @@ -424,10 +405,10 @@ func (db *Database) Cap(limit common.StorageSize) error { // Commit iterates over all the children of a particular node, writes them out // to disk, forcefully tearing down all references in both directions. As a side // effect, all pre-images accumulated up to this point are also written. -// -// Note, this method is a non-synchronized mutator. It is unsafe to call this -// concurrently with other mutators. func (db *Database) Commit(node common.Hash, report bool) error { + db.lock.Lock() + defer db.lock.Unlock() + // Create a database batch to flush persistent data out. It is important that // outside code doesn't see an inconsistent state (referenced data removed from // memory cache during commit but not yet in persistent storage). This is ensured @@ -449,8 +430,6 @@ func (db *Database) Commit(node common.Hash, report bool) error { return err } // Uncache any leftovers in the last batch - db.lock.Lock() - defer db.lock.Unlock() if err := batch.Replay(uncacher); err != nil { return err } @@ -499,13 +478,11 @@ func (db *Database) commit(hash common.Hash, batch ethdb.Batch, uncacher *cleane if err := batch.Write(); err != nil { return err } - db.lock.Lock() err := batch.Replay(uncacher) - batch.Reset() - db.lock.Unlock() if err != nil { return err } + batch.Reset() } return nil } @@ -574,7 +551,7 @@ func (db *Database) Initialized(genesisRoot common.Hash) bool { func (db *Database) Update(root common.Hash, parent common.Hash, block uint64, nodes *trienode.MergedNodeSet, states *triestate.Set) error { // Ensure the parent state is present and signal a warning if not. if parent != types.EmptyRootHash { - if blob, _ := db.Node(parent); len(blob) == 0 { + if blob, _ := db.node(parent); len(blob) == 0 { log.Error("parent state is not present") } } @@ -655,7 +632,7 @@ func (db *Database) Scheme() string { // Reader retrieves a node reader belonging to the given state root. // An error will be returned if the requested state is not available. func (db *Database) Reader(root common.Hash) (*reader, error) { - if _, err := db.Node(root); err != nil { + if _, err := db.node(root); err != nil { return nil, fmt.Errorf("state %#x is not available, %v", root, err) } return &reader{db: db}, nil @@ -666,9 +643,9 @@ type reader struct { db *Database } -// Node retrieves the trie node with the given node hash. -// No error will be returned if the node is not found. +// Node retrieves the trie node with the given node hash. No error will be +// returned if the node is not found. func (reader *reader) Node(owner common.Hash, path []byte, hash common.Hash) ([]byte, error) { - blob, _ := reader.db.Node(hash) + blob, _ := reader.db.node(hash) return blob, nil } From f2b509d8a1ae877e2edb03560e57236eb74816b7 Mon Sep 17 00:00:00 2001 From: BorkBorked <107079055+BorkBorked@users.noreply.github.com> Date: Fri, 1 Dec 2023 09:51:50 +0100 Subject: [PATCH 109/223] accounts/abi/bind: fix typo (#28630) --- accounts/abi/bind/util_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/accounts/abi/bind/util_test.go b/accounts/abi/bind/util_test.go index b34c5bc226..16110b5d27 100644 --- a/accounts/abi/bind/util_test.go +++ b/accounts/abi/bind/util_test.go @@ -119,9 +119,9 @@ func TestWaitDeployedCornerCases(t *testing.T) { defer cancel() backend.SendTransaction(ctx, tx) backend.Commit() - notContentCreation := errors.New("tx is not contract creation") - if _, err := bind.WaitDeployed(ctx, backend, tx); err.Error() != notContentCreation.Error() { - t.Errorf("error mismatch: want %q, got %q, ", notContentCreation, err) + notContractCreation := errors.New("tx is not contract creation") + if _, err := bind.WaitDeployed(ctx, backend, tx); err.Error() != notContractCreation.Error() { + t.Errorf("error mismatch: want %q, got %q, ", notContractCreation, err) } // Create a transaction that is not mined. From dd0d0a2522ccad6bdeab1e84ff577bd5826540ee Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Fri, 1 Dec 2023 13:28:20 +0100 Subject: [PATCH 110/223] slog: faster and less memory-consumption (#28621) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These changes improves the performance of the non-coloured terminal formatting, _quite a lot_. ``` name old time/op new time/op delta TerminalHandler-8 10.2µs ±15% 5.4µs ± 9% -47.02% (p=0.008 n=5+5) name old alloc/op new alloc/op delta TerminalHandler-8 2.17kB ± 0% 0.40kB ± 0% -81.46% (p=0.008 n=5+5) name old allocs/op new allocs/op delta TerminalHandler-8 33.0 ± 0% 5.0 ± 0% -84.85% (p=0.008 n=5+5) ``` I tried to _somewhat_ organize the commits, but the it might still be a bit chaotic. Some core insights: - The function `terminalHandler.Handl` uses a mutex, and writes all output immediately to 'upstream'. Thus, it can reuse a scratch-buffer every time. - This buffer can be propagated internally, making all the internal formatters either write directly to it, - OR, make use of the `tmp := buf.AvailableBuffer()` in some cases, where a byte buffer "extra capacity" can be temporarily used. - The `slog` package uses `Attr` by value. It makes sense to minimize operating on them, since iterating / collecting into a new slice, iterating again etc causes copy-on-heap. Better to operate on them only once. - If we want to do padding, it's better to copy from a constant `space`-buffer than to invoke `bytes.Repeat` every single time. --- internal/testlog/testlog.go | 3 +- log/format.go | 350 ++++++++++++++++++++---------------- log/format_test.go | 8 +- log/handler.go | 6 +- log/logger_test.go | 121 +++++++++++++ 5 files changed, 328 insertions(+), 160 deletions(-) diff --git a/internal/testlog/testlog.go b/internal/testlog/testlog.go index 68b9fb19f8..a7899c8158 100644 --- a/internal/testlog/testlog.go +++ b/internal/testlog/testlog.go @@ -183,8 +183,7 @@ func (h *bufHandler) terminalFormat(r slog.Record) string { } for _, attr := range attrs { - rawVal := attr.Value.Any() - fmt.Fprintf(buf, " %s=%s", attr.Key, log.FormatLogfmtValue(rawVal, true)) + fmt.Fprintf(buf, " %s=%s", attr.Key, string(log.FormatSlogValue(attr.Value, true, nil))) } buf.WriteByte('\n') return buf.String() diff --git a/log/format.go b/log/format.go index 5cbbe3341e..a2bbcce9c0 100644 --- a/log/format.go +++ b/log/format.go @@ -15,12 +15,14 @@ import ( const ( timeFormat = "2006-01-02T15:04:05-0700" - termTimeFormat = "01-02|15:04:05.000" floatFormat = 'f' termMsgJust = 40 termCtxMaxPadding = 40 ) +// 40 spaces +var spaces = []byte(" ") + type Format interface { Format(r slog.Record) []byte } @@ -44,37 +46,47 @@ type TerminalStringer interface { TerminalString() string } -func (h *TerminalHandler) TerminalFormat(r slog.Record, usecolor bool) []byte { +func (h *TerminalHandler) TerminalFormat(buf []byte, r slog.Record, usecolor bool) []byte { msg := escapeMessage(r.Message) - var color = 0 + var color = "" if usecolor { switch r.Level { case LevelCrit: - color = 35 + color = "\x1b[35m" case slog.LevelError: - color = 31 + color = "\x1b[31m" case slog.LevelWarn: - color = 33 + color = "\x1b[33m" case slog.LevelInfo: - color = 32 + color = "\x1b[32m" case slog.LevelDebug: - color = 36 + color = "\x1b[36m" case LevelTrace: - color = 34 + color = "\x1b[34m" } } + if buf == nil { + buf = make([]byte, 0, 30+termMsgJust) + } + b := bytes.NewBuffer(buf) - b := &bytes.Buffer{} - lvl := LevelAlignedString(r.Level) - if color > 0 { - fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %s ", color, lvl, r.Time.Format(termTimeFormat), msg) + if color != "" { // Start color + b.WriteString(color) + b.WriteString(LevelAlignedString(r.Level)) + b.WriteString("\x1b[0m") } else { - fmt.Fprintf(b, "%s[%s] %s ", lvl, r.Time.Format(termTimeFormat), msg) + b.WriteString(LevelAlignedString(r.Level)) } + b.WriteString("[") + writeTimeTermFormat(b, r.Time) + b.WriteString("] ") + b.WriteString(msg) + // try to justify the log output for short messages - length := utf8.RuneCountInString(msg) - if r.NumAttrs() > 0 && length < termMsgJust { - b.Write(bytes.Repeat([]byte{' '}, termMsgJust-length)) + //length := utf8.RuneCountInString(msg) + length := len(msg) + if (r.NumAttrs()+len(h.attrs)) > 0 && length < termMsgJust { + b.Write(spaces[:termMsgJust-length]) } // print the keys logfmt style h.logfmt(b, r, color) @@ -82,150 +94,139 @@ func (h *TerminalHandler) TerminalFormat(r slog.Record, usecolor bool) []byte { return b.Bytes() } -func (h *TerminalHandler) logfmt(buf *bytes.Buffer, r slog.Record, color int) { - attrs := []slog.Attr{} - r.Attrs(func(attr slog.Attr) bool { - attrs = append(attrs, attr) - return true - }) - - attrs = append(h.attrs, attrs...) - - for i, attr := range attrs { - if i != 0 { - buf.WriteByte(' ') +func (h *TerminalHandler) logfmt(buf *bytes.Buffer, r slog.Record, color string) { + // tmp is a temporary buffer we use, until bytes.Buffer.AvailableBuffer() (1.21) + // can be used. + var tmp = make([]byte, 40) + writeAttr := func(attr slog.Attr, first, last bool) { + buf.WriteByte(' ') + + if color != "" { + buf.WriteString(color) + //buf.Write(appendEscapeString(buf.AvailableBuffer(), attr.Key)) + buf.Write(appendEscapeString(tmp[:0], attr.Key)) + buf.WriteString("\x1b[0m=") + } else { + //buf.Write(appendEscapeString(buf.AvailableBuffer(), attr.Key)) + buf.Write(appendEscapeString(tmp[:0], attr.Key)) + buf.WriteByte('=') } + //val := FormatSlogValue(attr.Value, true, buf.AvailableBuffer()) + val := FormatSlogValue(attr.Value, true, tmp[:0]) - key := escapeString(attr.Key) - rawVal := attr.Value.Any() - val := FormatLogfmtValue(rawVal, true) + padding := h.fieldPadding[attr.Key] - // XXX: we should probably check that all of your key bytes aren't invalid - // TODO (jwasinger) above comment was from log15 code. what does it mean? check that key bytes are ascii characters? - padding := h.fieldPadding[key] - - length := utf8.RuneCountInString(val) + length := utf8.RuneCount(val) if padding < length && length <= termCtxMaxPadding { padding = length - h.fieldPadding[key] = padding + h.fieldPadding[attr.Key] = padding } - if color > 0 { - fmt.Fprintf(buf, "\x1b[%dm%s\x1b[0m=", color, key) - } else { - buf.WriteString(key) - buf.WriteByte('=') - } - buf.WriteString(val) - if i < r.NumAttrs()-1 && padding > length { - buf.Write(bytes.Repeat([]byte{' '}, padding-length)) + buf.Write(val) + if !last && padding > length { + buf.Write(spaces[:padding-length]) } } + var n = 0 + var nAttrs = len(h.attrs) + r.NumAttrs() + for _, attr := range h.attrs { + writeAttr(attr, n == 0, n == nAttrs-1) + n++ + } + r.Attrs(func(attr slog.Attr) bool { + writeAttr(attr, n == 0, n == nAttrs-1) + n++ + return true + }) buf.WriteByte('\n') } -// formatValue formats a value for serialization -func FormatLogfmtValue(value interface{}, term bool) (result string) { - if value == nil { - return "" - } +// FormatSlogValue formats a slog.Value for serialization +func FormatSlogValue(v slog.Value, term bool, tmp []byte) (result []byte) { + var value any defer func() { if err := recover(); err != nil { if v := reflect.ValueOf(value); v.Kind() == reflect.Ptr && v.IsNil() { - result = "" + result = []byte("") } else { panic(err) } } }() - switch v := value.(type) { - case time.Time: + switch v.Kind() { + case slog.KindString: + return appendEscapeString(tmp, v.String()) + case slog.KindAny: + value = v.Any() + case slog.KindInt64: // All int-types (int8 ,int16 etc) wind up here + return appendInt64(tmp, v.Int64()) + case slog.KindUint64: // All uint-types (int8 ,int16 etc) wind up here + return appendUint64(tmp, v.Uint64(), false) + case slog.KindFloat64: + return strconv.AppendFloat(tmp, v.Float64(), floatFormat, 3, 64) + case slog.KindBool: + return strconv.AppendBool(tmp, v.Bool()) + case slog.KindDuration: + value = v.Duration() + case slog.KindTime: // Performance optimization: No need for escaping since the provided // timeFormat doesn't have any escape characters, and escaping is // expensive. - return v.Format(timeFormat) - + return v.Time().AppendFormat(tmp, timeFormat) + default: + value = v.Any() + } + if value == nil { + return []byte("") + } + switch v := value.(type) { case *big.Int: // Big ints get consumed by the Stringer clause, so we need to handle // them earlier on. if v == nil { - return "" + return append(tmp, []byte("")...) } - return formatLogfmtBigInt(v) + return appendBigInt(tmp, v) case *uint256.Int: // Uint256s get consumed by the Stringer clause, so we need to handle // them earlier on. if v == nil { - return "" - } - return formatLogfmtUint256(v) - } - if term { - if s, ok := value.(TerminalStringer); ok { - // Custom terminal stringer provided, use that - return escapeString(s.TerminalString()) + return append(tmp, []byte("")...) } - } - switch v := value.(type) { + return appendU256(tmp, v) case error: - return escapeString(v.Error()) + return appendEscapeString(tmp, v.Error()) + case TerminalStringer: + if term { + return appendEscapeString(tmp, v.TerminalString()) // Custom terminal stringer provided, use that + } case fmt.Stringer: - return escapeString(v.String()) - case bool: - return strconv.FormatBool(v) - case float32: - return strconv.FormatFloat(float64(v), floatFormat, 3, 64) - case float64: - return strconv.FormatFloat(v, floatFormat, 3, 64) - case int8: - return strconv.FormatInt(int64(v), 10) - case uint8: - return strconv.FormatInt(int64(v), 10) - case int16: - return strconv.FormatInt(int64(v), 10) - case uint16: - return strconv.FormatInt(int64(v), 10) - // Larger integers get thousands separators. - case int: - return FormatLogfmtInt64(int64(v)) - case int32: - return FormatLogfmtInt64(int64(v)) - case int64: - return FormatLogfmtInt64(v) - case uint: - return FormatLogfmtUint64(uint64(v)) - case uint32: - return FormatLogfmtUint64(uint64(v)) - case uint64: - return FormatLogfmtUint64(v) - case string: - return escapeString(v) - default: - return escapeString(fmt.Sprintf("%+v", value)) + return appendEscapeString(tmp, v.String()) } + + // We can use the 'tmp' as a scratch-buffer, to first format the + // value, and in a second step do escaping. + internal := fmt.Appendf(tmp, "%+v", value) + return appendEscapeString(tmp, string(internal)) } -// FormatLogfmtInt64 formats n with thousand separators. -func FormatLogfmtInt64(n int64) string { +// appendInt64 formats n with thousand separators and writes into buffer dst. +func appendInt64(dst []byte, n int64) []byte { if n < 0 { - return formatLogfmtUint64(uint64(-n), true) + return appendUint64(dst, uint64(-n), true) } - return formatLogfmtUint64(uint64(n), false) -} - -// FormatLogfmtUint64 formats n with thousand separators. -func FormatLogfmtUint64(n uint64) string { - return formatLogfmtUint64(n, false) + return appendUint64(dst, uint64(n), false) } -func formatLogfmtUint64(n uint64, neg bool) string { +// appendUint64 formats n with thousand separators and writes into buffer dst. +func appendUint64(dst []byte, n uint64, neg bool) []byte { // Small numbers are fine as is if n < 100000 { if neg { - return strconv.Itoa(-int(n)) + return strconv.AppendInt(dst, -int64(n), 10) } else { - return strconv.Itoa(int(n)) + return strconv.AppendInt(dst, int64(n), 10) } } // Large numbers should be split @@ -250,16 +251,21 @@ func formatLogfmtUint64(n uint64, neg bool) string { out[i] = '-' i-- } - return string(out[i+1:]) + return append(dst, out[i+1:]...) } -// formatLogfmtBigInt formats n with thousand separators. -func formatLogfmtBigInt(n *big.Int) string { +// FormatLogfmtUint64 formats n with thousand separators. +func FormatLogfmtUint64(n uint64) string { + return string(appendUint64(nil, n, false)) +} + +// appendBigInt formats n with thousand separators and writes to dst. +func appendBigInt(dst []byte, n *big.Int) []byte { if n.IsUint64() { - return FormatLogfmtUint64(n.Uint64()) + return appendUint64(dst, n.Uint64(), false) } if n.IsInt64() { - return FormatLogfmtInt64(n.Int64()) + return appendInt64(dst, n.Int64()) } var ( @@ -284,54 +290,48 @@ func formatLogfmtBigInt(n *big.Int) string { comma++ } } - return string(buf[i+1:]) + return append(dst, buf[i+1:]...) } -// formatLogfmtUint256 formats n with thousand separators. -func formatLogfmtUint256(n *uint256.Int) string { +// appendU256 formats n with thousand separators. +func appendU256(dst []byte, n *uint256.Int) []byte { if n.IsUint64() { - return FormatLogfmtUint64(n.Uint64()) + return appendUint64(dst, n.Uint64(), false) } - var ( - text = n.Dec() - buf = make([]byte, len(text)+len(text)/3) - comma = 0 - i = len(buf) - 1 - ) - for j := len(text) - 1; j >= 0; j, i = j-1, i-1 { - c := text[j] - - switch { - case c == '-': - buf[i] = c - case comma == 3: - buf[i] = ',' - i-- - comma = 0 - fallthrough - default: - buf[i] = c - comma++ - } - } - return string(buf[i+1:]) + res := []byte(n.PrettyDec(',')) + return append(dst, res...) } -// escapeString checks if the provided string needs escaping/quoting, and -// calls strconv.Quote if needed -func escapeString(s string) string { +// appendEscapeString writes the string s to the given writer, with +// escaping/quoting if needed. +func appendEscapeString(dst []byte, s string) []byte { needsQuoting := false + needsEscaping := false for _, r := range s { - // We quote everything below " (0x22) and above~ (0x7E), plus equal-sign - if r <= '"' || r > '~' || r == '=' { + // If it contains spaces or equal-sign, we need to quote it. + if r == ' ' || r == '=' { needsQuoting = true + continue + } + // We need to escape it, if it contains + // - character " (0x22) and lower (except space) + // - characters above ~ (0x7E), plus equal-sign + if r <= '"' || r > '~' { + needsEscaping = true break } } - if !needsQuoting { - return s + if needsEscaping { + return strconv.AppendQuote(dst, s) } - return strconv.Quote(s) + // No escaping needed, but we might have to place within quote-marks, in case + // it contained a space + if needsQuoting { + dst = append(dst, '"') + dst = append(dst, []byte(s)...) + return append(dst, '"') + } + return append(dst, []byte(s)...) } // escapeMessage checks if the provided string needs escaping/quoting, similarly @@ -356,3 +356,45 @@ func escapeMessage(s string) string { } return strconv.Quote(s) } + +// writeTimeTermFormat writes on the format "01-02|15:04:05.000" +func writeTimeTermFormat(buf *bytes.Buffer, t time.Time) { + _, month, day := t.Date() + writePosIntWidth(buf, int(month), 2) + buf.WriteByte('-') + writePosIntWidth(buf, day, 2) + buf.WriteByte('|') + hour, min, sec := t.Clock() + writePosIntWidth(buf, hour, 2) + buf.WriteByte(':') + writePosIntWidth(buf, min, 2) + buf.WriteByte(':') + writePosIntWidth(buf, sec, 2) + ns := t.Nanosecond() + buf.WriteByte('.') + writePosIntWidth(buf, ns/1e6, 3) +} + +// writePosIntWidth writes non-negative integer i to the buffer, padded on the left +// by zeroes to the given width. Use a width of 0 to omit padding. +// Adapted from golang.org/x/exp/slog/internal/buffer/buffer.go +func writePosIntWidth(b *bytes.Buffer, i, width int) { + // Cheap integer to fixed-width decimal ASCII. + // Copied from log/log.go. + if i < 0 { + panic("negative int") + } + // Assemble decimal in reverse order. + var bb [20]byte + bp := len(bb) - 1 + for i >= 10 || width > 1 { + width-- + q := i / 10 + bb[bp] = byte('0' + i - q*10) + bp-- + i = q + } + // i < 10 + bb[bp] = byte('0' + i) + b.Write(bb[bp:]) +} diff --git a/log/format_test.go b/log/format_test.go index 41e1809c38..d4c1df4abc 100644 --- a/log/format_test.go +++ b/log/format_test.go @@ -5,18 +5,20 @@ import ( "testing" ) -var sink string +var sink []byte func BenchmarkPrettyInt64Logfmt(b *testing.B) { + buf := make([]byte, 100) b.ReportAllocs() for i := 0; i < b.N; i++ { - sink = FormatLogfmtInt64(rand.Int63()) + sink = appendInt64(buf, rand.Int63()) } } func BenchmarkPrettyUint64Logfmt(b *testing.B) { + buf := make([]byte, 100) b.ReportAllocs() for i := 0; i < b.N; i++ { - sink = FormatLogfmtUint64(rand.Uint64()) + sink = appendUint64(buf, rand.Uint64(), false) } } diff --git a/log/handler.go b/log/handler.go index ef1bcc1992..1a25577450 100644 --- a/log/handler.go +++ b/log/handler.go @@ -81,6 +81,8 @@ type TerminalHandler struct { // fieldPadding is a map with maximum field value lengths seen until now // to allow padding log contexts in a bit smarter way. fieldPadding map[string]int + + buf []byte } // NewTerminalHandler returns a handler which formats log records at all levels optimized for human readability on @@ -110,7 +112,9 @@ func NewTerminalHandlerWithLevel(wr io.Writer, lvl slog.Level, useColor bool) *T func (h *TerminalHandler) Handle(_ context.Context, r slog.Record) error { h.mu.Lock() defer h.mu.Unlock() - h.wr.Write(h.TerminalFormat(r, h.useColor)) + buf := h.TerminalFormat(h.buf, r, h.useColor) + h.wr.Write(buf) + h.buf = buf[:0] return nil } diff --git a/log/logger_test.go b/log/logger_test.go index fca1f1680f..27e90c5fd2 100644 --- a/log/logger_test.go +++ b/log/logger_test.go @@ -2,10 +2,15 @@ package log import ( "bytes" + "fmt" + "io" + "math/big" "os" "strings" "testing" + "time" + "github.com/holiman/uint256" "golang.org/x/exp/slog" ) @@ -51,3 +56,119 @@ func BenchmarkTraceLogging(b *testing.B) { Trace("a message", "v", i) } } + +func BenchmarkTerminalHandler(b *testing.B) { + l := NewLogger(NewTerminalHandler(io.Discard, false)) + benchmarkLogger(b, l) +} +func BenchmarkLogfmtHandler(b *testing.B) { + l := NewLogger(LogfmtHandler(io.Discard)) + benchmarkLogger(b, l) +} + +func BenchmarkJSONHandler(b *testing.B) { + l := NewLogger(JSONHandler(io.Discard)) + benchmarkLogger(b, l) +} + +func benchmarkLogger(b *testing.B, l Logger) { + var ( + bb = make([]byte, 10) + tt = time.Now() + bigint = big.NewInt(100) + nilbig *big.Int + err = fmt.Errorf("Oh nooes it's crap") + ) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + l.Info("This is a message", + "foo", int16(i), + "bytes", bb, + "bonk", "a string with text", + "time", tt, + "bigint", bigint, + "nilbig", nilbig, + "err", err) + } + b.StopTimer() +} + +func TestLoggerOutput(t *testing.T) { + type custom struct { + A string + B int8 + } + var ( + customA = custom{"Foo", 12} + customB = custom{"Foo\nLinebreak", 122} + bb = make([]byte, 10) + tt = time.Time{} + bigint = big.NewInt(100) + nilbig *big.Int + err = fmt.Errorf("Oh nooes it's crap") + lazy = Lazy{Fn: func() interface{} { return "lazy value" }} + smallUint = uint256.NewInt(500_000) + bigUint = &uint256.Int{0xff, 0xff, 0xff, 0xff} + ) + + out := new(bytes.Buffer) + glogHandler := NewGlogHandler(NewTerminalHandler(out, false)) + glogHandler.Verbosity(LevelInfo) + NewLogger(glogHandler).Info("This is a message", + "foo", int16(123), + "bytes", bb, + "bonk", "a string with text", + "time", tt, + "bigint", bigint, + "nilbig", nilbig, + "err", err, + "struct", customA, + "struct", customB, + "ptrstruct", &customA, + "lazy", lazy, + "smalluint", smallUint, + "bigUint", bigUint) + + have := out.String() + t.Logf("output %v", out.String()) + want := `INFO [11-07|19:14:33.821] This is a message foo=123 bytes="[0 0 0 0 0 0 0 0 0 0]" bonk="a string with text" time=0001-01-01T00:00:00+0000 bigint=100 nilbig= err="Oh nooes it's crap" struct="{A:Foo B:12}" struct="{A:Foo\nLinebreak B:122}" ptrstruct="&{A:Foo B:12}" lazy="lazy value" smalluint=500,000 bigUint=1,600,660,942,523,603,594,864,898,306,482,794,244,293,965,082,972,225,630,372,095 +` + if !bytes.Equal([]byte(have)[25:], []byte(want)[25:]) { + t.Errorf("Error\nhave: %q\nwant: %q", have, want) + } +} + +const termTimeFormat = "01-02|15:04:05.000" + +func BenchmarkAppendFormat(b *testing.B) { + var now = time.Now() + b.Run("fmt time.Format", func(b *testing.B) { + for i := 0; i < b.N; i++ { + fmt.Fprintf(io.Discard, "%s", now.Format(termTimeFormat)) + } + }) + b.Run("time.AppendFormat", func(b *testing.B) { + for i := 0; i < b.N; i++ { + now.AppendFormat(nil, termTimeFormat) + } + }) + var buf = new(bytes.Buffer) + b.Run("time.Custom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + writeTimeTermFormat(buf, now) + buf.Reset() + } + }) +} + +func TestTermTimeFormat(t *testing.T) { + var now = time.Now() + want := now.AppendFormat(nil, termTimeFormat) + var b = new(bytes.Buffer) + writeTimeTermFormat(b, now) + have := b.Bytes() + if !bytes.Equal(have, want) { + t.Errorf("have != want\nhave: %q\nwant: %q\n", have, want) + } +} From 5fb8ebc9ecb226b84181420b9871c5f61cf4f77d Mon Sep 17 00:00:00 2001 From: Delweng Date: Fri, 1 Dec 2023 21:08:52 +0800 Subject: [PATCH 111/223] eth/tracers: tx-level state in debug_traceCall (#28460) --- eth/tracers/api.go | 18 +++++-- eth/tracers/api_test.go | 116 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 125 insertions(+), 9 deletions(-) diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 300d904a99..7c0028601d 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -164,6 +164,7 @@ type TraceCallConfig struct { TraceConfig StateOverrides *ethapi.StateOverride BlockOverrides *ethapi.BlockOverrides + TxIndex *hexutil.Uint } // StdTraceConfig holds extra parameters to standard-json trace functions. @@ -863,11 +864,17 @@ func (api *API) TraceTransaction(ctx context.Context, hash common.Hash, config * // TraceCall lets you trace a given eth_call. It collects the structured logs // created during the execution of EVM if the given transaction was added on // top of the provided block and returns them as a JSON object. +// If no transaction index is specified, the trace will be conducted on the state +// after executing the specified block. However, if a transaction index is provided, +// the trace will be conducted on the state after executing the specified transaction +// within the specified block. func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, blockNrOrHash rpc.BlockNumberOrHash, config *TraceCallConfig) (interface{}, error) { // Try to retrieve the specified block var ( - err error - block *types.Block + err error + block *types.Block + statedb *state.StateDB + release StateReleaseFunc ) if hash, ok := blockNrOrHash.Hash(); ok { block, err = api.blockByHash(ctx, hash) @@ -892,7 +899,12 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc if config != nil && config.Reexec != nil { reexec = *config.Reexec } - statedb, release, err := api.backend.StateAtBlock(ctx, block, reexec, nil, true, false) + + if config != nil && config.TxIndex != nil { + _, _, statedb, release, err = api.backend.StateAtTransaction(ctx, block, int(*config.TxIndex), reexec) + } else { + statedb, release, err = api.backend.StateAtBlock(ctx, block, reexec, nil, true, false) + } if err != nil { return nil, err } diff --git a/eth/tracers/api_test.go b/eth/tracers/api_test.go index 0f78af9a01..49c3ebb67d 100644 --- a/eth/tracers/api_test.go +++ b/eth/tracers/api_test.go @@ -200,13 +200,51 @@ func TestTraceCall(t *testing.T) { } genBlocks := 10 signer := types.HomesteadSigner{} + nonce := uint64(0) backend := newTestBackend(t, genBlocks, genesis, func(i int, b *core.BlockGen) { // Transfer from account[0] to account[1] // value: 1000 wei // fee: 0 wei - tx, _ := types.SignTx(types.NewTransaction(uint64(i), accounts[1].addr, big.NewInt(1000), params.TxGas, b.BaseFee(), nil), signer, accounts[0].key) + tx, _ := types.SignTx(types.NewTx(&types.LegacyTx{ + Nonce: nonce, + To: &accounts[1].addr, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: b.BaseFee(), + Data: nil}), + signer, accounts[0].key) b.AddTx(tx) + nonce++ + + if i == genBlocks-2 { + // Transfer from account[0] to account[2] + tx, _ = types.SignTx(types.NewTx(&types.LegacyTx{ + Nonce: nonce, + To: &accounts[2].addr, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: b.BaseFee(), + Data: nil}), + signer, accounts[0].key) + b.AddTx(tx) + nonce++ + + // Transfer from account[0] to account[1] again + tx, _ = types.SignTx(types.NewTx(&types.LegacyTx{ + Nonce: nonce, + To: &accounts[1].addr, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: b.BaseFee(), + Data: nil}), + signer, accounts[0].key) + b.AddTx(tx) + nonce++ + } }) + + uintPtr := func(i int) *hexutil.Uint { x := hexutil.Uint(i); return &x } + defer backend.teardown() api := NewAPI(backend) var testSuite = []struct { @@ -240,6 +278,51 @@ func TestTraceCall(t *testing.T) { expectErr: nil, expect: `{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}`, }, + // Upon the last state, default to the post block's state + { + blockNumber: rpc.BlockNumber(genBlocks - 1), + call: ethapi.TransactionArgs{ + From: &accounts[2].addr, + To: &accounts[0].addr, + Value: (*hexutil.Big)(new(big.Int).Add(big.NewInt(params.Ether), big.NewInt(100))), + }, + config: nil, + expect: `{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}`, + }, + // Before the first transaction, should be failed + { + blockNumber: rpc.BlockNumber(genBlocks - 1), + call: ethapi.TransactionArgs{ + From: &accounts[2].addr, + To: &accounts[0].addr, + Value: (*hexutil.Big)(new(big.Int).Add(big.NewInt(params.Ether), big.NewInt(100))), + }, + config: &TraceCallConfig{TxIndex: uintPtr(0)}, + expectErr: fmt.Errorf("tracing failed: insufficient funds for gas * price + value: address %s have 1000000000000000000 want 1000000000000000100", accounts[2].addr), + }, + // Before the target transaction, should be failed + { + blockNumber: rpc.BlockNumber(genBlocks - 1), + call: ethapi.TransactionArgs{ + From: &accounts[2].addr, + To: &accounts[0].addr, + Value: (*hexutil.Big)(new(big.Int).Add(big.NewInt(params.Ether), big.NewInt(100))), + }, + config: &TraceCallConfig{TxIndex: uintPtr(1)}, + expectErr: fmt.Errorf("tracing failed: insufficient funds for gas * price + value: address %s have 1000000000000000000 want 1000000000000000100", accounts[2].addr), + }, + // After the target transaction, should be succeed + { + blockNumber: rpc.BlockNumber(genBlocks - 1), + call: ethapi.TransactionArgs{ + From: &accounts[2].addr, + To: &accounts[0].addr, + Value: (*hexutil.Big)(new(big.Int).Add(big.NewInt(params.Ether), big.NewInt(100))), + }, + config: &TraceCallConfig{TxIndex: uintPtr(2)}, + expectErr: nil, + expect: `{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}`, + }, // Standard JSON trace upon the non-existent block, error expects { blockNumber: rpc.BlockNumber(genBlocks + 1), @@ -297,8 +380,8 @@ func TestTraceCall(t *testing.T) { t.Errorf("test %d: expect error %v, got nothing", i, testspec.expectErr) continue } - if !reflect.DeepEqual(err, testspec.expectErr) { - t.Errorf("test %d: error mismatch, want %v, git %v", i, testspec.expectErr, err) + if !reflect.DeepEqual(err.Error(), testspec.expectErr.Error()) { + t.Errorf("test %d: error mismatch, want '%v', got '%v'", i, testspec.expectErr, err) } } else { if err != nil { @@ -338,7 +421,14 @@ func TestTraceTransaction(t *testing.T) { // Transfer from account[0] to account[1] // value: 1000 wei // fee: 0 wei - tx, _ := types.SignTx(types.NewTransaction(uint64(i), accounts[1].addr, big.NewInt(1000), params.TxGas, b.BaseFee(), nil), signer, accounts[0].key) + tx, _ := types.SignTx(types.NewTx(&types.LegacyTx{ + Nonce: uint64(i), + To: &accounts[1].addr, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: b.BaseFee(), + Data: nil}), + signer, accounts[0].key) b.AddTx(tx) target = tx.Hash() }) @@ -388,7 +478,14 @@ func TestTraceBlock(t *testing.T) { // Transfer from account[0] to account[1] // value: 1000 wei // fee: 0 wei - tx, _ := types.SignTx(types.NewTransaction(uint64(i), accounts[1].addr, big.NewInt(1000), params.TxGas, b.BaseFee(), nil), signer, accounts[0].key) + tx, _ := types.SignTx(types.NewTx(&types.LegacyTx{ + Nonce: uint64(i), + To: &accounts[1].addr, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: b.BaseFee(), + Data: nil}), + signer, accounts[0].key) b.AddTx(tx) txHash = tx.Hash() }) @@ -478,7 +575,14 @@ func TestTracingWithOverrides(t *testing.T) { // Transfer from account[0] to account[1] // value: 1000 wei // fee: 0 wei - tx, _ := types.SignTx(types.NewTransaction(uint64(i), accounts[1].addr, big.NewInt(1000), params.TxGas, b.BaseFee(), nil), signer, accounts[0].key) + tx, _ := types.SignTx(types.NewTx(&types.LegacyTx{ + Nonce: uint64(i), + To: &accounts[1].addr, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: b.BaseFee(), + Data: nil}), + signer, accounts[0].key) b.AddTx(tx) }) defer backend.chain.Stop() From 6e488c244934ea84062cb35d3af26670e1d20e25 Mon Sep 17 00:00:00 2001 From: ddl Date: Mon, 4 Dec 2023 17:52:55 +0800 Subject: [PATCH 112/223] cmd/evm: fix Env struct json tag (#28635) --- cmd/evm/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/evm/README.md b/cmd/evm/README.md index e6c6fe06ad..41d8ced278 100644 --- a/cmd/evm/README.md +++ b/cmd/evm/README.md @@ -88,7 +88,7 @@ type Env struct { CurrentTimestamp uint64 `json:"currentTimestamp"` Withdrawals []*Withdrawal `json:"withdrawals"` // optional - CurrentDifficulty *big.Int `json:"currentDifficuly"` + CurrentDifficulty *big.Int `json:"currentDifficulty"` CurrentRandom *big.Int `json:"currentRandom"` CurrentBaseFee *big.Int `json:"currentBaseFee"` ParentDifficulty *big.Int `json:"parentDifficulty"` From f04e5bde7487ce554930187e766164b18c37d867 Mon Sep 17 00:00:00 2001 From: BorkBorked <107079055+BorkBorked@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:53:42 +0100 Subject: [PATCH 113/223] accounts/abi/bind: fixed typos (#28634) * Update auth.go * Update backend.go * Update bind.go * Update bind_test.go --- accounts/abi/bind/auth.go | 2 +- accounts/abi/bind/backend.go | 2 +- accounts/abi/bind/bind.go | 2 +- accounts/abi/bind/bind_test.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/accounts/abi/bind/auth.go b/accounts/abi/bind/auth.go index 494dc88a57..91913ec3b2 100644 --- a/accounts/abi/bind/auth.go +++ b/accounts/abi/bind/auth.go @@ -56,7 +56,7 @@ func NewTransactor(keyin io.Reader, passphrase string) (*TransactOpts, error) { } // NewKeyStoreTransactor is a utility method to easily create a transaction signer from -// an decrypted key from a keystore. +// a decrypted key from a keystore. // // Deprecated: Use NewKeyStoreTransactorWithChainID instead. func NewKeyStoreTransactor(keystore *keystore.KeyStore, account accounts.Account) (*TransactOpts, error) { diff --git a/accounts/abi/bind/backend.go b/accounts/abi/bind/backend.go index d13b919641..2e45e86ae2 100644 --- a/accounts/abi/bind/backend.go +++ b/accounts/abi/bind/backend.go @@ -75,7 +75,7 @@ type BlockHashContractCaller interface { // CodeAtHash returns the code of the given account in the state at the specified block hash. CodeAtHash(ctx context.Context, contract common.Address, blockHash common.Hash) ([]byte, error) - // CallContractAtHash executes an Ethereum contract all against the state at the specified block hash. + // CallContractAtHash executes an Ethereum contract call against the state at the specified block hash. CallContractAtHash(ctx context.Context, call ethereum.CallMsg, blockHash common.Hash) ([]byte, error) } diff --git a/accounts/abi/bind/bind.go b/accounts/abi/bind/bind.go index 8a54a0e6ef..ec28013463 100644 --- a/accounts/abi/bind/bind.go +++ b/accounts/abi/bind/bind.go @@ -363,7 +363,7 @@ func bindTopicTypeGo(kind abi.Type, structs map[string]*tmplStruct) string { // parameters that are not value types i.e. arrays and structs are not // stored directly but instead a keccak256-hash of an encoding is stored. // - // We only convert stringS and bytes to hash, still need to deal with + // We only convert strings and bytes to hash, still need to deal with // array(both fixed-size and dynamic-size) and struct. if bound == "string" || bound == "[]byte" { bound = "common.Hash" diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 1069f3d396..3191167a00 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -1677,7 +1677,7 @@ var bindTests = []struct { } sim.Commit() - // This test the existence of the free retreiver call for view and pure functions + // This test the existence of the free retriever call for view and pure functions if num, err := pav.PureFunc(nil); err != nil { t.Fatalf("Failed to call anonymous field retriever: %v", err) } else if num.Cmp(big.NewInt(42)) != 0 { From 70fd0b635e4198fe8695ff14f62c6736e71b5f27 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 4 Dec 2023 17:55:17 +0530 Subject: [PATCH 114/223] eth/fetcher: fix invalid tracking of received at time for block (#28637) eth/fetcher: fix invalid tracking of received at time --- eth/fetcher/block_fetcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/fetcher/block_fetcher.go b/eth/fetcher/block_fetcher.go index 8751c4e3ea..126eaaea7f 100644 --- a/eth/fetcher/block_fetcher.go +++ b/eth/fetcher/block_fetcher.go @@ -483,7 +483,7 @@ func (f *BlockFetcher) loop() { select { case res := <-resCh: res.Done <- nil - f.FilterHeaders(peer, *res.Res.(*eth.BlockHeadersRequest), time.Now().Add(res.Time)) + f.FilterHeaders(peer, *res.Res.(*eth.BlockHeadersRequest), time.Now()) case <-timeout.C: // The peer didn't respond in time. The request From 2e13b01046aade91e0fe2097a08b761acd413364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Anda=20Estensen?= Date: Mon, 4 Dec 2023 14:55:06 +0100 Subject: [PATCH 115/223] accounts: run tests in parallel (#28544) --- accounts/abi/abi_test.go | 24 ++++++++++++++++ accounts/abi/abifuzzer_test.go | 1 + accounts/abi/bind/backends/simulated_test.go | 29 ++++++++++++++++++++ accounts/abi/bind/base_test.go | 10 +++++++ accounts/abi/bind/bind_test.go | 1 + accounts/abi/bind/util_test.go | 2 ++ accounts/abi/event_test.go | 6 ++++ accounts/abi/method_test.go | 2 ++ accounts/abi/pack_test.go | 5 ++++ accounts/abi/reflect_test.go | 4 +++ accounts/abi/selector_parser_test.go | 1 + accounts/abi/topics_test.go | 9 ++++++ accounts/abi/type_test.go | 5 ++++ accounts/abi/unpack_test.go | 12 ++++++++ accounts/accounts_test.go | 1 + accounts/hd_test.go | 2 ++ accounts/keystore/account_cache_test.go | 3 ++ accounts/keystore/keystore_test.go | 7 +++++ accounts/keystore/passphrase_test.go | 1 + accounts/keystore/plain_test.go | 4 +++ accounts/url_test.go | 5 ++++ 21 files changed, 134 insertions(+) diff --git a/accounts/abi/abi_test.go b/accounts/abi/abi_test.go index 84175df4bb..bc76df0dc2 100644 --- a/accounts/abi/abi_test.go +++ b/accounts/abi/abi_test.go @@ -120,6 +120,7 @@ var methods = map[string]Method{ } func TestReader(t *testing.T) { + t.Parallel() abi := ABI{ Methods: methods, } @@ -151,6 +152,7 @@ func TestReader(t *testing.T) { } func TestInvalidABI(t *testing.T) { + t.Parallel() json := `[{ "type" : "function", "name" : "", "constant" : fals }]` _, err := JSON(strings.NewReader(json)) if err == nil { @@ -170,6 +172,7 @@ func TestInvalidABI(t *testing.T) { // constructor(uint256 a, uint256 b) public{} // } func TestConstructor(t *testing.T) { + t.Parallel() json := `[{ "inputs": [{"internalType": "uint256","name": "a","type": "uint256" },{ "internalType": "uint256","name": "b","type": "uint256"}],"stateMutability": "nonpayable","type": "constructor"}]` method := NewMethod("", "", Constructor, "nonpayable", false, false, []Argument{{"a", Uint256, false}, {"b", Uint256, false}}, nil) // Test from JSON @@ -199,6 +202,7 @@ func TestConstructor(t *testing.T) { } func TestTestNumbers(t *testing.T) { + t.Parallel() abi, err := JSON(strings.NewReader(jsondata)) if err != nil { t.Fatal(err) @@ -236,6 +240,7 @@ func TestTestNumbers(t *testing.T) { } func TestMethodSignature(t *testing.T) { + t.Parallel() m := NewMethod("foo", "foo", Function, "", false, false, []Argument{{"bar", String, false}, {"baz", String, false}}, nil) exp := "foo(string,string)" if m.Sig != exp { @@ -274,6 +279,7 @@ func TestMethodSignature(t *testing.T) { } func TestOverloadedMethodSignature(t *testing.T) { + t.Parallel() json := `[{"constant":true,"inputs":[{"name":"i","type":"uint256"},{"name":"j","type":"uint256"}],"name":"foo","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"foo","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"i","type":"uint256"}],"name":"bar","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"i","type":"uint256"},{"indexed":false,"name":"j","type":"uint256"}],"name":"bar","type":"event"}]` abi, err := JSON(strings.NewReader(json)) if err != nil { @@ -297,6 +303,7 @@ func TestOverloadedMethodSignature(t *testing.T) { } func TestCustomErrors(t *testing.T) { + t.Parallel() json := `[{ "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ],"name": "MyError", "type": "error"} ]` abi, err := JSON(strings.NewReader(json)) if err != nil { @@ -311,6 +318,7 @@ func TestCustomErrors(t *testing.T) { } func TestMultiPack(t *testing.T) { + t.Parallel() abi, err := JSON(strings.NewReader(jsondata)) if err != nil { t.Fatal(err) @@ -348,6 +356,7 @@ func ExampleJSON() { } func TestInputVariableInputLength(t *testing.T) { + t.Parallel() const definition = `[ { "type" : "function", "name" : "strOne", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" } ] }, { "type" : "function", "name" : "bytesOne", "constant" : true, "inputs" : [ { "name" : "str", "type" : "bytes" } ] }, @@ -476,6 +485,7 @@ func TestInputVariableInputLength(t *testing.T) { } func TestInputFixedArrayAndVariableInputLength(t *testing.T) { + t.Parallel() abi, err := JSON(strings.NewReader(jsondata)) if err != nil { t.Error(err) @@ -650,6 +660,7 @@ func TestInputFixedArrayAndVariableInputLength(t *testing.T) { } func TestDefaultFunctionParsing(t *testing.T) { + t.Parallel() const definition = `[{ "name" : "balance", "type" : "function" }]` abi, err := JSON(strings.NewReader(definition)) @@ -663,6 +674,7 @@ func TestDefaultFunctionParsing(t *testing.T) { } func TestBareEvents(t *testing.T) { + t.Parallel() const definition = `[ { "type" : "event", "name" : "balance" }, { "type" : "event", "name" : "anon", "anonymous" : true}, @@ -739,6 +751,7 @@ func TestBareEvents(t *testing.T) { // // receipt{status=1 cgas=23949 bloom=00000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000040200000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 logs=[log: b6818c8064f645cd82d99b59a1a267d6d61117ef [75fd880d39c1daf53b6547ab6cb59451fc6452d27caa90e5b6649dd8293b9eed] 000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158 9ae378b6d4409eada347a5dc0c180f186cb62dc68fcc0f043425eb917335aa28 0 95d429d309bb9d753954195fe2d69bd140b4ae731b9b5b605c34323de162cf00 0]} func TestUnpackEvent(t *testing.T) { + t.Parallel() const abiJSON = `[{"constant":false,"inputs":[{"name":"memo","type":"bytes"}],"name":"receive","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"memo","type":"bytes"}],"name":"received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"receivedAddr","type":"event"}]` abi, err := JSON(strings.NewReader(abiJSON)) if err != nil { @@ -777,6 +790,7 @@ func TestUnpackEvent(t *testing.T) { } func TestUnpackEventIntoMap(t *testing.T) { + t.Parallel() const abiJSON = `[{"constant":false,"inputs":[{"name":"memo","type":"bytes"}],"name":"receive","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"memo","type":"bytes"}],"name":"received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"receivedAddr","type":"event"}]` abi, err := JSON(strings.NewReader(abiJSON)) if err != nil { @@ -827,6 +841,7 @@ func TestUnpackEventIntoMap(t *testing.T) { } func TestUnpackMethodIntoMap(t *testing.T) { + t.Parallel() const abiJSON = `[{"constant":false,"inputs":[{"name":"memo","type":"bytes"}],"name":"receive","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"send","outputs":[{"name":"amount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"get","outputs":[{"name":"hash","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"}]` abi, err := JSON(strings.NewReader(abiJSON)) if err != nil { @@ -877,6 +892,7 @@ func TestUnpackMethodIntoMap(t *testing.T) { } func TestUnpackIntoMapNamingConflict(t *testing.T) { + t.Parallel() // Two methods have the same name var abiJSON = `[{"constant":false,"inputs":[{"name":"memo","type":"bytes"}],"name":"get","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"send","outputs":[{"name":"amount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"get","outputs":[{"name":"hash","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"}]` abi, err := JSON(strings.NewReader(abiJSON)) @@ -960,6 +976,7 @@ func TestUnpackIntoMapNamingConflict(t *testing.T) { } func TestABI_MethodById(t *testing.T) { + t.Parallel() abi, err := JSON(strings.NewReader(jsondata)) if err != nil { t.Fatal(err) @@ -992,6 +1009,7 @@ func TestABI_MethodById(t *testing.T) { } func TestABI_EventById(t *testing.T) { + t.Parallel() tests := []struct { name string json string @@ -1058,6 +1076,7 @@ func TestABI_EventById(t *testing.T) { } func TestABI_ErrorByID(t *testing.T) { + t.Parallel() abi, err := JSON(strings.NewReader(`[ {"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"MyError1","type":"error"}, {"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"string","name":"b","type":"string"},{"internalType":"address","name":"c","type":"address"}],"internalType":"struct MyError.MyStruct","name":"x","type":"tuple"},{"internalType":"address","name":"y","type":"address"},{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"string","name":"b","type":"string"},{"internalType":"address","name":"c","type":"address"}],"internalType":"struct MyError.MyStruct","name":"z","type":"tuple"}],"name":"MyError2","type":"error"}, @@ -1088,6 +1107,7 @@ func TestABI_ErrorByID(t *testing.T) { // TestDoubleDuplicateMethodNames checks that if transfer0 already exists, there won't be a name // conflict and that the second transfer method will be renamed transfer1. func TestDoubleDuplicateMethodNames(t *testing.T) { + t.Parallel() abiJSON := `[{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transfer0","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"customFallback","type":"string"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]` contractAbi, err := JSON(strings.NewReader(abiJSON)) if err != nil { @@ -1117,6 +1137,7 @@ func TestDoubleDuplicateMethodNames(t *testing.T) { // event send(); // } func TestDoubleDuplicateEventNames(t *testing.T) { + t.Parallel() abiJSON := `[{"anonymous": false,"inputs": [{"indexed": false,"internalType": "uint256","name": "a","type": "uint256"}],"name": "send","type": "event"},{"anonymous": false,"inputs": [],"name": "send0","type": "event"},{ "anonymous": false, "inputs": [],"name": "send","type": "event"}]` contractAbi, err := JSON(strings.NewReader(abiJSON)) if err != nil { @@ -1144,6 +1165,7 @@ func TestDoubleDuplicateEventNames(t *testing.T) { // event send(uint256, uint256); // } func TestUnnamedEventParam(t *testing.T) { + t.Parallel() abiJSON := `[{ "anonymous": false, "inputs": [{ "indexed": false,"internalType": "uint256", "name": "","type": "uint256"},{"indexed": false,"internalType": "uint256","name": "","type": "uint256"}],"name": "send","type": "event"}]` contractAbi, err := JSON(strings.NewReader(abiJSON)) if err != nil { @@ -1177,7 +1199,9 @@ func TestUnpackRevert(t *testing.T) { {"4e487b7100000000000000000000000000000000000000000000000000000000000000ff", "unknown panic code: 0xff", nil}, } for index, c := range cases { + index, c := index, c t.Run(fmt.Sprintf("case %d", index), func(t *testing.T) { + t.Parallel() got, err := UnpackRevert(common.Hex2Bytes(c.input)) if c.expectErr != nil { if err == nil { diff --git a/accounts/abi/abifuzzer_test.go b/accounts/abi/abifuzzer_test.go index 4b67947815..dbf6ab6c54 100644 --- a/accounts/abi/abifuzzer_test.go +++ b/accounts/abi/abifuzzer_test.go @@ -28,6 +28,7 @@ import ( // TestReplicate can be used to replicate crashers from the fuzzing tests. // Just replace testString with the data in .quoted func TestReplicate(t *testing.T) { + t.Parallel() //t.Skip("Test only useful for reproducing issues") fuzzAbi([]byte("\x20\x20\x20\x20\x20\x20\x20\x20\x80\x00\x00\x00\x20\x20\x20\x20\x00")) //fuzzAbi([]byte("asdfasdfkadsf;lasdf;lasd;lfk")) diff --git a/accounts/abi/bind/backends/simulated_test.go b/accounts/abi/bind/backends/simulated_test.go index a41d168411..a2acf7ead5 100644 --- a/accounts/abi/bind/backends/simulated_test.go +++ b/accounts/abi/bind/backends/simulated_test.go @@ -38,6 +38,7 @@ import ( ) func TestSimulatedBackend(t *testing.T) { + t.Parallel() var gasLimit uint64 = 8000029 key, _ := crypto.GenerateKey() // nolint: gosec auth, _ := bind.NewKeyedTransactorWithChainID(key, big.NewInt(1337)) @@ -121,6 +122,7 @@ func simTestBackend(testAddr common.Address) *SimulatedBackend { } func TestNewSimulatedBackend(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) expectedBal := big.NewInt(10000000000000000) sim := simTestBackend(testAddr) @@ -142,6 +144,7 @@ func TestNewSimulatedBackend(t *testing.T) { } func TestAdjustTime(t *testing.T) { + t.Parallel() sim := NewSimulatedBackend( core.GenesisAlloc{}, 10000000, ) @@ -159,6 +162,7 @@ func TestAdjustTime(t *testing.T) { } func TestNewAdjustTimeFail(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.blockchain.Stop() @@ -202,6 +206,7 @@ func TestNewAdjustTimeFail(t *testing.T) { } func TestBalanceAt(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) expectedBal := big.NewInt(10000000000000000) sim := simTestBackend(testAddr) @@ -219,6 +224,7 @@ func TestBalanceAt(t *testing.T) { } func TestBlockByHash(t *testing.T) { + t.Parallel() sim := NewSimulatedBackend( core.GenesisAlloc{}, 10000000, ) @@ -240,6 +246,7 @@ func TestBlockByHash(t *testing.T) { } func TestBlockByNumber(t *testing.T) { + t.Parallel() sim := NewSimulatedBackend( core.GenesisAlloc{}, 10000000, ) @@ -275,6 +282,7 @@ func TestBlockByNumber(t *testing.T) { } func TestNonceAt(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -328,6 +336,7 @@ func TestNonceAt(t *testing.T) { } func TestSendTransaction(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -362,6 +371,7 @@ func TestSendTransaction(t *testing.T) { } func TestTransactionByHash(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := NewSimulatedBackend( @@ -416,6 +426,7 @@ func TestTransactionByHash(t *testing.T) { } func TestEstimateGas(t *testing.T) { + t.Parallel() /* pragma solidity ^0.6.4; contract GasEstimation { @@ -535,6 +546,7 @@ func TestEstimateGas(t *testing.T) { } func TestEstimateGasWithPrice(t *testing.T) { + t.Parallel() key, _ := crypto.GenerateKey() addr := crypto.PubkeyToAddress(key.PublicKey) @@ -625,6 +637,7 @@ func TestEstimateGasWithPrice(t *testing.T) { } func TestHeaderByHash(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -646,6 +659,7 @@ func TestHeaderByHash(t *testing.T) { } func TestHeaderByNumber(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -692,6 +706,7 @@ func TestHeaderByNumber(t *testing.T) { } func TestTransactionCount(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -744,6 +759,7 @@ func TestTransactionCount(t *testing.T) { } func TestTransactionInBlock(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -809,6 +825,7 @@ func TestTransactionInBlock(t *testing.T) { } func TestPendingNonceAt(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -874,6 +891,7 @@ func TestPendingNonceAt(t *testing.T) { } func TestTransactionReceipt(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) @@ -908,6 +926,7 @@ func TestTransactionReceipt(t *testing.T) { } func TestSuggestGasPrice(t *testing.T) { + t.Parallel() sim := NewSimulatedBackend( core.GenesisAlloc{}, 10000000, @@ -924,6 +943,7 @@ func TestSuggestGasPrice(t *testing.T) { } func TestPendingCodeAt(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -960,6 +980,7 @@ func TestPendingCodeAt(t *testing.T) { } func TestCodeAt(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -997,6 +1018,7 @@ func TestCodeAt(t *testing.T) { } func TestCodeAtHash(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -1037,6 +1059,7 @@ func TestCodeAtHash(t *testing.T) { // // receipt{status=1 cgas=23949 bloom=00000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000040200000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 logs=[log: b6818c8064f645cd82d99b59a1a267d6d61117ef [75fd880d39c1daf53b6547ab6cb59451fc6452d27caa90e5b6649dd8293b9eed] 000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158 9ae378b6d4409eada347a5dc0c180f186cb62dc68fcc0f043425eb917335aa28 0 95d429d309bb9d753954195fe2d69bd140b4ae731b9b5b605c34323de162cf00 0]} func TestPendingAndCallContract(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -1138,6 +1161,7 @@ contract Reverter { } }*/ func TestCallContractRevert(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -1233,6 +1257,7 @@ func TestCallContractRevert(t *testing.T) { // Since Commit() was called 2n+1 times in total, // having a chain length of just n+1 means that a reorg occurred. func TestFork(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -1286,6 +1311,7 @@ const callableBin = "6080604052348015600f57600080fd5b5060998061001e6000396000f3f // 9. Re-send the transaction and mine a block. // 10. Check that the event was reborn. func TestForkLogsReborn(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -1359,6 +1385,7 @@ func TestForkLogsReborn(t *testing.T) { // 5. Mine a block, Re-send the transaction and mine another one. // 6. Check that the TX is now included in block 2. func TestForkResendTx(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -1395,6 +1422,7 @@ func TestForkResendTx(t *testing.T) { } func TestCommitReturnValue(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() @@ -1436,6 +1464,7 @@ func TestCommitReturnValue(t *testing.T) { // TestAdjustTimeAfterFork ensures that after a fork, AdjustTime uses the pending fork // block's parent rather than the canonical head's parent. func TestAdjustTimeAfterFork(t *testing.T) { + t.Parallel() testAddr := crypto.PubkeyToAddress(testKey.PublicKey) sim := simTestBackend(testAddr) defer sim.Close() diff --git a/accounts/abi/bind/base_test.go b/accounts/abi/bind/base_test.go index 44552ab121..f7eb7d14d3 100644 --- a/accounts/abi/bind/base_test.go +++ b/accounts/abi/bind/base_test.go @@ -135,6 +135,7 @@ func (mc *mockBlockHashCaller) CallContractAtHash(ctx context.Context, call ethe } func TestPassingBlockNumber(t *testing.T) { + t.Parallel() mc := &mockPendingCaller{ mockCaller: &mockCaller{ codeAtBytes: []byte{1, 2, 3}, @@ -186,6 +187,7 @@ func TestPassingBlockNumber(t *testing.T) { const hexData = "0x000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158" func TestUnpackIndexedStringTyLogIntoMap(t *testing.T) { + t.Parallel() hash := crypto.Keccak256Hash([]byte("testName")) topics := []common.Hash{ crypto.Keccak256Hash([]byte("received(string,address,uint256,bytes)")), @@ -207,6 +209,7 @@ func TestUnpackIndexedStringTyLogIntoMap(t *testing.T) { } func TestUnpackAnonymousLogIntoMap(t *testing.T) { + t.Parallel() mockLog := newMockLog(nil, common.HexToHash("0x0")) abiString := `[{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"received","type":"event"}]` @@ -224,6 +227,7 @@ func TestUnpackAnonymousLogIntoMap(t *testing.T) { } func TestUnpackIndexedSliceTyLogIntoMap(t *testing.T) { + t.Parallel() sliceBytes, err := rlp.EncodeToBytes([]string{"name1", "name2", "name3", "name4"}) if err != nil { t.Fatal(err) @@ -249,6 +253,7 @@ func TestUnpackIndexedSliceTyLogIntoMap(t *testing.T) { } func TestUnpackIndexedArrayTyLogIntoMap(t *testing.T) { + t.Parallel() arrBytes, err := rlp.EncodeToBytes([2]common.Address{common.HexToAddress("0x0"), common.HexToAddress("0x376c47978271565f56DEB45495afa69E59c16Ab2")}) if err != nil { t.Fatal(err) @@ -274,6 +279,7 @@ func TestUnpackIndexedArrayTyLogIntoMap(t *testing.T) { } func TestUnpackIndexedFuncTyLogIntoMap(t *testing.T) { + t.Parallel() mockAddress := common.HexToAddress("0x376c47978271565f56DEB45495afa69E59c16Ab2") addrBytes := mockAddress.Bytes() hash := crypto.Keccak256Hash([]byte("mockFunction(address,uint)")) @@ -300,6 +306,7 @@ func TestUnpackIndexedFuncTyLogIntoMap(t *testing.T) { } func TestUnpackIndexedBytesTyLogIntoMap(t *testing.T) { + t.Parallel() bytes := []byte{1, 2, 3, 4, 5} hash := crypto.Keccak256Hash(bytes) topics := []common.Hash{ @@ -322,6 +329,7 @@ func TestUnpackIndexedBytesTyLogIntoMap(t *testing.T) { } func TestTransactGasFee(t *testing.T) { + t.Parallel() assert := assert.New(t) // GasTipCap and GasFeeCap @@ -397,6 +405,7 @@ func newMockLog(topics []common.Hash, txHash common.Hash) types.Log { } func TestCall(t *testing.T) { + t.Parallel() var method, methodWithArg = "something", "somethingArrrrg" tests := []struct { name, method string @@ -572,6 +581,7 @@ func TestCall(t *testing.T) { // TestCrashers contains some strings which previously caused the abi codec to crash. func TestCrashers(t *testing.T) { + t.Parallel() abi.JSON(strings.NewReader(`[{"inputs":[{"type":"tuple[]","components":[{"type":"bool","name":"_1"}]}]}]`)) abi.JSON(strings.NewReader(`[{"inputs":[{"type":"tuple[]","components":[{"type":"bool","name":"&"}]}]}]`)) abi.JSON(strings.NewReader(`[{"inputs":[{"type":"tuple[]","components":[{"type":"bool","name":"----"}]}]}]`)) diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 3191167a00..a5f7afa73c 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -2067,6 +2067,7 @@ var bindTests = []struct { // Tests that packages generated by the binder can be successfully compiled and // the requested tester run against it. func TestGolangBindings(t *testing.T) { + t.Parallel() // Skip the test if no Go command can be found gocmd := runtime.GOROOT() + "/bin/go" if !common.FileExist(gocmd) { diff --git a/accounts/abi/bind/util_test.go b/accounts/abi/bind/util_test.go index 16110b5d27..826426632c 100644 --- a/accounts/abi/bind/util_test.go +++ b/accounts/abi/bind/util_test.go @@ -53,6 +53,7 @@ var waitDeployedTests = map[string]struct { } func TestWaitDeployed(t *testing.T) { + t.Parallel() for name, test := range waitDeployedTests { backend := backends.NewSimulatedBackend( core.GenesisAlloc{ @@ -100,6 +101,7 @@ func TestWaitDeployed(t *testing.T) { } func TestWaitDeployedCornerCases(t *testing.T) { + t.Parallel() backend := backends.NewSimulatedBackend( core.GenesisAlloc{ crypto.PubkeyToAddress(testKey.PublicKey): {Balance: big.NewInt(10000000000000000)}, diff --git a/accounts/abi/event_test.go b/accounts/abi/event_test.go index 8f73419496..fffe28ea63 100644 --- a/accounts/abi/event_test.go +++ b/accounts/abi/event_test.go @@ -81,6 +81,7 @@ var pledgeData1 = "00000000000000000000000000ce0d46d924cc8437c806721496599fc3ffa var mixedCaseData1 = "00000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000020489e8000000000000000000000000000000000000000000000000000000000000000f4241" func TestEventId(t *testing.T) { + t.Parallel() var table = []struct { definition string expectations map[string]common.Hash @@ -112,6 +113,7 @@ func TestEventId(t *testing.T) { } func TestEventString(t *testing.T) { + t.Parallel() var table = []struct { definition string expectations map[string]string @@ -146,6 +148,7 @@ func TestEventString(t *testing.T) { // TestEventMultiValueWithArrayUnpack verifies that array fields will be counted after parsing array. func TestEventMultiValueWithArrayUnpack(t *testing.T) { + t.Parallel() definition := `[{"name": "test", "type": "event", "inputs": [{"indexed": false, "name":"value1", "type":"uint8[2]"},{"indexed": false, "name":"value2", "type":"uint8"}]}]` abi, err := JSON(strings.NewReader(definition)) require.NoError(t, err) @@ -161,6 +164,7 @@ func TestEventMultiValueWithArrayUnpack(t *testing.T) { } func TestEventTupleUnpack(t *testing.T) { + t.Parallel() type EventTransfer struct { Value *big.Int } @@ -351,6 +355,7 @@ func unpackTestEventData(dest interface{}, hexData string, jsonEvent []byte, ass // TestEventUnpackIndexed verifies that indexed field will be skipped by event decoder. func TestEventUnpackIndexed(t *testing.T) { + t.Parallel() definition := `[{"name": "test", "type": "event", "inputs": [{"indexed": true, "name":"value1", "type":"uint8"},{"indexed": false, "name":"value2", "type":"uint8"}]}]` type testStruct struct { Value1 uint8 // indexed @@ -368,6 +373,7 @@ func TestEventUnpackIndexed(t *testing.T) { // TestEventIndexedWithArrayUnpack verifies that decoder will not overflow when static array is indexed input. func TestEventIndexedWithArrayUnpack(t *testing.T) { + t.Parallel() definition := `[{"name": "test", "type": "event", "inputs": [{"indexed": true, "name":"value1", "type":"uint8[2]"},{"indexed": false, "name":"value2", "type":"string"}]}]` type testStruct struct { Value1 [2]uint8 // indexed diff --git a/accounts/abi/method_test.go b/accounts/abi/method_test.go index 9230e307aa..6322173920 100644 --- a/accounts/abi/method_test.go +++ b/accounts/abi/method_test.go @@ -35,6 +35,7 @@ const methoddata = ` ]` func TestMethodString(t *testing.T) { + t.Parallel() var table = []struct { method string expectation string @@ -99,6 +100,7 @@ func TestMethodString(t *testing.T) { } func TestMethodSig(t *testing.T) { + t.Parallel() var cases = []struct { method string expect string diff --git a/accounts/abi/pack_test.go b/accounts/abi/pack_test.go index 5c7cb1cc1a..00bdae469e 100644 --- a/accounts/abi/pack_test.go +++ b/accounts/abi/pack_test.go @@ -32,8 +32,11 @@ import ( // TestPack tests the general pack/unpack tests in packing_test.go func TestPack(t *testing.T) { + t.Parallel() for i, test := range packUnpackTests { + i, test := i, test t.Run(strconv.Itoa(i), func(t *testing.T) { + t.Parallel() encb, err := hex.DecodeString(test.packed) if err != nil { t.Fatalf("invalid hex %s: %v", test.packed, err) @@ -57,6 +60,7 @@ func TestPack(t *testing.T) { } func TestMethodPack(t *testing.T) { + t.Parallel() abi, err := JSON(strings.NewReader(jsondata)) if err != nil { t.Fatal(err) @@ -177,6 +181,7 @@ func TestMethodPack(t *testing.T) { } func TestPackNumber(t *testing.T) { + t.Parallel() tests := []struct { value reflect.Value packed []byte diff --git a/accounts/abi/reflect_test.go b/accounts/abi/reflect_test.go index 76ef1ad2aa..6c7ae57087 100644 --- a/accounts/abi/reflect_test.go +++ b/accounts/abi/reflect_test.go @@ -170,8 +170,11 @@ var reflectTests = []reflectTest{ } func TestReflectNameToStruct(t *testing.T) { + t.Parallel() for _, test := range reflectTests { + test := test t.Run(test.name, func(t *testing.T) { + t.Parallel() m, err := mapArgNamesToStructFields(test.args, reflect.ValueOf(test.struc)) if len(test.err) > 0 { if err == nil || err.Error() != test.err { @@ -192,6 +195,7 @@ func TestReflectNameToStruct(t *testing.T) { } func TestConvertType(t *testing.T) { + t.Parallel() // Test Basic Struct type T struct { X *big.Int diff --git a/accounts/abi/selector_parser_test.go b/accounts/abi/selector_parser_test.go index f6f134492b..6cb0ae0e70 100644 --- a/accounts/abi/selector_parser_test.go +++ b/accounts/abi/selector_parser_test.go @@ -24,6 +24,7 @@ import ( ) func TestParseSelector(t *testing.T) { + t.Parallel() mkType := func(types ...interface{}) []ArgumentMarshaling { var result []ArgumentMarshaling for i, typeOrComponents := range types { diff --git a/accounts/abi/topics_test.go b/accounts/abi/topics_test.go index 30cf21d0b8..b31f58fba3 100644 --- a/accounts/abi/topics_test.go +++ b/accounts/abi/topics_test.go @@ -26,6 +26,7 @@ import ( ) func TestMakeTopics(t *testing.T) { + t.Parallel() type args struct { query [][]interface{} } @@ -117,7 +118,9 @@ func TestMakeTopics(t *testing.T) { }, } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { + t.Parallel() got, err := MakeTopics(tt.args.query...) if (err != nil) != tt.wantErr { t.Errorf("makeTopics() error = %v, wantErr %v", err, tt.wantErr) @@ -347,10 +350,13 @@ func setupTopicsTests() []topicTest { } func TestParseTopics(t *testing.T) { + t.Parallel() tests := setupTopicsTests() for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { + t.Parallel() createObj := tt.args.createObj() if err := ParseTopics(createObj, tt.args.fields, tt.args.topics); (err != nil) != tt.wantErr { t.Errorf("parseTopics() error = %v, wantErr %v", err, tt.wantErr) @@ -364,10 +370,13 @@ func TestParseTopics(t *testing.T) { } func TestParseTopicsIntoMap(t *testing.T) { + t.Parallel() tests := setupTopicsTests() for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { + t.Parallel() outMap := make(map[string]interface{}) if err := ParseTopicsIntoMap(outMap, tt.args.fields, tt.args.topics); (err != nil) != tt.wantErr { t.Errorf("parseTopicsIntoMap() error = %v, wantErr %v", err, tt.wantErr) diff --git a/accounts/abi/type_test.go b/accounts/abi/type_test.go index a72531ba27..ae69872ad8 100644 --- a/accounts/abi/type_test.go +++ b/accounts/abi/type_test.go @@ -31,6 +31,7 @@ type typeWithoutStringer Type // Tests that all allowed types get recognized by the type parser. func TestTypeRegexp(t *testing.T) { + t.Parallel() tests := []struct { blob string components []ArgumentMarshaling @@ -117,6 +118,7 @@ func TestTypeRegexp(t *testing.T) { } func TestTypeCheck(t *testing.T) { + t.Parallel() for i, test := range []struct { typ string components []ArgumentMarshaling @@ -308,6 +310,7 @@ func TestTypeCheck(t *testing.T) { } func TestInternalType(t *testing.T) { + t.Parallel() components := []ArgumentMarshaling{{Name: "a", Type: "int64"}} internalType := "struct a.b[]" kind := Type{ @@ -332,6 +335,7 @@ func TestInternalType(t *testing.T) { } func TestGetTypeSize(t *testing.T) { + t.Parallel() var testCases = []struct { typ string components []ArgumentMarshaling @@ -368,6 +372,7 @@ func TestGetTypeSize(t *testing.T) { } func TestNewFixedBytesOver32(t *testing.T) { + t.Parallel() _, err := NewType("bytes4096", "", nil) if err == nil { t.Errorf("fixed bytes with size over 32 is not spec'd") diff --git a/accounts/abi/unpack_test.go b/accounts/abi/unpack_test.go index a7ee1d9202..29891ec0a4 100644 --- a/accounts/abi/unpack_test.go +++ b/accounts/abi/unpack_test.go @@ -33,6 +33,7 @@ import ( // TestUnpack tests the general pack/unpack tests in packing_test.go func TestUnpack(t *testing.T) { + t.Parallel() for i, test := range packUnpackTests { t.Run(strconv.Itoa(i)+" "+test.def, func(t *testing.T) { //Unpack @@ -224,6 +225,7 @@ var unpackTests = []unpackTest{ // TestLocalUnpackTests runs test specially designed only for unpacking. // All test cases that can be used to test packing and unpacking should move to packing_test.go func TestLocalUnpackTests(t *testing.T) { + t.Parallel() for i, test := range unpackTests { t.Run(strconv.Itoa(i), func(t *testing.T) { //Unpack @@ -251,6 +253,7 @@ func TestLocalUnpackTests(t *testing.T) { } func TestUnpackIntoInterfaceSetDynamicArrayOutput(t *testing.T) { + t.Parallel() abi, err := JSON(strings.NewReader(`[{"constant":true,"inputs":[],"name":"testDynamicFixedBytes15","outputs":[{"name":"","type":"bytes15[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"testDynamicFixedBytes32","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"}]`)) if err != nil { t.Fatal(err) @@ -321,6 +324,7 @@ func methodMultiReturn(require *require.Assertions) (ABI, []byte, methodMultiOut } func TestMethodMultiReturn(t *testing.T) { + t.Parallel() type reversed struct { String string Int *big.Int @@ -400,6 +404,7 @@ func TestMethodMultiReturn(t *testing.T) { } func TestMultiReturnWithArray(t *testing.T) { + t.Parallel() const definition = `[{"name" : "multi", "type": "function", "outputs": [{"type": "uint64[3]"}, {"type": "uint64"}]}]` abi, err := JSON(strings.NewReader(definition)) if err != nil { @@ -423,6 +428,7 @@ func TestMultiReturnWithArray(t *testing.T) { } func TestMultiReturnWithStringArray(t *testing.T) { + t.Parallel() const definition = `[{"name" : "multi", "type": "function", "outputs": [{"name": "","type": "uint256[3]"},{"name": "","type": "address"},{"name": "","type": "string[2]"},{"name": "","type": "bool"}]}]` abi, err := JSON(strings.NewReader(definition)) if err != nil { @@ -453,6 +459,7 @@ func TestMultiReturnWithStringArray(t *testing.T) { } func TestMultiReturnWithStringSlice(t *testing.T) { + t.Parallel() const definition = `[{"name" : "multi", "type": "function", "outputs": [{"name": "","type": "string[]"},{"name": "","type": "uint256[]"}]}]` abi, err := JSON(strings.NewReader(definition)) if err != nil { @@ -485,6 +492,7 @@ func TestMultiReturnWithStringSlice(t *testing.T) { } func TestMultiReturnWithDeeplyNestedArray(t *testing.T) { + t.Parallel() // Similar to TestMultiReturnWithArray, but with a special case in mind: // values of nested static arrays count towards the size as well, and any element following // after such nested array argument should be read with the correct offset, @@ -525,6 +533,7 @@ func TestMultiReturnWithDeeplyNestedArray(t *testing.T) { } func TestUnmarshal(t *testing.T) { + t.Parallel() const definition = `[ { "name" : "int", "type": "function", "outputs": [ { "type": "uint256" } ] }, { "name" : "bool", "type": "function", "outputs": [ { "type": "bool" } ] }, @@ -774,6 +783,7 @@ func TestUnmarshal(t *testing.T) { } func TestUnpackTuple(t *testing.T) { + t.Parallel() const simpleTuple = `[{"name":"tuple","type":"function","outputs":[{"type":"tuple","name":"ret","components":[{"type":"int256","name":"a"},{"type":"int256","name":"b"}]}]}]` abi, err := JSON(strings.NewReader(simpleTuple)) if err != nil { @@ -876,6 +886,7 @@ func TestUnpackTuple(t *testing.T) { } func TestOOMMaliciousInput(t *testing.T) { + t.Parallel() oomTests := []unpackTest{ { def: `[{"type": "uint8[]"}]`, @@ -946,6 +957,7 @@ func TestOOMMaliciousInput(t *testing.T) { } func TestPackAndUnpackIncompatibleNumber(t *testing.T) { + t.Parallel() var encodeABI Arguments uint256Ty, err := NewType("uint256", "", nil) if err != nil { diff --git a/accounts/accounts_test.go b/accounts/accounts_test.go index e8274f9f04..2c4138aa78 100644 --- a/accounts/accounts_test.go +++ b/accounts/accounts_test.go @@ -24,6 +24,7 @@ import ( ) func TestTextHash(t *testing.T) { + t.Parallel() hash := TextHash([]byte("Hello Joe")) want := hexutil.MustDecode("0xa080337ae51c4e064c189e113edd0ba391df9206e2f49db658bb32cf2911730b") if !bytes.Equal(hash, want) { diff --git a/accounts/hd_test.go b/accounts/hd_test.go index 0743bbe666..118ec5187b 100644 --- a/accounts/hd_test.go +++ b/accounts/hd_test.go @@ -25,6 +25,7 @@ import ( // Tests that HD derivation paths can be correctly parsed into our internal binary // representation. func TestHDPathParsing(t *testing.T) { + t.Parallel() tests := []struct { input string output DerivationPath @@ -89,6 +90,7 @@ func testDerive(t *testing.T, next func() DerivationPath, expected []string) { } func TestHdPathIteration(t *testing.T) { + t.Parallel() testDerive(t, DefaultIterator(DefaultBaseDerivationPath), []string{ "m/44'/60'/0'/0/0", "m/44'/60'/0'/0/1", diff --git a/accounts/keystore/account_cache_test.go b/accounts/keystore/account_cache_test.go index 371d274441..48a238048f 100644 --- a/accounts/keystore/account_cache_test.go +++ b/accounts/keystore/account_cache_test.go @@ -152,6 +152,7 @@ func TestWatchNoDir(t *testing.T) { } func TestCacheInitialReload(t *testing.T) { + t.Parallel() cache, _ := newAccountCache(cachetestDir) accounts := cache.accounts() if !reflect.DeepEqual(accounts, cachetestAccounts) { @@ -160,6 +161,7 @@ func TestCacheInitialReload(t *testing.T) { } func TestCacheAddDeleteOrder(t *testing.T) { + t.Parallel() cache, _ := newAccountCache("testdata/no-such-dir") cache.watcher.running = true // prevent unexpected reloads @@ -244,6 +246,7 @@ func TestCacheAddDeleteOrder(t *testing.T) { } func TestCacheFind(t *testing.T) { + t.Parallel() dir := filepath.Join("testdata", "dir") cache, _ := newAccountCache(dir) cache.watcher.running = true // prevent unexpected reloads diff --git a/accounts/keystore/keystore_test.go b/accounts/keystore/keystore_test.go index deb7cae9f9..c9a23eddd6 100644 --- a/accounts/keystore/keystore_test.go +++ b/accounts/keystore/keystore_test.go @@ -36,6 +36,7 @@ import ( var testSigData = make([]byte, 32) func TestKeyStore(t *testing.T) { + t.Parallel() dir, ks := tmpKeyStore(t, true) a, err := ks.NewAccount("foo") @@ -70,6 +71,7 @@ func TestKeyStore(t *testing.T) { } func TestSign(t *testing.T) { + t.Parallel() _, ks := tmpKeyStore(t, true) pass := "" // not used but required by API @@ -86,6 +88,7 @@ func TestSign(t *testing.T) { } func TestSignWithPassphrase(t *testing.T) { + t.Parallel() _, ks := tmpKeyStore(t, true) pass := "passwd" @@ -280,6 +283,7 @@ type walletEvent struct { // Tests that wallet notifications and correctly fired when accounts are added // or deleted from the keystore. func TestWalletNotifications(t *testing.T) { + t.Parallel() _, ks := tmpKeyStore(t, false) // Subscribe to the wallet feed and collect events. @@ -341,6 +345,7 @@ func TestWalletNotifications(t *testing.T) { // TestImportExport tests the import functionality of a keystore. func TestImportECDSA(t *testing.T) { + t.Parallel() _, ks := tmpKeyStore(t, true) key, err := crypto.GenerateKey() if err != nil { @@ -359,6 +364,7 @@ func TestImportECDSA(t *testing.T) { // TestImportECDSA tests the import and export functionality of a keystore. func TestImportExport(t *testing.T) { + t.Parallel() _, ks := tmpKeyStore(t, true) acc, err := ks.NewAccount("old") if err != nil { @@ -387,6 +393,7 @@ func TestImportExport(t *testing.T) { // TestImportRace tests the keystore on races. // This test should fail under -race if importing races. func TestImportRace(t *testing.T) { + t.Parallel() _, ks := tmpKeyStore(t, true) acc, err := ks.NewAccount("old") if err != nil { diff --git a/accounts/keystore/passphrase_test.go b/accounts/keystore/passphrase_test.go index 1de43a96da..20ec0f5519 100644 --- a/accounts/keystore/passphrase_test.go +++ b/accounts/keystore/passphrase_test.go @@ -30,6 +30,7 @@ const ( // Tests that a json key file can be decrypted and encrypted in multiple rounds. func TestKeyEncryptDecrypt(t *testing.T) { + t.Parallel() keyjson, err := os.ReadFile("testdata/very-light-scrypt.json") if err != nil { t.Fatal(err) diff --git a/accounts/keystore/plain_test.go b/accounts/keystore/plain_test.go index 93165d5cd3..737eb7fd61 100644 --- a/accounts/keystore/plain_test.go +++ b/accounts/keystore/plain_test.go @@ -40,6 +40,7 @@ func tmpKeyStoreIface(t *testing.T, encrypted bool) (dir string, ks keyStore) { } func TestKeyStorePlain(t *testing.T) { + t.Parallel() _, ks := tmpKeyStoreIface(t, false) pass := "" // not used but required by API @@ -60,6 +61,7 @@ func TestKeyStorePlain(t *testing.T) { } func TestKeyStorePassphrase(t *testing.T) { + t.Parallel() _, ks := tmpKeyStoreIface(t, true) pass := "foo" @@ -80,6 +82,7 @@ func TestKeyStorePassphrase(t *testing.T) { } func TestKeyStorePassphraseDecryptionFail(t *testing.T) { + t.Parallel() _, ks := tmpKeyStoreIface(t, true) pass := "foo" @@ -93,6 +96,7 @@ func TestKeyStorePassphraseDecryptionFail(t *testing.T) { } func TestImportPreSaleKey(t *testing.T) { + t.Parallel() dir, ks := tmpKeyStoreIface(t, true) // file content of a presale key file generated with: diff --git a/accounts/url_test.go b/accounts/url_test.go index 52be4c558d..f481a1016d 100644 --- a/accounts/url_test.go +++ b/accounts/url_test.go @@ -21,6 +21,7 @@ import ( ) func TestURLParsing(t *testing.T) { + t.Parallel() url, err := parseURL("https://ethereum.org") if err != nil { t.Errorf("unexpected error: %v", err) @@ -40,6 +41,7 @@ func TestURLParsing(t *testing.T) { } func TestURLString(t *testing.T) { + t.Parallel() url := URL{Scheme: "https", Path: "ethereum.org"} if url.String() != "https://ethereum.org" { t.Errorf("expected: %v, got: %v", "https://ethereum.org", url.String()) @@ -52,6 +54,7 @@ func TestURLString(t *testing.T) { } func TestURLMarshalJSON(t *testing.T) { + t.Parallel() url := URL{Scheme: "https", Path: "ethereum.org"} json, err := url.MarshalJSON() if err != nil { @@ -63,6 +66,7 @@ func TestURLMarshalJSON(t *testing.T) { } func TestURLUnmarshalJSON(t *testing.T) { + t.Parallel() url := &URL{} err := url.UnmarshalJSON([]byte("\"https://ethereum.org\"")) if err != nil { @@ -77,6 +81,7 @@ func TestURLUnmarshalJSON(t *testing.T) { } func TestURLComparison(t *testing.T) { + t.Parallel() tests := []struct { urlA URL urlB URL From 3dc071e0367505f4234ef880b853115c4040cfad Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Tue, 5 Dec 2023 09:37:48 +0100 Subject: [PATCH 116/223] eth/tracers/logger: make structlog/json-log stack hex again (#28628) * common/hexutil: define hex wrappers for uint256.Int * eth/tracers/logger: make structlog/json-log stack hex again * common/hexutil: goimports --- common/hexutil/json.go | 45 ++++++++++++++++++++++ common/hexutil/json_test.go | 60 +++++++++++++++++++++++++++++ eth/tracers/logger/gen_structlog.go | 16 ++++++-- eth/tracers/logger/logger.go | 1 + 4 files changed, 118 insertions(+), 4 deletions(-) diff --git a/common/hexutil/json.go b/common/hexutil/json.go index 50db208118..e0ac98f52d 100644 --- a/common/hexutil/json.go +++ b/common/hexutil/json.go @@ -23,6 +23,8 @@ import ( "math/big" "reflect" "strconv" + + "github.com/holiman/uint256" ) var ( @@ -30,6 +32,7 @@ var ( bigT = reflect.TypeOf((*Big)(nil)) uintT = reflect.TypeOf(Uint(0)) uint64T = reflect.TypeOf(Uint64(0)) + u256T = reflect.TypeOf((*uint256.Int)(nil)) ) // Bytes marshals/unmarshals as a JSON string with 0x prefix. @@ -225,6 +228,48 @@ func (b *Big) UnmarshalGraphQL(input interface{}) error { return err } +// U256 marshals/unmarshals as a JSON string with 0x prefix. +// The zero value marshals as "0x0". +type U256 uint256.Int + +// MarshalText implements encoding.TextMarshaler +func (b U256) MarshalText() ([]byte, error) { + u256 := (*uint256.Int)(&b) + return []byte(u256.Hex()), nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (b *U256) UnmarshalJSON(input []byte) error { + // The uint256.Int.UnmarshalJSON method accepts "dec", "0xhex"; we must be + // more strict, hence we check string and invoke SetFromHex directly. + if !isString(input) { + return errNonString(u256T) + } + // The hex decoder needs to accept empty string ("") as '0', which uint256.Int + // would reject. + if len(input) == 2 { + (*uint256.Int)(b).Clear() + return nil + } + err := (*uint256.Int)(b).SetFromHex(string(input[1 : len(input)-1])) + if err != nil { + return &json.UnmarshalTypeError{Value: err.Error(), Type: u256T} + } + return nil +} + +// UnmarshalText implements encoding.TextUnmarshaler +func (b *U256) UnmarshalText(input []byte) error { + // The uint256.Int.UnmarshalText method accepts "dec", "0xhex"; we must be + // more strict, hence we check string and invoke SetFromHex directly. + return (*uint256.Int)(b).SetFromHex(string(input)) +} + +// String returns the hex encoding of b. +func (b *U256) String() string { + return (*uint256.Int)(b).Hex() +} + // Uint64 marshals/unmarshals as a JSON string with 0x prefix. // The zero value marshals as "0x0". type Uint64 uint64 diff --git a/common/hexutil/json_test.go b/common/hexutil/json_test.go index ed7d6fad1a..7cca300951 100644 --- a/common/hexutil/json_test.go +++ b/common/hexutil/json_test.go @@ -23,6 +23,8 @@ import ( "errors" "math/big" "testing" + + "github.com/holiman/uint256" ) func checkError(t *testing.T, input string, got, want error) bool { @@ -176,6 +178,64 @@ func TestUnmarshalBig(t *testing.T) { } } +var unmarshalU256Tests = []unmarshalTest{ + // invalid encoding + {input: "", wantErr: errJSONEOF}, + {input: "null", wantErr: errNonString(u256T)}, + {input: "10", wantErr: errNonString(u256T)}, + {input: `"0"`, wantErr: wrapTypeError(ErrMissingPrefix, u256T)}, + {input: `"0x"`, wantErr: wrapTypeError(ErrEmptyNumber, u256T)}, + {input: `"0x01"`, wantErr: wrapTypeError(ErrLeadingZero, u256T)}, + {input: `"0xx"`, wantErr: wrapTypeError(ErrSyntax, u256T)}, + {input: `"0x1zz01"`, wantErr: wrapTypeError(ErrSyntax, u256T)}, + { + input: `"0x10000000000000000000000000000000000000000000000000000000000000000"`, + wantErr: wrapTypeError(ErrBig256Range, u256T), + }, + + // valid encoding + {input: `""`, want: big.NewInt(0)}, + {input: `"0x0"`, want: big.NewInt(0)}, + {input: `"0x2"`, want: big.NewInt(0x2)}, + {input: `"0x2F2"`, want: big.NewInt(0x2f2)}, + {input: `"0X2F2"`, want: big.NewInt(0x2f2)}, + {input: `"0x1122aaff"`, want: big.NewInt(0x1122aaff)}, + {input: `"0xbBb"`, want: big.NewInt(0xbbb)}, + {input: `"0xfffffffff"`, want: big.NewInt(0xfffffffff)}, + { + input: `"0x112233445566778899aabbccddeeff"`, + want: referenceBig("112233445566778899aabbccddeeff"), + }, + { + input: `"0xffffffffffffffffffffffffffffffffffff"`, + want: referenceBig("ffffffffffffffffffffffffffffffffffff"), + }, + { + input: `"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"`, + want: referenceBig("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + }, +} + +func TestUnmarshalU256(t *testing.T) { + for _, test := range unmarshalU256Tests { + var v U256 + err := json.Unmarshal([]byte(test.input), &v) + if !checkError(t, test.input, err, test.wantErr) { + continue + } + if test.want == nil { + continue + } + want := new(uint256.Int) + want.SetFromBig(test.want.(*big.Int)) + have := (*uint256.Int)(&v) + if want.Cmp(have) != 0 { + t.Errorf("input %s: value mismatch: have %x, want %x", test.input, have, want) + continue + } + } +} + func BenchmarkUnmarshalBig(b *testing.B) { input := []byte(`"0x123456789abcdef123456789abcdef"`) for i := 0; i < b.N; i++ { diff --git a/eth/tracers/logger/gen_structlog.go b/eth/tracers/logger/gen_structlog.go index df06a9ee6b..b406cb3445 100644 --- a/eth/tracers/logger/gen_structlog.go +++ b/eth/tracers/logger/gen_structlog.go @@ -23,7 +23,7 @@ func (s StructLog) MarshalJSON() ([]byte, error) { GasCost math.HexOrDecimal64 `json:"gasCost"` Memory hexutil.Bytes `json:"memory,omitempty"` MemorySize int `json:"memSize"` - Stack []uint256.Int `json:"stack"` + Stack []hexutil.U256 `json:"stack"` ReturnData hexutil.Bytes `json:"returnData,omitempty"` Storage map[common.Hash]common.Hash `json:"-"` Depth int `json:"depth"` @@ -39,7 +39,12 @@ func (s StructLog) MarshalJSON() ([]byte, error) { enc.GasCost = math.HexOrDecimal64(s.GasCost) enc.Memory = s.Memory enc.MemorySize = s.MemorySize - enc.Stack = s.Stack + if s.Stack != nil { + enc.Stack = make([]hexutil.U256, len(s.Stack)) + for k, v := range s.Stack { + enc.Stack[k] = hexutil.U256(v) + } + } enc.ReturnData = s.ReturnData enc.Storage = s.Storage enc.Depth = s.Depth @@ -59,7 +64,7 @@ func (s *StructLog) UnmarshalJSON(input []byte) error { GasCost *math.HexOrDecimal64 `json:"gasCost"` Memory *hexutil.Bytes `json:"memory,omitempty"` MemorySize *int `json:"memSize"` - Stack []uint256.Int `json:"stack"` + Stack []hexutil.U256 `json:"stack"` ReturnData *hexutil.Bytes `json:"returnData,omitempty"` Storage map[common.Hash]common.Hash `json:"-"` Depth *int `json:"depth"` @@ -89,7 +94,10 @@ func (s *StructLog) UnmarshalJSON(input []byte) error { s.MemorySize = *dec.MemorySize } if dec.Stack != nil { - s.Stack = dec.Stack + s.Stack = make([]uint256.Int, len(dec.Stack)) + for k, v := range dec.Stack { + s.Stack[k] = uint256.Int(v) + } } if dec.ReturnData != nil { s.ReturnData = *dec.ReturnData diff --git a/eth/tracers/logger/logger.go b/eth/tracers/logger/logger.go index 4c9b910a27..2b36f9f492 100644 --- a/eth/tracers/logger/logger.go +++ b/eth/tracers/logger/logger.go @@ -83,6 +83,7 @@ type structLogMarshaling struct { GasCost math.HexOrDecimal64 Memory hexutil.Bytes ReturnData hexutil.Bytes + Stack []hexutil.U256 OpName string `json:"opName"` // adds call to OpName() in MarshalJSON ErrorString string `json:"error,omitempty"` // adds call to ErrorString() in MarshalJSON } From b8d44ed98b9bc8320f1f64e82c13cf32918f1f6b Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Tue, 5 Dec 2023 11:54:44 +0100 Subject: [PATCH 117/223] log: remove lazy, remove unused interfaces, unexport methods (#28622) This change - Removes interface `log.Format`, - Removes method `log.FormatFunc`, - unexports `TerminalHandler.TerminalFormat` formatting methods (renamed to `TerminalHandler.format`) - removes the notion of `log.Lazy` values The lazy handler was useful in the old log package, since it could defer the evaluation of costly attributes until later in the log pipeline: thus, if the logging was done at 'Trace', we could skip evaluation if logging only was set to 'Info'. With the move to slog, this way of deferring evaluation is no longer needed, since slog introduced 'Enabled': the caller can thus do the evaluate-or-not decision at the callsite, which is much more straight-forward than dealing with lazy reflect-based evaluation. Also, lazy evaluation would not work with 'native' slog, as in, these two statements would be evaluated differently: ```golang log.Info("foo", "my lazy", lazyObj) slog.Info("foo", "my lazy", lazyObj) ``` --- cmd/geth/logtestcmd_active.go | 10 ++-- cmd/geth/testdata/logging/logtest-json.txt | 3 +- cmd/geth/testdata/logging/logtest-logfmt.txt | 3 +- .../testdata/logging/logtest-terminal.txt | 5 +- internal/testlog/testlog.go | 6 +- log/format.go | 55 ++++--------------- log/handler.go | 39 +------------ log/logger.go | 28 +++------- log/logger_test.go | 4 +- p2p/discover/table.go | 7 ++- p2p/msgrate/msgrate.go | 5 +- 11 files changed, 49 insertions(+), 116 deletions(-) diff --git a/cmd/geth/logtestcmd_active.go b/cmd/geth/logtestcmd_active.go index 0ca4cc621d..5cce1ec6ab 100644 --- a/cmd/geth/logtestcmd_active.go +++ b/cmd/geth/logtestcmd_active.go @@ -43,6 +43,7 @@ This command is only meant for testing. type customQuotedStringer struct { } + func (c customQuotedStringer) String() string { return "output with 'quotes'" } @@ -80,8 +81,6 @@ func logTest(ctx *cli.Context) error { log.Info("uint64", "18,446,744,073,709,551,615", uint64(math.MaxUint64)) } { // Special characters - - log.Info("Special chars in value", "key", "special \r\n\t chars") log.Info("Special chars in key", "special \n\t chars", "value") @@ -103,9 +102,6 @@ func logTest(ctx *cli.Context) error { var c customQuotedStringer log.Info("a custom stringer that emits quoted text", "output", c) } - { // Lazy eval - log.Info("Lazy evaluation of value", "key", log.Lazy{Fn: func() interface{} { return "lazy value" }}) - } { // Multi-line message log.Info("A message with wonky \U0001F4A9 characters") log.Info("A multiline message \nINFO [10-18|14:11:31.106] with wonky characters \U0001F4A9") @@ -166,6 +162,10 @@ func logTest(ctx *cli.Context) error { { // Logging with 'reserved' keys log.Info("Using keys 't', 'lvl', 'time', 'level' and 'msg'", "t", "t", "time", "time", "lvl", "lvl", "level", "level", "msg", "msg") } + { // Logging with wrong attr-value pairs + log.Info("Odd pair (1 attr)", "key") + log.Info("Odd pair (3 attr)", "key", "value", "key2") + } return nil } diff --git a/cmd/geth/testdata/logging/logtest-json.txt b/cmd/geth/testdata/logging/logtest-json.txt index bdc1ae4de6..3bfe718660 100644 --- a/cmd/geth/testdata/logging/logtest-json.txt +++ b/cmd/geth/testdata/logging/logtest-json.txt @@ -21,7 +21,6 @@ {"t":"2023-11-22T15:42:00.408197+08:00","lvl":"info","msg":"an error message with quotes","error":"this is an 'error'"} {"t":"2023-11-22T15:42:00.408202+08:00","lvl":"info","msg":"Custom Stringer value","2562047h47m16.854s":"2562047h47m16.854s"} {"t":"2023-11-22T15:42:00.408208+08:00","lvl":"info","msg":"a custom stringer that emits quoted text","output":"output with 'quotes'"} -{"t":"2023-11-22T15:42:00.408215+08:00","lvl":"info","msg":"Lazy evaluation of value","key":"lazy value"} {"t":"2023-11-22T15:42:00.408219+08:00","lvl":"info","msg":"A message with wonky 💩 characters"} {"t":"2023-11-22T15:42:00.408222+08:00","lvl":"info","msg":"A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩"} {"t":"2023-11-22T15:42:00.408226+08:00","lvl":"info","msg":"A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above"} @@ -49,3 +48,5 @@ {"t":"2023-11-22T15:42:00.40835+08:00","lvl":"info","msg":"raw nil","res":null} {"t":"2023-11-22T15:42:00.408354+08:00","lvl":"info","msg":"(*uint64)(nil)","res":null} {"t":"2023-11-22T15:42:00.408361+08:00","lvl":"info","msg":"Using keys 't', 'lvl', 'time', 'level' and 'msg'","t":"t","time":"time","lvl":"lvl","level":"level","msg":"msg"} +{"t":"2023-11-29T15:13:00.195655931+01:00","lvl":"info","msg":"Odd pair (1 attr)","key":null,"LOG_ERROR":"Normalized odd number of arguments by adding nil"} +{"t":"2023-11-29T15:13:00.195681832+01:00","lvl":"info","msg":"Odd pair (3 attr)","key":"value","key2":null,"LOG_ERROR":"Normalized odd number of arguments by adding nil"} diff --git a/cmd/geth/testdata/logging/logtest-logfmt.txt b/cmd/geth/testdata/logging/logtest-logfmt.txt index 114569e467..f20d66635d 100644 --- a/cmd/geth/testdata/logging/logtest-logfmt.txt +++ b/cmd/geth/testdata/logging/logtest-logfmt.txt @@ -21,7 +21,6 @@ t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="\x1b[35mColored\x1b[0m[" "\x1b[35mColor t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="an error message with quotes" error="this is an 'error'" t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Custom Stringer value" 2562047h47m16.854s=2562047h47m16.854s t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="a custom stringer that emits quoted text" output="output with 'quotes'" -t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Lazy evaluation of value" key="lazy value" t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="A message with wonky 💩 characters" t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="A multiline message \nLALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above" @@ -49,3 +48,5 @@ t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=nil-custom-struct res= t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="raw nil" res= t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg=(*uint64)(nil) res= t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Using keys 't', 'lvl', 'time', 'level' and 'msg'" t=t time=time lvl=lvl level=level msg=msg +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Odd pair (1 attr)" key= LOG_ERROR="Normalized odd number of arguments by adding nil" +t=xxxx-xx-xxTxx:xx:xx+xxxx lvl=info msg="Odd pair (3 attr)" key=value key2= LOG_ERROR="Normalized odd number of arguments by adding nil" diff --git a/cmd/geth/testdata/logging/logtest-terminal.txt b/cmd/geth/testdata/logging/logtest-terminal.txt index 4da3f49d46..e3b562117c 100644 --- a/cmd/geth/testdata/logging/logtest-terminal.txt +++ b/cmd/geth/testdata/logging/logtest-terminal.txt @@ -21,8 +21,7 @@ INFO [xx-xx|xx:xx:xx.xxx] "\x1b[35mColored\x1b[0m[" "\x1b[35mColo INFO [xx-xx|xx:xx:xx.xxx] an error message with quotes error="this is an 'error'" INFO [xx-xx|xx:xx:xx.xxx] Custom Stringer value 2562047h47m16.854s=2562047h47m16.854s INFO [xx-xx|xx:xx:xx.xxx] a custom stringer that emits quoted text output="output with 'quotes'" -INFO [xx-xx|xx:xx:xx.xxx] Lazy evaluation of value key="lazy value" -INFO [xx-xx|xx:xx:xx.xxx] "A message with wonky 💩 characters" +INFO [xx-xx|xx:xx:xx.xxx] "A message with wonky 💩 characters" INFO [xx-xx|xx:xx:xx.xxx] "A multiline message \nINFO [10-18|14:11:31.106] with wonky characters 💩" INFO [xx-xx|xx:xx:xx.xxx] A multiline message LALA [ZZZZZZZZZZZZZZZZZZ] Actually part of message above @@ -50,3 +49,5 @@ INFO [xx-xx|xx:xx:xx.xxx] nil-custom-struct res= INFO [xx-xx|xx:xx:xx.xxx] raw nil res= INFO [xx-xx|xx:xx:xx.xxx] (*uint64)(nil) res= INFO [xx-xx|xx:xx:xx.xxx] Using keys 't', 'lvl', 'time', 'level' and 'msg' t=t time=time lvl=lvl level=level msg=msg +INFO [xx-xx|xx:xx:xx.xxx] Odd pair (1 attr) key= LOG_ERROR="Normalized odd number of arguments by adding nil" +INFO [xx-xx|xx:xx:xx.xxx] Odd pair (3 attr) key=value key2= LOG_ERROR="Normalized odd number of arguments by adding nil" diff --git a/internal/testlog/testlog.go b/internal/testlog/testlog.go index a7899c8158..037b7ee9c1 100644 --- a/internal/testlog/testlog.go +++ b/internal/testlog/testlog.go @@ -100,6 +100,10 @@ func LoggerWithHandler(t *testing.T, handler slog.Handler) log.Logger { func (l *logger) Write(level slog.Level, msg string, ctx ...interface{}) {} +func (l *logger) Enabled(ctx context.Context, level slog.Level) bool { + return l.l.Enabled(ctx, level) +} + func (l *logger) Trace(msg string, ctx ...interface{}) { l.t.Helper() l.mu.Lock() @@ -183,7 +187,7 @@ func (h *bufHandler) terminalFormat(r slog.Record) string { } for _, attr := range attrs { - fmt.Fprintf(buf, " %s=%s", attr.Key, string(log.FormatSlogValue(attr.Value, true, nil))) + fmt.Fprintf(buf, " %s=%s", attr.Key, string(log.FormatSlogValue(attr.Value, nil))) } buf.WriteByte('\n') return buf.String() diff --git a/log/format.go b/log/format.go index a2bbcce9c0..6447f3c1f1 100644 --- a/log/format.go +++ b/log/format.go @@ -23,22 +23,6 @@ const ( // 40 spaces var spaces = []byte(" ") -type Format interface { - Format(r slog.Record) []byte -} - -// FormatFunc returns a new Format object which uses -// the given function to perform record formatting. -func FormatFunc(f func(slog.Record) []byte) Format { - return formatFunc(f) -} - -type formatFunc func(slog.Record) []byte - -func (f formatFunc) Format(r slog.Record) []byte { - return f(r) -} - // TerminalStringer is an analogous interface to the stdlib stringer, allowing // own types to have custom shortened serialization formats when printed to the // screen. @@ -46,7 +30,7 @@ type TerminalStringer interface { TerminalString() string } -func (h *TerminalHandler) TerminalFormat(buf []byte, r slog.Record, usecolor bool) []byte { +func (h *TerminalHandler) format(buf []byte, r slog.Record, usecolor bool) []byte { msg := escapeMessage(r.Message) var color = "" if usecolor { @@ -88,13 +72,13 @@ func (h *TerminalHandler) TerminalFormat(buf []byte, r slog.Record, usecolor boo if (r.NumAttrs()+len(h.attrs)) > 0 && length < termMsgJust { b.Write(spaces[:termMsgJust-length]) } - // print the keys logfmt style - h.logfmt(b, r, color) + // print the attributes + h.formatAttributes(b, r, color) return b.Bytes() } -func (h *TerminalHandler) logfmt(buf *bytes.Buffer, r slog.Record, color string) { +func (h *TerminalHandler) formatAttributes(buf *bytes.Buffer, r slog.Record, color string) { // tmp is a temporary buffer we use, until bytes.Buffer.AvailableBuffer() (1.21) // can be used. var tmp = make([]byte, 40) @@ -112,7 +96,7 @@ func (h *TerminalHandler) logfmt(buf *bytes.Buffer, r slog.Record, color string) buf.WriteByte('=') } //val := FormatSlogValue(attr.Value, true, buf.AvailableBuffer()) - val := FormatSlogValue(attr.Value, true, tmp[:0]) + val := FormatSlogValue(attr.Value, tmp[:0]) padding := h.fieldPadding[attr.Key] @@ -140,8 +124,8 @@ func (h *TerminalHandler) logfmt(buf *bytes.Buffer, r slog.Record, color string) buf.WriteByte('\n') } -// FormatSlogValue formats a slog.Value for serialization -func FormatSlogValue(v slog.Value, term bool, tmp []byte) (result []byte) { +// FormatSlogValue formats a slog.Value for serialization to terminal. +func FormatSlogValue(v slog.Value, tmp []byte) (result []byte) { var value any defer func() { if err := recover(); err != nil { @@ -156,11 +140,9 @@ func FormatSlogValue(v slog.Value, term bool, tmp []byte) (result []byte) { switch v.Kind() { case slog.KindString: return appendEscapeString(tmp, v.String()) - case slog.KindAny: - value = v.Any() - case slog.KindInt64: // All int-types (int8 ,int16 etc) wind up here + case slog.KindInt64: // All int-types (int8, int16 etc) wind up here return appendInt64(tmp, v.Int64()) - case slog.KindUint64: // All uint-types (int8 ,int16 etc) wind up here + case slog.KindUint64: // All uint-types (uint8, uint16 etc) wind up here return appendUint64(tmp, v.Uint64(), false) case slog.KindFloat64: return strconv.AppendFloat(tmp, v.Float64(), floatFormat, 3, 64) @@ -180,27 +162,14 @@ func FormatSlogValue(v slog.Value, term bool, tmp []byte) (result []byte) { return []byte("") } switch v := value.(type) { - case *big.Int: - // Big ints get consumed by the Stringer clause, so we need to handle - // them earlier on. - if v == nil { - return append(tmp, []byte("")...) - } + case *big.Int: // Need to be before fmt.Stringer-clause return appendBigInt(tmp, v) - - case *uint256.Int: - // Uint256s get consumed by the Stringer clause, so we need to handle - // them earlier on. - if v == nil { - return append(tmp, []byte("")...) - } + case *uint256.Int: // Need to be before fmt.Stringer-clause return appendU256(tmp, v) case error: return appendEscapeString(tmp, v.Error()) case TerminalStringer: - if term { - return appendEscapeString(tmp, v.TerminalString()) // Custom terminal stringer provided, use that - } + return appendEscapeString(tmp, v.TerminalString()) case fmt.Stringer: return appendEscapeString(tmp, v.String()) } diff --git a/log/handler.go b/log/handler.go index 1a25577450..7459aad891 100644 --- a/log/handler.go +++ b/log/handler.go @@ -13,42 +13,6 @@ import ( "golang.org/x/exp/slog" ) -// Lazy allows you to defer calculation of a logged value that is expensive -// to compute until it is certain that it must be evaluated with the given filters. -// -// You may wrap any function which takes no arguments to Lazy. It may return any -// number of values of any type. -type Lazy struct { - Fn interface{} -} - -func evaluateLazy(lz Lazy) (interface{}, error) { - t := reflect.TypeOf(lz.Fn) - - if t.Kind() != reflect.Func { - return nil, fmt.Errorf("INVALID_LAZY, not func: %+v", lz.Fn) - } - - if t.NumIn() > 0 { - return nil, fmt.Errorf("INVALID_LAZY, func takes args: %+v", lz.Fn) - } - - if t.NumOut() == 0 { - return nil, fmt.Errorf("INVALID_LAZY, no func return val: %+v", lz.Fn) - } - - value := reflect.ValueOf(lz.Fn) - results := value.Call([]reflect.Value{}) - if len(results) == 1 { - return results[0].Interface(), nil - } - values := make([]interface{}, len(results)) - for i, v := range results { - values[i] = v.Interface() - } - return values, nil -} - type discardHandler struct{} // DiscardHandler returns a no-op handler @@ -112,7 +76,7 @@ func NewTerminalHandlerWithLevel(wr io.Writer, lvl slog.Level, useColor bool) *T func (h *TerminalHandler) Handle(_ context.Context, r slog.Record) error { h.mu.Lock() defer h.mu.Unlock() - buf := h.TerminalFormat(h.buf, r, h.useColor) + buf := h.format(h.buf, r, h.useColor) h.wr.Write(buf) h.buf = buf[:0] return nil @@ -149,6 +113,7 @@ func (l *leveler) Level() slog.Level { return l.minLevel } +// JSONHandler returns a handler which prints records in JSON format. func JSONHandler(wr io.Writer) slog.Handler { return slog.NewJSONHandler(wr, &slog.HandlerOptions{ ReplaceAttr: builtinReplaceJSON, diff --git a/log/logger.go b/log/logger.go index 3e227745ad..93d62f080b 100644 --- a/log/logger.go +++ b/log/logger.go @@ -134,6 +134,9 @@ type Logger interface { // Write logs a message at the specified level Write(level slog.Level, msg string, attrs ...any) + + // Enabled reports whether l emits log records at the given context and level. + Enabled(ctx context.Context, level slog.Level) bool } type logger struct { @@ -159,26 +162,6 @@ func (l *logger) Write(level slog.Level, msg string, attrs ...any) { if len(attrs)%2 != 0 { attrs = append(attrs, nil, errorKey, "Normalized odd number of arguments by adding nil") } - - // evaluate lazy values - var hadErr bool - for i := 1; i < len(attrs); i += 2 { - lz, ok := attrs[i].(Lazy) - if ok { - v, err := evaluateLazy(lz) - if err != nil { - hadErr = true - attrs[i] = err - } else { - attrs[i] = v - } - } - } - - if hadErr { - attrs = append(attrs, errorKey, "bad lazy") - } - r := slog.NewRecord(time.Now(), level, msg, pcs[0]) r.Add(attrs...) l.inner.Handler().Handle(context.Background(), r) @@ -196,6 +179,11 @@ func (l *logger) New(ctx ...interface{}) Logger { return l.With(ctx...) } +// Enabled reports whether l emits log records at the given context and level. +func (l *logger) Enabled(ctx context.Context, level slog.Level) bool { + return l.inner.Enabled(ctx, level) +} + func (l *logger) Trace(msg string, ctx ...interface{}) { l.Write(LevelTrace, msg, ctx...) } diff --git a/log/logger_test.go b/log/logger_test.go index 27e90c5fd2..a633f5ad7a 100644 --- a/log/logger_test.go +++ b/log/logger_test.go @@ -107,7 +107,6 @@ func TestLoggerOutput(t *testing.T) { bigint = big.NewInt(100) nilbig *big.Int err = fmt.Errorf("Oh nooes it's crap") - lazy = Lazy{Fn: func() interface{} { return "lazy value" }} smallUint = uint256.NewInt(500_000) bigUint = &uint256.Int{0xff, 0xff, 0xff, 0xff} ) @@ -126,13 +125,12 @@ func TestLoggerOutput(t *testing.T) { "struct", customA, "struct", customB, "ptrstruct", &customA, - "lazy", lazy, "smalluint", smallUint, "bigUint", bigUint) have := out.String() t.Logf("output %v", out.String()) - want := `INFO [11-07|19:14:33.821] This is a message foo=123 bytes="[0 0 0 0 0 0 0 0 0 0]" bonk="a string with text" time=0001-01-01T00:00:00+0000 bigint=100 nilbig= err="Oh nooes it's crap" struct="{A:Foo B:12}" struct="{A:Foo\nLinebreak B:122}" ptrstruct="&{A:Foo B:12}" lazy="lazy value" smalluint=500,000 bigUint=1,600,660,942,523,603,594,864,898,306,482,794,244,293,965,082,972,225,630,372,095 + want := `INFO [11-07|19:14:33.821] This is a message foo=123 bytes="[0 0 0 0 0 0 0 0 0 0]" bonk="a string with text" time=0001-01-01T00:00:00+0000 bigint=100 nilbig= err="Oh nooes it's crap" struct="{A:Foo B:12}" struct="{A:Foo\nLinebreak B:122}" ptrstruct="&{A:Foo B:12}" smalluint=500,000 bigUint=1,600,660,942,523,603,594,864,898,306,482,794,244,293,965,082,972,225,630,372,095 ` if !bytes.Equal([]byte(have)[25:], []byte(want)[25:]) { t.Errorf("Error\nhave: %q\nwant: %q", have, want) diff --git a/p2p/discover/table.go b/p2p/discover/table.go index f476d2079f..e6dafb0dca 100644 --- a/p2p/discover/table.go +++ b/p2p/discover/table.go @@ -23,6 +23,7 @@ package discover import ( + "context" crand "crypto/rand" "encoding/binary" "fmt" @@ -330,8 +331,10 @@ func (tab *Table) loadSeedNodes() { seeds = append(seeds, tab.nursery...) for i := range seeds { seed := seeds[i] - age := log.Lazy{Fn: func() interface{} { return time.Since(tab.db.LastPongReceived(seed.ID(), seed.IP())) }} - tab.log.Trace("Found seed node in database", "id", seed.ID(), "addr", seed.addr(), "age", age) + if tab.log.Enabled(context.Background(), log.LevelTrace) { + age := time.Since(tab.db.LastPongReceived(seed.ID(), seed.IP())) + tab.log.Trace("Found seed node in database", "id", seed.ID(), "addr", seed.addr(), "age", age) + } tab.addSeenNode(seed) } } diff --git a/p2p/msgrate/msgrate.go b/p2p/msgrate/msgrate.go index 4f08792242..de1a3177db 100644 --- a/p2p/msgrate/msgrate.go +++ b/p2p/msgrate/msgrate.go @@ -18,6 +18,7 @@ package msgrate import ( + "context" "errors" "math" "sort" @@ -410,7 +411,9 @@ func (t *Trackers) tune() { t.tuned = time.Now() t.log.Debug("Recalculated msgrate QoS values", "rtt", t.roundtrip, "confidence", t.confidence, "ttl", t.targetTimeout(), "next", t.tuned.Add(t.roundtrip)) - t.log.Trace("Debug dump of mean capacities", "caps", log.Lazy{Fn: t.meanCapacities}) + if t.log.Enabled(context.Background(), log.LevelTrace) { + t.log.Trace("Debug dump of mean capacities", "caps", t.meanCapacities()) + } } // detune reduces the tracker's confidence in order to make fresh measurements From 69576df2544d9a6c59c5659b82a064edc9845874 Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Tue, 5 Dec 2023 14:45:40 +0100 Subject: [PATCH 118/223] .github: use github actions to run 32-bit linux tests (#28549) use github actions to run 32-bit linux tests --- .github/workflows/go.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/go.yml diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml new file mode 100644 index 0000000000..7924c521e8 --- /dev/null +++ b/.github/workflows/go.yml @@ -0,0 +1,23 @@ +name: i386 linux tests + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + build: + runs-on: self-hosted + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.21.4 + - name: Run tests + run: go test ./... + env: + GOOS: linux + GOARCH: 386 From 55b483d82aa23772f8a8b330e3837a07c4fd00df Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Wed, 6 Dec 2023 11:41:04 +0100 Subject: [PATCH 119/223] ethdb/pebble: remove a dependency (#28627) The dependency was not really used anyway, so we can get rid of it. Co-authored-by: Felix Lange --- ethdb/pebble/pebble.go | 3 +-- go.mod | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ethdb/pebble/pebble.go b/ethdb/pebble/pebble.go index d58329c6d6..af4686cf5b 100644 --- a/ethdb/pebble/pebble.go +++ b/ethdb/pebble/pebble.go @@ -25,7 +25,6 @@ import ( "sync/atomic" "time" - "github.com/cockroachdb/errors" "github.com/cockroachdb/pebble" "github.com/cockroachdb/pebble/bloom" "github.com/ethereum/go-ethereum/common" @@ -131,7 +130,7 @@ func (l panicLogger) Errorf(format string, args ...interface{}) { } func (l panicLogger) Fatalf(format string, args ...interface{}) { - panic(errors.Errorf("fatal: "+format, args...)) + panic(fmt.Errorf("fatal: "+format, args...)) } // New returns a wrapped pebble DB object. The namespace is the prefix that the diff --git a/go.mod b/go.mod index 75c2b899d6..8f99a00754 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,6 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.2.0 github.com/cespare/cp v0.1.0 github.com/cloudflare/cloudflare-go v0.79.0 - github.com/cockroachdb/errors v1.8.1 github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 github.com/consensys/gnark-crypto v0.12.1 github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 @@ -91,6 +90,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cockroachdb/errors v1.8.1 // indirect github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f // indirect github.com/cockroachdb/redact v1.0.8 // indirect github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 // indirect From a113497dd7e5f5116996b34c514c1c9273bfcc97 Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Thu, 7 Dec 2023 10:07:20 +0100 Subject: [PATCH 120/223] tests/fuzzers/bls12381: deactivate BLS fuzzer when CGO_ENABLED=0 (#28653) tests/fuzzers/bls12381: deactivate fuzzer when CGO_ENABLED=0 --- tests/fuzzers/bls12381/bls12381_fuzz.go | 3 +++ tests/fuzzers/bls12381/bls12381_test.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/tests/fuzzers/bls12381/bls12381_fuzz.go b/tests/fuzzers/bls12381/bls12381_fuzz.go index f04524f76a..9a5c566540 100644 --- a/tests/fuzzers/bls12381/bls12381_fuzz.go +++ b/tests/fuzzers/bls12381/bls12381_fuzz.go @@ -14,6 +14,9 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . +//go:build cgo +// +build cgo + package bls import ( diff --git a/tests/fuzzers/bls12381/bls12381_test.go b/tests/fuzzers/bls12381/bls12381_test.go index 59e4db31d5..3e88979d16 100644 --- a/tests/fuzzers/bls12381/bls12381_test.go +++ b/tests/fuzzers/bls12381/bls12381_test.go @@ -14,6 +14,9 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . +//go:build cgo +// +build cgo + package bls import "testing" From 77c4bbcaa5f554f4cd73bdb7033d17b1fec493e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marius=20Kj=C3=A6rstad?= Date: Thu, 7 Dec 2023 11:45:09 +0100 Subject: [PATCH 121/223] build: upgrade -dlgo version to Go 1.21.5 (#28648) --- build/checksums.txt | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/build/checksums.txt b/build/checksums.txt index c96bd85667..8d735fdb3d 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -5,22 +5,22 @@ # https://github.com/ethereum/execution-spec-tests/releases/download/v1.0.6/ 485af7b66cf41eb3a8c1bd46632913b8eb95995df867cf665617bbc9b4beedd1 fixtures_develop.tar.gz -# version:golang 1.21.4 +# version:golang 1.21.5 # https://go.dev/dl/ -47b26a83d2b65a3c1c1bcace273b69bee49a7a7b5168a7604ded3d26a37bd787 go1.21.4.src.tar.gz -cd3bdcc802b759b70e8418bc7afbc4a65ca73a3fe576060af9fc8a2a5e71c3b8 go1.21.4.darwin-amd64.tar.gz -8b7caf2ac60bdff457dba7d4ff2a01def889592b834453431ae3caecf884f6a5 go1.21.4.darwin-arm64.tar.gz -f1e685d086eb36f4be5b8b953b52baf7752bc6235400d84bb7d87e500b65f03e go1.21.4.freebsd-386.tar.gz -59f9b32187efb98d344a3818a631d3815ebb5c7bbefc367bab6515caaca544e9 go1.21.4.freebsd-amd64.tar.gz -64d3e5d295806e137c9e39d1e1f10b00a30fcd5c2f230d72b3298f579bb3c89a go1.21.4.linux-386.tar.gz -73cac0215254d0c7d1241fa40837851f3b9a8a742d0b54714cbdfb3feaf8f0af go1.21.4.linux-amd64.tar.gz -ce1983a7289856c3a918e1fd26d41e072cc39f928adfb11ba1896440849b95da go1.21.4.linux-arm64.tar.gz -6c62e89113750cc77c498194d13a03fadfda22bd2c7d44e8a826fd354db60252 go1.21.4.linux-armv6l.tar.gz -2c63b36d2adcfb22013102a2ee730f058ec2f93b9f27479793c80b2e3641783f go1.21.4.linux-ppc64le.tar.gz -7a75ba4afc7a96058ca65903d994cd862381825d7dca12b2183f087c757c26c0 go1.21.4.linux-s390x.tar.gz -870a0e462b94671dc2d6cac707e9e19f7524fdc3c90711e6cd4450c3713a8ce0 go1.21.4.windows-386.zip -79e5428e068c912d9cfa6cd115c13549856ec689c1332eac17f5d6122e19d595 go1.21.4.windows-amd64.zip -58bc7c6f4d4c72da2df4d2650c8222fe03c9978070eb3c66be8bbaa2a4757ac1 go1.21.4.windows-arm64.zip +285cbbdf4b6e6e62ed58f370f3f6d8c30825d6e56c5853c66d3c23bcdb09db19 go1.21.5.src.tar.gz +a2e1d5743e896e5fe1e7d96479c0a769254aed18cf216cf8f4c3a2300a9b3923 go1.21.5.darwin-amd64.tar.gz +d0f8ac0c4fb3efc223a833010901d02954e3923cfe2c9a2ff0e4254a777cc9cc go1.21.5.darwin-arm64.tar.gz +2c05bbe0dc62456b90b7ddd354a54f373b7c377a98f8b22f52ab694b4f6cca58 go1.21.5.freebsd-386.tar.gz +30b6c64e9a77129605bc12f836422bf09eec577a8c899ee46130aeff81567003 go1.21.5.freebsd-amd64.tar.gz +8f4dba9cf5c61757bbd7e9ebdb93b6a30a1b03f4a636a1ba0cc2f27b907ab8e1 go1.21.5.linux-386.tar.gz +e2bc0b3e4b64111ec117295c088bde5f00eeed1567999ff77bc859d7df70078e go1.21.5.linux-amd64.tar.gz +841cced7ecda9b2014f139f5bab5ae31785f35399f236b8b3e75dff2a2978d96 go1.21.5.linux-arm64.tar.gz +837f4bf4e22fcdf920ffeaa4abf3d02d1314e03725431065f4d44c46a01b42fe go1.21.5.linux-armv6l.tar.gz +907b8c6ec4be9b184952e5d3493be66b1746442394a8bc78556c56834cd7c38b go1.21.5.linux-ppc64le.tar.gz +9c4a81b72ebe44368813cd03684e1080a818bf915d84163abae2ed325a1b2dc0 go1.21.5.linux-s390x.tar.gz +6da2418889dfb37763d0eb149c4a8d728c029e12f0cd54fbca0a31ae547e2d34 go1.21.5.windows-386.zip +bbe603cde7c9dee658f45164b4d06de1eff6e6e6b800100824e7c00d56a9a92f go1.21.5.windows-amd64.zip +9b7acca50e674294e43202df4fbc26d5af4d8bc3170a3342a1514f09a2dab5e9 go1.21.5.windows-arm64.zip # version:golangci 1.51.1 # https://github.com/golangci/golangci-lint/releases/ From 5a45e7a631e0a2457178f346a03c4128efb7d009 Mon Sep 17 00:00:00 2001 From: Martin HS Date: Fri, 8 Dec 2023 09:40:50 +0100 Subject: [PATCH 122/223] =?UTF-8?q?rpc:=20fix=20ns/=C2=B5s=20mismatch=20in?= =?UTF-8?q?=20metrics=20(#28649)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rpc/duration/all meter was in nanoseconds, the individual meter in microseconds. This PR changes it so both of them use nanoseconds. --- metrics/timer.go | 10 ++++------ rpc/metrics.go | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/metrics/timer.go b/metrics/timer.go index 576ad8aa3e..bb8def82fb 100644 --- a/metrics/timer.go +++ b/metrics/timer.go @@ -106,20 +106,18 @@ func (t *StandardTimer) Time(f func()) { t.Update(time.Since(ts)) } -// Record the duration of an event. +// Record the duration of an event, in nanoseconds. func (t *StandardTimer) Update(d time.Duration) { t.mutex.Lock() defer t.mutex.Unlock() - t.histogram.Update(int64(d)) + t.histogram.Update(d.Nanoseconds()) t.meter.Mark(1) } // Record the duration of an event that started at a time and ends now. +// The record uses nanoseconds. func (t *StandardTimer) UpdateSince(ts time.Time) { - t.mutex.Lock() - defer t.mutex.Unlock() - t.histogram.Update(int64(time.Since(ts))) - t.meter.Mark(1) + t.Update(time.Since(ts)) } // timerSnapshot is a read-only copy of another Timer. diff --git a/rpc/metrics.go b/rpc/metrics.go index b1f1284535..ef7449ce05 100644 --- a/rpc/metrics.go +++ b/rpc/metrics.go @@ -46,5 +46,5 @@ func updateServeTimeHistogram(method string, success bool, elapsed time.Duration metrics.NewExpDecaySample(1028, 0.015), ) } - metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(elapsed.Microseconds()) + metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(elapsed.Nanoseconds()) } From 1048e2d6a36b8c3fb467d60fd33122bae0cc7ebe Mon Sep 17 00:00:00 2001 From: Martin HS Date: Fri, 8 Dec 2023 11:06:01 +0100 Subject: [PATCH 123/223] cmd/evm: fix dump after state-test exec (#28650) The dump after state-test didn't work, the problem was an error, "Already committed", which was silently ignored. This change re-initialises the state, so the dumping works again. --- cmd/evm/staterunner.go | 17 +++++++++-------- core/state/dump.go | 1 + 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cmd/evm/staterunner.go b/cmd/evm/staterunner.go index 618ddf2ede..6e751b630f 100644 --- a/cmd/evm/staterunner.go +++ b/cmd/evm/staterunner.go @@ -100,18 +100,19 @@ func runStateTest(fname string, cfg vm.Config, jsonOut, dump bool) error { for _, st := range test.Subtests() { // Run the test and aggregate the result result := &StatetestResult{Name: key, Fork: st.Fork, Pass: true} - test.Run(st, cfg, false, rawdb.HashScheme, func(err error, snaps *snapshot.Tree, state *state.StateDB) { - if state != nil { - root := state.IntermediateRoot(false) + test.Run(st, cfg, false, rawdb.HashScheme, func(err error, snaps *snapshot.Tree, statedb *state.StateDB) { + var root common.Hash + if statedb != nil { + root = statedb.IntermediateRoot(false) result.Root = &root if jsonOut { fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%#x\"}\n", root) } - } - // Dump any state to aid debugging - if dump { - dump := state.RawDump(nil) - result.State = &dump + if dump { // Dump any state to aid debugging + cpy, _ := state.New(root, statedb.Database(), nil) + dump := cpy.RawDump(nil) + result.State = &dump + } } if err != nil { // Test failed, mark as so diff --git a/core/state/dump.go b/core/state/dump.go index cf46621144..55abb50f1c 100644 --- a/core/state/dump.go +++ b/core/state/dump.go @@ -129,6 +129,7 @@ func (s *StateDB) DumpToCollector(c DumpCollector, conf *DumpConfig) (nextKey [] trieIt, err := s.trie.NodeIterator(conf.Start) if err != nil { + log.Error("Trie dumping error", "err", err) return nil } it := trie.NewIterator(trieIt) From fff843cfafddb43aebad6e3e5ad8b0f68143759d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felf=C3=B6ldi=20Zsolt?= Date: Fri, 8 Dec 2023 13:38:00 +0100 Subject: [PATCH 124/223] beacon/light: add CommitteeChain (#27766) This change implements CommitteeChain which is a key component of the beacon light client. It is a passive data structure that can validate, hold and update a chain of beacon light sync committees and updates, starting from a checkpoint that proves the starting committee through a beacon block hash, header and corresponding state. Once synced to the current sync period, CommitteeChain can also validate signed beacon headers. --- beacon/light/canonical.go | 125 ++++++ beacon/light/committee_chain.go | 514 ++++++++++++++++++++++ beacon/light/committee_chain_test.go | 356 +++++++++++++++ beacon/light/range.go | 78 ++++ beacon/light/test_helpers.go | 152 +++++++ beacon/types/{update.go => light_sync.go} | 18 + core/rawdb/schema.go | 4 + 7 files changed, 1247 insertions(+) create mode 100644 beacon/light/canonical.go create mode 100644 beacon/light/committee_chain.go create mode 100644 beacon/light/committee_chain_test.go create mode 100644 beacon/light/range.go create mode 100644 beacon/light/test_helpers.go rename beacon/types/{update.go => light_sync.go} (88%) diff --git a/beacon/light/canonical.go b/beacon/light/canonical.go new file mode 100644 index 0000000000..b5371493b4 --- /dev/null +++ b/beacon/light/canonical.go @@ -0,0 +1,125 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package light + +import ( + "encoding/binary" + "fmt" + + "github.com/ethereum/go-ethereum/common/lru" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" +) + +// canonicalStore stores instances of the given type in a database and caches +// them in memory, associated with a continuous range of period numbers. +// Note: canonicalStore is not thread safe and it is the caller's responsibility +// to avoid concurrent access. +type canonicalStore[T any] struct { + keyPrefix []byte + periods periodRange + cache *lru.Cache[uint64, T] +} + +// newCanonicalStore creates a new canonicalStore and loads all keys associated +// with the keyPrefix in order to determine the ranges available in the database. +func newCanonicalStore[T any](db ethdb.Iteratee, keyPrefix []byte) (*canonicalStore[T], error) { + cs := &canonicalStore[T]{ + keyPrefix: keyPrefix, + cache: lru.NewCache[uint64, T](100), + } + var ( + iter = db.NewIterator(keyPrefix, nil) + kl = len(keyPrefix) + first = true + ) + defer iter.Release() + + for iter.Next() { + if len(iter.Key()) != kl+8 { + log.Warn("Invalid key length in the canonical chain database", "key", fmt.Sprintf("%#x", iter.Key())) + continue + } + period := binary.BigEndian.Uint64(iter.Key()[kl : kl+8]) + if first { + cs.periods.Start = period + } else if cs.periods.End != period { + return nil, fmt.Errorf("gap in the canonical chain database between periods %d and %d", cs.periods.End, period-1) + } + first = false + cs.periods.End = period + 1 + } + return cs, nil +} + +// databaseKey returns the database key belonging to the given period. +func (cs *canonicalStore[T]) databaseKey(period uint64) []byte { + return binary.BigEndian.AppendUint64(append([]byte{}, cs.keyPrefix...), period) +} + +// add adds the given item to the database. It also ensures that the range remains +// continuous. Can be used either with a batch or database backend. +func (cs *canonicalStore[T]) add(backend ethdb.KeyValueWriter, period uint64, value T) error { + if !cs.periods.canExpand(period) { + return fmt.Errorf("period expansion is not allowed, first: %d, next: %d, period: %d", cs.periods.Start, cs.periods.End, period) + } + enc, err := rlp.EncodeToBytes(value) + if err != nil { + return err + } + if err := backend.Put(cs.databaseKey(period), enc); err != nil { + return err + } + cs.cache.Add(period, value) + cs.periods.expand(period) + return nil +} + +// deleteFrom removes items starting from the given period. +func (cs *canonicalStore[T]) deleteFrom(db ethdb.KeyValueWriter, fromPeriod uint64) (deleted periodRange) { + keepRange, deleteRange := cs.periods.split(fromPeriod) + deleteRange.each(func(period uint64) { + db.Delete(cs.databaseKey(period)) + cs.cache.Remove(period) + }) + cs.periods = keepRange + return deleteRange +} + +// get returns the item at the given period or the null value of the given type +// if no item is present. +func (cs *canonicalStore[T]) get(backend ethdb.KeyValueReader, period uint64) (T, bool) { + var null, value T + if !cs.periods.contains(period) { + return null, false + } + if value, ok := cs.cache.Get(period); ok { + return value, true + } + enc, err := backend.Get(cs.databaseKey(period)) + if err != nil { + log.Error("Canonical store value not found", "period", period, "start", cs.periods.Start, "end", cs.periods.End) + return null, false + } + if err := rlp.DecodeBytes(enc, &value); err != nil { + log.Error("Error decoding canonical store value", "error", err) + return null, false + } + cs.cache.Add(period, value) + return value, true +} diff --git a/beacon/light/committee_chain.go b/beacon/light/committee_chain.go new file mode 100644 index 0000000000..d707f8cc34 --- /dev/null +++ b/beacon/light/committee_chain.go @@ -0,0 +1,514 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package light + +import ( + "errors" + "fmt" + "math" + "sync" + "time" + + "github.com/ethereum/go-ethereum/beacon/params" + "github.com/ethereum/go-ethereum/beacon/types" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/lru" + "github.com/ethereum/go-ethereum/common/mclock" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" +) + +var ( + ErrNeedCommittee = errors.New("sync committee required") + ErrInvalidUpdate = errors.New("invalid committee update") + ErrInvalidPeriod = errors.New("invalid update period") + ErrWrongCommitteeRoot = errors.New("wrong committee root") + ErrCannotReorg = errors.New("can not reorg committee chain") +) + +// CommitteeChain is a passive data structure that can validate, hold and update +// a chain of beacon light sync committees and updates. It requires at least one +// externally set fixed committee root at the beginning of the chain which can +// be set either based on a BootstrapData or a trusted source (a local beacon +// full node). This makes the structure useful for both light client and light +// server setups. +// +// It always maintains the following consistency constraints: +// - a committee can only be present if its root hash matches an existing fixed +// root or if it is proven by an update at the previous period +// - an update can only be present if a committee is present at the same period +// and the update signature is valid and has enough participants. +// The committee at the next period (proven by the update) should also be +// present (note that this means they can only be added together if neither +// is present yet). If a fixed root is present at the next period then the +// update can only be present if it proves the same committee root. +// +// Once synced to the current sync period, CommitteeChain can also validate +// signed beacon headers. +type CommitteeChain struct { + // chainmu guards against concurrent access to the canonicalStore structures + // (updates, committees, fixedCommitteeRoots) and ensures that they stay consistent + // with each other and with committeeCache. + chainmu sync.RWMutex + db ethdb.KeyValueStore + updates *canonicalStore[*types.LightClientUpdate] + committees *canonicalStore[*types.SerializedSyncCommittee] + fixedCommitteeRoots *canonicalStore[common.Hash] + committeeCache *lru.Cache[uint64, syncCommittee] // cache deserialized committees + + clock mclock.Clock // monotonic clock (simulated clock in tests) + unixNano func() int64 // system clock (simulated clock in tests) + sigVerifier committeeSigVerifier // BLS sig verifier (dummy verifier in tests) + + config *types.ChainConfig + signerThreshold int + minimumUpdateScore types.UpdateScore + enforceTime bool // enforceTime specifies whether the age of a signed header should be checked +} + +// NewCommitteeChain creates a new CommitteeChain. +func NewCommitteeChain(db ethdb.KeyValueStore, config *types.ChainConfig, signerThreshold int, enforceTime bool) *CommitteeChain { + return newCommitteeChain(db, config, signerThreshold, enforceTime, blsVerifier{}, &mclock.System{}, func() int64 { return time.Now().UnixNano() }) +} + +// newCommitteeChain creates a new CommitteeChain with the option of replacing the +// clock source and signature verification for testing purposes. +func newCommitteeChain(db ethdb.KeyValueStore, config *types.ChainConfig, signerThreshold int, enforceTime bool, sigVerifier committeeSigVerifier, clock mclock.Clock, unixNano func() int64) *CommitteeChain { + s := &CommitteeChain{ + committeeCache: lru.NewCache[uint64, syncCommittee](10), + db: db, + sigVerifier: sigVerifier, + clock: clock, + unixNano: unixNano, + config: config, + signerThreshold: signerThreshold, + enforceTime: enforceTime, + minimumUpdateScore: types.UpdateScore{ + SignerCount: uint32(signerThreshold), + SubPeriodIndex: params.SyncPeriodLength / 16, + }, + } + + var err1, err2, err3 error + if s.fixedCommitteeRoots, err1 = newCanonicalStore[common.Hash](db, rawdb.FixedCommitteeRootKey); err1 != nil { + log.Error("Error creating fixed committee root store", "error", err1) + } + if s.committees, err2 = newCanonicalStore[*types.SerializedSyncCommittee](db, rawdb.SyncCommitteeKey); err2 != nil { + log.Error("Error creating committee store", "error", err2) + } + if s.updates, err3 = newCanonicalStore[*types.LightClientUpdate](db, rawdb.BestUpdateKey); err3 != nil { + log.Error("Error creating update store", "error", err3) + } + if err1 != nil || err2 != nil || err3 != nil || !s.checkConstraints() { + log.Info("Resetting invalid committee chain") + s.Reset() + } + // roll back invalid updates (might be necessary if forks have been changed since last time) + for !s.updates.periods.isEmpty() { + update, ok := s.updates.get(s.db, s.updates.periods.End-1) + if !ok { + log.Error("Sync committee update missing", "period", s.updates.periods.End-1) + s.Reset() + break + } + if valid, err := s.verifyUpdate(update); err != nil { + log.Error("Error validating update", "period", s.updates.periods.End-1, "error", err) + } else if valid { + break + } + if err := s.rollback(s.updates.periods.End); err != nil { + log.Error("Error writing batch into chain database", "error", err) + } + } + if !s.committees.periods.isEmpty() { + log.Trace("Sync committee chain loaded", "first period", s.committees.periods.Start, "last period", s.committees.periods.End-1) + } + return s +} + +// checkConstraints checks committee chain validity constraints +func (s *CommitteeChain) checkConstraints() bool { + isNotInFixedCommitteeRootRange := func(r periodRange) bool { + return s.fixedCommitteeRoots.periods.isEmpty() || + r.Start < s.fixedCommitteeRoots.periods.Start || + r.Start >= s.fixedCommitteeRoots.periods.End + } + + valid := true + if !s.updates.periods.isEmpty() { + if isNotInFixedCommitteeRootRange(s.updates.periods) { + log.Error("Start update is not in the fixed roots range") + valid = false + } + if s.committees.periods.Start > s.updates.periods.Start || s.committees.periods.End <= s.updates.periods.End { + log.Error("Missing committees in update range") + valid = false + } + } + if !s.committees.periods.isEmpty() { + if isNotInFixedCommitteeRootRange(s.committees.periods) { + log.Error("Start committee is not in the fixed roots range") + valid = false + } + if s.committees.periods.End > s.fixedCommitteeRoots.periods.End && s.committees.periods.End > s.updates.periods.End+1 { + log.Error("Last committee is neither in the fixed roots range nor proven by updates") + valid = false + } + } + return valid +} + +// Reset resets the committee chain. +func (s *CommitteeChain) Reset() { + s.chainmu.Lock() + defer s.chainmu.Unlock() + + if err := s.rollback(0); err != nil { + log.Error("Error writing batch into chain database", "error", err) + } +} + +// CheckpointInit initializes a CommitteeChain based on the checkpoint. +// Note: if the chain is already initialized and the committees proven by the +// checkpoint do match the existing chain then the chain is retained and the +// new checkpoint becomes fixed. +func (s *CommitteeChain) CheckpointInit(bootstrap *types.BootstrapData) error { + s.chainmu.Lock() + defer s.chainmu.Unlock() + + if err := bootstrap.Validate(); err != nil { + return err + } + + period := bootstrap.Header.SyncPeriod() + if err := s.deleteFixedCommitteeRootsFrom(period + 2); err != nil { + s.Reset() + return err + } + if s.addFixedCommitteeRoot(period, bootstrap.CommitteeRoot) != nil { + s.Reset() + if err := s.addFixedCommitteeRoot(period, bootstrap.CommitteeRoot); err != nil { + s.Reset() + return err + } + } + if err := s.addFixedCommitteeRoot(period+1, common.Hash(bootstrap.CommitteeBranch[0])); err != nil { + s.Reset() + return err + } + if err := s.addCommittee(period, bootstrap.Committee); err != nil { + s.Reset() + return err + } + return nil +} + +// addFixedCommitteeRoot sets a fixed committee root at the given period. +// Note that the period where the first committee is added has to have a fixed +// root which can either come from a BootstrapData or a trusted source. +func (s *CommitteeChain) addFixedCommitteeRoot(period uint64, root common.Hash) error { + if root == (common.Hash{}) { + return ErrWrongCommitteeRoot + } + + batch := s.db.NewBatch() + oldRoot := s.getCommitteeRoot(period) + if !s.fixedCommitteeRoots.periods.canExpand(period) { + // Note: the fixed committee root range should always be continuous and + // therefore the expected syncing method is to forward sync and optionally + // backward sync periods one by one, starting from a checkpoint. The only + // case when a root that is not adjacent to the already fixed ones can be + // fixed is when the same root has already been proven by an update chain. + // In this case the all roots in between can and should be fixed. + // This scenario makes sense when a new trusted checkpoint is added to an + // existing chain, ensuring that it will not be rolled back (might be + // important in case of low signer participation rate). + if root != oldRoot { + return ErrInvalidPeriod + } + // if the old root exists and matches the new one then it is guaranteed + // that the given period is after the existing fixed range and the roots + // in between can also be fixed. + for p := s.fixedCommitteeRoots.periods.End; p < period; p++ { + if err := s.fixedCommitteeRoots.add(batch, p, s.getCommitteeRoot(p)); err != nil { + return err + } + } + } + if oldRoot != (common.Hash{}) && (oldRoot != root) { + // existing old root was different, we have to reorg the chain + if err := s.rollback(period); err != nil { + return err + } + } + if err := s.fixedCommitteeRoots.add(batch, period, root); err != nil { + return err + } + if err := batch.Write(); err != nil { + log.Error("Error writing batch into chain database", "error", err) + return err + } + return nil +} + +// deleteFixedCommitteeRootsFrom deletes fixed roots starting from the given period. +// It also maintains chain consistency, meaning that it also deletes updates and +// committees if they are no longer supported by a valid update chain. +func (s *CommitteeChain) deleteFixedCommitteeRootsFrom(period uint64) error { + if period >= s.fixedCommitteeRoots.periods.End { + return nil + } + batch := s.db.NewBatch() + s.fixedCommitteeRoots.deleteFrom(batch, period) + if s.updates.periods.isEmpty() || period <= s.updates.periods.Start { + // Note: the first period of the update chain should always be fixed so if + // the fixed root at the first update is removed then the entire update chain + // and the proven committees have to be removed. Earlier committees in the + // remaining fixed root range can stay. + s.updates.deleteFrom(batch, period) + s.deleteCommitteesFrom(batch, period) + } else { + // The update chain stays intact, some previously fixed committee roots might + // get unfixed but are still proven by the update chain. If there were + // committees present after the range proven by updates, those should be + // removed if the belonging fixed roots are also removed. + fromPeriod := s.updates.periods.End + 1 // not proven by updates + if period > fromPeriod { + fromPeriod = period // also not justified by fixed roots + } + s.deleteCommitteesFrom(batch, fromPeriod) + } + if err := batch.Write(); err != nil { + log.Error("Error writing batch into chain database", "error", err) + return err + } + return nil +} + +// deleteCommitteesFrom deletes committees starting from the given period. +func (s *CommitteeChain) deleteCommitteesFrom(batch ethdb.Batch, period uint64) { + deleted := s.committees.deleteFrom(batch, period) + for period := deleted.Start; period < deleted.End; period++ { + s.committeeCache.Remove(period) + } +} + +// addCommittee adds a committee at the given period if possible. +func (s *CommitteeChain) addCommittee(period uint64, committee *types.SerializedSyncCommittee) error { + if !s.committees.periods.canExpand(period) { + return ErrInvalidPeriod + } + root := s.getCommitteeRoot(period) + if root == (common.Hash{}) { + return ErrInvalidPeriod + } + if root != committee.Root() { + return ErrWrongCommitteeRoot + } + if !s.committees.periods.contains(period) { + if err := s.committees.add(s.db, period, committee); err != nil { + return err + } + s.committeeCache.Remove(period) + } + return nil +} + +// InsertUpdate adds a new update if possible. +func (s *CommitteeChain) InsertUpdate(update *types.LightClientUpdate, nextCommittee *types.SerializedSyncCommittee) error { + s.chainmu.Lock() + defer s.chainmu.Unlock() + + period := update.AttestedHeader.Header.SyncPeriod() + if !s.updates.periods.canExpand(period) || !s.committees.periods.contains(period) { + return ErrInvalidPeriod + } + if s.minimumUpdateScore.BetterThan(update.Score()) { + return ErrInvalidUpdate + } + oldRoot := s.getCommitteeRoot(period + 1) + reorg := oldRoot != (common.Hash{}) && oldRoot != update.NextSyncCommitteeRoot + if oldUpdate, ok := s.updates.get(s.db, period); ok && !update.Score().BetterThan(oldUpdate.Score()) { + // a better or equal update already exists; no changes, only fail if new one tried to reorg + if reorg { + return ErrCannotReorg + } + return nil + } + if s.fixedCommitteeRoots.periods.contains(period+1) && reorg { + return ErrCannotReorg + } + if ok, err := s.verifyUpdate(update); err != nil { + return err + } else if !ok { + return ErrInvalidUpdate + } + addCommittee := !s.committees.periods.contains(period+1) || reorg + if addCommittee { + if nextCommittee == nil { + return ErrNeedCommittee + } + if nextCommittee.Root() != update.NextSyncCommitteeRoot { + return ErrWrongCommitteeRoot + } + } + if reorg { + if err := s.rollback(period + 1); err != nil { + return err + } + } + batch := s.db.NewBatch() + if addCommittee { + if err := s.committees.add(batch, period+1, nextCommittee); err != nil { + return err + } + s.committeeCache.Remove(period + 1) + } + if err := s.updates.add(batch, period, update); err != nil { + return err + } + if err := batch.Write(); err != nil { + log.Error("Error writing batch into chain database", "error", err) + return err + } + log.Info("Inserted new committee update", "period", period, "next committee root", update.NextSyncCommitteeRoot) + return nil +} + +// NextSyncPeriod returns the next period where an update can be added and also +// whether the chain is initialized at all. +func (s *CommitteeChain) NextSyncPeriod() (uint64, bool) { + s.chainmu.RLock() + defer s.chainmu.RUnlock() + + if s.committees.periods.isEmpty() { + return 0, false + } + if !s.updates.periods.isEmpty() { + return s.updates.periods.End, true + } + return s.committees.periods.End - 1, true +} + +// rollback removes all committees and fixed roots from the given period and updates +// starting from the previous period. +func (s *CommitteeChain) rollback(period uint64) error { + max := s.updates.periods.End + 1 + if s.committees.periods.End > max { + max = s.committees.periods.End + } + if s.fixedCommitteeRoots.periods.End > max { + max = s.fixedCommitteeRoots.periods.End + } + for max > period { + max-- + batch := s.db.NewBatch() + s.deleteCommitteesFrom(batch, max) + s.fixedCommitteeRoots.deleteFrom(batch, max) + if max > 0 { + s.updates.deleteFrom(batch, max-1) + } + if err := batch.Write(); err != nil { + log.Error("Error writing batch into chain database", "error", err) + return err + } + } + return nil +} + +// getCommitteeRoot returns the committee root at the given period, either fixed, +// proven by a previous update or both. It returns an empty hash if the committee +// root is unknown. +func (s *CommitteeChain) getCommitteeRoot(period uint64) common.Hash { + if root, ok := s.fixedCommitteeRoots.get(s.db, period); ok || period == 0 { + return root + } + if update, ok := s.updates.get(s.db, period-1); ok { + return update.NextSyncCommitteeRoot + } + return common.Hash{} +} + +// getSyncCommittee returns the deserialized sync committee at the given period. +func (s *CommitteeChain) getSyncCommittee(period uint64) (syncCommittee, error) { + if c, ok := s.committeeCache.Get(period); ok { + return c, nil + } + if sc, ok := s.committees.get(s.db, period); ok { + c, err := s.sigVerifier.deserializeSyncCommittee(sc) + if err != nil { + return nil, fmt.Errorf("Sync committee #%d deserialization error: %v", period, err) + } + s.committeeCache.Add(period, c) + return c, nil + } + return nil, fmt.Errorf("Missing serialized sync committee #%d", period) +} + +// VerifySignedHeader returns true if the given signed header has a valid signature +// according to the local committee chain. The caller should ensure that the +// committees advertised by the same source where the signed header came from are +// synced before verifying the signature. +// The age of the header is also returned (the time elapsed since the beginning +// of the given slot, according to the local system clock). If enforceTime is +// true then negative age (future) headers are rejected. +func (s *CommitteeChain) VerifySignedHeader(head types.SignedHeader) (bool, time.Duration, error) { + s.chainmu.RLock() + defer s.chainmu.RUnlock() + + return s.verifySignedHeader(head) +} + +func (s *CommitteeChain) verifySignedHeader(head types.SignedHeader) (bool, time.Duration, error) { + var age time.Duration + now := s.unixNano() + if head.Header.Slot < (uint64(now-math.MinInt64)/uint64(time.Second)-s.config.GenesisTime)/12 { + age = time.Duration(now - int64(time.Second)*int64(s.config.GenesisTime+head.Header.Slot*12)) + } else { + age = time.Duration(math.MinInt64) + } + if s.enforceTime && age < 0 { + return false, age, nil + } + committee, err := s.getSyncCommittee(types.SyncPeriod(head.SignatureSlot)) + if err != nil { + return false, 0, err + } + if committee == nil { + return false, age, nil + } + if signingRoot, err := s.config.Forks.SigningRoot(head.Header); err == nil { + return s.sigVerifier.verifySignature(committee, signingRoot, &head.Signature), age, nil + } + return false, age, nil +} + +// verifyUpdate checks whether the header signature is correct and the update +// fits into the specified constraints (assumes that the update has been +// successfully validated previously) +func (s *CommitteeChain) verifyUpdate(update *types.LightClientUpdate) (bool, error) { + // Note: SignatureSlot determines the sync period of the committee used for signature + // verification. Though in reality SignatureSlot is always bigger than update.Header.Slot, + // setting them as equal here enforces the rule that they have to be in the same sync + // period in order for the light client update proof to be meaningful. + ok, age, err := s.verifySignedHeader(update.AttestedHeader) + if age < 0 { + log.Warn("Future committee update received", "age", age) + } + return ok, err +} diff --git a/beacon/light/committee_chain_test.go b/beacon/light/committee_chain_test.go new file mode 100644 index 0000000000..60ea2a0efd --- /dev/null +++ b/beacon/light/committee_chain_test.go @@ -0,0 +1,356 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package light + +import ( + "crypto/rand" + "testing" + "time" + + "github.com/ethereum/go-ethereum/beacon/params" + "github.com/ethereum/go-ethereum/beacon/types" + "github.com/ethereum/go-ethereum/common/mclock" + "github.com/ethereum/go-ethereum/ethdb/memorydb" +) + +var ( + testGenesis = newTestGenesis() + testGenesis2 = newTestGenesis() + + tfBase = newTestForks(testGenesis, types.Forks{ + &types.Fork{Epoch: 0, Version: []byte{0}}, + }) + tfAlternative = newTestForks(testGenesis, types.Forks{ + &types.Fork{Epoch: 0, Version: []byte{0}}, + &types.Fork{Epoch: 0x700, Version: []byte{1}}, + }) + tfAnotherGenesis = newTestForks(testGenesis2, types.Forks{ + &types.Fork{Epoch: 0, Version: []byte{0}}, + }) + + tcBase = newTestCommitteeChain(nil, tfBase, true, 0, 10, 400, false) + tcBaseWithInvalidUpdates = newTestCommitteeChain(tcBase, tfBase, false, 5, 10, 200, false) // signer count too low + tcBaseWithBetterUpdates = newTestCommitteeChain(tcBase, tfBase, false, 5, 10, 440, false) + tcReorgWithWorseUpdates = newTestCommitteeChain(tcBase, tfBase, true, 5, 10, 400, false) + tcReorgWithWorseUpdates2 = newTestCommitteeChain(tcBase, tfBase, true, 5, 10, 380, false) + tcReorgWithBetterUpdates = newTestCommitteeChain(tcBase, tfBase, true, 5, 10, 420, false) + tcReorgWithFinalizedUpdates = newTestCommitteeChain(tcBase, tfBase, true, 5, 10, 400, true) + tcFork = newTestCommitteeChain(tcBase, tfAlternative, true, 7, 10, 400, false) + tcAnotherGenesis = newTestCommitteeChain(nil, tfAnotherGenesis, true, 0, 10, 400, false) +) + +func TestCommitteeChainFixedCommitteeRoots(t *testing.T) { + for _, reload := range []bool{false, true} { + c := newCommitteeChainTest(t, tfBase, 300, true) + c.setClockPeriod(7) + c.addFixedCommitteeRoot(tcBase, 4, nil) + c.addFixedCommitteeRoot(tcBase, 5, nil) + c.addFixedCommitteeRoot(tcBase, 6, nil) + c.addFixedCommitteeRoot(tcBase, 8, ErrInvalidPeriod) // range has to be continuous + c.addFixedCommitteeRoot(tcBase, 3, nil) + c.addFixedCommitteeRoot(tcBase, 2, nil) + if reload { + c.reloadChain() + } + c.addCommittee(tcBase, 4, nil) + c.addCommittee(tcBase, 6, ErrInvalidPeriod) // range has to be continuous + c.addCommittee(tcBase, 5, nil) + c.addCommittee(tcBase, 6, nil) + c.addCommittee(tcAnotherGenesis, 3, ErrWrongCommitteeRoot) + c.addCommittee(tcBase, 3, nil) + if reload { + c.reloadChain() + } + c.verifyRange(tcBase, 3, 6) + } +} + +func TestCommitteeChainCheckpointSync(t *testing.T) { + for _, enforceTime := range []bool{false, true} { + for _, reload := range []bool{false, true} { + c := newCommitteeChainTest(t, tfBase, 300, enforceTime) + if enforceTime { + c.setClockPeriod(6) + } + c.insertUpdate(tcBase, 3, true, ErrInvalidPeriod) + c.addFixedCommitteeRoot(tcBase, 3, nil) + c.addFixedCommitteeRoot(tcBase, 4, nil) + c.insertUpdate(tcBase, 4, true, ErrInvalidPeriod) // still no committee + c.addCommittee(tcBase, 3, nil) + c.addCommittee(tcBase, 4, nil) + if reload { + c.reloadChain() + } + c.verifyRange(tcBase, 3, 4) + c.insertUpdate(tcBase, 3, false, nil) // update can be added without committee here + c.insertUpdate(tcBase, 4, false, ErrNeedCommittee) // but not here as committee 5 is not there yet + c.insertUpdate(tcBase, 4, true, nil) + c.verifyRange(tcBase, 3, 5) + c.insertUpdate(tcBaseWithInvalidUpdates, 5, true, ErrInvalidUpdate) // signer count too low + c.insertUpdate(tcBase, 5, true, nil) + if reload { + c.reloadChain() + } + if enforceTime { + c.insertUpdate(tcBase, 6, true, ErrInvalidUpdate) // future update rejected + c.setClockPeriod(7) + } + c.insertUpdate(tcBase, 6, true, nil) // when the time comes it's accepted + if reload { + c.reloadChain() + } + if enforceTime { + c.verifyRange(tcBase, 3, 6) // committee 7 is there but still in the future + c.setClockPeriod(8) + } + c.verifyRange(tcBase, 3, 7) // now period 7 can also be verified + // try reverse syncing an update + c.insertUpdate(tcBase, 2, false, ErrInvalidPeriod) // fixed committee is needed first + c.addFixedCommitteeRoot(tcBase, 2, nil) + c.addCommittee(tcBase, 2, nil) + c.insertUpdate(tcBase, 2, false, nil) + c.verifyRange(tcBase, 2, 7) + } + } +} + +func TestCommitteeChainReorg(t *testing.T) { + for _, reload := range []bool{false, true} { + for _, addBetterUpdates := range []bool{false, true} { + c := newCommitteeChainTest(t, tfBase, 300, true) + c.setClockPeriod(11) + c.addFixedCommitteeRoot(tcBase, 3, nil) + c.addFixedCommitteeRoot(tcBase, 4, nil) + c.addCommittee(tcBase, 3, nil) + for period := uint64(3); period < 10; period++ { + c.insertUpdate(tcBase, period, true, nil) + } + if reload { + c.reloadChain() + } + c.verifyRange(tcBase, 3, 10) + c.insertUpdate(tcReorgWithWorseUpdates, 5, true, ErrCannotReorg) + c.insertUpdate(tcReorgWithWorseUpdates2, 5, true, ErrCannotReorg) + if addBetterUpdates { + // add better updates for the base chain and expect first reorg to fail + // (only add updates as committees should be the same) + for period := uint64(5); period < 10; period++ { + c.insertUpdate(tcBaseWithBetterUpdates, period, false, nil) + } + if reload { + c.reloadChain() + } + c.verifyRange(tcBase, 3, 10) // still on the same chain + c.insertUpdate(tcReorgWithBetterUpdates, 5, true, ErrCannotReorg) + } else { + // reorg with better updates + c.insertUpdate(tcReorgWithBetterUpdates, 5, false, ErrNeedCommittee) + c.verifyRange(tcBase, 3, 10) // no success yet, still on the base chain + c.verifyRange(tcReorgWithBetterUpdates, 3, 5) + c.insertUpdate(tcReorgWithBetterUpdates, 5, true, nil) + // successful reorg, base chain should only match before the reorg period + if reload { + c.reloadChain() + } + c.verifyRange(tcBase, 3, 5) + c.verifyRange(tcReorgWithBetterUpdates, 3, 6) + for period := uint64(6); period < 10; period++ { + c.insertUpdate(tcReorgWithBetterUpdates, period, true, nil) + } + c.verifyRange(tcReorgWithBetterUpdates, 3, 10) + } + // reorg with finalized updates; should succeed even if base chain updates + // have been improved because a finalized update beats everything else + c.insertUpdate(tcReorgWithFinalizedUpdates, 5, false, ErrNeedCommittee) + c.insertUpdate(tcReorgWithFinalizedUpdates, 5, true, nil) + if reload { + c.reloadChain() + } + c.verifyRange(tcReorgWithFinalizedUpdates, 3, 6) + for period := uint64(6); period < 10; period++ { + c.insertUpdate(tcReorgWithFinalizedUpdates, period, true, nil) + } + c.verifyRange(tcReorgWithFinalizedUpdates, 3, 10) + } + } +} + +func TestCommitteeChainFork(t *testing.T) { + c := newCommitteeChainTest(t, tfAlternative, 300, true) + c.setClockPeriod(11) + // trying to sync a chain on an alternative fork with the base chain data + c.addFixedCommitteeRoot(tcBase, 0, nil) + c.addFixedCommitteeRoot(tcBase, 1, nil) + c.addCommittee(tcBase, 0, nil) + // shared section should sync without errors + for period := uint64(0); period < 7; period++ { + c.insertUpdate(tcBase, period, true, nil) + } + c.insertUpdate(tcBase, 7, true, ErrInvalidUpdate) // wrong fork + // committee root #7 is still the same but signatures are already signed with + // a different fork id so period 7 should only verify on the alternative fork + c.verifyRange(tcBase, 0, 6) + c.verifyRange(tcFork, 0, 7) + for period := uint64(7); period < 10; period++ { + c.insertUpdate(tcFork, period, true, nil) + } + c.verifyRange(tcFork, 0, 10) + // reload the chain while switching to the base fork + c.config = tfBase + c.reloadChain() + // updates 7..9 should be rolled back now + c.verifyRange(tcFork, 0, 6) // again, period 7 only verifies on the right fork + c.verifyRange(tcBase, 0, 7) + c.insertUpdate(tcFork, 7, true, ErrInvalidUpdate) // wrong fork + for period := uint64(7); period < 10; period++ { + c.insertUpdate(tcBase, period, true, nil) + } + c.verifyRange(tcBase, 0, 10) +} + +type committeeChainTest struct { + t *testing.T + db *memorydb.Database + clock *mclock.Simulated + config types.ChainConfig + signerThreshold int + enforceTime bool + chain *CommitteeChain +} + +func newCommitteeChainTest(t *testing.T, config types.ChainConfig, signerThreshold int, enforceTime bool) *committeeChainTest { + c := &committeeChainTest{ + t: t, + db: memorydb.New(), + clock: &mclock.Simulated{}, + config: config, + signerThreshold: signerThreshold, + enforceTime: enforceTime, + } + c.chain = newCommitteeChain(c.db, &config, signerThreshold, enforceTime, dummyVerifier{}, c.clock, func() int64 { return int64(c.clock.Now()) }) + return c +} + +func (c *committeeChainTest) reloadChain() { + c.chain = newCommitteeChain(c.db, &c.config, c.signerThreshold, c.enforceTime, dummyVerifier{}, c.clock, func() int64 { return int64(c.clock.Now()) }) +} + +func (c *committeeChainTest) setClockPeriod(period float64) { + target := mclock.AbsTime(period * float64(time.Second*12*params.SyncPeriodLength)) + wait := time.Duration(target - c.clock.Now()) + if wait < 0 { + c.t.Fatalf("Invalid setClockPeriod") + } + c.clock.Run(wait) +} + +func (c *committeeChainTest) addFixedCommitteeRoot(tc *testCommitteeChain, period uint64, expErr error) { + if err := c.chain.addFixedCommitteeRoot(period, tc.periods[period].committee.Root()); err != expErr { + c.t.Errorf("Incorrect error output from addFixedCommitteeRoot at period %d (expected %v, got %v)", period, expErr, err) + } +} + +func (c *committeeChainTest) addCommittee(tc *testCommitteeChain, period uint64, expErr error) { + if err := c.chain.addCommittee(period, tc.periods[period].committee); err != expErr { + c.t.Errorf("Incorrect error output from addCommittee at period %d (expected %v, got %v)", period, expErr, err) + } +} + +func (c *committeeChainTest) insertUpdate(tc *testCommitteeChain, period uint64, addCommittee bool, expErr error) { + var committee *types.SerializedSyncCommittee + if addCommittee { + committee = tc.periods[period+1].committee + } + if err := c.chain.InsertUpdate(tc.periods[period].update, committee); err != expErr { + c.t.Errorf("Incorrect error output from InsertUpdate at period %d (expected %v, got %v)", period, expErr, err) + } +} + +func (c *committeeChainTest) verifySignedHeader(tc *testCommitteeChain, period float64, expOk bool) { + slot := uint64(period * float64(params.SyncPeriodLength)) + signedHead := GenerateTestSignedHeader(types.Header{Slot: slot}, &tc.config, tc.periods[types.SyncPeriod(slot)].committee, slot+1, 400) + if ok, _, _ := c.chain.VerifySignedHeader(signedHead); ok != expOk { + c.t.Errorf("Incorrect output from VerifySignedHeader at period %f (expected %v, got %v)", period, expOk, ok) + } +} + +func (c *committeeChainTest) verifyRange(tc *testCommitteeChain, begin, end uint64) { + if begin > 0 { + c.verifySignedHeader(tc, float64(begin)-0.5, false) + } + for period := begin; period <= end; period++ { + c.verifySignedHeader(tc, float64(period)+0.5, true) + } + c.verifySignedHeader(tc, float64(end)+1.5, false) +} + +func newTestGenesis() types.ChainConfig { + var config types.ChainConfig + rand.Read(config.GenesisValidatorsRoot[:]) + return config +} + +func newTestForks(config types.ChainConfig, forks types.Forks) types.ChainConfig { + for _, fork := range forks { + config.AddFork(fork.Name, fork.Epoch, fork.Version) + } + return config +} + +func newTestCommitteeChain(parent *testCommitteeChain, config types.ChainConfig, newCommittees bool, begin, end int, signerCount int, finalizedHeader bool) *testCommitteeChain { + tc := &testCommitteeChain{ + config: config, + } + if parent != nil { + tc.periods = make([]testPeriod, len(parent.periods)) + copy(tc.periods, parent.periods) + } + if newCommittees { + if begin == 0 { + tc.fillCommittees(begin, end+1) + } else { + tc.fillCommittees(begin+1, end+1) + } + } + tc.fillUpdates(begin, end, signerCount, finalizedHeader) + return tc +} + +type testPeriod struct { + committee *types.SerializedSyncCommittee + update *types.LightClientUpdate +} + +type testCommitteeChain struct { + periods []testPeriod + config types.ChainConfig +} + +func (tc *testCommitteeChain) fillCommittees(begin, end int) { + if len(tc.periods) <= end { + tc.periods = append(tc.periods, make([]testPeriod, end+1-len(tc.periods))...) + } + for i := begin; i <= end; i++ { + tc.periods[i].committee = GenerateTestCommittee() + } +} + +func (tc *testCommitteeChain) fillUpdates(begin, end int, signerCount int, finalizedHeader bool) { + for i := begin; i <= end; i++ { + tc.periods[i].update = GenerateTestUpdate(&tc.config, uint64(i), tc.periods[i].committee, tc.periods[i+1].committee, signerCount, finalizedHeader) + } +} diff --git a/beacon/light/range.go b/beacon/light/range.go new file mode 100644 index 0000000000..76ebe2381a --- /dev/null +++ b/beacon/light/range.go @@ -0,0 +1,78 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package light + +// periodRange represents a (possibly zero-length) range of integers (sync periods). +type periodRange struct { + Start, End uint64 +} + +// isEmpty returns true if the length of the range is zero. +func (a periodRange) isEmpty() bool { + return a.End == a.Start +} + +// contains returns true if the range includes the given period. +func (a periodRange) contains(period uint64) bool { + return period >= a.Start && period < a.End +} + +// canExpand returns true if the range includes or can be expanded with the given +// period (either the range is empty or the given period is inside, right before or +// right after the range). +func (a periodRange) canExpand(period uint64) bool { + return a.isEmpty() || (period+1 >= a.Start && period <= a.End) +} + +// expand expands the range with the given period. +// This method assumes that canExpand returned true: otherwise this is a no-op. +func (a *periodRange) expand(period uint64) { + if a.isEmpty() { + a.Start, a.End = period, period+1 + return + } + if a.Start == period+1 { + a.Start-- + } + if a.End == period { + a.End++ + } +} + +// split splits the range into two ranges. The 'fromPeriod' will be the first +// element in the second range (if present). +// The original range is unchanged by this operation +func (a *periodRange) split(fromPeriod uint64) (periodRange, periodRange) { + if fromPeriod <= a.Start { + // First range empty, everything in second range, + return periodRange{}, *a + } + if fromPeriod >= a.End { + // Second range empty, everything in first range, + return *a, periodRange{} + } + x := periodRange{a.Start, fromPeriod} + y := periodRange{fromPeriod, a.End} + return x, y +} + +// each invokes the supplied function fn once per period in range +func (a *periodRange) each(fn func(uint64)) { + for p := a.Start; p < a.End; p++ { + fn(p) + } +} diff --git a/beacon/light/test_helpers.go b/beacon/light/test_helpers.go new file mode 100644 index 0000000000..f537d963a6 --- /dev/null +++ b/beacon/light/test_helpers.go @@ -0,0 +1,152 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package light + +import ( + "crypto/rand" + "crypto/sha256" + mrand "math/rand" + + "github.com/ethereum/go-ethereum/beacon/merkle" + "github.com/ethereum/go-ethereum/beacon/params" + "github.com/ethereum/go-ethereum/beacon/types" + "github.com/ethereum/go-ethereum/common" +) + +func GenerateTestCommittee() *types.SerializedSyncCommittee { + s := new(types.SerializedSyncCommittee) + rand.Read(s[:32]) + return s +} + +func GenerateTestUpdate(config *types.ChainConfig, period uint64, committee, nextCommittee *types.SerializedSyncCommittee, signerCount int, finalizedHeader bool) *types.LightClientUpdate { + update := new(types.LightClientUpdate) + update.NextSyncCommitteeRoot = nextCommittee.Root() + var attestedHeader types.Header + if finalizedHeader { + update.FinalizedHeader = new(types.Header) + *update.FinalizedHeader, update.NextSyncCommitteeBranch = makeTestHeaderWithMerkleProof(types.SyncPeriodStart(period)+100, params.StateIndexNextSyncCommittee, merkle.Value(update.NextSyncCommitteeRoot)) + attestedHeader, update.FinalityBranch = makeTestHeaderWithMerkleProof(types.SyncPeriodStart(period)+200, params.StateIndexFinalBlock, merkle.Value(update.FinalizedHeader.Hash())) + } else { + attestedHeader, update.NextSyncCommitteeBranch = makeTestHeaderWithMerkleProof(types.SyncPeriodStart(period)+2000, params.StateIndexNextSyncCommittee, merkle.Value(update.NextSyncCommitteeRoot)) + } + update.AttestedHeader = GenerateTestSignedHeader(attestedHeader, config, committee, attestedHeader.Slot+1, signerCount) + return update +} + +func GenerateTestSignedHeader(header types.Header, config *types.ChainConfig, committee *types.SerializedSyncCommittee, signatureSlot uint64, signerCount int) types.SignedHeader { + bitmask := makeBitmask(signerCount) + signingRoot, _ := config.Forks.SigningRoot(header) + c, _ := dummyVerifier{}.deserializeSyncCommittee(committee) + return types.SignedHeader{ + Header: header, + Signature: types.SyncAggregate{ + Signers: bitmask, + Signature: makeDummySignature(c.(dummySyncCommittee), signingRoot, bitmask), + }, + SignatureSlot: signatureSlot, + } +} + +func GenerateTestCheckpoint(period uint64, committee *types.SerializedSyncCommittee) *types.BootstrapData { + header, branch := makeTestHeaderWithMerkleProof(types.SyncPeriodStart(period)+200, params.StateIndexSyncCommittee, merkle.Value(committee.Root())) + return &types.BootstrapData{ + Header: header, + Committee: committee, + CommitteeRoot: committee.Root(), + CommitteeBranch: branch, + } +} + +func makeBitmask(signerCount int) (bitmask [params.SyncCommitteeBitmaskSize]byte) { + for i := 0; i < params.SyncCommitteeSize; i++ { + if mrand.Intn(params.SyncCommitteeSize-i) < signerCount { + bitmask[i/8] += byte(1) << (i & 7) + signerCount-- + } + } + return +} + +func makeTestHeaderWithMerkleProof(slot, index uint64, value merkle.Value) (types.Header, merkle.Values) { + var branch merkle.Values + hasher := sha256.New() + for index > 1 { + var proofHash merkle.Value + rand.Read(proofHash[:]) + hasher.Reset() + if index&1 == 0 { + hasher.Write(value[:]) + hasher.Write(proofHash[:]) + } else { + hasher.Write(proofHash[:]) + hasher.Write(value[:]) + } + hasher.Sum(value[:0]) + index >>= 1 + branch = append(branch, proofHash) + } + return types.Header{Slot: slot, StateRoot: common.Hash(value)}, branch +} + +// syncCommittee holds either a blsSyncCommittee or a fake dummySyncCommittee used for testing +type syncCommittee interface{} + +// committeeSigVerifier verifies sync committee signatures (either proper BLS +// signatures or fake signatures used for testing) +type committeeSigVerifier interface { + deserializeSyncCommittee(s *types.SerializedSyncCommittee) (syncCommittee, error) + verifySignature(committee syncCommittee, signedRoot common.Hash, aggregate *types.SyncAggregate) bool +} + +// blsVerifier implements committeeSigVerifier +type blsVerifier struct{} + +// deserializeSyncCommittee implements committeeSigVerifier +func (blsVerifier) deserializeSyncCommittee(s *types.SerializedSyncCommittee) (syncCommittee, error) { + return s.Deserialize() +} + +// verifySignature implements committeeSigVerifier +func (blsVerifier) verifySignature(committee syncCommittee, signingRoot common.Hash, aggregate *types.SyncAggregate) bool { + return committee.(*types.SyncCommittee).VerifySignature(signingRoot, aggregate) +} + +type dummySyncCommittee [32]byte + +// dummyVerifier implements committeeSigVerifier +type dummyVerifier struct{} + +// deserializeSyncCommittee implements committeeSigVerifier +func (dummyVerifier) deserializeSyncCommittee(s *types.SerializedSyncCommittee) (syncCommittee, error) { + var sc dummySyncCommittee + copy(sc[:], s[:32]) + return sc, nil +} + +// verifySignature implements committeeSigVerifier +func (dummyVerifier) verifySignature(committee syncCommittee, signingRoot common.Hash, aggregate *types.SyncAggregate) bool { + return aggregate.Signature == makeDummySignature(committee.(dummySyncCommittee), signingRoot, aggregate.Signers) +} + +func makeDummySignature(committee dummySyncCommittee, signingRoot common.Hash, bitmask [params.SyncCommitteeBitmaskSize]byte) (sig [params.BLSSignatureSize]byte) { + for i, b := range committee[:] { + sig[i] = b ^ signingRoot[i] + } + copy(sig[32:], bitmask[:]) + return +} diff --git a/beacon/types/update.go b/beacon/types/light_sync.go similarity index 88% rename from beacon/types/update.go rename to beacon/types/light_sync.go index 06c1b61792..3284081e4d 100644 --- a/beacon/types/update.go +++ b/beacon/types/light_sync.go @@ -25,6 +25,24 @@ import ( "github.com/ethereum/go-ethereum/common" ) +// BootstrapData contains a sync committee where light sync can be started, +// together with a proof through a beacon header and corresponding state. +// Note: BootstrapData is fetched from a server based on a known checkpoint hash. +type BootstrapData struct { + Header Header + CommitteeRoot common.Hash + Committee *SerializedSyncCommittee `rlp:"-"` + CommitteeBranch merkle.Values +} + +// Validate verifies the proof included in BootstrapData. +func (c *BootstrapData) Validate() error { + if c.CommitteeRoot != c.Committee.Root() { + return errors.New("wrong committee root") + } + return merkle.VerifyProof(c.Header.StateRoot, params.StateIndexSyncCommittee, c.CommitteeBranch, merkle.Value(c.CommitteeRoot)) +} + // LightClientUpdate is a proof of the next sync committee root based on a header // signed by the sync committee of the given period. Optionally, the update can // prove quasi-finality by the signed header referring to a previous, finalized diff --git a/core/rawdb/schema.go b/core/rawdb/schema.go index 8e82459e82..be03723553 100644 --- a/core/rawdb/schema.go +++ b/core/rawdb/schema.go @@ -132,6 +132,10 @@ var ( CliqueSnapshotPrefix = []byte("clique-") + BestUpdateKey = []byte("update-") // bigEndian64(syncPeriod) -> RLP(types.LightClientUpdate) (nextCommittee only referenced by root hash) + FixedCommitteeRootKey = []byte("fixedRoot-") // bigEndian64(syncPeriod) -> committee root hash + SyncCommitteeKey = []byte("committee-") // bigEndian64(syncPeriod) -> serialized committee + preimageCounter = metrics.NewRegisteredCounter("db/preimage/total", nil) preimageHitCounter = metrics.NewRegisteredCounter("db/preimage/hits", nil) ) From d98d70f670297a4bfa86db1a67a9c024f7186f43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Fri, 8 Dec 2023 15:16:04 +0200 Subject: [PATCH 125/223] cmd/utils, eth: disallow invalid snap sync / snapshot flag combos (#28657) * eth: prevent startup in snap mode without snapshots * cmd/utils: try to fix bad flag combos wrt snap sync and snapshot generation --- cmd/utils/flags.go | 10 ++++++++-- eth/handler.go | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 27e1b3f623..d4c918bf4f 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1677,10 +1677,16 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { if ctx.IsSet(CacheLogSizeFlag.Name) { cfg.FilterLogCacheSize = ctx.Int(CacheLogSizeFlag.Name) } - if !ctx.Bool(SnapshotFlag.Name) { + if !ctx.Bool(SnapshotFlag.Name) || cfg.SnapshotCache == 0 { // If snap-sync is requested, this flag is also required if cfg.SyncMode == downloader.SnapSync { - log.Info("Snap sync requested, enabling --snapshot") + if !ctx.Bool(SnapshotFlag.Name) { + log.Warn("Snap sync requested, enabling --snapshot") + } + if cfg.SnapshotCache == 0 { + log.Warn("Snap sync requested, resetting --cache.snapshot") + cfg.SnapshotCache = ctx.Int(CacheFlag.Name) * CacheSnapshotFlag.Value / 100 + } } else { cfg.TrieCleanCache += cfg.SnapshotCache cfg.SnapshotCache = 0 // Disabled diff --git a/eth/handler.go b/eth/handler.go index f0021e5644..a327af6113 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -178,6 +178,10 @@ func newHandler(config *handlerConfig) (*handler, error) { log.Info("Enabled snap sync", "head", head.Number, "hash", head.Hash()) } } + // If snap sync is requested but snapshots are disabled, fail loudly + if h.snapSync.Load() && config.Chain.Snapshots() == nil { + return nil, errors.New("snap sync not supported with snapshots disabled") + } // Construct the downloader (long sync) h.downloader = downloader.New(config.Database, h.eventMux, h.chain, nil, h.removePeer, h.enableSyncedFeatures) if ttd := h.chain.Config().TerminalTotalDifficulty; ttd != nil { From e206d3f8975bd98cc86d14055dca40f996bacc60 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Fri, 8 Dec 2023 21:28:23 +0800 Subject: [PATCH 126/223] trie: remove inconsistent trie nodes during sync in path mode (#28595) This fixes a database corruption issue that could occur during state healing. When sync is aborted while certain modifications were already committed, and a reorg occurs, the database would contain incorrect trie nodes stored by path. These nodes need to detected/deleted in order to obtain a complete and fully correct state after state healing. --------- Co-authored-by: Felix Lange --- ethdb/dbtest/testsuite.go | 6 +- trie/sync.go | 223 ++++++++++++++++++++++++-------------- trie/sync_test.go | 125 ++++++++++++++++++++- 3 files changed, 270 insertions(+), 84 deletions(-) diff --git a/ethdb/dbtest/testsuite.go b/ethdb/dbtest/testsuite.go index 0d3d5f5aa6..29bd24364e 100644 --- a/ethdb/dbtest/testsuite.go +++ b/ethdb/dbtest/testsuite.go @@ -273,9 +273,13 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) { b.Put([]byte("5"), nil) b.Delete([]byte("1")) b.Put([]byte("6"), nil) - b.Delete([]byte("3")) + + b.Delete([]byte("3")) // delete then put b.Put([]byte("3"), nil) + b.Put([]byte("7"), nil) // put then delete + b.Delete([]byte("7")) + if err := b.Write(); err != nil { t.Fatal(err) } diff --git a/trie/sync.go b/trie/sync.go index 8eaed9f21a..589d28364b 100644 --- a/trie/sync.go +++ b/trie/sync.go @@ -116,10 +116,9 @@ type LeafCallback func(keys [][]byte, path []byte, leaf []byte, parent common.Ha // nodeRequest represents a scheduled or already in-flight trie node retrieval request. type nodeRequest struct { - hash common.Hash // Hash of the trie node to retrieve - path []byte // Merkle path leading to this node for prioritization - data []byte // Data content of the node, cached until all subtrees complete - deletes [][]byte // List of internal path segments for trie nodes to delete + hash common.Hash // Hash of the trie node to retrieve + path []byte // Merkle path leading to this node for prioritization + data []byte // Data content of the node, cached until all subtrees complete parent *nodeRequest // Parent state node referencing this entry deps int // Number of dependencies before allowed to commit this node @@ -146,38 +145,85 @@ type CodeSyncResult struct { Data []byte // Data content of the retrieved bytecode } +// nodeOp represents an operation upon the trie node. It can either represent a +// deletion to the specific node or a node write for persisting retrieved node. +type nodeOp struct { + owner common.Hash // identifier of the trie (empty for account trie) + path []byte // path from the root to the specified node. + blob []byte // the content of the node (nil for deletion) + hash common.Hash // hash of the node content (empty for node deletion) +} + +// isDelete indicates if the operation is a database deletion. +func (op *nodeOp) isDelete() bool { + return len(op.blob) == 0 +} + // syncMemBatch is an in-memory buffer of successfully downloaded but not yet // persisted data items. type syncMemBatch struct { - nodes map[string][]byte // In-memory membatch of recently completed nodes - hashes map[string]common.Hash // Hashes of recently completed nodes - deletes map[string]struct{} // List of paths for trie node to delete - codes map[common.Hash][]byte // In-memory membatch of recently completed codes - size uint64 // Estimated batch-size of in-memory data. + scheme string // State scheme identifier + codes map[common.Hash][]byte // In-memory batch of recently completed codes + nodes []nodeOp // In-memory batch of recently completed/deleted nodes + size uint64 // Estimated batch-size of in-memory data. } // newSyncMemBatch allocates a new memory-buffer for not-yet persisted trie nodes. -func newSyncMemBatch() *syncMemBatch { +func newSyncMemBatch(scheme string) *syncMemBatch { return &syncMemBatch{ - nodes: make(map[string][]byte), - hashes: make(map[string]common.Hash), - deletes: make(map[string]struct{}), - codes: make(map[common.Hash][]byte), + scheme: scheme, + codes: make(map[common.Hash][]byte), } } -// hasNode reports the trie node with specific path is already cached. -func (batch *syncMemBatch) hasNode(path []byte) bool { - _, ok := batch.nodes[string(path)] - return ok -} - // hasCode reports the contract code with specific hash is already cached. func (batch *syncMemBatch) hasCode(hash common.Hash) bool { _, ok := batch.codes[hash] return ok } +// addCode caches a contract code database write operation. +func (batch *syncMemBatch) addCode(hash common.Hash, code []byte) { + batch.codes[hash] = code + batch.size += common.HashLength + uint64(len(code)) +} + +// addNode caches a node database write operation. +func (batch *syncMemBatch) addNode(owner common.Hash, path []byte, blob []byte, hash common.Hash) { + if batch.scheme == rawdb.PathScheme { + if owner == (common.Hash{}) { + batch.size += uint64(len(path) + len(blob)) + } else { + batch.size += common.HashLength + uint64(len(path)+len(blob)) + } + } else { + batch.size += common.HashLength + uint64(len(blob)) + } + batch.nodes = append(batch.nodes, nodeOp{ + owner: owner, + path: path, + blob: blob, + hash: hash, + }) +} + +// delNode caches a node database delete operation. +func (batch *syncMemBatch) delNode(owner common.Hash, path []byte) { + if batch.scheme != rawdb.PathScheme { + log.Error("Unexpected node deletion", "owner", owner, "path", path, "scheme", batch.scheme) + return // deletion is not supported in hash mode. + } + if owner == (common.Hash{}) { + batch.size += uint64(len(path)) + } else { + batch.size += common.HashLength + uint64(len(path)) + } + batch.nodes = append(batch.nodes, nodeOp{ + owner: owner, + path: path, + }) +} + // Sync is the main state trie synchronisation scheduler, which provides yet // unknown trie hashes to retrieve, accepts node data associated with said hashes // and reconstructs the trie step by step until all is done. @@ -196,7 +242,7 @@ func NewSync(root common.Hash, database ethdb.KeyValueReader, callback LeafCallb ts := &Sync{ scheme: scheme, database: database, - membatch: newSyncMemBatch(), + membatch: newSyncMemBatch(scheme), nodeReqs: make(map[string]*nodeRequest), codeReqs: make(map[common.Hash]*codeRequest), queue: prque.New[int64, any](nil), // Ugh, can contain both string and hash, whyyy @@ -210,16 +256,17 @@ func NewSync(root common.Hash, database ethdb.KeyValueReader, callback LeafCallb // parent for completion tracking. The given path is a unique node path in // hex format and contain all the parent path if it's layered trie node. func (s *Sync) AddSubTrie(root common.Hash, path []byte, parent common.Hash, parentPath []byte, callback LeafCallback) { - // Short circuit if the trie is empty or already known if root == types.EmptyRootHash { return } - if s.membatch.hasNode(path) { - return - } owner, inner := ResolvePath(path) - if rawdb.HasTrieNode(s.database, owner, inner, root, s.scheme) { + exist, inconsistent := s.hasNode(owner, inner, root) + if exist { + // The entire subtrie is already present in the database. return + } else if inconsistent { + // There is a pre-existing node with the wrong hash in DB, remove it. + s.membatch.delNode(owner, inner) } // Assemble the new sub-trie sync request req := &nodeRequest{ @@ -371,39 +418,42 @@ func (s *Sync) ProcessNode(result NodeSyncResult) error { } // Commit flushes the data stored in the internal membatch out to persistent -// storage, returning any occurred error. +// storage, returning any occurred error. The whole data set will be flushed +// in an atomic database batch. func (s *Sync) Commit(dbw ethdb.Batch) error { // Flush the pending node writes into database batch. var ( account int storage int ) - for path, value := range s.membatch.nodes { - owner, inner := ResolvePath([]byte(path)) - if owner == (common.Hash{}) { - account += 1 + for _, op := range s.membatch.nodes { + if op.isDelete() { + // node deletion is only supported in path mode. + if op.owner == (common.Hash{}) { + rawdb.DeleteAccountTrieNode(dbw, op.path) + } else { + rawdb.DeleteStorageTrieNode(dbw, op.owner, op.path) + } + deletionGauge.Inc(1) } else { - storage += 1 + if op.owner == (common.Hash{}) { + account += 1 + } else { + storage += 1 + } + rawdb.WriteTrieNode(dbw, op.owner, op.path, op.hash, op.blob, s.scheme) } - rawdb.WriteTrieNode(dbw, owner, inner, s.membatch.hashes[path], value, s.scheme) } accountNodeSyncedGauge.Inc(int64(account)) storageNodeSyncedGauge.Inc(int64(storage)) - // Flush the pending node deletes into the database batch. - // Please note that each written and deleted node has a - // unique path, ensuring no duplication occurs. - for path := range s.membatch.deletes { - owner, inner := ResolvePath([]byte(path)) - rawdb.DeleteTrieNode(dbw, owner, inner, common.Hash{} /* unused */, s.scheme) - } // Flush the pending code writes into database batch. for hash, value := range s.membatch.codes { rawdb.WriteCode(dbw, hash, value) } codeSyncedGauge.Inc(int64(len(s.membatch.codes))) - s.membatch = newSyncMemBatch() // reset the batch + s.membatch = newSyncMemBatch(s.scheme) // reset the batch return nil } @@ -476,12 +526,15 @@ func (s *Sync) children(req *nodeRequest, object node) ([]*nodeRequest, error) { // child as invalid. This is essential in the case of path mode // scheme; otherwise, state healing might overwrite existing child // nodes silently while leaving a dangling parent node within the - // range of this internal path on disk. This would break the - // guarantee for state healing. + // range of this internal path on disk and the persistent state + // ends up with a very weird situation that nodes on the same path + // are not inconsistent while they all present in disk. This property + // would break the guarantee for state healing. // // While it's possible for this shortNode to overwrite a previously // existing full node, the other branches of the fullNode can be - // retained as they remain untouched and complete. + // retained as they are not accessible with the new shortNode, and + // also the whole sub-trie is still untouched and complete. // // This step is only necessary for path mode, as there is no deletion // in hash mode at all. @@ -498,8 +551,7 @@ func (s *Sync) children(req *nodeRequest, object node) ([]*nodeRequest, error) { exists = rawdb.ExistsStorageTrieNode(s.database, owner, append(inner, key[:i]...)) } if exists { - req.deletes = append(req.deletes, key[:i]) - deletionGauge.Inc(1) + s.membatch.delNode(owner, append(inner, key[:i]...)) log.Debug("Detected dangling node", "owner", owner, "path", append(inner, key[:i]...)) } } @@ -521,6 +573,7 @@ func (s *Sync) children(req *nodeRequest, object node) ([]*nodeRequest, error) { var ( missing = make(chan *nodeRequest, len(children)) pending sync.WaitGroup + batchMu sync.Mutex ) for _, child := range children { // Notify any external watcher of a new key/value node @@ -538,34 +591,32 @@ func (s *Sync) children(req *nodeRequest, object node) ([]*nodeRequest, error) { } } } - // If the child references another node, resolve or schedule + // If the child references another node, resolve or schedule. + // We check all children concurrently. if node, ok := (child.node).(hashNode); ok { - // Try to resolve the node from the local database - if s.membatch.hasNode(child.path) { - continue - } - // Check the presence of children concurrently + path := child.path + hash := common.BytesToHash(node) pending.Add(1) - go func(child childNode) { + go func() { defer pending.Done() - - // If database says duplicate, then at least the trie node is present - // and we hold the assumption that it's NOT legacy contract code. - var ( - chash = common.BytesToHash(node) - owner, inner = ResolvePath(child.path) - ) - if rawdb.HasTrieNode(s.database, owner, inner, chash, s.scheme) { + owner, inner := ResolvePath(path) + exist, inconsistent := s.hasNode(owner, inner, hash) + if exist { return + } else if inconsistent { + // There is a pre-existing node with the wrong hash in DB, remove it. + batchMu.Lock() + s.membatch.delNode(owner, inner) + batchMu.Unlock() } // Locally unknown node, schedule for retrieval missing <- &nodeRequest{ - path: child.path, - hash: chash, + path: path, + hash: hash, parent: req, callback: req.callback, } - }(child) + }() } } pending.Wait() @@ -587,21 +638,10 @@ func (s *Sync) children(req *nodeRequest, object node) ([]*nodeRequest, error) { // committed themselves. func (s *Sync) commitNodeRequest(req *nodeRequest) error { // Write the node content to the membatch - s.membatch.nodes[string(req.path)] = req.data - s.membatch.hashes[string(req.path)] = req.hash + owner, path := ResolvePath(req.path) + s.membatch.addNode(owner, path, req.data, req.hash) - // The size tracking refers to the db-batch, not the in-memory data. - if s.scheme == rawdb.PathScheme { - s.membatch.size += uint64(len(req.path) + len(req.data)) - } else { - s.membatch.size += common.HashLength + uint64(len(req.data)) - } - // Delete the internal nodes which are marked as invalid - for _, segment := range req.deletes { - path := append(req.path, segment...) - s.membatch.deletes[string(path)] = struct{}{} - s.membatch.size += uint64(len(path)) - } + // Removed the completed node request delete(s.nodeReqs, string(req.path)) s.fetches[len(req.path)]-- @@ -622,8 +662,9 @@ func (s *Sync) commitNodeRequest(req *nodeRequest) error { // committed themselves. func (s *Sync) commitCodeRequest(req *codeRequest) error { // Write the node content to the membatch - s.membatch.codes[req.hash] = req.data - s.membatch.size += common.HashLength + uint64(len(req.data)) + s.membatch.addCode(req.hash, req.data) + + // Removed the completed code request delete(s.codeReqs, req.hash) s.fetches[len(req.path)]-- @@ -639,6 +680,28 @@ func (s *Sync) commitCodeRequest(req *codeRequest) error { return nil } +// hasNode reports whether the specified trie node is present in the database. +// 'exists' is true when the node exists in the database and matches the given root +// hash. The 'inconsistent' return value is true when the node exists but does not +// match the expected hash. +func (s *Sync) hasNode(owner common.Hash, path []byte, hash common.Hash) (exists bool, inconsistent bool) { + // If node is running with hash scheme, check the presence with node hash. + if s.scheme == rawdb.HashScheme { + return rawdb.HasLegacyTrieNode(s.database, hash), false + } + // If node is running with path scheme, check the presence with node path. + var blob []byte + var dbHash common.Hash + if owner == (common.Hash{}) { + blob, dbHash = rawdb.ReadAccountTrieNode(s.database, path) + } else { + blob, dbHash = rawdb.ReadStorageTrieNode(s.database, owner, path) + } + exists = hash == dbHash + inconsistent = !exists && len(blob) != 0 + return exists, inconsistent +} + // ResolvePath resolves the provided composite node path by separating the // path in account trie if it's existent. func ResolvePath(path []byte) (common.Hash, []byte) { diff --git a/trie/sync_test.go b/trie/sync_test.go index 5edfb32a37..585181b48c 100644 --- a/trie/sync_test.go +++ b/trie/sync_test.go @@ -684,8 +684,11 @@ func testSyncOrdering(t *testing.T, scheme string) { } } } - func syncWith(t *testing.T, root common.Hash, db ethdb.Database, srcDb *Database) { + syncWithHookWriter(t, root, db, srcDb, nil) +} + +func syncWithHookWriter(t *testing.T, root common.Hash, db ethdb.Database, srcDb *Database, hookWriter ethdb.KeyValueWriter) { // Create a destination trie and sync with the scheduler sched := NewSync(root, db, nil, srcDb.Scheme()) @@ -723,8 +726,11 @@ func syncWith(t *testing.T, root common.Hash, db ethdb.Database, srcDb *Database if err := sched.Commit(batch); err != nil { t.Fatalf("failed to commit data: %v", err) } - batch.Write() - + if hookWriter != nil { + batch.Replay(hookWriter) + } else { + batch.Write() + } paths, nodes, _ = sched.Missing(0) elements = elements[:0] for i := 0; i < len(paths); i++ { @@ -894,3 +900,116 @@ func testPivotMove(t *testing.T, scheme string, tiny bool) { syncWith(t, rootC, destDisk, srcTrieDB) checkTrieContents(t, destDisk, scheme, srcTrie.Hash().Bytes(), stateC, true) } + +func TestSyncAbort(t *testing.T) { + testSyncAbort(t, rawdb.PathScheme) + testSyncAbort(t, rawdb.HashScheme) +} + +type hookWriter struct { + db ethdb.KeyValueStore + filter func(key []byte, value []byte) bool +} + +// Put inserts the given value into the key-value data store. +func (w *hookWriter) Put(key []byte, value []byte) error { + if w.filter != nil && w.filter(key, value) { + return nil + } + return w.db.Put(key, value) +} + +// Delete removes the key from the key-value data store. +func (w *hookWriter) Delete(key []byte) error { + return w.db.Delete(key) +} + +func testSyncAbort(t *testing.T, scheme string) { + var ( + srcDisk = rawdb.NewMemoryDatabase() + srcTrieDB = newTestDatabase(srcDisk, scheme) + srcTrie, _ = New(TrieID(types.EmptyRootHash), srcTrieDB) + + deleteFn = func(key []byte, tr *Trie, states map[string][]byte) { + tr.Delete(key) + delete(states, string(key)) + } + writeFn = func(key []byte, val []byte, tr *Trie, states map[string][]byte) { + if val == nil { + val = randBytes(32) + } + tr.Update(key, val) + states[string(key)] = common.CopyBytes(val) + } + copyStates = func(states map[string][]byte) map[string][]byte { + cpy := make(map[string][]byte) + for k, v := range states { + cpy[k] = v + } + return cpy + } + ) + var ( + stateA = make(map[string][]byte) + key = randBytes(32) + val = randBytes(32) + ) + for i := 0; i < 256; i++ { + writeFn(randBytes(32), nil, srcTrie, stateA) + } + writeFn(key, val, srcTrie, stateA) + + rootA, nodesA, _ := srcTrie.Commit(false) + if err := srcTrieDB.Update(rootA, types.EmptyRootHash, 0, trienode.NewWithNodeSet(nodesA), nil); err != nil { + panic(err) + } + if err := srcTrieDB.Commit(rootA, false); err != nil { + panic(err) + } + // Create a destination trie and sync with the scheduler + destDisk := rawdb.NewMemoryDatabase() + syncWith(t, rootA, destDisk, srcTrieDB) + checkTrieContents(t, destDisk, scheme, srcTrie.Hash().Bytes(), stateA, true) + + // Delete the element from the trie + stateB := copyStates(stateA) + srcTrie, _ = New(TrieID(rootA), srcTrieDB) + deleteFn(key, srcTrie, stateB) + + rootB, nodesB, _ := srcTrie.Commit(false) + if err := srcTrieDB.Update(rootB, rootA, 0, trienode.NewWithNodeSet(nodesB), nil); err != nil { + panic(err) + } + if err := srcTrieDB.Commit(rootB, false); err != nil { + panic(err) + } + + // Sync the new state, but never persist the new root node. Before the + // fix #28595, the original old root node will still be left in database + // which breaks the next healing cycle. + syncWithHookWriter(t, rootB, destDisk, srcTrieDB, &hookWriter{db: destDisk, filter: func(key []byte, value []byte) bool { + if scheme == rawdb.HashScheme { + return false + } + if len(value) == 0 { + return false + } + ok, path := rawdb.ResolveAccountTrieNodeKey(key) + return ok && len(path) == 0 + }}) + + // Add elements to expand trie + stateC := copyStates(stateB) + srcTrie, _ = New(TrieID(rootB), srcTrieDB) + + writeFn(key, val, srcTrie, stateC) + rootC, nodesC, _ := srcTrie.Commit(false) + if err := srcTrieDB.Update(rootC, rootB, 0, trienode.NewWithNodeSet(nodesC), nil); err != nil { + panic(err) + } + if err := srcTrieDB.Commit(rootC, false); err != nil { + panic(err) + } + syncWith(t, rootC, destDisk, srcTrieDB) + checkTrieContents(t, destDisk, scheme, srcTrie.Hash().Bytes(), stateC, true) +} From c50337a60a1309a0f1dca3bf33ed1bb38c46cdd7 Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Mon, 11 Dec 2023 16:24:37 -0800 Subject: [PATCH 127/223] Activate Canyon on mainnet & set superchain upgrade flag. (#198) * Enable rollup.superchain-upgrades flag by default This will ensure that nodes are automatically upgraded to the correct hardfork if the op-network flag is not set but the node is upgraded to the HF ready version. * Activate Mainnet Canyon --- cmd/utils/flags.go | 1 + go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 0c4c077c92..c1970e7148 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -925,6 +925,7 @@ var ( Aliases: []string{"beta.rollup.superchain-upgrades"}, Usage: "Apply superchain-registry config changes to the local chain-configuration", Category: flags.RollupCategory, + Value: true, } // Metrics flags diff --git a/go.mod b/go.mod index 48e534b956..303139c7b9 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231030223232-e16eae11e492 + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231211205419-ff2e152c624f github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 91aed70e7e..4a87c55f93 100644 --- a/go.sum +++ b/go.sum @@ -181,8 +181,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231030223232-e16eae11e492 h1:FyzLzMLKMc9zcDYcSxbrLDglIRrGQJE9juFzIO35RmE= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231030223232-e16eae11e492/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231211205419-ff2e152c624f h1:ISd3MAco0U0XT5ADDQ8pzVntQpL9yEUQzpsIqfLJY2M= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231211205419-ff2e152c624f/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= From a3ca1b28188f2f5747e05d23bfc4f0f7ce1007f0 Mon Sep 17 00:00:00 2001 From: Ng Wei Han <47109095+weiihann@users.noreply.github.com> Date: Tue, 12 Dec 2023 21:40:50 +0800 Subject: [PATCH 128/223] cmd/utils: fix HTTPHost, WSHost flag priority (#28669) Co-authored-by: Felix Lange --- cmd/utils/flags.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index d4c918bf4f..159c47ca01 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1088,8 +1088,10 @@ func SplitAndTrim(input string) (ret []string) { // setHTTP creates the HTTP RPC listener interface string from the set // command line flags, returning empty if the HTTP endpoint is disabled. func setHTTP(ctx *cli.Context, cfg *node.Config) { - if ctx.Bool(HTTPEnabledFlag.Name) && cfg.HTTPHost == "" { - cfg.HTTPHost = "127.0.0.1" + if ctx.Bool(HTTPEnabledFlag.Name) { + if cfg.HTTPHost == "" { + cfg.HTTPHost = "127.0.0.1" + } if ctx.IsSet(HTTPListenAddrFlag.Name) { cfg.HTTPHost = ctx.String(HTTPListenAddrFlag.Name) } @@ -1153,8 +1155,10 @@ func setGraphQL(ctx *cli.Context, cfg *node.Config) { // setWS creates the WebSocket RPC listener interface string from the set // command line flags, returning empty if the HTTP endpoint is disabled. func setWS(ctx *cli.Context, cfg *node.Config) { - if ctx.Bool(WSEnabledFlag.Name) && cfg.WSHost == "" { - cfg.WSHost = "127.0.0.1" + if ctx.Bool(WSEnabledFlag.Name) { + if cfg.WSHost == "" { + cfg.WSHost = "127.0.0.1" + } if ctx.IsSet(WSListenAddrFlag.Name) { cfg.WSHost = ctx.String(WSListenAddrFlag.Name) } From 17c2b3c194162a4eeb92f90a950bc92b58660dc3 Mon Sep 17 00:00:00 2001 From: Ford <153042616+guerrierindien@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:47:59 +0100 Subject: [PATCH 129/223] eth/protocols/eth: fix typos in comments (#28652) --- eth/protocols/eth/dispatcher.go | 4 ++-- eth/protocols/eth/peer.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eth/protocols/eth/dispatcher.go b/eth/protocols/eth/dispatcher.go index 3f81e045ba..ae98820cd6 100644 --- a/eth/protocols/eth/dispatcher.go +++ b/eth/protocols/eth/dispatcher.go @@ -41,7 +41,7 @@ var ( // Request is a pending request to allow tracking it and delivering a response // back to the requester on their chosen channel. type Request struct { - peer *Peer // Peer to which this request belogs for untracking + peer *Peer // Peer to which this request belongs for untracking id uint64 // Request ID to match up replies to sink chan *Response // Channel to deliver the response on @@ -224,7 +224,7 @@ func (p *Peer) dispatcher() { switch { case res.Req == nil: // Response arrived with an untracked ID. Since even cancelled - // requests are tracked until fulfilment, a dangling response + // requests are tracked until fulfillment, a dangling response // means the remote peer implements the protocol badly. resOp.fail <- errDanglingResponse diff --git a/eth/protocols/eth/peer.go b/eth/protocols/eth/peer.go index 938af0cab0..98ad22a8cf 100644 --- a/eth/protocols/eth/peer.go +++ b/eth/protocols/eth/peer.go @@ -84,7 +84,7 @@ type Peer struct { txBroadcast chan []common.Hash // Channel used to queue transaction propagation requests txAnnounce chan []common.Hash // Channel used to queue transaction announcement requests - reqDispatch chan *request // Dispatch channel to send requests and track then until fulfilment + reqDispatch chan *request // Dispatch channel to send requests and track then until fulfillment reqCancel chan *cancel // Dispatch channel to cancel pending requests and untrack them resDispatch chan *response // Dispatch channel to fulfil pending requests and untrack them From 81fd1b3cf9c4c4c9f0e06f8bdcbaa8b29c81b052 Mon Sep 17 00:00:00 2001 From: ucwong Date: Tue, 12 Dec 2023 15:23:36 +0000 Subject: [PATCH 130/223] core/txpool : small cleanup refactors (#28654) --- cmd/geth/logging_test.go | 2 +- core/txpool/legacypool/legacypool.go | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/cmd/geth/logging_test.go b/cmd/geth/logging_test.go index 50991554b4..b5ce03f4b8 100644 --- a/cmd/geth/logging_test.go +++ b/cmd/geth/logging_test.go @@ -21,6 +21,7 @@ package main import ( "bufio" "bytes" + "encoding/json" "fmt" "io" "math/rand" @@ -28,7 +29,6 @@ import ( "os/exec" "strings" "testing" - "encoding/json" "github.com/ethereum/go-ethereum/internal/reexec" ) diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index 8450d89a2c..f7d4a2e1e1 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -923,8 +923,7 @@ func (pool *LegacyPool) addLocals(txs []*types.Transaction) []error { // addLocal enqueues a single local transaction into the pool if it is valid. This is // a convenience wrapper around addLocals. func (pool *LegacyPool) addLocal(tx *types.Transaction) error { - errs := pool.addLocals([]*types.Transaction{tx}) - return errs[0] + return pool.addLocals([]*types.Transaction{tx})[0] } // addRemotes enqueues a batch of transactions into the pool if they are valid. If the @@ -939,8 +938,7 @@ func (pool *LegacyPool) addRemotes(txs []*types.Transaction) []error { // addRemote enqueues a single transaction into the pool if it is valid. This is a convenience // wrapper around addRemotes. func (pool *LegacyPool) addRemote(tx *types.Transaction) error { - errs := pool.addRemotes([]*types.Transaction{tx}) - return errs[0] + return pool.addRemotes([]*types.Transaction{tx})[0] } // addRemotesSync is like addRemotes, but waits for pool reorganization. Tests use this method. From b2ced97ac460110f9a1bf4088b27e0d5eba4f086 Mon Sep 17 00:00:00 2001 From: Ursulafe <152976968+Ursulafe@users.noreply.github.com> Date: Wed, 13 Dec 2023 23:32:17 +0100 Subject: [PATCH 131/223] eth/fetcher, eth/gasestimator: fix typos in comments (#28675) --- eth/fetcher/tx_fetcher_test.go | 4 ++-- eth/gasestimator/gasestimator.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eth/fetcher/tx_fetcher_test.go b/eth/fetcher/tx_fetcher_test.go index 77b89085d3..4a62e579b6 100644 --- a/eth/fetcher/tx_fetcher_test.go +++ b/eth/fetcher/tx_fetcher_test.go @@ -186,7 +186,7 @@ func TestTransactionFetcherWaiting(t *testing.T) { // waitlist, and none of them are scheduled for retrieval until the wait expires. // // This test is an extended version of TestTransactionFetcherWaiting. It's mostly -// to cover the metadata checkes without bloating up the basic behavioral tests +// to cover the metadata checks without bloating up the basic behavioral tests // with all the useless extra fields. func TestTransactionFetcherWaitingWithMeta(t *testing.T) { testTransactionFetcherParallel(t, txFetcherTest{ @@ -1030,7 +1030,7 @@ func TestTransactionFetcherRateLimiting(t *testing.T) { } // Tests that if huge transactions are announced, only a small number of them will -// be requested at a time, to keep the responses below a resonable level. +// be requested at a time, to keep the responses below a reasonable level. func TestTransactionFetcherBandwidthLimiting(t *testing.T) { testTransactionFetcherParallel(t, txFetcherTest{ init: func() *TxFetcher { diff --git a/eth/gasestimator/gasestimator.go b/eth/gasestimator/gasestimator.go index 4a8e20dfed..a36c670747 100644 --- a/eth/gasestimator/gasestimator.go +++ b/eth/gasestimator/gasestimator.go @@ -47,7 +47,7 @@ type Options struct { } // Estimate returns the lowest possible gas limit that allows the transaction to -// run successfully with the provided context optons. It returns an error if the +// run successfully with the provided context options. It returns an error if the // transaction would always revert, or if there are unexpected failures. func Estimate(ctx context.Context, call *core.Message, opts *Options, gasCap uint64) (uint64, []byte, error) { // Binary search the gas limit, as it may need to be higher than the amount used From 0f74aad6415dab225e5969e079a53d4844582720 Mon Sep 17 00:00:00 2001 From: Elias Rad <146735585+nnsW3@users.noreply.github.com> Date: Thu, 14 Dec 2023 00:33:46 +0200 Subject: [PATCH 132/223] all: fix typos in comments (#28662) Co-authored-by: Felix Lange --- accounts/abi/abi.go | 2 +- accounts/abi/bind/auth.go | 2 +- accounts/abi/bind/base.go | 4 ++-- accounts/abi/bind/bind.go | 2 +- accounts/abi/topics.go | 2 +- cmd/clef/README.md | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/accounts/abi/abi.go b/accounts/abi/abi.go index 6e1075c715..4abf298068 100644 --- a/accounts/abi/abi.go +++ b/accounts/abi/abi.go @@ -251,7 +251,7 @@ var revertSelector = crypto.Keccak256([]byte("Error(string)"))[:4] var panicSelector = crypto.Keccak256([]byte("Panic(uint256)"))[:4] // panicReasons map is for readable panic codes -// see this linkage for the deails +// see this linkage for the details // https://docs.soliditylang.org/en/v0.8.21/control-structures.html#panic-via-assert-and-error-via-require // the reason string list is copied from ether.js // https://github.com/ethers-io/ethers.js/blob/fa3a883ff7c88611ce766f58bdd4b8ac90814470/src.ts/abi/interface.ts#L207-L218 diff --git a/accounts/abi/bind/auth.go b/accounts/abi/bind/auth.go index 91913ec3b2..0740c69510 100644 --- a/accounts/abi/bind/auth.go +++ b/accounts/abi/bind/auth.go @@ -117,7 +117,7 @@ func NewTransactorWithChainID(keyin io.Reader, passphrase string, chainID *big.I } // NewKeyStoreTransactorWithChainID is a utility method to easily create a transaction signer from -// an decrypted key from a keystore. +// a decrypted key from a keystore. func NewKeyStoreTransactorWithChainID(keystore *keystore.KeyStore, account accounts.Account, chainID *big.Int) (*TransactOpts, error) { if chainID == nil { return nil, ErrNoChainID diff --git a/accounts/abi/bind/base.go b/accounts/abi/bind/base.go index 6da15f147c..96d284cdcc 100644 --- a/accounts/abi/bind/base.go +++ b/accounts/abi/bind/base.go @@ -238,7 +238,7 @@ func (c *BoundContract) Transact(opts *TransactOpts, method string, params ...in if err != nil { return nil, err } - // todo(rjl493456442) check the method is payable or not, + // todo(rjl493456442) check whether the method is payable or not, // reject invalid transaction at the first place return c.transact(opts, &c.address, input) } @@ -246,7 +246,7 @@ func (c *BoundContract) Transact(opts *TransactOpts, method string, params ...in // RawTransact initiates a transaction with the given raw calldata as the input. // It's usually used to initiate transactions for invoking **Fallback** function. func (c *BoundContract) RawTransact(opts *TransactOpts, calldata []byte) (*types.Transaction, error) { - // todo(rjl493456442) check the method is payable or not, + // todo(rjl493456442) check whether the method is payable or not, // reject invalid transaction at the first place return c.transact(opts, &c.address, calldata) } diff --git a/accounts/abi/bind/bind.go b/accounts/abi/bind/bind.go index ec28013463..e902345f09 100644 --- a/accounts/abi/bind/bind.go +++ b/accounts/abi/bind/bind.go @@ -79,7 +79,7 @@ func isKeyWord(arg string) bool { // Bind generates a Go wrapper around a contract ABI. This wrapper isn't meant // to be used as is in client code, but rather as an intermediate struct which -// enforces compile time type safety and naming convention opposed to having to +// enforces compile time type safety and naming convention as opposed to having to // manually maintain hard coded strings that break on runtime. func Bind(types []string, abis []string, bytecodes []string, fsigs []map[string]string, pkg string, lang Lang, libs map[string]string, aliases map[string]string) (string, error) { var ( diff --git a/accounts/abi/topics.go b/accounts/abi/topics.go index 360df7d5e8..60c71d88b2 100644 --- a/accounts/abi/topics.go +++ b/accounts/abi/topics.go @@ -75,7 +75,7 @@ func MakeTopics(query ...[]interface{}) ([][]common.Hash, error) { copy(topic[:], hash[:]) default: - // todo(rjl493456442) according solidity documentation, indexed event + // todo(rjl493456442) according to solidity documentation, indexed event // parameters that are not value types i.e. arrays and structs are not // stored directly but instead a keccak256-hash of an encoding is stored. // diff --git a/cmd/clef/README.md b/cmd/clef/README.md index 85c9c70606..3a43db8c95 100644 --- a/cmd/clef/README.md +++ b/cmd/clef/README.md @@ -2,7 +2,7 @@ Clef can be used to sign transactions and data and is meant as a(n eventual) replacement for Geth's account management. This allows DApps to not depend on Geth's account management. When a DApp wants to sign data (or a transaction), it can send the content to Clef, which will then provide the user with context and asks for permission to sign the content. If the users grants the signing request, Clef will send the signature back to the DApp. -This setup allows a DApp to connect to a remote Ethereum node and send transactions that are locally signed. This can help in situations when a DApp is connected to an untrusted remote Ethereum node, because a local one is not available, not synchronised with the chain, or is a node that has no built-in (or limited) account management. +This setup allows a DApp to connect to a remote Ethereum node and send transactions that are locally signed. This can help in situations when a DApp is connected to an untrusted remote Ethereum node, because a local one is not available, not synchronized with the chain, or is a node that has no built-in (or limited) account management. Clef can run as a daemon on the same machine, off a usb-stick like [USB armory](https://inversepath.com/usbarmory), or even a separate VM in a [QubesOS](https://www.qubes-os.org/) type setup. From f1794ba2788baf34489847bfa9ca00e067507db0 Mon Sep 17 00:00:00 2001 From: FletcherMan Date: Fri, 15 Dec 2023 11:48:55 +0800 Subject: [PATCH 133/223] miner: eliminate the dead loop possibility for `newWorkLoop` and `mainLoop` (#28677) discard the intervalAdjust message if the channel is full --- miner/worker.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/miner/worker.go b/miner/worker.go index f680702814..2ed91cc187 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -1074,7 +1074,7 @@ func (w *worker) commitWork(interrupt *atomic.Int32, timestamp int64) { case err == nil: // The entire block is filled, decrease resubmit interval in case // of current interval is larger than the user-specified one. - w.resubmitAdjustCh <- &intervalAdjust{inc: false} + w.adjustResubmitInterval(&intervalAdjust{inc: false}) case errors.Is(err, errBlockInterruptedByRecommit): // Notify resubmit loop to increase resubmitting interval if the @@ -1084,10 +1084,10 @@ func (w *worker) commitWork(interrupt *atomic.Int32, timestamp int64) { if ratio < 0.1 { ratio = 0.1 } - w.resubmitAdjustCh <- &intervalAdjust{ + w.adjustResubmitInterval(&intervalAdjust{ ratio: ratio, inc: true, - } + }) case errors.Is(err, errBlockInterruptedByNewHead): // If the block building is interrupted by newhead event, discard it @@ -1169,6 +1169,15 @@ func (w *worker) isTTDReached(header *types.Header) bool { return td != nil && ttd != nil && td.Cmp(ttd) >= 0 } +// adjustResubmitInterval adjusts the resubmit interval. +func (w *worker) adjustResubmitInterval(message *intervalAdjust) { + select { + case w.resubmitAdjustCh <- message: + default: + log.Warn("the resubmitAdjustCh is full, discard the message") + } +} + // copyReceipts makes a deep copy of the given receipts. func copyReceipts(receipts []*types.Receipt) []*types.Receipt { result := make([]*types.Receipt, len(receipts)) From edc864f9ba186fd307d9c98c42136db6c9411cf9 Mon Sep 17 00:00:00 2001 From: alex <152680487+bodhi-crypo@users.noreply.github.com> Date: Mon, 18 Dec 2023 16:35:12 +0800 Subject: [PATCH 134/223] all: fix typos in comments (#28682) chore(core,eth):fix a couple of typos --- cmd/clef/pythonsigner.py | 2 +- core/txpool/blobpool/blobpool.go | 4 ++-- core/txpool/blobpool/blobpool_test.go | 2 +- core/txpool/blobpool/metrics.go | 2 +- core/vm/runtime/runtime_test.go | 2 +- eth/downloader/downloader.go | 2 +- eth/downloader/resultstore.go | 2 +- ethclient/gethclient/gethclient_test.go | 2 +- p2p/rlpx/rlpx_test.go | 2 +- p2p/simulations/network_test.go | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cmd/clef/pythonsigner.py b/cmd/clef/pythonsigner.py index b9ea1e406a..5d0eb18dcc 100644 --- a/cmd/clef/pythonsigner.py +++ b/cmd/clef/pythonsigner.py @@ -91,7 +91,7 @@ def approveTx(self, req): {"jsonrpc":"2.0","id":20,"method":"ui_approveTx","params":[{"transaction":{"from":"0xDEADbEeF000000000000000000000000DeaDbeEf","to":"0xDEADbEeF000000000000000000000000DeaDbeEf","gas":"0x3e8","gasPrice":"0x5","maxFeePerGas":null,"maxPriorityFeePerGas":null,"value":"0x6","nonce":"0x1","data":"0x"},"call_info":null,"meta":{"remote":"clef binary","local":"main","scheme":"in-proc","User-Agent":"","Origin":""}}]} :param transaction: transaction info - :param call_info: info abou the call, e.g. if ABI info could not be + :param call_info: info about the call, e.g. if ABI info could not be :param meta: metadata about the request, e.g. where the call comes from :return: """ # noqa: E501 diff --git a/core/txpool/blobpool/blobpool.go b/core/txpool/blobpool/blobpool.go index 32c6c0e8fe..195697a8f6 100644 --- a/core/txpool/blobpool/blobpool.go +++ b/core/txpool/blobpool/blobpool.go @@ -738,7 +738,7 @@ func (p *BlobPool) offload(addr common.Address, nonce uint64, id uint64, inclusi } // Reset implements txpool.SubPool, allowing the blob pool's internal state to be -// kept in sync with the main transacion pool's internal state. +// kept in sync with the main transaction pool's internal state. func (p *BlobPool) Reset(oldHead, newHead *types.Header) { waitStart := time.Now() p.lock.Lock() @@ -972,7 +972,7 @@ func (p *BlobPool) reinject(addr common.Address, txhash common.Hash) error { } // SetGasTip implements txpool.SubPool, allowing the blob pool's gas requirements -// to be kept in sync with the main transacion pool's gas requirements. +// to be kept in sync with the main transaction pool's gas requirements. func (p *BlobPool) SetGasTip(tip *big.Int) { p.lock.Lock() defer p.lock.Unlock() diff --git a/core/txpool/blobpool/blobpool_test.go b/core/txpool/blobpool/blobpool_test.go index fa3e8edc90..b709ad0e58 100644 --- a/core/txpool/blobpool/blobpool_test.go +++ b/core/txpool/blobpool/blobpool_test.go @@ -594,7 +594,7 @@ func TestOpenDrops(t *testing.T) { verifyPoolInternals(t, pool) } -// Tests that transactions loaded from disk are indexed corrently. +// Tests that transactions loaded from disk are indexed correctly. // // - 1. Transactions must be groupped by sender, sorted by nonce // - 2. Eviction thresholds are calculated correctly for the sequences diff --git a/core/txpool/blobpool/metrics.go b/core/txpool/blobpool/metrics.go index 070cc5ca47..587804cc61 100644 --- a/core/txpool/blobpool/metrics.go +++ b/core/txpool/blobpool/metrics.go @@ -65,7 +65,7 @@ var ( pooltipGauge = metrics.NewRegisteredGauge("blobpool/pooltip", nil) // addwait/time, resetwait/time and getwait/time track the rough health of - // the pool and wether or not it's capable of keeping up with the load from + // the pool and whether or not it's capable of keeping up with the load from // the network. addwaitHist = metrics.NewRegisteredHistogram("blobpool/addwait", nil, metrics.NewExpDecaySample(1028, 0.015)) addtimeHist = metrics.NewRegisteredHistogram("blobpool/addtime", nil, metrics.NewExpDecaySample(1028, 0.015)) diff --git a/core/vm/runtime/runtime_test.go b/core/vm/runtime/runtime_test.go index 796d3b4434..e71760bb23 100644 --- a/core/vm/runtime/runtime_test.go +++ b/core/vm/runtime/runtime_test.go @@ -671,7 +671,7 @@ func TestColdAccountAccessCost(t *testing.T) { for ii, op := range tracer.StructLogs() { t.Logf("%d: %v %d", ii, op.OpName(), op.GasCost) } - t.Fatalf("tescase %d, gas report wrong, step %d, have %d want %d", i, tc.step, have, want) + t.Fatalf("testcase %d, gas report wrong, step %d, have %d want %d", i, tc.step, have, want) } } } diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 2ca7e328c6..f1cfa92d5d 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -576,7 +576,7 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td, ttd * // For non-merged networks, if there is a checkpoint available, then calculate // the ancientLimit through that. Otherwise calculate the ancient limit through // the advertised height of the remote peer. This most is mostly a fallback for - // legacy networks, but should eventually be droppped. TODO(karalabe). + // legacy networks, but should eventually be dropped. TODO(karalabe). if beaconMode { // Beacon sync, use the latest finalized block as the ancient limit // or a reasonable height if no finalized block is yet announced. diff --git a/eth/downloader/resultstore.go b/eth/downloader/resultstore.go index 7f7f5a89e2..e4323c04eb 100644 --- a/eth/downloader/resultstore.go +++ b/eth/downloader/resultstore.go @@ -142,7 +142,7 @@ func (r *resultStore) HasCompletedItems() bool { // countCompleted returns the number of items ready for delivery, stopping at // the first non-complete item. // -// The mthod assumes (at least) rlock is held. +// The method assumes (at least) rlock is held. func (r *resultStore) countCompleted() int { // We iterate from the already known complete point, and see // if any more has completed since last count diff --git a/ethclient/gethclient/gethclient_test.go b/ethclient/gethclient/gethclient_test.go index a718246bd0..fdd94a7d73 100644 --- a/ethclient/gethclient/gethclient_test.go +++ b/ethclient/gethclient/gethclient_test.go @@ -450,7 +450,7 @@ func testCallContract(t *testing.T, client *rpc.Client) { func TestOverrideAccountMarshal(t *testing.T) { om := map[common.Address]OverrideAccount{ {0x11}: { - // Zero-valued nonce is not overriddden, but simply dropped by the encoder. + // Zero-valued nonce is not overridden, but simply dropped by the encoder. Nonce: 0, }, {0xaa}: { diff --git a/p2p/rlpx/rlpx_test.go b/p2p/rlpx/rlpx_test.go index 28759f2b49..136cb1b5bf 100644 --- a/p2p/rlpx/rlpx_test.go +++ b/p2p/rlpx/rlpx_test.go @@ -421,7 +421,7 @@ func BenchmarkThroughput(b *testing.B) { } conn2.SetSnappy(true) if err := <-handshakeDone; err != nil { - b.Fatal("server hanshake error:", err) + b.Fatal("server handshake error:", err) } // Read N messages. diff --git a/p2p/simulations/network_test.go b/p2p/simulations/network_test.go index ab8cf19462..4ed1e4e6c3 100644 --- a/p2p/simulations/network_test.go +++ b/p2p/simulations/network_test.go @@ -683,7 +683,7 @@ func triggerChecks(ctx context.Context, ids []enode.ID, trigger chan enode.ID, i } } -// \todo: refactor to implement shapshots +// \todo: refactor to implement snapshots // and connect configuration methods once these are moved from // swarm/network/simulations/connect.go func BenchmarkMinimalService(b *testing.B) { From 5b22a472d6aaaa17daf0543b5914ca1f2f5518a7 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 18 Dec 2023 10:47:21 +0100 Subject: [PATCH 135/223] p2p/discover: add liveness check in collectTableNodes (#28686) * p2p/discover: add liveness check in collectTableNodes * p2p/discover: fix test * p2p/discover: rename to appendLiveNodes * p2p/discover: add dedup logic back * p2p/discover: simplify * p2p/discover: fix issue found by test --- p2p/discover/table.go | 20 ++++++++++++++++++++ p2p/discover/table_test.go | 2 +- p2p/discover/table_util_test.go | 5 ++++- p2p/discover/v4_lookup_test.go | 6 +++--- p2p/discover/v4_udp_test.go | 2 +- p2p/discover/v5_udp.go | 17 ++++------------- p2p/discover/v5_udp_test.go | 8 ++++---- 7 files changed, 37 insertions(+), 23 deletions(-) diff --git a/p2p/discover/table.go b/p2p/discover/table.go index e6dafb0dca..2b7a28708b 100644 --- a/p2p/discover/table.go +++ b/p2p/discover/table.go @@ -459,6 +459,26 @@ func (tab *Table) findnodeByID(target enode.ID, nresults int, preferLive bool) * return nodes } +// appendLiveNodes adds nodes at the given distance to the result slice. +func (tab *Table) appendLiveNodes(dist uint, result []*enode.Node) []*enode.Node { + if dist > 256 { + return result + } + if dist == 0 { + return append(result, tab.self()) + } + + tab.mutex.Lock() + defer tab.mutex.Unlock() + for _, n := range tab.bucketAtDistance(int(dist)).entries { + if n.livenessChecks >= 1 { + node := n.Node // avoid handing out pointer to struct field + result = append(result, &node) + } + } + return result +} + // len returns the number of nodes in the table. func (tab *Table) len() (n int) { tab.mutex.Lock() diff --git a/p2p/discover/table_test.go b/p2p/discover/table_test.go index 2781dd4225..3ba3422251 100644 --- a/p2p/discover/table_test.go +++ b/p2p/discover/table_test.go @@ -199,7 +199,7 @@ func TestTable_findnodeByID(t *testing.T) { tab, db := newTestTable(transport) defer db.Close() defer tab.close() - fillTable(tab, test.All) + fillTable(tab, test.All, true) // check that closest(Target, N) returns nodes result := tab.findnodeByID(test.Target, test.N, false).entries diff --git a/p2p/discover/table_util_test.go b/p2p/discover/table_util_test.go index 8f3813bdcf..d6309dfd6c 100644 --- a/p2p/discover/table_util_test.go +++ b/p2p/discover/table_util_test.go @@ -109,8 +109,11 @@ func fillBucket(tab *Table, n *node) (last *node) { // fillTable adds nodes the table to the end of their corresponding bucket // if the bucket is not full. The caller must not hold tab.mutex. -func fillTable(tab *Table, nodes []*node) { +func fillTable(tab *Table, nodes []*node, setLive bool) { for _, n := range nodes { + if setLive { + n.livenessChecks = 1 + } tab.addSeenNode(n) } } diff --git a/p2p/discover/v4_lookup_test.go b/p2p/discover/v4_lookup_test.go index 1f9ad69d0a..8867a5a8ac 100644 --- a/p2p/discover/v4_lookup_test.go +++ b/p2p/discover/v4_lookup_test.go @@ -40,7 +40,7 @@ func TestUDPv4_Lookup(t *testing.T) { } // Seed table with initial node. - fillTable(test.table, []*node{wrapNode(lookupTestnet.node(256, 0))}) + fillTable(test.table, []*node{wrapNode(lookupTestnet.node(256, 0))}, true) // Start the lookup. resultC := make(chan []*enode.Node, 1) @@ -74,7 +74,7 @@ func TestUDPv4_LookupIterator(t *testing.T) { for i := range lookupTestnet.dists[256] { bootnodes[i] = wrapNode(lookupTestnet.node(256, i)) } - fillTable(test.table, bootnodes) + fillTable(test.table, bootnodes, true) go serveTestnet(test, lookupTestnet) // Create the iterator and collect the nodes it yields. @@ -109,7 +109,7 @@ func TestUDPv4_LookupIteratorClose(t *testing.T) { for i := range lookupTestnet.dists[256] { bootnodes[i] = wrapNode(lookupTestnet.node(256, i)) } - fillTable(test.table, bootnodes) + fillTable(test.table, bootnodes, true) go serveTestnet(test, lookupTestnet) it := test.udp.RandomNodes() diff --git a/p2p/discover/v4_udp_test.go b/p2p/discover/v4_udp_test.go index 53ecb1bc6e..361e379626 100644 --- a/p2p/discover/v4_udp_test.go +++ b/p2p/discover/v4_udp_test.go @@ -269,7 +269,7 @@ func TestUDPv4_findnode(t *testing.T) { } nodes.push(n, numCandidates) } - fillTable(test.table, nodes.entries) + fillTable(test.table, nodes.entries, false) // ensure there's a bond with the test node, // findnode won't be accepted otherwise. diff --git a/p2p/discover/v5_udp.go b/p2p/discover/v5_udp.go index 6ba7a90618..8b3e33d37c 100644 --- a/p2p/discover/v5_udp.go +++ b/p2p/discover/v5_udp.go @@ -851,6 +851,7 @@ func (t *UDPv5) handleFindnode(p *v5wire.Findnode, fromID enode.ID, fromAddr *ne // collectTableNodes creates a FINDNODE result set for the given distances. func (t *UDPv5) collectTableNodes(rip net.IP, distances []uint, limit int) []*enode.Node { + var bn []*enode.Node var nodes []*enode.Node var processed = make(map[uint]struct{}) for _, dist := range distances { @@ -859,21 +860,11 @@ func (t *UDPv5) collectTableNodes(rip net.IP, distances []uint, limit int) []*en if seen || dist > 256 { continue } - - // Get the nodes. - var bn []*enode.Node - if dist == 0 { - bn = []*enode.Node{t.Self()} - } else if dist <= 256 { - t.tab.mutex.Lock() - bn = unwrapNodes(t.tab.bucketAtDistance(int(dist)).entries) - t.tab.mutex.Unlock() - } processed[dist] = struct{}{} - // Apply some pre-checks to avoid sending invalid nodes. - for _, n := range bn { - // TODO livenessChecks > 1 + for _, n := range t.tab.appendLiveNodes(dist, bn[:0]) { + // Apply some pre-checks to avoid sending invalid nodes. + // Note liveness is checked by appendLiveNodes. if netutil.CheckRelayIP(rip, n.IP()) != nil { continue } diff --git a/p2p/discover/v5_udp_test.go b/p2p/discover/v5_udp_test.go index 18d8aeac6d..eaa969ea8b 100644 --- a/p2p/discover/v5_udp_test.go +++ b/p2p/discover/v5_udp_test.go @@ -159,9 +159,9 @@ func TestUDPv5_findnodeHandling(t *testing.T) { nodes253 := nodesAtDistance(test.table.self().ID(), 253, 16) nodes249 := nodesAtDistance(test.table.self().ID(), 249, 4) nodes248 := nodesAtDistance(test.table.self().ID(), 248, 10) - fillTable(test.table, wrapNodes(nodes253)) - fillTable(test.table, wrapNodes(nodes249)) - fillTable(test.table, wrapNodes(nodes248)) + fillTable(test.table, wrapNodes(nodes253), true) + fillTable(test.table, wrapNodes(nodes249), true) + fillTable(test.table, wrapNodes(nodes248), true) // Requesting with distance zero should return the node's own record. test.packetIn(&v5wire.Findnode{ReqID: []byte{0}, Distances: []uint{0}}) @@ -589,7 +589,7 @@ func TestUDPv5_lookup(t *testing.T) { // Seed table with initial node. initialNode := lookupTestnet.node(256, 0) - fillTable(test.table, []*node{wrapNode(initialNode)}) + fillTable(test.table, []*node{wrapNode(initialNode)}, true) // Start the lookup. resultC := make(chan []*enode.Node, 1) From 02766d349a14171b781b0afe083f6d898cf58c3b Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Mon, 18 Dec 2023 13:28:41 +0100 Subject: [PATCH 136/223] internal/flags: add missing flag types for auto-env-var generation (#28692) Certain flags, such as `--rpc.txfeecap` currently do not have an env-var auto-generated for them. This change adds three missing cli flag types to the auto env-var helper function to fix this. --- internal/flags/helpers.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/flags/helpers.go b/internal/flags/helpers.go index d4b8e373cc..d9d1f79036 100644 --- a/internal/flags/helpers.go +++ b/internal/flags/helpers.go @@ -105,7 +105,7 @@ func MigrateGlobalFlags(ctx *cli.Context) { func doMigrateFlags(ctx *cli.Context) { // Figure out if there are any aliases of commands. If there are, we want // to ignore them when iterating over the flags. - var aliases = make(map[string]bool) + aliases := make(map[string]bool) for _, fl := range ctx.Command.Flags { for _, alias := range fl.Names()[1:] { aliases[alias] = true @@ -239,15 +239,24 @@ func AutoEnvVars(flags []cli.Flag, prefix string) { case *cli.StringFlag: flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.StringSliceFlag: + flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.BoolFlag: flag.EnvVars = append(flag.EnvVars, envvar) case *cli.IntFlag: flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.Int64Flag: + flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.Uint64Flag: flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.Float64Flag: + flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.DurationFlag: flag.EnvVars = append(flag.EnvVars, envvar) From 05bbc56677129c759a28330a22e1e6dc3b8ce8f5 Mon Sep 17 00:00:00 2001 From: jwasinger Date: Mon, 18 Dec 2023 20:56:27 +0800 Subject: [PATCH 137/223] cmd/evm: default to mirror mainnet forks enabled (#28691) cmd/evm: default to using dev chain config (all mainnet HFs activated at block/timestamp 0 --- cmd/evm/runner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/evm/runner.go b/cmd/evm/runner.go index c9a870022a..f3ffb3ed9f 100644 --- a/cmd/evm/runner.go +++ b/cmd/evm/runner.go @@ -144,7 +144,7 @@ func runCmd(ctx *cli.Context) error { initialGas = genesisConfig.GasLimit } } else { - genesisConfig.Config = params.AllEthashProtocolChanges + genesisConfig.Config = params.AllDevChainProtocolChanges } db := rawdb.NewMemoryDatabase() From 553bafc12720d2a3eef396cfea20f0637fb41cc4 Mon Sep 17 00:00:00 2001 From: Martin HS Date: Mon, 18 Dec 2023 14:11:27 +0100 Subject: [PATCH 138/223] cmd/evm, cmd/clef, cmd/bootnode: fix / unify logging (#28696) This change fixes a problem with our non-core binaries: evm, clef, bootnode. First of all, they failed to convert from legacy loglevels 1 to 5, to the new slog loglevels -4 to 4. Secondly, the logging was actually setup in the init phase, and then overridden in the main. This is not needed for evm, since it used the same flag name as the main geth verbosity. Better to let the flags/internal handle the logging init. --- cmd/bootnode/main.go | 6 +++--- cmd/clef/main.go | 4 ++-- cmd/evm/internal/t8ntool/block.go | 7 ------- cmd/evm/internal/t8ntool/transaction.go | 7 ------- cmd/evm/internal/t8ntool/transition.go | 7 ------- cmd/evm/main.go | 3 --- 6 files changed, 5 insertions(+), 29 deletions(-) diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go index 1660b43b74..350b85df1e 100644 --- a/cmd/bootnode/main.go +++ b/cmd/bootnode/main.go @@ -32,7 +32,6 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/nat" "github.com/ethereum/go-ethereum/p2p/netutil" - "golang.org/x/exp/slog" ) func main() { @@ -45,7 +44,7 @@ func main() { natdesc = flag.String("nat", "none", "port mapping mechanism (any|none|upnp|pmp|pmp:|extip:)") netrestrict = flag.String("netrestrict", "", "restrict network communication to the given IP networks (CIDR masks)") runv5 = flag.Bool("v5", false, "run a v5 topic discovery bootnode") - verbosity = flag.Int("verbosity", int(log.LvlInfo), "log verbosity (0-5)") + verbosity = flag.Int("verbosity", 3, "log verbosity (0-5)") vmodule = flag.String("vmodule", "", "log verbosity pattern") nodeKey *ecdsa.PrivateKey @@ -54,7 +53,8 @@ func main() { flag.Parse() glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(*verbosity)) + slogVerbosity := log.FromLegacyLevel(*verbosity) + glogger.Verbosity(slogVerbosity) glogger.Vmodule(*vmodule) log.SetDefault(log.NewLogger(glogger)) diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 27b7b70771..2346991369 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -57,7 +57,6 @@ import ( "github.com/mattn/go-colorable" "github.com/mattn/go-isatty" "github.com/urfave/cli/v2" - "golang.org/x/exp/slog" ) const legalWarning = ` @@ -493,7 +492,8 @@ func initialize(c *cli.Context) error { if usecolor { output = colorable.NewColorable(logOutput) } - log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(output, slog.Level(c.Int(logLevelFlag.Name)), usecolor))) + verbosity := log.FromLegacyLevel(c.Int(logLevelFlag.Name)) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(output, verbosity, usecolor))) return nil } diff --git a/cmd/evm/internal/t8ntool/block.go b/cmd/evm/internal/t8ntool/block.go index 429ae12c54..a2dc473437 100644 --- a/cmd/evm/internal/t8ntool/block.go +++ b/cmd/evm/internal/t8ntool/block.go @@ -30,10 +30,8 @@ import ( "github.com/ethereum/go-ethereum/consensus/clique" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rlp" "github.com/urfave/cli/v2" - "golang.org/x/exp/slog" ) //go:generate go run github.com/fjl/gencodec -type header -field-override headerMarshaling -out gen_header.go @@ -216,11 +214,6 @@ func (i *bbInput) sealClique(block *types.Block) (*types.Block, error) { // BuildBlock constructs a block from the given inputs. func BuildBlock(ctx *cli.Context) error { - // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) - log.SetDefault(log.NewLogger(glogger)) - baseDir, err := createBasedir(ctx) if err != nil { return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err)) diff --git a/cmd/evm/internal/t8ntool/transaction.go b/cmd/evm/internal/t8ntool/transaction.go index e1c98c7fe2..8533b78637 100644 --- a/cmd/evm/internal/t8ntool/transaction.go +++ b/cmd/evm/internal/t8ntool/transaction.go @@ -28,12 +28,10 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/tests" "github.com/urfave/cli/v2" - "golang.org/x/exp/slog" ) type result struct { @@ -66,11 +64,6 @@ func (r *result) MarshalJSON() ([]byte, error) { } func Transaction(ctx *cli.Context) error { - // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) - log.SetDefault(log.NewLogger(glogger)) - var ( err error ) diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index a01dfedab9..0a9c555cff 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -24,8 +24,6 @@ import ( "os" "path" - "golang.org/x/exp/slog" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/consensus/misc/eip1559" @@ -82,11 +80,6 @@ type input struct { } func Transition(ctx *cli.Context) error { - // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) - log.SetDefault(log.NewLogger(glogger)) - var ( err error tracer vm.EVMLogger diff --git a/cmd/evm/main.go b/cmd/evm/main.go index ef5d25418d..f486856805 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -158,7 +158,6 @@ var stateTransitionCommand = &cli.Command{ t8ntool.ForknameFlag, t8ntool.ChainIDFlag, t8ntool.RewardFlag, - t8ntool.VerbosityFlag, }, } @@ -171,7 +170,6 @@ var transactionCommand = &cli.Command{ t8ntool.InputTxsFlag, t8ntool.ChainIDFlag, t8ntool.ForknameFlag, - t8ntool.VerbosityFlag, }, } @@ -188,7 +186,6 @@ var blockBuilderCommand = &cli.Command{ t8ntool.InputWithdrawalsFlag, t8ntool.InputTxsRlpFlag, t8ntool.SealCliqueFlag, - t8ntool.VerbosityFlag, }, } From c18c5c3d9297195a6f6b05076ae7940d45ab6846 Mon Sep 17 00:00:00 2001 From: Delweng Date: Mon, 18 Dec 2023 22:16:25 +0800 Subject: [PATCH 139/223] cmd/evm: t8n support custom tracers (#28557) This change implements ability for the `evm t8n` tool to use custom tracers; either 'native' golang tracers or javascript tracers. --- cmd/evm/internal/t8ntool/execution.go | 2 +- cmd/evm/internal/t8ntool/flags.go | 18 +++--- cmd/evm/internal/t8ntool/tracewriter.go | 81 +++++++++++++++++++++++++ cmd/evm/internal/t8ntool/transition.go | 61 +++++++------------ cmd/evm/main.go | 8 ++- 5 files changed, 119 insertions(+), 51 deletions(-) create mode 100644 cmd/evm/internal/t8ntool/tracewriter.go diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index 5cac5f07f8..a4ffd09e4f 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -117,7 +117,7 @@ type rejectedTx struct { // Apply applies a set of transactions to a pre-state func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, txIt txIterator, miningReward int64, - getTracerFn func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error)) (*state.StateDB, *ExecutionResult, []byte, error) { + getTracerFn func(txIndex int, txHash common.Hash) (vm.EVMLogger, error)) (*state.StateDB, *ExecutionResult, []byte, error) { // Capture errors for BLOCKHASH operation, if we haven't been supplied the // required blockhashes var hashError error diff --git a/cmd/evm/internal/t8ntool/flags.go b/cmd/evm/internal/t8ntool/flags.go index de19dbc851..c2eca8cc21 100644 --- a/cmd/evm/internal/t8ntool/flags.go +++ b/cmd/evm/internal/t8ntool/flags.go @@ -28,12 +28,15 @@ import ( var ( TraceFlag = &cli.BoolFlag{ Name: "trace", - Usage: "Output full trace logs to files .jsonl", + Usage: "Configures the use of the JSON opcode tracer. This tracer emits traces to files as trace--.jsonl", } - TraceDisableMemoryFlag = &cli.BoolFlag{ - Name: "trace.nomemory", - Value: true, - Usage: "Disable full memory dump in traces (deprecated)", + TraceTracerFlag = &cli.StringFlag{ + Name: "trace.tracer", + Usage: "Configures the use of a custom tracer, e.g native or js tracers. Examples are callTracer and 4byteTracer. These tracers emit results into files as trace--.json", + } + TraceTracerConfigFlag = &cli.StringFlag{ + Name: "trace.jsonconfig", + Usage: "The configurations for the custom tracer specified by --trace.tracer. If provided, must be in JSON format", } TraceEnableMemoryFlag = &cli.BoolFlag{ Name: "trace.memory", @@ -43,11 +46,6 @@ var ( Name: "trace.nostack", Usage: "Disable stack output in traces", } - TraceDisableReturnDataFlag = &cli.BoolFlag{ - Name: "trace.noreturndata", - Value: true, - Usage: "Disable return data output in traces (deprecated)", - } TraceEnableReturnDataFlag = &cli.BoolFlag{ Name: "trace.returndata", Usage: "Enable return data output in traces", diff --git a/cmd/evm/internal/t8ntool/tracewriter.go b/cmd/evm/internal/t8ntool/tracewriter.go new file mode 100644 index 0000000000..e4efad112f --- /dev/null +++ b/cmd/evm/internal/t8ntool/tracewriter.go @@ -0,0 +1,81 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . + +package t8ntool + +import ( + "encoding/json" + "io" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" + "github.com/ethereum/go-ethereum/log" +) + +// traceWriter is an vm.EVMLogger which also holds an inner logger/tracer. +// When the TxEnd event happens, the inner tracer result is written to the file, and +// the file is closed. +type traceWriter struct { + inner vm.EVMLogger + f io.WriteCloser +} + +// Compile-time interface check +var _ = vm.EVMLogger((*traceWriter)(nil)) + +func (t *traceWriter) CaptureTxEnd(restGas uint64) { + t.inner.CaptureTxEnd(restGas) + defer t.f.Close() + + if tracer, ok := t.inner.(tracers.Tracer); ok { + result, err := tracer.GetResult() + if err != nil { + log.Warn("Error in tracer", "err", err) + return + } + err = json.NewEncoder(t.f).Encode(result) + if err != nil { + log.Warn("Error writing tracer output", "err", err) + return + } + } +} + +func (t *traceWriter) CaptureTxStart(gasLimit uint64) { t.inner.CaptureTxStart(gasLimit) } +func (t *traceWriter) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + t.inner.CaptureStart(env, from, to, create, input, gas, value) +} + +func (t *traceWriter) CaptureEnd(output []byte, gasUsed uint64, err error) { + t.inner.CaptureEnd(output, gasUsed, err) +} + +func (t *traceWriter) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { + t.inner.CaptureEnter(typ, from, to, input, gas, value) +} + +func (t *traceWriter) CaptureExit(output []byte, gasUsed uint64, err error) { + t.inner.CaptureExit(output, gasUsed, err) +} + +func (t *traceWriter) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { + t.inner.CaptureState(pc, op, gas, cost, scope, rData, depth, err) +} +func (t *traceWriter) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { + t.inner.CaptureFault(pc, op, gas, cost, scope, depth, err) +} diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index 0a9c555cff..c8ba69f40f 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -31,6 +31,7 @@ import ( "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" @@ -80,57 +81,43 @@ type input struct { } func Transition(ctx *cli.Context) error { - var ( - err error - tracer vm.EVMLogger - ) - var getTracer func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) + var getTracer = func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) { return nil, nil } baseDir, err := createBasedir(ctx) if err != nil { return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err)) } - if ctx.Bool(TraceFlag.Name) { - if ctx.IsSet(TraceDisableMemoryFlag.Name) && ctx.IsSet(TraceEnableMemoryFlag.Name) { - return NewError(ErrorConfig, fmt.Errorf("can't use both flags --%s and --%s", TraceDisableMemoryFlag.Name, TraceEnableMemoryFlag.Name)) - } - if ctx.IsSet(TraceDisableReturnDataFlag.Name) && ctx.IsSet(TraceEnableReturnDataFlag.Name) { - return NewError(ErrorConfig, fmt.Errorf("can't use both flags --%s and --%s", TraceDisableReturnDataFlag.Name, TraceEnableReturnDataFlag.Name)) - } - if ctx.IsSet(TraceDisableMemoryFlag.Name) { - log.Warn(fmt.Sprintf("--%s has been deprecated in favour of --%s", TraceDisableMemoryFlag.Name, TraceEnableMemoryFlag.Name)) - } - if ctx.IsSet(TraceDisableReturnDataFlag.Name) { - log.Warn(fmt.Sprintf("--%s has been deprecated in favour of --%s", TraceDisableReturnDataFlag.Name, TraceEnableReturnDataFlag.Name)) - } + + if ctx.Bool(TraceFlag.Name) { // JSON opcode tracing // Configure the EVM logger logConfig := &logger.Config{ DisableStack: ctx.Bool(TraceDisableStackFlag.Name), - EnableMemory: !ctx.Bool(TraceDisableMemoryFlag.Name) || ctx.Bool(TraceEnableMemoryFlag.Name), - EnableReturnData: !ctx.Bool(TraceDisableReturnDataFlag.Name) || ctx.Bool(TraceEnableReturnDataFlag.Name), + EnableMemory: ctx.Bool(TraceEnableMemoryFlag.Name), + EnableReturnData: ctx.Bool(TraceEnableReturnDataFlag.Name), Debug: true, } - var prevFile *os.File - // This one closes the last file - defer func() { - if prevFile != nil { - prevFile.Close() - } - }() getTracer = func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) { - if prevFile != nil { - prevFile.Close() - } traceFile, err := os.Create(path.Join(baseDir, fmt.Sprintf("trace-%d-%v.jsonl", txIndex, txHash.String()))) if err != nil { return nil, NewError(ErrorIO, fmt.Errorf("failed creating trace-file: %v", err)) } - prevFile = traceFile - return logger.NewJSONLogger(logConfig, traceFile), nil + return &traceWriter{logger.NewJSONLogger(logConfig, traceFile), traceFile}, nil } - } else { - getTracer = func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error) { - return nil, nil + } else if ctx.IsSet(TraceTracerFlag.Name) { + var config json.RawMessage + if ctx.IsSet(TraceTracerConfigFlag.Name) { + config = []byte(ctx.String(TraceTracerConfigFlag.Name)) + } + getTracer = func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) { + traceFile, err := os.Create(path.Join(baseDir, fmt.Sprintf("trace-%d-%v.json", txIndex, txHash.String()))) + if err != nil { + return nil, NewError(ErrorIO, fmt.Errorf("failed creating trace-file: %v", err)) + } + tracer, err := tracers.DefaultDirectory.New(ctx.String(TraceTracerFlag.Name), nil, config) + if err != nil { + return nil, NewError(ErrorConfig, fmt.Errorf("failed instantiating tracer: %w", err)) + } + return &traceWriter{tracer, traceFile}, nil } } // We need to load three things: alloc, env and transactions. May be either in @@ -169,9 +156,7 @@ func Transition(ctx *cli.Context) error { } prestate.Env = *inputData.Env - vmConfig := vm.Config{ - Tracer: tracer, - } + vmConfig := vm.Config{} // Construct the chainconfig var chainConfig *params.ChainConfig if cConf, extraEips, err := tests.GetChainConfig(ctx.String(ForknameFlag.Name)); err != nil { diff --git a/cmd/evm/main.go b/cmd/evm/main.go index f486856805..c3e6a4af91 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -26,6 +26,10 @@ import ( "github.com/ethereum/go-ethereum/internal/debug" "github.com/ethereum/go-ethereum/internal/flags" "github.com/urfave/cli/v2" + + // Force-load the tracer engines to trigger registration + _ "github.com/ethereum/go-ethereum/eth/tracers/js" + _ "github.com/ethereum/go-ethereum/eth/tracers/native" ) var ( @@ -143,10 +147,10 @@ var stateTransitionCommand = &cli.Command{ Action: t8ntool.Transition, Flags: []cli.Flag{ t8ntool.TraceFlag, - t8ntool.TraceDisableMemoryFlag, + t8ntool.TraceTracerFlag, + t8ntool.TraceTracerConfigFlag, t8ntool.TraceEnableMemoryFlag, t8ntool.TraceDisableStackFlag, - t8ntool.TraceDisableReturnDataFlag, t8ntool.TraceEnableReturnDataFlag, t8ntool.OutputBasedir, t8ntool.OutputAllocFlag, From a18b845ecda84968125c09f054deb49773cd8cfe Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 18 Dec 2023 18:53:47 +0100 Subject: [PATCH 140/223] params: release go-ethereum v1.13.6 stable --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index bcab461a43..636f95bad8 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 5 // Patch version component of the current release - VersionMeta = "unstable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 6 // Patch version component of the current release + VersionMeta = "stable" // Version metadata to append to the version string ) // Version holds the textual version string. From 4410c1416abce38925c60550bf2bfb7f7db5c3f5 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 18 Dec 2023 19:10:11 +0100 Subject: [PATCH 141/223] params: begin v1.13.7 release cycle --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index 636f95bad8..ef3c47e7ac 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 6 // Patch version component of the current release - VersionMeta = "stable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 7 // Patch version component of the current release + VersionMeta = "unstable" // Version metadata to append to the version string ) // Version holds the textual version string. From 54a400ee717caf44603fac390314747c5592ee1b Mon Sep 17 00:00:00 2001 From: Delweng Date: Tue, 19 Dec 2023 03:09:41 +0800 Subject: [PATCH 142/223] internal/ethapi: ethSendTransaction check baseFee (#27834) If the EIP-1559 is activated, reject 0-priced transactions in the rpc level --- internal/ethapi/transaction_args.go | 33 +++++++++++++++++------- internal/ethapi/transaction_args_test.go | 22 ++++++++++++++++ 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/internal/ethapi/transaction_args.go b/internal/ethapi/transaction_args.go index e4cf81a3f4..aaf2c05d89 100644 --- a/internal/ethapi/transaction_args.go +++ b/internal/ethapi/transaction_args.go @@ -137,20 +137,35 @@ func (args *TransactionArgs) setFeeDefaults(ctx context.Context, b Backend) erro if args.GasPrice != nil && (args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil) { return errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified") } - // If the tx has completely specified a fee mechanism, no default is needed. This allows users - // who are not yet synced past London to get defaults for other tx values. See - // https://github.com/ethereum/go-ethereum/pull/23274 for more information. + // If the tx has completely specified a fee mechanism, no default is needed. + // This allows users who are not yet synced past London to get defaults for + // other tx values. See https://github.com/ethereum/go-ethereum/pull/23274 + // for more information. eip1559ParamsSet := args.MaxFeePerGas != nil && args.MaxPriorityFeePerGas != nil - if (args.GasPrice != nil && !eip1559ParamsSet) || (args.GasPrice == nil && eip1559ParamsSet) { - // Sanity check the EIP-1559 fee parameters if present. - if args.GasPrice == nil && args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { + + // Sanity check the EIP-1559 fee parameters if present. + if args.GasPrice == nil && eip1559ParamsSet { + if args.MaxFeePerGas.ToInt().Sign() == 0 { + return errors.New("maxFeePerGas must be non-zero") + } + if args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { return fmt.Errorf("maxFeePerGas (%v) < maxPriorityFeePerGas (%v)", args.MaxFeePerGas, args.MaxPriorityFeePerGas) } - return nil + return nil // No need to set anything, user already set MaxFeePerGas and MaxPriorityFeePerGas } - // Now attempt to fill in default value depending on whether London is active or not. + // Sanity check the non-EIP-1559 fee parameters. head := b.CurrentHeader() - if b.ChainConfig().IsLondon(head.Number) { + isLondon := b.ChainConfig().IsLondon(head.Number) + if args.GasPrice != nil && !eip1559ParamsSet { + // Zero gas-price is not allowed after London fork + if args.GasPrice.ToInt().Sign() == 0 && isLondon { + return errors.New("gasPrice must be non-zero after london fork") + } + return nil // No need to set anything, user already set GasPrice + } + + // Now attempt to fill in default value depending on whether London is active or not. + if isLondon { // London is active, set maxPriorityFeePerGas and maxFeePerGas. if err := args.setLondonFeeDefaults(ctx, head, b); err != nil { return err diff --git a/internal/ethapi/transaction_args_test.go b/internal/ethapi/transaction_args_test.go index 9dc58bdeb5..ab7c2f70ed 100644 --- a/internal/ethapi/transaction_args_test.go +++ b/internal/ethapi/transaction_args_test.go @@ -52,6 +52,7 @@ func TestSetFeeDefaults(t *testing.T) { var ( b = newBackendMock() + zero = (*hexutil.Big)(big.NewInt(0)) fortytwo = (*hexutil.Big)(big.NewInt(42)) maxFee = (*hexutil.Big)(new(big.Int).Add(new(big.Int).Mul(b.current.BaseFee, big.NewInt(2)), fortytwo.ToInt())) al = &types.AccessList{types.AccessTuple{Address: common.Address{0xaa}, StorageKeys: []common.Hash{{0x01}}}} @@ -66,6 +67,13 @@ func TestSetFeeDefaults(t *testing.T) { &TransactionArgs{GasPrice: fortytwo}, nil, }, + { + "legacy tx pre-London with zero price", + false, + &TransactionArgs{GasPrice: zero}, + &TransactionArgs{GasPrice: zero}, + nil, + }, { "legacy tx post-London, explicit gas price", true, @@ -73,6 +81,13 @@ func TestSetFeeDefaults(t *testing.T) { &TransactionArgs{GasPrice: fortytwo}, nil, }, + { + "legacy tx post-London with zero price", + true, + &TransactionArgs{GasPrice: zero}, + nil, + errors.New("gasPrice must be non-zero after london fork"), + }, // Access list txs { @@ -161,6 +176,13 @@ func TestSetFeeDefaults(t *testing.T) { nil, errors.New("maxFeePerGas (0x7) < maxPriorityFeePerGas (0x2a)"), }, + { + "dynamic fee tx post-London, explicit gas price", + true, + &TransactionArgs{MaxFeePerGas: zero, MaxPriorityFeePerGas: zero}, + nil, + errors.New("maxFeePerGas must be non-zero"), + }, // Misc { From cd58897f18fdb12c5a1d41f8e73612c0d296211f Mon Sep 17 00:00:00 2001 From: wangyifan Date: Mon, 18 Dec 2023 11:10:54 -0800 Subject: [PATCH 143/223] core/rawdb: implement size reporting for live items in freezer_table (#28525) This is the fix to issue #27483. A new hiddenBytes() is introduced to calculate the byte size of hidden items in the freezer table. When reporting the size of the freezer table, size of the hidden items will be subtracted from the total size. --------- Co-authored-by: Yifan Co-authored-by: Gary Rong --- core/rawdb/freezer_table.go | 39 ++++++++++++++++++++++++-------- core/rawdb/freezer_table_test.go | 33 +++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/core/rawdb/freezer_table.go b/core/rawdb/freezer_table.go index 61436bf932..4b9d510e82 100644 --- a/core/rawdb/freezer_table.go +++ b/core/rawdb/freezer_table.go @@ -467,6 +467,20 @@ func (t *freezerTable) truncateHead(items uint64) error { return nil } +// sizeHidden returns the total data size of hidden items in the freezer table. +// This function assumes the lock is already held. +func (t *freezerTable) sizeHidden() (uint64, error) { + hidden, offset := t.itemHidden.Load(), t.itemOffset.Load() + if hidden <= offset { + return 0, nil + } + indices, err := t.getIndices(hidden-1, 1) + if err != nil { + return 0, err + } + return uint64(indices[1].offset), nil +} + // truncateTail discards any recent data before the provided threshold number. func (t *freezerTable) truncateTail(items uint64) error { t.lock.Lock() @@ -495,6 +509,12 @@ func (t *freezerTable) truncateTail(items uint64) error { newTail.unmarshalBinary(buffer) newTailId = newTail.filenum } + // Save the old size for metrics tracking. This needs to be done + // before any updates to either itemHidden or itemOffset. + oldSize, err := t.sizeNolock() + if err != nil { + return err + } // Update the virtual tail marker and hidden these entries in table. t.itemHidden.Store(items) if err := writeMetadata(t.meta, newMetadata(items)); err != nil { @@ -509,18 +529,12 @@ func (t *freezerTable) truncateTail(items uint64) error { if t.tailId > newTailId { return fmt.Errorf("invalid index, tail-file %d, item-file %d", t.tailId, newTailId) } - // Hidden items exceed the current tail file, drop the relevant - // data files. We need to truncate, save the old size for metrics - // tracking. - oldSize, err := t.sizeNolock() - if err != nil { - return err - } // Count how many items can be deleted from the file. var ( newDeleted = items deleted = t.itemOffset.Load() ) + // Hidden items exceed the current tail file, drop the relevant data files. for current := items - 1; current >= deleted; current -= 1 { if _, err := t.index.ReadAt(buffer, int64((current-deleted+1)*indexEntrySize)); err != nil { return err @@ -680,6 +694,7 @@ func (t *freezerTable) releaseFilesBefore(num uint32, remove bool) { func (t *freezerTable) getIndices(from, count uint64) ([]*indexEntry, error) { // Apply the table-offset from = from - t.itemOffset.Load() + // For reading N items, we need N+1 indices. buffer := make([]byte, (count+1)*indexEntrySize) if _, err := t.index.ReadAt(buffer, int64(from*indexEntrySize)); err != nil { @@ -870,14 +885,18 @@ func (t *freezerTable) size() (uint64, error) { return t.sizeNolock() } -// sizeNolock returns the total data size in the freezer table without obtaining -// the mutex first. +// sizeNolock returns the total data size in the freezer table. This function +// assumes the lock is already held. func (t *freezerTable) sizeNolock() (uint64, error) { stat, err := t.index.Stat() if err != nil { return 0, err } - total := uint64(t.maxFileSize)*uint64(t.headId-t.tailId) + uint64(t.headBytes) + uint64(stat.Size()) + hidden, err := t.sizeHidden() + if err != nil { + return 0, err + } + total := uint64(t.maxFileSize)*uint64(t.headId-t.tailId) + uint64(t.headBytes) + uint64(stat.Size()) - hidden return total, nil } diff --git a/core/rawdb/freezer_table_test.go b/core/rawdb/freezer_table_test.go index 939d093946..4471463932 100644 --- a/core/rawdb/freezer_table_test.go +++ b/core/rawdb/freezer_table_test.go @@ -658,6 +658,13 @@ func TestFreezerOffset(t *testing.T) { } } +func assertTableSize(t *testing.T, f *freezerTable, size int) { + t.Helper() + if got, err := f.size(); got != uint64(size) { + t.Fatalf("expected size of %d bytes, got %d, err: %v", size, got, err) + } +} + func TestTruncateTail(t *testing.T) { t.Parallel() rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge() @@ -692,6 +699,9 @@ func TestTruncateTail(t *testing.T) { 5: getChunk(20, 0xaa), 6: getChunk(20, 0x11), }) + // maxFileSize*fileCount + headBytes + indexFileSize - hiddenBytes + expected := 20*7 + 48 - 0 + assertTableSize(t, f, expected) // truncate single element( item 0 ), deletion is only supported at file level f.truncateTail(1) @@ -707,6 +717,8 @@ func TestTruncateTail(t *testing.T) { 5: getChunk(20, 0xaa), 6: getChunk(20, 0x11), }) + expected = 20*7 + 48 - 20 + assertTableSize(t, f, expected) // Reopen the table, the deletion information should be persisted as well f.Close() @@ -739,6 +751,8 @@ func TestTruncateTail(t *testing.T) { 5: getChunk(20, 0xaa), 6: getChunk(20, 0x11), }) + expected = 20*5 + 36 - 0 + assertTableSize(t, f, expected) // Reopen the table, the above testing should still pass f.Close() @@ -760,6 +774,23 @@ func TestTruncateTail(t *testing.T) { 6: getChunk(20, 0x11), }) + // truncate 3 more elements( item 2, 3, 4), the file 1 should be deleted + // file 2 should only contain item 5 + f.truncateTail(5) + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, + 1: errOutOfBounds, + 2: errOutOfBounds, + 3: errOutOfBounds, + 4: errOutOfBounds, + }) + checkRetrieve(t, f, map[uint64][]byte{ + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) + expected = 20*3 + 24 - 20 + assertTableSize(t, f, expected) + // truncate all, the entire freezer should be deleted f.truncateTail(7) checkRetrieveError(t, f, map[uint64]error{ @@ -771,6 +802,8 @@ func TestTruncateTail(t *testing.T) { 5: errOutOfBounds, 6: errOutOfBounds, }) + expected = 12 + assertTableSize(t, f, expected) } func TestTruncateHead(t *testing.T) { From 952b343cb3d319b77076ef3acb60e29e04cd51fd Mon Sep 17 00:00:00 2001 From: Martin HS Date: Tue, 19 Dec 2023 08:55:04 +0100 Subject: [PATCH 144/223] build: make linter emit output (#28704) --- build/ci.go | 2 +- internal/build/util.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/build/ci.go b/build/ci.go index afe1c332b8..c272d3f2b9 100644 --- a/build/ci.go +++ b/build/ci.go @@ -366,7 +366,7 @@ func doLint(cmdline []string) { linter := downloadLinter(*cachedir) lflags := []string{"run", "--config", ".golangci.yml"} - build.MustRunCommand(linter, append(lflags, packages...)...) + build.MustRunCommandWithOutput(linter, append(lflags, packages...)...) fmt.Println("You have achieved perfection.") } diff --git a/internal/build/util.go b/internal/build/util.go index 5c77b236dc..17928118a0 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -68,6 +68,25 @@ func MustRunCommand(cmd string, args ...string) { MustRun(exec.Command(cmd, args...)) } +func MustRunCommandWithOutput(cmd string, args ...string) { + var done chan bool + // This is a little loop to generate some output, so CI does not tear down the + // process after 300 seconds. + go func() { + for i := 0; i < 15; i++ { + fmt.Printf("Waiting for command %q\n", cmd) + select { + case <-time.After(time.Minute): + break + case <-done: + return + } + } + }() + MustRun(exec.Command(cmd, args...)) + close(done) +} + var warnedAboutGit bool // RunGit runs a git subcommand and returns its output. From 5a9dda64ce17dda86720ed62d502831e5f616144 Mon Sep 17 00:00:00 2001 From: Martin HS Date: Tue, 19 Dec 2023 09:24:23 +0100 Subject: [PATCH 145/223] .travis: set lower GOGC value (#28705) As documented on https://golangci-lint.run/usage/performance/ , a lower GOGC value causes less peak mem consumption when running the linter. Exceeding 3Gb is a common cause for build failures, according to https://docs.travis-ci.com/user/common-build-problems/#my-build-script-is-killed-without-any-error --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c2bfc3f2bf..40080dafab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ jobs: git: submodules: false # avoid cloning ethereum/tests script: - - go run build/ci.go lint + - GOGC=10 go run build/ci.go lint # These builders create the Docker sub-images for multi-arch push and each # will attempt to push the multi-arch image if they are the last builder From 435bed5da04a386198ca25c5e1264330c7a0da5b Mon Sep 17 00:00:00 2001 From: Martin HS Date: Tue, 19 Dec 2023 10:35:02 +0100 Subject: [PATCH 146/223] ci: disable lint on travis (#28706) --- .travis.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 40080dafab..a55583a703 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,18 +9,6 @@ jobs: - azure-osx include: - # This builder only tests code linters on latest version of Go - - stage: lint - os: linux - dist: bionic - go: 1.21.x - env: - - lint - git: - submodules: false # avoid cloning ethereum/tests - script: - - GOGC=10 go run build/ci.go lint - # These builders create the Docker sub-images for multi-arch push and each # will attempt to push the multi-arch image if they are the last builder - stage: build From 0cc192bd3a89cae6d3c2a787b9265dda631d6529 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 10:50:02 +0100 Subject: [PATCH 147/223] build(deps): bump golang.org/x/crypto from 0.15.0 to 0.17.0 (#28702) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.15.0 to 0.17.0. - [Commits](https://github.com/golang/crypto/compare/v0.15.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 8f99a00754..b4d077fc47 100644 --- a/go.mod +++ b/go.mod @@ -62,10 +62,10 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 github.com/urfave/cli/v2 v2.25.7 go.uber.org/automaxprocs v1.5.2 - golang.org/x/crypto v0.15.0 + golang.org/x/crypto v0.17.0 golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa golang.org/x/sync v0.5.0 - golang.org/x/sys v0.14.0 + golang.org/x/sys v0.15.0 golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 golang.org/x/tools v0.15.0 diff --git a/go.sum b/go.sum index f89adbe571..bab51b1345 100644 --- a/go.sum +++ b/go.sum @@ -614,8 +614,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -774,8 +774,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 3fd568855f1e6d1370e61a30d10a4055ab682851 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Tue, 19 Dec 2023 13:25:03 +0100 Subject: [PATCH 148/223] params: go-ethereum v1.13.7 stable --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index ef3c47e7ac..5908849d9c 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 7 // Patch version component of the current release - VersionMeta = "unstable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 7 // Patch version component of the current release + VersionMeta = "stable" // Version metadata to append to the version string ) // Version holds the textual version string. From 9258a44b8f455d74f1c344bb82af39accb6c65aa Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Tue, 19 Dec 2023 13:32:25 +0100 Subject: [PATCH 149/223] params: begin go-ethereum v1.13.8 release cycle --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index 5908849d9c..a9192845bc 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 7 // Patch version component of the current release - VersionMeta = "stable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 8 // Patch version component of the current release + VersionMeta = "unstable" // Version metadata to append to the version string ) // Version holds the textual version string. From 8e15470125ba3689dd7288e2aa7bbdca8730701b Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 19 Dec 2023 14:50:06 +0100 Subject: [PATCH 150/223] miner: Add block building interruption on payload resolution (getPayload) (#186) * miner: Add block building interruption on payload resolution (getPayload) * miner: Change full payload resolution, fix and add test * miner: Add parameter validation if skipping empty block We only build the empty block if we don't use the tx pool. So if we use the tx pool, a forkchoiceUpdated call would miss the implicit validation that's happening during empty block building, so we need to add it back. * miner: Always wait for block builder result after interrupting This commit changes the way the block builder/update routine and the resolution functions Resolve and ResolveFull synchronize. Resolve(Full) now signal the payload builder to pause and set the interrupt signal in case any block building is ongoing. They then wait for the interrupted block building to complete. This allowed to simplify the Payload implementation somewhat because the builder routine is now guaranteed to return before the resulting fields (full, fullFees etc) are read, and closing of the `stop` channel is now synchronized with a sync.Once. So the mutex and conditional variable could be removed and we only use two simple signalling channels `stop` and `done` for synchronization. * miner: Add testing mode to module Some test in the miner and catalyst package assume that getPayload can be immediately called after forkchoiceUpdated and then to return some built block. Because of the new behavior of payload resolution to interrupt any ongoing payload building process, this creates a race condition on block building. The new testing mode, which can be enabled by setting the package variable IsPayloadBuildingTest to true, guarantees that always at least one full block is built. It's hacky, but seems to be the easiest and less-intrusive way to enable the new behavior of payload resolution while still keeping all tests happy. * miner: Further improve block building interruption - Priotize stop signal over recommit - Don't start payload building update if last update duration doesn't fit until slot timeout. * miner: Partially revert rework of payload build stopping When resolving, we don't want to wait for the latest update. If a full block is available, we just return that one, as before. Payload building is still interrupted, but exits in the background. * miner: Return early when building interrupted payload updates * Remove global variable to change miner behaviour. Use a longer wait in tests for the payload to build. * miner: Interrupt first payload building job Also added interrupt test. Had to add sleep to make non-interrupt test work. * eth/catalyst: Add even more sleeps to make tests get over payload interruption * Deterministically wait for payloads to build the first full block * eth/catalyst,miner: Improve payload full block waiting in tests Also fix a bug in TestNilWithdrawals where the withdrawals weren't added to the ephemeral BuildPayloadArgs instance for re-calculating the payload id. * miner: Calculate sane block building time in validateParams Also always stop interrupt timer after fillTransactions in generateWork. --------- Co-authored-by: Adrian Sutton --- eth/catalyst/api_test.go | 34 ++++- eth/catalyst/queue.go | 19 +++ eth/catalyst/simulated_beacon.go | 3 + miner/payload_building.go | 222 +++++++++++++++++++++++-------- miner/payload_building_test.go | 64 ++++++++- miner/worker.go | 56 +++++++- 6 files changed, 322 insertions(+), 76 deletions(-) diff --git a/eth/catalyst/api_test.go b/eth/catalyst/api_test.go index 116bca1af9..7a8330f4df 100644 --- a/eth/catalyst/api_test.go +++ b/eth/catalyst/api_test.go @@ -28,6 +28,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + "github.com/ethereum/go-ethereum/beacon/engine" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -198,12 +200,10 @@ func TestEth2PrepareAndGetPayload(t *testing.T) { SafeBlockHash: common.Hash{}, FinalizedBlockHash: common.Hash{}, } - _, err := api.ForkchoiceUpdatedV1(fcState, &blockParams) + resp, err := api.ForkchoiceUpdatedV1(fcState, &blockParams) if err != nil { t.Fatalf("error preparing payload, err=%v", err) } - // give the payload some time to be built - time.Sleep(100 * time.Millisecond) payloadID := (&miner.BuildPayloadArgs{ Parent: fcState.HeadBlockHash, Timestamp: blockParams.Timestamp, @@ -211,6 +211,8 @@ func TestEth2PrepareAndGetPayload(t *testing.T) { Random: blockParams.Random, BeaconRoot: blockParams.BeaconRoot, }).Id() + require.Equal(t, payloadID, *resp.PayloadID) + require.NoError(t, waitForApiPayloadToBuild(api, *resp.PayloadID)) execData, err := api.GetPayloadV1(payloadID) if err != nil { t.Fatalf("error getting payload, err=%v", err) @@ -635,8 +637,7 @@ func TestNewPayloadOnInvalidChain(t *testing.T) { if resp.PayloadStatus.Status != engine.VALID { t.Fatalf("error preparing payload, invalid status: %v", resp.PayloadStatus.Status) } - // give the payload some time to be built - time.Sleep(50 * time.Millisecond) + require.NoError(t, waitForApiPayloadToBuild(api, *resp.PayloadID)) if payload, err = api.GetPayloadV1(*resp.PayloadID); err != nil { t.Fatalf("can't get payload: %v", err) } @@ -684,6 +685,7 @@ func assembleBlock(api *ConsensusAPI, parentHash common.Hash, params *engine.Pay if err != nil { return nil, err } + waitForPayloadToBuild(payload) return payload.ResolveFull().ExecutionPayload, nil } @@ -922,6 +924,7 @@ func TestNewPayloadOnInvalidTerminalBlock(t *testing.T) { if err != nil { t.Fatalf("error preparing payload, err=%v", err) } + waitForPayloadToBuild(payload) data := *payload.Resolve().ExecutionPayload // We need to recompute the blockhash, since the miner computes a wrong (correct) blockhash txs, _ := decodeTransactions(data.Transactions) @@ -1082,6 +1085,8 @@ func TestWithdrawals(t *testing.T) { Withdrawals: blockParams.Withdrawals, BeaconRoot: blockParams.BeaconRoot, }).Id() + require.Equal(t, payloadID, *resp.PayloadID) + require.NoError(t, waitForApiPayloadToBuild(api, payloadID)) execData, err := api.GetPayloadV2(payloadID) if err != nil { t.Fatalf("error getting payload, err=%v", err) @@ -1116,7 +1121,7 @@ func TestWithdrawals(t *testing.T) { }, } fcState.HeadBlockHash = execData.ExecutionPayload.BlockHash - _, err = api.ForkchoiceUpdatedV2(fcState, &blockParams) + resp, err = api.ForkchoiceUpdatedV2(fcState, &blockParams) if err != nil { t.Fatalf("error preparing payload, err=%v", err) } @@ -1130,6 +1135,8 @@ func TestWithdrawals(t *testing.T) { Withdrawals: blockParams.Withdrawals, BeaconRoot: blockParams.BeaconRoot, }).Id() + require.Equal(t, payloadID, *resp.PayloadID) + require.NoError(t, waitForApiPayloadToBuild(api, payloadID)) execData, err = api.GetPayloadV2(payloadID) if err != nil { t.Fatalf("error getting payload, err=%v", err) @@ -1242,7 +1249,7 @@ func TestNilWithdrawals(t *testing.T) { } for _, test := range tests { - _, err := api.ForkchoiceUpdatedV2(fcState, &test.blockParams) + resp, err := api.ForkchoiceUpdatedV2(fcState, &test.blockParams) if test.wantErr { if err == nil { t.Fatal("wanted error on fcuv2 with invalid withdrawals") @@ -1260,7 +1267,10 @@ func TestNilWithdrawals(t *testing.T) { FeeRecipient: test.blockParams.SuggestedFeeRecipient, Random: test.blockParams.Random, BeaconRoot: test.blockParams.BeaconRoot, + Withdrawals: test.blockParams.Withdrawals, }).Id() + require.Equal(t, payloadID, *resp.PayloadID) + require.NoError(t, waitForApiPayloadToBuild(api, payloadID)) execData, err := api.GetPayloadV2(payloadID) if err != nil { t.Fatalf("error getting payload, err=%v", err) @@ -1609,6 +1619,8 @@ func TestParentBeaconBlockRoot(t *testing.T) { Withdrawals: blockParams.Withdrawals, BeaconRoot: blockParams.BeaconRoot, }).Id() + require.Equal(t, payloadID, *resp.PayloadID) + require.NoError(t, waitForApiPayloadToBuild(api, *resp.PayloadID)) execData, err := api.GetPayloadV3(payloadID) if err != nil { t.Fatalf("error getting payload, err=%v", err) @@ -1647,3 +1659,11 @@ func TestParentBeaconBlockRoot(t *testing.T) { t.Fatalf("incorrect root stored: want %s, got %s", *blockParams.BeaconRoot, root) } } + +func waitForPayloadToBuild(payload *miner.Payload) { + payload.WaitFull() +} + +func waitForApiPayloadToBuild(api *ConsensusAPI, id engine.PayloadID) error { + return api.localBlocks.waitFull(id) +} diff --git a/eth/catalyst/queue.go b/eth/catalyst/queue.go index 634dc1b2e6..d42904843b 100644 --- a/eth/catalyst/queue.go +++ b/eth/catalyst/queue.go @@ -17,6 +17,7 @@ package catalyst import ( + "errors" "sync" "github.com/ethereum/go-ethereum/beacon/engine" @@ -91,6 +92,24 @@ func (q *payloadQueue) get(id engine.PayloadID, full bool) *engine.ExecutionPayl return nil } +// waitFull waits until the first full payload has been built for the specified payload id +// The method returns immediately if the payload is unknown. +func (q *payloadQueue) waitFull(id engine.PayloadID) error { + q.lock.RLock() + defer q.lock.RUnlock() + + for _, item := range q.payloads { + if item == nil { + return errors.New("unknown payload") + } + if item.id == id { + item.payload.WaitFull() + return nil + } + } + return errors.New("unknown payload") +} + // has checks if a particular payload is already tracked. func (q *payloadQueue) has(id engine.PayloadID) bool { q.lock.RLock() diff --git a/eth/catalyst/simulated_beacon.go b/eth/catalyst/simulated_beacon.go index a9a2bb4a9a..dfbb42878c 100644 --- a/eth/catalyst/simulated_beacon.go +++ b/eth/catalyst/simulated_beacon.go @@ -165,6 +165,9 @@ func (c *SimulatedBeacon) sealBlock(withdrawals []*types.Withdrawal) error { return errors.New("chain rewind prevented invocation of payload creation") } + if err := c.engineAPI.localBlocks.waitFull(*fcResponse.PayloadID); err != nil { + return err + } envelope, err := c.engineAPI.getPayload(*fcResponse.PayloadID, true) if err != nil { return err diff --git a/miner/payload_building.go b/miner/payload_building.go index 1510ee5a82..935329f57e 100644 --- a/miner/payload_building.go +++ b/miner/payload_building.go @@ -19,8 +19,10 @@ package miner import ( "crypto/sha256" "encoding/binary" + "errors" "math/big" "sync" + "sync/atomic" "time" "github.com/ethereum/go-ethereum/beacon/engine" @@ -91,6 +93,10 @@ type Payload struct { stop chan struct{} lock sync.Mutex cond *sync.Cond + + err error + stopOnce sync.Once + interrupt *atomic.Int32 // interrupt signal shared with worker } // newPayload initializes the payload object. @@ -99,12 +105,16 @@ func newPayload(empty *types.Block, id engine.PayloadID) *Payload { id: id, empty: empty, stop: make(chan struct{}), + + interrupt: new(atomic.Int32), } log.Info("Starting work on payload", "id", payload.id) payload.cond = sync.NewCond(&payload.lock) return payload } +var errInterruptedUpdate = errors.New("interrupted payload update") + // update updates the full-block with latest built version. func (payload *Payload) update(r *newPayloadResult, elapsed time.Duration) { payload.lock.Lock() @@ -115,6 +125,19 @@ func (payload *Payload) update(r *newPayloadResult, elapsed time.Duration) { return // reject stale update default: } + + defer payload.cond.Broadcast() // fire signal for notifying any full block result + + if errors.Is(r.err, errInterruptedUpdate) { + log.Debug("Ignoring interrupted payload update", "id", payload.id) + return + } else if r.err != nil { + log.Warn("Error building payload update", "id", payload.id, "err", r.err) + payload.err = r.err // record latest error + return + } + log.Debug("New payload update", "id", payload.id, "elapsed", common.PrettyDuration(elapsed)) + // Ensure the newly provided full block has a higher transaction fee. // In post-merge stage, there is no uncle reward anymore and transaction // fee(apart from the mev revenue) is the only indicator for comparison. @@ -136,24 +159,12 @@ func (payload *Payload) update(r *newPayloadResult, elapsed time.Duration) { "elapsed", common.PrettyDuration(elapsed), ) } - payload.cond.Broadcast() // fire signal for notifying full block } // Resolve returns the latest built payload and also terminates the background // thread for updating payload. It's safe to be called multiple times. func (payload *Payload) Resolve() *engine.ExecutionPayloadEnvelope { - payload.lock.Lock() - defer payload.lock.Unlock() - - select { - case <-payload.stop: - default: - close(payload.stop) - } - if payload.full != nil { - return engine.BlockToExecutableData(payload.full, payload.fullFees, payload.sidecars) - } - return engine.BlockToExecutableData(payload.empty, big.NewInt(0), nil) + return payload.resolve(false) } // ResolveEmpty is basically identical to Resolve, but it expects empty block only. @@ -168,10 +179,24 @@ func (payload *Payload) ResolveEmpty() *engine.ExecutionPayloadEnvelope { // ResolveFull is basically identical to Resolve, but it expects full block only. // Don't call Resolve until ResolveFull returns, otherwise it might block forever. func (payload *Payload) ResolveFull() *engine.ExecutionPayloadEnvelope { + return payload.resolve(true) +} + +func (payload *Payload) WaitFull() { + payload.lock.Lock() + defer payload.lock.Unlock() + payload.cond.Wait() +} + +func (payload *Payload) resolve(onlyFull bool) *engine.ExecutionPayloadEnvelope { payload.lock.Lock() defer payload.lock.Unlock() - if payload.full == nil { + // We interrupt any active building block to prevent it from adding more transactions, + // and if it is an update, don't attempt to seal the block. + payload.interruptBuilding() + + if payload.full == nil && (onlyFull || payload.empty == nil) { select { case <-payload.stop: return nil @@ -182,22 +207,82 @@ func (payload *Payload) ResolveFull() *engine.ExecutionPayloadEnvelope { // terminates the background construction process. payload.cond.Wait() } - // Terminate the background payload construction - select { - case <-payload.stop: - default: - close(payload.stop) + + // Now we can signal the building routine to stop. + payload.stopBuilding() + + if payload.full != nil { + return engine.BlockToExecutableData(payload.full, payload.fullFees, payload.sidecars) + } else if !onlyFull && payload.empty != nil { + return engine.BlockToExecutableData(payload.empty, big.NewInt(0), nil) + } else if err := payload.err; err != nil { + log.Error("Error building any payload", "id", payload.id, "err", err) } - return engine.BlockToExecutableData(payload.full, payload.fullFees, payload.sidecars) + return nil +} + +// interruptBuilding sets an interrupt for a potentially ongoing +// block building process. +// This will prevent it from adding new transactions to the block, and if it is +// building an update, the block will also not be sealed, as we would discard +// the update anyways. +// interruptBuilding is safe to be called concurrently. +func (payload *Payload) interruptBuilding() { + // Set the interrupt if not interrupted already. + // It's ok if it has either already been interrupted by payload resolution earlier, + // or by the timeout timer set to commitInterruptTimeout. + if payload.interrupt.CompareAndSwap(commitInterruptNone, commitInterruptResolve) { + log.Debug("Interrupted payload building.", "id", payload.id) + } else { + log.Debug("Payload building already interrupted.", + "id", payload.id, "interrupt", payload.interrupt.Load()) + } +} + +// stopBuilding signals to the block updating routine to stop. An ongoing payload +// building job will still complete. It can be interrupted to stop filling new +// transactions with interruptBuilding. +// stopBuilding is safe to be called concurrently. +func (payload *Payload) stopBuilding() { + // Concurrent Resolve calls should only stop once. + payload.stopOnce.Do(func() { + log.Debug("Stop payload building.", "id", payload.id) + close(payload.stop) + }) } // buildPayload builds the payload according to the provided parameters. func (w *worker) buildPayload(args *BuildPayloadArgs) (*Payload, error) { - // Build the initial version with no transaction included. It should be fast - // enough to run. The empty payload can at least make sure there is something - // to deliver for not missing slot. - // In OP-Stack, the "empty" block is constructed from provided txs only, i.e. no tx-pool usage. - emptyParams := &generateParams{ + if args.NoTxPool { // don't start the background payload updating job if there is no tx pool to pull from + // Build the initial version with no transaction included. It should be fast + // enough to run. The empty payload can at least make sure there is something + // to deliver for not missing slot. + // In OP-Stack, the "empty" block is constructed from provided txs only, i.e. no tx-pool usage. + emptyParams := &generateParams{ + timestamp: args.Timestamp, + forceTime: true, + parentHash: args.Parent, + coinbase: args.FeeRecipient, + random: args.Random, + withdrawals: args.Withdrawals, + beaconRoot: args.BeaconRoot, + noTxs: true, + txs: args.Transactions, + gasLimit: args.GasLimit, + } + empty := w.getSealingBlock(emptyParams) + if empty.err != nil { + return nil, empty.err + } + payload := newPayload(empty.block, args.Id()) + // make sure to make it appear as full, otherwise it will wait indefinitely for payload building to complete. + payload.full = empty.block + payload.fullFees = empty.fees + payload.cond.Broadcast() // unblocks Resolve + return payload, nil + } + + fullParams := &generateParams{ timestamp: args.Timestamp, forceTime: true, parentHash: args.Parent, @@ -205,24 +290,22 @@ func (w *worker) buildPayload(args *BuildPayloadArgs) (*Payload, error) { random: args.Random, withdrawals: args.Withdrawals, beaconRoot: args.BeaconRoot, - noTxs: true, + noTxs: false, txs: args.Transactions, gasLimit: args.GasLimit, } - empty := w.getSealingBlock(emptyParams) - if empty.err != nil { - return nil, empty.err - } - // Construct a payload object for return. - payload := newPayload(empty.block, args.Id()) - if args.NoTxPool { // don't start the background payload updating job if there is no tx pool to pull from - // make sure to make it appear as full, otherwise it will wait indefinitely for payload building to complete. - payload.full = empty.block - payload.fullFees = empty.fees - return payload, nil + // Since we skip building the empty block when using the tx pool, we need to explicitly + // validate the BuildPayloadArgs here. + blockTime, err := w.validateParams(fullParams) + if err != nil { + return nil, err } + payload := newPayload(nil, args.Id()) + // set shared interrupt + fullParams.interrupt = payload.interrupt + // Spin up a routine for updating the payload in background. This strategy // can maximum the revenue for including transactions with highest fee. go func() { @@ -231,38 +314,59 @@ func (w *worker) buildPayload(args *BuildPayloadArgs) (*Payload, error) { timer := time.NewTimer(0) defer timer.Stop() - // Setup the timer for terminating the process if SECONDS_PER_SLOT (12s in - // the Mainnet configuration) have passed since the point in time identified - // by the timestamp parameter. - endTimer := time.NewTimer(time.Second * 12) + start := time.Now() + // Setup the timer for terminating the payload building process as determined + // by validateParams. + endTimer := time.NewTimer(blockTime) + defer endTimer.Stop() - fullParams := &generateParams{ - timestamp: args.Timestamp, - forceTime: true, - parentHash: args.Parent, - coinbase: args.FeeRecipient, - random: args.Random, - withdrawals: args.Withdrawals, - beaconRoot: args.BeaconRoot, - noTxs: false, - txs: args.Transactions, - gasLimit: args.GasLimit, + timeout := time.Now().Add(blockTime) + + stopReason := "delivery" + defer func() { + log.Info("Stopping work on payload", + "id", payload.id, + "reason", stopReason, + "elapsed", time.Since(start).Milliseconds()) + }() + + updatePayload := func() time.Duration { + start := time.Now() + // getSealingBlock is interrupted by shared interrupt + r := w.getSealingBlock(fullParams) + dur := time.Since(start) + // update handles error case + payload.update(r, dur) + if r.err == nil { + // after first successful pass, we're updating + fullParams.isUpdate = true + } + timer.Reset(w.recommit) + return dur } + var lastDuration time.Duration for { select { case <-timer.C: - start := time.Now() - r := w.getSealingBlock(fullParams) - if r.err == nil { - payload.update(r, time.Since(start)) + // We have to prioritize the stop signal because the recommit timer + // might have fired while stop also got closed. + select { + case <-payload.stop: + return + default: + } + // Assuming last payload building duration as lower bound for next one, + // skip new update if we're too close to the timeout anyways. + if lastDuration > 0 && time.Now().Add(lastDuration).After(timeout) { + stopReason = "near-timeout" + return } - timer.Reset(w.recommit) + lastDuration = updatePayload() case <-payload.stop: - log.Info("Stopping work on payload", "id", payload.id, "reason", "delivery") return case <-endTimer.C: - log.Info("Stopping work on payload", "id", payload.id, "reason", "timeout") + stopReason = "timeout" return } } diff --git a/miner/payload_building_test.go b/miner/payload_building_test.go index 6f57363441..d9208e7bc2 100644 --- a/miner/payload_building_test.go +++ b/miner/payload_building_test.go @@ -17,6 +17,7 @@ package miner import ( + "math/big" "reflect" "testing" "time" @@ -30,6 +31,14 @@ import ( ) func TestBuildPayload(t *testing.T) { + t.Run("no-tx-pool", func(t *testing.T) { testBuildPayload(t, true, false) }) + // no-tx-pool case with interrupt not interesting because no-tx-pool doesn't run + // the builder routine + t.Run("with-tx-pool", func(t *testing.T) { testBuildPayload(t, false, false) }) + t.Run("with-tx-pool-interrupt", func(t *testing.T) { testBuildPayload(t, false, true) }) +} + +func testBuildPayload(t *testing.T, noTxPool, interrupt bool) { var ( db = rawdb.NewMemoryDatabase() recipient = common.HexToAddress("0xdeadbeef") @@ -37,18 +46,33 @@ func TestBuildPayload(t *testing.T) { w, b := newTestWorker(t, params.TestChainConfig, ethash.NewFaker(), db, 0) defer w.close() + const numInterruptTxs = 256 + if interrupt { + // when doing interrupt testing, create a large pool so interruption will + // definitely be visible. + txs := genTxs(1, numInterruptTxs) + b.txPool.Add(txs, true, false) + } + timestamp := uint64(time.Now().Unix()) args := &BuildPayloadArgs{ Parent: b.chain.CurrentBlock().Hash(), Timestamp: timestamp, Random: common.Hash{}, FeeRecipient: recipient, + NoTxPool: noTxPool, } + // payload resolution now interrupts block building, so we have to + // wait for the payloading building process to build its first block payload, err := w.buildPayload(args) if err != nil { t.Fatalf("Failed to build payload %v", err) } verify := func(outer *engine.ExecutionPayloadEnvelope, txs int) { + t.Helper() + if outer == nil { + t.Fatal("ExecutionPayloadEnvelope is nil") + } payload := outer.ExecutionPayload if payload.ParentHash != b.chain.CurrentBlock().Hash() { t.Fatal("Unexpect parent hash") @@ -62,15 +86,27 @@ func TestBuildPayload(t *testing.T) { if payload.FeeRecipient != recipient { t.Fatal("Unexpect fee recipient") } - if len(payload.Transactions) != txs { - t.Fatal("Unexpect transaction set") + if !interrupt && len(payload.Transactions) != txs { + t.Fatalf("Unexpect transaction set: got %d, expected %d", len(payload.Transactions), txs) + } else if interrupt && len(payload.Transactions) >= txs { + t.Fatalf("Unexpect transaction set: got %d, expected less than %d", len(payload.Transactions), txs) } } - empty := payload.ResolveEmpty() - verify(empty, 0) - full := payload.ResolveFull() - verify(full, len(pendingTxs)) + if noTxPool { + // we only build the empty block when ignoring the tx pool + empty := payload.ResolveEmpty() + verify(empty, 0) + full := payload.ResolveFull() + verify(full, 0) + } else if interrupt { + full := payload.ResolveFull() + verify(full, len(pendingTxs)+numInterruptTxs) + } else { // tx-pool and no interrupt + payload.WaitFull() + full := payload.ResolveFull() + verify(full, len(pendingTxs)) + } // Ensure resolve can be called multiple times and the // result should be unchanged @@ -81,6 +117,22 @@ func TestBuildPayload(t *testing.T) { } } +func genTxs(startNonce, count uint64) types.Transactions { + txs := make(types.Transactions, 0, count) + signer := types.LatestSigner(params.TestChainConfig) + for nonce := startNonce; nonce < startNonce+count; nonce++ { + txs = append(txs, types.MustSignNewTx(testBankKey, signer, &types.AccessListTx{ + ChainID: params.TestChainConfig.ChainID, + Nonce: nonce, + To: &testUserAddress, + Value: big.NewInt(1000), + Gas: params.TxGas, + GasPrice: big.NewInt(params.InitialBaseFee), + })) + } + return txs +} + func TestPayloadId(t *testing.T) { ids := make(map[string]int) for i, tt := range []*BuildPayloadArgs{ diff --git a/miner/worker.go b/miner/worker.go index 4a73c1b1b6..87e1373192 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -80,6 +80,7 @@ var ( errBlockInterruptedByNewHead = errors.New("new head arrived while building block") errBlockInterruptedByRecommit = errors.New("recommit interrupt while building block") errBlockInterruptedByTimeout = errors.New("timeout while building block") + errBlockInterruptedByResolve = errors.New("payload resolution while building block") ) // environment is the worker's current environment and holds all @@ -144,6 +145,7 @@ const ( commitInterruptNewHead commitInterruptResubmit commitInterruptTimeout + commitInterruptResolve ) // newWorkReq represents a request for new sealing work submitting with relative interrupt notifier. @@ -937,8 +939,42 @@ type generateParams struct { beaconRoot *common.Hash // The beacon root (cancun field). noTxs bool // Flag whether an empty block without any transaction is expected - txs types.Transactions // Deposit transactions to include at the start of the block - gasLimit *uint64 // Optional gas limit override + txs types.Transactions // Deposit transactions to include at the start of the block + gasLimit *uint64 // Optional gas limit override + interrupt *atomic.Int32 // Optional interruption signal to pass down to worker.generateWork + isUpdate bool // Optional flag indicating that this is building a discardable update +} + +// validateParams validates the given parameters. +// It currently checks that the parent block is known and that the timestamp is valid, +// i.e., after the parent block's timestamp. +// It returns an upper bound of the payload building duration as computed +// by the difference in block timestamps between the parent and genParams. +func (w *worker) validateParams(genParams *generateParams) (time.Duration, error) { + w.mu.RLock() + defer w.mu.RUnlock() + + // Find the parent block for sealing task + parent := w.chain.CurrentBlock() + if genParams.parentHash != (common.Hash{}) { + block := w.chain.GetBlockByHash(genParams.parentHash) + if block == nil { + return 0, fmt.Errorf("missing parent %v", genParams.parentHash) + } + parent = block.Header() + } + + // Sanity check the timestamp correctness + blockTime := int64(genParams.timestamp) - int64(parent.Time) + if blockTime <= 0 && genParams.forceTime { + return 0, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, genParams.timestamp) + } + + // minimum payload build time of 2s + if blockTime < 2 { + blockTime = 2 + } + return time.Duration(blockTime) * time.Second, nil } // prepareWork constructs the sealing task according to the given parameters, @@ -1086,17 +1122,27 @@ func (w *worker) generateWork(genParams *generateParams) *newPayloadResult { // forced transactions done, fill rest of block with transactions if !genParams.noTxs { - interrupt := new(atomic.Int32) + // use shared interrupt if present + interrupt := genParams.interrupt + if interrupt == nil { + interrupt = new(atomic.Int32) + } timer := time.AfterFunc(w.newpayloadTimeout, func() { interrupt.Store(commitInterruptTimeout) }) - defer timer.Stop() err := w.fillTransactions(interrupt, work) + timer.Stop() // don't need timeout interruption any more if errors.Is(err, errBlockInterruptedByTimeout) { log.Warn("Block building is interrupted", "allowance", common.PrettyDuration(w.newpayloadTimeout)) + } else if errors.Is(err, errBlockInterruptedByResolve) { + log.Info("Block building got interrupted by payload resolution") } } + if intr := genParams.interrupt; intr != nil && genParams.isUpdate && intr.Load() != commitInterruptNone { + return &newPayloadResult{err: errInterruptedUpdate} + } + block, err := w.engine.FinalizeAndAssemble(w.chain, work.header, work.state, work.txs, nil, work.receipts, genParams.withdrawals) if err != nil { return &newPayloadResult{err: err} @@ -1264,6 +1310,8 @@ func signalToErr(signal int32) error { return errBlockInterruptedByRecommit case commitInterruptTimeout: return errBlockInterruptedByTimeout + case commitInterruptResolve: + return errBlockInterruptedByResolve default: panic(fmt.Errorf("undefined signal %d", signal)) } From 7124057bad16694d2b1f15dfe68a6109961b34ab Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 20 Dec 2023 07:56:41 +0100 Subject: [PATCH 151/223] internal/build: fix crash in MustRunCommandWithOutput (#28709) --- internal/build/util.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/internal/build/util.go b/internal/build/util.go index 17928118a0..82f9ba51a1 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -68,23 +68,18 @@ func MustRunCommand(cmd string, args ...string) { MustRun(exec.Command(cmd, args...)) } +// MustRunCommandWithOutput runs the given command, and ensures that some output will be +// printed while it runs. This is useful for CI builds where the process will be stopped +// when there is no output. func MustRunCommandWithOutput(cmd string, args ...string) { - var done chan bool - // This is a little loop to generate some output, so CI does not tear down the - // process after 300 seconds. + interval := time.NewTicker(time.Minute) + defer interval.Stop() go func() { - for i := 0; i < 15; i++ { + for range interval.C { fmt.Printf("Waiting for command %q\n", cmd) - select { - case <-time.After(time.Minute): - break - case <-done: - return - } } }() MustRun(exec.Command(cmd, args...)) - close(done) } var warnedAboutGit bool From d3452a22cc871306c62de52d19295914141863c0 Mon Sep 17 00:00:00 2001 From: Martin HS Date: Wed, 20 Dec 2023 13:41:40 +0100 Subject: [PATCH 152/223] accounts: properly close managed wallets when closing manager (#28710) --- accounts/manager.go | 3 +++ accounts/usbwallet/wallet.go | 4 ++++ cmd/clef/main.go | 1 + 3 files changed, 8 insertions(+) diff --git a/accounts/manager.go b/accounts/manager.go index a0b5c329cd..cbe4f7c79d 100644 --- a/accounts/manager.go +++ b/accounts/manager.go @@ -98,6 +98,9 @@ func NewManager(config *Config, backends ...Backend) *Manager { // Close terminates the account manager's internal notification processes. func (am *Manager) Close() error { + for _, w := range am.wallets { + w.Close() + } errc := make(chan error) am.quit <- errc return <-errc diff --git a/accounts/usbwallet/wallet.go b/accounts/usbwallet/wallet.go index 05add081ab..69083dc893 100644 --- a/accounts/usbwallet/wallet.go +++ b/accounts/usbwallet/wallet.go @@ -483,6 +483,10 @@ func (w *wallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Accoun w.stateLock.Lock() defer w.stateLock.Unlock() + if w.device == nil { + return accounts.Account{}, accounts.ErrWalletClosed + } + if _, ok := w.paths[address]; !ok { w.accounts = append(w.accounts, account) w.paths[address] = make(accounts.DerivationPath, len(path)) diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 2346991369..f9b00e4a12 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -704,6 +704,7 @@ func signer(c *cli.Context) error { log.Info("Starting signer", "chainid", chainId, "keystore", ksLoc, "light-kdf", lightKdf, "advanced", advanced) am := core.StartClefAccountManager(ksLoc, nousb, lightKdf, scpath) + defer am.Close() apiImpl := core.NewSignerAPI(am, chainId, nousb, ui, db, advanced, pwStorage) // Establish the bidirectional communication, by creating a new UI backend and registering From 8c2d455ccd216fb8589c15339392ce9640d8090d Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 20 Dec 2023 15:36:10 +0100 Subject: [PATCH 153/223] build: upgrade to golangci-lint v1.55.2 (#28712) This is primarily to make lint work again on macOS 14. The older version of golangci-lint kept crashing. Also included is a fix for a goroutine leak in the recently-introduced function MustRunCommandWithOutput. --- .golangci.yml | 4 --- build/checksums.txt | 57 ++++++++++++++++++++-------------------- internal/build/gotool.go | 1 - internal/build/util.go | 11 ++++++-- 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8a054667e6..0343c4b4eb 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -12,7 +12,6 @@ run: linters: disable-all: true enable: - - goconst - goimports - gosimple - govet @@ -39,9 +38,6 @@ linters: linters-settings: gofmt: simplify: true - goconst: - min-len: 3 # minimum length of string constant - min-occurrences: 6 # minimum number of occurrences issues: exclude-rules: diff --git a/build/checksums.txt b/build/checksums.txt index 8d735fdb3d..b9d322aa1a 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -22,35 +22,36 @@ e2bc0b3e4b64111ec117295c088bde5f00eeed1567999ff77bc859d7df70078e go1.21.5.linux bbe603cde7c9dee658f45164b4d06de1eff6e6e6b800100824e7c00d56a9a92f go1.21.5.windows-amd64.zip 9b7acca50e674294e43202df4fbc26d5af4d8bc3170a3342a1514f09a2dab5e9 go1.21.5.windows-arm64.zip -# version:golangci 1.51.1 +# version:golangci 1.55.2 # https://github.com/golangci/golangci-lint/releases/ -# https://github.com/golangci/golangci-lint/releases/download/v1.51.1/ -fba08acc4027f69f07cef48fbff70b8a7ecdfaa1c2aba9ad3fb31d60d9f5d4bc golangci-lint-1.51.1-darwin-amd64.tar.gz -75b8f0ff3a4e68147156be4161a49d4576f1be37a0b506473f8c482140c1e7f2 golangci-lint-1.51.1-darwin-arm64.tar.gz -e06b3459aaed356e1667580be00b05f41f3b2e29685d12cdee571c23e1edb414 golangci-lint-1.51.1-freebsd-386.tar.gz -623ce2d0fa4d35cc2e8d69fa7334227ab592380962a13b4d9cdc77cf41db2008 golangci-lint-1.51.1-freebsd-amd64.tar.gz -131365feb0584cc2736c43192fa673ca50e5b6b765456990cb379ecfb787e568 golangci-lint-1.51.1-freebsd-armv6.tar.gz -98fb627927cbb654f5bf85dcffc5f646666b2ce96ea0fed977c9fb28abd51532 golangci-lint-1.51.1-freebsd-armv7.tar.gz -b36a99702fa762c15840261bc0fb41b4b1b16b8b19b8c0941bae98c85bb0f8b8 golangci-lint-1.51.1-linux-386.tar.gz -17aeb26c76820c22efa0e1838b0ab93e90cfedef43fbfc9a2f33f27eb9e5e070 golangci-lint-1.51.1-linux-amd64.tar.gz -9744bc34e7b8d82ca788b667bfb7155a39b4be9aef43bf9f10318b1372cea338 golangci-lint-1.51.1-linux-arm64.tar.gz -0dda8dbeb2ff7455a044ec8e347f2fc6d655d2e99d281b3b95e88167031c673d golangci-lint-1.51.1-linux-armv6.tar.gz -0512f311b11d43b8b22989d929f0fe8a2e1e5ebe497f1eb0ff73a0fc3d188fd1 golangci-lint-1.51.1-linux-armv7.tar.gz -d767108dcf84a8eaa844df3454cb0f75a492f4e7102ecc2b0a3545cfe073a566 golangci-lint-1.51.1-linux-loong64.tar.gz -3bd56c54daec16585b2668e0dfabb27af2c2b38cc0fdb46923e2521e1634846b golangci-lint-1.51.1-linux-mips64.tar.gz -f72f5adfa2219e15d2414c9a2966f86e74556cf17a85c727a7fb7770a16cf814 golangci-lint-1.51.1-linux-mips64le.tar.gz -e605521dac98096d8737e1997c954f41f1d0d8275b8731f62783d410c23574b9 golangci-lint-1.51.1-linux-ppc64le.tar.gz -2f683217b814339e74d61ca700922d8407f15addd6d4c5e8b156fbab79f26a87 golangci-lint-1.51.1-linux-riscv64.tar.gz -d98528292b65971a3594e5880530e7624597dc9806fcfccdfbe39be411713d63 golangci-lint-1.51.1-linux-s390x.tar.gz -9bb2d0fe9e692ed0aea4f2537e3e6862b2f6768fe2849a84f4a6ad09da9fd971 golangci-lint-1.51.1-netbsd-386.tar.gz -34cafdcd11ae73ae88d66c33eb8449f5c976fc3e37b44774dbe9c71caa95e592 golangci-lint-1.51.1-netbsd-amd64.tar.gz -f8b4e1e47ac17caafe8a5f32f975a2b6a7cb14c27c0f73c1fb15c20ca91c2e03 golangci-lint-1.51.1-netbsd-armv6.tar.gz -c4f58b7e227b9fd41f0e9310dc83f4a4e7d026598e2f6e95b78761081a6d9bd2 golangci-lint-1.51.1-netbsd-armv7.tar.gz -6710e2f5375dc75521c1a17980a6cbbe6ff76c2f8b852964a8af558899a97cf5 golangci-lint-1.51.1-windows-386.zip -722d7b87b9cdda0a3835d5030b3fc5385c2eba4c107f63f6391cfb2ac35f051d golangci-lint-1.51.1-windows-amd64.zip -eb57f9bcb56646f2e3d6ccaf02ec227815fb05077b2e0b1bf9e755805acdc2b9 golangci-lint-1.51.1-windows-arm64.zip -bce02f7232723cb727755ee11f168a700a00896a25d37f87c4b173bce55596b4 golangci-lint-1.51.1-windows-armv6.zip -cf6403f84707ce8c98664736772271bc8874f2e760c2fd0f00cf3e85963507e9 golangci-lint-1.51.1-windows-armv7.zip +# https://github.com/golangci/golangci-lint/releases/download/v1.55.2/ +632e96e6d5294fbbe7b2c410a49c8fa01c60712a0af85a567de85bcc1623ea21 golangci-lint-1.55.2-darwin-amd64.tar.gz +234463f059249f82045824afdcdd5db5682d0593052f58f6a3039a0a1c3899f6 golangci-lint-1.55.2-darwin-arm64.tar.gz +2bdd105e2d4e003a9058c33a22bb191a1e0f30fa0790acca0d8fbffac1d6247c golangci-lint-1.55.2-freebsd-386.tar.gz +e75056e8b082386676ce23eba455cf893931a792c0d87e1e3743c0aec33c7fb5 golangci-lint-1.55.2-freebsd-amd64.tar.gz +5789b933facaf6136bd23f1d50add67b79bbcf8dfdfc9069a37f729395940a66 golangci-lint-1.55.2-freebsd-armv6.tar.gz +7f21ab1008d05f32c954f99470fc86a83a059e530fe2add1d0b7d8ed4d8992a7 golangci-lint-1.55.2-freebsd-armv7.tar.gz +33ab06139b9219a28251f10821da94423db30285cc2af97494cbb2a281927de9 golangci-lint-1.55.2-illumos-amd64.tar.gz +57ce6f8ce3ad6ee45d7cc3d9a047545a851c2547637834a3fcb086c7b40b1e6b golangci-lint-1.55.2-linux-386.tar.gz +ca21c961a33be3bc15e4292dc40c98c8dcc5463a7b6768a3afc123761630c09c golangci-lint-1.55.2-linux-amd64.tar.gz +8eb0cee9b1dbf0eaa49871798c7f8a5b35f2960c52d776a5f31eb7d886b92746 golangci-lint-1.55.2-linux-arm64.tar.gz +3195f3e0f37d353fd5bd415cabcd4e263f5c29d3d0ffb176c26ff3d2c75eb3bb golangci-lint-1.55.2-linux-armv6.tar.gz +c823ee36eb1a719e171de1f2f5ca3068033dce8d9817232fd10ed71fd6650406 golangci-lint-1.55.2-linux-armv7.tar.gz +758a5d2a356dc494bd13ed4c0d4bf5a54a4dc91267ea5ecdd87b86c7ca0624e7 golangci-lint-1.55.2-linux-loong64.tar.gz +2c7b9abdce7cae802a67d583cd7c6dca520bff6d0e17c8535a918e2f2b437aa0 golangci-lint-1.55.2-linux-mips64.tar.gz +024e0a15b85352cc27271285526e16a4ab66d3e67afbbe446c9808c06cb8dbed golangci-lint-1.55.2-linux-mips64le.tar.gz +6b00f89ba5506c1de1efdd9fa17c54093013a294fefd8b9b31534db626a672ee golangci-lint-1.55.2-linux-ppc64le.tar.gz +0faa0d047d9bf7b703ed3ea65b6117043c93504f9ca1de25ae929d3901c73d4a golangci-lint-1.55.2-linux-riscv64.tar.gz +30dec9b22e7d5bb4e9d5ccea96da20f71cd7db3c8cf30b8ddc7cb9174c4d742a golangci-lint-1.55.2-linux-s390x.tar.gz +5a0ede48f79ad707902fdb29be8cd2abd8302dc122b65ebae3fdfc86751c7698 golangci-lint-1.55.2-netbsd-386.tar.gz +95af20a2e617126dd5b08122ece7819101070e1582a961067ce8c41172f901ad golangci-lint-1.55.2-netbsd-amd64.tar.gz +94fb7dacb7527847cc95d7120904e19a2a0a81a0d50d61766c9e0251da72ab9d golangci-lint-1.55.2-netbsd-armv6.tar.gz +ca906bce5fee9619400e4a321c56476fe4a4efb6ac4fc989d340eb5563348873 golangci-lint-1.55.2-netbsd-armv7.tar.gz +45b442f69fc8915c4500201c0247b7f3f69544dbc9165403a61f9095f2c57355 golangci-lint-1.55.2-windows-386.zip +f57d434d231d43417dfa631587522f8c1991220b43c8ffadb9c7bd279508bf81 golangci-lint-1.55.2-windows-amd64.zip +fd7dc8f4c6829ee6fafb252a4d81d2155cd35da7833665cbb25d53ce7cecd990 golangci-lint-1.55.2-windows-arm64.zip +1892c3c24f9e7ef44b02f6750c703864b6dc350129f3ec39510300007b2376f1 golangci-lint-1.55.2-windows-armv6.zip +a5e68ae73d38748b5269fad36ac7575e3c162a5dc63ef58abdea03cc5da4522a golangci-lint-1.55.2-windows-armv7.zip # This is the builder on PPA that will build Go itself (inception-y), don't modify! # diff --git a/internal/build/gotool.go b/internal/build/gotool.go index 32ca20e869..2a47460418 100644 --- a/internal/build/gotool.go +++ b/internal/build/gotool.go @@ -144,7 +144,6 @@ func Version(csdb *ChecksumDB, version string) (string, error) { continue } if parts[0] == version { - log.Printf("Found version %q", parts[1]) return parts[1], nil } } diff --git a/internal/build/util.go b/internal/build/util.go index 82f9ba51a1..b41014a16f 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -73,10 +73,17 @@ func MustRunCommand(cmd string, args ...string) { // when there is no output. func MustRunCommandWithOutput(cmd string, args ...string) { interval := time.NewTicker(time.Minute) + done := make(chan struct{}) defer interval.Stop() + defer close(done) go func() { - for range interval.C { - fmt.Printf("Waiting for command %q\n", cmd) + for { + select { + case <-interval.C: + fmt.Printf("Waiting for command %q\n", cmd) + case <-done: + return + } } }() MustRun(exec.Command(cmd, args...)) From 577be37e0e7a69564224e0a15e49d648ed461ac5 Mon Sep 17 00:00:00 2001 From: lightclient <14004106+lightclient@users.noreply.github.com> Date: Wed, 20 Dec 2023 09:23:48 -0700 Subject: [PATCH 154/223] cmd/devp2p: update eth/snap protocol test suites for PoS (#28340) Here we update the eth and snap protocol test suites with a new test chain, created by the hivechain tool. The new test chain uses proof-of-stake. As such, tests using PoW block propagation in the eth protocol are removed. The test suite now connects to the node under test using the engine API in order to make it accept transactions. The snap protocol test suite has been rewritten to output test descriptions and log requests more verbosely. --------- Co-authored-by: Felix Lange --- cmd/devp2p/README.md | 45 +- cmd/devp2p/internal/ethtest/chain.go | 262 +- cmd/devp2p/internal/ethtest/chain_test.go | 22 +- cmd/devp2p/internal/ethtest/conn.go | 361 + cmd/devp2p/internal/ethtest/engine.go | 69 + cmd/devp2p/internal/ethtest/helpers.go | 650 - cmd/devp2p/internal/ethtest/large.go | 80 - cmd/devp2p/internal/ethtest/mkchain.sh | 9 + cmd/devp2p/internal/ethtest/protocol.go | 87 + cmd/devp2p/internal/ethtest/snap.go | 735 +- cmd/devp2p/internal/ethtest/snapTypes.go | 60 - cmd/devp2p/internal/ethtest/suite.go | 766 +- cmd/devp2p/internal/ethtest/suite_test.go | 61 +- .../internal/ethtest/testdata/accounts.json | 62 + .../internal/ethtest/testdata/chain.rlp | Bin 1585630 -> 341951 bytes .../internal/ethtest/testdata/forkenv.json | 20 + .../internal/ethtest/testdata/genesis.json | 137 +- .../internal/ethtest/testdata/halfchain.rlp | Bin 527009 -> 0 bytes .../internal/ethtest/testdata/headblock.json | 23 + .../internal/ethtest/testdata/headfcu.json | 13 + .../internal/ethtest/testdata/headstate.json | 4204 +++++ .../internal/ethtest/testdata/newpayload.json | 13268 ++++++++++++++++ .../internal/ethtest/testdata/txinfo.json | 3018 ++++ cmd/devp2p/internal/ethtest/transaction.go | 462 +- cmd/devp2p/internal/ethtest/types.go | 291 - cmd/devp2p/rlpxcmd.go | 63 +- cmd/devp2p/runtest.go | 49 +- core/rawdb/chain_freezer.go | 2 +- core/txpool/legacypool/legacypool.go | 1 + internal/flags/categories.go | 1 + 30 files changed, 22738 insertions(+), 2083 deletions(-) create mode 100644 cmd/devp2p/internal/ethtest/conn.go create mode 100644 cmd/devp2p/internal/ethtest/engine.go delete mode 100644 cmd/devp2p/internal/ethtest/helpers.go delete mode 100644 cmd/devp2p/internal/ethtest/large.go create mode 100644 cmd/devp2p/internal/ethtest/mkchain.sh create mode 100644 cmd/devp2p/internal/ethtest/protocol.go delete mode 100644 cmd/devp2p/internal/ethtest/snapTypes.go create mode 100644 cmd/devp2p/internal/ethtest/testdata/accounts.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/forkenv.json delete mode 100644 cmd/devp2p/internal/ethtest/testdata/halfchain.rlp create mode 100644 cmd/devp2p/internal/ethtest/testdata/headblock.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/headfcu.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/headstate.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/newpayload.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/txinfo.json delete mode 100644 cmd/devp2p/internal/ethtest/types.go diff --git a/cmd/devp2p/README.md b/cmd/devp2p/README.md index 5ca7b497a2..284dfe0a45 100644 --- a/cmd/devp2p/README.md +++ b/cmd/devp2p/README.md @@ -108,31 +108,32 @@ Start the test by running `devp2p discv5 test -listen1 127.0.0.1 -listen2 127.0. The Eth Protocol test suite is a conformance test suite for the [eth protocol][eth]. -To run the eth protocol test suite against your implementation, the node needs to be initialized as such: - -1. initialize the geth node with the `genesis.json` file contained in the `testdata` directory -2. import the `halfchain.rlp` file in the `testdata` directory -3. run geth with the following flags: -``` -geth --datadir --nodiscover --nat=none --networkid 19763 --verbosity 5 -``` - -Then, run the following command, replacing `` with the enode of the geth node: - ``` - devp2p rlpx eth-test cmd/devp2p/internal/ethtest/testdata/chain.rlp cmd/devp2p/internal/ethtest/testdata/genesis.json -``` +To run the eth protocol test suite against your implementation, the node needs to be initialized +with our test chain. The chain files are located in `./cmd/devp2p/internal/ethtest/testdata`. + +1. initialize the geth node with the `genesis.json` file +2. import blocks from `chain.rlp` +3. run the client using the resulting database. For geth, use a command like the one below: + + geth \ + --datadir \ + --nodiscover \ + --nat=none \ + --networkid 3503995874084926 \ + --verbosity 5 \ + --authrpc.jwtsecret 0x7365637265747365637265747365637265747365637265747365637265747365 + +Note that the tests also require access to the engine API. +The test suite can now be executed using the devp2p tool. + + devp2p rlpx eth-test \ + --chain internal/ethtest/testdata \ + --node enode://.... \ + --engineapi http://127.0.0.1:8551 \ + --jwtsecret 0x7365637265747365637265747365637265747365637265747365637265747365 Repeat the above process (re-initialising the node) in order to run the Eth Protocol test suite again. -#### Eth66 Test Suite - -The Eth66 test suite is also a conformance test suite for the eth 66 protocol version specifically. -To run the eth66 protocol test suite, initialize a geth node as described above and run the following command, -replacing `` with the enode of the geth node: - - ``` - devp2p rlpx eth66-test cmd/devp2p/internal/ethtest/testdata/chain.rlp cmd/devp2p/internal/ethtest/testdata/genesis.json -``` [eth]: https://github.com/ethereum/devp2p/blob/master/caps/eth.md [dns-tutorial]: https://geth.ethereum.org/docs/developers/geth-developer/dns-discovery-setup diff --git a/cmd/devp2p/internal/ethtest/chain.go b/cmd/devp2p/internal/ethtest/chain.go index 938159ec52..e8b3725b17 100644 --- a/cmd/devp2p/internal/ethtest/chain.go +++ b/cmd/devp2p/internal/ethtest/chain.go @@ -17,27 +17,118 @@ package ethtest import ( + "bytes" "compress/gzip" + "crypto/ecdsa" "encoding/json" "errors" "fmt" "io" "math/big" "os" + "path" + "sort" "strings" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/forkid" + "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" + "golang.org/x/exp/slices" ) +// Chain is a lightweight blockchain-like store which can read a hivechain +// created chain. type Chain struct { - genesis core.Genesis - blocks []*types.Block - chainConfig *params.ChainConfig + genesis core.Genesis + blocks []*types.Block + state map[common.Address]state.DumpAccount // state of head block + senders map[common.Address]*senderInfo + config *params.ChainConfig +} + +// NewChain takes the given chain.rlp file, and decodes and returns +// the blocks from the file. +func NewChain(dir string) (*Chain, error) { + gen, err := loadGenesis(path.Join(dir, "genesis.json")) + if err != nil { + return nil, err + } + gblock := gen.ToBlock() + + blocks, err := blocksFromFile(path.Join(dir, "chain.rlp"), gblock) + if err != nil { + return nil, err + } + state, err := readState(path.Join(dir, "headstate.json")) + if err != nil { + return nil, err + } + accounts, err := readAccounts(path.Join(dir, "accounts.json")) + if err != nil { + return nil, err + } + return &Chain{ + genesis: gen, + blocks: blocks, + state: state, + senders: accounts, + config: gen.Config, + }, nil +} + +// senderInfo is an account record as output in the "accounts.json" file from +// hivechain. +type senderInfo struct { + Key *ecdsa.PrivateKey `json:"key"` + Nonce uint64 `json:"nonce"` +} + +// Head returns the chain head. +func (c *Chain) Head() *types.Block { + return c.blocks[c.Len()-1] +} + +// AccountsInHashOrder returns all accounts of the head state, ordered by hash of address. +func (c *Chain) AccountsInHashOrder() []state.DumpAccount { + list := make([]state.DumpAccount, len(c.state)) + i := 0 + for addr, acc := range c.state { + addr := addr + list[i] = acc + list[i].Address = &addr + if len(acc.AddressHash) != 32 { + panic(fmt.Errorf("missing/invalid SecureKey in dump account %v", addr)) + } + i++ + } + slices.SortFunc(list, func(x, y state.DumpAccount) int { + return bytes.Compare(x.AddressHash, y.AddressHash) + }) + return list +} + +// CodeHashes returns all bytecode hashes contained in the head state. +func (c *Chain) CodeHashes() []common.Hash { + var hashes []common.Hash + seen := make(map[common.Hash]struct{}) + seen[types.EmptyCodeHash] = struct{}{} + for _, acc := range c.state { + h := common.BytesToHash(acc.CodeHash) + if _, ok := seen[h]; ok { + continue + } + hashes = append(hashes, h) + seen[h] = struct{}{} + } + slices.SortFunc(hashes, (common.Hash).Cmp) + return hashes } // Len returns the length of the chain. @@ -45,6 +136,11 @@ func (c *Chain) Len() int { return len(c.blocks) } +// ForkID gets the fork id of the chain. +func (c *Chain) ForkID() forkid.ID { + return forkid.NewID(c.config, c.blocks[0], uint64(c.Len()), c.blocks[c.Len()-1].Time()) +} + // TD calculates the total difficulty of the chain at the // chain head. func (c *Chain) TD() *big.Int { @@ -55,19 +151,12 @@ func (c *Chain) TD() *big.Int { return sum } -// TotalDifficultyAt calculates the total difficulty of the chain -// at the given block height. -func (c *Chain) TotalDifficultyAt(height int) *big.Int { - sum := new(big.Int) - if height >= c.Len() { - return sum - } - for _, block := range c.blocks[:height+1] { - sum.Add(sum, block.Difficulty()) - } - return sum +// GetBlock returns the block at the specified number. +func (c *Chain) GetBlock(number int) *types.Block { + return c.blocks[number] } +// RootAt returns the state root for the block at the given height. func (c *Chain) RootAt(height int) common.Hash { if height < c.Len() { return c.blocks[height].Root() @@ -75,37 +164,56 @@ func (c *Chain) RootAt(height int) common.Hash { return common.Hash{} } -// ForkID gets the fork id of the chain. -func (c *Chain) ForkID() forkid.ID { - return forkid.NewID(c.chainConfig, c.blocks[0], uint64(c.Len()), c.blocks[0].Time()) +// GetSender returns the address associated with account at the index in the +// pre-funded accounts list. +func (c *Chain) GetSender(idx int) (common.Address, uint64) { + var accounts Addresses + for addr := range c.senders { + accounts = append(accounts, addr) + } + sort.Sort(accounts) + addr := accounts[idx] + return addr, c.senders[addr].Nonce } -// Shorten returns a copy chain of a desired height from the imported -func (c *Chain) Shorten(height int) *Chain { - blocks := make([]*types.Block, height) - copy(blocks, c.blocks[:height]) +// IncNonce increases the specified signing account's pending nonce. +func (c *Chain) IncNonce(addr common.Address, amt uint64) { + if _, ok := c.senders[addr]; !ok { + panic("nonce increment for non-signer") + } + c.senders[addr].Nonce += amt +} - config := *c.chainConfig - return &Chain{ - blocks: blocks, - chainConfig: &config, +// Balance returns the balance of an account at the head of the chain. +func (c *Chain) Balance(addr common.Address) *big.Int { + bal := new(big.Int) + if acc, ok := c.state[addr]; ok { + bal, _ = bal.SetString(acc.Balance, 10) } + return bal } -// Head returns the chain head. -func (c *Chain) Head() *types.Block { - return c.blocks[c.Len()-1] +// SignTx signs a transaction for the specified from account, so long as that +// account was in the hivechain accounts dump. +func (c *Chain) SignTx(from common.Address, tx *types.Transaction) (*types.Transaction, error) { + signer := types.LatestSigner(c.config) + acc, ok := c.senders[from] + if !ok { + return nil, fmt.Errorf("account not available for signing: %s", from) + } + return types.SignTx(tx, signer, acc.Key) } -func (c *Chain) GetHeaders(req *GetBlockHeaders) ([]*types.Header, error) { +// GetHeaders returns the headers base on an ethGetPacketHeadersPacket. +func (c *Chain) GetHeaders(req *eth.GetBlockHeadersPacket) ([]*types.Header, error) { if req.Amount < 1 { return nil, errors.New("no block headers requested") } - - headers := make([]*types.Header, req.Amount) - var blockNumber uint64 - - // range over blocks to check if our chain has the requested header + var ( + headers = make([]*types.Header, req.Amount) + blockNumber uint64 + ) + // Range over blocks to check if our chain has the requested header. for _, block := range c.blocks { if block.Hash() == req.Origin.Hash || block.Number().Uint64() == req.Origin.Number { headers[0] = block.Header() @@ -115,40 +223,30 @@ func (c *Chain) GetHeaders(req *GetBlockHeaders) ([]*types.Header, error) { if headers[0] == nil { return nil, fmt.Errorf("no headers found for given origin number %v, hash %v", req.Origin.Number, req.Origin.Hash) } - if req.Reverse { for i := 1; i < int(req.Amount); i++ { blockNumber -= (1 - req.Skip) headers[i] = c.blocks[blockNumber].Header() } - return headers, nil } - for i := 1; i < int(req.Amount); i++ { blockNumber += (1 + req.Skip) headers[i] = c.blocks[blockNumber].Header() } - return headers, nil } -// loadChain takes the given chain.rlp file, and decodes and returns -// the blocks from the file. -func loadChain(chainfile string, genesis string) (*Chain, error) { - gen, err := loadGenesis(genesis) - if err != nil { - return nil, err - } - gblock := gen.ToBlock() +// Shorten returns a copy chain of a desired height from the imported +func (c *Chain) Shorten(height int) *Chain { + blocks := make([]*types.Block, height) + copy(blocks, c.blocks[:height]) - blocks, err := blocksFromFile(chainfile, gblock) - if err != nil { - return nil, err + config := *c.config + return &Chain{ + blocks: blocks, + config: &config, } - - c := &Chain{genesis: gen, blocks: blocks, chainConfig: gen.Config} - return c, nil } func loadGenesis(genesisFile string) (core.Genesis, error) { @@ -163,6 +261,22 @@ func loadGenesis(genesisFile string) (core.Genesis, error) { return gen, nil } +type Addresses []common.Address + +func (a Addresses) Len() int { + return len(a) +} + +func (a Addresses) Less(i, j int) bool { + return bytes.Compare(a[i][:], a[j][:]) < 0 +} + +func (a Addresses) Swap(i, j int) { + tmp := a[i] + a[i] = a[j] + a[j] = tmp +} + func blocksFromFile(chainfile string, gblock *types.Block) ([]*types.Block, error) { // Load chain.rlp. fh, err := os.Open(chainfile) @@ -193,3 +307,47 @@ func blocksFromFile(chainfile string, gblock *types.Block) ([]*types.Block, erro } return blocks, nil } + +func readState(file string) (map[common.Address]state.DumpAccount, error) { + f, err := os.ReadFile(file) + if err != nil { + return nil, fmt.Errorf("unable to read state: %v", err) + } + var dump state.Dump + if err := json.Unmarshal(f, &dump); err != nil { + return nil, fmt.Errorf("unable to unmarshal state: %v", err) + } + + state := make(map[common.Address]state.DumpAccount) + for key, acct := range dump.Accounts { + var addr common.Address + if err := addr.UnmarshalText([]byte(key)); err != nil { + return nil, fmt.Errorf("invalid address %q", key) + } + state[addr] = acct + } + return state, nil +} + +func readAccounts(file string) (map[common.Address]*senderInfo, error) { + f, err := os.ReadFile(file) + if err != nil { + return nil, fmt.Errorf("unable to read state: %v", err) + } + type account struct { + Key hexutil.Bytes `json:"key"` + } + keys := make(map[common.Address]account) + if err := json.Unmarshal(f, &keys); err != nil { + return nil, fmt.Errorf("unable to unmarshal accounts: %v", err) + } + accounts := make(map[common.Address]*senderInfo) + for addr, acc := range keys { + pk, err := crypto.HexToECDSA(common.Bytes2Hex(acc.Key)) + if err != nil { + return nil, fmt.Errorf("unable to read private key for %s: %v", err, addr) + } + accounts[addr] = &senderInfo{Key: pk, Nonce: 0} + } + return accounts, nil +} diff --git a/cmd/devp2p/internal/ethtest/chain_test.go b/cmd/devp2p/internal/ethtest/chain_test.go index a3c7187f5d..62bd6d26ea 100644 --- a/cmd/devp2p/internal/ethtest/chain_test.go +++ b/cmd/devp2p/internal/ethtest/chain_test.go @@ -123,30 +123,26 @@ func TestEthProtocolNegotiation(t *testing.T) { } } -// TestChain_GetHeaders tests whether the test suite can correctly +// TestChainGetHeaders tests whether the test suite can correctly // respond to a GetBlockHeaders request from a node. -func TestChain_GetHeaders(t *testing.T) { +func TestChainGetHeaders(t *testing.T) { t.Parallel() - chainFile, err := filepath.Abs("./testdata/chain.rlp") - if err != nil { - t.Fatal(err) - } - genesisFile, err := filepath.Abs("./testdata/genesis.json") + + dir, err := filepath.Abs("./testdata") if err != nil { t.Fatal(err) } - - chain, err := loadChain(chainFile, genesisFile) + chain, err := NewChain(dir) if err != nil { t.Fatal(err) } var tests = []struct { - req GetBlockHeaders + req eth.GetBlockHeadersPacket expected []*types.Header }{ { - req: GetBlockHeaders{ + req: eth.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Number: uint64(2)}, Amount: uint64(5), @@ -163,7 +159,7 @@ func TestChain_GetHeaders(t *testing.T) { }, }, { - req: GetBlockHeaders{ + req: eth.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Number: uint64(chain.Len() - 1)}, Amount: uint64(3), @@ -178,7 +174,7 @@ func TestChain_GetHeaders(t *testing.T) { }, }, { - req: GetBlockHeaders{ + req: eth.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Hash: chain.Head().Hash()}, Amount: uint64(1), diff --git a/cmd/devp2p/internal/ethtest/conn.go b/cmd/devp2p/internal/ethtest/conn.go new file mode 100644 index 0000000000..2d36ccb423 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/conn.go @@ -0,0 +1,361 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . + +package ethtest + +import ( + "crypto/ecdsa" + "errors" + "fmt" + "net" + "reflect" + "time" + + "github.com/davecgh/go-spew/spew" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/eth/protocols/snap" + "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/p2p/rlpx" + "github.com/ethereum/go-ethereum/rlp" +) + +var ( + pretty = spew.ConfigState{ + Indent: " ", + DisableCapacities: true, + DisablePointerAddresses: true, + SortKeys: true, + } + timeout = 2 * time.Second +) + +// dial attempts to dial the given node and perform a handshake, returning the +// created Conn if successful. +func (s *Suite) dial() (*Conn, error) { + key, _ := crypto.GenerateKey() + return s.dialAs(key) +} + +// dialAs attempts to dial a given node and perform a handshake using the given +// private key. +func (s *Suite) dialAs(key *ecdsa.PrivateKey) (*Conn, error) { + fd, err := net.Dial("tcp", fmt.Sprintf("%v:%d", s.Dest.IP(), s.Dest.TCP())) + if err != nil { + return nil, err + } + conn := Conn{Conn: rlpx.NewConn(fd, s.Dest.Pubkey())} + conn.ourKey = key + _, err = conn.Handshake(conn.ourKey) + if err != nil { + conn.Close() + return nil, err + } + conn.caps = []p2p.Cap{ + {Name: "eth", Version: 67}, + {Name: "eth", Version: 68}, + } + conn.ourHighestProtoVersion = 68 + return &conn, nil +} + +// dialSnap creates a connection with snap/1 capability. +func (s *Suite) dialSnap() (*Conn, error) { + conn, err := s.dial() + if err != nil { + return nil, fmt.Errorf("dial failed: %v", err) + } + conn.caps = append(conn.caps, p2p.Cap{Name: "snap", Version: 1}) + conn.ourHighestSnapProtoVersion = 1 + return conn, nil +} + +// Conn represents an individual connection with a peer +type Conn struct { + *rlpx.Conn + ourKey *ecdsa.PrivateKey + negotiatedProtoVersion uint + negotiatedSnapProtoVersion uint + ourHighestProtoVersion uint + ourHighestSnapProtoVersion uint + caps []p2p.Cap +} + +// Read reads a packet from the connection. +func (c *Conn) Read() (uint64, []byte, error) { + c.SetReadDeadline(time.Now().Add(timeout)) + code, data, _, err := c.Conn.Read() + if err != nil { + return 0, nil, err + } + return code, data, nil +} + +// ReadMsg attempts to read a devp2p message with a specific code. +func (c *Conn) ReadMsg(proto Proto, code uint64, msg any) error { + c.SetReadDeadline(time.Now().Add(timeout)) + for { + got, data, err := c.Read() + if err != nil { + return err + } + if protoOffset(proto)+code == got { + return rlp.DecodeBytes(data, msg) + } + } +} + +// Write writes a eth packet to the connection. +func (c *Conn) Write(proto Proto, code uint64, msg any) error { + c.SetWriteDeadline(time.Now().Add(timeout)) + payload, err := rlp.EncodeToBytes(msg) + if err != nil { + return err + } + _, err = c.Conn.Write(protoOffset(proto)+code, payload) + return err +} + +// ReadEth reads an Eth sub-protocol wire message. +func (c *Conn) ReadEth() (any, error) { + c.SetReadDeadline(time.Now().Add(timeout)) + for { + code, data, _, err := c.Conn.Read() + if err != nil { + return nil, err + } + if code == pingMsg { + c.Write(baseProto, pongMsg, []byte{}) + continue + } + if getProto(code) != ethProto { + // Read until eth message. + continue + } + code -= baseProtoLen + + var msg any + switch int(code) { + case eth.StatusMsg: + msg = new(eth.StatusPacket) + case eth.GetBlockHeadersMsg: + msg = new(eth.GetBlockHeadersPacket) + case eth.BlockHeadersMsg: + msg = new(eth.BlockHeadersPacket) + case eth.GetBlockBodiesMsg: + msg = new(eth.GetBlockBodiesPacket) + case eth.BlockBodiesMsg: + msg = new(eth.BlockBodiesPacket) + case eth.NewBlockMsg: + msg = new(eth.NewBlockPacket) + case eth.NewBlockHashesMsg: + msg = new(eth.NewBlockHashesPacket) + case eth.TransactionsMsg: + msg = new(eth.TransactionsPacket) + case eth.NewPooledTransactionHashesMsg: + msg = new(eth.NewPooledTransactionHashesPacket68) + case eth.GetPooledTransactionsMsg: + msg = new(eth.GetPooledTransactionsPacket) + case eth.PooledTransactionsMsg: + msg = new(eth.PooledTransactionsPacket) + default: + panic(fmt.Sprintf("unhandled eth msg code %d", code)) + } + if err := rlp.DecodeBytes(data, msg); err != nil { + return nil, fmt.Errorf("unable to decode eth msg: %v", err) + } + return msg, nil + } +} + +// ReadSnap reads a snap/1 response with the given id from the connection. +func (c *Conn) ReadSnap() (any, error) { + c.SetReadDeadline(time.Now().Add(timeout)) + for { + code, data, _, err := c.Conn.Read() + if err != nil { + return nil, err + } + if getProto(code) != snapProto { + // Read until snap message. + continue + } + code -= baseProtoLen + ethProtoLen + + var msg any + switch int(code) { + case snap.GetAccountRangeMsg: + msg = new(snap.GetAccountRangePacket) + case snap.AccountRangeMsg: + msg = new(snap.AccountRangePacket) + case snap.GetStorageRangesMsg: + msg = new(snap.GetStorageRangesPacket) + case snap.StorageRangesMsg: + msg = new(snap.StorageRangesPacket) + case snap.GetByteCodesMsg: + msg = new(snap.GetByteCodesPacket) + case snap.ByteCodesMsg: + msg = new(snap.ByteCodesPacket) + case snap.GetTrieNodesMsg: + msg = new(snap.GetTrieNodesPacket) + case snap.TrieNodesMsg: + msg = new(snap.TrieNodesPacket) + default: + panic(fmt.Errorf("unhandled snap code: %d", code)) + } + if err := rlp.DecodeBytes(data, msg); err != nil { + return nil, fmt.Errorf("could not rlp decode message: %v", err) + } + return msg, nil + } +} + +// peer performs both the protocol handshake and the status message +// exchange with the node in order to peer with it. +func (c *Conn) peer(chain *Chain, status *eth.StatusPacket) error { + if err := c.handshake(); err != nil { + return fmt.Errorf("handshake failed: %v", err) + } + if err := c.statusExchange(chain, status); err != nil { + return fmt.Errorf("status exchange failed: %v", err) + } + return nil +} + +// handshake performs a protocol handshake with the node. +func (c *Conn) handshake() error { + // Write hello to client. + pub0 := crypto.FromECDSAPub(&c.ourKey.PublicKey)[1:] + ourHandshake := &protoHandshake{ + Version: 5, + Caps: c.caps, + ID: pub0, + } + if err := c.Write(baseProto, handshakeMsg, ourHandshake); err != nil { + return fmt.Errorf("write to connection failed: %v", err) + } + // Read hello from client. + code, data, err := c.Read() + if err != nil { + return fmt.Errorf("erroring reading handshake: %v", err) + } + switch code { + case handshakeMsg: + msg := new(protoHandshake) + if err := rlp.DecodeBytes(data, &msg); err != nil { + return fmt.Errorf("error decoding handshake msg: %v", err) + } + // Set snappy if version is at least 5. + if msg.Version >= 5 { + c.SetSnappy(true) + } + c.negotiateEthProtocol(msg.Caps) + if c.negotiatedProtoVersion == 0 { + return fmt.Errorf("could not negotiate eth protocol (remote caps: %v, local eth version: %v)", msg.Caps, c.ourHighestProtoVersion) + } + // If we require snap, verify that it was negotiated. + if c.ourHighestSnapProtoVersion != c.negotiatedSnapProtoVersion { + return fmt.Errorf("could not negotiate snap protocol (remote caps: %v, local snap version: %v)", msg.Caps, c.ourHighestSnapProtoVersion) + } + return nil + default: + return fmt.Errorf("bad handshake: got msg code %d", code) + } +} + +// negotiateEthProtocol sets the Conn's eth protocol version to highest +// advertised capability from peer. +func (c *Conn) negotiateEthProtocol(caps []p2p.Cap) { + var highestEthVersion uint + var highestSnapVersion uint + for _, capability := range caps { + switch capability.Name { + case "eth": + if capability.Version > highestEthVersion && capability.Version <= c.ourHighestProtoVersion { + highestEthVersion = capability.Version + } + case "snap": + if capability.Version > highestSnapVersion && capability.Version <= c.ourHighestSnapProtoVersion { + highestSnapVersion = capability.Version + } + } + } + c.negotiatedProtoVersion = highestEthVersion + c.negotiatedSnapProtoVersion = highestSnapVersion +} + +// statusExchange performs a `Status` message exchange with the given node. +func (c *Conn) statusExchange(chain *Chain, status *eth.StatusPacket) error { +loop: + for { + code, data, err := c.Read() + if err != nil { + return fmt.Errorf("failed to read from connection: %w", err) + } + switch code { + case eth.StatusMsg + protoOffset(ethProto): + msg := new(eth.StatusPacket) + if err := rlp.DecodeBytes(data, &msg); err != nil { + return fmt.Errorf("error decoding status packet: %w", err) + } + if have, want := msg.Head, chain.blocks[chain.Len()-1].Hash(); have != want { + return fmt.Errorf("wrong head block in status, want: %#x (block %d) have %#x", + want, chain.blocks[chain.Len()-1].NumberU64(), have) + } + if have, want := msg.TD.Cmp(chain.TD()), 0; have != want { + return fmt.Errorf("wrong TD in status: have %v want %v", have, want) + } + if have, want := msg.ForkID, chain.ForkID(); !reflect.DeepEqual(have, want) { + return fmt.Errorf("wrong fork ID in status: have %v, want %v", have, want) + } + if have, want := msg.ProtocolVersion, c.ourHighestProtoVersion; have != uint32(want) { + return fmt.Errorf("wrong protocol version: have %v, want %v", have, want) + } + break loop + case discMsg: + var msg []p2p.DiscReason + if rlp.DecodeBytes(data, &msg); len(msg) == 0 { + return errors.New("invalid disconnect message") + } + return fmt.Errorf("disconnect received: %v", pretty.Sdump(msg)) + case pingMsg: + // TODO (renaynay): in the future, this should be an error + // (PINGs should not be a response upon fresh connection) + c.Write(baseProto, pongMsg, nil) + default: + return fmt.Errorf("bad status message: code %d", code) + } + } + // make sure eth protocol version is set for negotiation + if c.negotiatedProtoVersion == 0 { + return errors.New("eth protocol version must be set in Conn") + } + if status == nil { + // default status message + status = ð.StatusPacket{ + ProtocolVersion: uint32(c.negotiatedProtoVersion), + NetworkID: chain.config.ChainID.Uint64(), + TD: chain.TD(), + Head: chain.blocks[chain.Len()-1].Hash(), + Genesis: chain.blocks[0].Hash(), + ForkID: chain.ForkID(), + } + } + if err := c.Write(ethProto, eth.StatusMsg, status); err != nil { + return fmt.Errorf("write to connection failed: %v", err) + } + return nil +} diff --git a/cmd/devp2p/internal/ethtest/engine.go b/cmd/devp2p/internal/ethtest/engine.go new file mode 100644 index 0000000000..ea4fc76e6f --- /dev/null +++ b/cmd/devp2p/internal/ethtest/engine.go @@ -0,0 +1,69 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . + +package ethtest + +import ( + "bytes" + "fmt" + "io" + "net/http" + "os" + "path" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/golang-jwt/jwt/v4" +) + +// EngineClient is a wrapper around engine-related data. +type EngineClient struct { + url string + jwt [32]byte + headfcu []byte +} + +// NewEngineClient creates a new engine client. +func NewEngineClient(dir, url, jwt string) (*EngineClient, error) { + headfcu, err := os.ReadFile(path.Join(dir, "headfcu.json")) + if err != nil { + return nil, fmt.Errorf("failed to read headfcu: %w", err) + } + return &EngineClient{url, common.HexToHash(jwt), headfcu}, nil +} + +// token returns the jwt claim token for authorization. +func (ec *EngineClient) token() string { + claims := jwt.RegisteredClaims{IssuedAt: jwt.NewNumericDate(time.Now())} + token, _ := jwt.NewWithClaims(jwt.SigningMethodHS256, claims).SignedString(ec.jwt[:]) + return token +} + +// sendForkchoiceUpdated sends an fcu for the head of the generated chain. +func (ec *EngineClient) sendForkchoiceUpdated() error { + var ( + req, _ = http.NewRequest(http.MethodPost, ec.url, io.NopCloser(bytes.NewReader(ec.headfcu))) + header = make(http.Header) + ) + // Set header + header.Set("accept", "application/json") + header.Set("content-type", "application/json") + header.Set("Authorization", fmt.Sprintf("Bearer %v", ec.token())) + req.Header = header + + _, err := new(http.Client).Do(req) + return err +} diff --git a/cmd/devp2p/internal/ethtest/helpers.go b/cmd/devp2p/internal/ethtest/helpers.go deleted file mode 100644 index a0339b88cb..0000000000 --- a/cmd/devp2p/internal/ethtest/helpers.go +++ /dev/null @@ -1,650 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum 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 go-ethereum. If not, see . - -package ethtest - -import ( - "errors" - "fmt" - "net" - "reflect" - "strings" - "time" - - "github.com/davecgh/go-spew/spew" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/eth/protocols/eth" - "github.com/ethereum/go-ethereum/internal/utesting" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/rlpx" -) - -var ( - pretty = spew.ConfigState{ - Indent: " ", - DisableCapacities: true, - DisablePointerAddresses: true, - SortKeys: true, - } - timeout = 20 * time.Second -) - -// dial attempts to dial the given node and perform a handshake, -// returning the created Conn if successful. -func (s *Suite) dial() (*Conn, error) { - // dial - fd, err := net.Dial("tcp", fmt.Sprintf("%v:%d", s.Dest.IP(), s.Dest.TCP())) - if err != nil { - return nil, err - } - conn := Conn{Conn: rlpx.NewConn(fd, s.Dest.Pubkey())} - // do encHandshake - conn.ourKey, _ = crypto.GenerateKey() - _, err = conn.Handshake(conn.ourKey) - if err != nil { - conn.Close() - return nil, err - } - // set default p2p capabilities - conn.caps = []p2p.Cap{ - {Name: "eth", Version: 67}, - {Name: "eth", Version: 68}, - } - conn.ourHighestProtoVersion = 68 - return &conn, nil -} - -// dialSnap creates a connection with snap/1 capability. -func (s *Suite) dialSnap() (*Conn, error) { - conn, err := s.dial() - if err != nil { - return nil, fmt.Errorf("dial failed: %v", err) - } - conn.caps = append(conn.caps, p2p.Cap{Name: "snap", Version: 1}) - conn.ourHighestSnapProtoVersion = 1 - return conn, nil -} - -// peer performs both the protocol handshake and the status message -// exchange with the node in order to peer with it. -func (c *Conn) peer(chain *Chain, status *Status) error { - if err := c.handshake(); err != nil { - return fmt.Errorf("handshake failed: %v", err) - } - if _, err := c.statusExchange(chain, status); err != nil { - return fmt.Errorf("status exchange failed: %v", err) - } - return nil -} - -// handshake performs a protocol handshake with the node. -func (c *Conn) handshake() error { - defer c.SetDeadline(time.Time{}) - c.SetDeadline(time.Now().Add(10 * time.Second)) - // write hello to client - pub0 := crypto.FromECDSAPub(&c.ourKey.PublicKey)[1:] - ourHandshake := &Hello{ - Version: 5, - Caps: c.caps, - ID: pub0, - } - if err := c.Write(ourHandshake); err != nil { - return fmt.Errorf("write to connection failed: %v", err) - } - // read hello from client - switch msg := c.Read().(type) { - case *Hello: - // set snappy if version is at least 5 - if msg.Version >= 5 { - c.SetSnappy(true) - } - c.negotiateEthProtocol(msg.Caps) - if c.negotiatedProtoVersion == 0 { - return fmt.Errorf("could not negotiate eth protocol (remote caps: %v, local eth version: %v)", msg.Caps, c.ourHighestProtoVersion) - } - // If we require snap, verify that it was negotiated - if c.ourHighestSnapProtoVersion != c.negotiatedSnapProtoVersion { - return fmt.Errorf("could not negotiate snap protocol (remote caps: %v, local snap version: %v)", msg.Caps, c.ourHighestSnapProtoVersion) - } - return nil - default: - return fmt.Errorf("bad handshake: %#v", msg) - } -} - -// negotiateEthProtocol sets the Conn's eth protocol version to highest -// advertised capability from peer. -func (c *Conn) negotiateEthProtocol(caps []p2p.Cap) { - var highestEthVersion uint - var highestSnapVersion uint - for _, capability := range caps { - switch capability.Name { - case "eth": - if capability.Version > highestEthVersion && capability.Version <= c.ourHighestProtoVersion { - highestEthVersion = capability.Version - } - case "snap": - if capability.Version > highestSnapVersion && capability.Version <= c.ourHighestSnapProtoVersion { - highestSnapVersion = capability.Version - } - } - } - c.negotiatedProtoVersion = highestEthVersion - c.negotiatedSnapProtoVersion = highestSnapVersion -} - -// statusExchange performs a `Status` message exchange with the given node. -func (c *Conn) statusExchange(chain *Chain, status *Status) (Message, error) { - defer c.SetDeadline(time.Time{}) - c.SetDeadline(time.Now().Add(20 * time.Second)) - - // read status message from client - var message Message -loop: - for { - switch msg := c.Read().(type) { - case *Status: - if have, want := msg.Head, chain.blocks[chain.Len()-1].Hash(); have != want { - return nil, fmt.Errorf("wrong head block in status, want: %#x (block %d) have %#x", - want, chain.blocks[chain.Len()-1].NumberU64(), have) - } - if have, want := msg.TD.Cmp(chain.TD()), 0; have != want { - return nil, fmt.Errorf("wrong TD in status: have %v want %v", have, want) - } - if have, want := msg.ForkID, chain.ForkID(); !reflect.DeepEqual(have, want) { - return nil, fmt.Errorf("wrong fork ID in status: have %v, want %v", have, want) - } - if have, want := msg.ProtocolVersion, c.ourHighestProtoVersion; have != uint32(want) { - return nil, fmt.Errorf("wrong protocol version: have %v, want %v", have, want) - } - message = msg - break loop - case *Disconnect: - return nil, fmt.Errorf("disconnect received: %v", msg.Reason) - case *Ping: - c.Write(&Pong{}) // TODO (renaynay): in the future, this should be an error - // (PINGs should not be a response upon fresh connection) - default: - return nil, fmt.Errorf("bad status message: %s", pretty.Sdump(msg)) - } - } - // make sure eth protocol version is set for negotiation - if c.negotiatedProtoVersion == 0 { - return nil, errors.New("eth protocol version must be set in Conn") - } - if status == nil { - // default status message - status = &Status{ - ProtocolVersion: uint32(c.negotiatedProtoVersion), - NetworkID: chain.chainConfig.ChainID.Uint64(), - TD: chain.TD(), - Head: chain.blocks[chain.Len()-1].Hash(), - Genesis: chain.blocks[0].Hash(), - ForkID: chain.ForkID(), - } - } - if err := c.Write(status); err != nil { - return nil, fmt.Errorf("write to connection failed: %v", err) - } - return message, nil -} - -// createSendAndRecvConns creates two connections, one for sending messages to the -// node, and one for receiving messages from the node. -func (s *Suite) createSendAndRecvConns() (*Conn, *Conn, error) { - sendConn, err := s.dial() - if err != nil { - return nil, nil, fmt.Errorf("dial failed: %v", err) - } - recvConn, err := s.dial() - if err != nil { - sendConn.Close() - return nil, nil, fmt.Errorf("dial failed: %v", err) - } - return sendConn, recvConn, nil -} - -// readAndServe serves GetBlockHeaders requests while waiting -// on another message from the node. -func (c *Conn) readAndServe(chain *Chain, timeout time.Duration) Message { - start := time.Now() - for time.Since(start) < timeout { - c.SetReadDeadline(time.Now().Add(10 * time.Second)) - - msg := c.Read() - switch msg := msg.(type) { - case *Ping: - c.Write(&Pong{}) - case *GetBlockHeaders: - headers, err := chain.GetHeaders(msg) - if err != nil { - return errorf("could not get headers for inbound header request: %v", err) - } - resp := &BlockHeaders{ - RequestId: msg.ReqID(), - BlockHeadersRequest: eth.BlockHeadersRequest(headers), - } - if err := c.Write(resp); err != nil { - return errorf("could not write to connection: %v", err) - } - default: - return msg - } - } - return errorf("no message received within %v", timeout) -} - -// headersRequest executes the given `GetBlockHeaders` request. -func (c *Conn) headersRequest(request *GetBlockHeaders, chain *Chain, reqID uint64) ([]*types.Header, error) { - defer c.SetReadDeadline(time.Time{}) - c.SetReadDeadline(time.Now().Add(20 * time.Second)) - - // write request - request.RequestId = reqID - if err := c.Write(request); err != nil { - return nil, fmt.Errorf("could not write to connection: %v", err) - } - - // wait for response - msg := c.waitForResponse(chain, timeout, request.RequestId) - resp, ok := msg.(*BlockHeaders) - if !ok { - return nil, fmt.Errorf("unexpected message received: %s", pretty.Sdump(msg)) - } - headers := []*types.Header(resp.BlockHeadersRequest) - return headers, nil -} - -func (c *Conn) snapRequest(msg Message, id uint64, chain *Chain) (Message, error) { - defer c.SetReadDeadline(time.Time{}) - c.SetReadDeadline(time.Now().Add(5 * time.Second)) - if err := c.Write(msg); err != nil { - return nil, fmt.Errorf("could not write to connection: %v", err) - } - return c.ReadSnap(id) -} - -// headersMatch returns whether the received headers match the given request -func headersMatch(expected []*types.Header, headers []*types.Header) bool { - return reflect.DeepEqual(expected, headers) -} - -// waitForResponse reads from the connection until a response with the expected -// request ID is received. -func (c *Conn) waitForResponse(chain *Chain, timeout time.Duration, requestID uint64) Message { - for { - msg := c.readAndServe(chain, timeout) - if msg.ReqID() == requestID { - return msg - } - } -} - -// sendNextBlock broadcasts the next block in the chain and waits -// for the node to propagate the block and import it into its chain. -func (s *Suite) sendNextBlock() error { - // set up sending and receiving connections - sendConn, recvConn, err := s.createSendAndRecvConns() - if err != nil { - return err - } - defer sendConn.Close() - defer recvConn.Close() - if err = sendConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - if err = recvConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - // create new block announcement - nextBlock := s.fullChain.blocks[s.chain.Len()] - blockAnnouncement := &NewBlock{ - Block: nextBlock, - TD: s.fullChain.TotalDifficultyAt(s.chain.Len()), - } - // send announcement and wait for node to request the header - if err = s.testAnnounce(sendConn, recvConn, blockAnnouncement); err != nil { - return fmt.Errorf("failed to announce block: %v", err) - } - // wait for client to update its chain - if err = s.waitForBlockImport(recvConn, nextBlock); err != nil { - return fmt.Errorf("failed to receive confirmation of block import: %v", err) - } - // update test suite chain - s.chain.blocks = append(s.chain.blocks, nextBlock) - return nil -} - -// testAnnounce writes a block announcement to the node and waits for the node -// to propagate it. -func (s *Suite) testAnnounce(sendConn, receiveConn *Conn, blockAnnouncement *NewBlock) error { - if err := sendConn.Write(blockAnnouncement); err != nil { - return fmt.Errorf("could not write to connection: %v", err) - } - return s.waitAnnounce(receiveConn, blockAnnouncement) -} - -// waitAnnounce waits for a NewBlock or NewBlockHashes announcement from the node. -func (s *Suite) waitAnnounce(conn *Conn, blockAnnouncement *NewBlock) error { - for { - switch msg := conn.readAndServe(s.chain, timeout).(type) { - case *NewBlock: - if !reflect.DeepEqual(blockAnnouncement.Block.Header(), msg.Block.Header()) { - return fmt.Errorf("wrong header in block announcement: \nexpected %v "+ - "\ngot %v", blockAnnouncement.Block.Header(), msg.Block.Header()) - } - if !reflect.DeepEqual(blockAnnouncement.TD, msg.TD) { - return fmt.Errorf("wrong TD in announcement: expected %v, got %v", blockAnnouncement.TD, msg.TD) - } - return nil - case *NewBlockHashes: - hashes := *msg - if blockAnnouncement.Block.Hash() != hashes[0].Hash { - return fmt.Errorf("wrong block hash in announcement: expected %v, got %v", blockAnnouncement.Block.Hash(), hashes[0].Hash) - } - return nil - - // ignore tx announcements from previous tests - case *NewPooledTransactionHashes66: - continue - case *NewPooledTransactionHashes: - continue - case *Transactions: - continue - - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - } -} - -func (s *Suite) waitForBlockImport(conn *Conn, block *types.Block) error { - defer conn.SetReadDeadline(time.Time{}) - conn.SetReadDeadline(time.Now().Add(20 * time.Second)) - // create request - req := &GetBlockHeaders{ - GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ - Origin: eth.HashOrNumber{Hash: block.Hash()}, - Amount: 1, - }, - } - - // loop until BlockHeaders response contains desired block, confirming the - // node imported the block - for { - requestID := uint64(54) - headers, err := conn.headersRequest(req, s.chain, requestID) - if err != nil { - return fmt.Errorf("GetBlockHeader request failed: %v", err) - } - // if headers response is empty, node hasn't imported block yet, try again - if len(headers) == 0 { - time.Sleep(100 * time.Millisecond) - continue - } - if !reflect.DeepEqual(block.Header(), headers[0]) { - return fmt.Errorf("wrong header returned: wanted %v, got %v", block.Header(), headers[0]) - } - return nil - } -} - -func (s *Suite) oldAnnounce() error { - sendConn, receiveConn, err := s.createSendAndRecvConns() - if err != nil { - return err - } - defer sendConn.Close() - defer receiveConn.Close() - if err := sendConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - if err := receiveConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - // create old block announcement - oldBlockAnnounce := &NewBlock{ - Block: s.chain.blocks[len(s.chain.blocks)/2], - TD: s.chain.blocks[len(s.chain.blocks)/2].Difficulty(), - } - if err := sendConn.Write(oldBlockAnnounce); err != nil { - return fmt.Errorf("could not write to connection: %v", err) - } - // wait to see if the announcement is propagated - switch msg := receiveConn.readAndServe(s.chain, time.Second*8).(type) { - case *NewBlock: - block := *msg - if block.Block.Hash() == oldBlockAnnounce.Block.Hash() { - return fmt.Errorf("unexpected: block propagated: %s", pretty.Sdump(msg)) - } - case *NewBlockHashes: - hashes := *msg - for _, hash := range hashes { - if hash.Hash == oldBlockAnnounce.Block.Hash() { - return fmt.Errorf("unexpected: block announced: %s", pretty.Sdump(msg)) - } - } - case *Error: - errMsg := *msg - // check to make sure error is timeout (propagation didn't come through == test successful) - if !strings.Contains(errMsg.String(), "timeout") { - return fmt.Errorf("unexpected error: %v", pretty.Sdump(msg)) - } - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - return nil -} - -func (s *Suite) maliciousHandshakes(t *utesting.T) error { - conn, err := s.dial() - if err != nil { - return fmt.Errorf("dial failed: %v", err) - } - defer conn.Close() - - // write hello to client - pub0 := crypto.FromECDSAPub(&conn.ourKey.PublicKey)[1:] - handshakes := []*Hello{ - { - Version: 5, - Caps: []p2p.Cap{ - {Name: largeString(2), Version: 64}, - }, - ID: pub0, - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: "eth", Version: 64}, - {Name: "eth", Version: 65}, - }, - ID: append(pub0, byte(0)), - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: "eth", Version: 64}, - {Name: "eth", Version: 65}, - }, - ID: append(pub0, pub0...), - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: "eth", Version: 64}, - {Name: "eth", Version: 65}, - }, - ID: largeBuffer(2), - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: largeString(2), Version: 64}, - }, - ID: largeBuffer(2), - }, - } - for i, handshake := range handshakes { - t.Logf("Testing malicious handshake %v\n", i) - if err := conn.Write(handshake); err != nil { - return fmt.Errorf("could not write to connection: %v", err) - } - // check that the peer disconnected - for i := 0; i < 2; i++ { - switch msg := conn.readAndServe(s.chain, 20*time.Second).(type) { - case *Disconnect: - case *Error: - case *Hello: - // Discard one hello as Hello's are sent concurrently - continue - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - } - // dial for the next round - conn, err = s.dial() - if err != nil { - return fmt.Errorf("dial failed: %v", err) - } - } - return nil -} - -func (s *Suite) maliciousStatus(conn *Conn) error { - if err := conn.handshake(); err != nil { - return fmt.Errorf("handshake failed: %v", err) - } - status := &Status{ - ProtocolVersion: uint32(conn.negotiatedProtoVersion), - NetworkID: s.chain.chainConfig.ChainID.Uint64(), - TD: largeNumber(2), - Head: s.chain.blocks[s.chain.Len()-1].Hash(), - Genesis: s.chain.blocks[0].Hash(), - ForkID: s.chain.ForkID(), - } - - // get status - msg, err := conn.statusExchange(s.chain, status) - if err != nil { - return fmt.Errorf("status exchange failed: %v", err) - } - switch msg := msg.(type) { - case *Status: - default: - return fmt.Errorf("expected status, got: %#v ", msg) - } - - // wait for disconnect - switch msg := conn.readAndServe(s.chain, timeout).(type) { - case *Disconnect: - return nil - case *Error: - return nil - default: - return fmt.Errorf("expected disconnect, got: %s", pretty.Sdump(msg)) - } -} - -func (s *Suite) hashAnnounce() error { - // create connections - sendConn, recvConn, err := s.createSendAndRecvConns() - if err != nil { - return fmt.Errorf("failed to create connections: %v", err) - } - defer sendConn.Close() - defer recvConn.Close() - if err := sendConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - if err := recvConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - - // create NewBlockHashes announcement - type anno struct { - Hash common.Hash // Hash of one particular block being announced - Number uint64 // Number of one particular block being announced - } - nextBlock := s.fullChain.blocks[s.chain.Len()] - announcement := anno{Hash: nextBlock.Hash(), Number: nextBlock.Number().Uint64()} - newBlockHash := &NewBlockHashes{announcement} - if err := sendConn.Write(newBlockHash); err != nil { - return fmt.Errorf("failed to write to connection: %v", err) - } - - // Announcement sent, now wait for a header request - msg := sendConn.Read() - blockHeaderReq, ok := msg.(*GetBlockHeaders) - if !ok { - return fmt.Errorf("unexpected %s", pretty.Sdump(msg)) - } - if blockHeaderReq.Amount != 1 { - return fmt.Errorf("unexpected number of block headers requested: %v", blockHeaderReq.Amount) - } - if blockHeaderReq.Origin.Hash != announcement.Hash { - return fmt.Errorf("unexpected block header requested. Announced:\n %v\n Remote request:\n%v", - pretty.Sdump(announcement), - pretty.Sdump(blockHeaderReq)) - } - err = sendConn.Write(&BlockHeaders{ - RequestId: blockHeaderReq.ReqID(), - BlockHeadersRequest: eth.BlockHeadersRequest{nextBlock.Header()}, - }) - if err != nil { - return fmt.Errorf("failed to write to connection: %v", err) - } - - // wait for block announcement - msg = recvConn.readAndServe(s.chain, timeout) - switch msg := msg.(type) { - case *NewBlockHashes: - hashes := *msg - if len(hashes) != 1 { - return fmt.Errorf("unexpected new block hash announcement: wanted 1 announcement, got %d", len(hashes)) - } - if nextBlock.Hash() != hashes[0].Hash { - return fmt.Errorf("unexpected block hash announcement, wanted %v, got %v", nextBlock.Hash(), - hashes[0].Hash) - } - - case *NewBlock: - // node should only propagate NewBlock without having requested the body if the body is empty - nextBlockBody := nextBlock.Body() - if len(nextBlockBody.Transactions) != 0 || len(nextBlockBody.Uncles) != 0 { - return fmt.Errorf("unexpected non-empty new block propagated: %s", pretty.Sdump(msg)) - } - if msg.Block.Hash() != nextBlock.Hash() { - return fmt.Errorf("mismatched hash of propagated new block: wanted %v, got %v", - nextBlock.Hash(), msg.Block.Hash()) - } - // check to make sure header matches header that was sent to the node - if !reflect.DeepEqual(nextBlock.Header(), msg.Block.Header()) { - return fmt.Errorf("incorrect header received: wanted %v, got %v", nextBlock.Header(), msg.Block.Header()) - } - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - // confirm node imported block - if err := s.waitForBlockImport(recvConn, nextBlock); err != nil { - return fmt.Errorf("error waiting for node to import new block: %v", err) - } - // update the chain - s.chain.blocks = append(s.chain.blocks, nextBlock) - return nil -} diff --git a/cmd/devp2p/internal/ethtest/large.go b/cmd/devp2p/internal/ethtest/large.go deleted file mode 100644 index 40626c2068..0000000000 --- a/cmd/devp2p/internal/ethtest/large.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum 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 go-ethereum. If not, see . - -package ethtest - -import ( - "crypto/rand" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core/types" -) - -// largeNumber returns a very large big.Int. -func largeNumber(megabytes int) *big.Int { - buf := make([]byte, megabytes*1024*1024) - rand.Read(buf) - bigint := new(big.Int) - bigint.SetBytes(buf) - return bigint -} - -// largeBuffer returns a very large buffer. -func largeBuffer(megabytes int) []byte { - buf := make([]byte, megabytes*1024*1024) - rand.Read(buf) - return buf -} - -// largeString returns a very large string. -func largeString(megabytes int) string { - buf := make([]byte, megabytes*1024*1024) - rand.Read(buf) - return hexutil.Encode(buf) -} - -func largeBlock() *types.Block { - return types.NewBlockWithHeader(largeHeader()) -} - -// Returns a random hash -func randHash() common.Hash { - var h common.Hash - rand.Read(h[:]) - return h -} - -func largeHeader() *types.Header { - return &types.Header{ - MixDigest: randHash(), - ReceiptHash: randHash(), - TxHash: randHash(), - Nonce: types.BlockNonce{}, - Extra: []byte{}, - Bloom: types.Bloom{}, - GasUsed: 0, - Coinbase: common.Address{}, - GasLimit: 0, - UncleHash: types.EmptyUncleHash, - Time: 1337, - ParentHash: randHash(), - Root: randHash(), - Number: largeNumber(2), - Difficulty: largeNumber(2), - } -} diff --git a/cmd/devp2p/internal/ethtest/mkchain.sh b/cmd/devp2p/internal/ethtest/mkchain.sh new file mode 100644 index 0000000000..b9253e8ca7 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/mkchain.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +hivechain generate \ + --fork-interval 6 \ + --tx-interval 1 \ + --length 500 \ + --outdir testdata \ + --lastfork cancun \ + --outputs accounts,genesis,chain,headstate,txinfo,headblock,headfcu,newpayload,forkenv diff --git a/cmd/devp2p/internal/ethtest/protocol.go b/cmd/devp2p/internal/ethtest/protocol.go new file mode 100644 index 0000000000..f5f5f7e489 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/protocol.go @@ -0,0 +1,87 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum 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 go-ethereum. If not, see . +package ethtest + +import ( + "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/rlp" +) + +// Unexported devp2p message codes from p2p/peer.go. +const ( + handshakeMsg = 0x00 + discMsg = 0x01 + pingMsg = 0x02 + pongMsg = 0x03 +) + +// Unexported devp2p protocol lengths from p2p package. +const ( + baseProtoLen = 16 + ethProtoLen = 17 + snapProtoLen = 8 +) + +// Unexported handshake structure from p2p/peer.go. +type protoHandshake struct { + Version uint64 + Name string + Caps []p2p.Cap + ListenPort uint64 + ID []byte + Rest []rlp.RawValue `rlp:"tail"` +} + +type Hello = protoHandshake + +// Proto is an enum representing devp2p protocol types. +type Proto int + +const ( + baseProto Proto = iota + ethProto + snapProto +) + +// getProto returns the protocol a certain message code is associated with +// (assuming the negotiated capabilities are exactly {eth,snap}) +func getProto(code uint64) Proto { + switch { + case code < baseProtoLen: + return baseProto + case code < baseProtoLen+ethProtoLen: + return ethProto + case code < baseProtoLen+ethProtoLen+snapProtoLen: + return snapProto + default: + panic("unhandled msg code beyond last protocol") + } +} + +// protoOffset will return the offset at which the specified protocol's messages +// begin. +func protoOffset(proto Proto) uint64 { + switch proto { + case baseProto: + return 0 + case ethProto: + return baseProtoLen + case snapProto: + return baseProtoLen + ethProtoLen + default: + panic("unhandled protocol") + } +} diff --git a/cmd/devp2p/internal/ethtest/snap.go b/cmd/devp2p/internal/ethtest/snap.go index 21a5c8232a..64e0633585 100644 --- a/cmd/devp2p/internal/ethtest/snap.go +++ b/cmd/devp2p/internal/ethtest/snap.go @@ -20,9 +20,12 @@ import ( "bytes" "errors" "fmt" + "math/big" "math/rand" + "reflect" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth/protocols/snap" @@ -32,6 +35,13 @@ import ( "golang.org/x/crypto/sha3" ) +func (c *Conn) snapRequest(code uint64, msg any) (any, error) { + if err := c.Write(snapProto, code, msg); err != nil { + return nil, fmt.Errorf("could not write to connection: %v", err) + } + return c.ReadSnap() +} + func (s *Suite) TestSnapStatus(t *utesting.T) { conn, err := s.dialSnap() if err != nil { @@ -44,72 +54,267 @@ func (s *Suite) TestSnapStatus(t *utesting.T) { } type accRangeTest struct { - nBytes uint64 - root common.Hash - origin common.Hash - limit common.Hash + nBytes uint64 + root common.Hash + startingHash common.Hash + limitHash common.Hash expAccounts int expFirst common.Hash expLast common.Hash + + desc string } // TestSnapGetAccountRange various forms of GetAccountRange requests. func (s *Suite) TestSnapGetAccountRange(t *utesting.T) { var ( - root = s.chain.RootAt(999) - ffHash = common.MaxHash - zero = common.Hash{} - firstKeyMinus1 = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf29") - firstKey = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") - firstKeyPlus1 = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2b") - secondKey = common.HexToHash("0x09e47cd5056a689e708f22fe1f932709a320518e444f5f7d8d46a3da523d6606") - storageRoot = common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790") + ffHash = common.MaxHash + zero = common.Hash{} + + // test values derived from chain/ account dump + root = s.chain.Head().Root() + headstate = s.chain.AccountsInHashOrder() + firstKey = common.BytesToHash(headstate[0].AddressHash) + secondKey = common.BytesToHash(headstate[1].AddressHash) + storageRoot = findNonEmptyStorageRoot(headstate) ) - for i, tc := range []accRangeTest{ + + tests := []accRangeTest{ // Tests decreasing the number of bytes - {4000, root, zero, ffHash, 76, firstKey, common.HexToHash("0xd2669dcf3858e7f1eecb8b5fedbf22fbea3e9433848a75035f79d68422c2dcda")}, - {3000, root, zero, ffHash, 57, firstKey, common.HexToHash("0x9b63fa753ece5cb90657d02ecb15df4dc1508d8c1d187af1bf7f1a05e747d3c7")}, - {2000, root, zero, ffHash, 38, firstKey, common.HexToHash("0x5e6140ecae4354a9e8f47559a8c6209c1e0e69cb077b067b528556c11698b91f")}, - {1, root, zero, ffHash, 1, firstKey, firstKey}, + { + nBytes: 4000, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 86, + expFirst: firstKey, + expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"), + desc: "In this test, we request the entire state range, but limit the response to 4000 bytes.", + }, + { + nBytes: 3000, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 65, + expFirst: firstKey, + expLast: common.HexToHash("0x2e6fe1362b3e388184fd7bf08e99e74170b26361624ffd1c5f646da7067b58b6"), + desc: "In this test, we request the entire state range, but limit the response to 3000 bytes.", + }, + { + nBytes: 2000, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 44, + expFirst: firstKey, + expLast: common.HexToHash("0x1c3f74249a4892081ba0634a819aec9ed25f34c7653f5719b9098487e65ab595"), + desc: "In this test, we request the entire state range, but limit the response to 2000 bytes.", + }, + { + nBytes: 1, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, we request the entire state range, but limit the response to 1 byte. +The server should return the first account of the state.`, + }, + { + nBytes: 0, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `Here we request with a responseBytes limit of zero. +The server should return one account.`, + }, // Tests variations of the range - // - // [00b to firstkey]: should return [firstkey, secondkey], where secondkey is out of bounds - {4000, root, common.HexToHash("0x00bf000000000000000000000000000000000000000000000000000000000000"), common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2b"), 2, firstKey, secondKey}, - // [00b0 to 0bf0]: where both are before firstkey. Should return firstKey (even though it's out of bounds) - {4000, root, common.HexToHash("0x00b0000000000000000000000000000000000000000000000000000000000000"), common.HexToHash("0x00bf100000000000000000000000000000000000000000000000000000000000"), 1, firstKey, firstKey}, - {4000, root, zero, zero, 1, firstKey, firstKey}, - {4000, root, firstKey, ffHash, 76, firstKey, common.HexToHash("0xd2669dcf3858e7f1eecb8b5fedbf22fbea3e9433848a75035f79d68422c2dcda")}, - {4000, root, firstKeyPlus1, ffHash, 76, secondKey, common.HexToHash("0xd28f55d3b994f16389f36944ad685b48e0fc3f8fbe86c3ca92ebecadf16a783f")}, + { + nBytes: 4000, + root: root, + startingHash: hashAdd(firstKey, -500), + limitHash: hashAdd(firstKey, 1), + expAccounts: 2, + expFirst: firstKey, + expLast: secondKey, + desc: `In this test, we request a range where startingHash is before the first available +account key, and limitHash is after. The server should return the first and second +account of the state (because the second account is the 'next available').`, + }, + + { + nBytes: 4000, + root: root, + startingHash: hashAdd(firstKey, -500), + limitHash: hashAdd(firstKey, -450), + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `Here we request range where both bounds are before the first available account key. +This should return the first account (even though it's out of bounds).`, + }, + + // More range tests: + { + nBytes: 4000, + root: root, + startingHash: zero, + limitHash: zero, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, both startingHash and limitHash are zero. +The server should return the first available account.`, + }, + { + nBytes: 4000, + root: root, + startingHash: firstKey, + limitHash: ffHash, + expAccounts: 86, + expFirst: firstKey, + expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"), + desc: `In this test, startingHash is exactly the first available account key. +The server should return the first available account of the state as the first item.`, + }, + { + nBytes: 4000, + root: root, + startingHash: hashAdd(firstKey, 1), + limitHash: ffHash, + expAccounts: 86, + expFirst: secondKey, + expLast: common.HexToHash("0x4615e5f5df5b25349a00ad313c6cd0436b6c08ee5826e33a018661997f85ebaa"), + desc: `In this test, startingHash is after the first available key. +The server should return the second account of the state as the first item.`, + }, // Test different root hashes - // - // A stateroot that does not exist - {4000, common.Hash{0x13, 37}, zero, ffHash, 0, zero, zero}, + + { + nBytes: 4000, + root: common.Hash{0x13, 0x37}, + startingHash: zero, + limitHash: ffHash, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `This test requests a non-existent state root.`, + }, + // The genesis stateroot (we expect it to not be served) - {4000, s.chain.RootAt(0), zero, ffHash, 0, zero, zero}, - // A 127 block old stateroot, expected to be served - {4000, s.chain.RootAt(999 - 127), zero, ffHash, 77, firstKey, common.HexToHash("0xe4c6fdef5dd4e789a2612390806ee840b8ec0fe52548f8b4efe41abb20c37aac")}, - // A root which is not actually an account root, but a storage root - {4000, storageRoot, zero, ffHash, 0, zero, zero}, + { + nBytes: 4000, + root: s.chain.RootAt(0), + startingHash: zero, + limitHash: ffHash, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `This test requests data at the state root of the genesis block. We expect the +server to return no data because genesis is older than 127 blocks.`, + }, + + { + nBytes: 4000, + root: s.chain.RootAt(int(s.chain.Head().Number().Uint64()) - 127), + startingHash: zero, + limitHash: ffHash, + expAccounts: 84, + expFirst: firstKey, + expLast: common.HexToHash("0x580aa878e2f92d113a12c0a3ce3c21972b03dbe80786858d49a72097e2c491a3"), + desc: `This test requests data at a state root that is 127 blocks old. +We expect the server to have this state available.`, + }, + + { + nBytes: 4000, + root: storageRoot, + startingHash: zero, + limitHash: ffHash, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `This test requests data at a state root that is actually the storage root of +an existing account. The server is supposed to ignore this request.`, + }, // And some non-sensical requests - // - // range from [0xFF to 0x00], wrong order. Expect not to be serviced - {4000, root, ffHash, zero, 0, zero, zero}, - // range from [firstkey, firstkey-1], wrong order. Expect to get first key. - {4000, root, firstKey, firstKeyMinus1, 1, firstKey, firstKey}, + + { + nBytes: 4000, + root: root, + startingHash: ffHash, + limitHash: zero, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `In this test, the startingHash is after limitHash (wrong order). The server +should ignore this invalid request.`, + }, + + { + nBytes: 4000, + root: root, + startingHash: firstKey, + limitHash: hashAdd(firstKey, -1), + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, the startingHash is the first available key, and limitHash is +a key before startingHash (wrong order). The server should return the first available key.`, + }, + // range from [firstkey, 0], wrong order. Expect to get first key. - {4000, root, firstKey, zero, 1, firstKey, firstKey}, - // Max bytes: 0. Expect to deliver one account. - {0, root, zero, ffHash, 1, firstKey, firstKey}, - } { + { + nBytes: 4000, + root: root, + startingHash: firstKey, + limitHash: zero, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, the startingHash is the first available key and limitHash is zero. +(wrong order). The server should return the first available key.`, + }, + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" root: %x", tc.root) + t.Logf(" range: %#x - %#x", tc.startingHash, tc.limitHash) + t.Logf(" responseBytes: %d", tc.nBytes) if err := s.snapGetAccountRange(t, &tc); err != nil { - t.Errorf("test %d \n root: %x\n range: %#x - %#x\n bytes: %d\nfailed: %v", i, tc.root, tc.origin, tc.limit, tc.nBytes, err) + t.Errorf("test %d failed: %v", i, err) + } + } +} + +func hashAdd(h common.Hash, n int64) common.Hash { + hb := h.Big() + return common.BigToHash(hb.Add(hb, big.NewInt(n))) +} + +func findNonEmptyStorageRoot(accounts []state.DumpAccount) common.Hash { + for i := range accounts { + if len(accounts[i].Storage) != 0 { + return common.BytesToHash(accounts[i].Root) } } + panic("can't find account with non-empty storage") } type stRangesTest struct { @@ -119,87 +324,125 @@ type stRangesTest struct { limit []byte nBytes uint64 - expSlots int + expSlots [][]*snap.StorageData + + desc string } // TestSnapGetStorageRanges various forms of GetStorageRanges requests. func (s *Suite) TestSnapGetStorageRanges(t *utesting.T) { var ( + acct = common.HexToAddress("0x8bebc8ba651aee624937e7d897853ac30c95a067") + acctHash = common.BytesToHash(s.chain.state[acct].AddressHash) ffHash = common.MaxHash zero = common.Hash{} - firstKey = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") - secondKey = common.HexToHash("0x09e47cd5056a689e708f22fe1f932709a320518e444f5f7d8d46a3da523d6606") + blockroot = s.chain.Head().Root() ) - for i, tc := range []stRangesTest{ + + // These are the storage slots of the test account, encoded as snap response data. + acctSlots := []*snap.StorageData{ { - root: s.chain.RootAt(999), - accounts: []common.Hash{secondKey, firstKey}, - origin: zero[:], - limit: ffHash[:], - nBytes: 500, - expSlots: 0, + Hash: common.HexToHash("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), + Body: []byte{0x02}, + }, + { + Hash: common.HexToHash("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"), + Body: []byte{0x01}, + }, + { + Hash: common.HexToHash("0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b"), + Body: []byte{0x03}, }, + } + tests := []stRangesTest{ /* Some tests against this account: - { - "balance": "0", - "nonce": 1, - "root": "0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "storage": { - "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "02", - "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "01", - "0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b": "03" - }, - "key": "0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844" + + "0x8bebc8ba651aee624937e7d897853ac30c95a067": { + "balance": "1", + "nonce": 1, + "root": "0xe318dff15b33aa7f2f12d5567d58628e3e3f2e8859e46b56981a4083b391da17", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "storage": { + // Note: keys below are hashed!!! + "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "02", + "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "01", + "0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b": "03" + }, + "key": "0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099" } */ + { // [:] -> [slot1, slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This request has a range of 00..ff. +The server should return all storage slots of the test account.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: zero[:], limit: ffHash[:], nBytes: 500, - expSlots: 3, + expSlots: [][]*snap.StorageData{acctSlots}, }, + { // [slot1:] -> [slot1, slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This test requests slots starting at the first available key. +The server should return all storage slots of the test account.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), limit: ffHash[:], - nBytes: 500, - expSlots: 3, + nBytes: 1000, + expSlots: [][]*snap.StorageData{acctSlots}, }, - { // [slot1+ :] -> [slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + + { // [slot1+:] -> [slot2, slot3] + desc: `This test requests slots starting at a key one past the first available key. +The server should return the remaining two slots of the test account.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf"), limit: ffHash[:], nBytes: 500, - expSlots: 2, + expSlots: [][]*snap.StorageData{acctSlots[1:]}, }, + { // [slot1:slot2] -> [slot1, slot2] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This test requests a range which is exactly the first and second available key.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), limit: common.FromHex("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"), nBytes: 500, - expSlots: 2, + expSlots: [][]*snap.StorageData{acctSlots[:2]}, }, + { // [slot1+:slot2+] -> [slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This test requests a range where limitHash is after the second, but before the third slot +of the test account. The server should return slots [2,3] (i.e. the 'next available' needs to be returned).`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), limit: common.FromHex("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf7"), nBytes: 500, - expSlots: 2, + expSlots: [][]*snap.StorageData{acctSlots[1:]}, }, - } { + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" root: %x", tc.root) + t.Logf(" accounts: %x", tc.accounts) + t.Logf(" range: %#x - %#x", tc.origin, tc.limit) + t.Logf(" responseBytes: %d", tc.nBytes) if err := s.snapGetStorageRanges(t, &tc); err != nil { - t.Errorf("test %d \n root: %x\n range: %#x - %#x\n bytes: %d\n #accounts: %d\nfailed: %v", - i, tc.root, tc.origin, tc.limit, tc.nBytes, len(tc.accounts), err) + t.Errorf(" failed: %v", err) } } } @@ -209,87 +452,92 @@ type byteCodesTest struct { hashes []common.Hash expHashes int + + desc string } // TestSnapGetByteCodes various forms of GetByteCodes requests. func (s *Suite) TestSnapGetByteCodes(t *utesting.T) { - // The halfchain import should yield these bytecodes - var hcBytecodes []common.Hash - for _, s := range []string{ - "0x200c90460d8b0063210d5f5b9918e053c8f2c024485e0f1b48be8b1fc71b1317", - "0x20ba67ed4ac6aff626e0d1d4db623e2fada9593daeefc4a6eb4b70e6cff986f3", - "0x24b5b4902cb3d897c1cee9f16be8e897d8fa277c04c6dc8214f18295fca5de44", - "0x320b9d0a2be39b8a1c858f9f8cb96b1df0983071681de07ded3a7c0d05db5fd6", - "0x48cb0d5275936a24632babc7408339f9f7b051274809de565b8b0db76e97e03c", - "0x67c7a6f5cdaa43b4baa0e15b2be63346d1b9ce9f2c3d7e5804e0cacd44ee3b04", - "0x6d8418059bdc8c3fabf445e6bfc662af3b6a4ae45999b953996e42c7ead2ab49", - "0x7043422e5795d03f17ee0463a37235258e609fdd542247754895d72695e3e142", - "0x727f9e6f0c4bac1ff8d72c2972122d9c8d37ccb37e04edde2339e8da193546f1", - "0x86ccd5e23c78568a8334e0cebaf3e9f48c998307b0bfb1c378cee83b4bfb29cb", - "0x8fc89b00d6deafd4c4279531e743365626dbfa28845ec697919d305c2674302d", - "0x92cfc353bcb9746bb6f9996b6b9df779c88af2e9e0eeac44879ca19887c9b732", - "0x941b4872104f0995a4898fcf0f615ea6bf46bfbdfcf63ea8f2fd45b3f3286b77", - "0xa02fe8f41159bb39d2b704c633c3d6389cf4bfcb61a2539a9155f60786cf815f", - "0xa4b94e0afdffcb0af599677709dac067d3145489ea7aede57672bee43e3b7373", - "0xaf4e64edd3234c1205b725e42963becd1085f013590bd7ed93f8d711c5eb65fb", - "0xb69a18fa855b742031420081999086f6fb56c3930ae8840944e8b8ae9931c51e", - "0xc246c217bc73ce6666c93a93a94faa5250564f50a3fdc27ea74c231c07fe2ca6", - "0xcd6e4ab2c3034df2a8a1dfaaeb1c4baecd162a93d22de35e854ee2945cbe0c35", - "0xe24b692d09d6fc2f3d1a6028c400a27c37d7cbb11511907c013946d6ce263d3b", - "0xe440c5f0e8603fd1ed25976eee261ccee8038cf79d6a4c0eb31b2bf883be737f", - "0xe6eacbc509203d21ac814b350e72934fde686b7f673c19be8cf956b0c70078ce", - "0xe8530de4371467b5be7ea0e69e675ab36832c426d6c1ce9513817c0f0ae1486b", - "0xe85d487abbbc83bf3423cf9731360cf4f5a37220e18e5add54e72ee20861196a", - "0xf195ea389a5eea28db0be93660014275b158963dec44af1dfa7d4743019a9a49", - } { - hcBytecodes = append(hcBytecodes, common.HexToHash(s)) - } - - for i, tc := range []byteCodesTest{ + var ( + allHashes = s.chain.CodeHashes() + headRoot = s.chain.Head().Root() + genesisRoot = s.chain.RootAt(0) + ) + + tests := []byteCodesTest{ // A few stateroots { - nBytes: 10000, hashes: []common.Hash{s.chain.RootAt(0), s.chain.RootAt(999)}, + desc: `Here we request state roots as code hashes. The server should deliver an empty response with no items.`, + nBytes: 10000, + hashes: []common.Hash{genesisRoot, headRoot}, expHashes: 0, }, { - nBytes: 10000, hashes: []common.Hash{s.chain.RootAt(0), s.chain.RootAt(0)}, + desc: `Here we request the genesis state root (which is not an existing code hash) two times. The server should deliver an empty response with no items.`, + nBytes: 10000, + hashes: []common.Hash{genesisRoot, genesisRoot}, expHashes: 0, }, // Empties { - nBytes: 10000, hashes: []common.Hash{types.EmptyRootHash}, + desc: `Here we request the empty state root (which is not an existing code hash). The server should deliver an empty response with no items.`, + nBytes: 10000, + hashes: []common.Hash{types.EmptyRootHash}, expHashes: 0, }, { - nBytes: 10000, hashes: []common.Hash{types.EmptyCodeHash}, + desc: `Here we request the empty code hash. The server should deliver an empty response item.`, + nBytes: 10000, + hashes: []common.Hash{types.EmptyCodeHash}, expHashes: 1, }, { - nBytes: 10000, hashes: []common.Hash{types.EmptyCodeHash, types.EmptyCodeHash, types.EmptyCodeHash}, + desc: `In this test, we request the empty code hash three times. The server should deliver the empty item three times.`, + nBytes: 10000, + hashes: []common.Hash{types.EmptyCodeHash, types.EmptyCodeHash, types.EmptyCodeHash}, expHashes: 3, }, // The existing bytecodes { - nBytes: 10000, hashes: hcBytecodes, - expHashes: len(hcBytecodes), + desc: `Here we request all available contract codes. The server should deliver them all in one response.`, + nBytes: 100000, + hashes: allHashes, + expHashes: len(allHashes), }, // The existing, with limited byte arg { - nBytes: 1, hashes: hcBytecodes, + desc: `In this test, the request has a bytes limit of one. The server should deliver one item.`, + nBytes: 1, + hashes: allHashes, expHashes: 1, }, { - nBytes: 0, hashes: hcBytecodes, + desc: `In this test, the request has a bytes limit of zero. The server should deliver one item.`, + nBytes: 0, + hashes: allHashes, expHashes: 1, }, + // Request the same hash multiple times. { - nBytes: 1000, hashes: []common.Hash{hcBytecodes[0], hcBytecodes[0], hcBytecodes[0], hcBytecodes[0]}, + desc: `This test requests the same code hash multiple times. The server should deliver it multiple times.`, + nBytes: 1000, + hashes: []common.Hash{allHashes[0], allHashes[0], allHashes[0], allHashes[0]}, expHashes: 4, }, - } { + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" hashes: %x", tc.hashes) + t.Logf(" responseBytes: %d", tc.nBytes) if err := s.snapGetByteCodes(t, &tc); err != nil { - t.Errorf("test %d \n bytes: %d\n #hashes: %d\nfailed: %v", i, tc.nBytes, len(tc.hashes), err) + t.Errorf("failed: %v", err) } } } @@ -299,8 +547,10 @@ type trieNodesTest struct { paths []snap.TrieNodePathSet nBytes uint64 - expHashes []common.Hash - expReject bool + expHashes []common.Hash // expected response + expReject bool // if true, request should be rejected + + desc string } func decodeNibbles(nibbles []byte, bytes []byte) { @@ -344,29 +594,32 @@ func hexToCompact(hex []byte) []byte { // TestSnapTrieNodes various forms of GetTrieNodes requests. func (s *Suite) TestSnapTrieNodes(t *utesting.T) { - key := common.FromHex("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") - // helper function to iterate the key, and generate the compact-encoded - // trie paths along the way. - pathTo := func(length int) snap.TrieNodePathSet { - hex := keybytesToHex(key)[:length] - hex[len(hex)-1] = 0 // remove term flag - hKey := hexToCompact(hex) - return snap.TrieNodePathSet{hKey} - } - var accPaths []snap.TrieNodePathSet + var ( + // This is the known address of the snap storage testing contract. + storageAcct = common.HexToAddress("0x8bebc8ba651aee624937e7d897853ac30c95a067") + storageAcctHash = common.BytesToHash(s.chain.state[storageAcct].AddressHash) + // This is the known address of an existing account. + key = common.FromHex("0xa87387b50b481431c6ccdb9ae99a54d4dcdd4a3eff75d7b17b4818f7bbfc21e9") + empty = types.EmptyCodeHash + accPaths []snap.TrieNodePathSet + ) for i := 1; i <= 65; i++ { - accPaths = append(accPaths, pathTo(i)) + accPaths = append(accPaths, makeSnapPath(key, i)) } - empty := types.EmptyCodeHash - for i, tc := range []trieNodesTest{ + + tests := []trieNodesTest{ { - root: s.chain.RootAt(999), + desc: `In this test, we send an empty request to the node.`, + root: s.chain.Head().Root(), paths: nil, nBytes: 500, expHashes: nil, }, + { - root: s.chain.RootAt(999), + desc: `In this test, we send a request containing an empty path-set. +The server should reject the request.`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ {}, // zero-length pathset should 'abort' and kick us off {[]byte{0}}, @@ -375,18 +628,21 @@ func (s *Suite) TestSnapTrieNodes(t *utesting.T) { expHashes: []common.Hash{}, expReject: true, }, + { - root: s.chain.RootAt(999), + desc: `Here we request the root node of the trie. The server should respond with the root node.`, + root: s.chain.RootAt(int(s.chain.Head().NumberU64() - 1)), paths: []snap.TrieNodePathSet{ {[]byte{0}}, {[]byte{1}, []byte{0}}, }, - nBytes: 5000, - //0x6b3724a41b8c38b46d4d02fba2bb2074c47a507eb16a9a4b978f91d32e406faf - expHashes: []common.Hash{s.chain.RootAt(999)}, + nBytes: 5000, + expHashes: []common.Hash{s.chain.RootAt(int(s.chain.Head().NumberU64() - 1))}, }, + { // nonsensically long path - root: s.chain.RootAt(999), + desc: `In this test, we request a very long trie node path. The server should respond with an empty node (keccak256("")).`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ {[]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8}}, @@ -394,25 +650,19 @@ func (s *Suite) TestSnapTrieNodes(t *utesting.T) { nBytes: 5000, expHashes: []common.Hash{common.HexToHash("0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470")}, }, - { - root: s.chain.RootAt(0), - paths: []snap.TrieNodePathSet{ - {[]byte{0}}, - {[]byte{1}, []byte{0}}, - }, - nBytes: 5000, - expHashes: []common.Hash{ - common.HexToHash("0x1ee1bb2fbac4d46eab331f3e8551e18a0805d084ed54647883aa552809ca968d"), - }, - }, + { // The leaf is only a couple of levels down, so the continued trie traversal causes lookup failures. - root: s.chain.RootAt(999), + desc: `Here we request some known accounts from the state.`, + root: s.chain.Head().Root(), paths: accPaths, nBytes: 5000, expHashes: []common.Hash{ - common.HexToHash("0xbcefee69b37cca1f5bf3a48aebe08b35f2ea1864fa958bb0723d909a0e0d28d8"), - common.HexToHash("0x4fb1e4e2391e4b4da471d59641319b8fa25d76c973d4bec594d7b00a69ae5135"), + // It's a bit unfortunate these are hard-coded, but the result depends on + // a lot of aspects of the state trie and can't be guessed in a simple + // way. So you'll have to update this when the test chain is changed. + common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"), + common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"), empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, @@ -420,55 +670,84 @@ func (s *Suite) TestSnapTrieNodes(t *utesting.T) { empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty}, }, + { - // Basically the same as above, with different ordering - root: s.chain.RootAt(999), + desc: `In this test, we request some known accounts in state. The requested paths are NOT in key order.`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ accPaths[10], accPaths[1], accPaths[0], }, nBytes: 5000, + // As with the previous test, this result depends on the whole tree and will have to + // be updated when the test chain is changed. expHashes: []common.Hash{ empty, - common.HexToHash("0x4fb1e4e2391e4b4da471d59641319b8fa25d76c973d4bec594d7b00a69ae5135"), - common.HexToHash("0xbcefee69b37cca1f5bf3a48aebe08b35f2ea1864fa958bb0723d909a0e0d28d8"), + common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"), + common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"), }, }, + + // Storage tests. + // These use the known storage test account. + { - /* - A test against this account, requesting trie nodes for the storage trie + desc: `This test requests the storage root node of a known account.`, + root: s.chain.Head().Root(), + paths: []snap.TrieNodePathSet{ { - "balance": "0", - "nonce": 1, - "root": "0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "storage": { - "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "02", - "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "01", - "0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b": "03" - }, - "key": "0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844" - } - */ - root: s.chain.RootAt(999), + storageAcctHash[:], + []byte{0}, + }, + }, + nBytes: 5000, + expHashes: []common.Hash{ + common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790"), + }, + }, + + { + desc: `This test requests multiple storage nodes of a known account.`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ { - common.FromHex("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844"), + storageAcctHash[:], []byte{0}, + []byte{0x1b}, }, }, nBytes: 5000, expHashes: []common.Hash{ common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790"), + common.HexToHash("0xf4984a11f61a2921456141df88de6e1a710d28681b91af794c5a721e47839cd7"), }, }, - } { + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" root: %x", tc.root) + t.Logf(" paths: %x", tc.paths) + t.Logf(" responseBytes: %d", tc.nBytes) + if err := s.snapGetTrieNodes(t, &tc); err != nil { - t.Errorf("test %d \n #hashes %x\n root: %#x\n bytes: %d\nfailed: %v", i, len(tc.expHashes), tc.root, tc.nBytes, err) + t.Errorf(" failed: %v", err) } } } +func makeSnapPath(key []byte, length int) snap.TrieNodePathSet { + hex := keybytesToHex(key)[:length] + hex[len(hex)-1] = 0 // remove term flag + hKey := hexToCompact(hex) + return snap.TrieNodePathSet{hKey} +} + func (s *Suite) snapGetAccountRange(t *utesting.T, tc *accRangeTest) error { conn, err := s.dialSnap() if err != nil { @@ -479,22 +758,20 @@ func (s *Suite) snapGetAccountRange(t *utesting.T, tc *accRangeTest) error { t.Fatalf("peering failed: %v", err) } // write request - req := &GetAccountRange{ + req := &snap.GetAccountRangePacket{ ID: uint64(rand.Int63()), Root: tc.root, - Origin: tc.origin, - Limit: tc.limit, + Origin: tc.startingHash, + Limit: tc.limitHash, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetAccountRangeMsg, req) if err != nil { return fmt.Errorf("account range request failed: %v", err) } - var res *snap.AccountRangePacket - if r, ok := resp.(*AccountRange); !ok { - return fmt.Errorf("account range response wrong: %T %v", resp, resp) - } else { - res = (*snap.AccountRangePacket)(r) + res, ok := msg.(*snap.AccountRangePacket) + if !ok { + return fmt.Errorf("account range response wrong: %T %v", msg, msg) } if exp, got := tc.expAccounts, len(res.Accounts); exp != got { return fmt.Errorf("expected %d accounts, got %d", exp, got) @@ -536,7 +813,7 @@ func (s *Suite) snapGetAccountRange(t *utesting.T, tc *accRangeTest) error { } proofdb := nodes.Set() - _, err = trie.VerifyRangeProof(tc.root, tc.origin[:], keys, accounts, proofdb) + _, err = trie.VerifyRangeProof(tc.root, tc.startingHash[:], keys, accounts, proofdb) return err } @@ -549,8 +826,9 @@ func (s *Suite) snapGetStorageRanges(t *utesting.T, tc *stRangesTest) error { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } + // write request - req := &GetStorageRanges{ + req := &snap.GetStorageRangesPacket{ ID: uint64(rand.Int63()), Root: tc.root, Accounts: tc.accounts, @@ -558,28 +836,38 @@ func (s *Suite) snapGetStorageRanges(t *utesting.T, tc *stRangesTest) error { Limit: tc.limit, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetStorageRangesMsg, req) if err != nil { return fmt.Errorf("account range request failed: %v", err) } - var res *snap.StorageRangesPacket - if r, ok := resp.(*StorageRanges); !ok { - return fmt.Errorf("account range response wrong: %T %v", resp, resp) - } else { - res = (*snap.StorageRangesPacket)(r) + res, ok := msg.(*snap.StorageRangesPacket) + if !ok { + return fmt.Errorf("account range response wrong: %T %v", msg, msg) } - gotSlots := 0 + // Ensure the ranges are monotonically increasing for i, slots := range res.Slots { - gotSlots += len(slots) for j := 1; j < len(slots); j++ { if bytes.Compare(slots[j-1].Hash[:], slots[j].Hash[:]) >= 0 { return fmt.Errorf("storage slots not monotonically increasing for account #%d: #%d [%x] vs #%d [%x]", i, j-1, slots[j-1].Hash[:], j, slots[j].Hash[:]) } } } - if exp, got := tc.expSlots, gotSlots; exp != got { - return fmt.Errorf("expected %d slots, got %d", exp, got) + + // Compute expected slot hashes. + var expHashes [][]common.Hash + for _, acct := range tc.expSlots { + var list []common.Hash + for _, s := range acct { + list = append(list, s.Hash) + } + expHashes = append(expHashes, list) + } + + // Check response. + if !reflect.DeepEqual(res.Slots, tc.expSlots) { + t.Log(" expected slot hashes:", expHashes) + return fmt.Errorf("wrong storage slots in response: %#v", res.Slots) } return nil } @@ -594,24 +882,22 @@ func (s *Suite) snapGetByteCodes(t *utesting.T, tc *byteCodesTest) error { t.Fatalf("peering failed: %v", err) } // write request - req := &GetByteCodes{ + req := &snap.GetByteCodesPacket{ ID: uint64(rand.Int63()), Hashes: tc.hashes, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetByteCodesMsg, req) if err != nil { return fmt.Errorf("getBytecodes request failed: %v", err) } - var res *snap.ByteCodesPacket - if r, ok := resp.(*ByteCodes); !ok { - return fmt.Errorf("bytecodes response wrong: %T %v", resp, resp) - } else { - res = (*snap.ByteCodesPacket)(r) + res, ok := msg.(*snap.ByteCodesPacket) + if !ok { + return fmt.Errorf("bytecodes response wrong: %T %v", msg, msg) } if exp, got := tc.expHashes, len(res.Codes); exp != got { for i, c := range res.Codes { - fmt.Printf("%d. %#x\n", i, c) + t.Logf("%d. %#x\n", i, c) } return fmt.Errorf("expected %d bytecodes, got %d", exp, got) } @@ -654,25 +940,24 @@ func (s *Suite) snapGetTrieNodes(t *utesting.T, tc *trieNodesTest) error { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // write request - req := &GetTrieNodes{ + + // write0 request + req := &snap.GetTrieNodesPacket{ ID: uint64(rand.Int63()), Root: tc.root, Paths: tc.paths, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetTrieNodesMsg, req) if err != nil { if tc.expReject { return nil } return fmt.Errorf("trienodes request failed: %v", err) } - var res *snap.TrieNodesPacket - if r, ok := resp.(*TrieNodes); !ok { - return fmt.Errorf("trienodes response wrong: %T %v", resp, resp) - } else { - res = (*snap.TrieNodesPacket)(r) + res, ok := msg.(*snap.TrieNodesPacket) + if !ok { + return fmt.Errorf("trienodes response wrong: %T %v", msg, msg) } // Check the correctness @@ -690,7 +975,7 @@ func (s *Suite) snapGetTrieNodes(t *utesting.T, tc *trieNodesTest) error { hasher.Write(trienode) hasher.Read(hash) if got, want := hash, tc.expHashes[i]; !bytes.Equal(got, want[:]) { - fmt.Printf("hash %d wrong, got %#x, want %#x\n", i, got, want) + t.Logf(" hash %d wrong, got %#x, want %#x\n", i, got, want) err = fmt.Errorf("hash %d wrong, got %#x, want %#x", i, got, want) } } diff --git a/cmd/devp2p/internal/ethtest/snapTypes.go b/cmd/devp2p/internal/ethtest/snapTypes.go deleted file mode 100644 index 6bcaa9291a..0000000000 --- a/cmd/devp2p/internal/ethtest/snapTypes.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2022 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum 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 go-ethereum. If not, see . - -package ethtest - -import "github.com/ethereum/go-ethereum/eth/protocols/snap" - -// GetAccountRange represents an account range query. -type GetAccountRange snap.GetAccountRangePacket - -func (msg GetAccountRange) Code() int { return 33 } -func (msg GetAccountRange) ReqID() uint64 { return msg.ID } - -type AccountRange snap.AccountRangePacket - -func (msg AccountRange) Code() int { return 34 } -func (msg AccountRange) ReqID() uint64 { return msg.ID } - -type GetStorageRanges snap.GetStorageRangesPacket - -func (msg GetStorageRanges) Code() int { return 35 } -func (msg GetStorageRanges) ReqID() uint64 { return msg.ID } - -type StorageRanges snap.StorageRangesPacket - -func (msg StorageRanges) Code() int { return 36 } -func (msg StorageRanges) ReqID() uint64 { return msg.ID } - -type GetByteCodes snap.GetByteCodesPacket - -func (msg GetByteCodes) Code() int { return 37 } -func (msg GetByteCodes) ReqID() uint64 { return msg.ID } - -type ByteCodes snap.ByteCodesPacket - -func (msg ByteCodes) Code() int { return 38 } -func (msg ByteCodes) ReqID() uint64 { return msg.ID } - -type GetTrieNodes snap.GetTrieNodesPacket - -func (msg GetTrieNodes) Code() int { return 39 } -func (msg GetTrieNodes) ReqID() uint64 { return msg.ID } - -type TrieNodes snap.TrieNodesPacket - -func (msg TrieNodes) Code() int { return 40 } -func (msg TrieNodes) ReqID() uint64 { return msg.ID } diff --git a/cmd/devp2p/internal/ethtest/suite.go b/cmd/devp2p/internal/ethtest/suite.go index 0b56c8cf4b..dd42ec7f7f 100644 --- a/cmd/devp2p/internal/ethtest/suite.go +++ b/cmd/devp2p/internal/ethtest/suite.go @@ -17,35 +17,47 @@ package ethtest import ( - "time" + "crypto/rand" + "math/big" + "reflect" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus/misc/eip4844" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/crypto/kzg4844" "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/internal/utesting" + "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" + "github.com/holiman/uint256" ) // Suite represents a structure used to test a node's conformance // to the eth protocol. type Suite struct { - Dest *enode.Node - - chain *Chain - fullChain *Chain + Dest *enode.Node + chain *Chain + engine *EngineClient } // NewSuite creates and returns a new eth-test suite that can // be used to test the given node against the given blockchain // data. -func NewSuite(dest *enode.Node, chainfile string, genesisfile string) (*Suite, error) { - chain, err := loadChain(chainfile, genesisfile) +func NewSuite(dest *enode.Node, chainDir, engineURL, jwt string) (*Suite, error) { + chain, err := NewChain(chainDir) if err != nil { return nil, err } + engine, err := NewEngineClient(chainDir, engineURL, jwt) + if err != nil { + return nil, err + } + return &Suite{ - Dest: dest, - chain: chain.Shorten(1000), - fullChain: chain, + Dest: dest, + chain: chain, + engine: engine, }, nil } @@ -60,34 +72,30 @@ func (s *Suite) EthTests() []utesting.Test { {Name: "TestZeroRequestID", Fn: s.TestZeroRequestID}, // get block bodies {Name: "TestGetBlockBodies", Fn: s.TestGetBlockBodies}, - // broadcast - {Name: "TestBroadcast", Fn: s.TestBroadcast}, - {Name: "TestLargeAnnounce", Fn: s.TestLargeAnnounce}, - {Name: "TestOldAnnounce", Fn: s.TestOldAnnounce}, - {Name: "TestBlockHashAnnounce", Fn: s.TestBlockHashAnnounce}, - // malicious handshakes + status + // // malicious handshakes + status {Name: "TestMaliciousHandshake", Fn: s.TestMaliciousHandshake}, {Name: "TestMaliciousStatus", Fn: s.TestMaliciousStatus}, // test transactions {Name: "TestTransaction", Fn: s.TestTransaction}, - {Name: "TestMaliciousTx", Fn: s.TestMaliciousTx}, + {Name: "TestInvalidTxs", Fn: s.TestInvalidTxs}, {Name: "TestLargeTxRequest", Fn: s.TestLargeTxRequest}, {Name: "TestNewPooledTxs", Fn: s.TestNewPooledTxs}, + {Name: "TestBlobViolations", Fn: s.TestBlobViolations}, } } func (s *Suite) SnapTests() []utesting.Test { return []utesting.Test{ - {Name: "TestSnapStatus", Fn: s.TestSnapStatus}, - {Name: "TestSnapAccountRange", Fn: s.TestSnapGetAccountRange}, - {Name: "TestSnapGetByteCodes", Fn: s.TestSnapGetByteCodes}, - {Name: "TestSnapGetTrieNodes", Fn: s.TestSnapTrieNodes}, - {Name: "TestSnapGetStorageRanges", Fn: s.TestSnapGetStorageRanges}, + {Name: "Status", Fn: s.TestSnapStatus}, + {Name: "AccountRange", Fn: s.TestSnapGetAccountRange}, + {Name: "GetByteCodes", Fn: s.TestSnapGetByteCodes}, + {Name: "GetTrieNodes", Fn: s.TestSnapTrieNodes}, + {Name: "GetStorageRanges", Fn: s.TestSnapGetStorageRanges}, } } -// TestStatus attempts to connect to the given node and exchange -// a status message with it on the eth protocol. +// TestStatus attempts to connect to the given node and exchange a status +// message with it on the eth protocol. func (s *Suite) TestStatus(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -99,8 +107,13 @@ func (s *Suite) TestStatus(t *utesting.T) { } } -// TestGetBlockHeaders tests whether the given node can respond to -// an eth `GetBlockHeaders` request and that the response is accurate. +// headersMatch returns whether the received headers match the given request +func headersMatch(expected []*types.Header, headers []*types.Header) bool { + return reflect.DeepEqual(expected, headers) +} + +// TestGetBlockHeaders tests whether the given node can respond to an eth +// `GetBlockHeaders` request and that the response is accurate. func (s *Suite) TestGetBlockHeaders(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -110,8 +123,9 @@ func (s *Suite) TestGetBlockHeaders(t *utesting.T) { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // write request - req := &GetBlockHeaders{ + // Send headers request. + req := ð.GetBlockHeadersPacket{ + RequestId: 33, GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Hash: s.chain.blocks[1].Hash()}, Amount: 2, @@ -119,25 +133,31 @@ func (s *Suite) TestGetBlockHeaders(t *utesting.T) { Reverse: false, }, } - headers, err := conn.headersRequest(req, s.chain, 33) - if err != nil { - t.Fatalf("could not get block headers: %v", err) + // Read headers response. + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req); err != nil { + t.Fatalf("could not write to connection: %v", err) + } + headers := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers); err != nil { + t.Fatalf("error reading msg: %v", err) } - // check for correct headers + if got, want := headers.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id") + } + // Check for correct headers. expected, err := s.chain.GetHeaders(req) if err != nil { t.Fatalf("failed to get headers for given request: %v", err) } - if !headersMatch(expected, headers) { + if !headersMatch(expected, headers.BlockHeadersRequest) { t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers) } } -// TestSimultaneousRequests sends two simultaneous `GetBlockHeader` requests from -// the same connection with different request IDs and checks to make sure the node -// responds with the correct headers per request. +// TestSimultaneousRequests sends two simultaneous `GetBlockHeader` requests +// from the same connection with different request IDs and checks to make sure +// the node responds with the correct headers per request. func (s *Suite) TestSimultaneousRequests(t *utesting.T) { - // create a connection conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -147,8 +167,8 @@ func (s *Suite) TestSimultaneousRequests(t *utesting.T) { t.Fatalf("peering failed: %v", err) } - // create two requests - req1 := &GetBlockHeaders{ + // Create two different requests. + req1 := ð.GetBlockHeadersPacket{ RequestId: uint64(111), GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -159,7 +179,7 @@ func (s *Suite) TestSimultaneousRequests(t *utesting.T) { Reverse: false, }, } - req2 := &GetBlockHeaders{ + req2 := ð.GetBlockHeadersPacket{ RequestId: uint64(222), GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -171,46 +191,45 @@ func (s *Suite) TestSimultaneousRequests(t *utesting.T) { }, } - // write the first request - if err := conn.Write(req1); err != nil { + // Send both requests. + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req1); err != nil { t.Fatalf("failed to write to connection: %v", err) } - // write the second request - if err := conn.Write(req2); err != nil { + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req2); err != nil { t.Fatalf("failed to write to connection: %v", err) } - // wait for responses - msg := conn.waitForResponse(s.chain, timeout, req1.RequestId) - headers1, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + // Wait for responses. + headers1 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers1); err != nil { + t.Fatalf("error reading block headers msg: %v", err) + } + if got, want := headers1.RequestId, req1.RequestId; got != want { + t.Fatalf("unexpected request id in response: got %d, want %d", got, want) + } + headers2 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers2); err != nil { + t.Fatalf("error reading block headers msg: %v", err) } - msg = conn.waitForResponse(s.chain, timeout, req2.RequestId) - headers2, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + if got, want := headers2.RequestId, req2.RequestId; got != want { + t.Fatalf("unexpected request id in response: got %d, want %d", got, want) } - // check received headers for accuracy - expected1, err := s.chain.GetHeaders(req1) - if err != nil { + // Check received headers for accuracy. + if expected, err := s.chain.GetHeaders(req1); err != nil { t.Fatalf("failed to get expected headers for request 1: %v", err) + } else if !headersMatch(expected, headers1.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers1) } - expected2, err := s.chain.GetHeaders(req2) - if err != nil { + if expected, err := s.chain.GetHeaders(req2); err != nil { t.Fatalf("failed to get expected headers for request 2: %v", err) - } - if !headersMatch(expected1, headers1.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected1, headers1) - } - if !headersMatch(expected2, headers2.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected2, headers2) + } else if !headersMatch(expected, headers2.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers2) } } -// TestSameRequestID sends two requests with the same request ID to a -// single node. +// TestSameRequestID sends two requests with the same request ID to a single +// node. func (s *Suite) TestSameRequestID(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -220,9 +239,10 @@ func (s *Suite) TestSameRequestID(t *utesting.T) { if err := conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // create requests + + // Create two different requests with the same ID. reqID := uint64(1234) - request1 := &GetBlockHeaders{ + request1 := ð.GetBlockHeadersPacket{ RequestId: reqID, GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -231,7 +251,7 @@ func (s *Suite) TestSameRequestID(t *utesting.T) { Amount: 2, }, } - request2 := &GetBlockHeaders{ + request2 := ð.GetBlockHeadersPacket{ RequestId: reqID, GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -241,40 +261,40 @@ func (s *Suite) TestSameRequestID(t *utesting.T) { }, } - // write the requests - if err = conn.Write(request1); err != nil { + // Send the requests. + if err = conn.Write(ethProto, eth.GetBlockHeadersMsg, request1); err != nil { t.Fatalf("failed to write to connection: %v", err) } - if err = conn.Write(request2); err != nil { + if err = conn.Write(ethProto, eth.GetBlockHeadersMsg, request2); err != nil { t.Fatalf("failed to write to connection: %v", err) } - // wait for responses - msg := conn.waitForResponse(s.chain, timeout, reqID) - headers1, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + // Wait for the responses. + headers1 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers1); err != nil { + t.Fatalf("error reading from connection: %v", err) + } + if got, want := headers1.RequestId, request1.RequestId; got != want { + t.Fatalf("unexpected request id: got %d, want %d", got, want) + } + headers2 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers2); err != nil { + t.Fatalf("error reading from connection: %v", err) } - msg = conn.waitForResponse(s.chain, timeout, reqID) - headers2, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + if got, want := headers2.RequestId, request2.RequestId; got != want { + t.Fatalf("unexpected request id: got %d, want %d", got, want) } - // check if headers match - expected1, err := s.chain.GetHeaders(request1) - if err != nil { + // Check if headers match. + if expected, err := s.chain.GetHeaders(request1); err != nil { t.Fatalf("failed to get expected block headers: %v", err) + } else if !headersMatch(expected, headers1.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers1) } - expected2, err := s.chain.GetHeaders(request2) - if err != nil { + if expected, err := s.chain.GetHeaders(request2); err != nil { t.Fatalf("failed to get expected block headers: %v", err) - } - if !headersMatch(expected1, headers1.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected1, headers1) - } - if !headersMatch(expected2, headers2.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected2, headers2) + } else if !headersMatch(expected, headers2.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers2) } } @@ -289,27 +309,32 @@ func (s *Suite) TestZeroRequestID(t *utesting.T) { if err := conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - req := &GetBlockHeaders{ + req := ð.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Number: 0}, Amount: 2, }, } - headers, err := conn.headersRequest(req, s.chain, 0) - if err != nil { - t.Fatalf("failed to get block headers: %v", err) + // Read headers response. + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req); err != nil { + t.Fatalf("could not write to connection: %v", err) } - expected, err := s.chain.GetHeaders(req) - if err != nil { - t.Fatalf("failed to get expected block headers: %v", err) + headers := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers); err != nil { + t.Fatalf("error reading msg: %v", err) + } + if got, want := headers.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id") } - if !headersMatch(expected, headers) { + if expected, err := s.chain.GetHeaders(req); err != nil { + t.Fatalf("failed to get expected block headers: %v", err) + } else if !headersMatch(expected, headers.BlockHeadersRequest) { t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers) } } -// TestGetBlockBodies tests whether the given node can respond to -// a `GetBlockBodies` request and that the response is accurate. +// TestGetBlockBodies tests whether the given node can respond to a +// `GetBlockBodies` request and that the response is accurate. func (s *Suite) TestGetBlockBodies(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -319,104 +344,110 @@ func (s *Suite) TestGetBlockBodies(t *utesting.T) { if err := conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // create block bodies request - req := &GetBlockBodies{ - RequestId: uint64(55), + // Create block bodies request. + req := ð.GetBlockBodiesPacket{ + RequestId: 55, GetBlockBodiesRequest: eth.GetBlockBodiesRequest{ s.chain.blocks[54].Hash(), s.chain.blocks[75].Hash(), }, } - if err := conn.Write(req); err != nil { + if err := conn.Write(ethProto, eth.GetBlockBodiesMsg, req); err != nil { t.Fatalf("could not write to connection: %v", err) } - // wait for block bodies response - msg := conn.waitForResponse(s.chain, timeout, req.RequestId) - resp, ok := msg.(*BlockBodies) - if !ok { - t.Fatalf("unexpected: %s", pretty.Sdump(msg)) + // Wait for response. + resp := new(eth.BlockBodiesPacket) + if err := conn.ReadMsg(ethProto, eth.BlockBodiesMsg, &resp); err != nil { + t.Fatalf("error reading block bodies msg: %v", err) + } + if got, want := resp.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id in respond", got, want) } bodies := resp.BlockBodiesResponse - t.Logf("received %d block bodies", len(bodies)) if len(bodies) != len(req.GetBlockBodiesRequest) { - t.Fatalf("wrong bodies in response: expected %d bodies, "+ - "got %d", len(req.GetBlockBodiesRequest), len(bodies)) + t.Fatalf("wrong bodies in response: expected %d bodies, got %d", len(req.GetBlockBodiesRequest), len(bodies)) } } -// TestBroadcast tests whether a block announcement is correctly -// propagated to the node's peers. -func (s *Suite) TestBroadcast(t *utesting.T) { - if err := s.sendNextBlock(); err != nil { - t.Fatalf("block broadcast failed: %v", err) - } +// randBuf makes a random buffer size kilobytes large. +func randBuf(size int) []byte { + buf := make([]byte, size*1024) + rand.Read(buf) + return buf } -// TestLargeAnnounce tests the announcement mechanism with a large block. -func (s *Suite) TestLargeAnnounce(t *utesting.T) { - nextBlock := len(s.chain.blocks) - blocks := []*NewBlock{ +// TestMaliciousHandshake tries to send malicious data during the handshake. +func (s *Suite) TestMaliciousHandshake(t *utesting.T) { + key, _ := crypto.GenerateKey() + + // Write hello to client. + var ( + pub0 = crypto.FromECDSAPub(&key.PublicKey)[1:] + version = eth.ProtocolVersions[0] + ) + handshakes := []*protoHandshake{ { - Block: largeBlock(), - TD: s.fullChain.TotalDifficultyAt(nextBlock), + Version: 5, + Caps: []p2p.Cap{ + {Name: string(randBuf(2)), Version: version}, + }, + ID: pub0, }, { - Block: s.fullChain.blocks[nextBlock], - TD: largeNumber(2), + Version: 5, + Caps: []p2p.Cap{ + {Name: "eth", Version: version}, + }, + ID: append(pub0, byte(0)), }, { - Block: largeBlock(), - TD: largeNumber(2), + Version: 5, + Caps: []p2p.Cap{ + {Name: "eth", Version: version}, + }, + ID: append(pub0, pub0...), + }, + { + Version: 5, + Caps: []p2p.Cap{ + {Name: "eth", Version: version}, + }, + ID: randBuf(2), + }, + { + Version: 5, + Caps: []p2p.Cap{ + {Name: string(randBuf(2)), Version: version}, + }, + ID: randBuf(2), }, } - - for i, blockAnnouncement := range blocks[0:3] { - t.Logf("Testing malicious announcement: %v\n", i) - conn, err := s.dial() + for _, handshake := range handshakes { + conn, err := s.dialAs(key) if err != nil { t.Fatalf("dial failed: %v", err) } - if err := conn.peer(s.chain, nil); err != nil { - t.Fatalf("peering failed: %v", err) - } - if err := conn.Write(blockAnnouncement); err != nil { + defer conn.Close() + + if err := conn.Write(ethProto, handshakeMsg, handshake); err != nil { t.Fatalf("could not write to connection: %v", err) } - // Invalid announcement, check that peer disconnected - switch msg := conn.readAndServe(s.chain, 8*time.Second).(type) { - case *Disconnect: - case *Error: - break - default: - t.Fatalf("unexpected: %s wanted disconnect", pretty.Sdump(msg)) + // Check that the peer disconnected + for i := 0; i < 2; i++ { + code, _, err := conn.Read() + if err != nil { + // Client may have disconnected without sending disconnect msg. + continue + } + switch code { + case discMsg: + case handshakeMsg: + // Discard one hello as Hello's are sent concurrently + continue + default: + t.Fatalf("unexpected msg: code %d", code) + } } - conn.Close() - } - // Test the last block as a valid block - if err := s.sendNextBlock(); err != nil { - t.Fatalf("failed to broadcast next block: %v", err) - } -} - -// TestOldAnnounce tests the announcement mechanism with an old block. -func (s *Suite) TestOldAnnounce(t *utesting.T) { - if err := s.oldAnnounce(); err != nil { - t.Fatal(err) - } -} - -// TestBlockHashAnnounce sends a new block hash announcement and expects -// the node to perform a `GetBlockHeaders` request. -func (s *Suite) TestBlockHashAnnounce(t *utesting.T) { - if err := s.hashAnnounce(); err != nil { - t.Fatalf("block hash announcement failed: %v", err) - } -} - -// TestMaliciousHandshake tries to send malicious data during the handshake. -func (s *Suite) TestMaliciousHandshake(t *utesting.T) { - if err := s.maliciousHandshakes(t); err != nil { - t.Fatal(err) } } @@ -427,46 +458,184 @@ func (s *Suite) TestMaliciousStatus(t *utesting.T) { t.Fatalf("dial failed: %v", err) } defer conn.Close() - - if err := s.maliciousStatus(conn); err != nil { - t.Fatal(err) + if err := conn.handshake(); err != nil { + t.Fatalf("handshake failed: %v", err) + } + // Create status with large total difficulty. + status := ð.StatusPacket{ + ProtocolVersion: uint32(conn.negotiatedProtoVersion), + NetworkID: s.chain.config.ChainID.Uint64(), + TD: new(big.Int).SetBytes(randBuf(2048)), + Head: s.chain.Head().Hash(), + Genesis: s.chain.GetBlock(0).Hash(), + ForkID: s.chain.ForkID(), + } + if err := conn.statusExchange(s.chain, status); err != nil { + t.Fatalf("status exchange failed: %v", err) + } + // Wait for disconnect. + code, _, err := conn.Read() + if err != nil { + t.Fatalf("error reading from connection: %v", err) + } + switch code { + case discMsg: + break + default: + t.Fatalf("expected disconnect, got: %d", code) } } -// TestTransaction sends a valid transaction to the node and -// checks if the transaction gets propagated. +// TestTransaction sends a valid transaction to the node and checks if the +// transaction gets propagated. func (s *Suite) TestTransaction(t *utesting.T) { - if err := s.sendSuccessfulTxs(t); err != nil { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { + t.Fatalf("failed to send next block: %v", err) + } + from, nonce := s.chain.GetSender(0) + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 30000, + To: &common.Address{0xaa}, + Value: common.Big1, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: %v", err) + } + if err := s.sendTxs([]*types.Transaction{tx}); err != nil { t.Fatal(err) } + s.chain.IncNonce(from, 1) } -// TestMaliciousTx sends several invalid transactions and tests whether +// TestInvalidTxs sends several invalid transactions and tests whether // the node will propagate them. -func (s *Suite) TestMaliciousTx(t *utesting.T) { - if err := s.sendMaliciousTxs(t); err != nil { - t.Fatal(err) +func (s *Suite) TestInvalidTxs(t *utesting.T) { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { + t.Fatalf("failed to send next block: %v", err) + } + + from, nonce := s.chain.GetSender(0) + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 30000, + To: &common.Address{0xaa}, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: %v", err) + } + if err := s.sendTxs([]*types.Transaction{tx}); err != nil { + t.Fatalf("failed to send txs: %v", err) + } + s.chain.IncNonce(from, 1) + + inners := []*types.DynamicFeeTx{ + // Nonce already used + { + ChainID: s.chain.config.ChainID, + Nonce: nonce - 1, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 100000, + }, + // Value exceeds balance + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 100000, + Value: s.chain.Balance(from), + }, + // Gas limit too low + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 1337, + }, + // Code size too large + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Data: randBuf(50), + Gas: 1_000_000, + }, + // Data too large + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + To: &common.Address{0xaa}, + Data: randBuf(128), + Gas: 5_000_000, + }, + } + + var txs []*types.Transaction + for _, inner := range inners { + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: %v", err) + } + txs = append(txs, tx) + } + if err := s.sendInvalidTxs(txs); err != nil { + t.Fatalf("failed to send invalid txs: %v", err) } } // TestLargeTxRequest tests whether a node can fulfill a large GetPooledTransactions // request. func (s *Suite) TestLargeTxRequest(t *utesting.T) { - // send the next block to ensure the node is no longer syncing and - // is able to accept txs - if err := s.sendNextBlock(); err != nil { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { t.Fatalf("failed to send next block: %v", err) } - // send 2000 transactions to the node - hashMap, txs, err := generateTxs(s, 2000) - if err != nil { - t.Fatalf("failed to generate transactions: %v", err) + + // Generate many transactions to seed target with. + var ( + from, nonce = s.chain.GetSender(1) + count = 2000 + txs []*types.Transaction + hashes []common.Hash + set = make(map[common.Hash]struct{}) + ) + for i := 0; i < count; i++ { + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce + uint64(i), + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 75000, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: err") + } + txs = append(txs, tx) + set[tx.Hash()] = struct{}{} + hashes = append(hashes, tx.Hash()) } - if err = sendMultipleSuccessfulTxs(t, s, txs); err != nil { - t.Fatalf("failed to send multiple txs: %v", err) + s.chain.IncNonce(from, uint64(count)) + + // Send txs. + if err := s.sendTxs(txs); err != nil { + t.Fatalf("failed to send txs: %v", err) } - // set up connection to receive to ensure node is peered with the receiving connection - // before tx request is sent + + // Set up receive connection to ensure node is peered with the receiving + // connection before tx request is sent. conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -475,55 +644,62 @@ func (s *Suite) TestLargeTxRequest(t *utesting.T) { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // create and send pooled tx request - hashes := make([]common.Hash, 0) - for _, hash := range hashMap { - hashes = append(hashes, hash) - } - getTxReq := &GetPooledTransactions{ + // Create and send pooled tx request. + req := ð.GetPooledTransactionsPacket{ RequestId: 1234, GetPooledTransactionsRequest: hashes, } - if err = conn.Write(getTxReq); err != nil { + if err = conn.Write(ethProto, eth.GetPooledTransactionsMsg, req); err != nil { t.Fatalf("could not write to conn: %v", err) } - // check that all received transactions match those that were sent to node - switch msg := conn.waitForResponse(s.chain, timeout, getTxReq.RequestId).(type) { - case *PooledTransactions: - for _, gotTx := range msg.PooledTransactionsResponse { - if _, exists := hashMap[gotTx.Hash()]; !exists { - t.Fatalf("unexpected tx received: %v", gotTx.Hash()) - } + // Check that all received transactions match those that were sent to node. + msg := new(eth.PooledTransactionsPacket) + if err := conn.ReadMsg(ethProto, eth.PooledTransactionsMsg, &msg); err != nil { + t.Fatalf("error reading from connection: %v", err) + } + if got, want := msg.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id in response: got %d, want %d", got, want) + } + for _, got := range msg.PooledTransactionsResponse { + if _, exists := set[got.Hash()]; !exists { + t.Fatalf("unexpected tx received: %v", got.Hash()) } - default: - t.Fatalf("unexpected %s", pretty.Sdump(msg)) } } -// TestNewPooledTxs tests whether a node will do a GetPooledTransactions -// request upon receiving a NewPooledTransactionHashes announcement. +// TestNewPooledTxs tests whether a node will do a GetPooledTransactions request +// upon receiving a NewPooledTransactionHashes announcement. func (s *Suite) TestNewPooledTxs(t *utesting.T) { - // send the next block to ensure the node is no longer syncing and - // is able to accept txs - if err := s.sendNextBlock(); err != nil { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { t.Fatalf("failed to send next block: %v", err) } - - // generate 50 txs - _, txs, err := generateTxs(s, 50) - if err != nil { - t.Fatalf("failed to generate transactions: %v", err) - } - hashes := make([]common.Hash, len(txs)) - types := make([]byte, len(txs)) - sizes := make([]uint32, len(txs)) - for i, tx := range txs { + var ( + count = 50 + from, nonce = s.chain.GetSender(1) + hashes = make([]common.Hash, count) + txTypes = make([]byte, count) + sizes = make([]uint32, count) + ) + for i := 0; i < count; i++ { + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce + uint64(i), + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 75000, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: err") + } hashes[i] = tx.Hash() - types[i] = tx.Type() + txTypes[i] = tx.Type() sizes[i] = uint32(tx.Size()) } + s.chain.IncNonce(from, uint64(count)) - // send announcement + // Connect to peer. conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -533,40 +709,138 @@ func (s *Suite) TestNewPooledTxs(t *utesting.T) { t.Fatalf("peering failed: %v", err) } - var ann Message = NewPooledTransactionHashes{Types: types, Sizes: sizes, Hashes: hashes} - if conn.negotiatedProtoVersion < eth.ETH68 { - ann = NewPooledTransactionHashes66(hashes) - } - err = conn.Write(ann) + // Send announcement. + ann := eth.NewPooledTransactionHashesPacket68{Types: txTypes, Sizes: sizes, Hashes: hashes} + err = conn.Write(ethProto, eth.NewPooledTransactionHashesMsg, ann) if err != nil { t.Fatalf("failed to write to connection: %v", err) } - // wait for GetPooledTxs request + // Wait for GetPooledTxs request. for { - msg := conn.readAndServe(s.chain, timeout) + msg, err := conn.ReadEth() + if err != nil { + t.Fatalf("failed to read eth msg: %v", err) + } switch msg := msg.(type) { - case *GetPooledTransactions: + case *eth.GetPooledTransactionsPacket: if len(msg.GetPooledTransactionsRequest) != len(hashes) { t.Fatalf("unexpected number of txs requested: wanted %d, got %d", len(hashes), len(msg.GetPooledTransactionsRequest)) } return - - // ignore propagated txs from previous tests - case *NewPooledTransactionHashes66: + case *eth.NewPooledTransactionHashesPacket68: continue - case *NewPooledTransactionHashes: - continue - case *Transactions: - continue - - // ignore block announcements from previous tests - case *NewBlockHashes: - continue - case *NewBlock: + case *eth.TransactionsPacket: continue default: t.Fatalf("unexpected %s", pretty.Sdump(msg)) } } } + +func makeSidecar(data ...byte) *types.BlobTxSidecar { + var ( + blobs = make([]kzg4844.Blob, len(data)) + commitments []kzg4844.Commitment + proofs []kzg4844.Proof + ) + for i := range blobs { + blobs[i][0] = data[i] + c, _ := kzg4844.BlobToCommitment(blobs[i]) + p, _ := kzg4844.ComputeBlobProof(blobs[i], c) + commitments = append(commitments, c) + proofs = append(proofs, p) + } + return &types.BlobTxSidecar{ + Blobs: blobs, + Commitments: commitments, + Proofs: proofs, + } +} + +func (s *Suite) makeBlobTxs(count, blobs int, discriminator byte) (txs types.Transactions) { + from, nonce := s.chain.GetSender(5) + for i := 0; i < count; i++ { + // Make blob data, max of 2 blobs per tx. + blobdata := make([]byte, blobs%2) + for i := range blobdata { + blobdata[i] = discriminator + blobs -= 1 + } + inner := &types.BlobTx{ + ChainID: uint256.MustFromBig(s.chain.config.ChainID), + Nonce: nonce + uint64(i), + GasTipCap: uint256.NewInt(1), + GasFeeCap: uint256.MustFromBig(s.chain.Head().BaseFee()), + Gas: 100000, + BlobFeeCap: uint256.MustFromBig(eip4844.CalcBlobFee(*s.chain.Head().ExcessBlobGas())), + BlobHashes: makeSidecar(blobdata...).BlobHashes(), + Sidecar: makeSidecar(blobdata...), + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + panic("blob tx signing failed") + } + txs = append(txs, tx) + } + return txs +} + +func (s *Suite) TestBlobViolations(t *utesting.T) { + if err := s.engine.sendForkchoiceUpdated(); err != nil { + t.Fatalf("send fcu failed: %v", err) + } + // Create blob txs for each tests with unqiue tx hashes. + var ( + t1 = s.makeBlobTxs(2, 3, 0x1) + t2 = s.makeBlobTxs(2, 3, 0x2) + ) + for _, test := range []struct { + ann eth.NewPooledTransactionHashesPacket68 + resp eth.PooledTransactionsResponse + }{ + // Invalid tx size. + { + ann: eth.NewPooledTransactionHashesPacket68{ + Types: []byte{types.BlobTxType, types.BlobTxType}, + Sizes: []uint32{uint32(t1[0].Size()), uint32(t1[1].Size() + 10)}, + Hashes: []common.Hash{t1[0].Hash(), t1[1].Hash()}, + }, + resp: eth.PooledTransactionsResponse(t1), + }, + // Wrong tx type. + { + ann: eth.NewPooledTransactionHashesPacket68{ + Types: []byte{types.DynamicFeeTxType, types.BlobTxType}, + Sizes: []uint32{uint32(t2[0].Size()), uint32(t2[1].Size())}, + Hashes: []common.Hash{t2[0].Hash(), t2[1].Hash()}, + }, + resp: eth.PooledTransactionsResponse(t2), + }, + } { + conn, err := s.dial() + if err != nil { + t.Fatalf("dial fail: %v", err) + } + if err := conn.peer(s.chain, nil); err != nil { + t.Fatalf("peering failed: %v", err) + } + if err := conn.Write(ethProto, eth.NewPooledTransactionHashesMsg, test.ann); err != nil { + t.Fatalf("sending announcement failed: %v", err) + } + req := new(eth.GetPooledTransactionsPacket) + if err := conn.ReadMsg(ethProto, eth.GetPooledTransactionsMsg, req); err != nil { + t.Fatalf("reading pooled tx request failed: %v", err) + } + resp := eth.PooledTransactionsPacket{RequestId: req.RequestId, PooledTransactionsResponse: test.resp} + if err := conn.Write(ethProto, eth.PooledTransactionsMsg, resp); err != nil { + t.Fatalf("writing pooled tx response failed: %v", err) + } + if code, _, err := conn.Read(); err != nil { + t.Fatalf("expected disconnect on blob violation, got err: %v", err) + } else if code != discMsg { + t.Fatalf("expected disconnect on blob violation, got msg code: %d", code) + } + conn.Close() + } +} diff --git a/cmd/devp2p/internal/ethtest/suite_test.go b/cmd/devp2p/internal/ethtest/suite_test.go index b11cdb5b88..79146c8aba 100644 --- a/cmd/devp2p/internal/ethtest/suite_test.go +++ b/cmd/devp2p/internal/ethtest/suite_test.go @@ -17,38 +17,53 @@ package ethtest import ( + crand "crypto/rand" + "fmt" "os" + "path" "testing" "time" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/eth" + "github.com/ethereum/go-ethereum/eth/catalyst" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/internal/utesting" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p" ) -var ( - genesisFile = "./testdata/genesis.json" - halfchainFile = "./testdata/halfchain.rlp" - fullchainFile = "./testdata/chain.rlp" -) +func makeJWTSecret() (string, [32]byte, error) { + var secret [32]byte + if _, err := crand.Read(secret[:]); err != nil { + return "", secret, fmt.Errorf("failed to create jwt secret: %v", err) + } + jwtPath := path.Join(os.TempDir(), "jwt_secret") + if err := os.WriteFile(jwtPath, []byte(hexutil.Encode(secret[:])), 0600); err != nil { + return "", secret, fmt.Errorf("failed to prepare jwt secret file: %v", err) + } + return jwtPath, secret, nil +} func TestEthSuite(t *testing.T) { - t.Parallel() - geth, err := runGeth() + jwtPath, secret, err := makeJWTSecret() + if err != nil { + t.Fatalf("could not make jwt secret: %v", err) + } + geth, err := runGeth("./testdata", jwtPath) if err != nil { t.Fatalf("could not run geth: %v", err) } defer geth.Close() - suite, err := NewSuite(geth.Server().Self(), fullchainFile, genesisFile) + suite, err := NewSuite(geth.Server().Self(), "./testdata", geth.HTTPAuthEndpoint(), common.Bytes2Hex(secret[:])) if err != nil { t.Fatalf("could not create new test suite: %v", err) } for _, test := range suite.EthTests() { t.Run(test.Name, func(t *testing.T) { - result := utesting.RunTAP([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) + result := utesting.RunTests([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) if result[0].Failed { t.Fatal() } @@ -57,20 +72,23 @@ func TestEthSuite(t *testing.T) { } func TestSnapSuite(t *testing.T) { - t.Parallel() - geth, err := runGeth() + jwtPath, secret, err := makeJWTSecret() + if err != nil { + t.Fatalf("could not make jwt secret: %v", err) + } + geth, err := runGeth("./testdata", jwtPath) if err != nil { t.Fatalf("could not run geth: %v", err) } defer geth.Close() - suite, err := NewSuite(geth.Server().Self(), fullchainFile, genesisFile) + suite, err := NewSuite(geth.Server().Self(), "./testdata", geth.HTTPAuthEndpoint(), common.Bytes2Hex(secret[:])) if err != nil { t.Fatalf("could not create new test suite: %v", err) } for _, test := range suite.SnapTests() { t.Run(test.Name, func(t *testing.T) { - result := utesting.RunTAP([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) + result := utesting.RunTests([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) if result[0].Failed { t.Fatal() } @@ -79,20 +97,23 @@ func TestSnapSuite(t *testing.T) { } // runGeth creates and starts a geth node -func runGeth() (*node.Node, error) { +func runGeth(dir string, jwtPath string) (*node.Node, error) { stack, err := node.New(&node.Config{ + AuthAddr: "127.0.0.1", + AuthPort: 0, P2P: p2p.Config{ ListenAddr: "127.0.0.1:0", NoDiscovery: true, MaxPeers: 10, // in case a test requires multiple connections, can be changed in the future NoDial: true, }, + JWTSecret: jwtPath, }) if err != nil { return nil, err } - err = setupGeth(stack) + err = setupGeth(stack, dir) if err != nil { stack.Close() return nil, err @@ -104,12 +125,11 @@ func runGeth() (*node.Node, error) { return stack, nil } -func setupGeth(stack *node.Node) error { - chain, err := loadChain(halfchainFile, genesisFile) +func setupGeth(stack *node.Node, dir string) error { + chain, err := NewChain(dir) if err != nil { return err } - backend, err := eth.New(stack, ðconfig.Config{ Genesis: &chain.genesis, NetworkId: chain.genesis.Config.ChainID.Uint64(), // 19763 @@ -122,8 +142,9 @@ func setupGeth(stack *node.Node) error { if err != nil { return err } - backend.SetSynced() - + if err := catalyst.Register(stack, backend); err != nil { + return fmt.Errorf("failed to register catalyst service: %v", err) + } _, err = backend.BlockChain().InsertChain(chain.blocks[1:]) return err } diff --git a/cmd/devp2p/internal/ethtest/testdata/accounts.json b/cmd/devp2p/internal/ethtest/testdata/accounts.json new file mode 100644 index 0000000000..c9666235a8 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/testdata/accounts.json @@ -0,0 +1,62 @@ +{ + "0x0c2c51a0990aee1d73c1228de158688341557508": { + "key": "0xbfcd0e032489319f4e5ca03e643b2025db624be6cf99cbfed90c4502e3754850" + }, + "0x14e46043e63d0e3cdcf2530519f4cfaf35058cb2": { + "key": "0x457075f6822ac29481154792f65c5f1ec335b4fea9ca20f3fea8fa1d78a12c68" + }, + "0x16c57edf7fa9d9525378b0b81bf8a3ced0620c1c": { + "key": "0x865898edcf43206d138c93f1bbd86311f4657b057658558888aa5ac4309626a6" + }, + "0x1f4924b14f34e24159387c0a4cdbaa32f3ddb0cf": { + "key": "0xee7f7875d826d7443ccc5c174e38b2c436095018774248a8074ee92d8914dcdb" + }, + "0x1f5bde34b4afc686f136c7a3cb6ec376f7357759": { + "key": "0x25e6ce8611cefb5cd338aeaa9292ed2139714668d123a4fb156cabb42051b5b7" + }, + "0x2d389075be5be9f2246ad654ce152cf05990b209": { + "key": "0x19168cd7767604b3d19b99dc3da1302b9ccb6ee9ad61660859e07acd4a2625dd" + }, + "0x3ae75c08b4c907eb63a8960c45b86e1e9ab6123c": { + "key": "0x71aa7d299c7607dabfc3d0e5213d612b5e4a97455b596c2f642daac43fa5eeaa" + }, + "0x4340ee1b812acb40a1eb561c019c327b243b92df": { + "key": "0x47f666f20e2175606355acec0ea1b37870c15e5797e962340da7ad7972a537e8" + }, + "0x4a0f1452281bcec5bd90c3dce6162a5995bfe9df": { + "key": "0xa88293fefc623644969e2ce6919fb0dbd0fd64f640293b4bf7e1a81c97e7fc7f" + }, + "0x4dde844b71bcdf95512fb4dc94e84fb67b512ed8": { + "key": "0x6e1e16a9c15641c73bf6e237f9293ab1d4e7c12b9adf83cfc94bcf969670f72d" + }, + "0x5f552da00dfb4d3749d9e62dcee3c918855a86a0": { + "key": "0x41be4e00aac79f7ffbb3455053ec05e971645440d594c047cdcc56a3c7458bd6" + }, + "0x654aa64f5fbefb84c270ec74211b81ca8c44a72e": { + "key": "0xc825f31cd8792851e33a290b3d749e553983111fc1f36dfbbdb45f101973f6a9" + }, + "0x717f8aa2b982bee0e29f573d31df288663e1ce16": { + "key": "0x8d0faa04ae0f9bc3cd4c890aa025d5f40916f4729538b19471c0beefe11d9e19" + }, + "0x7435ed30a8b4aeb0877cef0c6e8cffe834eb865f": { + "key": "0x4552dbe6ca4699322b5d923d0c9bcdd24644f5db8bf89a085b67c6c49b8a1b91" + }, + "0x83c7e323d189f18725ac510004fdc2941f8c4a78": { + "key": "0x34391cbbf06956bb506f45ec179cdd84df526aa364e27bbde65db9c15d866d00" + }, + "0x84e75c28348fb86acea1a93a39426d7d60f4cc46": { + "key": "0xf6a8f1603b8368f3ca373292b7310c53bec7b508aecacd442554ebc1c5d0c856" + }, + "0xc7b99a164efd027a93f147376cc7da7c67c6bbe0": { + "key": "0x8d56bcbcf2c1b7109e1396a28d7a0234e33544ade74ea32c460ce4a443b239b1" + }, + "0xd803681e487e6ac18053afc5a6cd813c86ec3e4d": { + "key": "0xfc39d1c9ddbba176d806ebb42d7460189fe56ca163ad3eb6143bfc6beb6f6f72" + }, + "0xe7d13f7aa2a838d24c59b40186a0aca1e21cffcc": { + "key": "0x9ee3fd550664b246ad7cdba07162dd25530a3b1d51476dd1d85bbc29f0592684" + }, + "0xeda8645ba6948855e3b3cd596bbb07596d59c603": { + "key": "0x14cdde09d1640eb8c3cda063891b0453073f57719583381ff78811efa6d4199f" + } +} \ No newline at end of file diff --git a/cmd/devp2p/internal/ethtest/testdata/chain.rlp b/cmd/devp2p/internal/ethtest/testdata/chain.rlp index 5ebc2f3bb788825e2c5fc48ecfb85a697f016506..2964c02bb1fb7f695fe6eb9c1c113f9db0b7c97b 100644 GIT binary patch literal 341951 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

NeOABySp1{ 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%0Ai}13c z9ka&Lrab)j=zhf0dm(|-FJ{SVg+DT`2?3FDrTR5vc?-Y-1mZ)*L}Tf{TBJqX=YH_^ zq8E3_*q!xVS7fx_Fqy&}Gn4`zzT)?5GHYzo;^g}5-7P9CIOIw#nwNwQ~&xx~}ZomuFsdAr*|Nqd1O!;X1WB9OBJ zn`A#3Df?2uRa7O*ry46&5=QO4J-rmR4{goNvjz^)iIf|9EpehK>c60UH7NIZqg6s4 z>j++b_s7QOQpmC-T2KyyY@p_Bb(@mc(jCyRR;9P=DR7%|Vg(dTI$7Ii9hX;qmX(WG zQ_3rM$3s(wMODH<+^&uYVgD6y6;(;UfB8ZEgaLI8)Au+WuT=fM$EtK)aNf}J3d7DV)Z7(?%RNq-G~i?S#)y!G7~x@T*^E@t4^=Gf@=4l zs7fSUYu72u&KN4jeL~a{E9-7+E=6ztFRczo>C^KyNs}N;*S?p@u1;Z!7A;iIOoK)4 z5PE^;W2A>qcb3djw%Pn|4ujgzHn7`9^w)cyHKr_u00@E;yu;t9nS^&~XQ#lEma;-Q z_DntuZVGDDDe0C9Tb*mu`&diq)c8FjFZt&G3p*I`!~)_}gIE9?d)H$R=Vt6N6kdjt zbY)DZPYN;AY-dOrjJW`QJqtuIN>VCjZl$9fT@~~o13tjP&+r6Y{PQuvdWp@SCe!z1 zKMH11op?T0Wzcw-KO*pe`fTEJdpFKbNXE5poz`Rp`rOBdo(9AW`%23*g8J2wKD2rom* zhPCG3)Td~A+u-Y#Ot1eALAXz0bN%`8}e@(|l&derG= zUGZEtD`AS?1sEwbo==92A9Zr$ciY%O8yO;{d16bUXuKX6FBg#4i#38r5P7GITl&M- z`PvulhV!sn;Ip13)OosQkXaHCd*J#Gc*s|b0 zh!84E1-b+$IsCwS@z2Kur?D9UQw_x4tMiyuHZ*IVEq%N%$r;xK?by6UfSh}HP|g4x zOy~Ia*)I~D?oKn)N?Dc>HlIa5Wj4JeeSv^|NNEGRUJJzb{s#qD0`PAHFb7_Sl}4cl zup#h_vZ~5;7Nl0?mg>7_JUlCZigrvfK2oLvR0Ps|MZmzugZn3_5aA$Dz24Yvct)Fh ztT$o(hqui@V0A3Nt%7%L&Au=qv}fw&8)f*F6Rf}2d)?;ToV4|{MwC-&1!-FHVxX|h zOIj-c;*f_}09ysFR{??>0W5--fyLN*8H^wG{VX#z))bfc$W2)=e3UMP0-m^ewY`%2 z9A6DI;&=My;E?&xfpAi7g@8@=)7gpuWNDwW=MsaUTsM^Zv)@WF!UvuNMbPdE@(K4B zyj*1qXx>OnNBXKc9;$t(SpQ;+{C1c!BZS!$<+)X1Pj=@3@t}{Qz~m7 zxH5>$JL*dDn+y)ubW~gA%gImeibJh3jDlq#LlGGxiz)jYct60h=at_tv#0!+)%oIv z@D+y=X~pu321?Uw=W&{N7yF-}Tm`13DrkGn1vC7;1bb|q^SVq`5SyD0#JLTXS=fJ# zu^&TxibE`b&4B9}Ky)L3HShAm1>}SXW}7c0jFxrXcTCv>vklJct;HjPcI{8xmyG7S zc7SB>IR?IRTYLr!2t`Z#UV(c2qq>yheyZB6F@;Tqjf$`)4HLY&hUBuLGn4`h1aBi7 zbCiatbCIv5u+S>eH(>imQo{8NyJ%&;njd)xvB3}vU;?fM5Z?%3GrYW5OL8r96o>F4 z>4&DpvhFHz%CJScwQu1sdxNvI`qu$`B0wBQ%E_Hq#eX70uA(aGxTBkcex!&^6v~qZ zhZPudns6%h=_Q5#NN=rt&Gx<;N&(79YhEC18t1nIV_sCTy5Hu@zyCNRA+k%gjOVvQ zCtL=lsP(8&GL-{|g8Q+gCG(@bXky1(i&+d<)8_<+ot-mbQI!xEfolOIe+B%Fs$|E% zylNAn#}@Un_Zty!r8xh0HDpgW*_ZqJnBHfqM8I2`mM?Gu4OJe0?c%F=_cy9C{U)k1 z&Ve`dVFxf)=Q;OF6N3BPAB0yOuc9iwSaXlwk6OJ%SV#C?FzN8E-z?p)=>(n9pBA%s za`IRVL=(&wOsMr{+Ya3~(&b_A7g=6r$|i1$P-Jq-Zr(R%CpSkQrAs&S3b$VDx(qLb z^CUi0uac@)$#|d+|VLsrdrVK}(N1rS!Qt&s!j+e&Pd7qq;v=h`YK}(jZaWI|m@5 zLE@?U9MEJgwv_u+u8R)K8u|55Rw`K~5|jcc;@y%gq}e$)1>QN4rYBpxLYDBM-b&|< zim<2=K}Uz}b3*PfoA+R`yMQSwJTqUiCHV~`(Z9gBAHBgE?NuGSZ%w}iMP{}pXMFV1{JO~ zg<8|ucEWGx zkoiidpBOLG+DQwPV}GmKdjh2ZjAP>3S{onJef7I_Ifz=k@i7U)Ql0SH6sons1nq^M z5E~4!04CsCz`Yv*+(bVBAPO^~Qi?#-;y$hLXCd37zNz8+ipd#M?r2Dy8ZHF}bwCZ8 zCEf~JjR3F!vJtGBXb(J%v=E8%*r>)Tm4r9G&+v#i8I$-|8ib#kKq;Wce-$nA=W%Yn z6yEw7lj8$m6lY{r82>o(e6{0ewa!L}4Te|%6L2kn3M`<%5daEKKr40on(X>ukyB&* zneFNEz*_O`(y`2M$-~E|mQr;<1EqUp`QH%)zyiv;8VPGVNW zaeiyml(?U5{2AK!p?mTe7+!zN?vE_K&*zjaBraQ*y5aF^Fhp7gq%!KghYzvA5DQ=e zt_4uv2;g~93jo<5iQ|7_DYdL@1GcWby%(|2n`PBLbbh`WTd49XdR7VlYX%0q3^o}Wm( zN@Sc=G2F!Pg7?Rp3(xN1CF~Am5GUOa+F3(mX-tAZxFju5hU!oC(v56&CMNoTg|}=1 z`mm@Br*LSC4{k&C9kwTH%yM zxDi7=IJWtwc+0v7nT2RU7fJz!bfH;*(p)9lCrZ5@_?k!i`>xM=jN!y6mpz+rmzcUk zY%s(En1E{m^fvFhstvi7S)Nr{<*5V03r&U}Pzu;mLr;|#O<2q= znyzFHLw77KhA*b;XfA2rtV6enL*IeeV2A}U0oMW;ZUhKWJpq6|(g>{7-!?EG{>E`) zI*^8?w-^dCLbSw^4X3cocNAa-qUZ(N4z#-exjy67n-IF?5jvBM>4Re5R>r7J`ybG) zWmI_rk5*Qt?}B*CB)y>&VAwiCZ(yS(Q1)7u=qL>*Ye4QaspnHz&@mc+q%fOjG{go& zEPx5P7QhG=@QwKL;Db2PxCWeo>U+}Zsl)uCgXrkbNH`X=lxN&r{E=VdRDo(eSaS?m zKjXmyf;Xc@1I%kL3^WrbQ{I%rg-LsEE{qhLLBW^4Te|%6L2kn=|+HH{1O24Hs&;(_9Y8oLj0hvHgJTK zTEmZy&HRCdji6zF1Gl3K(Dn10!xNJ;S+D@^X-Oju{Ztugz24DB0rJjOGvcd8cQl!4 zkcd~E4Qru|t(P!dv^lR0yVbcIf2c-jGlei%dd%*(I=fQ3PRmhh$pNv!5DQ=et_3jP z2za141ORD=XiJ-mv-pV!(DQ#-(*89>>vGhBDBo&?W>MuvZUh42yg^DK9Cv&H7O-YM zVAA;Msqv^|tFVB{;3?A_aP)|q+aB^~!iB8oL4 zCu@p-c$+lSWAU`j6G3b+!~&RrYXK}b0)!C113(NviU&tO%e_-$%CPTinmvzyh3*P1{V2;}?)gaJ5MpL`o-Wxe0Y1*SG<>w5WLa zTjQY=0J^BCDPnNi3p#&;Fe4QlZ&IMK+LFL64#H4y_^@TT1+l>p3t$4S1+anzG$H~( zRH#qfsiREs?r##l@Jo_b-9sf;dXk>I8)J8NE8sz>D3E8CW!JMW$o*2lRaE8j6Uoid z&S#st{xhW5_~pgMdr!P}gV0$;4G4-IPF%h~DL_p$_$*n@X-OVa8->Q2hjwr-#;E}% zuEa0NBII=M`v6Gv>-{`mzd2zEM{INIoy9L?v0**YpFT*x8KqIw@URyEojt?W{X+he z_W-#$e`~Hs~ z{(q!UUj8etAO6q1Z?@}S@8;X91CVUNfXf@MqAGLI?+u&8`;C$5Poq9h4^dtKbQ%EDu^f#*V^?xU-G8{zUMB=0eDkXcbThXfXK&AM7 zH&>=u$HUV!PP3Y+nXif98~3j7|%$Ae7`13Ayt#94HtRiZZ@-Ml!N z!Ax9|&RY+3fE%|+aka2@eG(NX*jKwB&DNK>%>B*|PCr7gcBt7UdLl9_B2QN#{j&l#K(S&|hZ1_JgV=HAV z)5ywk+1^8fBlGLl|47CGrGOaOoUr5065U)~y%@gx=pSp??tL(>iJASdBAmzc>+Lec z216`>3AkRC?t=xaaR5MO18qUyw|58|Uz=*N8`Xw{X>8?9d&g9Lj#2n25_lmA)C}2_ z`?xaV1s3otEuo2^6@~W8k2+7Q%_(_4l*%$&g3RN|(Xisa5AUFTZ=80&J~=GB+7J5? zi8trUly97??tCt$&9i)V(Sfo7k0yu>hFAa-a4mr2Mu2Gcz~v>~)w?S1z@d+ri3l$WW3r31qW2Zht$#Xb1q-p~i zPYtuKv_2OD3rNhg(viTW{mS{%#w}Z>kQCYSd%UXWgc4)dv$u4e$(jR0{XTL4IYMuJqzQfAIG zQ*=Z`9u?!*ANv+l=x3wxpu3ZTje?JWl#0V%j(bCCU;+I(EJ+=ccxFbWt(8L5IUSrxk??K9m($+g%*Gs-)SCcrX@CmA2MBUb zp-Er?2a9>mxd?8xrjf5ngAc-2$wmeDCC@PiaoE>AewDpQ{{bbs zg)@R$TjNdwlmevPZ2P{ed<@u??kG2kmF6l59GOWvGb&xjh-N6veIpOC!4L~z0m13wp*pC>usFMz%7i2yJrAdqq*MKa z<>&`ijOMnmnVWEtY9TflVgXFRwE(^w0a9?t01)Ve>Tx~u?G{_6CcdsxjsuoZIO{Jn zck~OMyrtbo&8EL}ClJog51zbf{{&<>xZ{d{|xvZisZ2R)>Arx;oD{17sA@j~f7HDNi>XDk z$h9K6qYwA_V>C$-0jA?vBmq(H=dh?sIEdTTYXSbh0loBhGVrK>s`*P+-pHG ztJ>EKYbW4;c#NoAr^Z|{9rmptUY6I$E`jLsN;+FVy=Ro0kTf0gGN;=Gip9wEdtM`M ztk_FzpT+^1^x@{6io?oCux5;QOwts_dbEDfmMev(aKk&*7d=(D*ZKj%Xgt`=Ti_ff@;r5_M8O2_R*L37S#YFH#UyQUrNOfv` zqFhAdoJ~2y&99AhBdlP;%+ zjF?Zs3*T~wIH8yqa$SJ8^$dM;M}KKgnRq}4=%rg^1#XAZ{vwnD-pPj}_?P35k6Kwp zpgi2}Jnv4yjng#I-|)d|v#>w*gVMUer! zv;QA^cO4Z~-}VikmJ*OIk&=`~5Tv_XI;4@3R(j~6OOR&hR=TA@QbIwHl9G^+6hz?V z6d14je%@!zwPv0FJ+s#mn3)4mkIx*x&1TPcThD&)ZWdCm#+vk8Oia>Z1UlEFz?;}9 zuY(2bIjdksdyM{g_#}$-yM$Qu1A|AdxLxlb(QEQgJL5)UK`Ed?fGdl2r;ND(o0?~* zh&^RKPe51I2q&C7#TLVsLL7FsF2q&szbLp``1rvBHv9n~ZTFP1Aq<@t>D{GU>S79T zU70HK-}l`#HT%BozV$lY1e%I@_rco&UBLpVvxbJ^Tq3P!kv}#TwteI)E@xq07oB|k zJ&Bq3d+H9faRCPfRgZ#WJRgL_oyuCAlG*1~0D2XH(wm%#JmcgXlPeIP;t&g9GvIm# zJiZYim1he8jc)6PV{0;zF7akDD(_!nrxW9A(Px{={= z5p8xV`uKE0xE$X#0ck730#$bkg}^gllwmyj6Qz`F?T9W$<(?QkO}Tem2EJneTJVv# zJcVU0lmfI@xAeyi?P~=`L!6&{SvY#FxX)j8$Hyk_SYcFN<5&b@gCQ2c1Y8Rcyb&Nn zmI452N{A1w9)m8DDI>Vj5r!2-(EZtZBO zF=2mIJCdV$#EW%8S&D@r%Te#H@O_9f{s7wGs0Inm{P+YeO2St^eR@SbTMSwQtJb(@95U6l7Vx+(WDQOxsJp_~B) z{L`awqy0SL{hGD=<5;r7dLQp5V!_jE$7|h{+-QegujO9=a6JQrZv@E3i2y(YZ{{P} zZQBl=(g$en@^6{i#^~ZFPsf!N0lV2H7p%I0mbXVavd@J7hQ^TZyY37A%6RX4-vHf- zFT%=`wXt*cW&JG*rMJ^6qr31>3b>exG|5d#;H%y3=B@d-oEQB*4_D6?FGntr;&$P1 zhXLk-GdetzWunq z4%sA=KSsZ?fk^-sRS9`YT&)74e+2xAs+31Fy!?6au?M`1>bqC%aTF?EJ<;NMzW#Fd zEM*OF08LYZ@wHz-O#KI6SC$9g{E4ar-9%Nk&!o8>Owo@YsE&#~Oev>AcP>P_imC+J zyAn)ls}SpV5!;Wh!q==n%QE6?Nn=S$aaVdnN#O$WY+=kfZbxonEn>+lE%86vpBf>AOzG4j~^EJ!di|?qQv}Q2D zX>RpmZcl>Zts1$v>@9~;!Kl0ljQEG6F7i&MNih(I3B&@}w7H%(VmH%9zMB*P;><+M z=!<*Ddb%D(|c_ZH2DeKs|)yki|B z$||4Sl?J9cZ0S!lVptXiVEEGMK`9_}=n>!26qXaR-{2ONd4A=$@82Ut4rTYLW>1ga zzi$Ot}lofrQemm}PUc{v!AIdM6GK(+GT~MCZvSHyL1*HHAN`0y_ z`Gvcx3_hkEgDWL*lX;nkLDlfyI0*9d`*igX8w{}kCg56t#Ek$&flUBNAA9{h-b+E# zSEUIqDL#>}zj4(B--+khoyNI+hAZ=jwOosjjCY#9=pHSod2Set7i3SV2LPcIAg1)?lTnPs*cXj4 ziEmW79V76r6C%9}zgUtFAK)1}E<$WD!~&RrYXMR>0+eca03g@94<69nS5=>PHz;B3 zMoz-c*z!y5&tm)Orucq1S-2cX<+Qc-A|o3EEC3?`#e{kOLR+yGgVc9fmXp|U$qfHi z?#X-w2!Y$*&=pDnPlDH?N(S;#+(%Ozybg^YMo5m@^HP%n7gl4wW^HP~(jwsgh3)F6 z4(S^K%8tOx835PZ8_6vFGow~0VDRlC?_;qggcH8!NuTqb7Gi#;ZUJ>BZ>dvE@+yG^ zm=%6$n)s5Q6K^n)fC|eo0A$JKHus&NZC#kJS`)MDCy5}| zl*b{wMOM*)OMLJ#jTDfel`Vx^abp-PAdCbqEDXWK3b=oOB;i=jnM9vNzGX2yi~Y%d z>FaEQ2$VCRUc#D^I`236Timb_qac8tosAqvV=$`z`%a%9dfm#B5E~4!04CsCfGk+R zMlb-Rux8VKHl(V32J&+~DO=h>Vctb5Y7jq!xAj2!=%Df*$n-^l@H~4u04(6~555sZSX9hcEXPZ1Q$xWYheAAh~(T(JSykDS)1xu)bHl^{`+J7YPIZc^obq#rm3~ zN2*6b?cMr@xOs>ThFAa-a4kUYMu2JoCjhkLh20~nvG z)<>1QJi4twDSqyTFlMbkCt=#2z@LFydY;icq*#3D8D^u7v>V@RDPz4y&bV4ltd6m! zZB+y9(Z_&OYkvS%5G85&RC`YXkU!Ttj4hT!lmvV_m<58??`F(-5cNk@+Yb?3vyItD9Es@-`}+Up1Ey=3ThzX0eo>0;yt3%BpO9s8 za{!XeZip*lMAzf_Eb*j<-=13G`z;>X(}8g3Gtt!Ffjs~y2ac-en&WImD>0G^(hHY) zt?X)JcLNuOXhsSbgaen0utN{5#oiOYKH= z6Xz_OTW$`|Q=k;!djEHS!ZQ(m$0eH=*6419;zSMl{((!M=T3CldT67dWJnC>RN>F+WRr!0%Qg@z2X?4WdiSX z2z2Y;KN*-&t&v+_7EMfT#gqxJPl)~PJdM8PZ89Hp0Hpv~{t!LG+kN!ol(ar4TI0Yo zgt`1jDJl;=C3jQUItno$HW*?7Ou)4Or5gbnsaOEegDKYUlzJ$N;>pbC2^LUN)m^>* z^kJ#-B3e1cDu?N=T|~3+viPfU`toe*8398m1xz&Ujx+$wzugyLu3;!4!AuhUK9u6O z$+%XN|K*eC4D1jz+`q70?RKi%2+$-bzf32R=g(tk4ObQl>gtlG8SbW!D;*cF#KTTV zdfO}TOzIiXXf=!JYo?h4SO9q?T{F`RmPck8w$c|4S%p@Sd1=bU0nolw@u2u^BWUx0 zZVTE(Z5(kLe)?z^9TBwFBR{RBH*LjAkAtMb5o5Dw0`Vyhu>dv$u4jNMSinct%j;z9 zYK$$i>5B|+h2=c>0k1Z#;8UR2!@gx(P0IQEF{U+;k~(bYf&0&KumDLlTFM8lF18B1 z!QHb#b3%&ycjvW|w*$#JRIDh8tYe{^0mLDEc>?^by(kx}w_kr~3cr;>b{8bHrd@?2 zKK$)&dk@40Lo9#^xE7#xBS0&r9{@6SegE=dfN0dvoCC&;$T`*ccnlXNsyV&IVTB;g zC!A9tUoT2&vS?`}SU@Wy?r`DD1y}LKD$$0A-{T$eB?!k1*FG_MmejYH4BduO0BMLn zg13ubkPm!WEe9Y^)UG(B6Y-I-YWI+-R}UpOEDPjcSOl&GsNV?CzT77S`xMu8+w$=d({kOh&V#Nb#f|FNZ+X_qmnNd*$^bQyW{P@n} z-lV*WmjwKC&t=@>|ICT}=gxn&{|K?X`jGO^-B)k^S4iZ4Jo3+n|M98++ywmpeuw{6 zboogl{}f-=-hA<^Ak2U61N`%b@}I~|od5l4|2%TNUF``z2?Si;zKW{U=~n}Qd=l}> zA7Dr){EEC+^aKSpbU0?7k1=sFl*%iYkE*}l3Mi+(0N=H|oBk)NGW*|&stg6WcD#)f z_-t>7U5sDUicHfgL&s{OcN^t^LE-B{q=``^2;TVamW@kZUAXS6uTD1oo7K+<5k3sE zQb|4;7D8)bV7WO+DJ5JK2WLh66s3igfIGd%|O8Azxpzy zOc!VY0DUes&DHNupSGuc*cFeC8zM1GCMTFJ{@$hsl~wK2NHp-_DAg}F>V$Ccvb6JX zm}2+rxx72)X)b~H9qI4~QF!{uLv7O*I+I%bt9PLkz@PcLY-0R=X-kNduqdCEddEcTMu47F5&(1-86L}kj@Eg5iLPOR*hgSl;N90} zE$(Ogd{ZYy)5lf7=c%gkVY}7SU;*X#>Ab&235LH5eKoh%ukbb>J8zj>_KUQ|w8y&a zC%6VE1u#{gsGMU*mm>CUa>FooB2=FIu{gvALo9#^xE7#&BS0T% z4FG~SBuEOfKbd;-nbpx8xlvvSr}%S_mEWQ@fIeiyI9eU}Am%pi>h7^5U3@PkGa_;W5d+t5iru$Aft!hQrL$a5UIe zqgyI<1jPAqWPe&%q5~H2m>4%r?ewe^*Du`l0-d;tL4u!ZHe_Chb&zmi#LLeBN&%~+ zeuWOlJVx?X2wK0=07l$?OXqt$jh0`X)yImn{IDT57-9iTz_kF~8vzD>ivSSQLp?|9 z)+{vyg;Jbw!3-meO3%I46#@8UI*AdsePmpqki^pFQjjPaSipM{>vuG1d?0dtT07CP za0<3)H+vT8m|08aw%G@^{y(4;fPOZChjXa!7VnG&FLC%QwU8d3e4iiRtv>ixWIF>j zBg6(nEPx5P7NB<{z)&Ot0CKNqYw1H0xetjGOid24DfBih3t^0Y>bTJ~v>4=W*5EqmJW0AI()i7qy$8g4ke)1uy~E0`$QGE;In3O)0@&08g`xydm^r z2Oc@9pQVK6_?FVy)|}IG!HSalK$jWd=dP?{X|RCC=zKgs6}N-%`BRz9%GiAaJT78k zO_2gS4dT{DjH3}K1=vRVKTZQw%CA!SNGLtgdu>|UHx={-J*!||b|Ov-l@(%xAr`;{ zTnjL`5n$B94*=EEZ;vkcHSI5P->b`d+C4$}vd?$^i;WyXi2cuB7M3JHo+uB&pZJD9 zDSGf!>?y)xnOvW#+H8+B@Ws3mm&F2B<35Ex}8bU;tXqWe`2rHcV`H$GH=F z`wzb@QM#=H@g_ND^>8w5|3p>h{C826BM5jq@3U!y+BDj>YF_*tnn6@qBPpt>YBvuB zGM>bs-Dt&`K3ntqkzkxBrYPs;-%8>by2ZnKq}M+aY{jnQgwh>x0K& z!*z<0^1H##Vxk#eH|hC)dM;d!+5!2N^nn?x$m8)l70nBLZjH1k=f$p+=MwMAj{Q?Y zLB9F$>xWe;@lC~XI-g^m>rGUPRGRb0qF!>}wI2D!_!>k?#m;cqc>!^%K`elwzefM`X6zZCf&d_8 z)CoPDVh^&a{UgR?qDbQ15{jj8BJnkvQ~ckI(Z<<81}*OK^&gS?;Dyg57bn0L&_O=} zFV$*XCDM42fVA4Nw`H!b8`0xCGO51~A6cDg;|!&MP*8nHDvo+}++rXptpGi!&zDrb6h8$RIvt&R5w z5E~4!04CsCfa#3@Gk$yk$n2hJ*xQ4zii$nc7p=~!V|T0LkF_@WF*K>2du!bjSb?Mt zc5OJ^X@8?C=YkaP4vF3>m|9hB@EpE-!ohqTo^SAx@7Kz^oG8cd>QD-JwL3ZDn-H-H zPiNb&<$DjAmj&xP`Kfb%6uMq7t--zn#0EnwfC;!3Ufuv^*Z<6R`FN%JCUYZrIGjKLJrrng z_7It^B4HHM;~*7E0hz|ize?yIHmH!XdCET7bok01Nj-0I0;9vmBH~=)*(VZRu0PZu*U7 zO-M~K6yvswm0{+VIw?@JwKXSN!^sLPVAPcoIgiEa8#d{DuKGf=`p>@PT*P?R;*W5u zK)nscWhezynF5GO7x9-Ln%{iLJW;%<)+}ZrO6%XX`{f?A9vF`^Kpshxb zW3xc{Q|@b`C9gaKX9ZR-QmFX~+55I?+A@aGUMK|=c5S_kS>Qh`euL1potO7rr<0(a zt?f~ni=dD&+lQJ^hz*8V026R6zzQtjWD)>ssAO(z?a5D+^<#SuuQkmZ^FluT5&JUn z+xm42)6~r*pnIWloK+^;Kd;=oimGf%^d<3oB?|h*(@J^CC5u&iU@Kf#5|w4EM(3m^ z&=*PpQw@sepODE-e#E$9+2r|u+l^N3*x%Rr)>=!ANc}#t7sPNHVY4AWOrmzTFaM;C zl{s{OJRcX~o2LQcw2Oui_o_1pAA zDjCWDL{)}?(hMT*92RshmH*PzDyyw74Vq+^JbK%SE? zQqS8#qr3Z>7vSC%3HY9H))|itzj1T)v5V7Su_@pM{4$Sa^XiXf3ntB#F4aMWO>t`l znbnuvl~7u9Q+QdEORg{^qwt{mDHVHc6A`KW_95GdQRM?Csh7gA({CU``Y#HutXcoD zc6k!!Gmkg`D3UE+n?}Q2{+qZ1Qffn*mSVCRsZB!54?*Bi2k!@vEs$QF51XE}I03xg zY}P+~V}UFpc*o1KmPfKi5AD;l+PMt;kMZ>H&FtCOpgr~^>UxGae!xcQUh$^K4YNO! ztf)U~H@k!LQT*UYdFH1Xh|3AY0@!+Uz24Z|2(W%k4ggL2%g~YOGwPBUdX%a&PsvsD zp&fe|6&vbBM>FlBccTF1QxK+KDzE>Ir$Ik`iEG(CS45l0Z;Fyn?Lgl=c~63p+3F5< zmwRyEI|V3b0DEW{Gjj^PxPn2OYa4Kpo>maiAl9!dCkK~t0rw!P8e)SX7Qh5t3$O(X zIPC&}7AvEk%xcc-&46y(v;97tKSinWhWoD2?s35W# z=W_>#d*+FH?V5WG-p_69!u1tecfYE7WtXcKqK%wj@a~nD8-Gj^cAWyVV;y1oh!A%62 zu&YJG{R`XGPlJv(0_@v906;W92*)`|wokq7#u#N8)y50`h!CUSH#~?+k*#lD3F-$5 zknwQfDCw+#1#tg+v?3LJ#S8prm=IP5iR((xm`|KT(w#0nbI4FbMWMW*1&M zW8Yptk(4DSM*O5_JkgJYLJe0+X0vb~aM#O@$wbr8d9xh@uF}CyomdPRLNL4YfbfXBY~VB~)854BKV^-nrEm4yxT@1}`~jfkb2I zr)>QT#RjQ8vGvt+#@brDOZdhIaQTVl#WX%p3J9NE+2tMC;OD{5ioz7)f78AM-)**0 zlMr81Vf!%QwJ*dK1!4hg$+=!~T)_f*_5dJKn=AtwAF^CU`V)-c#~0HZDH=6Etr2{o z#p2n-1LwCuEn57>VM@)!Ks_ZsahVOQvc{0xU&aWw5kzD&s zo}&P9`y7Z*afk)58E`!VUfc+9ma7MVxMI*83b||DEv>|@(3X88T1eNEWcfr$V#rtv zIfwmafX`aQ;Oo>#{|flxH3rA@g#lHw0c)5^wMV1$*E3A#LL6f;t|;q#6kKSpl|zVc z{`Eayg9}2+G;}*`!4(0$*F2hgYAM}2KFthjSFy3K0qm8mq?P)Ncb&J z!AP%id&_UpFY zU*F%fx=nk(^-G|;h>jU4@##F20t`b#Pq(YQo?LLrtU6hK2-l{i1FmO)=Zye2^-=)nmp%F`+LHpjU45nO`qkrnQzRL<8dLbHmfxBBZ}v`K z0WqfF%{6#u|7L<|r4Jh$$nT3ar|92y7L8~iZC;PoDP%`tcpAEF+4l4lN&)Y9GTKD| z1c&bNYU}BZ)G2l3D{82#5uo`t2h~jU&@hM%hFAa-a4o>=M!*X~ZUE@*i=%fa5|S!B zvnBCHoabDDN4%~)d!vf$MoT9-S_%(=N;2Ua-OX`amowlhs!}-gaoK|+B4EPpRU5}} zlmY_#$w3Yu8Z8_%=Fh4%L48mP(AP6#M;#R4{_(C$S^F)A!+n2Dz3;@Fne`U*ozgLL zBp^&I)*;m)wuF#|#*-(&O4{tz0KE=Fj1HEaFD7j~kBdRQJCboE{pc_<__%9TPguUX*`j{`o*iembIb;(*#qwd591 zt`d8Rc0=v_PgG_8zZF%Pz$;v$H60&(66h(*nB5`aGk)6%;n@m#%gbcr-TRamAT*MB zK&QycPTRBJ;rhDfU3CvqFch%n(++*^Nz}Y3Qo31|aDtP%X;|RnHk^V$wdqBB1L6It zoI|WSDI|oSq^M?~y_(85iXRp>?ienQbKh!ts5)@2p1`$jl4X2j`P?>;Ec($G9=9n|Fl$xz=MJByt zI;@nl9|3eJ&&LmIMivF{n2fh@kS>jnRA%|T*__GZm3sWye&HC&USgN`-SRt`WN0tx zUO4^5iL>4$n|@DE;{p$(LUPqc>jmwTaxzl{tQP9Guy~q(1L&0i-x~q$h5!JlYdM6T zGLc@ou6_VvvQSN+`sc(Wyn#$!*41X5gD;taz`GCnrYMZ0o`D6dhZ6AMd?Nlm{lF<% zl?C~yU|a^q%i;p#i{N$wqBzMyD3_&^$7uIQNDFR@p&i(Iv7mhH=t65d=AP3{8z;Rl zO)NkP@hJ|m05$`zcT4~`0z9ZL1$>wlM-CUxIu0VNqCVs1T;lHgQ| zz5{%?s`VqXj_dEGT%W0C5}LitRS_spcaugo^lIP^Kbo=Xb@x1w-Lr7hdJ3fguG@Gz z&!pHD`&8`joBZ1L-O2MTtCV`bRprEm3*euhh1g(-1uy~E0{p-NmM>RzcFJBQjOXM>ZLh2&lmeIt@#|0T6nm3DVx;_L%youhrXoRIK1_7jjkjI9Cs_=! z!4L~z0Zqii5P+&g50TSS1b}EMevGEA| z*5pmg!2;mw4Qdsur6j3NnFR7t4H*REgXP>#`NYXgEz=pxlAt|EsbbvcuKw215YC+q zsjFWZcPSJcFvY8g$LzmO}0h zNfX-9prM+(?cTSPz2h2Nr1J=9*lcRl+9uft7ND@{mrlNBu(Z|vfv?hW<8I0vP|)(E zWPK@KRId_Q1lrj8f)9-^qf39hF(K&JMfcQoE7gg3_Hw7r{W#kf$h&{7oYq^a+)C;cN26aV)7kp@o&W)GCBKr6~GX`jc;=uWGMf!vWs zBOeTOgr|6FN1Ki4K@!2Z0uUPvu>dCET0jt3z~1FyYGd}hL}ApiOD0?tenLTm57PYA zDhyV-9&kqRzEj(n2?4&?EPCD;@09_b0mDf>M}f&2BgTr1v5K~8S$tTbsHR^^CfY&d z!{>!d7*GmG2@TuU&!8xNN&1v0i#|E!=fSHej0&kHG90TK*GdU*^-GwyftCLi-?t=R|ZdUfuwM7D54{P&OcF=1^-=CC3CE9t4qDV zzyqT^3<@K+cQbEHznbvSXP`^gD4_Oht-sEHff$~3j(YY6`(eD>I&F@q@lGhF7t{2E z7i~tyiHM=wTyJZ(Bu;1#f|11NVzH~OKH`3b2 zr*c`O1XuvBv;9xic%T|aC}Q~|npAPFDZKXu-3v#89jF+a+`g_*3Rs9Ikcmj*9H1oI z_PU3_XKVP$9khOrL+_T+YkaospY0GE46y(v;95ZVjR60!%QNdz zrO!k+nIfy^f7M=ItbOhoT=*#q6d>{yIf`^`fEZV*KNrrZ{r?w#UpmgE29J#%!>+A1~La>>!f@8^Z$~PrD%cJV2A}U0oMYe zzydyBzErq62%#SRl)&p1WtEe&anHD-!+V8K?2FGnuE0I?csGO%B$W?u)QJnk1q;CY zm_sb0jD){1^Se^1W~r|OXzqH7nG@zyML=dJ;`JKJ8Q@-d8vL`B`Sz)0|BhlooqafN zuJn$>B$pmwled;o1_fe+Ar`;{TnmW45fGGi85fYYhTOy)letXoW+-icpeMeZDXT$O z-lz3TG&M;;tTGU&x8^H09nl&A7GTP8uVCTvsOL{RPU0aI_46~4gBT$eT+ZPM`&hM9 zGHfUX5IVDf;&_8U@n(LiVLQv1F^vn3t$4S1;pG42sU;A zfKGc;C)R2mgWgs(jMj~35AXozJnM8C!y-uVjaRK#27rXJ_E{H1Qb(5puA(X+Y0!cPXk5PBw z6#qn37T!cv3eX1T45yFR(?owl^fns8sT_JUc@65W|iMTFf> zg50$(DQlXl;_gBq2tKk-OIthIyH0iOr5c`beaTa_q20;;QQ_kUF85CDI&O|WZgdUB zm6jS!j{r?wTz%*iXQxot+FEc*Cz-uAGT=>vptN?o)Kl9lg`|m#cDsT@ijX#Oy6$X- zv1Hm`d2dfb(h>FwF^G`i&RKrzw~V|01)O7MEazHWdna-<{>V`YM8|GA>BA^p(aMj`x5EYtXf zXdyqe(G=B2VytyjYNo}Lj{s%;oqQ`mk*~!XXe3)+%|0qVsTmNL6Nm+{_2zoLiN6s5 zEWZpY)VtNo0=UB}L4Ioxhq{XzU>}h90xPaS^?9Yw=1W)VZXmW-B0t}D-`}v(Lm=lu zdKYb={%Y)8g?iTV%V}jAUA7PS`r5jOj<^@NP|koXx%I%L_m056j+gpm7&3 z!Ncilj>A2B7<~eQ*kFhSFag&BUfl=?bt4CWP_(&;7983YyT`}y4O(exg-$YYhV?#R z(Birnzn=8G0GfHwjcIbmHGpRTK?-a9l7IL*6V8W(EyB;9iCHc&sZw`sklaQ-(O@Rj zK`CH$ep!=C$)l|$IF_`Plmp*TFngl#R~?r~*1`kwm=7fo8w{}kCg55?!i|8i$CrV{ zZ6qJUl0zC!t)*4^U67ippR$U=4-Y&jid#-aGVha91!7EhJP5*LO$7@Gm=AHKlJ$7Q zO*KJQ#)dui(3bHW*?7Ou)5(#2W$O@R#A}8@8_o5_TpA@8$2`*)!30LVxbTliCAFTEr9E zLUo_s1R_pt_(W*B$%6%i0>bL&o;^~&haoUX;8_bSysHyXve8^Qq~URH=g4^hr2rp) zYRpA8iqBStMWp1s?)Oe^Rc4er)8>9%pU-g}^@jx&!u<=|)t=yMuz;S+OC%(u?@@e& zC&vup#h^QwRry+ug_|xc(vUu~`tzioG;azh9TseVD>U%$)uM0NS|t1yuB$C~?@BRv zab`EZGTg5t^B&U?dBRY?pd8xMZ{h?tUnYB*OSuxOIX&USeb$&&u=Cb_>)Q*W729{f z_16%e;t&g9GvIm#B;5#zh`78=iaRX|CLzJYxc8`C+gbH;Rh#q!*@81W?C;Is)Soy{ z+5jJapCRK|l1u^506(vh7%Vf-?(92$$^$Q@xhF;=M+fs63o`WVKCnn!a6>r*^fL%u z1Zd~9OnJvQQta0s&UK2tG8_;I3arYt1A3xZLToU^0+@hn0m(N4BGoQ0mGmV0vn{=a zn6TB%XIwT3*sL2gs`w4_VLm{Dh$bdHT$vNF0JIRz9D}*k)?XGRXQIl4 zSnJR66AEWQbc;&~tw)+_(7qg}s-gLJ9jf`|Z#PwN+6pD%wJqL#H{lqU$#RWIc!gr$ z2C=~q3t$4S1*F^vh$6ncTp9^xqpt;ru1bqqS)sPvC_U|lsxa+CM%7CDSE>jv9D9M9 ztM>S1aYF2u0iwTAvHtZxo1ca1LX{`at!Cn zr(cXhcWZXmE2sOpO9988TmHQNiVuZfSqGT^@jp&bz!uE1&v3k?0S-oTsB-=HJF6>#18I@z`ir zrp>+v=vaDo-~pdvWqFg>krINJoHPCBWT7={Q+^hfjD)lqW2$jkeIk!qHqfLC>6IAz z#Gw>WAt0OkzEh=FJCU5h9qakdBcX|NbRbW5m4izPMcyk|Sm}S!V2CAG0@7~;#MoS3 zr`ba1DbBkDKT4!{IE3G+b@_DaXaV*BarxgW8Lj$WL$yHk+aF%NhPV5B`lDz3wo74S zcs5D#ogZQ+WY#A8v}*(0q)`-Z`x!;V-N#T0&^PQY~Jct1C9iskrAvknu9JSYBS7COn(HQvZnKtfw{nc*k@*)%1WfEo#!6F zrZ%jhT5$@~8E#W0UrGPaEd7R9CZJ$857` zR^uDQ216`>3Ah%JeIwwNBLC%8dMn<*S*MDVyT!){q2}bgE}$mNBT&*RMd%uJ2rL_0 z2C9M_;dhhb|6Z$oEbH?tjnA`n4G4F5IWWa~z1WpMekPdOJ1Rzh3^MA0HWRELWjmES zbDzx@H+m)g@^Xpf$Svi0CtkYJEL6#Y6j;a*8w{}kCg55?&W(Tsd<_7|Y65>|sH;e5 zIR74~5GkM6M#iU5&S~d(x7T3g&erZ6@Fms^!w#0=40r}4-<^~mtI?FO)2S{r)nz8v zRSJ26QS`HB9chH3#4gVQ${FBSfkU@)TvWF9Ebv|{(@74?Z!7OPM>0&NKmv4B)(u!H z9NfRKUF`|xf(1-R06_C)%Zx{ETx_KF>Olf;hj6GR7TylZ2v>GJt$&_;{yYL`B5WEQ zD0~0arGTrb%7(K0=9ueKJ#uH+6R)IX?B8H5B_j^~Ft(xQknd)H3=gFMz%TDWEw>^| zPoZ;x+7R+6_lwp$ti(EoD*1;;DancVK)Lw6wr-g_(K}+SzUJSs5SPA@7vOp>d?zi( zxX+6ADh9+dIOnYV1Xs>U%ZdvLI4>^sYPaicEuVMlkG@usPVDbDGeG3>zmnnd&&`JV z&j;`~`Ht83!rwf4{a)mM-M+f{&nF>)vnT&Y$^ZCzR{@rk{}f!_5C1>YF5%!r{(0b^ z?f(*0DRTMHKY#vgfB$AEe{TPeZ}jILkw0&*-%wt?7x@!zc_kn(5O8^C06c z`oNNbE@Z9`US!b+zj+b75*~PVRB>74occ1AAfAtof&{ZZB2A+M39~Inbet$ZdP?*- zn3A`Q+TJE}c68W^SG_q%NjBzL|J!5YtB4aqTBVSBMvL$ywdL9DlS9sm5}LZ5Z%~q? zNyY3UeflLwbv(6roh+U4LQ1601o+l446PeAhhzZ`;;I9&;D+R7JN{qYu1Mww0xtgp zE)P<^w${9isG|Jl%Fo*NW9Czs<7OFu>5o2scp~ZP@o|#P&I-fxWFXVj>TBuV6c+HZ zM7fY!+gP7G=z(8}Y3@B@8o^E^7QunX`uc1#mAfW+3Q7T}N%jo$hBzP`rA*c2I{`L5 zq$1d-Ut03`=Hp5?O*3{NHW*?7Ou+SyNx_YPB#t!zh+6C$BZVigA1-C@k{~j1=%+YL z-X3k6jNNzSSTT-MkAaWwlQuu`W0wI7s4G9d@GdXbd?NZO@?|f5ma-bF^uUnR_zv;Q z-c0vmb0`J8B8p*rV9gqFX9!uC4(AaQvbKNm%K+BWYT30&Pnqw05E~4!04CsCKp|Mb zNz&zOvrgP1egr>KlAJZ?+hdW~pgU*Bm!mKi5JzpQ1MH`#0iXNWZa*JuC;|)MtD@4$ zkNq?=mipnL)v$jDNB!a%Nnwen+mzvrpb#A1;nEMv1kisJ|tZBM4e z1E;_p;ZQ1$e}J?iUP!F1KVwAY^Q0KH(<{kv{W zht>5aM78)p-fzoz42|@rU;zo~1k`kbVr95=OUPrcZ9k9PclwcC7KjaoSO61nEui>DKuW0EWrX^m zZRTL{MXYOF3-uoJXtHIR-DWCK-1CHNI#;oX;sVIcn)%H3?C@_^3&QWjrqrVv zG>0A$hz*8V026R6pyWnCs;WK!#NE*?4o2h;}d!dGE)g}#|DpS0kr2(g{$$d=sH@zt@pcLRH}6sG;F%8*d?U0cEOhoGO{fUmuTBHTdP%-x!zTY26~Ku{<#G3(v}DD7UT=sE zhFAa-a4nz=EMTD@06L#>2-YnLu8CX}c%ZjU@L>R?_l*EodrAce>VIldz6cbaPDUra zwf!0_fP&e9b(xc5LmK-PeU%ivs#z8z+S!l0@W>?azCHZ5^-#_Ly02_I+F5iKc};{1 zTXlU(`?{0K?LyXiG?v1e<))QM5E~4!04CsCz?&NZ>BX#aN!ncsxQeRuc!A7LUrj8|(r!C1WE`3!Pi-7| zN42~liIV>p5`jCkdxCP+@5>Dma? zuqoFjOQR~<-42$Q)kaUbf9CGmmX*>*zMPy7i>ic!xLq9)dizJfRa9k$Q#k;Hev22# zxe-TPt*>Y@C%{a5XOxc7Q=SkXL!_h2p(cM9NQR-@`PSyK?4PL0lK(EM60rAz$pZBR ziNG0orkK+w$!#p|c&+h1?(b|fQ_()M5|DqN@E{(?Q1#B?2Zby|$>j6dq-G-?PEgV7 zkCC0P9i;d4sQf(*iYDgWKAVq|ewWYrZF{O=a*sXYckc0_>Bf^9X|yAv8B_<8ABLHD z2mA%Eg4xn=Tl5pxpOj?*|N9uBwE=deM6KvBS|AZ^)pq6 zOdm+Us#~wz#Vxu*G+$jYJ%>n}fcVgR~5`LlpgA6kMS%|AYSWFlgpu6#(e#9G+cYi9)I9%C0&vrp-3!;jP(kNj4{HwhJ$a z*->qQ3`6!RxJYl^zzd&n3h6VUg?A>ZX@oCv_4mgl#Na(+J4EXu%DYjl9?8vKCG{YZ*49 zwV2T@3cDNSDn=q|90eeXI@*heQb41tH(yK^mc2_8dmsC+arYU-GDQiYXYWVh*WXb! zCig*XFvJ3wfNKGjU;%?00FVo5ONdqJp&Ia@Gi33C_N@@{+mW#uR3TT?xJ1z6?OY(* zlT1k}V+LyQ4DfB>CkFM)O7G!|rf5icA$nH%d{yCnaJqQJ_7hF~Hqa*1|NW)mZSKBsbIg>Wi>5)A;3e$HyPA1L1K0 z!gjSEP<RJvP0>F$&cLD<~DjL);*`#I*`v#-D2JOVK|3N zuk$nKZ?R_0cWnl$`okJk*{yx>>wM|e3F@cJluqI1&vQQ9>zv(`)^?tW!JgrTZ=gQK zp%%br!1WCH0v3?LdK&$Ukw;P>Mr}dOoRgX!@ftNnW>1WM2nhoB_H#adpKFZcb&+ z_I4x)La$cvI3w=srm|p*nca#o&f$UDV5kLf0oMY`AOf~S0H8s_tQ&SF>av7NR8H}W zZ_$(lj5C@ym)#~+0t`$r$8~|Y%=#O){P?F30cQF+cvAwQ&!>G_jsukkI3^7E?*;G( z8(`h*BWBz#hV`Y8^Wjv{10#fl4QJ11XWbZC-_Pb|5DHBy&nOFNCN8cd1hv6X3*Z8- z1(bsYWL6ykK-OecQd>81CYpOGN`k~v#3IRtg{xKyZ*scd=+RYpNd)9<#Wr}cf2$NC zKwKApVQ8%kMd$rHBBO6qRLcgF(_X?%_xLJ3Yk+QwjWEuDFYOFZRVjYj6f^o}Waigt z5G@ekaN$I8wyK-vW6;}>L2WS90=R%{0To~YAA*4Zkb`wk`tnY3MkZ1>?Ix*;EXw}T z+`c$^FarMMS8Z$DFd%UozsOK1kNAavtEkFh5!XQ!PEH+{-<<{(*B60 zJtVd8?Cyv4x^03?C<&IgOUpWGtwLOgk?En^DH)PBBGO!C~MUF5eKQ6HG<LSjtCHWo+j6?r|8Fpbq z?R-JSqEGxbZQD2!1VB$)6oW=k``=UWbZ}=s-(q^08P+o#U5hMrFdr^xo$j`tU-Bz! zDtbrA14aQt?oTCnfD5=5@C_^=*Np-II$ck9*_`koN`A{Tvgt3&mZjn1)gH3F z$3Zzx=Z2K}0f?$a=?p;Q_?`su|9 zSex8S&w}ukv3^h$`mib!<@hr6`R%Isdx@C*=IS$509s{=3(NB6e1pt@?tCWRUAyB> zODcjm;WcI+u5`y5F*7r{@eX2RYp$OSFbWW@U*FK6>D}Ysl$>o;W_sdJS3Z>%<7+bN z#hy*@M+trc7Q#QUUF`?df(7Jb)m>a9Bd++N(-_f1wg*z*rsKcActk^Cuj~B1D{pU* zi0v~56VMv(8=>ifZYV^6qg2IyYSibnp~ktE&UTvDx134pTHZ!WvlcyXHVdgcgi%0x z67xdAo+L(R0j0sa^;sUi$dQT;TqEfNrO0us6|8-zPjRRP@ELGD1L`0Genlc z)<+J+zot!$_%!<}MmTFds5rBSQGk(@lvCe*X}j3mTzW&XAUSP^ypQxWv7c&9J=pDZ zT#KMK7-|7rz_oySuz-TJNdO2P+jLm=B4pSZ}7pM(}S^yVtEuaA`;N$Zo0O%1RMIgJx7^!0fc0FYc)?}A4UOMU#mKWgp>kEsf>+qu`tK(I6F^~Srs_pBhAIuNF$1X z5Z<3FMQYkQ8h6nv7cWX696tAxTez>X-LivgSb;mE43DZrfVy4n2Q*#^xQePQ6m+?` zZl<&Vf)3>KydOkC^0l{&OquR4AGEkEGy=)H#LE@dFt9J9DnI@wQI!GH zo{7~yMRMm;C9`hw-MJn^)F<}0`_(^FlIh&bHVXMI4f@uG|(&nb$mL60va$C)O zAEr>3g6sM+p1+(=yK=%n)2CwR36YGd)*)+hLL$_80<{1>aIObV(~kvAxwNjq;m=oIS(9-Qli$$t^*7c6a&vUQx##4j0$Fm}OTWGf{1SEt z_3n)K%#ECw9oOyFm1)fTPJK02Db8*H7zJp2v1_WP)cVk@{>E{};%B)z7fFJS#Ont? z7H$g>Z#lC_D-Km_a$YP1yZ29(};&qY4DSK^Qbv?BF;E7^h?bgq)$dGR_rb=SS+ z$<`-c`7gd$lywbK3=k+##)i8PZl%lqksgduibeQ08>l*g7|ZzQ?MjZm&7Qv2eq>3q zil?8@_HoW`OcslG(5XXhFw_FLfNKFQU;&@v%K#upZd17<^3K5I`t~pSBbpzw^tgAe z-^QMMg=FulvCky}d8wdX+UOc&%HGN`- zZHED)fM4(Z^*AKhx|0y>)6w>i2Rqa5QdUSi5s4xWu>15sgI^`#-#l&pkMFwL>1YKD z_-u@Eag|=qFJ=0O+dd6lhfTttBpO)NVai|6G8E`!VI>7=;BYglM zs@0~s(tw7iFE~0yuq%?X@a`0Gg<2H%83l`J#wmZb0kZMGFX}@_@rJAdkBKU7zUV?+ zHG9SSJW>~VmU9;)%Q^4qu3hy&V%^(QA~0SK4S8}DQE($rLYe6Msf}I6 zy7AQhn}kzcpu<~iD&)t_5f=ikqAD}+f0630l_*Y;h;35%{4gurh)BmtRVj(X|{`G*%?cz?l>zm-LNqhup49I=p?_GYD z{%>Dhe~j~ zi#N@y3O_pQ^FdAZyZ}WR%B&Ll zEIL*+j3lv>*+^)(DSrH3&o7{)?}?vSD!tpFc(^sFM1jG3uyh2 zt%&*w=m}(5>i=fX`zq$oZ-XtP*Vez}B75GYsdyKvo8If-Ec)ytO$(!d+8mbL+}9;z z>O<6}3e;oRI*k%$(yco|-4eHkSToskp*9$50bIcKj!7?AKzUss0CbL^xHim|OEvG4 zip4(Q=TP}wVbZT4CW$oGO(rk(!wK*{DdRyt9@gKGvTx_n(%h7^YaS#WFYLojw7*VF z#itS@X6rpNUQ`c9$A(eBd$lNB!2MwdOGHb>~*5sc*yUE38^Cc^wuzrgagW6!I z1#kh^0{XxLDqizmoF~i5{Cdn;j_0~hrhjrVSv=)p?(zyen-VD;SniORV7N`w|S^yVtE#Ny?K;`2?0EpfU#WzpEZJ&=*qOs@s z>z#YTjGvu;W|Qz{vmYW$vaJDabZYOe6pH*kQ#$DT!&pKRbN}8FMPgC<>aSmYx#p&W zTVg!JWs=J>?-s!*V5I%1ZC~uOT^!b@=I3%dc49jW-wmD8=kq42H`ziw4WKp{Y5`op zwSa!GfGTEH0I0T(V9s`3m9!ft{vE6P)+EV^21abKzVUVuo@FNDM=YTH$3&w=cc40C z1`PeEb7Wm2(lg2wD~~&-Mca2r-=;>QE^WIZC}c>J%tG$L2WS90=R%{0Rs>LyC?vVdLHNcw^t2s-CaYldV#p{b>$vs zZqL_EbuI5BjHBCd0C7l<4rk6eT_FOh%ieSUc-dWDzfbki4T1lZZ}N)^kzor7`i5Ih zZt>g`7zF^rUDB3oS|7|16*j+9<8h@x`#F|Dv__M93vfii`xL$kAp8T{)$am>U;)*& z;}@4vu=X3FVSmAuld>oh%$^{U?&jKV5)+HPQ!cLU=I2oZB#6{4Dsb#%f(RG|?MPrp zEz1R3k($>trAYk7=FJhwPtN7_eXg^#9sp}lq4x*JeQfXYv{xt9od_Q3B#DyosU5;& zPbH_B+ix0?-GKTOhgtxi0oOC&2Ux(@SN#`9CvHdzkCKzzPLy|hoX;;tcHTpSR8d$a zh5DSXv`PL=Ay7iD%q-f)z#JmrIE~{BC|075r1e;jq_|63RU`Bc#)ghKP55f8+9n#T z=g8qI4?JeT=J?b8=Aj7H*Y_{BID%6x{QfL&R;d@=f4JWRwZTve-~z4%`~(a5_IUB) zg^JhiWiEBgvR|$JJS$fkD*C;Q38p5HWY3igs>QTNsDY}YbHd`9E?O4?uA(X*eOFLF zWND%>A_6{I+RqCjeEOYqOPS`8NvV(uO=K%2jH>{HxaZx*C`#322@4e-_C814(@pf> z_jfcz>6Mi3b-e5Y*+_#v3z&G#5wCqiJ7RYC`>oXcT#}1>6HOyln)Sh*C-A6B=*z^_ zDll{@;3}%JhJ_3OqV$@h_hclTd0(+|=cPhw=b+h}-E-Gmn-1BfRc`OtQ=rKo>X%DH zeTtV+l|}zqR3-B_odhqLBlLOt&wFY!6jc&ADe?{(FMNXkOeNH};Vk_A9eo2MYoNB! zujq|uo|?Db3AoqPkr;Z%O z^tLf9mc>gCr(NS-k#g?BT)KZh$or1sUA04kbGrq(xw??-MJEemb{DG2m#IC1cSY}D z#DWilHWA+F&*sNmd;SqvDgCMT_mjGM@`ZtNw)6}eYr+qMqA;Sj>ZYR)P)b9i4L#N8 zELm(b%2nP!0SRje{PGddn)wJ1DT7WLdc_s`;Y;)vhe2!hECC=roM$QuUfE7|JWdxejwUlhzl zR(R#l>dMfA@eH2acRWEV!6HYq zT9{11YxEW`bh5Xe;{lh7fh<1=@xD9XG=&HldC^x38t(LN`26ASJL#Vc%D+*s9{|H2g z0M+hd9}|h1#$CS;Ehf*`RI?mXxkCnwfFX{JW`*uIVZEH_oNWlTtBU5tZZUqqv%^)Q zt=4S17uMVH9Afq8%TM8?lFVvpfc2{g8*eN*lSY zu!EuQ@qY2`^@$p&4Tf3(7jP|L5-gyxr3L`{rTexgtqae+!*(H_vM-&wUG2 zRSJBnO>tQnpnQzFN4gE$-wVq>f2uOacR)87g_*B7|Bg96iZel1^|8SBNq2ibwg=B} zVHD6gSn_bER#v>oGsJnintGGqp%zpGcU2X%Xt zSvfJ1O=ta)kmR(|B~dA(7tS}{WFUZ5KzQRBo`6%7ev>?@`UX0FslkJVVGGx1e6!=` zyPu3JhM_hXY5`opwSZ}`fMydq0LXr^KtZB#z+XvDrv_7fORcc2&GDE$y8kON!Fu)@ag~WGNetJ!?CnfN=)w zvyWRDkWfah)U#o5d|~TBUj|_o;u^Ku@^-gc=HF2P-S@jCcl0I&yVLvKj@ctj!Ere` zZq@jp7*gTdUGyaZcX(7K0@Us5cY&Ep0hdvgEqs0e(A=y{c&F%~<&AHEUZq*dv|;qf z=Y~l^nMszRwxLRKuYsyFoZ*93OwpH7m7l;-l>r9}MRy*UZ`+I&Yni#6-T@fh;n1u>Q~ll+e0O%K5f7Q>T!@okdl ziK#P&4iLobahvz9TMPK;<5%KJW)ppkR%XYy)J_(nqtgI-%ve#5K~7#P{pErfI~c9a z#`nC(YoRFc$})=bjFByAwvI!Qt4x0Pvf@rZ>Y6eI)L{a(06uN5r_C&Q+O(YizIcZi zl`}$ogx0>g94Y#rcrFc~D0!r&_W5wj!)X29EsZsxu>B(;S$|e~$a*6zRGw%=HtbNm z-Ob`AZ$ln5QoEDbD;sBt{WK9u63UD_;r0|TerMyon2w<6^rGkV z{tNtv&qAO!7-|7rz_oxmuz=Q{*o%`d2+!j(ZG-$xBL^hgzA!j%{6aYmv}>MD4IKMu zqVkXvsNr$`ZGbcSuYfiDExy1RAD}=I+2l5nKAWZhHGg@!LUsNt%GDdA7Ctb}fK8SV zrc6P@&uxX$jbjKO@3^PL6Ni&HSKpP8iu|d#?FzNQPz&G!t_9441+=By1%N_i-|8As z4uMWGFn>KKsMVx@Am@j2c;0iTA4Awk87UE{lB*U;XvzHpG6QJX#3e%wFcK=yz?C~O-uC2o|Q#1!x~n~KDA%|sEiMV zy^@oDUj)ZJ01-$mLxoqqt#6e3Y}q^w>QfwQ0el8r&wxd+fDUmI0B9(}=KD*xF$@MH zO0kjZ9hx??Xo;Ln>4eNXNeLnYwfjJ9IUCDI(+zA80jT#f8iR(~H?}MjSQZt`%>UfN zt?p|?C!X@B3H!24%LL;pFa_Xy%Y}jSa%9X&q>}7GwGE+ztEs&ES-9`hBFu=qUZ@R* zS^yVtEno>Opc9J~075&zSAau0jIOC&9L7vatVK0;6zuoa;MiE&@+tbklRcoX)RbR- z<^n!MKsm$yI5{@1p!T_52jgn_lIlm@pqnhF>#FVv0!+a-P+=5cB!R0HmCx5wc&pMT zRDJI7cx8OHCTmude_~IK=xJF1)CNN>fD5=5unZ9}@(2K`>3(=VY2*(|_H49Ab?QDH z3rRDk__bNqKkxTUVNA&jh%oSILmTt#?+j3&k45Uw{^9F-iy665b#q1sPhd$$m+-Yp zv>&?(_I3n}0tN&A0Jt})T13Q#?0S#G$Tk$I+dFR}DS2o2XGYmS$cEZrs0DBV*8*0+ z0=jatF3!ICd2mW!7vf0QgKK=q_$B*u7HW$=_e(TasgFtr=iI750*$cL{F>OmmrVQ| z%H*K^E-x5Q3L%;DxWmd%%Sg;mx_;etN0;dkMb#fh0b=?zrn1PC(=J$Y=9#=V+ekM; zzU~ga-`Rc0zg&EKfdFcQp%%aeTnktQ3+VPBxX28mqb^|EuzoLXJaI#nT1^XEQ=Tv_ z*LF|20`rB$^SoO?tEG^{_ll$L7puTkROQZj=koxKD3k{XX7Q&o1r-f1qer!HUp?>; zlod2?zWEtO0hvDn?@KIs5fwAv-IBiHWd8oyNt*RSwVt-4^TQKo7k*GdcCuFwG8)#( zkWvFEIg5>D=5C#-q~y;VAr>?d!_lhns7eH=+tu#^YnKA9qAGio-T^?f^LRd+YiHkG zf+~G}iMjid`}LdD^}0OG=IEAKGe$fBKCxQL30*zdxQwd&{GUWsZpPtM;}|*OJ`Zl| zYVGAu)K4}KrVQO?br2oSR9>*w0om$R=)077ZR4wj`!<%TH67lPe5f6rU1r8BG3b3S zQU-hg5+nBY<0Pg=^RG;@4a2<}GmZf=c{Wr-Wr#@o{R4S1{V;MPC7*NnW~Uh>LN=E) zG&?8EnvQh8%}LKR@}PmMi`NAnPz2S|e^7A6ZT*tl#p#c|r1Ahz7C)U#Nf7(Mulp`L z=2(>G8>AH8D8QYalmd$+b9cgWp!#dcmNVqqTaevOy9LS23WCYGTZM9qTdp{4O4$0@Nmut(YdeV9?zgZ%5I|mQU zRv=*LWY4{~gi%0Q#qT%%JoC~aNGfB<16E{$kx912hUH&u1dZd!H8!`QHW+FFT)?$} zUtj^>L$&~*md@S}3+k_)GJD-%{H#|f$d8ek$J_LL-qMq2HTn535K!>7{*4betNyE{pee$r~ zsYu|S9>zp(ZFYbBoN1*V)CNN>fD5=5umu*-uZs@=6>-aC4w;s{L78=Y^dS1Zf&tDe zNr5yA-nrw+vw-|MB_K~!7q45}77}CzAla&AK9WjiGV}8_csL#R#PGv!g+D2WpK{0Z zjNk9bWx^;x)O)vE_9C7tlz>dIxgx8z4fB{Kf1A+Y)dA%jt68ikP#X-j050HKz&2RG z0Ly&^dCWaKBIHW+FFT)?$}9f*L#yolLB#0W& z^pkGb)5$UcUDj9;jfU>zLj)8I67S(<66}YtI*kkFMbe#aeyUL+i3mANqIh6cu3iqK z0J>onEu}||A90lt%^#Lqm~!_{9rYoLic4`&SOm|$r-j;Js0DBV*8+CI0tVX{0iehs z;~&R8N#VclMM`X-hV=5CAn1MHlx6J}mM*2s748Hwsv_YhYKi@gs&rxru)E1Zprq!C zh-n=eI5I_NcGB|z-|2vV$@YN+)&PtGIwCb6e6q2Ltz~TT#U~g2BmJ^iM(|$V&tH02 zJ8m8n<4_w6wE!;QTEHGyz>kEl0Fb_olW_LHdbG+;_S^uIeC4|9TPuF`Fi!tR+I9{A9QO)~t)SH4FppuOZ!fmY?Aw$~7vig>irN<*5?}k;L z)+1R}vNF$A$TNv^46<%n_G;;GVhna&-~JBrsAl66F6cE{pAzzutk8PW#QQ%AxCos@ zybO!Pzxe!jySk14_YUx_zjuL?B`8`&E4xI!S|Le2#+3r%UDV9Bd)S9 zuM;q@e)2^v-Q{Edez^R`zkbwz|2hAvL%O(2`m*xx-|+HF$cL-r0sFy#i+ir3Dt}rz zUBrS_wmN>JPx)B?M5e*jPUxo8k1Sf_BSnc7PGY0f!^8<7!}k8MsB>J~WmIMHKND3M z2AUJ)X_u5!(L=OiW@Gmdj+*`h6p5dU&?F=G)k=siiU)Ca35E>^u`LSj48$ zk@LNIJLt_HO?44@1*Hn`LCW2bf!rghgzscFr>l5He+HgtY+-4T<*`i&{U`#iD#Lnq z#F*Y@+ipkiQ(ZT7ppF+}I%D^1m#?$A5%~8-imGxo(4fv7s0IHcNl3^3e}ChO&5dhNtT}piR5c}!F=@{Qzp7+%p%B_UUD%9Q*hQGC)J$+jUl)p{%fJ;N% z7qVm0#mmOp^Z1#8L_0@fhtaf1jI8%uhe(yLCasOP>kb2~hp6rX%(teNr!w<9<7jtEznr16m}@kf01%)y7-|7r!1c0p2o^AmEdl^7XZd__w-`9q?9o~5Vh7$6 zWVw&wh5d#ha!TD;K1*yFi0Z?!$tmz<4I)5x4K(Gko&Ec%B69%W6r<8i>R^l}_D?d@216}?3%C|= z1Q9T<3;-1$Zut-EzY1aVNv!B8kwcG2oTxyWF~W+7x$`)H%>f7$Z(@s4%@quT2oTWg z7Qh8u3pfS~82NZ{3A8#t?dM8LMok9Twv*2_6>Hy{!g4BPl%<{6xY7I@F7QU~H^&go-04;vud zGA4_M+F+;!Z~@l>{y+rm>H$CwmA$g9mNy>oFz-IUi@tHJAewT37>X4FjJCAkF#k{i zaYy8GzzudU~&sOgo9+ChOO-I2n;Mx-dH4Tf3(7jP}$3@l)xnFavbVBSx5WRBW7 zC!(Uqp93NdaL~r`pj!5M{$|;(m-{>k#5fg5p6AlNb0Od=s!}yY_Gc!ymZfkO=%8gysj*)vBS1$*XY5F-*WBZ6Wo^pFdF3joFleWyYAKZU{-l$%Ioogb z4@b^>p#0ADoss9sEezN_Z~@l>&MyT7AwFIUMw)z!002qE6(f-!AR7Of;D7Xkgn#LU z>dkTibZ_JA&{xC_s;lupdQL00vUJ0d%c#nd|17Gq@lT^wc~SOv!i&_0m{B_iFXi&P z#C^PaVMr!heP-GrbDDkrah3=^6Ysgl7~MvuL)?36BmENdBb!R7p5wmCz}M6kBp+*W zv#@%y%JCC38P)9Fs3}0K_Ms%DgF6v7aRPPY&UwgB(pDsK)CyXP?r^}Fi^7}Bhv#T@skuaAo2i=J-k4(nR@hl9M2TJn_U+tcNh zYQO$aW*+Mf#W4Gjo`@#xw)MuTYCacy7*r`X+wwm7qPrb+U50NoW94n)+6^v1{73r( zWTm_4y0D(BdH#p@xd`z75f$q^pd@p#w`Z|y*m=K1_pr2$1*Pyi{1;$^e_*@Z`9((n zkG(0Y3-NimkGUCd+VfeEec|(730B}aXG|YX)dmd4SNqw2^rHhRkQ0$^qwxno7QUQW znRZEGo;X(?`L;(p$dxGrVf5x4wi69cs;!iJOGscGducH%Pw0Oq6uu#;TIZhG^F5`s z%)^^6=+yp@g|iV5rw(;pgIWL|dskx*9T6;GTKr<+v*t&u$J}0wAu|4SFyi3$*?;OJ zCF}k-qfga6&qi>N(}A~}t6gk#3#}mn3jLj!xc$F<*NF-~3|xAbADPRh=+BsfvA;J@ zFORM50;7QXxHFwJX){&5x6-2wPn*lw2^}47NT$Tjp8ndUI`+hZ+F+;!Z~@l>kiY_F za4&X#W4A>-yC4vZ;BO$z5 z9y{j1&r#KG{CRCxCfoh{p4cMi7P6o|itP~&i~_isMVP&jS@_X6de=EScixQfyZ~5f z-}HU)>6wDDG%GwZ04#V>!uO06?f2{adN1i5gQu+#Vg^O8NAk&_kMI=&p%P4nMtB!y7` zhzqwfp`%w zfD5=5fDRV0z<%+9_;B7gDPIb{oaCyrn9k$Y&G!26u>L61eNr|>bPVC*`#@a_EWzce z+GL1;F76jB1`ou^L%tf`lzq4${lJi{V!K~+uhjoFRt5$Rtie&4o-5r{Ie|eI-@4p~ zU*TXNfR>+?7+_?ezZX<}h(S9AwZTve-~z4%U_b=?xi~52BoObNYM1JqzQ^O8S9^vP z&mJ919a_s`JZ|dz!Nbw63nWMlGt(k67P=5{6;+vQI~smeNcYsGxg{FpZ6I%%hWN5Y z1&8a0d9#x3|b-Owugn238GOBX1@8Z*NyDVFI-P zK5ee24HkIXEM;7r6g==-Omv&n7j5*pD1F1A8eQX}ONhQHcW%q!v?tnln<4PYP@xF% zS%u4ikH$~O+#^pp@f)sB zg#pG+=}pS9btc_nR5Oj?=r>#}HOJxM8k1NSWk6ZAJ zsqNL7LBVzbMhT1pNQ7vXi+8%G+zWY7gk8OUzVLsTv8wx^cqrG}4zEx`8)}207Qh8u z3%~&jSW&%rf6)9F-uqNzQO?31og>=$p`sR%-5ipEYXX7hridIZp)Q2dy+5&)RuYd9)x=wt62&!; zYIHZ!y((&TU%2~#4r+s;7Qh8u3%CImu-1H$74S?)&4lqgWy3&K!kwP_^YpmM)or_T z&aFRDLm-ua@&up}F&|2cxI;fgz~t)zrEjFY__wBcUbAi~M)nfC{<@cLIXMz~5U!c2 zEC%B$pq0a~Dob;??eXv)&8}q7#=94X2PogwyWdGG#2(LMtwU`v)B?DGYXSIR0qY4D zc_EwId^icbu4PZ%w`A!%83V#CIWnk-xaugnW2H>!SCE0ahk|;mIOrk}0or(_<^n!} zzt2_&+wH{Hc~drs$h18kZCPB;;pDj1nE?SHs-DoNBe?rSz{B2q~uN_{LL5$|G;*2?1=y@U{mHIHw^U+ zqK4Tv6LZRTQ&!1cohs8zZ5w_}N($REXSr}7@;K16(I)$DeP-{4fUBrVMK|PP`q$du zJ=y#8^!n3tduh!x_t@;xqKGwV&An$}jjb=>SNwv+gBI>}*UHi-^&U=a4FUB)&+E9k z^`6~UqR;}+=Z!`6pWa8s`A%XJui|=TKBCL}PQBM4P^0oixFh+;1Rhlhoye5{!b<^H zQI)@lIjY4yvA@Q)#`yqCM%c#mP z|4CG(YoD%I%G{@vPd8$2Nwla>{q!GJw{OFhzqdA|@Oe9~5xvg7U>$dVJ@M8G%t z$&ki`^I!2 zDh4z3Eaxtx=%d_&Poo$oXDg^isIVra2UgOzVvufkE^z{-<&+eAHSmT}WN+&8kqV zngD1LQ$zK`_{0Gspb*6Vu<|uAN&UR4pCH6d}n;qWI9*b$%GW5h{i+=p=nu&g=` z+nD-_32e5n-E<cvEq9CfzXTs9#i)Z0Jxq3WMBci5*JrWNs1W{`5;zG z&fdzP+)ho8xN-k+#7fcg2@Od*Y_#c$DIh7~3)W}8?h6nBw!+D{cw)x=yxA$_*0#eEKV4{#d|;Ue5GZH*?%ez)L9k6;#&;A zR?a^sfE+Af@8-qTl2R9Oli!vfnx$Ds=ns(H*~LS044lD4ajTy=bF`FS8wKKxpUikx z%e6rSJl&n1ceVFHmM-cseM%S@w{0SHC`6$tu7cP(`$)FW3Pu6cJEF6iJ5e#Djwf3( z!nG*8Ra-qzPKAmypqK*@kY<%eEE(1okA~l*1)3Gt^0JEC5qm>> zcav^>(H##-5=H?fe$jfb#Oz#@-K0uB&L_F7rPpPoW9{#{R14FpYB_mAZ7|dVxPWT` zlwbk-)pr3PKcx=;bq%6A^qj7`=~3l^7|v`ys=2;Rrm;UmngOLpKv|6DjIR7pAVh%e z^IM`X1W}y|si^hbL=v?=t08;YG7lCPWGji2>HUWFcLD8h3{)#b$3C=8qA~vRa*cr> zYdo-IhwtJTN>{yma8D9ygP|6{1zZcD0t+~Zyts0zxdq)5^rWT3)xDsm8s8$3dXJU6 z0;J`>>}#eX#fG65$D}d=A*u9@*cSq>qAJak9xgCNrZTBH-E3G1DY}Rp8{>9m>-+`A+pB!wU2^5zpGN;$W2A zZ@G??Mab_PBehS%)8^L|y7ph@MI=u_Dt(&?txNH7r~EHlFewayi-n>o3<~GSgigf0 z1NxN-|C@k|%tsUiz{MYge;e$Gf1Ubx5uk?v-YyHTA|kI6B@yMXzWMKd!gc24 z30)HOyXPK7%&BwbXU;3J?UK&qvDBMvlsi}K;wWSENK3@Pz;TPN<|h77002A9 z?C0}Y7zK=$i8=G(h|$FGjCXmHiZ`4Tf3(7jV66N)HzB z`)dsVv;s;GE1%wKLw~-}@&oY>PrN4+GiHW+FFT)?#e2C#sW=qdonAam1-ZC6HeL7n|x5vTu?2o&kplhl8f z5=xN{cO<83fj-19liqAau|ou82E-NkXr(bAAuP1?5)$6SHAY(qpK5=6_5uqnJb}gy zMga-D=M4;-UtdR}x<5}=E_3xzl^Z}4SgKgZU}F{0NO=pj!B7j}0{gJPr-R%Gjz5bg3b6IC=sV=(ZJYj0TE!jk8YG-S zDNlkvq5!qQPz&G!t_3iH1^ki10f1^3M{a9$d2Q#pA@R8=;^`N6+u);bzV(Wm$=NT_ zSFs18-a@R>87nM?2q-x6d?(^`cAq&vb(*;hx9f-_U{!?QEV7@Wu_aMXq7y~|*(i#~ zqUeJuNnLbC0_?;(GC2y7JH*2F+&a`>-0A}Jp*9$50bIbf04A`2Gh$-^DCdP4O)7IQ z`a4Wovvs9&DfK}>+Si)myX+z~vI~4c4}b(gZOM9>UEB}>Ql%+TVd^q&K5=U-&n#*( za)U$yQ{W{7~bpBLBGTv<5bQ8lf8+8U7ekdII4PR>Z8d}UV8*J49eJa_68AVG@Y z-7L96!3zObQI$yY{CXfNjfWT#*yARjRUIl+bSG|WtB+Cd<7lyK2P(lRz;>74h~hO5 zvahl$^}%Vdsx*lz%Q)*caa%tS>!V*o6=+i_tfhUJ#6Ix$qDe|ir-o(BXn)AqiF~Ox zmOZa5dnu^D35)7iaNs@ZMU7rtMnS&w%S0z;Y?zBC0Y! z80oyh^5U$Ov_?RHC84mk-m4hCM^eL9-Rz@(h+Et`W1~`N9+Nr(9hCW{4R?s>FQY2U z|Fft{tOb9D$>)xxjf#2eyf*_#RK*#eCozbwE*u%*+qx2p+$0E9dda-2vMAL0>X_fb zvT?nnf$6)2m3Z7^4YYR;NCH77M2|ItYrkQ-B_oWzjeUbm>B1%@Krh2CJGM%WoPdci zwEt7V@_5W*GRL#QMP^0Br|Ly0=gNWS$G3@+gT8@D;h-F~?}6+p2hQ_kAWZ7w+Y@oR3q_A?|9FeF|oWG$(5cs5E)>`C8%S%aPO3LW zxA4c(;#5{fV_YERvtjq?{C`nfKCv@!#8^}`Z_78u19b{*pow>z5 zUhYeWaqP8ytdcn*Eyki>btY0bSE>AsU7G&RHIWx5S|h!@E$lJWJsYS6@UeF-fDJ4F z(S8vCGWsI1DRPT@ZIf`znzS|iFsA4>l|&uq#OIt}k=`x@u0Ts}PcFR=V=p1QK6$JI z(n$hIe3WSRsqo zhP1Xs2#`$D0mS_#Zv2#QeGDRi&!*#D1Lci$!UM0~8kf2?%~dNk)0b%)t5om3>wFau zU=#pqkvIxa$yHP+Q+o4@{9xwzg+QyyoBhojB*nkEPxcd_HW+FFT)?#e4zK`Z>Tv*Q zOm*w&c9Ro_VSB#v0SEp0^an>Xj{EHQZk3@mndmrV0Xb$`t$!oCl0yU}|NIFd|yW zu4|-+V(_p+_>GH^n$L*QU4xJ);%}6<=}*3Y{0X(ePz&G!t_5&`1)y}P0zk=15r;hQ zq#7mz8@q${ylZ;dLCcDRe3XZ~HDOh{4^Mztoa4yaEWAyS84$dc&y6T8kT)Kw7yAGm z#N_Vn)i)$yIYA#}_gdhFBnUTKu%55%OsC(mCrh=SFr{B+OmEsW9Qe*B22@bw{?#3s2Zr# zpWA-Z?&~XvfOe$}9(!r~G$IyevT9^;qu0}=mQ7lP??3>R?|Wf`hcF5t-j`N+EuFmO z`&=L{Q!g_=C-B`ss=*kiR}WyVGT{~gYJ;H`zy(|j-~kIj^X3JBgmX@NRP1hpydVHRF((cg;BuZudI-~pa`q-;jaJ1-d#sU)xHbkr=>wakW#uE=`QIG0TB=Z zX$b+9a0qdbMx)vzE z-q*cW_R?&%l%8U32E<-sW?(nqDyRgzSRC$O*si8QIluyLY4lv46cb7R#$H^nL?V0G zaG(e$ScG2*Y5V7^{*{sERTm1pv_M`RMlBRvv(rlfSFI{_s&7+J#btBFa=+Ky-dQ}+ zq|$CH6GP~YBDB1}p#13>lmZ^46!p(8SGI}zIIPr(u-N+bu+#F3iO5W%yFEs$fnx>X z=Pccw=AI~JyEB&NRPJcPDcCw0a`yIe{e%Z;O#FzduvV3jiChWb{43y3t4c&vreFYw zVJ6JKv|~eXL4kcTUsbaUzuE^+A!jWo@OEMz4r~7iP;fIOEQ<^$?g0w|SFI{lJLWhn2m8n~BK@czSccT*bQySP7mn|C27e`?w3em@ z85 zwAER(2qm!zv!=dJNxoJYLTSyMURN{dev-oLjg-+37EjLJZZZSt#^0B?)ooeU19Bci z98Mqxz{Z>F@rDarZO{;`0HCtHFBJg2^R;OwTZRJ!MBzdOj>xE&J90qfYHrzQCqIEC zqS`>&M(LHC@#X>`HSJi{VI|CA$EhQ&t&y+JQ?{@8!FdlugOg{95CKX7RLboB=D4dp zON`UqD_sjZQ_Fi#Q%Li0GNPl0o*qNE*IPaG0^M2XdPYcPxkaT z3G`7^z$a$CA0weOe2X z+Aea}d05bpSP#NOdv%B#*Kjv;cV){NkKtgmO@vz>TspeUWH+-{zWpe{25vXR1Vapf z3Ah&U04xB#$Q=MO$$0kI+{xjirDSt#NXL7{nT5D|__V^GZaw7cHCW9>K%;M2%Y9jF zx;FyKPxU;zsCMYZX1w$LKMYqKg(OCZ1k9NPH}@(=jMG&?Sp#mRtUY)WWv9VXhFCGa z@r3#JLk|7QM|a=udn9G52;}5IOfbX%n1E{mJYWGBABrv;7N-F2dg>~f!Lyh*_>y@S+_@1@neZ~?C{mXX!`;HAbYRK995t4j4=-Se zD8EREWhTHLN&&!#=1}Uhphv>=K1bS3_9-56?DZyHTrucrT?=hlUhg3$7-9fSz_kEg zumH?wD3_yv^LmWfw;$m|O*{YMN_BMOgzT8F2n>w41fu^7QhD9OBogz};g0h#HL zN6ER8hpH1R;44tq`0a~uk8!*k0b|ELytDfR0p4y-p>VioMaOn`PfHTIK$D^zjlnIR zq)-ZAUa|M)b@N#6i`0n${DtWcw^gM|1gNDmI!~{bOfC;!3zz-IHO@Imj zp^Yp)Q327bm(UITyf1!%(pxZsN|X99PcNkMaybJ!GoaY(-{_gxZ`N)EoR>>KnA&M4 z7^PwpizvbL76OrU5Unhg%3iDZsv- zQ8%F@SEt<_^Eg}2k!g!0V4f5G3cTahS74cL^yD)J(VGq_dfO%BAn?PrwLDzkkl;Hp*S#2hd7`<-=fhvt4} zj{92FQ$OGAioJ`jF-V@m{t4G;0i}S|DDEwIKhH!`Oix9RCTGXM#}9_XB= zKlTSf3_G^^82(C1;`-934=HUJbCU*kxg3AVb^RveHYdquhPA4MY~-p22>liCw^bz~ zZlVnUR51N=|H(Fi?gPouo^vt}S^irb`0tV(hH;Q9a!~ZDr-5!2;)$Q=0bGAuRaX8_ zT2;oHAEmB7i{P=gw_%_&F(GRjO-RIxo;K(;-;kJMs)+GY|f!pZAk=4g7<-*mz^83iZ8 zRBIe#aZF4A{7Yyw6r$vUJm zJ2ed+<=! z0MTd7u7=&Kjpv}ac{+UfF;31nnm0*AEU&5k4>jjUjv&6SfEWOK;c=|Boj@kJp>n5$hPdEM6O;m~t@kU{zntL1^O11OJ&S1)C3*6Z7O&rP z6Dy0-M?2~T!~{bOfC;!3AO;pdfGB=>4Y1Cq=I1oZC@;rkhr0E8h$3)(?T~M&?c0jn zsd%m!K@Mby5evoaj;Od1P*8i|^}Gk320N{fZ!9%)M*G&v%am$S)?r`lX300g0ZS9)cr5_rMJS9G zV}l=>w=y}37Eob+CtW$i>wTm217^YI>S1;}pcMNgg5#~|xf=n`&D#6QC@C4oLp=%= zF&+i4;jhfDe4MZ+n|fxJ(xeT5Qh*#^Z`<(>z9ud?(O9M71Vaw@sHtYj@4Mv4Zjw^% z*?15W3^4#E;97tLSiqe!LjVYUpv$WKlg2)-?z=_bpfrSuuf)z36LLYSX&`v3Y$I-< zzI{D^a_#qjE`t~{LI7eePi6t20AVNz0Q3=&Jtf3H?4#*= zO4^T^`1yN!LvQkhm2>7gZ`V=Tl(PYOB8vvB!*%{ytNoK_AI8brsZNCi4f7>=P7usW(~uwHEB?9`pJL#EBw8gtr~Z^-BonafD4{(BTX5MqKM z2EYVd3y=Z}AhO)M>;vFsBVp^-#BaAlEttj;PWaqwmxovwfc>&4VE8d-@f{$Kby@Rp zC27#jC}5J#w)*I&g#GcP>~a&%uTGwkUjt0HZST3ddx+fo-VE)L;MhGfSH!!{f>lKk z;=yw`*l3Scwo#f0*;H}OBZ=+mEFdNrVgO9QwE$_bfV)y_08pL~wjIITuY$tXBVcYb zXb#(HSP|$2>is=udtW*7Z5q(Es9Y*uxNGoIz*Vct^+B&TK>pM49sTDdUr^twGbW2m z67{U?mKbFX#~+_OR1NSs)$g$u-c*sG1 zyMuOzoKy79ZQY!OpC^oP#L6V&A5GQBBI~46fTEUUP?i0>EemBuA9}QZ*P#*IL%idV z7TJ!s^yV;bV(Ci2KP?>L{%;#991Ib;OfbcXKPe6d&x-#wz7;az30T>*)Z!;>$>;=d82 zGj&J%Lc#wwWzpxnX=E;G;?13pcD^LwNy>I9M#98mNAEOA z{7dq3l9Kq47XU&Ke_Mkn$YQ$AdWOQH^XdgrT(J!b>8czyZdabFV?8a<#YF9J3~g@p zW>|W&eona~H*VtpJX?buWzIlt_ti5vWSKhE{!$dp^MFYx1;BHCviN|bT&MagT0BuU z+I@9$Z!T^$eK2oqajPj;#1>+LAqKz%Tnmr|3n2Lk1b`HPWnyCHCyK~lsMqf8DdK&v z-JR=7%lh!{T*xS>;rlSqflOQ2b-zUEMu5Kox;o`=aSKQ7ugiPL&2gr#W|N1xf*UB=ds=Ota701iex2G$1=y%9N0O zV&la{{yw{YV1j@NF~JZ6U;?fM$b$utz4rrv#9Qd_KfD&|))f5hnx&K3!PSGN_^E%G zpzd}nTc4ZB8=&R8hwqm1JdJMz5Rl9!I7`tS)5o`sukT5k`pVcx5iRLDS7q~*NIs2{ zf>OYPfZ~bm2QlJqh7{btuw5ORDu4x$n{WX@ zx6VK|+#k!U`DoVY3Gkbo!$-$BEe`}{NyI$sal^&5fV6;<1FLP!wi^NY>40@&`_`y^ z96YAPzzduDrDANBnYMDe+*dKkMTbaG3W%*P%ccA6p7E{|`|}uoTy7|*W%HpT&f`Jx zO&5DM7k-FOafku18gN|$6u|=S37-N$N-Dt}s{=A90Pleq;m?_p11o-|ahP~$1=T$& za|Iz>z?bV9pSWs~#BK!GNxzX~;BMt4x-Xd59Z8ES4-GA z=_-%-OGg)c$x5Eo`7!j~G_C*bNm*4iYQDIDZZxc2?Y~e0t_3K81>7h4b@@g`B-ct% zT4Ne__~2cG(kSLo!#LIRI?4g!l^_yBj^i?*nkA|t3omZojeszA84VedgALGI_r3HV zV&kJ^;ZEhJcrFu8bG*wg_!CgpfKCMZ_SOSKw!qHrw3QYluQqQ?oh?D%zWA5C$b5K% zuq&qiJpsx$0(Mp|&y?1&&{UsHnjs~9llA`lzGOfFEp#m} z)Y<480nXU`{GKszzU!6@Z*}T}R!WX6EeIb6;a3e(-;b8GM1@koKGV+}uDXcl(QB(3 zoW6`}-#V}-yPw))KDDazJYuEAf>`7s2Eayv>l&Z}7C_OB4FJ{I=zg^?opNxslLVzO=r%JuHiWxaHMaVg-cRps&5WP%L&`VgQ|e~RJ79aiIx zDc!=o6g*5S$2;1!Q_!xdbsAAeSv2-dH}-{*byDG-8bC4#F5D7(4B)=ms7TMX0m8TP zqtR)PE1KU+4Q(kM9?9R^N8&iV#SxVjrurDaUIoO4A#X-e{I$9G?QOh^U~Zlx3470l z;;N}a)u9Yav`=L)0oMXl{|fMd*Jt)cq|8(UfOc-t=VTgu`OekUa*-(_c;9P;s!HRO zLwnXG2#E41H412dfSkJGMDFyrRprgTvC*JVn@ux%H zmjxqCcYd|oWo8%SbY{Tse+VWt%xalnHu1dEc(D3;>DDmB1Vapf3Ah%Z0Tw_b)D8fNglieB zI5s03U|7iaz2EgE&Bs+SG(TcJdzguWIL)sI6r9wZd#BFu?MA@x({5kX)Ol3ywJd9z zl>1&YaW)!ADEIx7$F?`OtSXYA6fk=cP&@gc%N94)2J4ey&dQhG4I>b-$l3#=-GH-B zksgQ%h8O@7a4kR+EP(cMfpO59kl$FTc)b-v;p(Iw>iQkBhUdo^v9TK?7#DAMf>(2Z zPu9$g$-=SCZUlHts`>9^!fi1Nc(0)YR;|fE6eAhsJ#trhlI zy@mJ}L1QzvxEX>3V$Db`P>^FFo2y~-1H=SF41fu^7NB(_VAlWuk~K^}Za+BwwBo+< zbDH*9B$J{e59ii#FYpoa3OIhS z5@YC#AyKRK%}Dqy_4=@AcCbB?rnD^z@Li-5=P%VyXI-KCuKTTuWoP>yXsmbptP82wu^W=_A>^iKV2u9gY zQ!?Zd+0{!!DL|)MuG_h72;-D)lfZ~{wXA`Qg}}_P_CR)3MlWHI4Awdf?qArh-VA#L z7Qpa68UWHxt9bt`MDb(Bq6kv$iXrwfxsOvioR9lr$hiXID-t9iEfz_|fSI$(O$`{8 zVcB`1;hgb=aR2OKhUq-%nD<7@(_|CJp5UlQic79g3RppI^O!gEs^_*_<9dOlvOr zSe@r$rcy&t5%iC=0u9m#s%4UhsR7X!nQ5|-U~eZ7v>_I zQIv%0&Y93&EG|j?bk}P*9S3{Pm1&G$XKIZj@%|oXvW#y@1TD|+_c)-yF_UPP;ewGm zcRRdEj#IO*JN3DXLtj-1E43E~X-^$tttufGiK`l*_gBE*R+UWRIsgzO8Mi~03J~c& z!3$tA-1ip`Y!7lvw9{@|0T^}q1O)!^oohB7X|F){E2Dhqw%_Xhz+yu$=H$2dI z<`a301C_;-t5%gn9KiKVPFX~Jq_Jic^|pC>4f{##$Xa8mGxnJ@rCT3C9tDwQCQa|B zn5+5Z+4Goj=CB=%297h}U5HWwP$%I9!LyGH=k6pEZ%bm=`V?K>NLo>apgx2K3i*Lm$nt z8R!n{K8sMG>MC?a)a*BLcS1}s!~mFpYXOgM1RMndK+#*RBq~@YUzo^HX20o9V9Qn5 zEyV?KX_G~>U@h#l?E>!~j+G=;mtfuqc=F^6*L}}mcA%G29;%(=cagqE!ORz(y>Ytl z16wLkPM{P(aHr=TRii!Iaopp3d2n&J-BPUH-FZM_?4+@6XIb_f4q}2K2EYVd3orl+ zU>Vc`fC&1Fbd<&EnL7s9a*Y71LFcAM?3f)K#v*UUf_o~p1*I_vblKne9jhzW)m026R6zz{5eEmRZ$ zqGTXkPAU$|?4A~(w=S^#Xd=cC;D-HhqRn`07?kPs2I#6zVU%7OYIq|+hi{5_JgZ3+ z;L{VRv2WbkT4|FJzL|TZDdo~LnRuKErGVWRk4FM5Io*`>Im2ehY(S9=)$&y0Rsdfn z*$IwyY*?#GxPM{0devbB7Qk+63;-c7Z&@$v%by%+4#{vgd>t<1vMnq(pM6M$^H|QL zjr|7@FdK-nvjr}RzTVR#7R7RA{JIxJ#cmmSnkncEf3SCQ$z&ciZ9@o`~tBxxZsgOhy{`OG3Agef(Lk_nF zmfIwa6gfE?OBY9Cj1d0an8jy=d?D6}C6l1h233gl1Y!WJ;9M6R)4$v4&F$sdudowtKSUGT-u1p;f^~9MGjJd;0r0m$1EmT{CskZg$<`6VURz8v)}>4gu5?x6yU?YbQNMX^fw|c%$4ZJFs=kw7>nhJM0yd0`9J= zbReJV3>@II{<2E3_&&f@RZ}6${o8$C*Fc1DixpymAqKz%TnjJ<3*d2&1c2JDyH}=v zICG-jZ9znA{Ox?us6JcUplY~7j8(#Cyu|=i={OOYp#$aL2sji?Nvz@Ep!k%`#U8a% z^3Dkh6ZGv9vB_Z*PWA;?DYP#mHP+8a?3tm=fK zAto4N08GHOfahQVy!sgc(3idDQT^#@2A8jItTlAy-AO0E1{$fZ?Yt@>HCQAlpaPP- z=A1LHYj(d8F!r9f%%|+GUc^*scY>z?w#DJQ9O;y4vnAEWdUj}2t?7FaQ=DW0e^7>e+*(OjVw#Vo9u0}PGuJO zjN)}xD)L6_kE()ui3C@DK3Ayfov-l5YsPyoCBo*rI3%9pWBoT z6e35JC(Lu$Dac+LShdoY4}Kmak=dHbf|y{40WbmA0<3NX?1x`=f{1P}Fn8B>`C8w8 zn>*8Hg7G6~fIY>FxA(Ini9<_RTY&V*G$_R~B(H7+nC=;3-(3woQgWuq`Q*6o3oQSb zZ16znMPYcP=fvCvw5Ow}bH~W|n+-0%%3mp?sN)%SK3;kdL}G!v#ZxrWaIZuNVuB$C zzyw?ium%ed=qCe!=Eih0O&NJaCI&s$?kVQ$|1c)(s+7=Zo}lw*{w$_f03>LPMc=0X zk8Us$d3_STvyI{`{aeGq=o+Gk0!A|!A{Vu?x+h8(WgBf!)&R|lpp>V9GxxKtHu*4n z?!OFN{H}FCOP_SiQU6SIA>RpNf*}UL1Y8TS0Sgc;Y6O6O9ZB+xC(FHArBkM3@yB?1 ze-1T+0JI;z`u=!cKX?8eP>V-)iYj)V?Xm`3wW{QEo5J?2!GAS(l+#z3As!HJW&B%fME@?s*ELgo*@#&L(x&p_|;u{FoH z>@aeY9zQ60zijHpyvysueOCVYJMzo%T-6bfD7TjZuRH@S^;2Czakh}EsxLA>-M35D z&;4EH#LoC^E(Kh+g@glKe*Dwi5!}b|&)z>9($&r1&w&59|L5+XuPH7+uC_mq1rPq> z|G1_2XAkb5$iEx9_|+}=$8h1Ucl`4QUGD%~1^)R=@z34=a_`Sy`k#O8b@$3YF*m>P z`Un2}bH)GMznXxw^#%O7507BzizpQK0RSrEW0(@=V`hz335*CwYb?y1SXP^6eA+@$nG^3f*G0v2V~8rL|rRmk%`sm9qR8Ww+ux@1jb0s%)|8;;slO z&=9p9L##Ov17Jnznxx%dl9!W|!uECmP&!jng)d%NCI0GCp*ilF$5iaW)Q%Tj-PjV! zt+ymg@<8K9&(&TWJK^3On6&G(>If)c&^`M0i{@bILZ9+&jA#v@BwmYD=e2I^R2Y;3 z0t4$~KBsyERyHw?UIwDhh>XgBOeK==1W`D$A!2jPU! zQm>Icb6nwAED-IsX6Pd#FR?CNRVW2i)9Tp$8ei_Wu))iBzWsyD-Y&vlpoE>m7_Ire ziT@YaHQJXW$^Ux08kX#R0hf<-Sp!7bLII%auPp;ZTu&YkB)(N*>-xn0+-FTzEpa-e zH(M%aByWZZ$m>w17!mSL;zmI5B>L)IIG%nDWvbnVXZdh&Mh|yBya?<%(C>{_`|-&I zN&!vMQ_tFYj=d>cO12+5gqn`l}}=dTsUxo ziqsySQ{8F{*1tez)K~pgXv2@)%L( z=!fy1XD|Cq{DoQ^NRp;fWSnYhW}dvlKn0S{n%dUxD+=5QKq_fauh`Db-F;l;cz0Wg znNq%km9)WW7pq7D1yiu4jssr$0xlov@;E>uNBD9t3{-Tu1t5&ew-ZYP=uBheKa*4CCz;)foIXB7%8*@DWG?UpT!_uib3LMg!N z&e->7Z0(G*%Izo8PV6a?a-;5DzT$C#PicTSz0DwqPjQF=uo`e(1DwGEBm;H;pkrqd zu`lOTDQ6*m3gz+Cy(Q|cDX+6-Ofaa6=sPjls(~uz)1f4H_-Jng#0o4Luyn^d+WMB} z1vtyvKUOO7?a0CIcZz@A@_my~21)@<_u}C3f7e*d4fs@!n2lH@X#9cFY@4ktcM6C2gT zGw-ZaOsP0uv6dDka+b=+CQ)8u(08uvWbR116_>ecGxDsX8=WQk;lp9SYIf>oZBanQ zH_i!G?E&wSd8wjZM)b&II_H!g)zD9C2=DPrhErSw(aOl)-7OJK_IMH+N^3YTGs6*u zUSwG{POs}7d)eVhxw8F`q@(%#NWErVl^)-9KHlVYRrc2`xs4Ls5BP_mTg`RKsBi8K z`_?bZ7%IhMbNN)nZz>wJl{f7s`~05F1W$t+c13FRX5hJT@+=s)Z-pEFShqn!gg5Bc zd3S69tm}IQCHilNZ9aNlXvNITe1!&};Uu+gxr2`k9>4Y(RBPuNd*4H>Y7hfpW$(J| zz50v(^3X?yx%F~caYiDmGt|}cB$;Gpzl}I0J3%B1Am`+dDTX9Er>6d6Am*qRxw&m< z@y)(rO4CIHgU{wx)>7X()ejN*d=zkCbY@ zT%RJrS~6OuuAGCs6laS5iNK<14OejCm*^JD{= z={1c~@y#PU+U~8?emEq*JuczV2O5m< zn!Dwy)!qm=)pZmR9y{D13g~o<()zY}mx$8vE*h@pJ4F@b@1U>9PzrEB&D@oijB0sA zT-mG4pIdDPRHJ^RseD8|zOsy2Y-~(G{7^yC2^N(030IKSM$JVL1&k!4Lyr z0U?bdQ7$=b_gLhjWgC+R||z{3}C`AC2r$HP%@HSroAas2yGcQbvl(r)60mAwI<+ z2Eb~-bq(+Y3sA621b}|RMcF-y#=_W$n>pB2SvGS>rm*1WxwsQXvV3|w0B;Cr#C|s} zYao^JM!?gbk=0`&3?l2U?WS*>2ySbs{C-ZegFTm(KDhcKMFQGuHbTFL1jic6vE`E; zM!&}&eR}8ZLlo(?tw94mkz1M0<6;mK3^4#E;99_2umD9>006YdE%guweo^A_i!ULG zHM6mNi~>W=A%&w$@(;c>9Si>kqM|0$+WYB*-Ux_hng2yBoJX+5^-w_TFahK9X)5Fh8YrsLDeEUg5w}E0K?<^1!SWK!vSwQn;CW!=oT-dRwr{%U+Pl6$ zmqa^E|IiiIsuD7gD*;}A1^jJQseJo#9Ei(a{XLNv9^&ti9A_{}qrnyy!tk(phKPN$ za_rsfmK5N9cZS6w*5_e=TUFMATUBO9y2+0FJizQ5w|dL(vk($a{MGhPt4e>+Z6Tw> zcCC*#yvYt!`9yur#6@ExQk1#Bo9-Y~Em#n6fm|)OL7D{WC;X|o& z+^fbshrcPaeI|5+yn|#8X%#jF;htM0{$SLHIGjKXfQ>iT#`uhVWy z7^aTFo^F@U(htfl8aEO$aHackF*?b-3M77JfmCd%O?e}LF9`X)0KHxizSm)eCx#n7 z;as3pEl+slz2yY7b+=d0wyFC?uN;)ZwegN1>lc;FJ^nTP!XMgV7J2919qG60Uh339 zOfbX%n1E{m@4y1oqAus3l~GIiwyPh^`o=ocn|~VnHkq62lW!(CgiaciMi$Wc8A$8H zK<{+RTC{&olwLdSxQW^# zxSNjZS5Qtu$o?4fQT+;axMF=LP+H(M2oO*pdLuxEv1^@lFHi08=|;7?ie-a5sE%#p zaPnkpm4MhzF60rEqd*V^KFUCm%$ZzUQ|rbr8MB0h=p!coQOUgDk()$!W6>c##UTd3 zYQS|3cn=n!p?~>4wBkop#GpnhFXpVfqxVo^5#=~Okf@pUuMV8(`4pN^nE^%HjE91H z0v_K8h@rWi)e>N=fxAgW)~}y^$TC#6Z|5}Br$hcN_(2)Z6qEu2JSu)*zYN0*A*~sy z_Qv6<@Yw7>)f*CN*OD*NT~f}0m|%zjFag&BfM5Zd!k6dX;GxdX$97uxV1HJ7rq`in zQuxb$A*uiqU_{&;M~FpL2b2aLyc0#A)`q--%N&y4MbX#--uiM>+zT&qjjJSKsOjQwttaI#DPYJ`dt^gn=7-9fSz_kE> zumG)lm#5&leu!6Pv&~1wDo@Vtvi?Fm=DYfKEdocqx3uwrUd1pGP`SAe{LbbW@1y9xRY|c{i*t{G< zSY1FTw6l*#54F2}l2jHB?%zvh%}kg3G98u5)JINQRM9X0%ZsTU^o2NlNsv{*RO@TP z)KdNTGgWL>vrnFqwMWHI_L{k5gkh~J;UI2TM}h%=1zfeN)SkOM8(;V!5J7{bWtNX} zWU9_>rQy9VvGLKi`)j$9?GN|@#9x8%<1*O@KZ&OQwyLay+^X^eNTr^eZi4sym$MWP z^i*=~eT?S{UHrQKzj*=+uvfz&7a7k;n&T!_+} z2};2ekQD8#+b!sy{A}Q!V(S-UKc%&?JbpT7ux-c3Up{d#7z5>ygIRr;<6P6fXDDG( zM#U4FnIx8Drt^Y2M9-sWHn&I-R&XF%`X2;baSQy*?Q#NAr|I(ApCvUWq+!CzZV^xK zZ!@TFq$zrwk3tg@TNha4!>}n3ZGoP#8V(nAsdsLM9E^;-diJ+npBjhK(P%m~-a0bm zEh)}z7q*<3%DFqm#X%{6_H<_MiE#y*xUq2qSM?*t3>+>zG}c!$0@CRD?hMFy5Jwb< z0k9$GddLX^3wV@qdHr9R^RF4<{Fq1y)-j#au)ceCd8&YNnF7HQVId2l2n=%|8?BdB zq7UKWjet|*g0_5oj6H6Dd&S1^UmXFx+A4QNeJ zrnrv%}7fcic*2qq}Y%c zF8HONQ-f-9i4jl=_?d2I!9TbVR<%Zzg%DFp>)sdcF*zXh{bW`-GXeRQ8N>ub41fu^ z77zj!pl5s82LP+GH=*6Hz^j2FT{J|OkOO%8$p;x{#*$YV709!ef#N_46iYylkv!Fn z0AfsmUZVJ%2ejVtUw;jbaXeB#bL(}J3*SxHckJUO!GTgh>9g0ODI*MnkIj{y=_rHz zokW{8f9M47;+O)Cl=jz*ASM`M08GHOfKadieYMM8AnEO0E%gf=Mo*M17n>B&FO(L4 z8aI(|y{lt$+jKW90|5#3tCBjJHBfH^yuAICP_OcOgCN<%v1_XNkib>A@N{D2V8Mxl(;&XCq&$s1F?KIl^e%W`a ziWw*ci0O&aFOR`JS0lS!$lo9>Io7EvUSol6m*BbAAQM1-AL3ISVgRfLT-Sh)Hv*0> z8x@MqPR}@#@($@Jq|rKJP4~$W^NRc;RNrAQc0SVaxL*RampZvyF{6(Ip#)qDhyV+CGI80gl!N77`q46Ld33=%oJ8ySo1X{EMImbUQfku3 z=S*_Bae>+%9V@egcmB)=T(zpCve^)Tr~E3PjoxP$n2WTKCB1;ksIs`Gz`K$*r3j z@K2-4KmV)$rQM_CfB%1`_`5^=zwQ3J_rE^O--tgwBJuuP?A4cYmp2Ii|Gh2$%O7wR zO>uQ|^S7a0p0E06*PkAj|NL5T$ICyhDb@ab`=5>CpS$3DfXkn}8U;T20xox6wW>6% zz3f?Bggh(HtakdD{<$q8<@7PN$`KxmUs;hyE?EL4oMv$i(8bLoLul^x>EBkB_5W6@ z%0pT7QVR(M#cYu`O5O(_6xCxE_CB*=P8Ks|c=KrCbb+jq9`xCjb_dVd9ynusA6wS1 z`ErKuvGeiXzOdp&fonK;lJfWs^XdGnXZT6RQF$mAQIEMYytQmjtm$bt)2nY@S=}oYHC+SN!mU_lSJj@YM7($`-^?2V%etNpO<>-@Cmc8R-kS z{HI?|QW~Yw0YITYiME@b6aT$MDiXSY=7KAy*a-oFK&pkkI)U(=C0{eG1|cRGVgO9Qby11}3ow3vxsn21#@N)?uwL8wN&1WfY?*!K zdj&4)tu5(-W2q^`*rF~#<|u(lDHD6bRHIOp7utgYUQz zu@-Rwwqv!{M1z*vQPn z6CT_izcu^%8&BvUCKzG>Ou)5(IIsXyqRW*P52vWVwnrZ=;Q#ux-3D9^pb6Z|%Rfra zq6k2AWTX#d1@c!3wlhd_n%vX?rshvZWh|rPQyo7W>l=QN1XJk(D#t2Rf zg;KzwAiqDB5CTVr56bBtiPM(Sm7&&*{|?U6dbj1O!0CHa$64}6`aN4#t$p(3K$QEz!bv{zXEy?r;`ROOJa#3| z9vmyS4D^ehK38bujOKl$VFDOb|G4D@rGVDpPVUFYXAzX?ePU*y=u|S|*Y8k;5`Js* z#k5yR&*ni)FvI|ufNKE>U;$>+m&-ZhirLZ12$9PDj?rCWjAdfVbHZz;lyL?K#^Gpx zsSvpfWFysGfm2|yyAhD1J+b-VOJcR%zVndok(NvnEdo3tCxa}L#dud`PX_{&0&oeN z#5;8n^WeYU>-HkTZ!6vQl}o-8@;hYg#ZG}7ts}$)LkxfkxE7EI7GU0Zxum;?0K@8N zXPr=l*VOi2^0#u4(j;1BTso4H!Bea~I+AW6x>=goM^kb0O95A{DkU`qWm5<4+>Qf& zE!PWlxup@R@IZ=)*AK;Z3A;;LAKFt^I?oE2#1Cgr+Iiv#H(mq66TLn1O1zt>5c>xt z43GiJAU{w9@`<$`Yc%)`Xl4g^?Y-Dii41!3N z|5>Zb)H{x$(;(|(d^_Rlv_vfAj{TR86bn>^g&f1P)hTb*4_go;epB8GOlG!aCRH=^ zN26run)rxaLR^7!6qjb_vcbVIzw7sdrbd9GMLd6qP|VaVlJ5Ma#rNC{3K>Eq$A0`X z4ysgtq{5Bl_gp{8mn*d#n**!&hbJYT#*X|boA}eJGT-M>yb_=75$E2-QcJ39f*NSq zD6C?Xw`QV?kUqF(3M8x|5Fps)ckB0Bp_Y)!h#aY!$qX`Dc;&s<>WIN2uB_lGkm=8? zivn&ky@>kM$KKU+c`mN4zl3bY9|#HUO?ztX@jzMj_LP-EI=Wt0xj4ltmEHBuGNF68 z+)^+1OMOEf!h(jgl+2O*1;w2t(VXEThL1_4N4ON7Q2fT7b$$oWXD6Hn%O0 zK1oKEw-F|AQxFpjF#smuT0ja|fR(Nw0CZ*~!JL^3bl3lqOGyR_HM!LLK;9O|Br&{6-snsm(6d@)UVgO9QwSdoH0oEc~08sMc zi^ejY*0E3T@qfNW6J-?A%ne6E9@!X4|>9NhAw1`wsLbKb_PwtJM?EsnsXx|L8VA1VM zX@2AiH)o0zBDf}DIjQric5;We=k`56`6QefhzW)m026R6;0suQ?X6h==rzz&C7i(K z{erRkD-L0KK&}DJ%M%3~&#F}l8_%O{3!rjJQloIdL(3Zh(W}`NRTEXM1Y;DpU%yBB z{my!)fq=?TK#$*K;lc17EhtBUTNW5SZg#AJmL|JWomuFglSt_C`Z&M6`^6IavffC5 z17d<92EYVd3rM>Wu&x6DwHwikqF9a3c;&A`Mb~Oc(4i;edbLnyttTc148M)h2;J0xY+t6&Plv3P(eNWk1ug3YXIb{W z^m=Ui$S~2;W%TRsKq=rO2WZ2(D|ojBBW+3OhjI9G;KGB8b)mEH`mw!|09sdwPjQF= zuo`e(12Vt@UQ|S1wyV`Q&QC8uH#qU(jEf!ZG5tc^U;EfNHw*>ew)Tk^G8OP~5Z!(0 zQN};72CrIGx_1ewg9z<^9DFbM5u#GQVAecZ(A0=?QH<~#kFN33~2_It(i1j5HhII$GiFCQmvH$pr6nD!&GHk{d= zgf*a;(7TEblP=2VB1_Z8cv8vi^kMj?e2B#aVgRh#TvwYcaJ6yp)c}AH7mn&tI!(Ss zP~m(rh#t*EZq@VC7|A&r1^mqfD5=5@Bt#gh3_i>B%{RT5oz(!B-xti zJUUXgG28%G6Xa({<^S}7BrTCPB~Z@QBQPd#apy)rQf1hAby2MCZ^_^F45Frb3w6r0 z_6T91ZC-*4fFZR=%)BB9v)fj{PtfcHv2e{`ld zjk^)hE4o6rjxu(M)IH`G>AR-RK}oW=FFyF|M|J2EW8Clz7zM1wAT+EH3U)%Z zQ<5o-Z=7dh-dIDv$M{hSZK4HggP|6{1zZa#g$Qs%{s_KfJe9i$$6n7T3dYaRj&nwp z%>}+>^j4*Iphnieq!&!R0BWOgiB~*4!nqNE-vKbSRUPs4o?u=%1;FE=`x`5~jfPW+qaOZYTup0W)yjyfMX5}vm~Z7|dVxPWT` zA8!O~C<8!|Ho?&qxVj|7t~4<(%^p&mrmqj48n+LoIE0O*)1f{B67n`u1%HV#xDk*v z+j=0(T!x5}@LN=dX|~{nWA`COx3hMX2)l*18-F;AGvGH$RL2BMX)vq8mydW7Wp0Mc zq068Ji-4wzDt4$1hFSm@a4p~yM1cDcE&#;nO_E>ofP)p4OB5u*Q=R34{fyY*p1fLB1K#gr$t1LBq}ZM!+4x72;cWXd4h;+x}j8N4cef`H?0jvvl|jh71za>Cy?RoKC1Ek;lKoEh%j*00Ksxo`NR0-*F$&4neeqBm47C6*;95W#M8Kg$s^ot28jkt*<_bLep1FwceTR<-`nM}!FtQ~OPUG9{ZS+CGdJ{Cu&8sB5 zV^s5W{qvY<+Grb>pvi{*8ecSGDM{;C8d*t|*RHbu=P9GxGg??O8^x18@$jfh1gP89 z(Z}+?0yr^JY%w!a%0N6|EHQ}UJK~p$hp$h zAyNM~s`AUf6IDqhA3-GTz?b(a!?wAPlCHewHQPu@QreG)S>z+Uca&y8zKJYmYSDJJ z!~&J?zdc4`vd{zZOx-p|UUmNGB{hpRmEmz3>$|Z7sxt689Tv*^hfxY}G+UsDtI{Ym(=ahq(N7YmMa)*^;stB?`JZZ6w_cnh2oB*5Y#Vwnm;N_-tViB(qc$M zExDE0G0MYnpKUi71>`P8np8$^cdYOtqkVonn$6jZYWO;EQi58oVvD%1N*!v0p%%ae zTnngz2=G=927tC5@`iQOD3G+(h8gpdw`GXMI#^##dS%dm=@F+KTO9&EMZ~aw2UNwp znE{EcL~_IkG!03B0KDz^mkEqBQm0(AC5jEwxTwEYsCQu$fY$INMmy7HR`6@ClSZ_J zZLr$BcrYV9^=1IY?bAQM+o3iXY5`opwSa1f03V@a0I1=Wb=%Q$3}ArNRq&v#T}zH? z^kvyxp0D+Nirx=$KNo;BKW6ve+`%8Y5fEKbbhx)}kALC!fSVhztZ=Wl27BL3+Rw0(ZwK=FkfWYJR-6L?NC9NBQ5@fI>FX6Oq+NkSD+uc&x7e)aM4>e8S;Z!p6Pq_P7tEAi|EYdux zeY$S^vzb>9$%Ty|e0O4$WGV0`P`a76zisabzla_u5f4SGZ-Q?H z*1IHh;NEdAc-y2;S4cV|GyjesWR_2`bDqef$$BqU+Jxu<)CNN>fD5=5P9|-{3 zM6;y8dg-(k6)@IJ?@>j~zvC=#!9UW*mV4N}Zqy%Fn|+$swDnF9zjjJ%H=pV zTw1#wDnUk35g*>lsGCtuR*R;?a0#P;-G^wYWKYxs-m(I%4srO?VuihbY{-tNQxeO?izd2?lS>(>H+iq3< zum&gMQLI$@!_(atV+Rw4d^L~%3P8M$e-!;2`-lM9L;;ZR{*?qN`uDG^M<79x;K%+y zwtr<*g13KSB*DMANs|2g)PMcuU(bmC*9ZQ74}d%(`hR=&?~~xL%m1?d^QWPJ(<%`W zqOSuj|5ft;_`^lP4}t%_IwI5<2mt@~Dyq`I=ngoy94ETNs2o)xSqHP0F{f5))Co7= zJ<|1eS&U2Of1w7 z!xQkGVmB~HJRB>q`d229+o^uUF>v&bKXQcw%2WkO)C|#5M{Ffy7AZ0+D0RUtyfR>U@Ef+8ruOacZypE@UN?@|+ zMKMn2?WFwg#!_)WyQb%l3HSY0Zx$v)!w>Fww@bcs{hcCknrZ#%=-1%)%M|XEKTYKi zLx1}Jfl&aWj{~iQqEIM*)P<9O4b>+^)1c7J_a$>8Ca;YQsOrB$Z7|dVxPWT`O%MTr zUd;dywToNlN6wJ9mvSdwg29*O+-x-l&7UlKFw>3gG7zzmfeMv&LOn~e0XG7Au?Fby zsT}q{b=rkhY2WibeU$}Ew$a5?Jqk!c;>1jbd-N%Q?alVVsh}k&J&NFRkhe7cL@diWP4hN_U zze#G{*BgY|V5kLf0oMXrAp+j;rhxCLH0Ah|g0V@(huS?)RT-JVX?1O1EXUzYxXxCR zgpa8as28`)7+=4{dou$_baMFci3y~#`Ly_-5#>7PI}38wVk$&wrS`C9*yvWlD4-@z zg57QeE0n8iG{}4;zn9tEbzLJ6t)5%1_PHj42z&-0{0FwH4<~I90YGXO0H{_RYt0M6 z`C_5FYZ4fI(Yf3iguJ5d_BjguPQ- zREVvT7HMT-B3#B_QyLUJbzl_mlrOz_;XA=c%QroA&V)UBoLj@MkJT?9=$UP%8QJ~# z1NAKqwE#W?u4h0yL_i3-4fuA>_sc{|rPDQJ@?U;3_B{3A(@kz7E{o%lWV97BkmE%K zs@0W?;^8GS-3W*^dKJG+Srwr2)>)0XJ~tDINYyP|b%9bZ&@GL1tOx-{0a|ggxkFQn z_@X458L0=>R9!)@Mn?k!zW3d-=}?f$fd8=aKQIEW1$?;?@XH?n;^vMNEv{@asFVL@ zJs|zV#9L>`kV@6xTGxU{I)m!jGVr#??W4$7Ql>WoP(wK^+82K;=BvN&dif+Q1~EMK z?RWEXCmurfhnQkx<1h+%9N6p9Tt54o)%wLrurrcxq_zc*hf3OWaaZfqAQTZCsBdwo z1@IYgEuaG;AatS%0J>b7lAil9iKh4L;VeNhOUvt9sM&cudZhVx2;OVbrcwZj6D$fY z`YHbvS9=vzdD&EHe%Xd8DvfHC!&lFyQh$p-J`DS97uGsaF%`|dL>L8pyq){LN6J3c z$u$@4mv(;T`qoyJK8t~_Q_Wg3g>HK|$Sp1MY4rl>k00!PYN&>l^q*0q@#@?3N)yY& zofnID-ov9Rp-+jcbwKA|0asC#VQm-y&_*Vi!J0^fBEg#%;)j*>g92{t?c&Ys7#Tat zdc7dIFFQ`hq=*6 zR6D4ZG!+^!9lR(YTllOX;=$ic*EG+-XcU?!uTV?3@7;#jPkH{!B+4txie&s>QI&Fm zy2EpK9DdTC7S0vyBMuMomKkN!y1Ku;2>3>^zu*Q!!KZt((mt}N+;OY!&J#Z5(DZLn z4fa~&yDJNSNXNxOA%{WHb&3guTe=DT7yOk5qxR5<_&1!=2Om7-O~H8)|KSf0jOgdt zq_9vtmKui!!s!GNQVaCX>{`~<;|uQ{nttl+=aYsy)u0x@$KLhW>w=8E@Zwhh(5n{l z!GUi#$qFqQV+dC$s1W%be!Lq2>_7@4G`I~T>rUPd@L=W>Zfo6%|suT z#@D??inXX*wRiEjyub*y`K`G&SPz8DoLtlx;tF_L{HS^SLn~;-d%b1#kt#MB4h9`! z*-n%c)CNN>fD5=5&oJ@L2=epHO1i9Qcv^Yy{c(SW{NgI;m9HaYgbA z8>nw_s0HvDa6JQhAOfN+y}`E>e)+_Q;+~FfY`A>O_jDpT71II=1)Z@Z?nyhg_nC2T zfvEncrCs7bi*E#Qz7lMq`D#r#F^rDCBEmLKaQ3Bb7WMhiY(20s9fIrqL2k@gP|6{1zZd0g$RgNGX;R29=DvCmA4#7 z39dR>;!dD{N*2YULu5~_((J4wMsAr0iusi$vNQ43-3Z7DE?8pTTMqH|E-bekbGy9b zqo3%jO&siP{Y1blfNvT`0mqM$G`IO*Ap2L^3{JJUE;#P1j8?b_dzc*_iyiA_@jz`b z)B?DGYXN-_0WpuQ0H7s>F#k=%D6yexW#(iS1;ufm)wOo)PNcEMIo^ai-~bSV3i&9A zY&_^j0Aih>c_~2+F+;!Z~@l>`XK^hnIi!pLsJVMsZdk*P+c}*NBKz! zulobs-(wr_M4U-xpNB~RfVe8jUmlqq72XIy2?Lho52bc`opjlx{d&5jFZ#{%caz%# z#2uSowb>piFbarFu`G*M`r~C-`AabL!WCO39-HRKTE8IK!&1=Kfn5-4gP|6{1zZal zfCz}g9|V8`nf;hJS4^e7h0PGyo7*nl#+}Ry%BFbYE?15e1&5CSX@Su{IP)$3Ib+}P zW%(`|wbFrS1CgoEdSczjxcupZ+sj80nYUI6_W5CrtgbK*NJszJqMCHSrHE^f&18Kd z3n{R~AGyJNY-ij~QXguAp%%aeTniYy5pd200G%{E;zK|`eO6vV-$Yp1U7t1}N%d#c z)J26`U&E{Qq#H7hL%)FApw;MY5j}5rxuC_z zwFuntH64rinKvF=Vpp5lan@a<)y zfwF!{r2W65DnmhE4g%?`^gI>sn}t3m*tX%>p)*f zwrRV}lYOy|2BWnXTS|&{r7wD@LWpN{THku}JsEW3K2>>9G^^#+q~I3~b(lacfKQw2 zX)_F&HgAXIz$XP$#{l*5*N$Hs23u%piMhOT#J-!MO4>@vPP>U#mpKnKWTtr+y9=DY zS#ij@A=qd(l@t!M`Y^mQM%vvS6Jtx!XUKKVd(+3fA#V<&fDZdHViY?-?xO{+AO$(u zz^-8*P4|B8EM464boVF+3#bi-S^yVtE#MnOKtclw08||iO3=nxBhE4{e<1{9I#d{59x%ap{ zY#$61Ern6Q=l2ucG-pw94a2k~8SQS`v1OEmI^*M#TO>H=vGN?OP#X-j050HKzz9S@ zV%{_W6jHj6!*roUr;Vz(j&E73p=V1`#~?LJk88?&9(yoL3nZs}#$;a*_3lQ%-Fs^} z(b{%MYlO*bc+qOA4|KN?q#Nd!95YGW*hSB7!zkdjJuhuty0zA?4*zXGy*(WMqzLWoyIOIKLIfnm3kjjX7bTaE;7m&+VAy-Ee<(k1RBe9x3C*t#hNC; zDBz-Y0i=V`B&>q}ZI}0_br!*UMPX_TtVcf86dwxcMg5_^#i16!XTbFg7=s8%_Fe^m zKBOVYOEn^0L|Sdcpl`BN8f}Wa4A=8*{1a9B$McB@ACMID*I*z^!k=MV>btr zqGi43xzq8(sfD5=5@Esx`#exjH7uYIW=S;cJ`ze!y@YqNhKh(4Tf3(7jP|L93mi9%>n=-KR-s_ zQK+naV8Niv-0kjgEJ53?ZYh`;c6{p|vEnQN5V4jpBh=`@_>F*KOy;a-AQ2IR(#H4C zmuLrF-w9{f`uT^_=<3s{SI`c_D1hsAVJ!7CH2SAabne;aZFzkI3Lk`g4|W&g=(7f$ zZWBRmFw_FLfNKF05CLf-W8h2j2s$r=628|AP%qNmysA;H8xe>4uknmQ0>Wiq6w7CsC!WfA~?(fH?O-lZihhoI|VP38<3eaqF^l*rv zsBNGqRT`nov;F!p`!W5IfWmmg7?HU%-9FR?LoI*{xE3%85s=Pm3;>0vlNVTAtfnH| zzMGBbg@1`hHh^$+LMmPM^q2dO$`R)U(u91<#<%sS{x|{3?=F-#0O3)U2vE1H&jM3_1zbf{W{_Y5 zKygO+9eN!rG2ID2d;Dc&S24$EY0ooz)^aEC-0rA6WC7kg`XE%kR8adjssn3lpuu|%o=FEPFI`y&U)FN$UCwtIRJ@4|AJ)3U~O96`;zx^vkRr$DZ5DnTxjT0i7c6<-F-sW-i8WV50?D`Wz4mM0Vc+a>KAjKU@eqEE=5ijR zSlzH8LvgQ_DP-W`UNGCl=fW+z4HyMHpIv9JuKva0rIVD@7_PYLVsc^HR*bmmDK`C^ z>Fz6d4gl0?@^2Je4V;-90b6wd5XG8t{`v0_(DQT!lmQUpK+Ydj5yYdlb-YjxCdc!n zb|98ojZCHdOxTS8|F7H1?kX$p>S|t(hriw5Tw{tDoA>B__qrQj#mo4d3Pu4Jv4&2* z3nZhjOuXtyaN14sy&n-3c#8^+sB9avly6`_eTzdafX{&I888bG0Gjv=03oS8yc`{y z!5Fgom`9iOtPHDhSAcGIx)6Yi7xm^`2piM^9rij>QZ0GC`ZztfoxhlH9PBaVT4 z;+!B3ro&oEq}bj)(Y!BcD=-Q$m$K<3N-7MHqsZ4a{KkP zwZTve-~z4%%s~WXeVGSe{l#HD%7mB~EmS_xtx?+X_OU!^2gw$bUo)d&1jo;Tmp~ey zj@R9_g#0%GlIK1=(U)Ea^>x<}0d}a~?qjaR|Jm%k+a*g8lpWvU1fzfta}T+Ia!*#} zo{*sls7dH%hu_hfo-NZmJn8RzS%**vwZTve-~z4%%tHiZm(c=1EiuQF`wFLTLPxZL zB^}?(n2QCUnI(=4;N+leHlVUzkxW)?B1hT0yq4xU7`yfxealYYi!k0;E`}cM&6c;$qV-MD~q- za0En`&-W!vb6S0*=h4g`JBRufhgtxi0oOBN5h5Tr^b`O}Af43h%4iL&r$}HuzsLMR zyhrqFhJN9jH}%i@!hH-ofDbUr?VqY-aNh`^>*SH7P;RrQA7By^>X0U&{N(E6aJkhm zrF&9a_+WDtMgjd39#jcW&Q@|9z5~e3$;PT;rU{KEYh`2kF4?SnGMAw?7-|7rz_oxS zh=6zQ@!bodbe&MH|F$fwyqTax7WPh9Q( zeulfHxE=CnN-?4mjf``40ENNq=`+=MV#|g_px z4^X~+_wrq&D#`kAw*+FS!;}28# z#6O`_STG7GUDGP+&^Ea|BzTgZ&ZvQtEn%u}Xl#G3abLIYse;K%P>O$!>*-MMHh}*O zr5?R%{h132-*-l|m#!kMEpyREq9E4*e%kl4BUF9DC;jm*kL^iJ9;9uI{}TO~(S{#4 z#u{}c;5t+i;kGEk|Jbf#DFOfE@&En+3IYHC39y8`+TV)5{~+X<>#RsfoFq785+M3t zUIzef!tbn^J&kEh1of1@hD z{%4{pLqJ9E9T!Vk_#c=GpQx&P_6KRmps`&@v$|Fw5Fb71@6s>|7fFRf|^@>H0D5`3Zge^`|}i$g7d&w%S0@B<>C2sIA?dRWJ41Z1!zidvVq6DbIZlr?gG zUryA9`0OJow|NPIHqdKNc^zV6+MIZ|4YmZ*jh+uN&fD5=5uyG?` zp8x=o%yTZ_=o3en*8P+gL2=-k{GvjrIS%_H@a5323KUHwpxE~}f;hMw-);na`&pyl z;Qth`L40pxO`3LaRlsYAI8XDW_U;p#a7ydXFbb%(o{GxP$&p7_A4;_}>jE6n_^gmq z8u8;*{r)7;`vsoU03O``>+NbU@G}qqekJf;pm;tF04j@E1X!G_CcV(J%XB4AVB3R~_kFYJ8B7g&Bmw_nB``Wd;>Y4Fkkc^=T?q#w4M+z6nZ zULeRDX^43cnY{dNr|&_LXYxe92g?Kf0m`6E@_btu1rX%X9v2!leI7n;06ws01qrkl zS;y|artADcIj2{k2>)Rv_-*^Y-mYfARv-ZUO5hn#(trg39gG=Gt(>VpX5Mt$5V!=~ zevI0XOzk5HY9Ocm#_zG);s0Ev|76d#D|M@rH6~bimLpW_zM7<>M#+b&%(7{k;Hu(J0aD%l;ikS8A%>M zop{JlEK|Y{WTnd%jbA@G`x{l+^Y2AfK7GfT*c<1={9tEZhOdLSic{CzOOEDF^;(h| zS8Mx81+`9%(AIkSi(NZ)cK+92nbwTSo-?P`SI2fH^ZCt09w+NhsPiU+emR+~#{2k1 zMJmO9u69Tu;hVt7;3{Y_4o|?{DEWrg=*AW%q;X;$N3~YWuLooqWvO8+_rqjk!*brbLD2Kl z3r7``GS2Ak!R*>H+Q3rCVNe&~o2oi(9z8T3>VgGk0WLnAI-~W1-Geopg#<;TJB_J~OVIYAC6*eUlT+)*LeaqtT$b6_&o*#4)Lniwa|icD*R7sME`&p4FbWv#B5ptz%P20xZg@z@p@7n{RQBuQ z^feJ$r4JsXLKi%s=-+BFl%gvEyMX|39aun_iy{Ez^Re5Wdn=8kxUj^O@iy>omQTex zc5?bai&Ms`V9b*^pyq4GZY|<2zZ(Hm`L9&EX9lMU5Y~7#Jw|nH7MQi24L*h$Qa;|= zs5VoAQ9#$kUClh@_kA;)L3dZ1jPkYQ>Z{^bOebj28t%HTk=R20bOW^j{_*E}>9YqB zP;UGld^=H>EFLWbF8hmNY_C~I{a=*#>GSu20kb$iJUZLbJb^$eoH|OJejc710Xqes zKPx59v&3ZU44o)&_WKL;1iPHCi8a~JvUaaH!+NIPH*K_$98*&qoqMnJ{v?l?j}Y)# z;iqmFbjy&n6qpGgLTxbA0=R%{0s9aE6)Fq>&@m24X|@}Fs?vAtUSzswK|jSOUBe55 zbcq)Pe{;QfISDkb%^7ad?8Ung@CRGj#K3(V-Lp1o(64MJqnXuKU{|NhD~e#^`>M9$ z2#hlTsoCt;Z3W)#WJZ^)rRW`M_S$X|ZY!A&+tH2~l$bfyP#X-j050HKzyU-+<&y>g zs2TXEOmX1bsxb@l6mMl&U94yLW>pwdp{;U__?@1&K|uE8NODa7=SnvMz6l<`J9a~! z5sVu`=LIe|SgV6|lDs|@v1d8AkhKdhfBs}JIg&Y(6JY5`op zwSdDw0QmnucpXs1;RFCtCLd{X9kWUZ4cSF%6V*JPuW6^oa{ii17EYLK#kG3|L?dvI z$fXagx)ETCw24y>#5Bmijm*&FY_+Qw$lcdVqL{z0wAgTmkQfg}0r<`qc-HZsyZ_7q z17ko{D~R~I;ffzhyR!MUwp+XGv!FH@Y5`opwSXgtfNCmf00@LNr^;)pG|NUG)hpFF z*hRn+VT`#o{VDFlIXnln{BKe-i%3U#D-iJ|u-2=@}9J7A)RKx6yN=4MjxI1n&b*roh>!=}k=B(83pf(t40bIbf zfZq@SHQ0{;AT~;5Ns5Kd!C7(?(e!YwSlm&nAj+|=dzc$xC+vdbmrl+}tr++H*%erw9w|1WF zGg2uuZA@W@rXvhK2-_Hd+F+;!Z~@l>j&B5<$pS$1{+yq=`<;sR9y%U%?3c|QN)+{y zQNKe06;4T^1R?O+K3z@1kZr$sLGE;^tWR0b#M)oO?pTb#GgMcB+&d~{J5+r z;Kc;i5v+IcT~3m+vu}9WNia=eyt^0T*o$=w-|9WNfSbPkh!JYP0SHgZZ_?SX;r%_J zc=SDzY{FY;t|&qeSFnav$q;)|?G@lrmEfH_lC8@p)>ugqN)=_DqWhkw=q=Zu!B`WR8v^2#YlE znTo}-kb%~D;AMI-$WQ(xN2URROGg>ioEzKY2juAEZDAL~LK2TSiRHUfm!z1&Sk=hc zxtPBDHCa4kc*OCnFz#=d*?-O*$Q6B3xl7Tx@6)ln9fkfwFtRFyHB8#O&;h(U)?B9{ zrRdejy9|(8jcq=*)0Lg4NVfUVjA+bRxnxp72ekk`ZLX)y>0fK$HD}#KD*z;FOCA+F z6Ox}B>bmftl*ePFShmc5=w+f_4Buu=#AGkf`i~&st9!rI&59%Iiv`HtuaIVQIH=#o zZ8Ebx((G9H%^IzqBhCqZCjAAB0#1*Iiys>-qzLj-VbIRu%U3ex-hW%wU2&&Jrr$Ks zln`ozp%%aeTnjjZ2&nI71AtzH-47n$9X2`~`!N(l>1VSvq~IA%mQ#uyl5lyif5;2S zVlkwUj2QXpMu1piG+r0E>S_t`rgbC^IVbu-N>9FlmM3qF?c5QNju1uxde6<~Im};5 z;@2Hq`tIO#g&o{#`@COuA?^0AqscV11!{w#7Qh8u3pj@eXsD?GfWCfvFgoh$MkB*; z9@;x}yiCz^yYP|Bc%9kLLTOKH^DLks>hn0x+iuJ^0zkFH^;(8z$DNUf;rE_Bjt_0c>08o#nVQ`w_GNV*J9K(-4Bm4)pt2O5zh=9*Y)ZkAYY-}rOagV9S;;>61wYo?; z9)|{#Yi&iJW`r)D@dB8EZt{83#jC3S`~(6;Aw)UPBUx`3>x|Uqe(=akzVg;ykDrCM zm=%R&X+^MJBN+Bd;Vsen&mFaT(FKlJfhs%Z-;oBt)CxT^Ypt4@;#;Dz0FoanNSwI1j^4}w zduC)2X^}@b8@8#^fxm0#T;}Kw#J<#p@8XwrBpgt~nis+%8=T`gEp)wu&-n$KPlmeGj@0`~fXS%7jW?a8(-gm$Nz`ly)f!(ym!ai|6G8E`EC5h9?) z0=yUaIQ|O5B-=-XV2h0*py-IAZjcyUg3pr{9o=Y11Ah~yLd7JP@ z%t;>+S?C7t)~5@o4Tf3(7jP{A2_m3X3%nBab!D@%#BBflx@g~=+Mw{jnWN?>sk8K) zYWckT+l0#m;O*yhr5+=M_Fw^5QI$%e5$A}rq&SUXCAxHZR3Cd~F}!2x+hnx8@L3Y* zY5QQD0q;U(AK?pvwDR%=+;?pci5?0HThqvYzAe|YOMf&Q>;ekRPfGk~VMtr{A@_Uo zVs&0w)|9VcV%jbG2mPhYHhX#Ss7mPjiN7mB4CKE8uA(a2WWgT@z01^2!o1_ovZ+V> z*)ck`jvvMC*wy>3j*4ju#-S?G0<8f*btVyunEysq_We6im5sMCGj#lMUF}_y5yxH` zr)!9>S`9KjN6Fj?;j$~#^aQDM(>kb7Owg&DN;FpmcBq8PmD{ z;jKhVY^AU<>2h7s*vBS(K&bNsY5{!UTn`)+$iQhA03Uv`)6nF}Bg~RV@v5-rI?obj zv=8ArjD6I}E}ilHb@H3Xz^8#?m_Gu!f^K#>o$~>nSsJNik4?f)0>0F1Y;rlh*)EBD z`^x={WV(d45Jmw(_w?RAXk5KD!%ZIfb%duhR5dTm?om+|)qIpF^`(_0)CNN>fD5=5 zfC>@tg#~;Fx^r@l|4za1OZZe@_nF84e-!Z&48Ya4#0qz(k9*es5OG_c4+&1s`JbIUMG93_`Uc@poalnNT6TpBE_c9d|z2GDhU{lHVnM~B6#e<9Pd9l04U7B zI}*DqpTr{~DaK}XmhthPSxL}xQ?gSZzI+}MjRB(o%-Sr^d#Wq<+PQSB&yx~x@yGW_ z_qD>4KWA2@zXE2%@6d_xAK0#zoftO)&cP?XJPGOd2tF6f%nVL@I-=s8(Sp;{@(deY ztn?tq`0YJi58z|pGx`Q;@w}TE;NYxAZ1-7wC83E zYZeGCyYX9^+ecDgW6!I1#kh^0sQ^#1)-0d#fK} zsOO&7wE|y1^=?|!aIUzS0l)opzk7T%={@|$$@fNe&*mi`pO+-X>e3_uUYAURLJW)o zlG#rb_2y>lEr%1yZrjj4`=!QmddU<(gW8@*kfJ6<1GT|W3*Z8-1>AxN_&NYS&1Vtm zuJr?>0}o!hCb#HCfVB?BucG_CTo;PyJVh?AP#*%7k4H=^0K}L#0uU3iRUBUQs@}P+ zJu;tZ9!#1)#rkQi21J4PO)lygGB1n*k}RloJu>hbQNGLRMBCPDitZXx^%M^U6YVc+ zNa(6CLTxbA0=R%{0oV`$JuTo1VHUrC{8c*Zl#Eh?6v-JilE_=IXiI~mo!KL$hL!P_ zJ`8xTa&Wf&`^5vWfUBs=Ri=pJe52l?i#UDL=$dsWbW4nIyjs3Q9X}PPF6n}C7zON8 zpcwT&o|k&Py@k|)=3>-OR*l#;m;F<~RWnY_zv4Yeqq?kMyd1RJa7;?HjyV1e8zkh5&n%0 z5)k>XV#xPb*^~czFXH4$^4eAG_4y zkYR9x{MQO_t0{O`D^4xb%E@*keE>i&C$nN5h2}edqbmFVGf|bHAmf7<_tYt4O7F!4 z4mAcW@7HB>PGD~dgAQq1d{b#2y#v`0XD9lGkKcBRq&i|t68Nc7nUDtDpo-%T?)gci zj3);qU4i~sVr(ZiL#x>%pHj)>93CRliI3oOMjFE{IX#rsf}#A#m+eG#1mkG zl~9)xb;x2LaKQ6BtQlztQv!wJ2RXJ4*J;syf1|J~rTB>Qr~SLhB} z(0Jc^zfhX}(BH8yf#94+&5p)iQfa?BgzDI`SYs8a%T97)>TH5=vs>yy&m&k!tFAX< zGO$0&*MGMu&%9RlmCr*o_|G@Iq37RV6aad+-D{VP&!SJ-5Zg+DmBsbp!PAdSJjWWi zv&k2@wG~hs47C6*;Cd+GK?L+CfUnXoRGG`Ho_jECmAMicZhc>KV(|kix{l^b3SvD& z{)Y$IK#Zm+tvrXNf9|9p5JoDcF(WI`jzKBS@-$ps;$GG;$^9P1v6m%$&!|0TVH7}$ zAolnek;J%o!g)^l$Ot2b{qs=V2P0XVms+G1GGk9mlZ6T0|&;-`>w@d~NPgg}WjJ`vi|?LY=qBZFImA3#tW z47C6*;93A7M8L2CIH=H=PyBf`AVe|TasXGV6`1^0@!qAB>BSktS+jfai8>unX4eia z^y|m!8v%u)g3{+xZzf_3FcRyNd()KC+7;5qdQXX|eZI7MP{4YC;@mLvZQ##eDr<;6 z-R~vMIAd=~u2@YNzK(q^iiKa;ivYF3Pz&G!t_2W51bkBlhm{^3==D`lROWpm{rc5U zVYZ}TvR!#OZJsC2zLx9z8o4hJ`)fyWQvJd|*J!`>N5(>at7geJz-Q<#LBw2~)OUf% zJ)182jMy#T_m=p(x`|Ko!NvNz@mADGF#71*P=h85mU-2RM{+X=sB4>r zU40rPh6osu00$QTw0oBtHtC56P#>a3pJl<#D)F2q2xHI9iwk`AW9}0-kRGudh_TUZ zdou%G-sfZy#HMHrcx-o?15zbGmUtXRB&n3v>CkJavn8^%Lr|1W}e7 z6s0#UCUr0G#klerD1-v)fv?iEL@0$m{yj*!cY=5ULaDDw(aQHR$|m-XidZy%nDjM6 z!{Z6ci3#=w&jeTQAdEBM?6vb#oKyj4y|S)5w_NX}5Qo0a>sFBKaL1VXQGqdHB0&bvUu}{Z;5@hz!w4@z#N^3dc zzLeFaI>@Abxy*A5s4SSCmef#+Fo5Zdk)ru0av0fmm@L~pP9Aa?RFJyWyVjNdK<`6U z+r=RmPequPu;#ingw3@+qs7n}Anq6^>QUfPe#x0-ol$ zbLhDFC(}MdZXQ6O-xY28C^mWvbFGfjN2LEdjt0~QLoI*{xE4ST5ipKR0st|;It&Wi zW~%DHXQ6ZW359&5jNM#Zz57CXDUojIt%M|ym&=Ixr+>)98v*DO11JxVYQhc&1Wffzlgu+gaY zL!;~}{;nK)w!2CnZrWb)wBq}iQN!h9s11f%02gpAfZ|5L0r+N;+yIhNKz?Mg^rNWF zTA@EeaX}6UL8RztQ{VED7P#(80d2%cvjzP^Rc-{7E);J$_90b+EK7$yewK=2sj~76 z+;R<}tupi7TU*DEFb$TSWp8tqB0qP76!tj#Nxd2 zHv%>q@9_y_=gcw$7{*aF3Y+#5U`*M#BM85!?r^(*9FR1g7Eli-_5pO6o9F>^A6ai$7hbTy)f z)qF~u(GQ^<)z8j6`top09!Q3q^K?b%-ocH4hSrb|)aeg(f8n>Mp!zDLV-_z_v0x5j zWIA_Sa1SK2!6?98+=chz=nIzI4xm5rd(!R+1^uEy;@Q^#%wN1AK8bTs8w|AoF5p@K zHAKL4KlsM-uj{HiI!74S-TNX z5J=-dCeNJ~uWm>LtVng8W#&xp%Qm8+tu-{T8wr7R1{fNMR~r;A1_}DnE{ilEB^4eg zAyz7yJmMG}wK&7r?u6Q4s0DBV*8*rD0%lri0U*!Y?k}F5yNI`5-ypg*EwS)dAlv6N&SQ=b z$GtGlfIViF(k>>6KY^cd9ra(nLj&wbFa{p!)Z3OH6W+(N@`2i5s0DBV*8*rE0%j}c z0U)e0D`GK3eEHv_o9Zi5>pxxRXv=|5cQ{mi=s8cp0*SK1 zBnu}dJznq6MY?7{-*b1Lr+fu)gqv|4PpUDpx=3eRV5YC>`DT1vSdjUG43DZrfVy3+ z1nK??_#0I@SNItK8pceBjbD*9musW8(JBHhOn0&z^*G1`x>8eimtW9E3zwPCcDZP%gg!{RF269-lr~7-=0+Q zbD0OByS#Fpr*+x814Jq6q--pR9lr-3Ut? z=4=aLj|QLO`Ht$_yb*M(^_lo>Dz{$#`ZAshqkt0g_k3lN*+rSND9n^+_fmA&!+(cx zc_GEwvef3$b16VwP(Uq!uQ;w(91IWvi^13cP>ll$!L-UBy$5^V!JB6-{&zdXBhYbI z`ExCnk9~-eJb|=Y-A1HI@BTUYA~#$Ad#UX2JqbBboiLS^6iu?|T2nWEASLex@T{7C z5k>*b>=TV)n9qq&wam?ic0^`sP|5jim|mR4jy;RCqgu^?+F+;!Z~@l>7$E|dJdFXM zf#X=t`x6SZ>qPo=t7nha&YHLZ$?+vl2NjL})1L@if%@r>4M{T#{ttV19Tn9A_JNuP z=@d{|y&X%L1ULQ+uD0Yo|k2@#}2LO>cx=~B9p%aIw*`R=#wnzQDf z|GwGFL(II4c;08;y=TwfzfE)fs^h1uJg|?rd*psYg(C+ z%S2%mF!E!~3lWhuzRUoR7S$4|5G8=~i^Y;=_YjI+d*#hR6sQe`S^yUS7C;XXu<&%` z@(i)5fc*^rvERk9kJ2S^yUS7Qg@zuxM_58Co7>#7^E6$uy~b@wo)wrZ~=3ExKQ{_eZEz zr(oOtrjSHfXZp({fscn#juMTr%8?WwKUs+zR6i zcnYL(S!rJ<`%HD?v&-+?&SKxX0B!9G?K-N5L_ssWh)^30wE!*vEPxRrU`dAz08$!| zFhtvFbvUcC@m=S;&E4!xveqLnZS1>o=J{@~(-kOTS9aF5V)XaP82Id?=BO_Kzn@H> z+S1;p)dd+~ZWlJqSpm1~9Jm9cVciZOYO2V(F)MKtzm~1UHQVFph7rTzcUnlJ;z6>u zM*4CPYJ;H`zy*K>FhK+?D=h&)#Z`B@o^Cn0F!P#`E$d*V-Av z0JP|P7eZ8ImuhoT?*NZsPkHeP{(RA+X((I=*#Y@e{?)kl)J%rA4fl=2`tB<6bRJErQsP;9#%@W$M@@S$ za}rD-h?qsP<@;B7N)W4|qHcR7?M&;EEgTA8waBAlFz? z0H6d0Pv;hCSIwpwJ#8mprr6p(>NP1mVcjsVGi>SoS0X?q)s8|*rC!bJRSs|NeS@Ky z&HQRA^z+q@XdToQY%aC15aDk#^%!?-h+n}d;Jx8`XeicQCQOUDjL>lLe>0Q_a}$jrC^2_$R)RIC zP*vxB;}3RhO}&q~rn(O$eWEbfo?0^a_0J1fad6kseuTPB0kr_W(E;A*V223UxLE=K zQ6t68nElGsxHHzREvvjP80bx&Mdv0%Vfy{z(a+=mF*#OAm>?Zcq`KBzl9Uwh$H^uyrT?t))l=zSwylfHBg zV{H}^7N8IQ6tG^1WZ_zX%h3KOQxXTg5|&5<54ZFE4}3 zU8gRQYb%vsn)*f|BpAJ~B#ItsG^{)Adq6T05Pj}JxJpVS&$WO_Y@`Cekz3LtqsHdO zb8m+;3CYe9XT_{nxjK$&cONLhC}3|)ugR?DwUw;bB*0!a$FiEDWaBo$`qNid!4mCf z=WS3M47C6*04#v>TEJm605rkvKuJ_2lY}cpsdGYB6+HHyk&-Jx!12ReHTu#8l>*Qt zE?s#E!%6g7fJElYcU?+ce8RfF9Y{AV3d*TYmdrO9$QcVZ6i7Ft%U~2h{=ohb5z+hC z)04yl+De_y%%b)sUj9S0uFXLNRe3X>P#X-j04@M5fD0nv*QPB1#8^7`ZFe@Yij%Dp zBces3a@x}qwdvrkX(Fpe9#?y~6Hvr-B<56uzwcVW1GF?Nemn;{wvs0LnIES~BUtm} zyAn_1)lFjMShuBNJ@kp9Uj)xTQ13zB4p-F;wxc}-OnGf0!L(aon z`PTw`W=-k)-?-|oN&`Eab}j47FLuN%N|b)3E2?7~^7XmGI0Ky3gA`3d9^CyHIg)E0 zh_{$)$Yu9?aXiLW?@X((YpWe37ijH6^S^y#f!sVZ<_G?oB#U!{}BZFrv&ilBf_7bzWkEv&$s{Mr~kSI za`&HmAs-~DAYWa6{`>C$XI7#j03i26KL4ZqpI-)Ce)B*6M(`v2RrA-w{`nT;pCuSz z0ldM0%logQDtG$I0if@J^QT^NRCvV!d1`kVii>Pp+m{yFyTuM8U46^RBwc|{+@xe3 zZZN9 zNM%J!>I7l@#Pd4mJ|@eW<_CIhhN`W1LUvMSJ#T8O4p`SAnLzG5z)wQu0H6=zmUf}` z^{A^d)n&=UNK&_qL-bvTP5H*H3K8NSW^sxQ^<|PN@n`7wfAi+PO;vz8bD$Pnlf3N5 z|Iy`Y7ZqPH;PT&pxs!6Y9Ss1==+L5`py^QUj%r!qVU>@U3Uv(^KVzZ|r6-I(Ecn0# zeEw9F&~00!=6bbM_7uhORZ>bh4j2BHF`DnKZ52nTmS4V9n7)tMj~kOC%2IQTT1a zrUrqfpDd~Js;jFHUl$f++cW4#(fatUzXu{b8%nlK`;K-k;GVz_(Iu@J-0^ysH!Frb zYfi=yJE;RV2GINx+i>aEXJ8cYBq8+++YVZ2V5RNFQlQFiG-k{rtvv;-_a{8axU-js zN^7s&CB5CF_3k1_b}7E`=&8Q^?CoUx;zmTX`<3(NAE==gzy*K>2tWkvS72PeGir4@ zE!eAvFZH0PAV^`6oU!%WJ+s9#tgjPiqQ&UJ-+&yd9DF>V?*Dz9thxMJ;buMAkIq}E zp46pD!mQ2ur$o;yLSDzpICy`bs(?{|Ekkh=0=2Sl-OFHU^V}Hb9QGvLXc<;d)c8X5 zND8U1P#X-j04@M5KoBC}AioL#Qdwm!Wt}HkuM5XST>NoZx|Eq8z^6a_DT6GAGj=FO z5oqWwvT#nbuy#EI9xrtL{uc2<=a3Pr%v|x;XHWu`A!~7xyvl1X5Ya_9ted9YA9dP# z_W6(u60(w*Z(=3(y`7b{{`F8h-k!j2tfoKf&u}chSpcNadndS z-Lq2<&H|piS`M}ZBqz%n;{<*IeVeQQeYuUkv?yO|97cA%sc0{r#lW`Q4b3&I=Y-hKm=-FSUOVF{jO|2}i>yApg_e zm!v?s9#L*ugD?&=#UY7~jjgEwlGpx&EqL@VID-vz<5U6MeV! zB-92&Er1IE3lN0}I0;DsfVAxE5~i$EAK)F{G^anI+6Y9ZO%&xd3de99TD?JFx(#%C zJJzRN_(Semz;jdMG6|{;oi~!%2R-Z*jd+b4nZqkpv`2NJTrYo-!5Uj%Op1=3ffC~T%5Q7Lf^_>QQxZ4+$+kDB&QxQ$j z{Dh+-=H`07kZi?O-d5@&<`el^)z`fN+CV@LPC&RM6B6{~h zNGv9D=3o2xXxjUu@K%~qYfg|;vN#x9Zrk;)7N*xrE=j6#X3X8kbRWMb ztvUKBzQYene&~nx8_03HX0t2r0PrWOa`4|pRet-99d^WJM{ zf9%tl^&z5r^|M~ts0H^rgURkY+uW)$FGn!JG#By~!>4A(T3G!0d8%A9_xFk%i55zW zWCKrNN;v3ML=v7#&Zmgc7rGrK)cJP!UDZPt$9czYk0s9&@|$WvNXSJ=ADUXaml|=LpFY!g&zf6nAdD3ZiqiBmln%8+!V>yYIc|i~^z;GM>cU2KLTw#TeakuK_G4!Xn?_bCh zrkoVq9gx~_16osPn)_`tcU=qEOrN)(xtI686U(9Lf+ut@BELyOT&pwBrap8}{uLXQT^KaZ0XuHAp zxYnC-oc{*x9k=rpgCf3-s)^L-&`+>lu?O=c?rGvlh)95Pk_d01G>_hwjpNk8Q$#QA z=Jkh7>F|&;g#Tch;qW*vqD0TS>wA zn<|ePs40q+pkLLOaxH+c8x3!!*@G*76=8|DYo4QYMwCx=rby+~y^IBOP{86b6= z{auwK*$9@PC_gLjt8F0i&<1s3n3u|AI<;216}?3jhm{g$O{BM!MV$I#B*v-Rb$afcH2p994{LJf`#Ce@W>3pbs>K-t#ap z10rV+>46j+2CrwpyBeC(-x^JhQ?u_cK3$$4`ku@9(PxXqG6}_7xPAJPMljBR9roLL zDxaci8~gj^W~+oO*aMwnnljPCzL$$W67II`hT34L1#kgi0S_PokcIgGpn_nl_CD2D zi?1i}(HIZJCgj#VJ~vTS7|QXD^weQGB?8&^?Qd;n_P1RN2pfJ=^kf6o@5OJlk9$bc zWYzA-;gq?^=Sp*=RwzYVGB64_^!uJ-3VhqYr#87>N%-+JwNL5%2$wenX_gOf=46l& zYJ;H`zy*K>$Uy|4a03CL!y%tq?|$J{vKzN-Ek`T^RVO=nGLUA6c`YS4Kb5d;0Zrus z?T3*4!mb50oql=vCY7>?YIQB*0anGW{{D!=Wfl&~e;gitJ~Gc(){Ol8%f$mPprEaNNu_9V#-)I(sLJQ+CACBVQaVGP-HC7&ra1*w zP>y<~kcA-Y{NNftF04oFcYM81IX(EIdJwq7SSq$@5h}eSqX`fmNueAg?Jt?B2ko_f zmAD&*sM*_ZSN&ec<}{b@*GKH*2Og5hoF=LR0xIyRN(89O)oX!=e+2v$Rf&Q|8wvpR ze%P~OdaqAj?hw{{EAzg44QmtD!=GHA1zc9+#F;WVfsW_0uMYgP+x|pV4nd+SxsDj= zShiM8PSL)zwRHV@Vvu&0`d3tC1n2{b-kdEBS z9*#l73=0bPvym~eXzR9GZ%c%6+DP2w+|&sdkQ$H~E&N=;`>jy7OUEbnMd?O;j4dMz zI{X|#sF40e!Id?IKh^-jDCm@20MKn8_d)?flXV$2BaGi%KO%jC%C`rURP88w*bRzO z+1r4MD_>3>5wdNs*EfYe!>T*4)aYtHM5A;jFBOpRSALpccT_H{kV+B18ZN$r%7-JuflE zK70{mHw{1>SdSz0-sXMuEBbqWCUDiOd(yEH$oIN-G>tmsZvk;f{eJr*)-&d$H{t~| zUcVvVMv_1GP75##w0f8JC~O%<0sdnzx=EFd90jKHL42_@s2OCeklFWo2E3~Kep5<_FJGaHg*bPTYg0W#0R72XHQNpRlH^l|X;?$bNOjcmSUFE# zgnLD2F`$n+v|2VSd#FT+yF?<}Rv$1vfZAZF1#kgi0goU8FwxflAew@%<|zMl0hHfn zYHRK5LI|>cl4XIhU)_=09^CA)D+JQSbviP1IOkjoV4jhW*Ahf2Khm;qV6c>!GHW`L z)BCt_;_*P1^~~Fo0LB^6A+U)jt=U`8(4mfbQFZ^_48iJ*Z??4^LFL@Z=&va^dcF0LGqdR3VVu$wrF%e;A1MnVJ%dg+~ zd4C^-`7K=f8`{@H@oqb6_MPoE;Q5glh<5g)t4f#MppQYzIE(^(%3f8RvjXs4Kv87P znvwBU_gdyM6CGkxCXTV@RcNu20Yj4zHY z+cF#JdVN||9xfaF9Q)!xVvh~pC0@Ya7s`qGS<|76@7rh3BQm1#_Fi|BI8WbZR<)JW zcw@xJh3#?}1z33RvFQ|q@YZsM-80MWNfz|x!<;T=`~B{#mCJ@iYzow;IMf383;@pn zRfquW-7)}Zqa&g-&5ic>eO(V~ZmumU;gj@khWZ=$A+y|V6+^_KKwO7W*9RC&e`f}@ z+qfv1YH3;=^@iwJ;_{5~(x`B*PgG852n;@8Dx(R3Q2;2NCq|&wf|zL}QDK)i)}n!P z3tviRQVZ`s%F$xVSP|3)LoI*{01Hrq2*BB72Y`N=F|s}imXFwNc;|T6&eeS2c{^!> zbzi6E#h0fnH4X+OJ)_aV4Hmj}Wkj7|ghx2ur6&O-?wwX9dH{i4U& zG2?^vbeyyUws!P4H99*i7#>y!9Jv&Do;_BvC+y5pcf4@gMZ=&r7-|7r09b%JL;&tm z7XW0OiAYXwcE{2n0~B>b)uJFDFB~WO>)mgN6lZiIxgPdFA}{*0Z;eB>mjbS$Duwb` zleu^$3U+e&Q%!Fz2;b$l{ATR8R_rcmA6Z4t>J8%zP>M!PtH7#moo_vr{KjP5zRgVT z`7+MDr-iJARD4QI9F%yvUA#_bEG1XkwAh_BM4CT&H~^2TM1Z1v-MHZw)5%()*vRueq#1dMRSf+W_YKVpsT zmrb(ZC?P}_Shb408Er?|uk+9iJX&cHFoo=Zj1Ju)59-rnXDmIf{GI zGZ)5(KUIwzJh@9NJ-g2XR7-|7r09b$)L;%5%Ismjh>s?7$uRO5zT`G|5@gZ60 zlwKaC-C)k#2x5Nr^5gVG1PQW!5^(9NirOM3@=X_;ejxv99` zFuB+NP$UmV0i{ppsetVj%B7zqnzw5s2V1G$1aIOBJb%&_+9q$65ec=yPz&G!zyh=( z0tmla0YDFS6HE{ymTaH2=bXGxY&j7jRXcyCVa2r?Q!@mlO)kiswRJhX7NEO3 z{Oi4)-8-lo}wh;1brWO2b_}fqj|G{##(eW4}fT;5|0K{R}&BW2$+Gk5L_TAO0=7>WInW<0g zwzu)5Y*wl%<`_^ClVfKH;pZDf+k`!PadPo@}p=kym61`MNo+jZJc&+4VD zvtbmljwE;P#&0<8+rhUKHi_K+?lEVa8Hw5oF@~^RvWaFX)TcPq0{9F7&j1~W0OIDA z%L8B!Z|5ZXWO;A4yEczlDFH_2OP-%HaHg&VZ+$Aplyn2CND3mMw{H_&3$RwSz(Eey zAoTUQ-K=->JV|?HxHVF|*Q{$;{=?7YY$O;3SgZ$dMNV4GC4~$|eO$+9m^?4*%q#Zx zhyxZ>i323Yp*9$50bBrBfG$J;Nxk;vl~PDsT<-@t7msow=H%5Y2$|3Ho{5pzKcmn% zon1{;e+RrdE9#@TuvmXBpzm?+S?4_v)$H$FnYgawQA`E-o=ke8#M87*sS_#r?~iUNp8?<*U;q(7R;&pCN%04i6KeVB zBlEw?BV6%3qG(T(U9b%$>2eLH;&-2r0Wv3$6)F^q%Bo- zpj5HXqW`ORh;d9tf)+UdFO(8S0jxEZ1G~shJ9U(<#lp|;)grXNqUH*XjZqr?j^)*? z6bY)I>T@&2r{N-Wa3Zxr+~`mH87%DGlW8WEGxBqRdBG3#L*Tx`4sB>p$b)>#eng!Q zkEf1XBJFwyGi~&W%S<@d{~_QXsg76AEWp*L>yLlFN4)x$>aQqD0RG>pl7DAVf-C;i z0j|O!uYTsQkN+b_^6F;5KW+!-SpK=`>fWo5|LcZ--g)`;-}h5pWn@Yq{NvZ4`uo=m zfc)U)zZP6^H3JNT|9Xr+QI#mNfw{49E@ z6V6mt^`S+eIQ?$R@x4xjO^en=7)f5dR@Vw`V6?4lOd^d)KGk9pv_ZRl#=oH63(S>W zbH5FB=0Gj@2T4e?{;z$$B54#1xcrA-9wm7zTkJBZ@QKAm4+DBw#Rnn{3PS@U?zr+m zXQtELv|EmWLzHGsKvzWM*Apj0S=Xy2tiBmrbAEEh%CUD$fjQ2%wHaFpa2nsGoB*GZ zRP*5T!6;x-e9u6-wtV}?Lejqb=kY22c26CZr6KmsHtpFb-5n-S8w|AoE&#k*GKL7a zonZn1;iG-O9q&VFAfG<3hh5RO9Qz^2@P}v>xz1TB-e8@BH;_^~<}jv9^Y0xLyBG9R zy#7Xg!o%IVH9w>JFw35B8Ix*hq>I7)f_RH6#7?;&+u%0>c$~r6U zquN<~9FS@P8c%+lam)^3xt;;~yp>DG@2lwjweMo8TQ^jzSNIca96m!y4j~A~BeZ~Z zH?^#}n1Jf)BO2lc7K?n2Tqi#1OqD&PS{mxKHN_j0usFbxJ=KGNk{ zfb!*U07y)qZO%iO-^AW_0-;F^wP{>%ZcQ%%&*JnO3yI3-uw@{pPH~A&{6^!ofN2Wv z)*so8(l|IlA9&yQ#B;NrrlZBhys4+YNja#`dj{hSu%A!@c1+w?mQLt?6vuFEEI;c-^s0HvD0GYe6A6#}fE*8++@FevVg z@wB?z|6N{haI#{X!RuUZth}AKJG~?d~xq zGbg;0POoofqlemHs0DBVU;!2o0aRf<01#c^wvuSoCTV_fgs6MYFNrW366HhM-RK6y zCxaO+%mA(OR8{2B7%h0?7K5@zw`!5hbN3P zKsxB@lh5)<$d=Di)DiE=PnU+-#ouiikS*&xadz*&(*?D`Pz&G!zyd5G0;q$s0HCe} z!#7E)&9TDIPrJA;;@xl8l5iLkj*qS1q;CRI5E}q*;-3$G7GJq@Euj7g3bnUKGVSlMY+K zgia-geWV+V@e?zjut6n3JD+Qp!x)vPT_miSPE>M^p6!7OyEk^mZByH6u)e|tfCW7H zBj7Tsay=O3o=+YC)cnEGPQ?|2TFS&7Tc8>pgKS^lNyhPUlD9Dtp*g<~3GhZ6-g+mW zQOBRC%F%xpRY|qxoT(521 z^u>X{Vd}#i!=-O0BbJ;M*dC9J-uB+Q$43$(Wd6NI(>EmUuam_)ho%yLSM`m3c60I< z&gK}SRr(Qtp?cPPqWfvuf=@sXL}l8P?@Re*CDn8uXGHy3*BB=2iAqc0z};88-^slg zJ0QD3nMl6`+N!Gn_cXCodQ%Ur23Q+W82bBh(-lWzB3&>8U_@U)dv^!b)s67GEv@qJ zyuH+=Ebe!xVp>{USmj~EA5q~~>p=Jqma7-Q){wDB>oEoZ;cP4gX`HT0uLVzEu&2Hh zkftN494_)bX&D=H7^t9*1*+dpSEZ-YOS)e1p@^HKVyp14jsWQ_`7N>qS<5DS+o{KQ``jq(4xgw`zAYtC8w|AoE&wdR79xP&DINei<|T@jSSE1HXMP`ZtBEdB#11uA;1Lnkxdi&x^+yMh{colUe@AU@mxj zn`jHxs7kI1de-vBzFgMQc6N)?^n0r$NfHi-{+_Qr7jm^Sm64$~7-|7r09b$>L;!;W z1pp*EOLl)ac#QTPG4_G{+sGl#mpwMR<7z3Pn2AXR3RE;e0ZcJMRfUg#?*?_gzqw{H ze&p64Z+?L|Wk~reM5W|s#l7_T$jP%qyd_>3XTZ&_3ZoDLdecDJMmNPQTjaW$0bjQ_ z`YHHo^o)TyAh-a8|6sY=4zPy^V6Y4vDR>pL|wr-$T1O0%RKt45z%`2D%o&=+HA4N~x$BiI+2a zkR?l1VUN_kZ%%@6jn zl7B-T@=y!lYXPu;rw{?m=1&2jyt7q}kVk6Yr`Wxa6In>p@5{Ha%G#r0IP3R=QNU^67;+_k zQ@`smu=$|%M$J;}bZ>>8%gBdEhIL!$p2|=g47C6*04%@}B7nuj2>=S5;ObG#y(MtR z%-&E?x-85a-~(nEOt|YfmKg?(0Ga$j8B`eOou-_2QnKzk*cf&)3~Iy}5aQXK_-O z9mzOIi@~ER5uh$tTY}Di1pJArWYhZ!0HKd2vm3?5-SJIMv^(7w->8=Mt$SxJY{N4b z$)<|q_YG*-koyw{?TgW$sLC-&RHd9Ux_cS){blFl-bnV4(HL~*AUU7*|JnXnx+zJwMMf+_Y{j40|ej>vBTT}w;9jSDIY7;=c z7NqYRl+0gvOcS~7qF`=5tVyB!;@*EcwhiH@c5nfu-GE^1*M zT-}jhDzx~MUv%2WDEI;BA8x`ZfJU*J@98f}-Q(5qD5Ia$xAbH)hO9Nje^PCg&LU3S z=7hRBfm#4x-+|hD@!6%|94ivl7g4h{GAUjVyrCHwR$M@6rT1Cs4Ye65}|BLiqVL$hLnYvrO6cp zSP6d!GXi)Oe-S3p(V{Rgz9UXL60p{SiUhw@(!Y3$LoK}M92z135c9ZPN3S@| zDvjM7PT28LQ{QQ7nx0ep(B5*cGQ)s-3lRCM9gBfqQ`Pkhc(D3PP%v~CnKwX`;F0{> z)~ruRzNnZOWZl4+-~Z@DYBSwWJ~+tn?=0>)&am*FwgT`z#5 zx7i(CrVRc*PuSJ&bNdKygswqN`s`2I*a;+bTqI=vad!syaYbboa!VKmB-Ep!@Qxde zqE(J_YGW^3FP2fW7UHV1?F}|KVhrVoLTxbA0=NLM0C$K0F6DLrsN3|7{?i{#;)tN_ zdl!xgI95uFdM+h=LM1l}ZxkOjz5+gHh`iW}$nn0O0j7;91$E0kYxP{C$dX)7tP)Cn zi*^co(XjmL@xN&hMZzfHCv(lGjowDu5q1o~Q3v4=QG)e@%43<7yH9 zgXL;1-~kc9tyBX5P4oY1ki<(*EXyv7Fj}cY=oeV{kVIyHcvdUkxcDG83y3>k33z1O z$#^Y*dOq#@LSDxvsCABbnj|=v=Yh@LiZp8?<*;0Y1HqtJPI(aa93hyeB2qI>A^sU4Cv zcZs^$mb;p2@s{QzB^KPmYJpPouS@V=Zv1^h)(68@-^Jf~-!Hh~_0|_oZvAG%v>8QiSg&tsk#HnG zIr$mNBo3^c`)U*Y8|c7y|7Wj0&hVvxtEfr`*H?EW8b^(jDIy}Yi2~E}synsFozt*U zdxb`gBY!1?a%1|~<>(q|BzjPZ8yH?8e+ z9PAT3q{;RsQ2<%w#5kJ8J5cw}XDj9Ks7mNl;%Ym<=Z}D^s7ij>qRZ6k(kVfV-uu*9 zJ%acdS~tDPIGF1AQ45a7joxcT;yfFFQ|)rE1iB{?(8e^d5X(}ZIEZg&rQj|9a^^jRJTK|1=P3ujgG(?jiCp|7|olp zHxwZ|AjOtm_~9JL%u>Xqnb_1(*Hq7=dgmM?Ct5IP1i5P?e}IwOMGES^O^)^6WJ0pG z5Z&5Gnbq>?cQa}VIE492rP%ZBQ0EEM0{FlI4;){}z!8w)0f2-^9;=8DSq2@+M?993 z?KWuL84#nbGK^{Bt9n*Ws_+K*81%qMslzAkdX-c68Ibw7Dy4o$qoC z+}`m&+(S*sZLPwAQNX}EDK~9S0`X;{*=3CPq%_>O-?BY>JGlP6&`9U;M;~*j4Tf3( z7XTLU93ntaYU1)*Ii;AAh#QefI2d7V{`BI3t-xUy`sXx1GpkRT@3PCb0I555JEO(l zOJ57M)3IH1=x} z?l;yi;{~BG3J_}GMK)yfmWZ%Kp-MFF3H4kpU2UGI!7G>~YbViNZ-Uxjs0DBVU;+LR z0m2dh0LX_zk`=4>OBU$3xI0BUOUFvSX3yfeH@nr>Z)Pak_y<50v-&r8zsCP{eMZEK zW5g4XS+_}$CgF`D8@gaQt#sN7Po3u?x>oe3fcQka4}G+-o&{b{=uqnB{D%8LFSFCX z;3azoG51GiD*jJzwD3d5>@owOHW+FFTmV=A03tv{{8GT_X}HMwIZ5&}#qg|HNhXi@ zoUQLzrf$@!bNANcMK@G{7KG}=FSGC;TnjkitCkY-2r}uu7^OZ4x^Tu=8Qt@HG51w% z&rKTB*02x88E|KqBD7lk8I?n@lYpwzL8L|6c<)K%=e-j^Nv`xUzYx?0LoI*{01F6! z2oM#!Tno6zw7hMm9*=fKmw5l+V8|L7ffob2hw1s)Qwtqq^Rg2lUU2P(9d_)mYXKC7 zN`qDA41D~@)51&Umh&%FgmM}J3^oaf2T|2u{(yA{8m%Du5WYv z>_M;dj|400(ldYKpn z8Z;O2zc+94+=MY5S=T5>&hPa!{e{Q;eul?AYy!?|s#u^}5v!}+6avk)fID7174oJj zm1Ghs{I$~J!4JualH&PnG*H!Q8I`b%!eLwsu;#6O8o0~)yn-^HGJLnl%JPH2R5!y> zdna0sMS_2iD%1u;Er1IE3kZe?kPx}t_tfWe3M{F@skwz|7%Fln#!i{xaizD#GbHl< z4ig1m$@3tPuq`QbhcpQ)N$z|PrW!{e6LxBiKH{6{F{|IVV6xGcrLe5n5wgn4x!en_<6}4?{wX+0$9lkCH{+~V;2AT$NJMo$O~p@x#7&JIph8Wn(g{M& z+dom26aP(AWd!KwGVnNFgc2xdjJ)L^00PcOO?)X~^S&XlMXup?>w`bYhBjx%GlLU3 zUnyqjkVpMazyIfr+zR@B4w7^GxwcZy>#yfi@`UwU0AHv$ScK?b~XfF z?57a)f6Q!yk)+G=W8$)tQ0?%va4j2zmkv07v;1$`_m|au>&-_+0+*rA9H<2ll9%oH zzq(wJ3=IZc{tvi3N>WPr@_n%ra}H(G8-+uri&e>1QnYioFoij5I1R9SE6@%L_lk^x z$S-$m(P=^?uUAXYCtr+28YBKCe)h*wCpUdgFP|&DCk!pbTg5F$QeN`@< zd>yt57cWmA((E<>mmKojZNj5e>3xQit9PI_7-|7r0C*^cK?Fz(U%oev8Ir)mEhTV3 zjsAfWXsOl|pY;M%ELD31ja*nt@90=pioPmFrA@eZ5<1OXT&;VDR~{x;NAYLoI*{ z01JqK2zVfTd7P|E-p=C32fKvKlH8ISDHFI@)++hLx9aIhO@%1TKS(10DXRE+{4C4x zt_1)n3wMk7cx*eI3B@HRv&n6uIBsz6d+M_IsPP=AeB*&}2HZ0j~$Ex)KI$UNha5lo+!V?(A)oNFeDi_X;1$!)6Hpu7gpy{jZmNBPz&HQ04yLHB0xd( z^8DQA1Zd4K%|CSs`uwSzUW%VK))D~d;>(&Cw?E=L!c!|fY| zThEP<>`nzd9H**Z{swXP2sSe zs)|qT75)T-7t!3j$C6HdOBJ;adwyPR9dg+~jkmUj<#huw)q{Y(PUtY)q-3Q~;4)e8l|3p=O|CdpfjG7~lLw-pY zI{fsoZFFlGyyz+uZdl?1k;!HY73tQPD*r0ek+#e%TV#*S>sDyB*;Q z(V*!9UW=EdE8%Ig1(PPdh4B~2ud9@`RE*|H;&>RN8qWIX0MAYpX>F(+ST_OGR_rDR zj6A4vou6NAX?Cnd=bLP?{uNcZ$oQz=H85@&H(++}RqC$$E&Z@`?CkqCW@-IpCIIWZ zAbf?>up%W#65FTC1t%T6CyZw=q)HL7iH(TGa@E+i3Lv{dr&c08?kY_&9o*VoSPl*J zdzCA$ZOl6+wBe7#FHVP-3FC^7DpKEr^L5JkYOd$Xm))DVUzj)$%6T-83A*aA6p}EU zpiVWY1#t9W^s$h!rzCzEPBJ(j8uW@W?tKT>e4&Tv(Wv+Lhcy{>{`L3OTuVIUbIO4z zPVTkGQfyDJSA3azn(fvEGkh{uudz{35;gq>McnWXm+8XN+tTfrj;mwv-GUPYyAc6Qhxe7JicVQIJ8hhu$8^NtMGY(bc z(bD~PgZ0gO)P9C3{Pd%yFZK%pp*9$50bBrBKmtU7iqvILVOiE#@O0b`Qa~RKeqrCvEbJ`YXnVmphzsY>x9(7D1R>l|<4WP#X-j04@M5 z;3Y(Ws?23rX&g!l_Y%uVq1@(Is)IC?BPROwUNU)HWm!Zo)&s0AE}#lCuR|OC_w#E3 zo3{|EwGbX)ugXp-RNyM;S9xr3%oB*?2lL@Ip^Z-!!6*Qb`n{jd?8M)6y#~ShHGyg2 zBkQ}#>Xyo}1-k^kePWn0KwIMTmvaCG+G_zf#KNkCP}HBEFjkgTvkes&xEh*9vV~b~z4wtf zTfI93qkt&60rm#X3u+@NZIZUgJ=guXs4OSKXeRkl3J!5v=ATd-47C6*04yL0B0yd4 zGPJx7hjMpH`cAJf^GJ}*F_xxt8i*nN(64!9L7rNZ#rp%0ki2OM1?OP!TEL4GjePnW z`;G1-NF;?T#dbQfXBbHzc6kaPH7RgZn!tKU#2``?Q?>w?zqVUD@d!qtP4al@4TL(= zgXw$jPT3yH4op{DXl$!R_YXNbTU-zCib0@MnICwG}zf|7lF@Gq}xs8|*)A7r~D-#dK z89?LUxFz5u^6>@8BbsZ+) zC#rH15>>f9TiAlG7_fC~T%NQDS^ta^Es z$OnP3&v5EwWV4(P`@YfYtGLXl2MDT!Pz#6LLQ_fW#RID4E9}rVnps>6;4d~%M80So z0F-j2R`E9W&Q__9#Ehn9?Up`M)7$fc^&N-=z5Dz=6o>mv9oFwp(rvPLSl+DjVsFd^ z^r<+omq^z_Z7|dVxB#$#G>8Bljms;=;_VqfWXq@bcNbl%1kCq_Qw-W>sInagyly!6|RpYXGmv;x|&U=)y@j;M@VN*vVt?A^*zpc;n&#qzpqnw>a#ZYP5K zk5DG4PjRRP@EHJ}0T~bhdXF!!7~jIaCz&~q;TB=<`f^3IU9D4BxP)#~)SZbzLgcoQ zW+0G2F24Pxt+f8NfXtFCRMqFjgf8*%qvt>&URt+p7gSBctj+2%G3!yG6&MA4ISTle z%h+fY_?fPJ%I(htP#X-j04@M5;0;88z8>iEQ2bAgNctq$ zXnW)%#HJ)T_~f&neWR?EGKM?W=CfwvYk@vk`DOG!%dxKojAkb?rNuj=^%w@uYi5w61(Fkv?9cb$}V(9z5rIaeeme+56gn0fYdk00>Ng(IeB#i80FR zC(+b7o5?MvWu@$ykJ9_!B`MtW34F6mY{!1@AqY$`!}7IG`oY4L0IEena;zG%DvBN^ zEwN4Yl*+g2WMVP6C8Lb74>&inu;J_hU+c0)r9OF2zno~aO()1oqg*lDAPXkok*O32f~sOYRPw+tuV^mu9S^3zrnIGC1LkB5=q-(mNJ6F3 zAlPCYMODG?`M)9)7F{6L=g>gM+lD?~wIV zXS-5_hX*8NbmZHp@Tryx>2-c-<+_a44w8?q3dXwzKf<zYBMpYsKZhv13BLa6JoO;<@?ydrB!-pZ^Z<7JkwGqf@%LxLj$J;BXJL9s_^u;fKFT8gfn~JX z;z2Apx8cr=&4D8t#RCQ0YvvVbR#5txX`^JOBBb;<5Gz;*%{K=d1Ezsdch z?eZdUQ`=V{$PTZUa!#c1F1nkYTWV=Ka!eeyzsq4q)kFO+H4Ku9C}1SbZq??R+JE;s zViRR=9H-{`b9Pmm@bM@S7Ifw$_Ue0Xn3WNb)4HH&!YM#BsOPgKeW>+P3qizL)Zi&C zcBB7j^e_KXv`)J8ZsJ+M0s{sR0-yr&U;@nS7eJ7Og(A@1h{1fn5xPF{wYzHFiEP6J zM6K>kszD{pjEjL_qqnH(TgY9vul70%#d9+|S7gunw=mRKX}G>I!-`DEM9)I=4r>AtuStq_AC;d0$7@*Tnf13H{Ft0$puz-QC?MtP|~e- z)!#aE5NV3`O93n}U;rTiDxd%+z`}I}1mPCPb}wGmG>K{J``)TRfyrufHbN^*Ba7Tx z5>KLMs0&ua`Ye!tmpJE2zpb#d&@_8}{;^+Mg z*}<{Dby0s--uyKIGjD%4sZL_~Q;US%YiLGC4q(Tr1K&sr3h5j*yaP|Q01q~!dEh3RXgB$VEi#JK}Nz@P4wDn$dZPUzb z*}HcG78o#q5C9cW1QTH8Z4H9lCUB1_%W*YyEQ$T9a(9;8R|Wst@Vi4nR(~-L`6=Z_ zu&&+lTa@C()GGlx%F5~%E17&x?yAU2q~B_pqfN6Wj4C}KMG^{bA5(_+mU*+3oPMC3 z__Ts!WqbXj&aR|%q5VS%L9QEEPlB)qWf8Z`L;5dle_weP!vt9SYl9#H4Ey(Ud8@iR zI+%iJLj^xSv92I8cByqyrlrt&mAs4s#t5KQ+O6#9z7jyr7A{AvBjLQFjE-VAo@zkS ztYG?V_Q#Xz_o0VI9g%@>_5lCd-G|YcWp|WEq~1J;&03229!4xm&HUkG0**p@Ysxm@ zuQ*@;(F348padqsCeR23DTucQ9|((9Yid>e@mDpiYr=|mCrbqksw~=@FX)In2RS?K_ z?QRO5NMmVg?Tm01J>BYu9Q{IsE^4$`QHMfftxDoWd!tRBqZpcF^~UW+dtp`pBw$<1K4viGM5kj`RAVv z^ylN{hd;9;kx^g|uZCUznNIodvwy$B#H9a!pSpYu`ahn#eCmJvJE4KUf91uC=%h;9@Lmwak!bT5R@^Uvw@ZB(vOS7y8KCs^?{oWu49R%m88LjAVB)8q z>p@r~PybA+oc-@istkp=ANJNIO@0#<2-L%vHW{sdWk<50<*i_VQl~bV7U$Lsq3L*J zG@5u_N&B5h@Pqk?;WB~v*xFA4kNG$699V6y6Tl8q?rqnOcif{Gbyye~CMy|qbAib3^vi>kcG0{bh-Ww1rSgRU1(RF;{X01FHlKnQ>?OBFByPvYNzAVKdu z`dn9)pIzJ15l#Q#C{<^kiFK>tRbUg_$ZklkpcmLjdoribQ-9=2Kpw5)n6SU9d*KQT zDDMG=501(Ye2Ry2zZY$7dF>-^rNb#;_s3q^rrt2bebqkf>7#VA-5p_9*XOh@Nxfv~ zr+1LE01FHlKnQ>ecmoq)pQ3p=rr{_HJ<{U3gHmXprd#jPn{|r=mksso%^3D4)_0Br z62PRty|rugN(HY3C=p0TZy7!!iGLD&|9exC7}1CL&KKEg3pQ8>^?4MeoNx-rC0sZk z=SYW^aLI6}iB}{-r1|A5atv+>kPX^n; zzYSSBfZ1_oa};yA(3*eCV)~>h^ukn)r#z*h4;~Y- z%TiYT+Wgg}%;oW8f__ZjtoXB=Px=FMP^;O=@8uixsfIfB}R6sDNsi0H=cQAP7TLMdt?J+O|?37Z>`l z8mGfF5}VB}{@xw3Z?dtB^z~pIa#ka87CgEu0gY@m2QFw*Mshy#QwqP^#a4axq2r{So%^i-ZY$nh}xdU#Zfwy0~$ydNezCMgR*87(fVs z3aEhzcv^Y}f|M~3>CLr1N5LUiHaAu*-;pk>XlNuL<`G#E^81WuoCn5x&EPKo!l940P~UaLDRM~vh3)UF!CIIA=PCgZWVd9jIq4PFT6`%>>nh_ANMC19 zpr(hs^ad6Nn4DZ=0n8;4EUj?8h+vRD@qR8ajgbpjjVQ1TJs4oJK(kfSvyPa!j7pD=o)cP*~fcAhom;jgh zmmo+lrm?e2fk#x-n|H)=4pX^x7wC_Vk#ly4s#i_B+4{=BnD^VLZN4gYT?+U+sWR=2 zmr!|uEBdfo>%g1xDKVj6ogcp<3kwKvH=d*^v)+MI!0SP+w5=F#)K1T*rJ6#~J5CqP z!8kN>Z|UBA>RughIfu|_zTG)?=W;7%<9+%5B}SHfIEuv$foURUywZW>wvBB_dEidV zyX6pe^;s7gYmO6*yd&2=NXe&-oe8_N4~#hdh*bb8p#G15K;(z(L8z`xM<7T%^UVxP zbthCtI=ehuiVg$QtRJ}_E(X&U*veK(Y>*P%2e+_@vTb`C!oa(;k_s&aY?D7qZuHPhpaT zr``$WPSeZ3U9Pjf>qcDt+CXU%(@=*svTD+*cX)WsIb(~OUvp;=)q4d=Tkz%sX8X74 zGN8Ke<(Ws2J7<9mpSM!$^CSXNLm_gCPk*htFPy$FZ0NE{wHjw_%nI$NM>=gJHqzE! zO@eu;M9bsGP0ffAu)6Hh zvmw!0WoxwhDl+r?Hk7J`f=f+sqIcLbZcXVlcv?L%aAR--BZ4(2`WomZ6*nPj=~(!$ ze0{(@8^8bpJrw<0SlfHn4hBKS#xnR@9TMxha9qAkyWi-3w0-S&CcWEfKD%y!OO~uS5_9P64sx9p4P{ zfBn9da4+s1XJhqgED`Ivthq~OnLeMViorv`0s{sR0-ypKU;^B_ML>{yp-WSN9`1(7 zM-myikr5@2>@f&!@K{rSec94VlM4fb#b3szC(c&9yArUbT4QXm;~Qrga9fo0^Uq@= zy!$Ks_;+<#ZF*Wz^0n6C6oBL^5$ePN@e4xfPd))A1DMab+^@D{EZvYDn7(fVs3TT80c>ZMr1bKKNu#@F5cQbW8s3V@F zyk5aXEIsEIt7|1+!NfXA`5O2c_MM^-*OGtlCR)RDMj$7trs+R^3zPCL4bNcuYRkny zl+#hjV~xkArtn@P_WI~!1Sb}F{z!)^(qixDSb1^kkzHqsQLtDbF7uM{6Tkuk1`qM#+x@V!M&p~1~x5p;7P&oC9D8WoqEjOe!zWjSf z;g4xf^EsL%!Pac)AFQl9QayTfCD0ZyuTfjxviIbwI)bwY{QUjWJ*5rDhCpR7l_}lJ z(%KRfD)5E@_3P&cpGF|5W*2M~Cn>mgizymyc*@FI zf67!*WD;HhL#Xui{bL_*nzZ0$QLI>h{WfgBr72R*U~f55`XDbKu)u%;gaD|37MK99 zC1Vgog8mbdy;HIOddGzVrDL80R^V5oXjY?I^g5ZN53BPx!0H-5eFu{!Rjve(mXK)p z(%d4-GFo#b4hjwAlupQPdleWR_fS0HX@G_WoB~L)Dul)S1NRaM#%dTIDKW1KhU%j8 zga{yI*O)yF@U;OfFkk>704m@;On~=BD+to|hBW?xDGznrt8<&ffTKh+nJI?tTP-eV z-X|DbXUTe>lR|570oOYg6zrok8OU=;9Z0h0`TE+b=m!FyXQ!V8KYY{q} z0=fcfUmoFo4|lYrCZm5<@lEw4HT#}kHtmPkY99(D$0h&^3>ZKNfC^}Z3GmsK0YMUJ zO34~2o*oSTB-QGk>_0bNyZfjELo#c0-9_J$>*F4n%49eqz(_9hQo!Fym2&aS;WP&< z)A6TS`FV~9#-Bq4&qdv9VXLo! z3v)b@D&_NhAe(K63Je&6!b>0bYCbbWng-pXO-Ql9*8`6>+j{NZl0{6aL;~FYz7^8; zN5G#+mA=Qbmoq~~*&@Mjo42kfP^QxxDll#g*^sX-Iy6-_Ei8Ajp;CgasNRXS(|->A zGpTY8HmQ=D-P4e*An86z)ZAN5cVlDnK8lQgCRK()PPQz2({kA2^vY9SGu(7|NPNLu zaj^ZEigZuPXoEO67vgtR-L^eNtxkO{vN!Paoh>%Txv-J%GZ4iBHone*SuxnrM-C0l zAe_)qrWQfA)J`$_$9c;4W?l{0dJv^`vwRT=>wweRF=&#rRBkw;!8tkqC0Xxn0=H?r zsp6q`)7jy6;r6+Rx7`3C{Re@+*4qDAyF3ZgA1M_Cxn=v&@cI|w@=sm{ZN&Ce2Z|4U zzMd&Q>z7#~^6=FyM+1}FewBJ$l~R7S-mKL#$v*GW;U__U`J=l~;0_XP@9*C#`I;W$ z_b4C#@+F5;Ku)o=Rj`z7Mw-UQ$gJevc9#1Gexgem0Xo@X{13}0GEd{gsro@a3iS?_*6|O~s9#E8r`)(6@UW|;N?V*7g^)2xfmh0NC1aQ>$ ziMM)*M@gbiAjV`3#%_R6o7lHgROl;poTDyf6~C&jl5| z|2ec7_)((YEThjG8E}UJFo4+OfbMa0!UVj)vj;)e(ipI&MzCFm118nSc^4)&AP2)p z^|9)Gzg)5z8&mPYq8tol1-^~{zV5u~W2&p;Dn^sR2}$*QipfRuGUIpN^;;I6sE%WS zrB0M^3Q!oC`k=`$+biwdT#l#jDi~EMN*P!a*W!34Tb*idx&&BYzyLx3R6rL@Kmcg~ z2-4;EIDUb)W;77YPX95P_IGF%9)pl((=}7G&}1$9?(1ONjA>C~!gr8CU{o?mv{AP_XOWS`n32fos7Gu6@?hcUCPFu z@hL~-;guzF0TviAfDix`@BtjZfVU@kV)^*4~?m8&DU%34mxjnS$UWBlIa*y zY=Q=t_Xuy2-YcFKIaA7N~r@ zI-2F~qu}zdlRUbWo#GxU`A8LTt^x}>{hymEAr>8}hv^?5UrV?>zg%r(Y$RpPc-*O0 zH&X;yV88%E08~IXOh7P~2M7{@#7}!-%uuT}&k!(gJ$%QyF7mrFW(6Z&_rQa#ZIVdv zLq+N~gO^igR|0|rzI@MktBHT1CQ`O6bch--=H>jkynrw^rfZl+DFNPdQSRKt-6c=J zyDg2uP|o2$Vg40av!$|}B^K?BT;7!rYaOt_fB}R6sDK`rfR}>kAjt9FxATVYZi||0 zRmnC6-b&tR54C!5*}7F}=5w%~CL4nlim3;%2jl;p6_8{qYSZ*czC!+l(!OS+OX4y2 zU0=|mJeb;jK8jBKX$qV@KtXzD4#cI6!s`}8Onv&$)5=+vWPPB(ln>{Dok2R217Lvx z0|)_70lhE*A>vga$OaN>1zK~|5wdfF=gYbeHvDhz``xaZUMW8N8J+iA8Vsg+P1UF2 z^yHtrrlQ#YGpRDS*E7zSi}Z0gDu>v&ZRUaGulxs-rg}8OJF-8gC_Lc39LI4`KWYC1 zN}Dn-p?nDkZ^mceK+c(`!W&@KQK#@Zx@?Fg1+gZ&kjrw0TjGFRDfroS+I4+j{a3Pu z3*oIC9NjaBNtH-|+u!2>pZ*B=JE;;Z=L3Qa{Qfyp?=qbDc9UAdyPq{S&qDIvr`MMH z+jZI!kvWAfVDI4H{gSD*V@I|}HZSIZCsl?)j;PYJk7*BhO#|Osv~2$}O=m(^fF#C> zi&#--I4kz~LfB%?!$L$LbuynCsH%9hFkk4nXejFVDmz{~S$isu$pSk7iK}~P&Sb$E zG~Jrfc^Gikz4anyd!Cb(t5NGI2iG$#cyG;Cz~aQa{kCsf%I1R-+SDatRS^3O^SYjqB@irbNiRm}YksulBd zdPt9tX9VVC6-bV&ZvOWTFZaU2>DqgTzKPQw0Sd7u*0nzEuG$u8sd{D0>ss0uMQ|=T zXvPe}D25mN4m0jCg*$jLClQT`l`Nl(1%Wg(O{;TV>qc z`nNBSX*^h=Bctlm&A$k|vlQEU4-*h>5D9`1 z93qvgH=V!t+qA$geP*#^ z_-8E9nq*|%7V|? z?sG;x8~`jZU;rTiDqsL6;Fb9x2x60;pUi%n`Q*kgDw&2^C#wR%q5~B_Cndr4O{@2+ zUPR!VV#Hrqq*4C8P4l56hqI8mN;k(4auz=`G4*ywLNTWdB{7Bd0I!N&kpY}Nz&#)} zA~c#caTH`J z=dZ0lE&1f$Z6Wz%q}Enxj}T4)WT(Gry2J1iU3Pa(MV1-Xng1R%t1av*=^C# z16W|d073v%zz|G8q-!|{^3t`f%U0yQb&<7Df~(ex-IL|YyT3&|1jiFm6<&;jo4`JU z1K&*oTK>IFhKoc$ZjQ-lx_97YB5}#gJgI6{SN=*QlYmWK7h@A+9-IO^^XzigwUjSk z(vo}kxX7@6OMHdWI}&a@(rF%PT_mLdSYW^aLI702Fib#{kMiX$^QbInwDJPi2Qq@? zEsp|m8Z!1h9V?F}?s`9eNhiki9qj3#SyW3cI&swlSdR#zZ*;XJwg?a6P%PN^Ss9|V z7BgR0nEa^X&Bk{w1gC&>s#Fv=&n+K}18 zf5+DIxDl3(?0E52&wV3me;6HepY)^{KdCRr0!_!pr;>9JP60?3;tbJjG<|d{_|7lF z-HSFR^E0rspUF=b9+?HkL@ojr7%+ek02MF-6A%+I4T7kq-|Di^^;JJ8xPxrDT$o8= zt0bMoCck;A?DaL~wDTjFG?k3LVS(nKTUY!YRhc{63Ko@mkz;H(uPpHz{3gC3?5!PP zAFZ1I&DWjtmZES9@Leo47)r2RFp6$`!%1dxm_Z$KaM&UD!@MPy6@T)UCq#qv=BBRh zUMYP|N@zeWZpj$Seza4L+NfPdrHRNQ(JUlRR%$sG!;>&s{?(I7gC^EV`;1U!u6s_6 zI1`@>T18y`PXQpLKii*4kMw`PM#98I!i0YL&!_)21yTk{=6{TfME&RcpnpDGZhsyi zA<6xH1p9dTr$I<0ut)#v^Pj<$f96-pK%a+w{^#NU{IQpRqstBS&xikTLk;@Bf`1P{ zjs}4)zZr;(VjP4Tn>Y-D@HetOX%WkP=JYOIu)ijr%@aTD?ke^mYZ+W;e7Qda-#plD9`o5xxA(K=*@1E90NBW+z!}5%9=Peeghnp2=_ZJNy}Rt?{LJ- zuhHW%L`5tdN;3N-C&5XwF$15467>`PGkrVj({*n<6vEVRV|0DBH# z;Qu7~e--Zkcc1%9@@o+2@;~wNEXlacB@l$>2-_H`$fTD*fq_S?>Cwa1h=p8(;s?J1 zhW4x#obND$eOu2xh!cXOuXap)GxlHV$ra$2GUnk>G%Z~}Hd~r7YaPgpH%UVkkajSJ zQvlbG6ln{jFCQE0NFFuuR=!KZLb)MUAHbAmFnIUlqa+r<0s{sR0-(#%7)(HX5jhAV zHuOm2b!z-ZUe##vrd?+x%E`QC*{v4`&8QNVB6t;;;A_~a$FIAm{vA;C(z0zPKqul8 zAxAM@Oo@e??Ogf1SHHx7DYZNEm}qwioC0LXT|-&4GOioj(`k?1_g>7Ga5s++>lGjK z9_+1U+~@=>Fkk>704iV{CLp2eF$nUN5a0dgP(!P{*rN!^_WivfB{vr)9BFT?uZl=g z1P{u=&p4{ThVgu_x#|ID@sd;mw6jsf16_JTCxblh+qdr#Gbvs)oMgl%Ei#Y5DZnb2 zaBXM-hq%^(0-L*-IXj1bRF0X?DilOQ_%bY$@EowffB}R6sDKHWfW*eHAV}=~=Q<%s zi@Qkrxz%ky(O;n!TQBhOIm$Y)E>5Eo21~$_{E{3CNb^xw0wmgxXQLL8SvpCz@ms&Q zh>re_<>54#w$QK@k9ILrg7=HEAfhTjg8ijb&>6{B8@3vBbLie?NF}_)La21I`{$#bwmm!gA^p z7sDm77rZN2=|CRemg6)2I}Vel7r7-8u)u%;gaD|3DVTudf$JbhAL+T`9fxv z+#JBMSS+vr21x+GHtEQ{^$2g57Sr-mO7R>h!N+=A^jJ& zzpn+RVFFUdM=mFI48H+K(of3vnESBAbH-N>G7)-ar>Z|Cv#ps_k>Gv{CL6uwLMS%t zchv(X&yw6<<&?LV;u?yX3TB_yXi9$#bjM!X_bIB%wij-cJ(wB2hg&+eOaDp$`E!l;t54JJM_E*RP>~E-gzMb*H8NO? zX{VgV7IbAcrR_Dhj9;y3eI)s-D+$rlA>=5@~m)1nh zag?m+s~bO5`x6pfL<$NY%Rcp6s($yaQe&*p7Av6+Apk1i+aCde$Oc?NsIL#^KoCV! zx?g4dkewSGQIEAkp11TTB7M&d^*1UKnNRU3}TafQ;AkFf^GVt$lt&`f^!N);2E;u!zF>35wBu^V?*)D=p~-)66BqK!EU zjz%HNeh_!{eEMC$_SLntxtWoK4~G9-EUsS1iu^A42!bmoPa#Aw@`0*RFbAphy?N?8 zn-}bUB#$9{!k%0H!*a}ZwWT-xf!4laPmhSvrkIESlCKYi9R{VB6gGC6jWuMd zf9rN{>CwZd!5=AuE43c9kj>*~eGlb=6Fq9t-ZImkDE_ya==$l97yAkscGq;=Me}Er znSJ@WL&^cW8ejl{9*TYr*7h=x=|Pb8s+=&cnvL4;Wc9CTKT3rk-rKT`3BCQzjw;T= zyY5yan3D=A)y!bT((zWr-r^tS3HCs;ZSAn&T*@oZy@tD3>ZKNfC`w03CP6p13_Bk9;QC8 z?eQCzm^^%Novi<+U^x`Z&w;l0h6nI$MnzGHEfSw&Ou@$KsR3#w@}B#L~6=yw2`>o zwFN9NU;rTiDqsO7077~Kf*hRh3F@d3y2uq8?9F`=0R*&43)jpAIfo6W?CgA5w0u~rBfDix`um}^7MIR4>WGtXQ;*KmMEQsz? zzwzUBm4NO-*8zjV%(a`5G7Bj`HNXN1FD+s|hs0h9&^t}>pSdYfQX^UZQPQWUUO1NN zc5Kg6rfax9i3!d3qu}fT%Qu8reSAF5vi-a!F-R2C4e$#^)~&xz7V|mO@}CPG0TviA zfDix`@Es-~n@bf0c|bldREy`?!bDx;NAXGoNutQORsQ{Np+X^b<9AO`Rlwqg6VhZE zKRd1jaBn(B-aZw%eCsn11uycQnoVzscAL%?Wva?Ba^%=V2%G}q3+~=>J_(}zVYg7n zzJ4G3uBwe7^SAj|Ch7jBprJ2Qrss29)NO#j;(!4}4}kW7 zC76I**&CM!!X2{bRk}WRad7MwQ7osj&BkJvuT9zdk{!OotppIPjiF|Gu3 z#>PcQovgY04C-_?zQms`_IZx7m29Us@32Mdpg>9iXAfxdBiHUI3PLeHJP@VdyJe-< z6Y%)axY?ZXM?C?%E;=E=0s{sR0-yqxVFL10*+CFqlNXJNXPE^RGEN+q@?&Klk#ve3vBWyInV~Xrb$n_VG-Kdvs=d zkLD%e6i{ZgcG{)>sM?@m=z&<8PuqLgs9f;xwyPu_!+L;3u7%+ek02QzT6OgZ` z4}vfoRH9#>_=WN0Je3M9ORp6o85?V@`JIiWCX>rMm;E)^54_y+UZ9WnQo!F)l{9 z`vI$e1pFCQSzw+Ig1oV~AjHJnJ2{ebH@O?~LaJOT>HE7KZPlpVy$b;`Aylx7I@u4> zaKWKJqbk3{MpY8|*e3WkKS8=-%$3IZiZ!xV@zmw-sLJR3Bl>}0F2#qlzmHh34YqO_ z1SLxk>n9vl2u%mEDrz8pFU5tvV{EUu9TVOem$#&8D~j+D+tH3SJOyPep{9<*jy`6+ zmXA`?a@QkvK22<|C&fycmNn0u%~PRV%ssDB?r?_F+Ix<5cZE9sl~#h~{PJVrE*TbP zDSG26+b%*3EwkUTHvyXoU;xo=pxtH-)@=$Mi7rpV+;}bx`h{+&ht|@&MwSs7aoy1N z#c^0Fr;5sj^Va4|@O|1G22XDj-K+J6@72tNtacRZYm!WsQp;JM4AO@c`u0DN%&dHt zEhH0m;1pn0A19)1h!iMH7j`$D0#CAjHTAfC`}GpNyv35I8DA}6fdK;u0Z;+!FabrL zuR#!{(z`@vBd5gp*2~?P$zRa+cyfbm{C%w*vdcSB3hdXxuCE+)f6XwPUI}Oz_T{gO zCP?{2>T%CvJ>gd0L9D)Q4i1UHH~%`6I|Lu#6d?FC=koR|x?)qT6E_FtjSME|bDQ!V zU7KA;R+yNC3S|Kc3>ZKNfC|`v2`CO$0739bsaTzt_4kCHPp?WjojT!^-5BGuEQ=&x zP`iPdDy0I}53Au~2^u=IdV)8pV!n=(oTunhJy%;9n;7LojH^ZZFKmBbb!@`~lokF2K?FQq z-Jku+0^!*BHLnDEVbX{DwKd}g*9beFzG!d>TnF26TiE6c*;ic&C_Am@P3Ex}zmu^q zpO#MUVU2b0yl4cZiNxytt9|YVykqOHJ=>a>iAfyAwk#5mHv46{;r8Gxx31(u5S=mK zBlU$E;IBAf0MP@WJ>VxyKzS_z2*SAkbpDInlbfWs+efiyO(Dd~&*~See$y5+9e!-f zd|n2|{cgmyvVGg(NiqNNh9N$H@OTiKUa-1bl|lN&#V|5P`R0!)CX8#zyLx3RKPEofQmMC5CkdVkSAb0 zHHXzHVzu+l8ABJ75ql)*JZ>(*)R!Sjj&3j)yQ`F71?s==KzQhRhGK7MSgnoj-dn?9 z5op#M#-r%low2^2oSRJ?P5`HXpi!bVOzSYhN>B8nrx*{gg3TYa5NxNb(+AA+MRAGv z0~Q!CfDix`umcnD=5z7oC3&W_nZ=3Zvg(vRJ7z5TY(a!^U-^?Ws7)@Gyst02O@Qft zlc?aO_Ih0QfWMv0 zrq@PQBM42}aP({r~6(ekg!kg(29>nM*YNkCJgT3%b<+0p&zCQ63 zr*!Q7*{eQkrBM(HQH-9*>doueX%rXHaB@qw#bPU2FlR8@#nYuV%T&%apOD?o{|ysouAFB~s=7w+*0--nHt3oDZ&T`-M_ zpWkn5YY|MP(>9Us{jm3HrvrcV=l3VWX<`f7-#2e2F|H=^ZfYs(KihX*PwKh9rbY#) zfXo12a^$f$yV;gD(b!pRAE_H|wha_7Q#LGeck{TLHUSnGFn|yM6|fHzP`&GNd2hD+ z8sW*=uC2N{BgCt6l0Tx_DyoQMCZ;Uzpz@t7k(hy5aho6p#6-WY1jIb$`SpyzKWAC@ zjv?|_>}@R8Zn}QFRC>1+)h=(R@ftVVfnJWQ|(rhUbx7(N=iB&i4n^l>H-*J^15Ere8u5K{EBCT_QQ$VUr zA&$^SkGr9L7}-M(epB3n#~j;6P8d^c7ANCRXc6~k{0|BY82KyU5GJ4w_ZA3({;H6% zf{rnrhRX9D21?zGow!9PT}z66{kc}mwf-_Uu=ztrontnn`YQpDz{7y%Z1ZJy4zo?> zEXZ9oe?QXSWpi>Fk~Ixt=D*-Q34Wb!HwqKuN!#_BqzB)gev+hVuO+O0Y$`^NXD(@E zqfPWpf8X>T_PHP7XUU zeky1)KEYT)9!uSLZJ2WRFq~nwY2ur9JDB&ICFS%v*7Yj^4EyI;0-xTa5q^A4mkAi6;;O z78o#q5C9c$0u#_6)DD7_R^Ff$-%!$gV8d_r+X_vxjGOR!&VUd4)>@>&M#o?mSm);o zMzcWn=#>Dz`t|BO54s@3AyW%{HG44+nd?UK2C)lg{o#3ru3rz~6cD)D(A6V;qgAQr z^)SQvU|63}NTVNmEZN??H&=zo8VX>60RspDPywef0q^9vL6DD`N=&Fp25<7Nvo2zM zwvt3LqPLSO|J``duSM~_M(qh$0Mpm{h(DV4Nlf;JMK=s=+(5XPG3*o@Qgkg5R)QN{czOa#UBCKCh@7AWlX=`Y&vM z_XN*i0va`HKoE$+y3<->#-or7(tH$!yaW>9cf^f0#+_*XLZX< z0e?qTMrai0*)asKOGO19dpuWaYYa;5m<~Im5%

nbUZX{hpjpZPUAB$I%G; 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 z z*ZIV%s(j9n)lu7%tgL_T-g7&73~GX*2EYYek4v=>0gVVi0H_&@r1{uEDk0Z#K^VXB zBK2vQZRK3P9NMmyS!gO~q6p~CqKl}7vHj|%2GmIC*z?((f8rntx2)JWzbsT>pAg(# zI7@ZlFx5=OZijIckR0wsXKa!^ZwP9Mh!6^-{IDtF=r#GWL82PtQ1(!Z3TlF(2EYYe z3#fw#XnG_70DaS>d$c!S`sTb=f}H64GzJC2?90J*Ox>m`k5{jhN3DQZe1RXnU?To& zhC<-w+H%Wi7;f_mW$T>1Sab^mm)zMUN-Jv;)XsJZVOW>+O}O7#*L?c%LMKam(e?|VT4b%if4S)-{7Elin&>VyW06qOxu*w~#8NYcseyVmvjS>LymwoJaM0oGjW&P0t;Rt>>U5yE6OF>y}5ErMM^PkLL{ z!zhXPa$u|h;WI6qbC(a1=VqPp(Cn$m9Um-}l2%r!N8^vgu?<&pLQOE#0Jwl_0SyoV zEghQx5K;844dt~%a`LTNPZ&QM63zKlJz# zB3TCM(U<$IZH(ZHIwSlSwyQJ2Mu>nm^xpuG_RqVVzlPNLRr&{Qc0w*+beZ;sGi@(Pd!EtOls{rRVI?l6yTuQ$a?w? zMgexN<>Bu%wofl}b$6yD17>0e6S~WN(W3$P^7f*uOPiq{;!p$NHQ>4iG(iM>lBWb; zvB19KDzC-GQB9d#(k$lW?+!?gOGipwj>7#Z9W*|~2*lb4S}pJu%H0S6#IC)HJpi=R zKi%uh>G{d9X1w&O_}5AsiQC}wEWA=!KMN$gW7<#JK7Q~O^~pYogB|L#UQOPM{;wbV z3ANSw*KmG9O)%5|xPWT`%@6_YuZ_SfI&+AQ=98M~NtCs$eZ~GrFg8_c?T+}3X-L9+ zdz20J0!U8JxK6tz^#&~9s$Jy=9!2hz)waIqTp1?&*o(oo=$g^1zhgTJ}bJebr_-d9CTDwYbfi!%8v%}l-)Xu~f)IULuj&>x40!X|G%MZ9JzV-{sXBUeyz602-}D&@?h?yJsTpFupd95Lfs7<1o# zZ{9Z4x2(`^2FvbAmqccB{7@Kc(HqvOH2zlQsl)zhJ)Y-#f4V4}?{XNM#C}bV4MM8( zo6o&pNow)NF(4%z^k!z_7R}iM8*eoE_NZgBxz803%ow`zXE1WfVhhHUwm_O+!;Z(< zrk(w5O{eCGlzkbc5Iz|HAgJHpMLN^Idt3sU2QAq?1|+@rxV!tHP~us&Chrkv`igpU zhS&Xza7E+6hB+A3FQOQ^278#*j)=TL?2F^vT^!B7L>0y!@8)DGN($ytT zsl*1=cy}K4<{SHDp|qj`sQ`n>m8-0dHv%4Kr}Tcp%G_Wqv|vZyFl4YKWVPe_Ublho zr?aT`dp-b00shBveFv`-ia2?6f&@1I+^=`TBWF@(9Zi-u)&4ya2LD|M^l=S(#MQ|6 z2_m5DZ3+NXojwsx~ts4Q> z!}1^RQV^Jr1mU|z@5vcfr4u+Myls5z+Vi03mzi82i~^1+G%}54rr&O5vIlD~FzdNd zW#xP^qOtv)YscbT&JDj-4|;x~M_dVLhY0ANas_~_ls=`CCbU)DF^ip*w~o-H`5^W4 z-L7iViT2qOlxgADK+fk;v;*f@9oFw*9Ez1aFbXiTsY%^$)2w?Ont(27^Jr{MQhUW( zC~v*IkCD)~HUZwQ68aGiJ>secbU*}rH4XrP1m0*HSY$mgt5|Bqa;$#A%8l4j5MPuU zJIz68sCpvf3)FFxF}qc)eR3lpmRDO_Ld@!=KuZW(lD*T;&WtWG4KANM#jTmP?XAxx zFba4^N-m>lZ0He0y)X7UWi5S#3G4JUYieQO>~K|TwQ3mZAr3VFUIVUcz!!*szO0V` zQ1Glgqdg|+ElXwXRa!!aXE;cB`I^SfJZnm=nZy{Ze87j%4o(V!8b5CYh}cO)-10)* zta{t;y%LzV>BwG$kWeWJ>^ievpr~1ab6Qn@yd z&>ABXs1q|8{QNvj_eMY@4M~^oOA?2|I#W~2tnwenZKCuNO#T%-+LDFNBL@~R)_|mG z^tI@W`Eu7l!h%xJ)H3qyT~z~D{2%B%jRbr`k@!#(3^f2Q;95WzM8F`6CwTe3AHJU2 zTPpf!^miV6<+hm%xf47}MbVj`dTd$rE<;-ec!yW(xUoun7cAhaT_r!(-Air9X2NWN zXillLAoFz}M&_YX2Ngn^CP5elL<;V8tCuD}u0rsY++6P34Z|%tI4gdD!@;cJ zUBQ$e0UDqXA$ce+VjZR*K(dm%_+UgqW^kHMpKmUep_4qayp3(P@^byl^E*30o<%Eh#!<@0SM4fE z{+R{^zx$1k19^g9sN5@;QCmd6eF^#w*_QBs+Es>wJQA6Vgtsp~<>RR>D2M|WkC_Se z*t6Q61YimjDP{aQ0m-aAH04SUVg;Ic-f#JwO?Zd9DyDK=J-hiMO%gu|vN&Y=@x!;s zZ0q~m+=MZ#wry(7`ZS)A9~57C$IoZ7d9ziu?ZAjlrq}>~*H$WqFAfl!BvbWHRjHvQ z48UkUT7)|!fLdG%wVFT;fR~%=a?=ATH^XHW;Ex@|Tyn)F3fQW5E!ejQZutcj)imiR zxL7zJz7uUv`Y8=$s&`tQ9HKgXq^g;xT z{PqSGu1S?GHz$hRsizkQmo@bjcy-V+H;_{ICmcSW0$)#vFvRRF&fwqeeus+HC>hZA?C~;f5==}!o`i+2IlU25^DmA_^ zJ%SGto-`l1qoHbF}Hiu;{((LLk)lnxE9b45irpj1po<;o2<`_H5@K%PqJq+f6Nj`iqT0b)cjSbI8YUk z`27OtZZ+<4B&UjVBY^w4j8KhwO$G`3N@TYt>ZJryey0{FkWq=3*Xd^hx2r9}_2c%Ngg7t{np4S)-{7BB!2FoiM*01d^5^+(mN z=zS)+qdqA`W1iB}tP$a_ynUf$c4?BrCIK{hf*b4h7KnEvK+&(!B9lDT5Osn}JC#A4 zdO+-5I%;8)>);ea`%j_+Ul?nEz)vwG4BW_#C}qvVOq#BAkdy`i4@Mjimry39&0bo7SSbKS=W^j5eUEO|UpdsWL)C5BffD5=5Fa!}W6IluXrTu7L*}w=+7p`8A zZA5hrD#oH(SzG#I%M+i2d2xvO3uy9v5t&Za<6pO99D01sH8M~|85r-wu|ofi=Lr&b z$qEi>dSjFwk>Z!*1Y-?Y+g1)cK((Jw>>1CSmBjZJ@gDMOtkzQ?j#;Ye!=SH&nqa5_ zZ~@l>h9LrGhvmVm=Be&`o@NbQMpdotprrirB+_|W)2dqW&9&}Ja`czYY~XF-WLd?> z1^--(f7PxMsX;Q0Fwd%CI#dMpg~sz!+uT+PI)jV~9Ie-nEp&sXU=$$K(ce^x@cixN zCj*-wt#r*cU2l9N=Q(Yx&VR1^^@=ltdN}X*-a^lao|RP5kku{C8Feez)@?}ABPwM~ zJ$ZnX1aDV~0Cl^X4;c9?;Hq8acXAW}sMxZI@Ez#`u^luP8&7p1!M z$t3eT%s|Si-z1icJ)u|aDoLTYs|*8Ws?zj)7GTW7!$bIpV4SP}#gsekJhJKGv$2Oqqn^NO@r*njA&}iiDIg ze{lIM=EJ+Zrm$5xeqj0=ob~qMc|Q$^%@@EOftp~b0dN7=0>&T$=0U^YHdTT9JFEHO z2d%QVG!mq~JMlaT*}Bzj`6=R^)p6_>s(GOBkPnBefX25Q0qo`P>hBlbZx3N7F!{{8 z@o`&waUOGJ6if!943nOqi`b4n&%->+ zgPLHd0dN7=0>&W%ek`v5Krs>4O8!pHrZayyB14drOelsrzGG;`V|aUvP(O_Gp8#rW zAj&x<_%GcEu(HP?bo#dE{Qgngv(8=7`{>zR#*CP^Kv)be3Dni^@nIA&z1+K5)TOV6 z{=M`gw{)wv?+hZf(&L6lb6dB=acg#%pe7h<09?SefC-3zMK%fmD1booK-(qi4t~1p zD`o6`m0`n)fhV(sE8B=%#HG&|Jb=E+d8|7MJ%h;Kw{iY!@^+|%q zT!n!1cSmeb2TfFD3XB52sXcCrm7=`w>x=X9bj~;69arK{joAspPFd6xOm@*Ys0oG| z02gpAU=ku=$a$y2EwtXG3)x%9xIGZ28I_2FmZxXFAQFWPn&qo{!im z8NS{Ks7iE8co{J!o@mA)M%EgAC+B4ER?ZUH*jL>bJQ39QwqO*HD%ji*FizN>cIsj~ zQoLc}#I9N9FshF;d9;(A%bkY^HNj8=-~z4%OhE)JSC0cg11Oi6MxV_&*vEx(>^bo% zks1vtGYUR^lsA{#bg=zK2}HKH!!`54rM(e=+Z*}41etT&b#Kf?s=kHTEF3xfnPg4k zS8=yaslK&4FbY_jr1p^>e)zmfmanqY8ed4XAzI~ftfMg+H01huNAM5S1Vasg3%C|A z4H2+%Y6@O5>28p1o|LH3bOFFObOKZGbO6vxL+jt2cO;3G=^L{SbVl*~^_-`$^+v$z zS1BfI6xn3ivISO5^}%EN8tt4 z_uT2-20vqCj&3jh*jwM%76uq^j*1N3pEN7ps}FBX7TLSaApSuKXkR7uHs=@1AXvavyGjwo zL1_+ZfWe;G0snJsgNMFoc3ek-C|JBGeHn&JI^(2&}#tbe1AGk9+_7lJTt-` z&j>9t+gW~pwJu!oR**ZdLKDI2!|sy(a(VvFPNms)-cO0e8)TQXubYWh_2@w*!=4A} zo~h|mi~-M12G!M4#=}U-4o*>M_3Ab7@HZ9z3ZO**Ts3b*fNTKBlYhQS{`)uo1@yJClQsjg^JaKq0I1@{kt%l6cQqR88{$9?D`I^mU7E)@<(L@ zmdD~}N*jGy^jl5V@C)<7jQ->8%H;PT0C-Q}W`&zX%>dBHH!3j^IL?7jna1{o=Z~aO zJN8e-W?3?0EwkPk2ctCtdE<{?*>CyU+>A@JZ1z7st9~O&P#iilo0b+#-A$!AIZ`{M zP`Ag3+VNq5QGnP}rX4dJ{MgiREM{uTb0?{A)OW6HWb3JYxl2Rg(p6B09jF2Dap`(o znu7@Vr85rzCE5}9hxE66y-kJHQ=R18BudMC=s)M*-R>q#EzEsO6i8l5T*Z4>Ab2An zTD>-Rhfa&|fapWmq~Dzg%8j&yA8&0w+N7Ov>wR2!52JwJxlAi7JU=}`DN;7__dn_g zy~Fe@mhwXbj)i|4%<{<*MGH3xHgC^3^WR!mLDM!6`Bxpbf_tC0t@vwRMOqDQC zX&ieli~>YROM&;M$;R`)sL#zL)gewJ@a#L{?pp7bXgGaJJ==$xV5k9b0oMY4Km=?r z`vO2rzqiWpyy(gO(6L{mrMDz^Rjr>c>;3*?Q#aIWut?AaL`m3=C?LQ23ru4@hJsyrr__i)E3NTOK(8r;RMO&!ESH3_$+?V!=Lf9av zq4iv$2x)SCK>;j?Z0VwsdT_kldy- zEQ|+0Uh6;E(ZH=O{0&8fvPiX_^_NwRyV#i%h6Cs+F~QM!n&;Y z9@_jL^;A|jiJ3%l6)Bw6!0#Dc%2v|!EQ*ytMh_}$s0oG|02gpAU=bo<&-o1iG|e%r zS!wx!r(HMT8;W(roYLOKvI(V!9cGLiTEvh?KG1?_E+b5@m+D5q<4VQ-+~-JVBezAF zEbinhy>l2d)8TwBqK&oLOu6zd4aOQk_p6Q&_h6$y{`Hq#w(0a}9%AF3>{lsVpgIqF znO2rys0oG|02gpAUZ8?0B3#8TPKfLh0p+rdudNFYA02pCKze}T)?$}Wr%rA>lF*ksO>>T7dWc(I_Hgcve+*G6~l>RkBakJthSAJP1)0- zCKze}T)?$}6^MX8GGqXdpav+yvnHmyn<1_S4W^`MF^gxlnlZ1;{|mu@TnILY$)>thY!ijJuxa~Mb{UeUQ9}% z%2kkU3XTPp2JSW2{|vpS{M}j7g5~6C?vcxHP*LyZ-jvO|FZ9^`Z~@l>e*P5@h^V^} zgmxHp5BzZeR|WCF`Ob3UvKas6{GXTd{ToZ3%*e??nVwl|6J*Ljd%h-f3zIedt9F&- z|KHkGrZhQ|+C+VKbnc6;cSUIOv`TsP+d0agO1PxN+ggRc;lN9*F5GtPJ+^yITsnWE z_1*NO%1e#WwZFyp zCO37V?RQN+x*q0IHi0H9h9{A+WHJ|>#(K$!^&hr+12vk7o*{qz{_#e@uZOSk zc0xzj#U#W^A`5VFa!CjuVs*0PbiJAY&6dTN!zkbn$ewGj1W&p9MUn@f{*Ha2#*ZV> zgc)^IrLAsaWiDH&35FT~7jP|L9U|b=oCv(Q_;Od#JNG`$=9KkHGDe2kubCGZaVmqp z*l*}cQ5@MBf$Ageu^&et0dEAHv@TF!`gW_C4!ga{$ooK1gijk>0r2;^q zyX%5v9@L>_G~P_Tn;iVZCd?tdGFJI}^@|U9t9eX;3j7vGK8@q9Hv-bnF=pbGI)e7& zafUeU?1?Koa0dN7=0yZH6&iADOAkFqaO9|CS>WhZ53B# z06-_B#@|LYGySRu5#D z(*aP1vPI9CX6%!dcHSH23@a2DAxb@Vn&JenA9WieQ1~L5bfzuSj|m zT1cO(yI`EEV^sNKHEux%OSbzZPR@Kz4G>>(81v%Y=ja;&Y2jm8z!m>o#+`s!vM9%e zgn)NGp}I>Qy4nNHU0%{zFxCLXfIe3|3SY9uqBMlm!1_{co*^6TUnvB9Nk@POB3e37 z6AU!~F5p_g*0lh1gn%t@o3cNZrax)Md#ra-X_ix))`Le<&zd?KPEb4;f{9Pxz6J6= zi*V@?3(taW_ zZ-DXGv^w#9sV{-NG9Eeml!O4NaOD>KcOeM>h3)F9m~Dsv#GV}h$j3Dj0l5-I*~ZFp z{<3tp@3LJv^mX!~DeLU^O#kGt0MJjmN}=oCkI)+dN*e)KBM%8Goq9OrtJjx}Wk~>2 zm_JFGd9yGbxwdO&U=+}5o)_Pt9^y~~ z;5Fd72JAotAQKY+K!d~nj6v_Qh7J|~EDbF-;dvALtWL~-o;3FUfR{0m5en4M`tWtO zrJ5Wp;Hq8au@fjz#>Vi?<$;&sSU-->#-4k676$UFuEl(kV)33Mi~>rn15;}$98g6+ zsdW+gsk0>qtF-y9GTe%CKou9GF+v1w38%zli}(^xwvpHcOFv;o>)TYwth1D_x9w4> zk$=H2@m zF+#4Ly52|VH&XOC!-k%$z+G3y<;KiUd>|t(W`Qlqf(J|NWIYqFAFjNee1SkO+HmsY zajrn91$P`|`f+o^|9lQlW`1ngWc-yob1VCc399VY`abAt1%d{eXj)C+jAZF zmcHdl3Vc1Z>6^1AH`2+ii1QugAgdro1Zp*b8UQah*X3ppQf^SQ3jrXn_x3|IoCOc0 z8Dt~A%wPu7&z7vu+9KA}cu3*#jL;*WHWq*wD6+zdERM@p@}38wdc3hF~TDWgiT z-6+92u^22ziFsMk?Ud{Xqkv_6oP2N1(yqATnhl**Vfm&wE)_C~mnG&$RtL)NfhABA z3^f2Q;99^wL;%_*BY3SyJFgwGlHMWO&yrEww~p=vhqL6rw?p<4&9F!2yNGoH%9&~X z7K$Bmxe=f&&Yd5be=E1SnCh{*^qt%5MfbFd_eJ<+#t?h_<%MCLeqdII0b47>AwPHv-yc-=>dzl;-knROx&3;)&*v?CTd^ z!pxaSPHdA0uRbusSObg&(XjSydA}(8Yy6HQ`EhE2KlZ{cOaM7JA9=%J`xg<^1Vasg z3%C|=01<%c;|u_mlZuRti{=Ybd^Jp8#$*;VKD)~FZDv3^f2Q;99^RhybiFPXM4E5#&Lo+D6>DZT3~6KE8w< zHk&l^0PTinnPybxw${BsDQgB<>+$oQ8v%F@&njK0KmKf{SFzDD611pQ?M$OG%@^@P zm|7y+2EckINb7@KBtC6!^(?-R!%YkzO*dfC`p~x8nCS=TXekA7LP@R1~gQy5Jct&Mq8$q@4;9Dh*s2(i5asr+Zv;^1T3=!gVA4> z``H+^1>H40EXEv~fqIBT4S?5x>l$zb5rC^B3jpEppf@dJif!QwihWpUq)ntrI^25j zgR58dZD`Ms{~(q*Oeu`NxM1Pn?l5tW zChmt(z`YuZ%t7HiD&^?Y@_6%8`%(Y0AFTT9X3wQW)CHf9^FU27)Bw1EYXQd)0eG42 z08q{|9tk0HS{^6iZ+ed<+K`N$KOqoU)e(@fl_EYluQdfC#xC-&mR$U6&9rtLvh_;L zg`InEau_468I;mk+RubrwF~LvD_?;|; z{HwCtovan;^O{qQJj?oC-OCKJTM`m~fdpUej;&lgzink9CCK zV~fEkV6(_eZBmvxwN!na3;C^qNh!MM3ZFZ-m5id(#r?550O+FLt8O2YvNj{!;JvMf zRJtnur&g5a%~d}{wELp()BEA=DiNS=SLXqze+B$)SBXx@#|{APywAwOmKwElr!wv)V;zYO$yVl#`@Ix580SyJ}Z?3wpcCa8MIUYONc#2}_l@|CnTN zl*{4@uOzV5B)j9A`s;w5&nKXl^1BsiKnodxjp#V0H%neAVd5G*9K$}W-;ym`?}y)9 z0BJ6#$mZ_j-Jq(O@+`eE!ZdhlLvO&|z>{`Ud)%iy`v^vFJ9}o~slN(K3J5Ixo>=i! zC1ltV*KpB$ah@G*rC1ZYK`kgy1K<_sy5gKcDh`oP6#%qd5UVB^)%DfEl5G9g@5^Q- z^^tH)O1Hdu>W;7m33LP?Mtcb0ypvn==B%SI^w;JQ2E(ilCd0QcR^QcLRrN*OUV5>) ziX32gnFgLJyz^CQ^?Rq`tD@j)%a312DMyGN-+mMBO1zW#=v;C%UgpjJ-GKpm=y(zi z6xf~5Fl=#+n4qZ9YQzT;50;?myZJD?cFV9pO)%5|xPWT`=MVwJoq7OJvUrZd9R5>& zPU2aQPmC$Lz4F0@F~%}(pH)iP_RMxTfv(E9XnZe9OKt>I4S1jus~_~?bU2>(%@<*B zAUWnDgS(Y2(wX-^;R}2KqkzY$>1vV=-~5NnvvnNV2XkzZ^FhRA1P(-$OLn8_g1Ar< z3^f2Q;99^1L;xuvH2~ymH##Jt!nuIgM0rA`B`1Cm-gRhYnYVuON8k&cGP@j5(LRNY zbZ&d#MnE-#KL1ddfWTVbW+oG4yQp1K z{>@tQL4&Gu+p`CmX%fj|91nH9-$6|<)Bw1EYXO%K0c83J01)FE!tjePmJ;F^@{U5} zE#BiNb&Ka#99=wfXljxuLK8q&YB!lUg+1OI0UBS6K6#Vk-`an4Yoms^=vaxe-za1k z*Y?FoXI}3Uj}90G>_=O+2-qbRC#HQ)lU4e4+NaM@7uG@GH8tu?#Li=^1vSA?1Ka115K*pUv`r^AMtM^tRp@g|xnNHpp-3mSp zja&lK2^azvy&DKb>?eYY+8F{_1gNm)8=)T!dzL+AMy zv^fbIbTAUY@J{9A?Y7V|cj&pE(C0NKvJ(Furw@aX&b9_shANe>p%xgb08YRa0mu*n zD8j(s1{qPm`c0kL7P%$Ap?N%fGnPo#RCdE!B^-!%PCL06{1|wDh11Hd#USjO0Pi7+ zd`e=#T{i8Ioj#Ig7QW7GF?F?6M!tM5{APESIT#7p-+G`oDn}LIX6jo=XWl}BKFIzh z9?#3dTUeIrNL1(n)B-~lzzMh_00lw-km7n`G@1MT&2)(Bo!;?{- zl$MIGM6>XI^fge^@KK>()cqG=0xsh!3;RD=-J#pAC7}*mBv^kx?E1sL-$I{WRTO`Z zLJM#JYiMz_&nv7O>Y#C{&Zc9v-HHbz2^a;W&6F9sS`puBGmk?+Lwo&!M-5%fRd?Sx zlc1tAS{LFkYb&IbhORUyPkH!12Ho2dTnuK`~KO?Hv0@*Zt!WJ1y1)!hVI_}rD7#6`NXs@u+)k%?&&eewC;rBbnxS|WC0ti znJ_U_+tA8c!dAqzehIi=d z?bmaG(Um;RYnL^wxZ;H3IM6s3SvU_e-XkH1EPVfjf~H55u8jrNbf600u5`sD+8-tX z;pjBh;9th>_HXlk54Z?@_pOaSXB^WonP6LsZdxuC0hd)X=`=kasM4Aj;Tc*pblop) z4$7G7DgZxI*5G=XoKUL>*C#uwt=VZJjb7xCJrLA|k$~@(<^qltd)n_$Wdd^5+1KW3 zdqDhmI81Df`_9rabLXHI7^(nHz!d@L5CUk+z`u?MNaO^znYYYmUKnK=;vC_NA-jC8 za@)`R{Nfq+j{4p(kVQl_l~PE2>Y9MmIC=vkT(it^d`!TnB8vI`;&+}NjE1aFSqp=l zr7d8Mt1KKZ?!^gX4tclPnSHLK6BkKRoML~AD4hN?*Nfa}2O+2hhAMy)a76$HgaEoD z@C+G%dQ|3WIqjNKt+w+{<8aLGKt}+7G4lyW@jmIQpkD>hl%X6e8^_f5ngH*|N&B?f z1hRNY;GN&^3Ubi9JeL`rkkXB{i zPfeH48F);J3SXuTKAHHxZkJ~!H^KqncLMhU407OEa&i=DaxHm@aWMzOg1!3 zFeZR!%C;{QWiWJeKhZn$)~{9IzUQRCS)0VNZG zVTaH6p0OQ!c|1?M>o3f)&WZ*)T08 zoEBz|w2355eTy5r73DfN2suTb}Yo{??$PPKE1k+@e}m)CmROh(eF> zXZyCi&=xB$nHC`J(Qt!adF`!h0%$U-{YV|VU5Xvp7nFMn$9C#*wf3KyQhxl^#Fgabe36&}|E&sa-2d0@vKPP(2Y}xR z+zYTUgICP(sAX!uKR1e=4esdTC(Jg}AF5qCG*1;VII>adDj&!M@@LFw(T`43UlUMU z$(?A6|M{2V<5V_rc5`kE4_+l*D!=(PInjCl#h5-A3FyIA_#nmfUGOYQ=(Wg0qAxk& zNjrsgI;%aeXEiUr+ATvp#Gwk{9&qIWI1mC@-NCEobW;;|0;@7Rw&^Qxx2G_c`l!&d z(A@Yg)$yr4Mn)(W9ccCNEzdZw&fnWB9%GNYpJfu+;6<>j{_Jm39Xa$i)SsT-5vV8g zji}ngfsp{+8V1Ue(+(_$jIwd;VK?sr%tYE!EHZn}p+ z<}j=WEVm8TFXJjH{#jgQ58(cK*1D^C_EQa{RMEsC(F?~}!&OwOy0-8K#>Q3!W3x2h z7Se59^6p_ClbY#FFjN--tmQkHrMo6?KHDh3mqm6_keredCcXuFffVX z9QX<`Z1=MliWk-^@d~%ok2oW_`lwhYJCsHURJ=D><8M6{#Kw|1)%z>1vJy=LQ-EM5 zy5C_gebDa3(hrtzFJ=ecEEi^4A~iAx?tyGn^ncUIQv%vc4g!`n!t@P=Nk&n_f2fvB z;wLiX*BL;@L5)L=;~hpi%wI3Pkfk`qWP;CvW0PcHNzK8#Zdhodqhb}mvMCy@pe>TgH zCV{g@W;I`}##3(+e(w4%K=#Wmi=dX6pdZM06kFJBjz@oe?sIzas)D_<-58CSQsqs{ zClWlHij?XYn{$F1UUrqLyLK=VU{hbr*~Cqf`72n^R14qii?g40dZ+ad<%)xzSF#<7 z*iZ`$RRAa8ih!FC0ysh7kfPOFl|$S-Dmoo>w&V(SvD{%Bz@Pi3fizZ3Gwzuzjy5ZOu>5ej_E@H9(68qZYrxLmpw7LbxTFns0V08ft-| z3g84>5kLqbfJYP@R%rcUeBx7mRnEPPc&}Zvvz(YJ1CPu$f9rHh^cVIR;P6OHiM#;B zAbhiH0uqC2S?&Q$QkF*vxa`jPB`qq8DG*=GBG7#A4`{>wtqvmr&KJKp1BzN&fw~S3 z!;|*v)6@sHFP+#re904H20tqjLM<><0i1v<0*D|4@J4_GOA8B_eQ|S-?YJwSoMd}u z0dLF@5#GH!qV&#qsI__@ynP=FC*w|karUEY0v^6KS}W_o=vE9e_hj!g!wxCl&n&Fp zmT#|~Ust11ps(GDuSog_OS6zc4tX|Kxori7qRN;!a(WuZmg@)B-~lzzMh_fD}T2 zpc8oWg6N3l1RtsGsypT$54~ze9z6yK#?e-k{|@5ae4XW;Gz~Pzrr$9Vd1ri0z{w}; z(;N8cFFRemA9&L=d;;N&h!Biy&%B%jF_yaxWWz{6q!EJV`faqGG*6JYgV_@xUZc&O zW5(3;oA)yLo)F$PhFV~#0yqIz1du@p5PA>Zv1OtB;qUJ`T9)UfD`Jl-Ftp|Hv26MDS}D@0Aa4}y&3c&CkwZU z8FJFDwb4OX!b5CRj?S(A(lA6TF$+{#m22jbkzc!vtE7a)Ri;ZcC*S#%{z30PqKwx> z(=R3N;Pb!YDx*LSM5uYP<%6BTH3ZXMF|8Mc+2U1-TLUxsulA}=dm36nGCI8$EJ_Zf zD4Sdp4^fV(jM1k@!nM`=c4R;(%_ePzkl{zYj(WWvv}X$_uSkC@-=x}7YeAFk!8=$X z%}KNFbokK@BW!mvI%Md~U4BoXoNe}G_fE)x2p4d|>Dd)ug+4Xa=goxbCQt=%yScI( za){lCYJ>NQ+YG$<4nxv> zI7-U1f+7VW}aYy?)6KyH4 zii|(fJmEvoJ1v~dYQu+NPzwxI04Lyz015~JVp(bcP;6Q)8T!iRcFqvai+wggHll>g zN4AGb)GZUreB*X>%RpIWv;#}BuSwSgELzha@swB4tI!jRA?Q-u1^iG`QUzuDtsV@f z5tMTK!AJmN`z={-BxL+dm5@6U3N0>}K&Kx5sGA9lb!mO}I$`jiAfWap|3Glr;ZQ;d z5Z?sv7i*AuD}!5)@7o7QjYfMp8XsAZR!|Di7oX^Jj?%91M_ZuC+Ir)&7NWl=;YrY- z7?!0_Bv1f28-UFd#Bm?pxhLMEM=`(66RbLC!h?|jw4$dsBYe{*+f}@$_m*WV8r+9+ zHpn#}`ZFu9?!9}y0QC@uDu8>yl?PBk2#^##27uU{6`f0?-B^7wO^3+8Bxb5v%Ob}P&a?O@Wz~eNgD<9ftf3YdssK*F6#>)`0`5eD z_l>V~;;@};&D~l^tz!RRFD5@G!Y6djet;g2OS9Jioa_ZMQaRiQcxXMnCIFKpwv?24eoX5r zQY~uRMnv7C;!q0=RRAa8iU1l20e44e0U*~j{U4a3D>#LcH4R+#Pfghh&)&>`YLPzR z>Bd;c_E-esH`YiX=)3&A9Ap2*c{+LfmYTg?t&qh5a#vB&G6hBt zaK5E`08p>lMq)WeYwonkk|mWBHJ^wXeJE`88n+_x1JnXT6~GC&B7hb`fHeIac+a$B zEIdM`=a2fo^L{h-%L&y()BKsb@Z^K5FcbFR(%vVa9-Y+z!32BtwFh*1Y0+iOxBZ&f zZCL?k%%u#c-Yqh=aa1Nf;kjAxBdP>O0{k?FnKu%8e$Um$jrQN9#qKmlQ+}L0g)%l{ zS{!0)0}m@i_!rvcnIIj602#NB;N5blgdc@2pSDCe zKr;rCNGxy+->$2@CcsmCWyFMah8(%Y?)higaL#n#4M;tC%}D#73v`lRRH&ZD-WQD5Fq=p9=t4*?xiPQ zd%KsoLaWFHra4lfoqg6v)S#uOBzjS{s$X<~zLj4TLUE1Izyw^zRi@;zx-Ay5g$Xyz zm3r~U64F@Ni#^obc4R%yG~m%$JcW^fN5GYzckM-s`;v^N7#R)hN5{L;F+*JtRi9Gk z95ES-f+~zgYQkvoMk`Cq1=*X(htm7Io%1z~36;=zX%+lKLGZXr=q7RL0Stc#xQwfm z#~ucNET!JKRLC2T(xH9cYE zjRF-%j08B&>99XGbio(JVllEnF%|02idqWL>c-pK zxHnm4Q4QZN1-hR=S6n&{6NCW8LMs5MWRj(s%3HPYN8Uc;d$P&?MQYtQZkFMiG%r() zkvefhfYNaieSVIwORfpMzKunLGvoA^r_r= z_la2`=1qyG*c43!BcJ2Q&$YE{ird%$6ulbv0)a--iF@=->nzs+LCyWHlpW={DHJV)*%nXFN)(45*G}Avk8k#_MUkl2g z87^FbT41OGI007#us{es+_EynUH9B*Zsb8 z0niBF*Zm<$9^EwoE4xPb5T@#iBX%All!XWvrYA-$M`zh(LW}d*3HK zrfJ*R@YgG0(bHxAYUeNzC=f;hBI-XIw+NWE^+@ES2)eSUv4%UVciaz6R$E+HY>|6O z4)qX+Du8>yl?U905TLfW3|<7v=&WRiGJ0#zObUYtiArg&I(S-nT^rp+VBf`S(KR0U zNJ{j*DoU)(wFi(&zroT}0@R2s$x`=7>rI@{OAePk`7%4?rA_G{OS=do0Wlk+xI8hI z6*ov4q+0SC5$+xNnJO2J>!UZnN=W0AdI`0_Pz7)Tt_Wa*5O9z0D*&`Jx$O_Mc+v4{ zV(c34tsHq?$LXo{M}?qwVI)dYXZ)0SjR{0>)feI4Z@f++vh2o zNOE|LFrwPsW^Y>S>stXM0k6?#R_KoS9%wedR4q9eY{jFHNUKvQbob6Gj>83Az&Ff+ z?(xtSm%RWxgaD0@X#nVhF^A1XPw8_l@+-t5dDw|AWt2Qb^B3Y#@mO9@K7k|^@XmuB!B}#faV|y0F=GR_bnwuWQfkxO0%-! zZsCI$shpMh1qHlE;^Hu;WXfY$ZZG!JGK>T$>b>2p?nGwDUeh*d{6cVcB$P>h@wF9^khOHU@8{$Q2uGtf zNo@72BX5$th0Iq*Psi-KZC{lIlZqdhA@qbVkUgY?y?LHld(lBrr&ZH z!=5V?<`PL(qa6ERdVxPNk5|!>QkVaU;26lOTYugEkI2VAPh-&jx%yAZp9jE+l2@UU zf3E(#<<6b|0zv1#NmHsQj67U~y zA@$eoO9D8<0e{{86IZECs{#O(1u_yyIFqnFd2`w|vG&VNVGs+&C9v{W4eestkEMf3 zAeqx(N?wAvbnQ;n8 z;K9$BMYczsdux1#2GiTVItJe=%#!Z#&xijjHkWosfasE7W6Hn)F)2eH8KNwIL zmTYRNnVHZ&evmF7Hk5%isEkoj-j*rkZXc)hEQhKnyXx-q0(OltgjU-770R8_JE%}k zJfI5x7bd~w`G2NeGRYMV0RP3{W!gHfW#A$4nZjxD`>KIIbPVn%p(K@5Dc;Ve7c?GU zIeIe3%W<3lybaQbRMNz$y6%_iqm0SwJt}`A-zLalGfAegFC%<5=IHM|=Fr`;8uA*} zU&aDuTQ<|4AKNbf_}u1YUT)-SVbtw5cWlLMNWg{>o!Skxz)%Hn0lkq_SOGR3YZou8dH24de_>1#YJs5&-~?O|zyl#bA9nz}o#)o?UimZnx6`$951O&Q>~h+kD7{^a`01FI zPYs;L2nXu6llh9iO0l~30Jg%6h^M)&!$j&-wNBYL?1qW@rL_fx-m@HMlv4dp=!cPj zn4{RPfeEB$^3u=L(3g84>5x@%}z`#5n04h47 z&U)Umi$SHGr%`kKKs(rQ{dvqS6XniU4CA?U@>@VeplafHQrzG3Bp0+@rCc4~z7cqU z9K^Ja*}b6MIA1L>LKBNSni0fdo&c1oUo?9hgpnHQvlgEg=2p0r;$YzZXw)R_zm zaLEOJgIZvy0yqIz1n@x!Ff4lj0Ewy{<1e~wecmBDTr>0{L_Czo@a9JS!7ypzpGUQH z;RsZB{#tb~&~xY71HKa~C+Uatewv-W<9LkVOM8r-u=>P2zzdCfINbXl53I|xZaO+z z1p3O5-{CEj+{8S}TING1j5zP$Uwayrhs45E2DQLY1#kkc2;hehV03N+0KE_+P3NKA zNx8Sn%ZT=rUTK*$$|>x2j!*f9`EWApgJhs!Yr4EZCZO<|fQ;jinNJHpD8>?Z>Rfsc zo0+1mi0NM7`}Wv}H!H_r!5Ues@uJi83Ey(tVg#G!Ga{kc_np*gB9Sd?Sm~(WJ>%-( z8*C!{3+?i|fB=L5lY4>S4K)bEoCF=-WE~QwJK!B<`?T_ZY!tA%&9}QmvCr#c6a~~E zc^T-^^kV&*0Jo?orOlPXeqYMOL|&;NQ%V{YoN%V)xx{jD2AZoOz`CVMsE*HPF|T3+ zib$LE(0*r%urS@8ulCUjlJ7<-XVOt4pdR8-1#l0z@&G{y0j96sg6FIh7GU>i^V|@5 zfQi;0;x%75AI;CG&t9z!RGsf^R8a>KY!1Yy3Euu|OBKY6BgA76@j$@RgC`F4{@-4d zI{J)Y?{UYh-@V}`a`BsI0NZi}8OHMf0PBIEU>1HCfFb(%X*bg1;IFJ!rA=hwFWHtf zWN+@@hgx8$0yqIz1PDP0F#CxH05v86dQNVRB07nh?B;RSx7FCx6Ah4BF2#K0+0M!d zmj){DIK--DeGUW@a2Z$m6T{#wk8jC+U3YouUkjF%q07l~PZY$xd6-->5Bl1MN%=E8R9$LWtN$URpkU|iFBok1HaEr|pMK5A(XN0Ka7BRd z9|FK}mBr!c7I*yspydG84GD$72!oksg?a)(h8JC`1-xdr6B?Ii?SJ8_8UX|2t6ixU z-5f9DDrx>%T%}hGaq+arq?gurF&gsiAmNvL9yzW2+Eq$3dL8Ym9XGVaB@%{cR=CeH zYa>ARwGUzxZZ%9Y+>Hto*G-uS`4(a5XVCn3)%$=C;p84+)2}=(vn_|o=si3$?TtMu zrj#ype;rGSZB;8*4}`@Fm8^DC2Ls)y^{=;l3$g;24HMcHT&cem#xD4I0T?>nyK{Kdoa&uQaGAxeTa5+%|azaDJ? zA-;F>PLFR3{VSC(eP*U!KAbdmPqu`$P|^~O7&tn-DfPKv^gSn^8!z4w%(djA=*rUT zEDW7Ax;Pt}9w!yyaz{(@(I-Q-HK+nO^;gu3Kz#3hA_f4&i&{j(7#`RucIw@U;5kEo z*71d{TH14`u z>-siF?K)WJ>iK`nuSop%D22w~RN=j8A}D|XRkQ3(+j?L8k0ipDby_s3N9op_`jg|hI!2!01 zPsM15ZRTu4vqmh9N={T39)L|-6H*{uv)LoUv10&cRBp_dAR zPb!L=DDho!BJ#-hVmbY)zZry@IRsZ|wZTXLa=Y;3*mlw%85z3NnCz7`r-)>)&t%Mp z)yS|V8fZe`t2Pk+g?2dxA^{=5cE}3=TBJ2ECGh)_<59d}fj^U47Z&Mz+}*;i$-&PS z?`BKOzpG?x*HJJ}P2B`91PH?ATH|R6M2URkNQ5 z*BA@@*RX%V0aEiar62e1y^1e2`KQyLNKSw zkzSTeupiWD4g*F38!yf zAbC=rg9*5ds}$Tj=T>~XF*X@5xVe%)NKjARz$8)WjG%AYOMRzc3j`wp;f9R^j4r=B zIn$HBpSjm&I+xX#Hpu1l;9qz?d>w>o2XY-=(pacY@Y7u=@0q0i;^i{N+qR;}A~vc@=Q?r4*`GTDxDvg13)HOLM%+;`*Lo~VU*P_vw2?^tN2B$@n+SL z#Rj_wBggMt}8B^Y$6$Qs@)QXi?)4L2kc2GHzX z7`^LgqOGy|R0oOgMAznI4fi7F^z+$e2`fpfi1(a$NF7qK|kOLH3u){{=u<}@tj znk1@=$fuj!lFLhNu{%)*y4Csu6Wa{brYxpxZPaYjSR$Y9yXE#Kz;hB9-Vc} z=@{xHDF zIdd<5Axa;=)59aENaavd>KfS#g-Z z+@Tg2ssK*F6#=pk0$g$S03Z#a4&&u>WicI_oCt-jT($w1r833H<)Go|0n^D=Yd#=b zQ4j@H{XNlZ0;D!=Hn!%N6YedSW4+`f`qnPW9g1eCQ1C)k_Vxfu{B0NsK%L^dS!yH#M0pHX;?L_=Ud^jIFZh z=66iTN+|*W%Qa_74`Gd{K}4`Fck7D%+*oJk3(Oz#Oi_LlIa`hwMcZMFM1grh1N9Jx zDu8>yl?TW}2ylOk1OR0yOY?W*vHv~|*Ni7CT0c!S)isXaz3@~I%N#^2Wy}WBn`Sjr z>n;7gTWCewXOBrcURzdb%I_v)q-(F`>#096-Zr6mz=vGJuAKy<2hafVBra%*?EN< z%^$e-G#oCSq2YPoUt7IcfbJGqhVK;W^4fP8~plSXhIj#Bvri?C*n2){yhuD8{0` z3VTZVh)6xyzG*T4CYz)lzEl|DUuc)-0ZI@8ybBHiAo4x}43Q%~XMB);gZ zKJzG%bW(j;@ym^e=oXN9xt~v>Wclv}Ihcdb#>hq@#8SJUQG$(qBWlBG~I;%0=w1>oUZa(xR zW%m8Ay}wNr-=ctO@=yivUf_xV6$k--_xQk}#r~ur(sY3=IgDl6oa`MNvGv=Qofr~5 zdj;T0xCn$eK+^PS&G#K6ieLgR<0?HiKg-mwM86QRat@*GLXk5`R+H9@Iy*1%KMuvM zd{zx30lU6s*+#~u^v{$sagQIaeVp!G3Ub=(!|{6dSmuT8?Jdyyps}AqWKEobx2qeC zv1Lb$Zk& zg%RC0j4q|7``WpOU>Z`2?)DofQJs83p-TJVGOm&idR%1`C@JG*V2!kx&t(7G?l?q2 zhy0*D3zU#Sh?Jjvy>fkAXyvzUqybpyd_amCP$<$cHq zq$%z~YsI*-tkp33c|Wk}q@=+Gt#qq|aN3d zuub}UrP*L~9C!bzpVl<_QJokl^LEi)T#ri!i^Wk94vl}hybJZh!-ZO4r~)_vR|Kd- z2nbYI2Y>)k7b6y1NHnj)cym_yD!NcuStA!|Gn|OYZG8vs3e5wF2lqj4$$hxj1US&W zOl3pOXD>QhrILJ=MK|9OX2{1BhmuvC;ndc_`V&S19JNkP;*S7dt880rqFzoLmmz6` zqzI=DxwuAAyX2I=LM<><0i1v<0`5Tw2zrSN0Cgt$Z~F!FcHcE3dnUdoxgURlJPRCN zDM@>5$_^4hIR&ajJAT45NeR6sU}mJ&q)v&ocWp6X18v^Zk`eUHjDHgEG5-mU{VS>3 zG8hSHM~kmI^y43YF|Mn(!0>Tb@uh$J3d-S+>L>QO_0NMapcWXa08YRa0U8hj9{r94F~|zWKFM1#-DotA?aC_dc;x2kO$pT59AzdI=6!rkfSIxq$E~ex zTQ`p?qki?ISTyaubssE=&bs^bU!!A?U|k5_;(LxQa{M_CYMh|#G z#QzG1d=$88m0z0sJCv-Q%@1Qq`*Ds}fVZQF)y-Q_4{@jhxCdN$fEI*+kYp|ZD84KS z2bA>Nm(TyBTFOzaMPpKNuXDkUc@44H#6#lWr9k5f;JJ1<`0S5oG^1R zKj{mf9r(y_nmu;G`HWBKa>yZJeovsyVDJw^gFlY@0MgokvUY*A! zQJH0h;1O!0;U=e>?lM-Sl+w?EKzv&$`87}r3{?Op;EDhp2m#^XB@rM1EmO_dZD~+i zgxC29vXA&3lUwPwj)e7w+RX)ptDo?I6501(gf>UJUlX9%7C}>h5YJm~hoR0(DckMe z7W-t7ZW5#~(72muJG%-a0UgQDbTNBdb#((pb_K%>-{w<%81&J@@f?pP+ZN6FP6f5V zPz7)Tt_aYD5D<}I3IN@{59CGYz>{Akep=t=fK`NrNiPx~@Vn?;FVm{w*Z9jHCpAz<)Q4|M?+Okmu?DO1+e#1>Xfg9zwYM_x<%j z*Nyi2*5wVrf8Pgd|4V-P?B$uDUie?)%ecxXi`oEC40nJ-%v!%IUBQbl^yZ>KH;UW| z{7)2ovX*=wHTF(*Ij=m5;`A@`>`g7xRCyr4S9V8Lhe? zn3Y8Az6>(gih=mUPlXfTVA*h2Y|BlE-beEo6J0`VYeH?;}Qr?jLphxsJ zcnbT#>zGWdZcOC^0#aK@WqSJF7f0y>5)Bxc+=(Yw4o4F}#N^!>wn0vPS z^-Bg20-|D40U+e@h~8Uoab=Wj`|{Ntnd`SDx3}X8s$S2Zs7>kLVJ-&JPF1@c3cpgl zCg2lCdZhQ6DZ5nu=*Ao|-X0OVOe`E-&miEev`rA*ST&hmcC z$Sb6$C|jkY+cTQRM>Rm7Df(0+Lxj0&0!)hr__gv6~L(HP8dYvU7)Jny)$}nRPL;-ao>Qf?B&i|e#S(j!s zU}n1E>FDUwH#UoSD6sp@@RaFLGCyP+ytm%NL>LK}YxOy7?OUOWYdi^=U`llR1PBC@ z<^Ry0*qX`IO4(+HT41OGI007#7()n%11=hc>sxIma|2q1uCK3CIAg^YDWOpL0qm*}@ZinFB0Hr%&9O&+Y$ZXh+%hGVTIp;`g z*eemOMpdB}7^(nHz!d?e5CRhUbOE5W{QPbzp+`uwvpvFX5mFcC7ArrbX2KraIFj18 zXeY}A@^<49G-ZYgT@#S{ADQUXLH35+txjP$;`8;uZfNk9Q zvGa^i^}MqS&P%j?qD9H0v>=u2vKQ`4FjF0v_sTlRjZ@IP7)EdoA~gxiXma zEQkSZ)3b^a4<1*E0JU9?2wD6g;4-cbWO_*6cr)@9n(#6Rx1hTFwshgC`iJu7 z$AYMDm>#4*^8yBxSlgbdtOZ=gRWkguxXKY4uRA-^BP``SyvaQ4i24ZY2&x>PKFyzf zc6;9FyqiCE+GZgcVWQg}|G*z|T%anBeZ(Dn zw2F7{TYI|BXTMVp+$LLHF331&n*LU~>Q59O_g|{N$17dNcjnFK*$mnmzl4wTQR&Et z!$^JBOY;M%yhTb&iXy}GD1tMbk@}(z_9}hePvgFBqgLloZ4Igb?t53hcmEId;BnCB zPe1_B5w8d>g6(qXn7TU~dsVqliXr;=qdjC>4P{O-1%IV|;EklvShMbFm+PJn$MM+R z@mY*a&X0WmG}`JIcU<(7IyF0!tk}im^QOfd7zt2ZcN}<=&qNu9JZ#o7mZle76)X>u;8hww9Q~ zZh)0Ur1cPDAa>wLnfJrmzrX*q`B0!gC)z>y!t0+}L8{yBL^qXoUtBVA^i}&qcJFmq z37{2aMOp6UNkRG@ZNt&G=i*WDIuT`nut{OoC)qKb)D&ugp$gyxToGUeAt04E001Jn zaK0^lVaI25PX=GAhry#{3|r;=LBX3FjE!4et_$lx<46Xg3_s1)YY&j^!|XjX2Ox|R zs+W5-hAOHmycyZ8=rF*A(4z`1kp z=)P^8`sY~E#)e-9YunOzx07&xErsrlWQq*Bf@guO(vVX0>g8R8$uB20AG(+*%~7N| zmo_6>aaS)|SJ6Qgz&+r~18g7!yqxX@{~8vwNGM$>hkSQh067dT*ZAa@BA2D!m*?|$ zdZ{VMzS9BGX=01oZp8>*6L7!av!7Pjjg}CjA2Rvrq>Xb)QzF}3<;|;{uVhAkt2V+& z0QSwFA)Hvjn80E8%HJh6@>WfqhD|`{k^!sS`HCtUey9b8Du5GkMSv}YfDFDI07xe@ zO3V1o=FnEIxeV5K=_%~{OXO!3b=hddRzg)660$(uLa)#-@BE0a3Fy$#$USk*zL~_h zjm{sNW=iL675#OLMu+}TrI@}gy8uQ4TncR{cz*A$f{r%>sqZT0-JWgB?Acg*b?06~ zU1R^!8q@+q6~GC&BESwpKql}707PUq{)nTe4%a&IgDcK0t)RnimTrdRO+wv@o4P%5 zXe2-aterCD_L{%v>^}&35UH_lkBWO1x1z8!rE@X71aOZw|MfO1ZrrrRpBqL3mMzU` zVsP*_0flNZQ$jybc9wfIzw{GoSUKJ56Zo090JXqS1#kkc2(X6`@M^XI08;J3!dqet zRddO|bVXYFl>BYI3IO!JGMA=gwFWl{0xH2U9M=L8{iUM%SZbVqy#6 zsod#|#2ASFgOi2E|GlJT!$Q1Gjh5zjkxL@=N961SB9@E2KWy-hh4dKp*g zcuYPUsERIe6n2!+pTKO=@NzJfD*05NwZz@?h12IckOo~hi^ttH%HvLSf-h>bB2jUK zDZF20jm#oU9Oo#-njpiEJ`;%ORnu>O*~NAe<()LsO)c7QcHp&(zE^$nq-g$yE{t|_ zpr+ag7-pikKjUDIP<_Upib^OFuOIx_YOa*D;WQM!Ob{wb|3GjF+k-!_frlS+=92)R zJ$k+G`jo^JfEodghF_KZ?L=%*`~spq)cu^Ur1rt?K$U&#t>wd6Nh!MS0c7yRe7zr5bwG#uVeo+_PaaJ5Om&+{5N+9~YJ@={c zeWjJ`7m@;~{Rvb7yu-QbaGW3nyb+-U6A(@ua@_8;E270aV7Rn4@e-&L@Y>%(16Urz zMT7qM5zs9YD_WQS;>R@s+{L3ztC$z4YR?S;h*P!EG(Kh?{ZlN?d@V0tl;Bw8!bm{b zYaZ**E7R*O#nr{sZ%cQ#lqMwAU5s0)EoU_hdrPUI78t4kPQVob&JY4}d&IKnyXC$1Gq7$NGu#hD^=S?9EI*B3>gS)01-J9-qOU_|2-Ak9P@)hXaE49p}3ev z`R%2n_|PlAoap99D;wTl*>}^YVI;sN%ST?sun{|df!3SuOt2L-9O+(hha7OBpo56R-+tY9P{@uyhq zFW>0OM-eV(H$VJ%Dd|0Gsg=pJ9J(fyi~Qj?JTe4odH;dnk^mP70R<8+0Fa~o%awg> zgPBHcqirARAMQ0O7=re9GSD}A*!|GzH8Fr>gdBG6vya5C2{`2+YdxJ4cKyjbmmvLF zNSk6SCtv_!Qm~x#TVvnGb66LPe@1;y^_|VKYEdD3TC@0d!(A`?T!oN!J_a&OyKE*i z_+s&YP++K%O9EUW1Qb4V1Ar#t_jL&C%W7qsJfsgzy2wfIa6RBiC1&nuY5SSqI}{7l z6FHSh{qXkh{gSW>5@+swibMO6vWCov%yb9!6I#E7z?%taqujnBw|Es8J>ZeBee#<= zf}4)Bamy0|644UG8}@v$*365zjEB7%g7Af+P|N!d1eXN3K?o>XPXvJak9uc@TL3Am z7bWTpfuhgEEbFPiy83h~uynC+Dt2}N3HI@A8j&jruRXwTmD%DoZUfaiMQlSqT_8ea zWtowr7xfB)P85FHA9EM)26` ze^6kkl1l>IAq132e*uRT4n-0^4l?>Vp@^2ed%+xgUzRScvi;MwngL$h3!8xekzIGV)u(=m8Sc5g1vu&RD1s zVT&64tf`DX$|t2ptt@u@4+eWfzidK1)rTs8e;2s=F5m$npfrsQ0Qwx)kF&&``qTE% z;8S+K+0rsfRyv-vSJYB&DpQNKhdwYkK_dvI%f%Q>z-3&eSJ}^Z*b0vF%}P|J{WHIY z?9&r>wGAW`=Q&5?b7!hmVI-hd!jh7@gIhYI?1-O11%C^jwj{WGQ)ag=Yn9u9DUTZ@ zjbB%sxgI$NS`Ptzr)1HdnvuM?;cMfzY&YJHNnO4LkE?`g0apZg{vqHpuCi?V4FF_c z)DNs0EhYF6QJTT@H3(HTAyiru50zz6hU`7nlea=Z$~RcCsCv1RmvNO$f2Ls~VN(JC z&+j9e004UT5fP0oEer6i!T$s#1BAaOKvHUj*}nJ0dde%VXc|oVB)ld`J+gQED^?0% zUtkU|P#=Q#i|W522JL0p z3_>k1Q~{iTD*}8V1iby-4gfXDE=k85d`)sRkR-AD9% zr~)_vR|NP$2&m5Q1b|%BI_5kD4-Y5QTZvHUjvL2t!sFI{7z&-<>Mn9_&AXa(%2Ji%D}aTY=N zqM`DRI%SviIU0R(QL>F3&`I_)GSmV?6~GC&BETO)K+VMg00d+rJSpExrCRuy=qxC1 zYOa%_G0=bJKJ&T#b#aSKG#}8zZ1^V0WBko)0`{H_KKCo{GQC@~rYqpf@WrZt#q>49 z&LPI_~|v0GixE@@ZX^j{)Kiq z{uBTq;Ju*?0Q8%9(?;ReiWWceZIpDQ^(I%}^m4sd2O)`?HF#lUDRn?0MGIhXlN z)*d_BXonqZ&_w$2Ew|R!LOsNx3g8}ay%9(1oy1VNNCSyxj@9fa)3whQJl1AW2$w7zt2rGQ{qoG4zuUsX(UZZh3CR z@*|@NMYeX%#TB$c>Aw$ZjgatHAp2^dFNsReNHDK(>~p(gHdS+|jjjrd1EB~5bnk=T z^9?1%nj0C2b-&2on{0W00j39Ih*0Ku{D1A8Wmr^g`|gKsBn1KK?oOps=@KNQ8z~71 z8Knl46eJ`DBm@NMMj9m~1QF?yMnW2aJ&!Ov|M%JZ*t3s$pKp8C2VAq}oW;oXo9nvg zTK78d97Sf@zwIio93}rZ6G;F7^&hzw^FK`=FCP6<^pDp->?Z%5NcumH(;^dGIY=V^ zc}DuL$G{8GKi|sbnK`acg}ydL^f`f>;Qwjs(thfo3JkY_HcKtM3?uYDwB z(_oAS^D!WpmZ4VTjr2$G!pYanMN%a`B5d?l=JcU&?}|R_l*~Q>fy7-k`aE$k<}U0i znJ;bxXZ-{O)`-fP0kq8kX0+Nyf3+V;|N6nAZ)8SmMw@xxoQ2>|QxfYQ0CGeN(x-&z z%%sf#v@!b6Qo_OhzZr^-IkJcf7HskC%T11qx7mdxtK(-_@ga(G)nMc9j`y10eDgyI_CZG=S)B-sD;cERM6 zU?Aj7ka?1gb?FehN>;7ReYA%+@YtiG1co)zk?BXZ6UT51!(Z8G!*VteA)fpsG#8wl@}6%z7r zNX!)hJzx6cZ%hXg_>~!Jdlz@Vu=M@CB=sW)uo|%~(aDen@3m3S)fUk&IRvSe-#)HN zGXigL@dmTLI!D)~Qui54lDfwSGr%wf2m&q%cnT$;r2|q0OlG2wgd2W@$B3i(a+^fVw|DGZ9Y=%h8;^R)2CejRBo@kuh1UTvhHvpfo zo2rj?DYZKh&Kw~2*~;~Xc^>z5UCOUxu3?XfyDY2-JG|9ez^$%nRh@`=l90sxUvC#x z;8`#bawbR>XrqPHEb04ShaYl+3j%_IfslO&0qs7J@2BNSxt$Cn4V;|< zCzzQ%X@i**vr)4V26n#1?WJ|}?JOWa_Zzj;^-)V#1OzU(_gkY4Dlt^pf28LPOw83c zA;1vAy8fPrjURY_9^OTr4c61A3q4wYsk!34`Wjl^n&el0;78ze$G9Og{{v>k4$LGE zQ-G)fmjnbu3FsJv^r(0{1pOFFUElRPcbCp?X7}`&Q562eyB;q5C~t#vSYQSirT{^}B>^E&0zPs;`qbZ19vn`AKH~qvs537Y zkc362i4JLH`&i(t0;960WR!t-*uS*tdDhI5WA$j_iqjx>=IWPnv)M%3+Q1AjOaX#` zO9Dcn1bhmHT&oJpWb>vQr84gt&vEEFzxIPyFibioLAV$PGhC(1Zd?-N%&bK1!o_V4 zA>hKU(vfD+4xhYzeS&$CWV4HdXhQ8Ey;^33Nh|EBJYzjJDVzk%Bj*i#J;C4J;Q79$ z7qyYTr;wqr_>R?RcUH(*rv69;tYt=Tl_g!K*?iz%Z{Slw>NbawfoEt9tbg<1!O8yF z4wxH9#hSLfzOy`#kmx*0Kt}io?=V67u}S_|=rwL^jRG;$KWa?+|4|eL2;DUUh?xO?84Ze7`!3W8SU6V#6=SP@Q>!xzwq`Y!H=L5lhR2!{mNt?esoOo(pS{?v$qyEtt1cb1_Gr&1l9i4y$fuiD-4=I6Aaluk)t09| zn)numRN7Yc4pR&fDNx2oJR;u8ls%OmeyJ1>`8)k@8~8wnDca!SpkX@svAzTE?b2?q z6OH~51tVckk3u8-X)c&)4Wl17Q=r6e*+2|cEc=UE(`LkwM*m$Om;r_1DcA_U)rpQA}r^HA_J$5K~$ zJS3*8dsnNOrur%0LH6)C9AN2o)b)!0jC~^2aj6S~{Eh zZ?oO`O-~%Xk8cf&w=aV z0{WF8bM{H_AJf`6d5TKk^_98KdGdp8052>>Il9IhAH;JFQ91Cw17#x#ID>yjc=VLXeM(KLLdf-%q zac%Iu;|PGZwq=vW5@vv53J?Tb67T{_z(6MC7NNnrl$AU3Cm$iEE^~^cLT)k`{2E+S_uj;^p)J~kX-`V>+GHc0hH^m2pCCEIQ_U^ zw<|1pYM@VOTF+h#s5zDJj2>u>b_!BW9)pvB7J{Y?wxTYw=g-)_>)}`iY>6_jA5oPV zvjvkb;0t;nu7&&y09@vPC@29#`jESYf3?L`Naay(*V;wmuFQnd-~B{rqwI9{kts3g ztlDQ^1{63-89`IyVsJ%3x*$o)qxc#UF+KS(pY|~V8_bhm&Ces722AC>gq2HQ!AZc~ zf};R6zK5BOe%Daqxi>7Xvrqqu-W(X7jk}dWl>$P8ndDLMukfM_TI!=(_%fYD_K z)#V2`PF!~uzmfd6S%gTTs8%RhJo&m&^-v59oH}r%rI0Z!)H>0d?ogoSZ|1(4 z{`A_j*g#NTU)^px!mbi_owyhW#Qq`Rk6q%p&qU%n7=BcqcbN4Ml+m9S^*S|fB(p3&u~Myc#73bxY2LhtiEkW+RGAXh`9I;8ztC^3)tfRzy@hQjLzsu5T#KoQU1N4bNjg9$n+! ziVvJQn!b@LEimf|OaY?cTo#;{Py)toLd*)a5(T~7g6V#S{(5s9&KYLi#Znt(rg?Zk ztaL-STqZ*o1aLonM2zAjb49>`unxeCSpbQmv70GM{F}%JQz-yuqpO2Fk@F%l^N~HA z1W;oiSuxanLGDLWbeAh}_Dd@EjoW&;UA;bVZP|XG5esI3VG0lgToMouC1Ct9#IQ6! zTKmm%)7#~p=9J%t-EaE?1v)2#d-(zu&a(BkrC%R`T#M-KZoamgydogwM{b;TZ&Gg) z-q0F$&qgS(A{UeU(IDfeN0Qm2miOb~B%rjb#RxytLAw7sp4bO_{8?ecs=+))6mPOG zb%Y|1ZmYozFiZi0fJ*`rpae_|Lrja$v7?oSN&*8qy-{ZfpJ(8?h7{kuS6)jUdp}n` z+hk%4^vEE(<6F$cvnvABi|K}ydq#)HhZxGT1@GZ|#nN=No8l`!HzR!mIKYJ0G$xv` zW~bje$3K4*%UWY(Rlih`W78m&$GKi~CMymv4PjIU_!qW|alk7m0aLsXhjalIJM;Cr z)sfCKP=$>Mj?A<9NJhV!d$&h6s;@~*rILX7V{~tE>P=8x5g<$RxRPmvdiABb90_j) z7XN@>o0v!EI@ieF(Nm-naRWGW0JfX~kuQjlhzw66u$TD7OG+8j>q#WuVtZC2Pm~@X zzlZq|hbchhfXf_^2qj?pIb@xLQ&l9%{qKbtr)T9iP8-MzTW3O61K7SwyzN8#&}cxl z3(~OXUF0L&?7AXgu``GXt2RAbBLw$lW+~-|Y^4}GR#GJYKwtH2I zoME?KiZOX7CEn?I#%;VhwuZ+n_ZsnS5b!T-7vq2wC;{^skTuhg*ml1wG&(lfg?%Al zQ%xLk(fZtH3wF<34?iC}NAc+f-ILULQXGud03qPQuCmdN+VaWS1Aaxbg4<+IRGOVJ z91jo0+L()^q`4SCLCJ6u@LG9}($_xFzjZ#1^CM#e(afr>r7g~bSmah5rlnVA_F(gS z&cl`%sE?H*78YvGrxN9!P+{NY1ml1{zjycrZa_xZRl-K(f`He52)MATTsVO&omh-s zktMLSIF1~~mto8O-Pdh8fRJICIkvQtKRJ4|l@fGKk_bb(#$Eivu96M5U1d1K59?a&QFUfUTlbmOS+>lZ2XV*!9cP=jGDaGANPa zY78D0G{v8e-9e><858Z~5>q!^ztc87g+; ztbYu~L;UWJ8nILlivo)j*(f|+b_Sts4w-qFB?YDcQFAV9PAW9xEEk7;;M-9jLr9`Y~@cN8)OjQ#iNswvRCdyPCu!yA`i8`b^y@jLgHqneS@%`RlWXP4e)u4X z&i8Y7$C??E@Gnz$XNmr#Qw|1q2dNU&v*Z7VD} zZSJ@J68j`aht$dYyNB1N@nwnitNlt50Awo1$U&198Llrp;7vj$=78FBvdMX zROa?y7^S^#ij?oB@rH(*u8ss7W`JP|5CmKj0EQB<)@=p^tCq2&2(#q`Xw34&@;pu^ zZErKUr4+2Upd@iJ@Vk_J6y!p%r{bxp^OsRR()kh6F<4ZUM=;4e@>P0)e5rla3`jpc z;@e6do1J>R02&HC7yu^$tRtN$A;zUM?2H1UU+@RB7<%d3v+?jJlMYT_>j6#xFar!z zfFR(KfJ`U>8!VDQ@WvTtVPYq$1OJ>>8nc8+V4N>Hcy8jQ;4psrCd+sEHjttpssfAs z!iOsY9!M^UGFLB}bgi+4KWUh&HKUsXB!&oA#VqSKj}S@8!AXF(xZ&OFy?$1*4?Rgl zqghjS#0qVXm<6?BY(5C(ug1{93@}Uqf`Cf`vY-U~3>F81fgAf_e8xyZdJ1XJNxQxL zpAx$ra~suFKe3@S?6B)42jRp}uw#E?eRxH{^%kVaucKS>{ibGsH`p%=nGWZ++0wp~ETqbRml~`s#m}BC&Mq}+1d>emM6F?6O1dII z=gcsusc+5ez{Kx3AdEhvF$Aec!s&yje{d4on0f0coCHiMRY@)C&^x-d$1FFx)g*;m z5=C13I#>lWRKwfg`wz%T^}0xk*2h7zzX`2q+w9`)ug#bxciMoS-&EU@h`F{Ao8 zGL16*)OkrfFYK8M=#Cj)DN3vIF@%5%yUMwY)A14~i7e&cupiq2y`K7{`}Y@?$uqCZ0Z)hFrKgAOpf^k3^mS>`vcm{SWPwbsTylr4nL)loRBB2 zJS+Em{(}Hi0ss*3f8Kylt4GMw|EWR!#|!>;jimka%wHap1OTWC>1yvEFOvoUFzK(3 zLFHEm{%<=-5H;|R0J8Jv*GoelUB2T>i%ZCX3p>m|I>29^n9%K_1DO*HgdDiAtK4}# z2Lz-1a{q0!(Mz|(Fw5Y8v;98pPypZBKT>{DUk)ewS7lW0aLnM!bHE?-f|9dOm1i z^;_eGI&*{QPsH$cHrvtCbNDGvN?-%EZy% zR_d$sS;ohQ<88>n1@3YCs<^MH-G61DYc`5I28ot=;|Rc+m7*AH8?hzp>@q}-GLckm;wX=mvt!*O2D4}GNdkLq}m4?6elGBULFa1@iz+1 ztCSq==Krv8R7+k*7n=hS1X&|>5BTI>jZ6Z-8)!Aw*S6oGHL}TZtCIEhPd%J}GddJ8 z)z*VWG@uG60kmc^_mVdk*aen0i1i|h?uUh}p@zJW-_rgJmPO)>&4C$Um;wX=mjt|p z60l#91hHxeZ1WRmx(Nzfzp?7(_<7y|<5d5-*xFl5)msfdG|ve@ca+8#c3QX=uL#iE z)hbTu7mfNF_aINv8sn~dE{lj`fyB+5QGtgQ%pTov5@65X&m}&yZs}W$e;Cu4FwBxr zaAHq-sOr_mgq=FrrUEm-Fa-z#E(yqo5^zXl0|e`{R@n+N^s}HorKo;v%_WJ`g>B_| zWFM>$%KLt5RZ#_mj~XO@o{rjnMS!S;mb%baD)(*ckI~rqn8C?TQTN7siU9OYz?Zr4 zFPXXNyJr>RDf?9WN9wDQlHaouD|QU~o#8bt-bW&R*+49(80LRZsPQQ0WK{U35j)V9 zz*QzN;w;JD8i2v+MA(r~m|J=P(MGTJoQ9;4?nn^*PKm9hKQ z=95s9-vY8`pG8)|mArRF!0#KZRYqOTsw^PWFD=pDgV=gW_D_0BuxZ>=xlm{?yma zZ#9@yrb)a>l}q}+MTsS2A2d7Ah{IV0swh;~bY?K|T0$bF&d<=-uZxj@vlaDsw}t#l zyz*RM!u*KC6d-cIWezBU5^x&P4FtdH;KWZ`L%+XgVq4mcmDZ3hOjfk^@a>iyM^#zt zv0w{`+MqI} zw*gw?zr-JX&gzQvSzQCAtKaN=wIrg(24Z&XP%a{N4TKPIVONDouP zhA}%zpM6`)U!fyr`JrKNDC*YXBw*qw7v&L&vFvBQ#F7!*r`gM*&a}*(F~nuqjRbfj zOX%PiCzaKcIg^i2%CkNo_ba5-e#6TiuSEBpv@3jO-)1<0u&ad4$VC-+|A&A-c9oa_ zr4k^xh-Z0NqrNT`GxdHP=c3YQ`)Z7y)@N}9eWUcChf7`8K$35Y3Vjml+b`@YIsV`5 zDuo1PB!=q35^E*)_Q$If*Trrgyd7=5M>_SOvO2uNCX4yHG`FSk?0}>0ubTIhM#dIZ zBza3)cR5)|!@5ngo^mpq&W<9xFCY7$qWm_z^-(+7dT4rLq(qfS$j>5uKIm!aribDB zJ+}yn4?A^+S=HrKX}Ccq+cEuWOO31s>3bx9EiPVMQu|3&yGMJ9>D%|+ z)umPg7yHuLhEI&ZQcuSMd_It5Vf92mOO}B5Zejja3`HF*7kZ5?A`#GmAAhv%+o|-r z4Lo-pSP_Wb6HVN9r3Mi?*_bH()dxj z9_&bGtYSWBNC7ex@m#yrb=%^q@>Sn?`mj7$R^Z!y0=4H{jGZjqkRQZlAnkDrIsw+1 zvJ9MgFZ{NtZz(j66$qE4ptn#SEmd`)+zc$*WYjX+>J>o0F$3E z_%=2ai7CzzGqqsXHQ0)a%2x&@0M&98(g&qhKh;Rgt6m>{L&HeiT8_k@>E@a2T$4e8 z$?Y5_VG2S?i0k5|e7Si=0E@}$mj6-p&5o6<4|K703}u{lwRGggnvOS|2;%*(#lT6x z^+tc*?MlLp-U*|VIz^l+Vi9~h^?Og;e&6BEe(?-aZ1k6D$S8aDa?gVl7UP-^9~vpo zP$oMSH6vN@RL)ygz@Es1$N`r*pd3m7TI&K3{FHM0#O^RE`vCdTvh`6ahJnUFQ z!P#5qH*#l5RBJ&a#rM9OYXrLw1)f1$5}Y}pg4Xs;NOR#t>-$K{fF3*vcl0iHq0q2! z=29<=SLADmyEb6Q7q;SpfJ!I^rPl}2Kl?o*k3~0#1+T_9lBs-sy+yKrXZGv|8~G09OQzfHV98%)89m z_rWes1)=21Ss2}ELdpxBOQHICY^~XF5@0lP-7>kH)Jzb7jMQtqOyG$cb?3l-(%VdV ztidm}ln_Ax%=p3+e25C}$X{9W6Xp^YDdCASmKrnzL@+PBFtX1Ix?jZdJl z`NI*UP!rf!`7Q3o6#-(m%rJDUz0tFGF?3c`pJQj+=WeW=a;crpx@XzyGCqZqfNwrX zNT^xuA;o&tJ6RKK9GPt6-&#g9PS4dHL7)r};;CtLbf1 zd?E8@7}T||8OTGN`Ul}aIQc>qRpCKsGkb=lLjf2_!@(y?374KsdV~i#Ew0$Lmn#LodLOw;d=Og z^Y{M$>n?u;I5_wKz~w*MPZ{k207NzOHrMUWT1#`CZqJ5z~Mc~TeiQ*!EYrd3V$I4 zK{?3KUoTK@I0!X*sP1bqCdLZvIIW3N{9j2AcMOaWC-9v2G9n8&VqjvnlUW!vy+3%jPD zJgm7p2EWMsg?e$o28a}7VQup6Ekf(1{qYg}9;oIq!O~Jla|?I$=;N&!PXYDwDc57* z_uyB=>MQ)mVQNs?V`99-X7SRPc4ECto-(XEh%e5ZNxN)@{yoe_s4(5B8X_&k0L&h2 zkNA(hZxsNPfRkN}tftV!N@JeBeB@P6H2$F%KzD!45uddsJ>*>?&@Qa>-JE!H_7(og z)!v2t;nzQjC5xLBU!M*=ElLS~hs*P;^NLJYw0!T3o3;QPTd0zhSrt0VRAJT216I}@!e9t+aR zed%zQy&!HQ`KoFs`9~KBf9^VFnuDu%tN#-#Sw-JtytCKTWc$N9|C(j|kQ0^mJEA%C z$9GulXN92De;>}A>oHa{9~7@2!o^w?+=?8hl01h|gkt9(@A7K@Cq!I`0hm5mANfZA z69BX#I`U%_S3_d2%qBFV_wJmxMO)Qh)grm>&u=N@N}N@I7%Sp$_JXHg-s*ca)3Pgw z$=*?GKz)|ze)3Vu?)T$1R|~;Y75j2ktR-tG^$$k1=rw9%kA{LhkPKEdw9jb+L522K z&QVUHXXAqErVw!<24MPNeUxi`1Xlp4G0uqQED7P5?CZF>%C1HYLtJNdeD`NjF(?-AHg>X#U~ z&B#b0#HdMDC8z?Qy19e)`t&geRjNJF{D&sQCm`ZN48Zik`l#3Xh*AI$wdk)=P6s^N z`QRc7IPm~IU6WS}e>XCvTLa!n3PoS^04+%4$#dbRWpDM3UlH2ZB2Rbpv2pMh5W3!x z_~DdmJ-h|4YAk^wdY&|rMg%k=_p(#> zzyI`BUs`_O!TXIa$~0xqtWr68oI43Z%!uj(TN^3)nevy4kx=UA%39WDlC9c?X8$?N zaZ*5=t9?wZp&a*ah-Efz0X|?4A}+)LOdqU|eyxuz2>{_KPU?#L3oyo#YyDoEGsiR- zU+-45j5Wx_!gzwjn5qx7l#4d1Hq7h3)qnmd(3Bk4=9L6so5mhs{?yzg@At-D7@nPg zt-r}c>N=GAjwq3LdFj{_nD60*oii_GMwuUJfT@>?j$+}kyw9QC_f;%b)`~(D1~H|MbK2OA5R9zASDlv{>=vGQXj$Ma{(Xbyk1r09=;MFs%8GlbUx z0MrcO;kAv7@^DSyE*FtB;I0-GLsvJ>rGI^9!v56c#?`dxDhxMsmwTi%Zipyh@YAfk z5J-4ok33f1a!f$Lq4^4NeGl9ZD@;wf`}hj(RR*7DUgLO6vc4Qr1(&Ap7bn2j-GkU z3F0&YF#sEB;E{%PJ6nON~UV3Z^n-KGKc)(fIot8SzY>$!?2`BP=#s~*K z9@g$MnPM)!-OD^S4yUdDwfUBL)EnPqe<2HSw2)oAeAJ^osF&8_M`zYkFpqV5N zvuvyqTG(0H=Yry%vW4Wd;F_0r11%cegf%%dk8kzS2J6cz1il@*^+f`=ddZJ#@ZV`}s<%0@F3M=#}P?4aQ%qvHpOF3o!uG z2kYZp>tnqDfU=~OB#^>3BYd1-yC zpIZE8JZNXMJyZ1V{C!U0H?b{Z)|G;#SnH!&Q;Z3Mu2AaBMJN}J%d_f#?AXGtu%o@> zo!!ifgsfL2&&P*LoHOwdA}+)LOdqU&=UN{J7XaFK#Tu25t>_<~EO8C$vf@!CX@6n; zW1A_Wp3j%LX_F7AFp;`C#DPaf z{@gXS0P+K)R;`nu(Z@-0qC98BnrwhNmh(sUOY!wCu~>LbryYaQ;%{2So8SsWE9-CE>hcIgAS(PgCi*f02S&= zA@E)@>DjPxUd^rksKtZo{*^T|is8JrMvHMo8^koz=dH}r3U%ft<8U9upwzd-e4v8& zSWR26#Od?V;1h-Sq|(Ao7CDBzqn^`v-#bDe;zA6-^uhZ0*ZPDQm!B!9f8eGv_!xgsrLlu2>*1?nWi1GDTjW*PlE44G|Y& z0HzPtC%D!p76*XtHKn+-a^Ihg^Y%JBGv1|qPV?_R0z@pf(g<`H;F~UtXm0IL z?^}J!WgHU&%oD^^OxwE8>gq$HRz#_2e2x#?>&T2A0?-hl)X&F#yG6cS`s;W-DDg0E zc@E{L@o2WJUN{`?Vy%Ra-~mKjhyj>BSfB7(|6VEpWSQy9XulmR;~U*J6`5zFM?)8r zT^MRiXGnBf8YQx_541jd_O~=?e&|vk;qBGBV)Yw5OfB32v`@NPRSFDA<9Do0O(``z zv$kGv{LZm8UxiY?Ac6b9x1nKficv18rWE_xJ(HD3N8aCF4=`v}vWG`|feyP#=wj@n zR40mx5P07C6yrr3=M0`3-|KZe|xB_ zAN;qC;-Bw?|LdLC_x*Dh=)e3#_`lr#e|gx;r}p2U&ehWZKbfoN0tcXgW4-zc-oW=< z-MTu2j3@wbbqgLr-;Wd@06NS8MJhD{3uY@g_9R21k3=!l8nk_>b3S+*1@U{2$OFj> zY!=cpI_eI?4nq;Z>x%GnJpe!*x0oTEvLT!yg|g1oq9W1NZ?x(DorLxZtHm zbPc%6dz3C$A1`x;!iI1ZQR;rlAs{vNY7?T4`8)KD9I`F4!pqMyHdIdod^ss!ezdjY z`qBVG{H{y8DJOa|9%Xa-TI??)iapkn)!7p#w}OxR!d*LhH*1ew>3>G(rw#pIsebX^ z|2CAV-s2>IMJl;V^-;SyQzLW_%F(#*vCi@5PYL*jxl2jl=qge0d;}0slK5C&T4JD=-hq zDei5aInW!-gHoU7uf4Z3I?L^{{5k%#Ale zsShgMBLJ%BC!DSDi!57@>FdiJBds|OFbYU_pwWQvF(6Lt5CgE8AFNMutxrP?0AVZy z?l_9ZZcNYAQl!l2n{ti>GuiYzU`(IS1W`);=>{^R7JBsYM7iGTmr^a~G6>`6MkG=q zP&_ZsOFj*ITJC&e6;r@$YEt=v7D|0wV>!f*8smsbGYJouLU9ULcvAE@r5>A-lgu=> z6yyMixDW#{eX#!hYkm4h01*C?lWNl!KyVV9{~C_?p9>pzMYL*y%EtSQoQDg)S$+c1 znkvj})<*ud`ox)0Lpv6NfoGb*lYY?1|Cr%ttURT?bwH}t=;)dPbp@3A86;)}BeN*k z1|TQXaj}hh)_RdGzqMB!TH2@k?O}(x5OE;}VESNv(rbN2IRFS#N7Z*tkNHV7uTprE zB6gbouPtBh?3fIj>wns`A9oJg2-bcembce_JndE}7f2je3q*DEXZ-GyGjOXv z*Ca;?M>V!XpBc~4$7h(XW57sBY)_-;k0C8Z1y%AJJiPq}qFGmpBt&O)aFQ|35 z5PcEtVn6t{a}>x?ZnBh!KxcWYza#Q0Z{Oxg&KldkG?6iPYxr2Dq&rghu$r3{9`W96 z3zYhBu@mT=;b|pdkA{uPS&6j8zH=&C`gk1G2w|iPR{1qU#Dy4u>4WtjT#LWOV_M`Bd6XR>R`4@4!R%JHOMQgRtF_0w@k6pj z3TxTO^+*NlQH;oF(#&3w8g}ZkvqG78wd(j#>R;p)yuvjxfAlqHT~!{vM2GrrRJY6C zeKab>UoM}2@g;+*SPhQ?7f+wZ1k<+U83IowYOs5Wy!>(6_-*G(sY@h4%$U+<6qSu# zl|Fd*7ZGe6MCyc7VCTjEn1BK1y7-QyNo z)7-319Mq7w#7f1(!^}V}x4``ip!#T0MkUVM-oxLA8;Jj`JsQAWu01ASEjE%|t}1dP z0&Z>^!tofw?dlLmM|CNg@D<_jL@)jMT6Il~hWA&uKzX5CR1Qyw; z%$qSB&+lUdN6l@0kIExF7aYNr_KVB97-9A?a}9JJIDVUWb!26B#<`8!CbMEuXCq5Q z1v0>4e}O|+s8f9Y%W7ulDIo!feZa(5$CIG9#|nPtFS$s5a|z?evDVqK;cTM{~a=S>cBd{9?+EO&)v*`P>(M?&7oFSM`)Q_`+2W%JE+RAx18lMyi2$>ZKV@ znu?#>ABX53TEQ=JwJc3?;lSq*Co_lv*mwtzcZ%!TPT&UsRMjg%iMi0;{Q^)@LhCt| zTB!Jt-3nc|Ux|#i9xDlr5a_L697Ay)rE$BjWBh6+;o|3oI|K4Nr`J^JyKoHImLJv} z!KxOYY{#=qf>K|1;v(ASeo&B1g$dkeoD)6|i$YV%QxeX%tcLa>iLs&(aUlj^`e1#^ zYkiSs04T^RYLY*iFnx&59q};{J$F&QXHmj=q_fKM=%Ypwb9Lau$Gs^n@1D@!>Z9dx zF!cSYa8toK&Afv#^3>c{pxhu6e!(uk#E^(B?=h76c6zOr5d+8oiQZ&~pr4IJL&Sv`fa!zvA6@H9Gyp)v>$+~sm?w9BknY}n<{wAePo}x?0{%R* zd|kB3$7rSw=+NMk2v=IXdaEy+X7W?QSMcxGAg>dzFLng0qx!Tj_w(I%UY3kwJOV61 zsUPVVv1R1h*V)y1WSbDEHd!Y%(?xZ(*>ajzx}ZMw7k0+>^sywGXcS$JhEVumGUx=+#ATl%T2itz>|kEqnTb0Z?}4^a zOSBb_6S84hD)3=c7R7S)te*iUC=8UJ-w(W7k}LJDA0jTq08AgOPkpVgYzzQ-_&MT_ z$DNP79_93;G*^j8acV6>2PP(4C5=?ze&SpPqT>Y6!@HV<-0F+b`8kuEXt~HESiN}P z_$WvaEf~)>m%%Vsu#L6eKzws#s;mWJg}z0kWcEYBDo%pcc07|cVkCFnRdF67tpF7t zbuzIk*l6AAZzetQ%{Q;h?BT;d+I+}Dcw!Ne@CEY$h0~DQL+4k-1rr0~{$pKHjf z2z;WR78x^RVBvp)4QFHMDw?KUJfZy=A}+)LOdqUId#$fy2>``MuA4iFI=v}v2dPvn zvK>bXea1GAbU9v#XyGWQ{nHGjKbSZ<=!yPttFNG)<)N}IHuOt~1C#HZywYP(wJ}rn zaLW*JS}v!)7TR;^&@`rm;JY^&yguKt9R5nk8B{d?$1u0Tfd%f##2fQoL5R2z12BEC zKHasx;XMGTx$M*=N{QIZV4D1gNc+frwZv}|^3uOM3x$nzN+u0Ofb1UFKOHNSe_ZM# zm>$6&f|!a>_jNAfxq6)$&BK-lrk$-kNsP+km+D(a5x@23Lc8BzrqQ=lg!ht8{Ihd7 zaru`O3(qdcj31%%cPmhyDA$;QMvl&l2o-ihqB2}axaU6+dJ<7WyY-&GGtq?;a)@uqJI_6z**Tk8;J#J{hRS^`=l|LFm#`edlym#>=bATam6 z_1t%Eg7E5wyUqf=^6eCeVV>I`Ky(KZh2MGJm#P#o*e~M25kFo%vCRadg8c+N-#5n|F05-{hCmDw8Nycgz08#)V&(X48?AaD3lb)!sf(?Lstx8jG~^>Q!f*&fPEg$7M3o@OPP9YGjFJJQ=xd$mO|TI~&2<9^KrDD@FC$?U7Pkz?O4vHX5egpUP? z$Vlr8a$LnHUQ#+fvL}X!3o!uG2kSFl>$@NUKzZev3Q5Xnnsw)s>pQvkCTxVlT|&q; zkx)dJ&JA9^k_Y0t4rpz|+cn4Wu|uJzx@06=iw zOj{pZxQ`K?FNUA*$o2SDH2>Le`Jg{@tg+_l_+bEOv`3nRb-#4@R^QX)%`fBC0it`% z4Ufw}$d8EQ5Kb9CxQYt8SqmpGp>RW~PeGm6ZW8_1!)uFgwf{a^*jB(+jmP^vtfDcw z12c(09f-IP12BECKJ&G{cL@Nb$U8#QFQ3x)B>&(WFJ708bB;1@89l}E?5Cro9t?4B zAZ>891^-fW^sT<{L5=F-Q^FzLr+$9+zy!S(5>u;n9pm{#lT3rxJ)}NR>Ju@U#yKp| zmAXC8ah}q1V$2hpO>$V{ijXxrY82J9goB6+F#yvC>$6m%^SA3GIS?b=aE?M88{GRF-2PeJ3cri{&%{qJQF>lvYmH;S zg+FRFJi`gBszY6%v!Meh_33y2R>e#%3ku@mDx!p+wFOBn3664+=$Ii7esZqOnt_N5 zF#yvC>$6_#hYVhxC?mUzx>Kv8iy8Tyc@3}RPg$#eIM%Y$l=at5e&!6X7$AR~$Tq*o z->KW$CuH4!8uj(ptK+3T&aH-Lb)~LROV~9<_MF&UkK!#6D52DEYwF(3_27Ik)x#|2 zNs8cH7Ed1(Q@wgmJ%^B|F@z@*A}+)LOdqWO^jbeM0ssmoJx11zeln@_Q~c3>UtKrO z{1+jjixVzWQCdA|Pd#Ixs4Yc-%nQ$d9Wt3Z)lCd9m|XG4uukE-_89zq{pFtz#Nm}2 zF4!JOZypOnsc*~{^^(Y(zqcpCmi@5K9IIR}sR2MrRt2{->1vCw=L!)QVgRNO)_-=b z|IQi!dPLP^P`-42FGvfuY?l6WhNQsnFAmx5c5hGTE^_guVu1G?52+A+B<3z_|DQIH zlxKfakfbo@JK~fBaA+9F1jQARCBIC(_~GUnj0sehf>K|OT}k9ko`Jab7m@u{l|;J9 z$@^V2&F1s_%oL^p#8_OQ)4(#`5uha2>AH8S9yz?=m$e1nCMQ!KQ;$@BKh$a$SQ|(< zh}+eoA{$sA+y*km6aeB}*h}-Q+y<8Telyu%b=UR^G4pGVU*(Ka*C8ayu_Ob+xvj73 zjZ;=%wSh#2+y*iPB$6~E8m;T1y1+469jW8yi}X_dXgHTxwNt3H)vFyK2~uVe^_l)j zPg5>j&2{Xs-dj)aNwn(moIu1wSUs87ef4Htv0bZR@FIj?ZjkTIZhWziMQqy0sMW)X zQm0kreodmHU?@jg!cnV~ZvJeJ)ReIoa&r=qGTl3>@p}K7Rpf%q+C;PW5T_A{0oXhP zo@dyv=b3a*07xAzJ^R4#K5;mI7OpEoY}_%CtQcj_{c-DiA%kCecO!vJBljnkJbJZn zUt^e`>t=hFD#mF#9&x{RA3wE_*7jg&iGH1}Hb23)nX3w=ezRA@S5?_>tIvtB)hs5S z6Kp4;QQs>)nP8VN5Y}bwg*63%IEnl(0$1}4$F+WL1puT+n_o=)>9`c1zsCxzEaA=j zIz7TkHHpt~;XbFFGSAZ}mTdCg00&2X+|rKV=rkmHHw#n(K=i{xDdl zER*hOY85h+`kh-(6*2V-aLPdD~1XD~%O(bZQ+;$I_%tgFDqlKsCOhBo>a6lis@NC*j`4!cIY`Bx21Vb$D z;=!ZNtkwPJW#I?K5OE;}VESNvu510O*8q_DJG8a6qkFP88R2>ZinfG*3is5RaZuONiFBC>{brOgg9(byg8S@FkV12X81foJ^K?% zeH9r}kCqb+e0g)@ykLAXnopb~sLd(3lPUS+VPwy?Js{#j48Zik`rOz0jc5Q6;ilr? zo=8{B`<0?ir9vuUR&$Pu2_L&3pMQ4*o$QT21|qd5g)rRDiMiEpV=lv0enNgn(%YQP zeQ#sRIK$)5qM_dQ&pIMh+SDj_DD|^GZ?NYSUWC)&CdsfY2(su!cy@Sc;_%!}X)tE0 zHt>ar3o!uG2kY}(>$lZhUbd2P5h+Y$<#ZW7bt|EWEmg)m*}w+(F~;=r_F>cSB2M7l z!W!Gsnxdz-`mT?*G;|QXG`CQB-|{!*_G{_{cGIE}MqvY5>uksNI4s$^Z4L z?`g8oCRd7|bQSrZ{2#Is>J?KnTyun$nuoI2wsmvc~(e zk-7}s*iYf3g@p=Vs8}(o~T$vp< zOBjevOC*i#K|LLi#7}=TX{7h+vJd~XfrJ-Y+6|?BqsJ+h(6WN68(<#BhR-tmJ_S$l ztKn0e5-KS5s{~c8I$v2Rn4Nj@1Nx?%pF8QzIDmWvPY<4>-Jf7D0ok0UWO5FMt<1Bs zl#giF5Z!-*GWDi19xQnC-hG*#(!EuUcR^f zXS@A#6gT($zka<;{FDBl(f{#uZXV?F@BANW@Kb^Z;9fnw+YJEL7YG1c-UDs}Ig<Hn^E|(s%3;v+4LlEeF8doy81jM#l&f|P(UUSt366OD@4P*+z zsNmED-v!&($VlU7qx~K{Zz7}QhgBTzP{Qd~e5(QxJ`6fi;m2cia*>uxbfsVI4^)4w zA0qhYORsc<7mYf={BzG8Nk8_FVokYFj>a7` zxbUyhT^=7JfCrX;RW42u?#<)aO8BU9dp&1z(Pe}<)j$l~jK*7?|Nq^%T741>09^jV z0e*|K08nBZuI<=1Ir@cRr01@VZO^k#CQm0-0xIPVX^sXdSz4gJ|8b14kge|R>kwOq z(Y7u9Pq7Vq7c4$#Z&Zp%IrGjk_v)YI_X%aRgy%u2pY()p(>Ol_8)15?z>;0c+KWmU z*!x!Af7I2 z{h}}Urh52e0_Z{##)k5~-RoALKGF|URF3CjI^(alWi)-3cXZ7!i^3F3IH@QDblrqZ zDD_*CG8*)MO*s%G66=X$>y?Y2Q0DIUL>M6G)$z{GI7mXog&2V8gY|{4^>=08oFJUfS-~JwOr%b1$fk$cQ@6;lc`ZNA- zJ^a&vjD(&G$An0>g1o7?MAMxVD)Q9yBst#puv29(ch>*$cD3IZ4FFs|4!|EC@jd|b z*a+nfT}SEXY0VErsFvMsuIRb~d`Q1ml)q<9;&CE61BK@d^EX+@J8$`MzqSGHH|34I ze4|XZ%i8><_)M*-y*Vk%xgtL>jf}GdN`4EG2Y1(fchKEBpX~fGOy!~I663_vIcdUn zQOkR^f&B?$Z9@#eiXUA3VmJI4e*qww6jj7C4E~uyhHnoi)9#h^`~Dd>oKZhSN; zC!ZY*lqE6FobC01zvagoiQnU5Ji-xH`}p}8e22nce!Bqn#PGmgdint>wGe36pBfK# zc7D_s9@vZhDfW0RU<-=qwwpSk6P0}^xRRE~=m$|3VgSYu<`=)=$KSZ@kMyHyC6#rY zXg+&T(2(L;+#BDF8LelA^0G9mN0MYS%Rn!q*pZ@ef81MsG;^RxPCTll68SuDuvG91 zm-wyqQ%v7F^_Kie>&`jS)W^+x?_>Un+Q>my%WdgtJ6Kll{c?qWu4OVKlk zx)1{}elWkp4L>OY0L0cPw_;U~{Ag6p26E&jcJ!f!%@jW)P)#;@q_s#Z}_P=0iZWq=X0~PN?G-PO*I*NresUi z3Wt^-iXsus?&B1Rsto`MOUmKMBTEi1`4N5}!5@P>DHcsQi{_jS$POxb#Gk7^(42ER z!#BkB3mGr9^!kPhC4c4CBNxwfd!UP%;7E6^a8&%0qq2MvCTkzhMeg%{<6ofKS0s`w z!S@!nxlA$N{usyGjPRT=e7gHx8rx|0sa%#5sKkG#xnU)k?!~N=usQv)LiVBaUr=H1 z#?GX5O4lRIei%QP|2df7A6{$SAN~mt0CL!z{&J+5csPm}MK`6)5K0%WvqkV}x~(rr z{P%}6D>b0%C!F`L3?y_{%^*?#cg-Lx1QOKnQ0M2(`e@T5To5ROv<~QHyZJO~cF2!` zn-6Jan$(FThmr{AY-GrL7~eYOjhByE8EAZ?+GO|wXDTj4woxLnDp+!SH_+1?aiwqf zs7lttDTypd&B~UySHnZKYH4cmkL^f}&PXJMKtAFNuZ;(&VWD@^0=LM53#SZ^t}b;G zm-kqj-=Zyw{x61=iQ9``k-Xbn<8O?NHM=amOhH%+AX4^&rM;-40HO1N1yzbpvfjUr zYC2E*K1(AVyqzQT^tpMjvnY})eEh_ZbsTBm+JBW#ug4=b_f95DDqmyO!}S#9`%n(} zL{(P3sch@yjl>kCIh$@Ay6$-#jv5qiFFr~-&d6ONh|?Lw0Bpd62fWnHe8+ZpxyZ@h z_ijP>`HH{PA-0@sdgF5nl&laugBFs~c}{^PM|B`Mw)ys~70&nD-JQ`VWj;@xNL%|# zv6c!;_X12BFtzw`}1e-Hrl>YKl61AcMfQva}eE7Q6=0x4*HgT}9lfX?l1)-e;+O`^NXlx&mj6NcOZ9N`69T+@R$2 zlj%Pt%dZR+o#8CPw3)@-{o8WMrwai6-tQplLJYw8!Td5e{1VRqps-|hXM(No-H%%g zEyT)lw-G2mQFa%9f1(ajNoUw?wgOu^__`&?LH~jLamzUbU=UHp^QA?m5AvCs%;0f4I*x$>-i=qA=PxPRBUP4~+0N>KFm8 z4~L=XBuRZ9(C+(->hI-C6wJt&-y;pYLl%ho9Rn?uErZf4bCdbQg81iZh`JC1Fn%z< z{0+as+T~G}Z0zksUav;oGgf1HtNyAip8Zg6`izxK{q0#de`1jj@E-ag+sAoMa6?cq z|2d7P8rA2=Ml$Jx(FcFuOF!U|bQS9%DQV(%?`dd4Z-8?07sK$v6tz@;H9>B1fVGw0 zLu~OD4W~jTYo$s?E!ZmM1fnj)0E{2Z|Kf(<3I_mUj7;^H&fR-4vM)5b_AxE(lsvkB zx)Z*ygBhWi3aM5fXg}R(O{!qZeLMM+KVA-<^HX`~^^wrCyT{cF-Pp&y`;S;Q3&o@T zM})DdQ1aIod*XGn3gieK5c#hhqB`TP#xGTBH+LoBJrwYmbBA>Thx_)T1F-4`SHI#7zem~S;Voh>0BXH!T#7C>2tX0nWP58pagEgBGOIR2 zvShrCvRzr0*e_qgzndw5Py3ieZ!b{%>S-^9)RBm=9L=$+H+PI>i8X5M);{o4tMP_wsHX9^DJ z#@z=xQgh0`b!NJ{u--q%(GB4iU*rfJJ=ByHvJ^8TH>aF`h~(zCi%xq+L-maWiw;VD z{`cympHpO?hZ<3NNvDXe;`s|utni?44B<@8Ve__pfT#;G0OJSqtKIMyDFZ<0V~m-& zax%JD)!vCffl@ZCsnE>XjjtL8WW{X-Mu6~Uh{?^3HBWWb^IWDY8(Ycj~ z{ajGz{WQawT&kn8Ula9WTj5{SBLW@ghO{K^FcREW|5^EjuhQsCH6+G{iMoW%xtQYn z$e84O=qH`(whq@-A~<%u?pw-S|#~ozjOmndi^j*;>m+*JNl}AnHO4 z!1%%Znm7DkegQ!B!|#?W2${{`xdtoUtvaIPOA-?rmPKqwjL+kL9yUD%-u2yS5g2f4 zy5-+1%*@hA8M&t<@*<6w*TDfa%J)+7v&d@w+Ic?n#N%Bk`R{gD?d`)=W9^a_$62-_ z=sj;=9eqhD(vI@w!z%M#Y<`Hk5CbrNFu&Ff|EM|uH2wD=R)5TP$s53&(#J41t4wzP#7K~3 zMZL@zgRmvRMH?OYngXaU!3W8Z&^cS?Y0TFI{$XI_^eZdV^2fv?rDo>8$X(@N{UPBX zZdWh;bin*q{UQC~*TMjxZ2p&K)4O|IR4QD$QL)(gBLuc%D-B0jsrT?j+Z}5zfDaKe zq>*d_rmh-9qW^CiMB>OZwqbj09@xeKiKAoR$cM)Gue4UXeEmx)7pwIIUl1hG9$M4< zhsl>hSEV^~v#four0%rLc3P4*i9eZ{m@fO~P38u*CxMGWYD_>HPO>c5eR=1w6%Bsn ziEmP$aJW74N#vm%YMw92%15YsbOy1-e*XR*{}reE#Y#}KVOzQ74Jya<;hxms+Y&>e?P>NcOKI#Deg|&5m8?qkt&g*2#|3&!p7amtDF1+q|eMx zWa@ncK2I0?DfUqC-=)X<);alvu06Vp}5 zI3(~}rE%%g8%Cx*1c6lFl4poj`bTE*;t=;E5CgCs4R}YRcg>Fg#|r@2_h9CfSiOu^__`&@8H~g4_08lM+^*&aYD5;~@J&s@ESO~jZi7L3&7H96?(`*_Cv&w)rL>`8{ z65-%05P++{?~}ho*u=5xuI9TvY360L`^tw8#UGoV7mjX?y+bAlfs#J}LyUc(X~FTi zZFox+37e5z?ob zEob^f4lic0%(cWCpJnMRT~ZW(TirHQ2O29j1+-V5vai(UGkN|lAGK?ELo@Q&GVg3B zxUNVcyu$3@Vh)`Y1W^}a0LBmIH@e|xJO_Xxd?)yIVkdK{CGuN(xYY)COdd|T+OFwj zW{MX8v6s|=FA$j!i|QWd-15(O#WXQ$KO!|_(j!PPOi!S~@{FYj!K8PT6EJ*x9KQ!; z^=mMnJ?h@2!tTe)NtMo?Q=9iUV0|(?XQ)+`+DIsr&kIo(VgSYu<~P3K=XM8xn0<2H zr`a(+-WR8>;uD{)dV2>U#b1}K=x*@pp2H7iQlJ=$R-Jl!J-93ME&OheR#7=ZDE`Au&4#R&l*jyBI}A|@o603iY^GOK_$A6k_vJ3qcq&t0f{81KC! z2NYsbv$R6|^{+G69%81jhoemsVOXzHJ*sR=UDTLvjzXBK&;Ky{O3g6O56bEfjn8bM zQ$(z8M?H~une8zZD=p*5>-Wu(M+!be$4P$*Q5RwW#t-H(^b}hu#vA z)%Lr#`ficm{i>+>m2`1_C*d_u)P5rXil2Mu2Jx_JTu%N7VOJ}Rm6XIziM{A7R;LtQ ze)PW{cp?gt53>LCM~;e;sOl1e_Sk~Dc+(ixeeS!`o`aDrb6pwY9z7l9DGT@LX4rjx z{ajW6J@zG@@_nYbW+=eDx};m|G)3P$O?x7_g^;Qo7+gYx8VLuv&pNbjD9zffAjUa zkK|1c$$yi$y6ZZ1{Zqn!z5=el1%J6rP+Z=)e9C~U@8RLlD6YQVY?li<|9$)C4m3D; z;eXwKwd`XS0Jyy4s#Bytf=9D9K@H^62Z#*$I|(^Ki>ZLzuN7Ve9pn8R%PKzgdM0-9B1&z}tW3IrLW=3BAmL z<*{~QCYR`gRoZ92Kg)K!fO0lE*!;fM_-$qEE@SH>RkR6d+vd)?P>MSXvV2Hw!$0f`> z&awljSy5`2c{BjN4kq}u$k?Z)Z{ib7By1?w(Guo4BwuKSrSzV9*9Z4>3C4HEZ9vK2 zOWw_*ukJ*X$Jf419lpM=5QskRVt23vUnkc%p2m3x;=TrA;NQ$f(EmsNfAddX@mmA{ zE}#4*zjGb{B)U%YGFe7TQ2m(d_3}PB!bVAm0JSX@WpBBg#-gSI7m&d;@=o_V>VF;R z79wnr_5AXpT!mP20oiR*iF$w`L|uph7(e*6h~*8x&jbKOBxuNBlV_ILJ*0?PRjSjS6`>~_ zGCLwqf|wvqIa;U%bV){2TamI=zI`K_LajO#t^VPWcrBYtpWg- zk8@f5VKe~H@?AQ8`!cd}j@ah}&-X6wOOFsS?5J`jEE8|)R#@o#1#+VS?4*t>`fvHg zPksPAaO^&}2-nXf-1!<3bN}TNBdzzE?sV21A6C2GLdj3=lQ*a8s86gO7-8V8*fH_U z?r-Ellv7^FlhVx*Y=S0;#SJk4tA23xTi@^}##~;fDuamzkOlW3(;V2@B~$pxu)9r> z{?N#l@wlaRa#?HghWx`x7tKv&?*ob4ItD4mgeF6Ib`m$vIYZ2|z7 zk8@f5*<=9F?0Dg`-$DnO7mguaueuy;JvbiO{^HOMq-eJLf|m|R2f~*uhPlL{3g1>g z(WrM9^Xe-a&w>U4L*y7_Jj?^<{RjOyu8af%^3C|TP*%TGeT_fhlf&Pr$a^pBPQM;Y zVxIl^3fjgG$rqG*<`n{Kp!6TxUp~MUzij~E^42APc?STb06^s-@Gi$YU--gtC&IRZ zTk1#M=q z{f0wrwl@duA~fXE_%a zchQ)6o_nG(jVn?cuE6&FmnHijZ&%fC7XY|?oXhI(wF7`~KCbm@I{!qIb6p~MotiTi z;rI3{d|0_%x%`jLlGXY>;A?IaF$ zPqk9vi{Qi`8Zc4>CI0~5qU;XJFH_7%i5y>~y9!B{ODQqwa48N+)_IW{R!}s7hYBxc=?!vqldm9jp4<{ z`ndP$aB7Bf8Laxj)o%~xziby-=#Mbr0051nS|QQk*<;1DWImbm=X!jSrKyLM&?{Z$ zUX6l2{TTyDQWAd==e9g|)h-hAf7dRuEpT_8ji@aArI+?PwFu~&e+NRJYqEROEBbo- zoVRr82URBb;A{w!S0i(o6_b_>;S$Kszlg{B^BP-oS4aNhtaYK)EnDHB7uFJ=I3meQ zR^@RBjv<(7>`fup7tQ-EsH2KNSWLFg7Zcz1?7#@~T~A zRp%Q;f)we~!T8!=4sBm>nAz6j4%G}^F5NL~Iqi@`0HG?mB-F;YM$OVDA-6XB$U85Q z`6R$^TT6L{y zf$GzzJ+EGLFPqQ4CKpWj-vZrg?uUH{Yfxyd$tnOk?Y<@c)7|l}JAeCLrvd}H#by-!?fWl$Ed4^2`uzh*sq`PZTm^XMUn8Mg%R$NSzF$;k z?!K@`(4|C};d&gYp!+(QTohS8+SNbRRNB)FqAtV$j33PJbj^W=ph0hRm zAqHUlV1DNte(Wp&$V<|FtiGw<9|bkp8u9UJla*PFk%5+#z;ANJKWdA*&w#I^ohAZR zYQPs|27ky!84@Zrd*)`e!bM_vvJ51{{-pc1sPj8g$UVn+8JoyjDEX5`7!;)kR@&}u zp)sT94`ZZROBU>&hb+4C`$!Q#@mq$d3o!uW2lKn!@RRaiwv5Wywr$4WqQ%K{9*|M} zML@esz!xrXaUP}Fl+U^$+1k!a<7?f) zI5UoMdFrA?qz)zjF>g>UpRtkuHl+aGoPb}U*zw?c8L<6znUT2ZuTL4U54qs}54Nkf zy032d>2@xAxiCp)`1M52B`1e|`a9~RLztod(r}tUWqFy(a`QRz2GG@ierk=hBkPtQ z@K_HaqPvH9vXaa`c~J6CqHhnMMyoRam`HtHM>+Nql>8=Lp;#=P!2=~p_Or2xvZsKk zQg0f8J-H}r6{3p=4o@H!H^cy}`oY!jdc)7z1ppD>w+fYm!<2mGp5b;(B|L(nQE+PF z@6siWfx-xE#J~sooX5E9Exi2KOTX$L&CC*F>nQVm!RH@RQ4i~X3E8F5eH{(p78W7J z6n+FHf0wQBS4EK-V}AA5+9kd8r4o}J^zX^yR4g9fLB`&Shg}!t|DgE6{BAe=;&lMf z_cB4G?Dv)W`EBqiVG~a8xbVvBRN#(DH25owdV_v`11bjRZ+1LsC%vuy0Bi-H1dW-K zi`KD80nawWdms8Y=wFz}U7%XNUl9HH14@4JcSD%Whs+|yUxXhisBlI9j;Qo6`FVaK zcf`I#MY0_OvA7`yVAT)ie|^KR+yelSJY4*(@sf)G-|Jg73cjgSVk`fH4wBl@v3qs4 z317a+0r~i4KB^2EEnM>d(=PH=@CzU1KQaFgdv_fbRogZUpAzZrl1`;lX%G;Q?k)jo zB%~Qi29S~z6b3;WDFtZ(5d=h98l}6t{6@G2pXYtwwdP)PU;lk`x~^du4hOIG+sAS4 zy=U*^q#oWyUUgyEePNeg>(GFzeIQrDh0FU;H5W$y59>K1LO>RThrvF3D2``55+<@S z%sTDpn5GjB$Y_|eAk`bqI0YYA@o!RT<`O5qPB*vJkWJd8KAXmQJe>Wc*$Un+5_*03 zGxvL6^8aZUiEMTN03i}pk|7z}89A;_ugkiXgn8WSqkgJ#Mg;mXmNq9^wgkkICmRc1 zls@>=E)omUE)sWM)q%MT>(r!D3WM8XI|ZMWjO(ghWC!{zdLG_lL+e)@y9nC5tj@QH zLD=lu!APX}v$w-nc|e+IS--6{M5(;ZsCk55zxY7v$iP2JtkyKFoN}KeD76l9dNF5Q zb7#&9Ylc|siI^`Zae?3@jqx@HJt-0>&KjTV2-c=CUmZB5=J|QP{IF0#dPoq0hpxG< z)X(0|3*cbnqpnc)fm%hN2EfbAWts7Tlo@Af0O*YTPFzH%*9Ts_SCl%r7$&}sRJUrQ z2Hd^+q6Utbo*4oq4d(7zeDwc&9i2D{rvvY7cGIjTVveAPp_5}#AOAD7gXf$V1`dU| z^l>nj8T%kar+!-c4B@0uKkE`^maqC<$|1uSZ*0$o+osv@(V*%=4S@4s^7}&g{fohO z^YV5iNuQE}&=8Nx8J&Nhm3RpaN#s2DaM!B9qQg4P0+PHGokVtH;=SI5HZiZa=#st4ZeuYP zNqG3#VKP~6xbkiW>Z8rgR*mQ=RgMucplHgu9`5dH@ijle%8)x%u)@?+d+)Z2RAe;7 zUvhCFR;U}fMYb)r_;0LW%>M3oAwRtbFN_O;gd?wRZ@ha`VyTO%bkWMS;)d^$_X)lp z1;W2D{_JB0K==zX03gF9Eut>Ai`CWRFHV{E0i|^7?~Kn9?uGkz?^9fGrAGtrJJ-1k zo0GBu z(iZG_16_lVpQ)BmP>{ZT68PxF&uI=jh0H(v=f{Xgpj#ON`nr+L80as%Dprl@=uy$W zjn?kfuf3$Be&qN;1J(}&s$kj&UfoYPg-?x^%%Uz7pj1(i*UBS4Z}rrHUQaqLML)BorPV@9cGf2$K-CZJ1{ z@%_;L+gN!|3OD43Aj$H^v013RPy^upSN=f||6y?X=kMrC(YoCm2-+JwHn8~hCD{nKB>Tr9Q^?2q*L81WQT z5L(EKucfhmr{;&ELjNpdtymph4&f3>_3U0s)S@yvjQ(j4=Nt@bb>8ojYcih*vzk-k z2V8(|s{-{NrAtvf?^g!B>9i!zw={KHjq{iDzw7Zh^of7vn;c^`cIr}B>fG#sclj&ZnAU!dJYqm*jOtRaWkdVW~U>_m_)55x|- zIO=Jm75URL68k@C8F`LQ*pNe)@=(4e@n+70oo3^Zy#vA+daiY4os$;Xcak7xAGBo^ zk^VOGeSk%kY;yi-y3&R`s|dcX*^1dqLAC2z<8$`4^3+R1rUl`oQGA+#dOiRbw7qa7QtaTDpqV zy2?1oVPW;+t%cEO&`veNua z6iwhS*VP$FsGDtdqJ z-ONXx38R0*uhTTD{t^s>2~M_ndpyPv>zLU{P3CgHWff%lvcq1eyifz+{#X7$h`$W@ zVwN_7?*UDU`|Y=^%ID4KV$o{)ZnBVIA{0435&0oV{PPF!uJ9Nx@lE;5wNEeWfAOat zBc{4@@oI*G?wNWyof*odQ|ZWtILa((rBzRRZ5aJssOiu>^j8ukSH-e5ER%fr@~Ms6 zqldySRv5Q#8@W7z$_q6B?tkSU0rA%aU(06b)6nXJ5j9NB_VyWHvfDl4neTovw*||{ zR(Vf^YCFCI1HAMK^&em?Ug!VUKwe$aNUfG*Y=o7~XsG?&k>?@k|WfA{SfB@eUi$*G0WzZMt3?8>$E zwu_W5ub1my_rZtLuCV$3m6dKb`+H%Z-$CVt8UXjd@_!ET4+Y=Il2I2YQ=;%YBcr*o zhmZ(W(Z6_l;_x9lk5xm;czwnsI*>k9Q}b)CM-Ak%V-n3ESSArB1MJhiXoWSV+Kw0n2#l&lgo7~dW^Ca$)^@^bi>26P-iPUUH(x?Xi z1`VT#{BUs*xR1~*)yGF^>{r<1hZ-3)uz!y@_;g$>-4Zlj*IFAaPIRMR{|)Y>3Xa)f zfL&GvZ`pyMn#sw@PME+Se_Dj=0l-6${O23Ae|kvLUjGom?7EvH`1IWWHU9RT1ivSE zpdixz`SPC($$x_Wz6JOW`v374|NOdte&uDz|Kr!wUWcP0pn#uWe-HQ{&o5)Z{U-m{ zxIF%k4h4W;ylftck_5h$EubPFy*iZ#_1@5@Bip)+d^ttRLDu3yRFxZwC@17wPQY9D zBV@meV!i&;JQC;MY99F@Cg?`(R>P~hJ`L7!Dy<=I(>7t_CSa2;b=+*Es~rW1?7=3r zyCZc2u_)#^l5_%HUsznW%2&(a#J#Kl`zcOA$Y-BevkR|`q85%n-Tbks#;5WIcl=v( z+&2IhJ1Tlw+~-fQF2-&WpBBpmdYpoH)XnlaVSrSau!%DT=&8uPvz&cOOc3!*d9mqt^!vrB%B)_DDx1qwvk zk`WqAeZ8KKa^-iF*Q&?O?u(IXE#TBPj#4?P*M_&*Chs%8DVSuBfw3N)&S@vpk>_UU zRAqLi|J3VOTl@KgA-?!d)Ei;kJn|j*XJ6nN@?Ve3dK4Q90KXB~zY2U;Jut|Rrj%=Z zQ}Z|7_?ob~^JKJqdVCYxNm35`djs!J{6GzdDehP46PHV6ULKFmzt-p1Pg-@pCFa$O zVSpT)^V|=+?gF7AXteu)M=1%`WwLDnU)vkOjRaKFy?=8ixJ}| z*{pQ~_QcQ>g^I59wg>sthV^?W(%AD9Ke4-^@I8ze;M3FtX&4@S2mfoVr!N7jK1A_#g}t~LVe~KCl{l<+tCi?NI>gS zPgd_q3X*Goy7efjG-ooO&O>*T1G2iK_7@cQe1hK~vFiK#e9~3`!kGWqq^?JibqqVN z$}-+M43zBxYR^tu-s3L2sf2&(F>A$wn%+v{`R zt=A-z{}>1wH#(e2IT+zqAh8Bj0{P2T4}t5p`PcsG4i4z}3>s6%G-TCJ)H4JK>bnu+ z$nrj9HH?Vp4Mu*3(cf|yl+fwzO&;-u+k3Xj4}~;DghJOw34JL5FF6aFu>>kF)Bw2u zm4D(t{x`6|EkwuNT}z9HSEt03X=g>~=R*v8dGj9eOp(d&aVlVAlXC%`A6tTs`3QZk z{W)4!mW01~38rU#ZDgvO{*+f2<})BWaqOxvad4GC)g$+x18)Sbd)#v^_c7{)^7g&F|&zw%Fp_;Z09 zi2EouIiQHfBzSyr(6fkE(Iu(++S&;425+ayU(wTXgr@V?y;ndKa?O zSi2a`sxtLN(wgl=_3e?{9;m2mZD-Uj{R=&258VICKjqRN+(vRW!hi}7$={FUhdT%UtZM*w)0#AdE3zfpl^>?B^n%RhIA4g?0YFm75 z$8XpvQSivm>-)XQ9Su<9arz=;9ZUsP{W}t@qbcvYCOOI#XIp)V^{X z&KCr|Uyf@K%I8Ju4Ne=L8~kY_=`y-Lj9hImG!97SPVo^`)cm-uiYrlM1PL8sG&}X2uve+p!BOc4>Z{B|F~0Zu7jE*faCcaAZ+_G2Z3TIq()e zllllBQQ7s3XXU|0!ihDkP+F?~imq9aWVD24YQvO&8zFs$;g~3!1xEjX_!tVAoA~Y; zvK#A8RjiR{3vJoU8$$?`sOpmCC!X+|z5WIMtBUs$;%^0BFDaItZ0ajFF5j<=Lhh`| zfTp34IQ*aWCaZImi+BvhQUyTV{jd1*t#^rlUSkiwZu7t9p9b;w z1h3r|DDQ`Csh$~HI10#gM=LJrSEmWtHa63|pZff}p7CY{5YI5efchle`PyF=xJ*p5 z<;9Q|R(GL$XZuUN^7M~Cp{k6XPA{B(Irn*pZ4bqhm$T0Pca@?yi zbl_IniqdJ%OMtpV3pD_~$8(kc=@5S)c=blIoyQ@c?s{2yuFi6V^Kkn_GRcc~4SY@? z9Ty|~;ONs2G*f(n@_YRJ&nNI#cYC5z23K;JR)3PMLGdGXzk}v`;LOi7SMti~R9-Ou zjanLv{)Aap23Q|aaev{bYV@VMx;0|SZ@dUGW38`t=n2{Dn1{*>H305^<^KxepAKHU zHI+~>x;(mXaPlOH1V?8AZ(M)Ijw=N#MhK71PjMfR2vnw#NbK#{KfLyrOpE(IZuHE< zf}KI@v<)4bs!8u7|D8rIonKs}Szp?>VDv|j8C}?&3TV!)Lclno#pN0c*cJoRu;fiE%!uMs+ZOodQJ08dg$)kh^U({&>Oq60sxDR8W{cawR1%x zL8ZZ8upRT6Tq9dvysEo-d#6{fquxD_g-aj4bT`7kFfRB1Ga&v=;HBFM%RRg@HfBKY zbV!vd73sytdJQkEv;z|~Nk>JBs3g6n(zlzmT#?6G zGB?csruCt9fUZpkig_oD{!-2OZM$7rH@IRDWiY?@i6WqJPqk^?Zwv^N2za|u7XvlD zp$5S7|0@48A^!a!0EjIW(;-X0Fd?zm;7cEB!Cju0p`nND6-iACbl$s)Ssg$>ZehMt z6rQu|{P&6_bEXvO4$)_-Igc~hq*2z=QM3v9{?1~Dr8-R+PynO9#ysbe$mHQs`u#cC zUvp1)lW0*ewGE;X7wvLsvER3^LFI)S0QbN02SNPj%>W=@esO;{epfa;`4|G@7luCv zEt9PU7c89e-DWafv^Jgq@3BNBmE~EUg8h-K|E%7ff^NpZ^og)GJ8+0Cw8qHH%)07r zFkwGFA<1A!@{-vujQ)HscdE{YJzi_9#7GYzFID~;2<@w!c&}X`BeIU&xz#d6SsU^wZ=0^zkm{<1kig&X-@ZPS;qqL&mV}BY-;z1fp%Jt08FHQI| zevFhg*L)oG#Dx}5;!i`#2++_&+OFqqLGS8(eN0z;pHVp6+C%{QSktQSmVV)AZE^yk z)vf)`mU8tlsBwB_D^_|jZb5H_n}+(c%lVNfhcd_(a-b0-A+U`eO0YDrLw{qXrQ7bYyeJWSVo?I{Yi zjzA577n-X=^X8vIgNk_<05U~+mWA+iPv~Ytt^=s@(}{;XqxP$|;O8Ar+MdmjzCi)1 zJW%Xdl3yXeo@hWKcE5dwTxU}zrxicmJJ>I+JM*AF*?N1I$niPtJ~ga`29e_-5J44z z!p{5a2(J`F&|Jns7oUV0A!k{O3`@4L9#mea0dW5-|7?gqjTQiuKOfwT9@(W?@#R}n zdx9zIlxK$4a}${oRoASr#|+N8?`S2o6wrp$5SH zul#c${yfhCAap*asef`KYzhn14`}2!!nMYgB#_n>R{|>TFZTI4) zLlS)YNj~o!W_(Ms>VEa`rFf6@4BdWx7AlPX`x*LH!7cLRrqTU7DhlLkWyY1HV{arB zRmr4lwn%o_pr$v}0C@gi<$oT;-+l=I>O+2jVTo(1$cTfvM4=JyBB0GaIQ7OnBaX)J z9>Y7Ddq5Ibq{d&19)I`$GX1J+%L%8+lHz`{%TXqLr-|*C8cLc)oBpP9Ylqwo))NhU zJ+_XGd$=9boKHA*gzpGA+$?89i?T`l$il}=@=MhMDlgOkxc`-ZKEyvT6##maSd{+l zlP_&hd7}lxwpX+U4psI`{`k`x&^Oik9EE-^Vux1B8yI#_aydg!o7 zeQv?%{Gd=Tju^esGnHudylEQ7{4WV`2smw`OO31f&a~vY>;8Pyp+}M+Dl}=cMaAyJ z*)CLGr~z>QEB^wBe}XjtB(AW9rxQt>>4;(!so~{}6^X;9L6zw;_zGj5&ng7IsX?z{PQ%xCmK0a3ZLs1$9O3oN#;m< zlM;v{-1{80*eNl@d|)Y7Q41uH*D;pLTeAV@|5aPbGaZ1ijYYHUfv;VmX6kBl2aA(k zrq+EGlauQ1B)j*pu3N-Nry1(Hwo7rCKzhL|sh99Vc=0aQEmyP~Oa!~Fk2eTG&(FQ6 zC?}^xH1{$$)bgiL?IG5d*u1<^%KU;xRT~rUZlQHu1IxQXph&R9enGS0(?4w`@&A*ylGULt^>hoP z_mm!EHFW!{a1_?3pD~I2HaJ?sk-YPHi3eoc{4pR*o@xehC&p(*V}7U;fq*TqQ&F;` z+U%``^`0o?Tx09w>|E!95Rbmcj=z1_FwVXxGL^GDOnGFpJ(yNcM8OMVt#MgadvN6M z-J&;7r}8qTTt{O#mwc>eOFqWbRXpSin=90*1Zn_$uDP0PiXpY;dnmYt?Ym*;1;x_$ zmbMP39A>&X0dEm2J8bp|aUSX{<4sEJ1L;ofkB;4tdaw625X@e8$snNh3?^nf)yDsd z7*mS7yE~jS>9DK(HrW%Y6h?m#?Z6i+N163lIk~C4Vh?8`TFDn=^t8_z+7X7GWUfJr`ZeK*lZO!b~N4#Zkn)?j!8+153%_jhb)sV-; zq^F#6xcd?z8&f4g(lSbC0s zQeEy;@9o^I2mSi}T2WMi2j(>i_{+wShdvENqDMo<`La#3o@zScx~WE3h6{VsJu`E;Qm+sHoGU~}`GoHT|3@!kY2gO5>VX@l_3 znh^elak>Bh9^&tQ2ENwlUWl8%6kl^!Y4hjxdlT9W>$iV2Xv|`5JA90`L#%Zn8TTm2sUm5MwFxjwhiIA+Jdy}92UJp_Kuo3ZL zwD=nBTF?U`dpf${(B;^@r;3~gK-y#9vtzEXy%}7MiV@}Bp(QkVmH&VGF#Z{|myiGF z1LUXw=j;FX_q2as0(X8yLO{80;fRC)`1`Z}-81s~bu@&3+DiWO3nl;jB=q{n|NF`H zKT7h?>xi`Ahd)E%>I?W0{M*5gfa~x7#}hR0KklDj1^#;J{~`2G1}nd&yo6Dxzb#_Rjk-h6R2eAp)4(jK3?iS<=#^;X_n zz0>2}cJf3$$oU9%6!HfEZCvkjEQ6YnIGlI$hWn8#i+;w0o?`cCSztc*Z7EhYeejzN zBo|ICdM`^Vm?tmeJsVbvkFv^Qnyv;aGSuk?Y5;sby4oJAF1JTO$j!`W08rs%3e#|1 z@`g4^Ii-KYW;d6STr_Plql>pX}JE{Lq~O&&0@x%`eI;VEH_dnb?GV92lh$61OFVvtM-78fI zl^1FN-2ckI2IBuy5CEF&bUaeDk$tR+;YOKkyTo?8y*KhXjxEoRjf%jpfC|yBEqS^@$wBWkC@q; zRz@Gy_w~1?cA6Xz3%pCxfw~$QJN{lYh&q zTTDkrwe=3HZSG&2pEX6lF#|!<9I;0twY3&|86YEX2e#>c+d`?nZ%;lvH^en1r>VA+yah?B+ zcoOX%dF)fFkMH9q(%QYF%oeuO?@ruFh{xc((WILTWBzNYx8vm$3@#x6c-PtavTvhf zlk4b7AW&zj83;(aef5FL3pD`lf8}2f@u%AZfa)3JY&TJkH)17t(WW11Ui^5)*jq{W zG#gkhYs)8}y$rlxB*-@?z=D14uZ&-R&%{d6JlyW61;a4vuCR+neS*3^XXhlnQuwfo zDUAMv31_H1`oQ}oy)2@t(Q{JVl1vz3qxNe)y8=~g+vWmLd7%ct{jdBRApXJ>0FXwR zJ(;j#QEa#DYU^h7aQ`d+Mu@+P2>?{}4(%hlofXSM$nZ?nOKY-(u1LEb)`8Yv%pJ1^k0U04 z0dE((A5G!Rf&H)AN-DD_*#sU{83jKuk#+OOkxDZO*YU}H+p=Y-Lp+xeqk zyck`E*=hLsn9=$8Yb7$?JJhX>vAoQc>f;`HAmx0}u<2`$Q?)arL4n5!&z9459Vgs^ zaBcA=;_BUn2jFcb5ulFCiT~57RoOew6OzFbCPPr+WTZXFstYYEOHb zQu>eGt)vPnlh6|=Ki(vyPG#ZDRVc46o1!1gqOCts*}<1yrjJ`vl@+JIk?`V>4MPRs zl~DM5kE8EUO>4n7c3w2X=d**UKWWy5zv!A}M)T%D{e#&WpluL70#VS10w?`ePQqZC z;Iv54U4@*m4ek(NJO1k=y(hEklEd9;Uvp4juUhJbiSqc~1-VvJ6RCJ{-E=PEo*H`? z@oDyHTW_$Sac2I~tA{(>%Bheuo{jlafq_0LKXqs<*f7*bzaQbpnw%e%lw_mLNIvv1 z%Y$)?kNvbEkc`*+)b}Fk)9t`HwSw;pQYPW;baDt((I3Oau%Q+-r~&YbcUAE|K`NfF zB={4UEPMXgWos5!&HksJTVHGsT5FYT@D1(lzYe~`eYwsDB^zLc+&1`G4Dr)s5;()-c*6-0c1wK!l+OLWwf2Xj|Di@vkh>s&DdhfziLd zGDSx{Jo{HCLx0zDT@8IRm#J40T?Dr6c9~b_yu~A^yifz+{#X7j5dZu%0LU&jUw8jj z2$L?UNa~Q0F0Wv8JVPmRoXj&jn-{LZPH{liS^51gy8Lg~`7in5f@!0;TLKU5KEjsU z!j}i3A52Z#L*A@vGWqlf(cgg4pNV|Xb0!aax5(GeW`j*>mUDWMVkbOCBAL1{XhcU3 zzOXC8zc4QMcv>O;P3{1YDDns+Xa=crf+009liQkV>Xwujfk&8knafVkIU+3Nm57hB2Dp}?GgVbv;QF;)a>d50PRum4y6 zZ4m$UU;v0}KqvpR+gb;E=nwFvblAQ2`WN#aJm!%?%Y)3SdAUD;Pi7Z5K0a0Ty7uR0 z9xfO)3<<%+-8V-doMqC|QKj|3$YOFjdgI9qna1(Kwb^7l=9C zs+mSMGJ0l)V&m1!9`t_WBqXso>xk1me z!orT}azDXGnLt5gp0@IR@Ch%-@!#WBC)2g6=|-gP@(Y*m6tUY|IQIw5k&RI*s0~^Y znnhvsZ|2EcJbzcdFy4I1AVW&e6nA;Dr;wHJFkjQ%~Oxr+3UEw)vEYnfA@K2P5&kX`#;o7F}f zC&4FdLw64^XvJ;5VTqtAh&>3>XVv+-Tti`t4( zdJTwZN2GUSVX_eHf7MnJ)Lm}07<$j=8^RKbuq{WS17_o|qc=Mla=5SRI%GM#Vf0_U zuvgt+(D;$N*ye}8@%!nH8y}#Ctx!okrMbplfy5cKe!xmxD{rF|qxrktj{mV-Ym`TV z^XuoNo$w|E?tk*l8){5;2~l=|FE zkZYh4jGt9U-Mu|{0(3S{JH3mPmiVWwBoU;oBm<@ItrP7w;$F(=MNV5kKL1Ih_g8Ht zz2$ln(Xw+lZ;S6OvRAH>D{g*6#LD?Ft<_d(D@^l36~tH6@c0=oNYOj1&Q?5h%hUG; zNfW08#-NyXkrkeR6E9?!fKO{FAu!IC?LaifE1K@?`s?c;o3XMet07UM8 z`z%1KGD+`+i|f~@DV-M*wgm;%W9JGPymasRFFpWo0$eWm*x8G(CmPz&-|k1`_xdRJ z7T=DTD$^`jE%1*tHs*euV(n+|uo;8VU)(9TiRST~pLA?d)W9F>&pm=QAbK9p+&Fvb5AX0oUT0&)q82SK3FCa}_U07+2z9z17Q0e=E82 zTlomK^Hd(G<(S|T$A`25-)f~jhNb(lR}EF5@RT4u>(i-p3U|nC3Htb8Zm1I&V6bG$gXsKs#dgcQC(bn^n!N_OYd=8hp}tdG zjOy9PMhC{!nE9z&3_&pFKS7pL2<4aZ;L7$VMUwPA>3!+HH71S%w`R~c%WCnr;g?n- z{0rl9N8=mBzt9c<8fv+C{rYRk>Ctq3z&XhL0+igTz$Y(7`84-sR~F@~Y@m>qO|Maz zxWsk-|9(AN@~c~Esc2;H*_M^pZJJ{;GyRV~i>+d5TB_(tb+?ui zOF@|D(Vex)3}T88L?|u>L1)YwP}3V~06hP%^1lb--x31=@qSJMaO+GJbqH;9E}#d@ zqmJ!bq!oVI4w^;mQ($A%0NSv=RHLk7e|_yw+?dgQig5o>^quX41k%RD6kw#)MdOPv zyh8D}mGs`j+UjLXRTDT7z`STB{mxvpAJzTd$>EUVWE~RXiC?BF&}{`OFVq0I|CK+u z!wxr}?OZ-H(DhkCvm6N2x0LPGoEGn@J8J+0+vl^S|w2Kccon=It@g+v37c zy+8BZ{i6x{V@?IuiEeS*7;{18g&F|&zw+;e`0sLqZ>>tZh&eA6pk8_=rZbO0CCdF0 z1GDPDnNnU1UAe+b!U!mhrXGSgzhZFhk3ygPZX{(->4`))7v17q@r%fjTsELmDU2e_Q?Z@t-M( zL>n}hy_ibl$BJ+WrT>cgQ?5EpnEipT2l0pzjQ$wMK08qX)Vuv*M`(J%H+THG^Iv-a zzdSc2X&kCN9AAXW3pD`lf92l~@n=*7fCOap*){^OOn9x)DJ(CWeBwmaN?|qAxT^X zYg=K!L~N|X!ma096($zz0yN(4WWs#yPPHl0vPJzK!I~PyjgWvaKYB7zzM%Q{hHY25B)>XX##j z$mg#<;p+q0@j0*G+w$+rp7Pi90XZ`rqf_;A^#8P#B>qp@O14Xn?TqXi9iQyvShu8(vwM+>yKT<+cV0!O)%nfLPtS>>tv#h?-S#-RKS` z)u4Q>nKm@~<#B*W+Wm$K174uSkEj+R1Er-MX>P^dRmmKImE9 zA??!+`D0v4y>S@*-+%WG_!T!0FSOK8iYY`!A%LYu`Zll$^@E{JnFUime64hFefY1( zWvv+s1%TfO?C;bM08M`n+luI=btkR-p@=KNU7Rlbq$?y^fZa_BfyHydm>7uUuOz|I zLHYNh)>q(M{L&5=FVO+cj*#eWI;`Dr~&Z&zsmn%h=2G30Az6o<1p+e`#mo1q37o6 zi-wl?nKRyJ4cVv9sO&(@_$WZUhYq1uf?|JskpVyg1Su)mmewgm(@%(E{CW5H-+0u&>V3y{kt51e^Nm>)DC7>T>i~?9ULR{B z(ukx-=}29CV{tDx8D0D&f0sMUlU6%m=cd$$Tb{*5Fy=qQQ15}8VC23-Mr%iD-H|~Q zsre^`;shHzWR(`>Cu{KeA6&El>v38CM?wMMHv-rHT3Y~!Z~87x_UVU_WeL%rCyg=n zL*}Z}d~Kk_XgU0XqD3tPpjZ>P{xq&n^0hzfvxkqvZ1PaqWbw-;`_E0*?n?@_`n+{E zvL+PNx}i)7qkrU1x1_A55;u=nbbtwI!VgbZ3XNm?+8fo@vu>t(V#QF?8)^VN|F80Y z6yiTH3;?AVxdgp>K7-USSTkYsVE!QoS=jH#^QSBGE_ocFg8XHmF17Xr#!uSdYySyh zZ(Q0cY~{^-U|?t1C!J03ZNQB#XK47(6dAv)a_zwAZxl|%vd!D0zF(qJ(Mn}z|Fymb zmo4jT{BTj%3gsOt{5D>2&i>cqGXKXy0pK?R=l{9|0927oydzJdN0r2{FhW$ZbV|SC z5aVW=-#|R8WgP_UDgpZOQU>(5@c&&a{aHz0p2-)C*!vB<<_4+e;=ifwJ_5cRgsCrW zaNaiH(1g*ydJK{3B2KUw5eKzdxMd6Ra1tt|g$;5OY|LnbF?Lc)2y^V)dm$ zr)2Dr<9&gNhc{Pow4m}r4S@S!`A#0xj(yP)$Mm~R9lkRDR$ zz71Gqa<1TI2g-_~i>Hax;e!3I+DdMv_AQy>5uK9@BsCPE3E6JV9?-4L6{Y)zN$jWX z_`ur6r_$SuVopBqwK2UO`^kBb0Xe~q#|#PT^z`y9dhAxb%b;=3;%`Ymh=$lolap&C z4pZ!JeVg7tbh3TAzg0g{V(121sLnMCnhsig&2*UA9@Vi(>8laRS0gM)*@}k8Q@Jhq zKl~BF1@LM}{%tS`>And50Ra5!b(_e`Z?B^N_anGt%PlVjr_wz@)((zT4`$BCEfy@9WpF2=_p$5SHuj#NX*B05pE@hQP~(B%@%}{8lIDd(UNW6F#@0FMUBXDZ++%|i@XgMhzk$9> z<^{hhO=_?6e{iMk{#Z`wv~gH~6kY5>}!n2w*tgbKjGr6rL8_2dh*(>FT(Lb^tzd#p=KK=41k5a%vDE5F04dO9i*2vUdd=zDKZR%?W%N8|m~k<*%PI^j{5&jpS@_nBTxwsRDqcM5 zD;WJrk<}!;iKzQVzRs6lXeQVf3ZRjG63xj=?WrUGK;{jAn%+X5?5*!qn3H#I88;S6%iodK0UFd`wcEbRL%8-Y4}Zfh5prK@ zitfI-%srLqp!oRxyCvQwORfS-?HErLVf2?dHXYQeSw-(^V2Nt*w^-7%K#wa5&Y42^ z(c4q2nnVtj7is|9|H^;_}&m>e61lF5c5g2%%1mST^Si3;^c{H&&3Fg{;XJ( zoO*7Bmd5c`x@hWa6WV8D0&iS<0{sAo4ZNM7TcGkn4S@S!`7c2H*+>8&rdP8TZA0ca z*R>3#nx>tlUU(#iOn4>La&|iO2(u*M0RuK9CW4EXzk>a*+DcA2I}%L)LMH;2>`F7$ zQzRb05L+ykPnr9~btu!6a?vES>=3#C-6GwzBR^WgtGm?-)LT zV=0$_h05CLa@8OCkI|E=;Qm+si)1ZYHq=vcv;fBT}8=47v)E zUqQL07+v{pYVI>WNI+3yYyXS;-GbR zh>N9)*sv<`l*bo4-W<+-n$FXPLq8Wr5s}qnDMqiFTTP&3@I&@H(L>(w!u!>^eW6rh z@0Y6b{;SeC71k3vry+LDY4Ltu9M(`;ar9I36EG5?oITUJhSi9CYFV@hU7<3b!{_Mm0Oq zw9o=^Vcg=qrOIx#6zHNG{&viHmVGge)NtIyQ-WUP-O)Tw)iDT z#WU3dfQ}7=DxtrNVmW+NqE*=CId)@_1Q!aN^V8m4?YXAT^Q-^1Eg zE(hy1;lm!Hb?c{=I0vb((1jNH-IruH9gdm1?@v)~(?U&er~&Z&zsmm=h<`Ex0K`T7 zTbab9^!c%7W~)lZIEMyTFR81Xnl%TB*Zq@_iYA~$#Q0L-8`6~cOK7bq{KU?A5H~i?sH5%m|J}P@}!xG|LB`g(b<9%0j zpnd!RmjG(x;I)4Woq;VM-Y_bgwS)}ypeL8aOGIsZ7TG7C7V2e4St9LV^uHMx^~=%g zb!n^7dWP*_aWfBa^6=TjPP?xyQsI}FCU{%ff1&(e`L99zzsUkX?h=@WD0dQV8#i11 z654$fdl?EMTI`9E2d3hAN-UCaffksXx#pksH~;#FM^gVX%)puSUUm0u8`f>PCy|!q zoUB>>)_`M8T%iF*e=D-e-mqcESEN(EX~TE=_7U_SYek9-j*w{LvEv{vyCoA(1P$4MoY<0;#@057_ytgG21b8M7Xc5NXUsgqbc1pyCoASr zpIBoBA673Pb!Sn{3%r4U;_VCaPG;x(b%9dacCG%Eh*n4KnH7-yPNt3QF77=0j!Jhp)bxfL0MGxc{NIH5({2Gk zNpi>Ht_s9!2`y!$h0(M}((Ojbx@2!qbAGdye@_#|1j-wq+>Z7g^uPB1;tewQl6H5U zF<3l#ujamyo5dCJ?sl`0O=O(Lnd}LyXFM&V<6jef#l$CZ#zPcD6g@`5nQ`c$N#EKg zjcKYk<2i=P3pD`lf91ag@fX7bfHZ$8bhU82^DcRhY=OcLLR9JNdFkWeMoFxH+CHOi z5(UH_LqWuN;kym?ziKOan1bEdY3L#$XYLg7})JTM?f{=1*&l-HlOl4Ov!lJB=@V&z1{WmG0ZJd`Q@4n??~#s0LF z1fOU;^E}h8VJx+wXSbRyG1YO_L#i9U_%c^jInjvAa$exi&4u`$)2BSnSD!yj@}$~x$H%fhX_H{`>3Ri> z8=6NLLERT8VWE$scS|>?IhZMh_bD?QpQ9`a#VX%f(1rIehQ1j=kGR~>b}lzGKnS)+ zApm6c$UJ3+ac>)uXty^fBkh&MfI6FArR(R8M^uV_??3+pDldQJ(*m?GUQaanq^yFd z9v^=EJl9~3Ho%FlFQDUgps*=W{<#!ps_|n9Mt@{)a@`H7S%*{|^`7@1_@nD|tD<%Z zaqajB5qqZgY9BzIN1z74Cz`8?W*6fBf)M~BGW%_kM0?V4Vds)DTloZCxDt1q8c92B z;s0arEyJQ}A9imV>F)0C?vzHlTe?#^h8`NE6p2AnP(me?6r>at5R?uj6cs^2L1LrK za6fxL?{lpGG5h}V9(&dYW-)Uz1DwBgUTfB@bzZN1-t*ae1%frlJn&O-ou2>We^^{O zPREsLH8MyI#=@pM=u}wk_;jtoY?gDY`|7wWoc{YsiTFw1!@TmUw)p*U4W9iDG8*pd z5C+HV+E3ZDREKc^?FAGd{J-#j59WVECkV1AY!yU7+W33gmq{u9xp&=F@thbJB_i|P z$mY1=Af7-l>*4wXOzvwFm;O&WT|Z;OznL{uy0Dh<31>glZ z{m-tJ(SO&KTiCdw+UG0`7JG^1dO#q8l02x^OySghbqUa3Kmo%43;*|F{=W=3zs^I8 z%988bSrR`jenU5zPoLr{bBjPzo?ln!r%6v{-7~Oc(%tUUhb{liUx9YarZdV!91(8t zoIK|VZsw?af7sbIoSukA8TMGMH^*@LFHSXiG}(GE)H}=6-MS$eZh~?XiOV&@6z5Tb zT4Z)p6`;L<0)+n;{vW{n|D*Pm1s1(O|{LBL~^^#1$S$b2HmsgVTThDTd!- zu9ChVw(6QoLv{A>jh61b43S+tJ=4cPW-1H-v=>l-@c+X9pHTnt(Ir8U=h!>X_0!c# zwTJX_1!t-Zmtz~2ZN$e}dJnEGCaoo>fwAWZKB;EpCtl`1=hnjw`>aUqqZ~SrYv066 z9W<*faM@$=tAfrUF*`}{Ry~yaag&&he!j&veY|hp(i`Zr>TF&8lHK*=>RAPQ%iJlT zy?_FQ{}=xMg89#^0fJPy**<6cFG$Lk zjYazUN9(iq&hqe{TJ3cMMXwi>qY-|5C;WG4;?j%pe%dc1_;dNJ*G`)jB(wqT1r#9s zzwrME=D&3x2ompK+1CGVVe)J%U;rC`VuOmok!` zmM2Mz;vP$0+$Ri@PW}RJ*y#?3+~|vb|F}m=&6M70qf35UQNDAmV}>f;5(D2PY|>_v z08uN61i1V?{`32<|9@*G@xysR5TpR6YgsY28|s*+0X5q@`W5)ZXDY1t!TciQul+{8 zh=9X!AB@wPx8VM%m8AMlY9+ssM!k$Y9jrF%3I6N?Zfi3P@&88mNxwz}NAAZ+(bflu zMhedk@@I*adx0NT-i`+52t?J1p~vZ5lPeBglkl)sf*osQRxNlV1kx=vw8PgpV+bSW z>u5wrL3ck!8GN~>PacZ~Cu?82Y$0iGtXlSxuGBfC#?HlW1t}b9nbB`aEz94^csmam zC4d4%)?8%GF)V8eAA=x|?T|rHgm(UJliR-L9Pg=jyKt?TnM@;F^^YrG_L?|=uQFzR z`nXg1>~gG8YPIH^E{egsKmOB~AXCPaF`<^B&xk5h=<@-nwH=%er~gfQiOwasdHQr4 zR-*n!2PzWd7M zb-hA0)JiN!9B}&2Jl$XR?c|EX6~PBK-Av}sC=cQ`p8LoQ^e#FK?$lV-#;$@-TVn3d`d$CIp7$ff@^ zIA+>=%Ub^T#ct?z^oVvX;|^h?;k!3WY0YXz`;=P3>Hqp8uYu&J)rGMVB)GgJ##+$= z_}^*R9>kBMc8pQ?Dp>*A3n)PNf8qZb%>Nyv^IFj?kdinqK8vR8h~X)>n-CtF#;#XM zh3{~CuovjpiXYhV?VcW0cL?nt|4$E*4+gV1|q`4|2PLm`eb> zY0ZBoKY!R%EoQ7~QhX!HT9jGcSH(25UFE9pZKM~PZ~`#)IZ+T@jK%4<|1J7&?~Vt^ zX(uXgi=mJ&aD*YF4V%3H^cPTo000UAG7JE|^AVsYJX0;#g+-yOS7|ELrPgiNvwxky zlyL96saaFXTAVD{`xvc?fO%c`5&+s0rc}K4-=e~U_cempu)#r#%D!SHJ`0mfj|!LH zOW48*06uqn&#vXzx59;uoTuB}F}j>1^vPNSqMeWObNkPR+5r6p6d(YA0)PSoK>K_b zFuiah#q&zfCO=MJ#)QH|9t$g*CgmN+vl#BHtfuh<6kysf`R@u2S0yh2IL_A8!+n4{ zVt5zJOW{VmjPDQJuu#>zZ2t5gAu+tg@HTnfE%*O{g8hpAYL;A*ioq(+HN3raoungE zd6Fkwx8J^L1oRhBfB*mr04fXs_w)CF$M?z5n(w}zp0yj8xua3(+! zMCW7E6|%}L%|qn{iP;-Fel57N-eM-fV#B?A#dR+M{RI>t0DuC31_JM9 z!-pMRz4hxl%0@OqQRuZ3PrrKeh2p#t2&Hla)6D5zBhW)~J_i6L^APzMqQyKo{0Uit z;q?cn<=-f7Hq)DjelkB&>4n72B=c8g2jB#Nw!>VU%co0Pp%j0|1PP36u z5HF5<*Qz1a->?7s!-{_j zBNdTAe?;dp(D|41<)0^mH9G#cO3A-E*o&V(!+%*|ukiO41bYDXoQkkJ{@lW(|MfnY z@W0;ocU_SadKXmj=YV4zGI|2&{O-Tyk_6S~2c35et|co!QSN6muDTk*8l}46-C@@K zuK)PN$JRS+a$OxPlxb~@dh-nOr(BZy-zk?&g-nF^KHkrq+s_b?v=PqD4whML`6$JA zl90*KW>@z>`3A&OZ3Lva*2`wkCcV6e>!fXb=WY5{IkM&LY2>lm16gy}yAtf-jAjzm zgdWBWqL!^-+qECEexJ)~V!7v?yeR@>@Zl{Nx!b!Id*!|-I5zHueqeZXG)rcKX5D*> z&F{tzXUBCinSg-h@j& z5dQ3^wQSH`xhLKFcBgzgH-2$xhE+Wud$B(krFiqM9lZM_o?f&DSRJQdr9iDqeA{`! z#Umz|i;4~(WTvZps>(6^0sRFOAOL^@a0LngA?o=_Fk+t=lIHH~X!uOeG?PkPp(FSD zK4$mz#0IEJ={3ML>a-?+Z6=0bB!AMczhW;qd>gmA> z$K-&i`j}k0| zDo%8ekr_`9CjbrG&O*vwm4f}L4OfVBiSb9RL`*#N(l#ad2@oq?KJOzXvP^n{-wmL~O7+Pk7bcp7Cct|g#6uaAkJ%8`LYm;^X{@_> zr2N5C-d6+fq#1IXaJT#GHvswzC_n%J1ppTY0OEcOQlCLZJOzh}|hAt@QIpGl2=?Co+a+(4>0 zL0`4iNCjsCyi4S|J4o-gb%r7oSQf4_N{9KGww!)3gt+j!*+(^-$AJC<3J?H50lQ3jb9C>m_8B7VAW;VlgJ5hCkIJ3(D}N?Exk!Kn zEj;|sMIjiO-)T4fp5WV?+U#B5$Ens3?>gL2^lG4h699dKSRw){Ar-9RS(k_e>DW&d zImgfMVm}tDVv*<6wQU0Q7f^rz015y;41k{VD{iCMG#FBJWph3rilV%C#$n>qFC)Lp z*_J*@c*-d#8?ps<&?bpK8wm|R2LNUJ&yh*J9#?VY$h%Lzp&PQ%rlfZ|=#)?SCHABx_Y|dH1P(sig|f+wW|^p+T0m zbz504&TTD}BYr(3qslq1Cw zzFGP!^|~SpX+rJ|q}Qf;a;y(*X!$<7y2hnwZsz zMiq9t57#kwc`x1-yuzxuVOM*z=JV6ca7n;14N!m>^q_+t5flI-`tzcpitoex%;-H8 z#o`ZZPQn^-Yu+lw1>C|OmYTA>PWt>E9#~AnphXbJ>(M0uU-61D7mnVA$xX%yJatj+ zaXqcH8hVVyYdd*&GY zZ@Tp6(|WkgD%VN7ujQd12gS=AfpN&5uY_s6lDGt5!Q!!<0w;@^wCf1^*`w*78(5=W z*;sw}tkHFbLpHtWZ~~A`=O1slG*GL1b*5v6WDd3F^{p$uG=AxK*F=zreK!!tJ^?rH z|3Gk&0HiPgV$QopMXDpz-d4-L>Z39wSn1lOhFr~Sbc^YK82tk8@Y%pDCfLmvM}aK` zui_E_{QIxWz7=lbfHv)v5+CL|hPBxdJbfM>|ID#plji3ac)Nzf=6ZB*>iwklXAni2 za-~9h=v?_YtT3OKdiE%|cOnV#@z;OgFQDWC05TW=kn^(PSsTX2#Ctc@Zu-mBwL39l zVl6%mXinivD)mb7Kb^pP0d_dEA&%=akGuq6T=YBsaim`CvZ`5Wv`+HCCymIVRH4#t z9Ez)q1O&?Ea3;Vw`BHec-M7wGt_>~UGE#v2t>w&{01UnfRPuLtPve;~L3 zfE)%u?|IueRa%lGf!uP|5`~&%a9~usOs4I``$`@p*&DMBUJ4SE;ILn}a66g>^DY6v zi^qAs9zSzrAV$-W(=F~Hka=C2o+s*ne55aJ)#F(ToB%Kr2p-5kre8<1P(HRyZ@$^{ zLJz4t*5zG5SG*T$%|SHa5DzFo>;pje0VrSqtej6b&>bw$dWzKZIefrX0BP+rVTl|P z??l6-QJ|lZ?aLzJc<}XYzj)nKsdtwEM0?s=_Is=4RY*VJBRvj#%Y?=pD(G@MIx_2d zVrp0KD>wl#_wk(bqDynut0Yxjdmk3N!+-Q$kCIQnFTrxb2=^8qpud0u1OQL~D4_rl zqnuB#()Ef8t!PkLtp1oG{=2<1&KCIlH&NdDr}rY(`kzIyz64V~$Q&;&<}N%30LAqX z`8UMgj+?lS@5Hcq8v9}T6MK4n(2jvCt6fKm#c8ZXi2%Gc5X3|}Efqo;QTGQvy{6x> zDz3l7_k^2WUo+1sJ#(}tq5_h;Lydv{a(+jr%h;hv)=vJuy(kIU5>;SW3xl&u?H~)H zZxVP6xEKPc{sQo)aFUqie3B(Jo%H3Vo)aCfvls6237WQfpyg28(ZpTbF6SmESYdo>2FnH_h%+>7639UNa{lyw3x3Maew!>PcwXVoN$n@hn> zIz|>qD06&qUT%f=89oXAd{qMB*W08VK*C01OR!d@I;rhk_55ZRU3|8s^!-ZdX)eD2 z?2u!x%*z|^x)_zzTL+AN9oX57+*rE4J!G*3TOMs=qACTz88yL=31_gwT^C2R&JGl7 z=-f|9vX?>GGMf~iYChL{BYOcR37`NGHPEP`hDD9)`DAWQ6kBn)u0CqZNg<8o+A{1m zv13ypP)<24RE<8pW?&TDh0MsWi zxaCb9);SF;dWb4m)Yl0U*#^dTIqfbySqcA=3~#q_M^*BxEPurVne)pHqVH$LilsS> zlje+;N9mChZ4L(^K4}LYNq`j>V+}0~fTTPSr1LC5imnXsy-_d@a)O}{EU0QJo zW-KE3O)=wKHI|4N%3p~Xu8h^h|jN)?de)uXpR#K@LDZw~R_yF*ITA^g0-`e&h5 zGMovpQRC|M$j%{NQ1MwevG@&=DLYx~Nk^*NsSkVP(4Kio0B+!b0z?8p6Mzl|K+O>d zl7pTg;4(LNfa^Sgp)lZFzB*m}%r^I@h8_cC8ehtT9jqK5az@V7lYa>SS=3dcYhH3% z7U6;K`wy{ag}zCx*QE2KM~@w^tpttCzzM*dPv`U@yP000Gm9tOb3`GoG;aX8Tl2?{-W56Nj>$Uc58g~z3JLv?m~R?jN? zjgYPg*waRL;0lY&+e-k#<>%t#s^|tft}WM{noTWv(IaCBB=g%WX-Re7G#EmH69B^i zA5pou`(OH$_D=eCcdB=Dx9_Cnkh#8F8A&8O+e5TY0tY;>;$jG3fC2D@5d;yW4m)eC z2~0z3k$4tl#akA!bc;Cu%Or_Nf+CrfH+>WsGcC{O-uBTy7lMzxxFznaB$My!hqd#b z8+U`m<1sdRSi-xCkbOdyg@{c!0boa;7v~s05b$8->2Rd^ZS37k(4eln;ySvEns;rN zI~#BV2NWO@0Ga@dPyk49mqCzbwj(#+Gz{J$5s${i8{0KE^D8KPuJxNfnie)<4Bbcr zBOPOB-H0^&+dKca3q+simMGyYwED>&(4Pv0OMQj zj(X(0ukfgagzhkg^gLWeS8?5Z*Tt5jbILu)K>_G5pa1~?6aXd|0Q}t`2-8kt?gnzN zn3ILBa^G;TQux?Vl#cYGQ*z}Mxs7x_Nw9wa^_%gq&OgP27pGgk4b(Wos$ztAfsU`5 zEJ;e3^L5x9p4s+`#z?F%R4BlE!u8`ww$3Yx)d{;Pp~s2w@24X+<@Q{-C^~++&|)D= zjCuh23n)MU00n><27vxk5QMS)Ez+q#PHbE0{Rj7wS6U1>e}D}ts-EICkGRwcybuNZ z$4f)>IA{9K0YLHibGoHWJF$KPb5_yQ__E(sM#WiO5b`R_%uu>H%9?jvk~)HLCcy5l z?Qpqk|MAry-(__zM6aH_{kHd3c6vDOGm_PunMoVOOP4aeC4`MBm``D~EA zoIX6or1AQZ7Z^%3Zj~>p7@x2 zs)RS>Pjud-y~v}<1|tdWE{E;Tq5Y|zqyw&=OoeQWE;JC$X%zXqk=_N>}i?A3b+t*qms=P}#6{<$n;Wflnqtq2z3HfitHu28B6OqeIlu(YwtCnqRc zevcgLm-p`A23PG~Riw_fgQ1vfPHWSi*E`@n(b0$VCoK&wfz%C}K1x%)&#g3AC@~TF zEsMj+ed*tnu@wQs1W7QzhrFBBZ~mr*_=?k#udJI%+_< z>c(2AxeE%JXcJgk{Rf@>#E|vnaHIZ7=1J%&fsx=oj~T&4w!5lj^s&3z=dO@Y4wuQS z`>JrJP5P*Ztz2zo&d)33oE7`xI=Kad!%8UgU#pCGzXxn&8UXqWC_n%J1%M3(K-+Z? z1azCa&Ck(@Q}f>LlS6XGS?24_pSH%Bq+gHOSIf&&x`Sn0SKr0x!Wf@~FhW8?GQ0c}8zn!II*Maqi$yiN&C66}t%o4ei zZWU;gzHaUO3g|DO0096L0CpGvGw;qX@H*)dYtWTtgkYp*x1cg9sWPi;&~#rRx$#WurkK9i_ZNhK{sIaR06+oYfB|sq27+WCjPFu2 zRHTPx`s>7Mw>0z+x;M=)sR|x5kTmv%*VlrbJQT&7IO_v10ig36e;Z00;W4}}rwyt$ zs4iz7GC-xBnXe!)=uxWp$^a(-@=V4?e1=Wk6^BB%8%uPl!L%6S4<{_Ei?sSgZ9um7 z0R06NAOL^@zzGF_lz|ci*(Agkl)7srU-c{E_*=l*ApP=JjiS$q1k^~S_#~UmZ@{>@ z@mmjR@)<4xn7V~4IsY_vd#uos)~o3N-_&Z(IFIfHzdMHv%_4Nd^I2In1a%2!mA z2qxY6EC;GmMxPGb|CyV{f<~y&BTV28=r5oE0RR*LE*Jnx>mZ0kh0oXt)op$@>E&n*FM zWNnOBz64I=3^Yn0?~n`gI|FXufC5AUKofum20-#W2r`{UJ(=X$h!oL0zT$8{JHfC~ zxcK^4wQJSiMHo#AI~u`(0^Zx4GZV;{0FVamx87NfwR%#V8?5ITXR&PA^s@z*#B0j!60gEKvVpL9N{WG!pMg62q ziM5XBU6cX_5BuN=9mljb7ynrYBcwMtN?sjOOm38L0)WQUo@rY&`1p)3EhXd5lV`My zUFwp(@_jD+{z!E+1=|paIhoa=gVrFwny3XXmt)Eo!aWfzB>^72(wFpi?|$8ee1GYc zO3TR^TVGpEps#8q(iZNJgapY5C_7g5L!KnqWI6xfsp@xb0Hvv>MkGt|Eik2d=UB~&|=ApyAv*M(2%bDT><_1%Jg^j z{0oRs@nQ(zO8}jJ`?r3Q^tBcUQXtY4sB?mf|sR)uE=diquj z!C>s&uJ|v#Gr522C+Yv4`pFc?xLs-w;pV1Mf#+`D}TP9P&i4M#lVRyQ431}$bKPw*3Pn_6 zpELA-y<7mvp8z_4CQv--PQ&>JVfr7J(-%03T~p?FA*|i1A*kP2YTYFFO;j}-EbhJw z0Bf-!->#RV`RD4Jg6m%(qPiOQCu~V` zS1k^6rjCwBK3^2-eJR&z9Qpz&MQC=ALyyb=M;t)G|C~tw*Zjbcuw6`^x>M5AEhuCz zRR=8h810d8_QLB+0Q}O=?xhzGU2~rP8BZDT?AZCb)9vfyG51ue&~-g1O3mN|;5&}W z9E3L^&#l*9vdrVN0`CUJD~WZ-)(PrXvF|w~qJaJa3J?H50T6)!Q0WAMu*>B-*0%|4 zaopHB6tvI?)^RiOxGvwQ^DHC#!@kseSulqWcVSSM{K_Q&OmWKS9+;I?W2O&9-{VoM zOybmazxe#?3Sn#DK(uOf5u5;ACru7w7AlCn!v8B#a%*ksE=o-KdMh|+bA8Vd9i1LA z4L8!iuw3i}ioyUGjyyjy$v&+iOX9RP$k%rDejEM-o;=3GUFj9smGaHLO=Y7!u+V-O z|9(R{(NR7ANk)n6|=*)6A2ELZ1jERMJY`(N-MngC)j0KPsvKPZunb?>zngN48Kc0fb? z5c;&cmx3(U(eJOJosNf?I(}fI6=K`hg)5IQ0Z=g*Y^!v%+7DRW(yevFT_}HO8^rdP=FW$ zpa6(N0U#&B06{#Y`o$aaGK6-UGTR6;j)~(361;cYqDTjkzImINOL&8AUJ&AYe-rjS z2jHT9($I<$gYTi?db9pVhrEj9dvTs$eg;3oFAy)T^Y31f2g3<~z(UU}uEn->9ls7H z77q8O>cmbIR)gau=0Wsd=`EP3knoq()OQ2ybs|#S3{&YmOJ3DkCsCVrRm|_6;^&v1 z@*(OcfivP_2$1*-z~A~waF(pD(LT_|1 z&toepcz*RJR(FIWPn9YfL_w1KiHh$@&I}ti7hbGwpk{U=ua0mdKYjZ#t=}7NfuCxyTN9Y-lilYd7fjy6@Zcnr zx{x{UgNa)UPhn?e{yNI1yzj(qfFJ^0jXk=~ z7_OQXOjO8`>hqfcMNQqQN1-#T%=>GTO3|Gh0$eo8NEcW$rIi6{%4gC4q`)mnzS zHO)!twp^XCTSVX;8`r30+1ViNdG@l5N(DfF0R;#Epa4k20H}xqK?nzThI~K12x5%V z-9_)vk}_a1{vAnXh_`V!--%kgx&cf(<8M_wwkmT8K!sxJ4U;X>r;gUV1L_lZWn4zT z+4o&tex$QpoBrtIyf>Tx=xXQjNoNk9)Ka%~rxv;#?%;&cqM5eqS)o{}ess2P1@sqC zfB*mrfD8$3xc9P!SHQ~e7uJ*lLC&9x4KY}4>$q%c~X5sq4;pe$0p-Z2A3{&GiA9r zSwX@i_k!3{q$3u@u}`FbVYzr0AP)mTVi5$X#8-0i`)Nubn&u%=!Rc{|WnqY#aqFoK zVWVRWx||Imn0??Ul9&2Tze@nvIZ;r3+TVWL)5B47%|S+6Wss3|pUJ%m zCjcz8WlE?xqcYz9CpY{#*RzjwxFjD{`{1dg7;9S@Ht7Ox;D7=|0zeZ$0S17LA_!u? z?1DX!Ve|7g_J^P}jO9f4DAHMiAJxNOZdH{u7a(zhl{W$&1RmhvUIH-9{!H0vMSQ8W z_n0AZo6eF(Qa4M>2jiqKZ^T5xR%;qg05Crk-N)y~E_(F>uM_0+R&$J=K4PPH%bW6b z`4Yunn{CYN}F&(UhpPVV^bK7PuSxSTm z+|m8&v@mDzEFGd;iKw3h9wRP>0HwbG{HdR$sI>(_9Pi$c!#J64x3OD~1x>By>;FK0 zj@?sX<@7E==pO#VNw79Gam358P2WHDlZ>$XN&TT9gJdP21*xpZUevr|bXMu^+86bc zY%w=0f+M$1Sqs9mmAgdpTfe!}j``X}9BwI$By2RrLVQS`-n8Tu^>{Hz4m#<7;WBb> zIHq4!Xprd3cdLNMsh?qo9D{}xDbVN1yrTOATB@}+ox`GX511r?0z}k6qedAPHLs~bkZYLl z^dE@Rdmlwg7k!JpHjYscU5%e!)WKtmeOk)=fflT`>G2u|lFfWM)-+gP8`T$gIqtzZ8(qLzU^Op5Z*eIBA40F4yVx;mCfU)tl9~|5qwo>WEa={PZ z&{Y5Cp6oXR>E`opR))i%s8YPNw?9=(@=5u7`aVV z!HDC)czFv)drHRC3eE)hN|NSwWxpud0u z1OQL~)L{UmgF%qDF^|iP-rzptc};JL`6#V57=X6sN{h(cPiNa00;DX!_aCRo-^!ZSb&| zOy|TtgY_G^e$ITYZ@#y+bX5>d0Kfqcthg8gG++Qc{B{0rQ`zuLphLk#kTnU9Y3qZj zA}89qraY20uQTJ4BTCf>SYvRWRJtrd_Y#1R2FDX;EfS)PH6{0YB24c_LQ!cH{nzCF zIFF0oPSr}l3BY08g64~+4$nXroVooc3dTL`&R`C&FE;644Hd9ud(i z2?Jmz2?S{|LMoUndsTbdb^3~xx7_$`Q-B{+V2L)3tQyq;E{0= zC1chn)y#~y18CbtU#$T83n)MU00lq`3IG+7@Oc@G84symB3geiX1TGW%~D>Xwp=M{ zs_F4fhdW0US!^3%d%O1F@9S-w=Kx&PPbxIMi7u6WDcTZ>O3kcCoi>NnzloY(vmxKD zg-qV`65b2J^V^ICYBjy;?&sMoQyazXj0J?GzZo{8fAgy=@KejjK8UgL*ynxY-xGTy zcxx{csJ=+Ar&~s_^dh;i+19s!Y~CU2Cy@Y`iy=V!F93h*C#l$vL68+SHOau#SGAf= z3YJL9JDMx9_iw&7*KqlPExFLmtE33l9Ytf2@!{C|Q$NY{pVUtpMv$D~9N#G9@35{e)`S-XtXxq5dfxVxIZT#;oB-ZoSr(YN4$A8LHG=5#Iuu75UO#>Soa7 zWnf1gg)!Jeq!ONVQ{EMKWS0@?Ui9;>@%zzahMYuLmMmoBY6 z&}`YghJIQY)0&2pyyc-jK78B*7$$%MMA|^pMhBKQx~m{ang3f}PRAP=Z?YOoDcmm7K4Z) z6WbURV3w?^#*i{FUi7P$FQPB~-1b{EN z!tm{DW8;~@*F^4^3|=yI0aiyTZ0uwQV7Fij=2Ki6{H|>1{e`CcHx8RZ1i8`urdDXFj zmIo&QZ6};GnxdUdTzT)j;u0`TC2m`@KckP-YUT-?G<)KRc*}|OFDw`P8+tGR`t?B& zY{JTN$;EzzG1oh`Q}4Yl-rGJK7w-w6oA6{oMi+9bMkZ ziBDgIE4Ew!H*i1!A_1TYpbrCJvk3$_>hOKPnMIJ`;fh9cc2q*Ol*!L^uZMzcqg9mQ z3B8F0n19HZhEF+#@)7`hwELuLqCX8Csn^lz@Q9^TjulQHHy><@{qi+Nx<%j!CjjOI zG~+A0tXkg}UzTqt#7*1=H;v!gu6hRWgivE=ISm2?d)~mq> zh)Hk$Jpc@007$(!KhZHD_g-JO!D=NqH&BDRWVUVY>%3P>%{99Ee!JcUw0bb|z4MQL z&M)7+1fU=4&5QKzAOdbavt#Irqs>)Fk z?E`9T@zG~-+>df6h)uDsPAG!?f`566HtQW-0$}fP3?gmJ;(xzLR8~8z73UYGpS{It z^{hVR7w^2WE*Kf)l8v}+4=06`&c_gaH21&{#&rl0i>ac zAETG>wpj!?xvHN|M!en~kJ({V&qI@gDz^0E(CYOvdxIi>k)UyDnGIkU)Re z|F%Xdp09!!|9*eI0=@nF2z34Y=Atd~qC@hJB=(<&plg3$3i^84|2%r}gO?fQ`H!GN6Tl<^bpGAn`bp|$LlA`3i};z%9TbeT)w3B-H(w;<61;`3J1b+T)@t?0SIM^L zo_gQJ(+dcd-k*6L2hpZ}N4@6Y#bhA%8o!-mEc=ehy2X`datUYWx@k|duyELsNn(~{ z<6};2eAQercVx~r-s-@ekTdN!*R%+~BpZ;QztN!^)%~Pd-Z-WPo{K@XqH)dScm4DZ`-$H z-~<2(W5k;feAKa#5L+C8j*%lh&U2_PM))Jq@8+#OLt?~Koc{)-7XX++0iZ#?b$&ji zvM_6y?#gsG#h7i}^-rVQalSFS3J=$Fm!EaHgBPg4270dqW0^3cF99&Q|AOtF0lkf! zud(Ak+N*Ct^j`dBTO<&#$3IF2*21#k1c2r7eneI1w9!sa$5{0swY#YfhZojr=ZS{g z6}h)W+9M`FH3zgeG*Tq4%H>l+c5&+_wj z)Y>qxp>nr4p-H;hB>>4k^h1`2J8T;jk~Te=Oxg{VRx~a6h?Om7Y z*Yw!ZhhoQ5JoO-3izT}`+M=1x*JT7l1Yklv3-zd+TJcK&eo=G9&+$gH@nY|l68tFU z!)bpX>F-@Cy{7BV$#@4W11A8zXt~_BI;W@;I>T5GR|*s3#b-Vxeigfg^3+v?a&FBM z&|g3S0strgmM{RqKY$=U1^eTz#_T)177jn!SBp#fstrEy2uHZOJrKWE%HbITHp=(4 z_DgS@yaXV|Hf7GkB92@X`^KBS&5U4eG_0(osAS61b=x$Zm#7a%uLdb`P=)~d3n)MU00qDb20%qR2y(kCCwcM72V(+W%g%hZ zZNUa9L)^OYdyZ-MVht>=PmzN$u2)z5%<}%zJ$5k}Z_=bKRe{B{{7tPd_|H(Yv2e}Y-5#y_SeOBtR6a8W;r z=Rm=`i~W)(9Bo0%bo_gDkrC6@N;IZalUzbQCmkQWr>J#oJdMPW3i0$V%b=m>ZSs!_ zczWfwJF-hqO`6p3RU{;cPhdPRi@55?9)*lT6lEsvI}Jv{V~b?F8xT%)H)W-AMExW% zA{Rq|-CqFy)=$!^+n>J^v~tOlTjum7i($^crZsdNu6Dm)t>!mf!of(iJp*wp7~9Qt zXIzw6;!ph~%f*pNJ0uXOy~y$WC8_L@ktI<Lm`l~QCXrO}Cw zGTpM>*)d(;<0PdljPc?=t^H;J9h0;^XuzNZGi7u(ZJlTu4riD4yWoIGu2ja-sdaE$ zQcY#_yeTUsq2?mCe?a#+{N_}@$F=?6-h8xK-ujGH=IAzDJiE6{wq_^-@=3$84Qi-u zQZqzk-+#ZME|wZslnT*3IR3@5i#@Q)S3=T?4Z$I!d^OQ(?{7vfggtWl<<1sF-zMqo zP>JqpT`0zzRkU)|b=fk3diiL7gCDyhVZVqJVS7EDcbpsu*KxJQd?i0JUav-xji;T= zGO;ugq0zhI_#GRe8}s!jjiWYN3$*8eV;Z0U zG3Y@v&mNX}evtFp38Y^pA<+QZXQE5Wn_~DC_cnrZx8=L^t-1g%U{+P;6PcQRc zUY<_)Yq_~wC03=I3=mjLw~d2KaZXh^_MNyS;GlHryDO7y9`qrZN!%4(Lok;ABS??{bCz1CV{pW9T0s0Fl zKmY&*;5rO|{%{avfIG3j|4DSydtNs0ucijCLv&7V;RHEj?4ehgy~E^70^=qj=hHbK z&|CuW@~t~bX<~}pX$?EB2IFi?PmT&wcE$2(A#24d-gGn#oB&9a4r|b2=k^j)hvq~m zNHzwhZll;Af;QUp4jRXsPm%%s1r#6vfCAtM1K=C!`ED<-`#o)wLcfUdQhj^E>`-lk z_@|kfX$m1;-F8(tH3%ouVZ$IFjpK0-%{) z7l77Y^hg6^e}f!_l5KJ~ZzbJzd=O>M+P_^dg#=Cjv{AzZom;(w?{I=KgvyZgT)Abh zs*qDK*^IQ1L-;7m0R06NAOL^@;0yym@h%8r#3jCpCgRyAFx~q7nJVF0e(2AW_yK{L z9V6E1iRWhhU?DZdaBgX)^h*HJ%snM^UiXg6v$}ov_!@56wvO{0?}rdN7JeP_RZ;mR zI02ARvpKYWZ5e;>y7{DZ{Km;0WqAf{31nO$+8bM5#TYz*{sIaR06+n7fdSxAaGn6H z+k z7xj607K}L-9}m%dA?{H+ZZP}O$lJvxuMQ^wM^o|;qA$u5ML5gfMjlVm8|Im;v_xVo z+h&d@f<8^s0Qw6kKmY&*z!e5SUM&bxGq8|Tu*hUbW2F}vH4w~VF|VOH@9(?4_>*h| z^mF|lSWvdWxyo!L{1Sk#&N^4_*4-fbz}7g)#oNA-Zaj@tS+bz#>*`Uh8d1OjCji*) zwb;Z1A%lBTYh}_KVV;Yhak=nIrHG6&#;~O{CHK+9D)!+ockvZe$HTyLrYe=0rPPy#d`#hzpcMYpvQ3dt(|-9!%Q;flQfv!q>x7sh~zTj z`Vpdxi5FVF`&oev;$$&t^+ubWjaApkOSgZ>amHj*CH*bsuO?;w5=nf=P1sno>M_v1 zK2u&aNn4>r!Q6mVKt`i&l8Q97M!{n3(|4c>Cu!VEc0VfV7X9O520i*9i~6hwucu}F z$c6mdrfIf~nKl8F1WA$nY=&Ci;7{CJ>RmyaKWs@ zgcE=TjOVM&?Vpp#xRu`t%_p`~Ob#^P*3i<6!~;ABYTThEoMrq!l67 z2AIM|JPl2WeBu&-%%+-0zFo9LMS8Ts&aV0o#(5PZ)pi2R=t`~M_Lpo2!wJB~&kr;u zyVPPhAc5Utq!0s60B*%-$OQ4Pmr;o=;%D$|H}7iKR40ltso*@$!+z37lm_T8 zpa1~?6aXI>0Np+yNSNwY&eC_T;X}O4eNR()8cIK5#o*4;xSv!H%UxS&Rlr)oqExm; zt4Wstj4eOnT=^{-Re08z|1S6m;S)DhSJ0vKOICgH`)e#8hv5X^1e7~N-DRfqX+A0M z?Va&rj^iJw&3LckxZaZ8E20lXbdV$c3(LjZ4PO`lpZ!3P?6UvG-d#sUwZDJEr$kyh zq&uZkl$361P(n%?qowPBv)TLFcNQWJ%$*ZE{A%19WRe#ZPwG1uDYSD1o~a)CeVGN48Fu9#;}Dcx z1Gw>xJlXhTbg2iO+`CPd0}^L0H$9B{7Y(36&x9~lH5V8GL}w)8l@?&wvo=qZ;GXTU zAr3QQb?Sc(silwZGo9mhgZcu88i02Ia0hS#1E3~+2>|tLo5X)vDaF~Y@mu_OOGRN_ zb8GQcXyZFjV5!wt1p_^xsOWb2PeH1tYXJTP%F>wTk+)S2Vq@zoj?v6Qws0SMtsjlV zPX9=trW}J2fXlp}tpt~dz{yyw_&nOWLHOE@$zb{gV@rkRgUgwi>rETH3a?oFACJ?N%YpK^Cf_*@sm0-HT44y5i#Dvhl1>ejKh|l$7|hMLBmxO(|Dvc zsq!!aV3s?JtBxvd?8ev&Tn7Y(5l#gZ@l8HDa+~@fw@Q}K0TShRQtMDtSDT~2{jj4l z9xMUUa5*Sm$P`JqL!ze@34o8EM1Z{1@L$LBz0mY0Mtu>v7o(PdxC<%Pj%N+`Fox88->gUFW%9|VYThFBk|ZTl0Qnh>u7_zb zq>Nga<#!7!ZW!RWpNb(e%?1@pM<%%4{0%wkSnRz?!mm1%jfKuox7J26BgRqn`Fyhx zIgMxG0o!(LGmO}*K{Z(20|nH0xl;@hNRA8$Xf%DMh2lbfKKzD2v)jf{n+enayxV}g zjq6`*fMDw8djOEcb_3HojVcR>>-;;JyLU%u_6gl64>F6yv$R|@#$H6AGI_*Yx&sLN zdbx2mdV`Wz@WNDj<<|V`#Y(O5EUEj7zC<>zjbY;4y0lC%0ti$nC&%T+7BadcH_=hE zG_tSxy{Uq2I{^=J`;E6v89EP_ z#EB~+cNSm-VDLh?uG1WM9NFuma}I^sG|672HAwp$pNF9=`c5q03Dg%j)BwB#fIEOY z7yu1fI{+l$@~A-d@fpY^G+9E-+J~z%AwDbXe)=x$H<^t1j*q=Ss>Lt$(^^3;*B#*P zuP@Cnl&1H}x4b1hLeo}bTVGAjy5k+LT1`YxC;5rN2%szQ5H>$+;Ksx4CrQU>pIeVD*+>b7X#E3+9HCBU&IPhDg76#UcAP@LGt6? zGcQmZMCg<3hx!7C8i02Ia0l>$07yLmfRyIOE#d}GTRqg4Ipu{(AD(`hNlC)aM%xD_ z%n0Z$ZvYL{dThu^jM}aN7)_HO<%?%ce&eLN&7DheL_j}$%IT&XZOpWElH61}4I_ZZ zLZ#*7G!b7-du#)JMi2Qi8NTu`MqpSBv&i*7-r)QUwZ2dTZ~$Nc-Vgv^r2wF?2bQ?s z>qvNr&p0)yNEq81CqlRQ1?H3#e(f1p3)tmr-G<29qMd_&dj4h8T53HKRQm6TA% zLqw?cg&KeZ00Z!W05~WBfatR$zmcKl%VxR*`2)54LcYw~e^T;Zb35giRN2Mdp#l2y zlimt(^-#P9(C`UUK72*}@zRf7YLj{t)fT%%K zd>iTEF!jgT8HoWU$zWN9>?iE`T%qd}Q0ogd00#gD;0p#oOV1AgnGy=y^QuYjoRrap zKAq!`yc?J?QNNSi)Fc`C;X%}97LcsAy2SkF!P`p!SK}u|E~qE&-qF*H!)W{2@6y(| zT*6PfRVI!bBRX?e9=#0Kt6c_J&Zjf&@|=0jnW;P7f0SNSY`v`azypwN*6KSUx!woG z6en0@Sp-hpZxRG zKi}c+qyPTqe@waj?+8bPWv|+ak^8$;4I+IB!Pp(n%XsuYR@6>)&OjAD z{$RAHy0L%8PcmIyfhT!L+_<01&!`0@~NQPNi^*0dap-Z!LaHEVi@Y zVqeQ&0sRaU*pfhoPHY|%`e}*lB}ou@rh}L38P-!}5sXqM)~|c5_^8flB|37_BM)gxq#F2hy>$tTUr&_q<$k1_o$<{-Tm}jVFT5(ILHy?${5Oe~IRVx+ zGPbGQx!IJGami>rE#<4<+N_q_h(1V%;ll_ZD72P50!K{vEuR)U@~fZKs^?=nVhGK@ ze*qX(NfmzxL9H*;02}}q0007D_!59Enc#5R1h3;rLX|69hCR0G?4oA%AbaZ(q_jQxKDjEJaP{bq8pXJq14Uj(!FjXIb4|)Sj|_jwfTVc2sd=aGy?XH$5fMfJ_ad++=RVRgof@T-5Ns-in@SWp+heTaq1)H9qC2uQ zL9H*;02}}qKoA4~_vIcb{|fW2Sh+zh!2f9m#oZ7ga!=d0h^j%}^cD`zc3+tdfX-5c zw{Y=Zi(dmkrXg7mit`@vLwf2O&glM_0e=(*q6x?MgWogiyE%phs|ih zad%l}DhGlpP)sl%sPVmPv)wXBF@{g!K=>E7tDV4L2mqtYA4`dCiRHO|nkuC7r}F)H z$bBzyGahTXoBZqpy`Rwj z+~bjviYc3+)g7`Dx5ZijDb)Hx4Zs0_0fa&T)Lb5#z9Cual3!`$NA%NX<+O4k#D~9w z25{4x(7ix3jw%^thq|HipFu~6}Y!90%~q#L@&V4P(t_@wyPx|3<6;3 z@|RPwLQZl?qa{swcbH#I*A@L3K)ZRcAh%YDj{eXilTOwVh?yQ{a$x6&aoGW`#!uc! zGboQaSVC8OmV}R*{szY;l0Mea*qSE6%RY}T@R$Qe05Uo;+bPP@;*^hQn8Xc*eFIDn zF1ELm8q%s?86eB}s(|wL?~6sKqI0auAlaylf3Uh?bP%!P^Z0<`N3JqWdaX04D0rvg z({ebA>hv=SOV$&$tRt5_P=43?&X~=cb~?;&@D2d(0O5ZD1S9IN1=AB={)XE2^>)fs zb8TeZ!Awv<`J%%wB7PMD|uevBOQ6-2#Fi>f5uNT|7YVTd2!ZF?d*Fe z>n5eV8#fV=cLMy2>@|QEqh_ulOCE|!Pb6D{ybVSs&t~kpUvg%Rd6bA#? zXAHkS?zaljBoASIgcyw=USuoXV!QAQU48nA(8nCwkyvSFDnBFJD01MBkV0+yr4L6O z{(_kGk$SGC%C7x+)W7h=2>zUv$;Og=R6klHKPp;OeKe-LdbZvcr>9nQM+s|SWQv^U z2Z*=^_gwjHLo{V1?cxQ;Zql8h9wJ-XT8D=@?^2R-jBi4YeR99yNn*vM#n+82e{HBb zeLyxWISE|*k?poe);kZ{tbmdH1De>WMNX5^Sn<+wB%zXTD^5idB!u*BUoRT#F`VS# zyS@KH%L9`Kf_oml)a5BTs!9ys`W}W;TPe0}@3kRh4>Z#*L?9z~y)gtXW5@s22Hpn* z9!@=Imb~8Uq5kB+v&X545E;K{;7~I_cA=BdvzPP@quf$$z~7m@3q}AcG$YITQnyde zhjj-yvX=UkMy*VlaO%bv$Q2JN^<7P%?$kgHz5q=v$6`b zF|(CrG~w}7zF(^G)lNCE^T9C%axGyiB!newUIX}!JZ}1lY}P1=*7-HxD^`kHthf0e zXo^2`dMck;{Tzvb5x}9Lt~RR&C$3!{I*zujCyAl4+%ERTyDR(poinIJp)e>ssna8f<^_En z6zjwxD9{xS%>|-UaD8md&X&6dz?g$L8VYEtA(X1r;^1*K9$n!_D6WanZ^HUM+;?-L zA4UMhwgnjz>Tm2r+~pEO!`L{pI+4Cx9`aDrC9D*iPMzCAeSt#_z&ilA1H6C$IK8|E zC?d6EDVeD6P%mL|(%p}67l=UgwA|0CONrZ@K+-(949GmF#9D2>WqS=^Qu3bio4uuG zRb!W*^S04)sNSpik~81MCG-@Vmnf$_U60KfpEzyKK7E-wU}NmK8d$~*Gy+)5!ycuHtV&bjKq;TbwhkM4^$ zZRWZTyw`Cu)PK?N&#%88&nOO3-B^DtFvo}Lz|E)IC03E(%dQ@nEr_ZVJK_)Pr8yG6 z(~o_(%5F6av~;MFWxE;Ju=LQ(-w0od?rm3;if({fU#I~%05E`P2mrmyOM%G(G7PZE z2?hCzyRCQ0RbE?8Mr`Qpw_Ff)alY=V?{Nc)?LD-tdy)Ll^ug2Tp+a4X^_wyuzoi1S zWHZ04Vz1&Y^Cab&db8H2j1j@u0r)b69r+pjvR?yjP+BTA)uL^d>G2R)zjV2$0DkIW z!j}Mqe_^{i^c4dE5PmrfK)|7ZZ7$JTZ?1TqO0)EP8s4$hIN8%JqKAkLvOoLz+=2Fd zk99JbU*%md0fQ7n*drS=Avhmcs?2Lp{6EClqLVhKEpFmb27e1RfOR62RHRdqs!C&Z z%Pl$2Nm9}7)YE9f0FFB8)pJL@Lq&&ts4sA+0eA-hcYv1=0F{^HK=P5j%w;%P54sL- zv#>=6ZQL}^@{uspM}6JNAHl~@LT?dQ9pKep0Ds0$GAv$> z1VX)8!D!nue&dCZhSGyDViJzkXGC`C5kd3KV$y=go%=um{5H~L?b+Es<0n}l<0tnK zHn$qaL8!llc`lU2CK9zxG$OCYPfiviAs@!DdMlkVV-EBDHt5u}A)xuv7bhc5m*FPx z=>|y7f9Rn|*0+=wT+2cCj0Tcr76q{bOF3n0%P-1i6Ydy74mo<$l>H>|Y;#f6txRGp z)(UFRVUK@0R@hXdx}C}GRVognG=!t2=CJ_3x~#lMu{$ON_ZHLM+5Cu+swBihWM0bj zorl^;Wgb_f=u=gjU z%$G;To7SQL6lwP~Q^e{ts-zbx^64{o+Rfyk))#634gd@w4gx^>a{6F3cDB_(1*MGB zn)Lu1xxl-!uP>rnG@T?Fg3+T6;yhV_A|RibfgGWKhR@N&4pL4$@18aDU1*(4+sv8E zijLOD4w0BaoNYR*A3lZ=K=)6!*+xcPnmtJ;DK$2NMP3qazGI&|X}YIUL2WmdXQ9>? zY5)!Z3?Lo?z~yrOsM;wdpt`zPtByba8kdB{;IZ=U%6wgB37-oWcx z*TTB)0A%TiHy(ONT4;Sa9G1`%jeVYAnC9{JqWfk9wHW%e$^eW2HYqkhSjP0dIzz{M z#26%-*ll*V?qY3NIVdt0RSd9LLai^<02}}qKmr87`^yQ$Q7uJ3zwY%l%{zD1mh(AA z2YK^HYXIMj(+JkgPQD6`)EiFa@;Qj>%F-A`e!#rg3y+Vd zKU#zl0C7w2Gkv@P`p;j75yL2$_O~{@56BT~UN|_plEpe=!6y(S{0rOF&zr9y0C+BM zc=A!!Axwz!yrnnXU5EnGYa&+ z7}QTjn~ol!$6G;w#$9cF9ZpazQhh3n0DkqK3Du@cSh?vTN#Mr%Y;36vnWPwz09kK| z7V|t}Fab@+m`AoLRZ-MRC;$BRm5~=KLwL@=Y0Ldt2S6hVxzPnaeiHf`akT`z`3vCh z_(`UwZUE@03iCxi_xuxC^A$iUpH??>?C`JCI@;gwtKE#_+Dd4EPez>W43K}F{24#V z3Vr-!1c*iN>O+O&G-+Sd^DF!P#Mt@uzZ++jDD7FzoUk8ua}$A8~9l2 z^(Wz$mUN8~-!nPrd)2q?#3{Ewp=sQ$-R3ue5r8z?9sv;+rxp4%iF@zUQ$&x4`r2_e z;^H4ezEU?$2QWjeFVp}W02n|j7yvWf+pFlvbm#5MWe zCJhi`xjQ%sL{qm=PtBqI=bk5lc}nyZa#C#lk|%+;CAD_S(!9gFj~`2H2wBJrpt#M$ z2mrwxr_c6OQ`vNiM7&ypz2t`rR`t`tR&vkod#8Q7Uv{9@7is_w01O}v0^s50jn<3S z(u%)IjwRHFwy(vytaHDq(LKGb^D@D8*3HZ}M4%MtaHQ$+N?>T`x&v5~EWDg+II!ik z93fk_K~ss+@~EsswrM!_ojuu_qiKK5uDwZUEehbR$I$QqcGkLy*+uJIP*^3 z#xsC46a#8~p$6apzyQ)A0D?gP(9~gWJHFhkr^l9QBp`VHCEgB>T|Mn!uQC6(LGJB1 zHlUt~FOq_b;y)e0w5wnp-#T2GL!`rk<`A1a!|Ii}Fg-nn|00{J!WpJ4i~wZnJ%n~k zsqRu`?PeU~^9bLn;%C0%eNjsN2JUVRyAeW3>60Kfo15CG*Sm!qfRB6$Lo#KWpw z0~l?a`;$pc>oq+Ja9_R^;0QcyzaRq|n<`?Ve2^))?f`V=DiWEoDeT^Po#V~K{R!Er zGA~ZD!zFD(+~`Ea6=K4-LnvRG$Hkxy78c*`D5}BYHknQbK&>y- z02}}qz&i+lMKJ&<#M5)GLhXoeTEg)@EjIC8`x}W=qPL0XftuYYUafjB z)vp0`&xty0@WllXmp}jf;1(~y?X(sBMB$(Y6?=M=PT&I{i~x|$9>}{5GMG`huQRT! zixBx0SH8e`eQedyYWS&eVL%0HeW3>60Kfp=g8{G*-@QD|=`~?$flrxaOgr9%W<`4i z2f_f!foPqDij|N6>TS(xpaC*T&>J9P_cegCv%6Kx)p14RgjzQC!uEUGrXKu7Vs^y* z-cDpk%HK3#1klre%yLQ)Ptay9V138SKB;-@RPu3_nsu%Xs`If=EeL9Tp$6apzyLBJ z0OYg)peOkc>XjY$1IX7rzPFM#l;Xd81WbP#ULY+P%mq?^@*C*+iu*_Efy}3C00-)c zNch0#w*aFa`*&1;d2`=_Lxo5k&L1#oWtf+HqQVFu^G>KRnf3GUV|ad&V z7XSbPWR4@k|J)=H5P_G|BqhMlgWvy;VUz#!i~fH4e`V1BXYB7xNx;>_%fFuke|Jdk zfBdBYkmvutN22*}4-pU$0hdo)&Y^@n{paC7k08$?AcXw+@am{zRtVtF$B0Nq!7Lx< z03g1$xspnnPNn01id~JsI&oHl=6&H2ZcM*7MZHrhRb@aFqn6~GM(uHb#!s^STjM7K zrO-kKZf91fe2njk>oB0*F8x*X^#GTv+UwTSJpZK^;2iFm%ZmM5b*3kS2G|-#$7>usp-Kts0{~d;D3R+h%yTKW3C(fqepLmo5G%nzO{!H2BpOay} z7ZlyuWpQWC;Y0i6tm@SqhGR2j9d(1era$%mkAOi87(3Ek=hMeeNC@ZT73Qh<=Ee+5 zy|g1(eDZGyy)JX74#?(&T3@IEH~?@*$^ipl#aaP?l+i!m@TyB({>>`RJBXXZkt1NC zdf;FkNa#U3`C#K)67aSYKt1=i4A=EOiS@mWzF&iHBi=s#>c(%$H={8*`D$6eAl`am zX~@>fy~D?F2JrdP>TIItyBTKC)D~v4Zs0_0pvme zh`k1YFkPq(u!q)Mc1SQCiFPYD)I(40dU;-rHIE!kQ8zu|0CH4uY50sD3|<3B`F_rE za!i$tUnPMQYF=|uY;P@|RkxqVg7UH%Lo<>PMgaV^Nfh>tEp<$LY^HjfTfY{WQ*R|` zH5`TOjZ*)P%4COHU#I~%05E_L5CBe=01(biD~gRXiZx}k*Mq3;j@0h5NAd++FOC=} zZ@cs>=J^7VS2u zRv$Ay4JZVXm18#$lW^P6+%5R9VPRjpMj9IE^xck^2Wowx2H*g|0P-LJ-aouN8>(eu z2nS8<4PTShOnek@L#!qy>II&8s!|r=XE_<|KA`NbTmis&GwB+DV|(kv22y>pvk!I~ zrgG^4{qEe2L1y*(;h9aTX3bQeU<5EBXZkL0O@@cfiv6Tc3E`!wlw@}zdhMalmvEol z3PoqA^@SRM0{{cahX5FS1OOQ-VZ8$+ET-4jw`+tlJFx3|t?4BneB_leOmaK5m`(xO zSL5B45OKbB4Zx&+oO7E8`Ar3JcGN50;a9i&Rvgi6CA8|Zf8LaPyASILu`W%*FL1xC z^&}PDQ&vHh4|^46W!9NFxMp{+CQG=EDiUgap$6apzyJ!s0N7AN03Z{p`S;{c`tg=m zTNWQxCFLcX95qXw5bt}xdLVT`uonPioS};S7!i+f4PYvZ4%AYUHY*q3G8<>eF9}*? zx$wQ{&2Nt%NVnq9zi!*lt0zj?eh%PD<+&7in&*$Iq;i8x% z(WijYCrWQ0sptJ_olgOhE(1O(1dU%@0=ODKsgg5unBPyTkx|gSQ>`+|Xc2(4{_A0x zYe~)G!<>`>dl&&^T{ONLQmJv5;YK%zD1A@J`9%#>aQFVPf%h8!Y>!|MNPX5U)yv>b z6}9TxO?;(N(a+vnm4en@=(vS_d{r(t(LkJ-3KleFwe4jAc=#95d;-UkPX0?}pMHE) z8_BgsPpE_g00Sug3m_QLfIXNkwFCfCA1u?0$u@Zz)RK#j^`hNNJ+nO3H2ufy22Ufu z`Tmd~&<0~7Q2*YD`=9ZX?El&LN!M7dd$k|T!&|>6zaLRjvFQ}ty6?*E8lG**haXN-y4%+;h9w}?r zlaweUl19lh&KV0QHsPT>nNScgW3{cR>DI z1ShRuKL2wqI08)`&cZXPNt)$c7FH^!e*CsAUUH;(=`~ZL5m9DcR~Q$)J)ZF!Xlr9} zYz}LKtm!6!{$w8g<=mU;6u%X{R z(E_fPfHDYxrwag3%7$)J)H~ycZ)JZGnfP@r25k~(vdXl)vV`T~arnd_y(oN8F@WXp)4q~yJg z#j($~g;P(?%wYsTA|v>wtlu-<&PuVEnv}a{cXIepi(H4MtG9Unb4AZDsP%;!fCB&n zsDJ?Ig*nd$O{=SwffLPmeNZv~KUYM7cbS0HpFe17jKou&m1_aZ`}=cq$Q& z6Z2Kv?szZJ9eoU=p@Ujqr~x z5D-QHPhzr~Mrj<|c{`iJRCTv)N6@lF$G^TDB5=JyeptTP1GTP}2H~9a ze_Mzsw36?!Ct@^{+G3_$W#J>Ym62rn+7`!D#0DdPrzNti2Ux=q?RG+akLBV&kD2Y? za$LomESW*3f91gv1hu|U18@Lf0M!rx)<6L07J1XiPllP`QyC<6cd&0rDgc{|BRpHfQ+AXO>@;u9DdJj;fPjhM<(No zhP;D!HGVSkMASPfkX1X!oNSC0xXebZ?Dj3iy|^&jgACu^zN!_ZPR1%n^a<4@oEPyY zGcTGBjvVTbI&Ap{5JhP)(xCV(q}9B@_#yLHk>iXRooLwkDJiK``k3QK1zck`&%oJAhF$Qd=q>1GSSt4ZvFsxYc}uw3yJKi$@EbLvis}4ZR6Qrb;x#Amc{7i4TN9>&>y#GUdSBSf^<4&u*#H_tM*GP=Vy%v z@+S$q&lHQV;b+@H?IZs|;HuTsf&tt?SqFe>YOq+u?#aETuP4r^eMVqH^=O%Rr{c>O z9CQ10w@1NeK>9Zs>PXzNsMk9i?av4daGz|uvV23QQHftk$}iD$l>1B_&RG5EiBmNK z9*h7wP>E4Bf=WxL%2$tgKfm(`S83d{Kj>{2Y8mMm;EuO~`T~a?cnZ4vYY@hx_ab^Hzf+0QR>5Ai~mv#BxKy_pLSOja>l~TDKC$sFKqGI4$R5 znNGAZ89;XZ4PWj1y8720;4`<`%gNhYB02=4{FrnJ-@P=dEsR=B%;}qGN9TR}*I)!t z(#&qDoAjWSi-0s>I)od0Nw$>9iRaM;GGcww9lD% z{5`#q#4_wo=OZMss0GO<2DN7TR@`}&4H@wt-vJHEs4EWdu{vG@n3tn^kNSxYPz$Ku z*nDb0CSO-frRpvIm9_wgeuHu02aEuMQZsZ{RA1LHPli3xsA}E8Wv-XFH)n#Bq5LFN zK}X>nYJH&w-~hk?8X*9NJ_A51_=LHB3-P~EvWROx143LrzEdGN4J(KPhKSPnCj`C# zDoktY$!-5;y#`?0(er!?KbhYCA*X+I&DL;2quSvwb&)dQhEG0|&fVWI0tggQP7QE! zNlXik04=`Ms|w7>@&7=%suGAJX-k7^Z4b4+Py=uPU;v-N05~xuF82YvCU6FRzi|nW z7ni4~YL+ind_cXeKAjU5{siBJCb0o1N?49i`H=4AHGpkyV<&M(Y>m)Sv?Hndmgkcy z)%a6WFJ1(s3%$%1$=QMtz^sxF37WN@|9#_xi87v|T~FUCE5QerXfeh#tpiS>@1fQg zY5)!Z44?@DKy3PQ0&61CR6Y5 z%E=P39s<4-_5*1|9q$&#rlQm#GC-dBSG%Ok8{Z{?E-!p?`!jy>&VMp~lE-$Kpqlhp zzZomEyDw;@;q@NZb_Gaxq4I@hi<^DZ8i-zE_YOBYprc*DLOxorRY{pbSCTi+a%hXJ zPv9M|d_3f+V-s_8HLaCwq0tCeJ45+1o10{}-tJ54Sl+EOqPpyCks zM<*YSFDpSl=TooE4=clp!z3=VVlLTYP@4(V0KD6PyG`p~Y=B_SDLVkjdzrG3j?Ek0 zd@StE>C6-ZFWKVnil!ca_vb9f8l;=6K;^g3Z;=3BRb4MPo~slMW?Sgz1S2#a<9d85 zO9B^9Bq^d%t7GTeP~zv7VFci*+RTVSllF7RbukBmi2LJ}p1_r=|9|Qo2=aLW#89z_0Y9{3n;@=Cfv=$V5v>v4+c9hSf<7-?2)Dpv% z7q?t0M@*T8H~TQopO?utfAHyY5)!Z44@qXK&}!1lHw4*=wyhV2y1;r$k-7< zp_Db=TJYgF{cZ?Trj%UsJkU4q{jHyFBlFh)oWpfXux?Qv=R2nQoiMrt|7ev%QyrMA z;vOdOE7S3Z^`s@$q-zU>eR#oW}*^*sdI1oXI2^8igA2C><))#634gd_G z0|LMg4FEFeTDs@&#TN0JNCYYPl#ddJmg2+1+3?6m1A}>5-)U-rqFU;X`XPO!*8qIN zBxdp&zmPbF;j0wRvwghJg|l2*)|2#DR(cJor~W349YE+KN(kPd5K7zco!-OSCXxXlT3huC)+*oY(=WZj|qcKr55@GJZf{)O%8Cyq`CfE82# z$OjAf)X*ZU;hX|zN4!fO(=elNqEPg zSm%9D?hpVULH#e(AKU@Hf&p+-mI6T0yM!BaPAt0mqr(jjsAe=c7B7ziorWCVO$)^H zXCik4$(`>ijo<0{=RCK8<9jg=*Q4YdQ7z8+TM_MLnVn;7Kil&UKglDS?)aGoBY^kG zEZ>{@#k=!KBe?<|7oPCFVMxOMk=5D=WMYV<;dFx9;h_fLO8^)^7X*N&F90<5C>Q?~ zE&qK!=UL%Eqhg=ia}tH5bBtvs-QTq+FyAHtpSDlPHWS&~Tz3Fh&D8|!-#@|&zH8Jj zG+Vum_hL}0ts1*8@8_QKYU+FzMgWVp^cb8o?;Zl0LFs3aZLE0TOU#D!`@QOZk4fQf z-1`Z&zEA^j0AK*!5C9S80MLnpRe*ou;~tBNA3qvRM~Y{I9Cy8#>17dqMJd$Xo+k(5 zdTn-Z%)P6*1aLKeGUc2$rr)w-j(EgeolZb>CHAGHb+gZ4*NQ^YQdI&jtk=6mEK~=g zivT^Sjb1c}3?cd#J-Zo5?%1LuAlqjv7P?IW!nX{d94n;7mfo)-6ZJ`ef$Y9F8{1aSGp-|>^&jW(Cp zJU&Zu4RS0s<9@c${l-{-UlP^gV{DJ;0z$K3AD}*c1!#13w z@>}d%T8S_-_-%0ya%A%U*z!x=wwKa}1S^ZV_sExr1B0>{39FqaYn;yv=R$2@>_~IH zzXrU{kJY}?$)OpwXtNC44IpN1QQ}0McKdds^uUixKv4bPyuSkZEd+4+O#s2%`_TZ< zd}dDMyihm#Q;B+$Gww7bbluOj`I}vML;$(hi)duwKr+(8-ye;Zo?kCXxYoKC?AVjC zB6qD9$a9a=8Z1kfqsIEFO0&hh8Y#rQU<7cgdfFOmxgKb4ZW5*4^GisMj0*5^7Q;{# z;8M4AV)_K?iUTzOUy{H}QZE<)5BvAaB`I<5)d9YT04~21AeiR~ zHvqJLdu)vJeM4c-%yHzLcOIbZ=f|gdztBpTbhQdNKXH}FKRB2^T95pAl`Pa;Wu;-1u1 z7VDp59o0L)NDcJ`4mAMp0N@VL2LbT9=<@2DcPuvDg!ghMZgPT*;{5Zm&ee0#e14Fl zCpVr~e4lE6-xq3qp$6apzySIo0D2VxpuVrh zU4r7Jck79Bd`K;%!c6XTs%GwU;^CFOZ4Qt=^8`BIvO`(J-u!Y6AVG#VNotl+uv1d( zq1`~SS(qf_%zUs?ZM9f{?2jl#Cl~=(M9E{H#JG^FL`wej6!=bGkG6|sN8GscyiCaw@4^TQKc>R?c5b zSq!FHjFa~RnL{Z0bAr8PuK}bIa8h(HJ_;4^-~7hwAh+IC#pX!R@zBc8)aHs)z2LN|~K?s0*lK{}` zCQjhDc*D3?KwWaBWT_L?VisyY3xVT{0k_5T(ho*JEcI6}i>WaF`Q=nUKl=#atrkNj zoeSQ#GvXDu-qSez)PVcP-3_?y-p^s}06Du|$@#}2=0s+m(eqfTQblJO*b^2j#+gN~ z&bQkZx}eq@; zrmf^4@l>bCxh5)uwj|bNHFND`&kpKwpr`JfHPO6a{Uv~_@snR3u0B)1L;vvz|A}nc z&DhVVn``}o`<}H`R4wSA*|vjV1n}UV^u{=r?OCe5X#I1>%%Fpey~L=8@g;kK&1W(( ziZLLi-MNEDDwEuyvq5Jfr~O*0=n+ztV;Za+l>>~V#Jj)Y<0mf{b|~A`KEOx_;4=4j z{3P!j>E$iiowHGV*L%j=A2TN3I#OW3eB|I2@;?84gc^GKO{d2fz{gYlt6y=ZasP~; zg0SpRFrNGC65O7)1iKHob&tddHAZdnGJBCrnut~$8+xN4kZ?we8{*J z8E0a1d28OSq{1JXh8w3NzPqMpQJVfvpMNb-iur{Gr9^O_P1`Lu>KjO0`2gF>rDCF$n9t zZbxDzP4O*GWdCfVL0JQ}r9lnAdmgywjs7JM2<9Vu3IMrZPL=4S1K3w&f8j>WCATgA z%9Tj=l6w^^m~&kJ>ADI~W?N>K#Pr~wGctlijl|Cf8uCKRHKn^SsScQGGmWD4pS}Ef zgHND@ITVutwEx30t=-?RoM?LQPbca$3SPQkjPy=uPU;twf z0P4e+GnW%3Sbg!btraXmb-E7RLkGSQ(=Xjcx7n5CoF!T+s)0|D3I+1m9Xqb~dP;?c zv9RKo@hejA@sKyYv6~U`n~~Ua?iZuMxk4^Vu_$kk_7`sE*Nnmk@~t zMgW-{C756C?OZ%QOIH_p!ClXqRK&4*D@YctCxFa=eoql60KfnyAOJpN0YIOE z7S3l5s~o6r1}Wm)l__vxcm4HY=NH4&xh%09BXOxpYyAdG+`{|!U(`FaI5ZZ ze#wrgg5pj3+E2f$s%K}?!;EH9EpzEP@l@BK))#634gd^b3Jids>k|O9oDy>suOj^1 zVUq6??HLgQ{d<1VD}^N*o=O69ss>ITQZbuk?<-`Bc4P2P&7o4VD1W%rVsZ zLJhzHfB{TH09Z9#j-XCYY|6>vQ9!e8y*Ez(!S83U8Db*NhOIw*lN2!i z`jC;`0T&dkL8MFPKTsO|nGI;zG_#KD5%tgfQNmz!vJJhbL0sY|h&nL@VTAH1x$*sh zk2$24&1p&GcVO%Qs;9Tg>DEAE6~pMb z3-f6T-NYDNlazu|WHGY#Tu z{G?1uz_*f5!1pAr?mFzx$kL7z@3R3f?f3V%RG@xR}frs)75 zKM9@4RR@^;3*gWANda7c0O-BQWbDRHc+*zX`TZGbDUL@U+#4?BO6NV@-@{u|peI~c<0pM~tUpiuQgME@Bk=ML zQ%w>=ETdru`PbhWVpK_lLsrxvM3bE@cW!wNQ>z)|5PpR;C8C7oydZtLCVOI}{6Pm**G##W-)HdqT|jpPJ#i&%?yodJuz>st0CeVxN{xz%zOH1w&g#(} z!j9&NwsEBE{hP`(?!^eU#{iJY(8))WfApUN4w-f6v-3lkpNiUpFqIGjrnvVhRZ%J* zGhPfK)iyNJX2A%+(D6kwN78B;>*4sCgUI8K&%y&lZgbnmg~Ju z*7}dkg%VUcD)!!HLc+obA>G<7SLX0aWF6X7@Wb(ol;m z?r(>&1CaEKz6d3Z>=Irtn3m^2l8H8| zeqX_SpMx_~S?3$n`a%uB0e}H4fdL3|5CcHSIPU)CU2(7Y4bd}iE-)yfV2Zt6?D_sc zq2DD}D94HzNX_v?mNEpT_Zq;Dr{7QxWleDE)l{^TzvQ+0>az;P>`B~be>|?apioQ* zV+V*sH1`;=Wt*|A{YhI*C0{HT*BGUguhf3y^0fO$5o*g&>kBmi2LJ}J3;|%l0s!f! z9oO3cgtBvs8D6n4O9vtK{vg3@@$p(NLq-jtxf@m|4 z1CJ!SpL~|&jJ8;;uyV`VufX)-5{gg(K6zfht0Kf{at*-4#UoHPNh?oYlR}Gb)wUoN zJ!vA5YR!5psxb|ZT-Odp0I?#J48KIM$+Otk2FXXuHahXfweImYMOT9O`((c9!RL=6 z{0rOFPXRx{0EF=H0ieqMA^iz9vzi{yFERJpf3}MkC%deCm8A2S*3ka{*t_ensQPz* z^hgL2(k=q#7GVe(jg2WjdZtwbcrBHNhuvtN_s{aaR07-erLXC z_WpC$bv-fzx1&DyYwpjQHEZ501^|!&KJ9YDWyW~x4F+%-KN(s)qj}phq}h>_ir`*@ zDX4FZOnB5xhm8feZpoDIs{kW_(!DSRKC_fZ&Fm~KyLO)UsBAyCHBtxQ*2cX$1FTJ%x4vI;p8?Ika#~QcE8zTzpX7laKN$*= zh&l)_pSMPgHBmG1&lSrsD@@pCMx7EspNiEYPiN``;b?2%5MohrKTHLTqHi<|kaMH{ zKyk@O>ZHSb7v)cJ?asMqE+XR2P963E#`{ZG9!V8mv% zY1Ziby4XR*$R`pfp_N(FE}S+x%D9j4Frz6#@_Pc*)dXq*e7S)vH=9?}CO{ehVtvf{ zUH3~FnY%F(=)FHHN~h}TQOlzl?O)}Yy(k-o{6LJDcMDzUBmLLQjp0J6MzpGwGStk1k0)TRepF<{7gjRK@v=p z2R_PW(LYVJvA+hu?ua7SwDkLX6giR7843aChnu>1dRxVqOsX=jwt7pjE;p~1ZX8Kv z@Y%kvtYMZN|8|FHIN8#i<&bIylVfq9dNB=Zf1wt@0YCt3Ujg{J4FHj%T|8cTOT>UQ ziq%{M_>oOEUm+*-Tbdb9c4VR7w&@L)pY$$T>NX4#! zfj8SR>m>eKH(wKu$QKxw0Ar+sUF5^B&Ix);4HHRU9lquduH0_>kX5|4oly6wj~{A( zp%%aaKmhDO0Nmr*1%MX9mWKp#qT&a_ThCNFe}1)_Gwl+&rIr)xD|JSMkt79VXKS7J z+w3^K27s7cr8o9t9cRosv|q*K^CNN$2}~0`EhM)$lB^A=3;-Ab+yp%qB4obFBM^aO zx&CqTK!>+c-fQs*TV=)3cQy3&1E~FlS^x(C0kC@oz#azx>J#vKus)-t6Vyo~C{(B8 zcQ0o5`zNJuwQOV!RI9%`JAni$NKg6mPe!i+NN=k0ETy?_AqnsmSI~5?_9DKgn-aHE z?IfNEGoPFhhY+q zB4y`+G*Yu;Q1apETbW8FM-+*68Ib|uH!uSDetSAVk+f?$U3mX1yEAnyU*J)BV)N5h zt%`3f$9VQeQ2PtD01f~G;NS{?b`t>9@xvd#HgenAK+lu(3oDs;qZ406^je=RS-8 zI_`1MGGT0DuN9oKHH$hv-^IOaXJR5pgG{1BIC{5z1+*kbR*Yw3DuHLs^=Kmeg6?)D zspyzZ4$tqy!I6@jZ%!a1;Hh!vE#4h0RPp(sJ+xVFpQMhGn|*?A4y#UUCxeuK0Q}2m z{G0cP@c*%at1mae)eUL{aqg?zmtX(JQvP2a>F;l&2G;?>|Ka_g0hZwJ{NFd}>mQ*Z zh+p5nykYY9pK$pn{!O3!`wKOs>d&43&p+t$sN-P(09^Pteo`pf830PgXTHm<_!!SZ z(F{3kIqVz=)Xt>Ao{&}uO_hJur{n>Yh$+L*A;8%C6Fg6W;N@CiR+xp9Uv4aT3M)2<1QmQ&rXVB4H5<6=GKH{ z2|M-)7P#WAXa>Q$Q%WQ8`SDVE_&2jWVO&>7)%{D*G$A5)x03u6y7y~bbI)#x{2U_~C%`D-a&Xq@=ZEJ7>lcY$ z%Vy$6_p3HnI~1K7>RDAipTl34f>)9M@pic+{R#kp9|_=pUqTK5GE*%MBqE=;w7eZZ zUiFZb^-;iAvm9=a%tPP$doLSJeS!9d&LG7p;(upDF;JRXBw5ZF7bn4ckRWhkI_1H~RWs5N?` zN?cC>2DG0Nle1Z&3ajee+02gj&v_~>aO+1S{g;x=0b4iRVVnS~p~pQBT`YiQmX_#% z#XQ-aGMv}#y}4+yIWXh@AKNF`yLG~T^Nw258ZB8 z?mH!l^_g2XLMWNAGlLO80cl!SEfL@87Gmg|B}PFto0=cT{*jd@pDbQH)_vfK0QCtD zwE#W=AQRy93cx-)0Q6L%GVkI12SQ1gLyejQ=AT-Yeq;HMOdoQ^&cBKBlrskk``rC} zYN~#6JpsY{?n20K>uw6Sx&e0TJ@QdHr-e(3hR2m-R)6fS$vpG(rSWI&3Y@5 z4QhX(7Qg{O09*tB!2kaN{=&JG;0*GGsILL|pBCP1)Ga2oXdJS}d41`mvB;?Z*qO{i z@SqRq=3_KpfAaeb4B#?;lDDE0=($A2h)VTiJLfR!cK?s$7+-yJF)rkQ>HWb7SdUD4 z9~kz$6N*cGZ7JpTPDSnHgC3o!mLH28lWTTo2|&IJw6hcOtHb%D)kxaX9iha>6K3(x zdC92J?YwuYj?k>cjNtK;|Ls}z-@b9V6Zks-0RG9}_(|bK1OUjL(&$M?WCy+z|G91E z<|FUL6l+FG+XSWN6mu6sn)q$t<9ndrUCquuf8r1sD6+4~7 zh`#ygU+Ix<4IhKTGg<7BWA4Y{BHz0wPo%?8|3J$13GVcdY9V1568XQms>Pp9y3?RJ_TD1MZ)94Kcko2E9rkjl!chNu&JHI z-6I?jax;#e+!@B1mw(Ga8(XbtjepLDZ1tDq7MAhj3lSg}gS_g{-Utc8sI(y9M<$xAiwn5Dt z$^U|9>`zjML*%eQtykG=CRL9J=t5Z^u<#c*T z`8`Ie5_i*T2;np6xx1C~{mrOFsQran00#g8aN`PqK6ue%K+-s`+z`Lh!NKfbh)faKYE|GytZN3Ibo$1-L3UF93BZb6|vGX zo;v+!%3T^vFaqEmnG8&M*E`PA#0kK9uy&?Zcr;_1li8NoIZ+f%ON*e?8AKRsyJpp`}IT(LS_r8uZUJR5MdFN^CQJ;~3M;8_Rlc4|O?t>rT z5&&`l0DK$Z{{S0&=!^SzamTrSIiW35cGdmQPD>Wni=OxVKo+*N{ z?BO%Ezovs}2ft34RDp6+F9P|o*^43Ue8Bo4P)kJq?Q~er1 zD4(v3Vqa1{PJH`eEN$}IcL{EURe1%G@JiO*#GSsU6cJ}o`wO)I4gdlG^$NfT@EhPy*~hmKTHDh)o#c(gZptz;Jdn$L zc!zeb0K5Ew*d~z_kQj(F@v9{v^BRD8UKzdJQWXjEhD4Lx$8mG7r&haVIqwgT-sU~n zjzV{U5kNFC6A*0yA>FxaxaM}gb1^e9_lUz=vIhIC;_r02fm%@e3$*|a00ICF0zecI zdzea=@QZaZ-n7GeE#rptEV_bvn?p6o@M_M^`i*h21S zeLuqw@t!MD%FLBTmxHK#$2UptV2SUupoT5W-AJ5TN}!ZJY_XI7G$470ahnz%KZyW! zyW9!9^%uaO_(@SQ@M&K}~^f8r-YL1O0#zaQr;lUm_6j@-b< zQ;eK#dUPzQs_DEX6lGJxy8;rO=5(+g$nX7Gn?hF-KeCEC!mHs3u&%uj_bz)r9Ui?b#D}=LD*=>h4#NM*$ZX-{gmhtiyVhFFKA7v4w>lg3TwyyNx9w zes+4~f&)Y3W9ca83fRqt=TIjJ)B^aZfs7jTt5M?xKKVCsrX%CvE;p%$AZ1d{YRKoQpgoPQGiy2H_`;#|+bFDfoM2msZFw#GO(*qN z822`R%Xu*M5sGWN`{^}U&FxGu&?xe4HF5yRe_YJ+lgH=xZBqNmNP|jD=9wJ zmP+`Q?%iCXd;b~_|1++K9{>BDP_xKGB^Uv?8S18JhJHmUr!83)q|?27P&gMB8;`21 zdLHQf;^$d6)c!&(fCGR4xP1k{8T>imfuF-(iA`o+Yt?)$n;Y4s52ll*-(`VhIKCAx zF>P-I0#S>9%h`*N|62m$U%2g+ll;;QRK8dy=LLU;@a_yn7ebXSu2rlK)fDpxtN=JI zNL~pl-(i>C6t3si7u%?db}9Fh+<%|iyCUbAmaY?nfRs5jmeG_V?YBWlI`RZbO8#+MJ5?r#&BIvfTtIo`L`*(tcv5FN~9gP zwkh5TbygzndniIR(7sC^-3=pv{$u*KpJoea%}ytg)~{Wjib>RuSI@OpO~(uU{N!$x z0kywS3*Z1C0C27VY=N^tOp!fvw<22;KjU#vN@vmt@?uFZtPizeGdO*GFWvsS2S~i4 zofj9w8gmUm$e$kJ7x#8Wf~aLP()0xm`Y=;*?9_zKEtJ#kXFTz+?gPjNyt^C6fbdqK z`umf0hT>VZVM67Q0ZT801Njhv?dP*l`wO)I4gdlG7Xm<>4V(tVh+6GPYFo>#5SAS8 zNR5?!kV&JnqM9v*j(xx>FT-g76q74>K0qG9ehpw$Tp+{OKv*DB>2?TPL$@<}{f6Iu zOKRn<=dztHeUk|=P5`yXGY*OPp--7SczFbe5!SeNQrr3{>NyCdCsXepz88hsU#JCe z01yCpR{(6md0@_p6oLanO&-Z!W8}~7^C~o!nDc(X=`x@!JI4`KVZs8k&80HpO7Z-? z;*IU`jWbZ&t>n@B9<~-V51;qQD-3B(iQ!CS?hVu*8SOuol_rBVf0Qb2fek5M?99HM zDmIl8U-wB=5GspvlS<-!cC$}AF|8og`8%{8CMbG8P5lJq?~vNRmCbSc zSO~HLw)K&KWQaXK&vw5%{!&Zgiil>Ql)jky(hfBVtJsxjNytz=5-g>=y> z2K=BCR7w9q!6i0=zt{l&;@`nRrwJzVkF}hfz3$oPt_jK0YAM?ukC5-PuBkU=&)ahx z>;QeDJ!R)QEpJ>eH$yDZMJx|2)sZ9QWd9 z3Ec;8o6@Ny?2mVwexREm$o{lfU|wq&Vj)0?gSwhPEr2gKkmZID0ziTRoOZlTS1_qj z{>Co4_W1B{q!%=$;&_T!loTtY>S5D~izowB<+5ABbVDJz1~9#t@IHUN@=NuH(h?*t zP=8n$hk9p?|C~X~nW7z2*(8hr+%y|#l0$A~W=fwtAx&2KVu#?#)jMeND1<^Sf_~eS z5o&*-7Qg{O01#aPFbC(If86DqfAbrQo=>%K?}Vo!?Ow9)lqADk!a%DJK8RkTDT5M%TW6ZwEzwP0)P|(K$04K)uY}ljbz;yv;$&n48sQcgPHB^ zACDJy>CFe3{O8!p8@+*Q2d>EKgdNt`6ClU1t({``=ljO{CyzFHS~5GAn8YV^AVAHQ9h7!9!VPIZMd1(yzYp&FXI$J?Jv{kPcGZxdxD6vR&tx-_YaTLFbEpTrB;QPYTeMa`S}dS#5Pw&`&=Y zC&1afGn(W?)%Iq#-PEYmdn$j=evJF*lVP3fip+7(ikG1F7is|<00h9DD*&_LYo8W6 zY%Cs2i~U%8c;=;*S~3%SCN%~%aZF@%D;DU z5dP2m|NUVgzYXEPMM?gbFii3P^4kF7)Zlwpf9QYt!DZ;=fB6RT^>+~e{G)IX0FdxW zaqu1LKZRG10{C+Wyj>m$q6h%|xqSoivA@)v69C8rw71Mdf%!W}bTuJ0GD`q$YboTp z4oWtkUq{9y$K4{J_3+sA3naa-f8r+v{&(UhLqQ6psc307s`NLTMCGW+j6KbK@!}&DN_v&F5p4W8 zD!%k=e4Qq|cwDFh2WkO)B0)e>{sjr}mofxj_MLL)78A$f1(?#E+X; zY*1!N%2bUaGt+|9%aC(7bEI=_u2g6P|Z z@kLYt_;;Z87is|<00aQ_6@ck^0LbGWKL2@U;R9@*Rdz`VLRasRY$nS#S0dLG3Tp0yqE&02&AYY4R5El^B;L>jU?& zlv^{23@*M^)#(ZvL{mTD#C|DS%%!J|tpUWGm^A#J9JP22pto8eyV6fMX>`@3y4iv= zERpDGZPcXbVBk*-r5&kx85jYSsDAVrq+AURZ_pZ;Ybfj8tz%Z7ltb~yZT8p?|BCko zYJZ^?zyUx2&|U#BXaImxR|UGHb}?V_{hAQ+9}MA{7frj%x|k}=4bqhPBC|aO6g{`# z;I!0xehuKgQ5n*V?J*r^0fYOqzM%O)_OA=NCL3FM&np7cxUpeMo0+2ce0O{s&2+2;2?JS*lowzT^ zXlkaQ5)m^HVzs;iqF9+KX900@zK2B*p zKhdz8zgrAK0%4p0n9g#xi(#hKVpHMHG68FW%N0ULWbHnF)0m!Z>s|YjQ2PtD01f~G zfc^@=3^*zUMc# zlIbsizwwhYZ>+(e!LD$(TqFXA@Hhk&Md2O)>P&Wd&!Dz$U*jHzYNy&-2Sok#_{G9w z49!3BlY;+Q{NzbJVunw;MmCmNod%n>Tym?ZL=540L?(CfoN9NlSMhgR_pv5%4WwB) z;+KIo&FZ+McxOxZvQSv`>H7;6Z5WL0N{m}#Flwswk5ZFH>Xct$0GnN&_Pjt+@bTw7 z$Bg7%0x=}1^T_TxEm%>^RQGdp>0vx-9dgDoDc2wHFf97>S#b1C^bbDd{V0(*MOgVu zlyqO}+1lUtNcuB=Qf&}5W3~VhAA$fvoa{kIhPf7>i1SbTq~qJmZk#m&iF6fSafu9F z9sBf9TCFBXbZAAurHFh2Fhm<1Z%on%G;Q3plPZbzoA7{<{OQME=i~gJx_%^$ty0x} z>q!u;9W~S!epkq1T5gDK3qJ=Os^|Zp;F3J^U-AHdnK=>wh$Q!}UL)^R!p=6s%03gx zyBi#1lrOy9IS*52q9`(>(17Cd!TtcmLjCJSk7%D7?K@7u!+iC*69!}*(ifP1OiEPA ztm;82tOQEau*OdgPKGh;)RIq2r!sPGb(3I+p>jGi;hze*Q`yj1myc6JUDKczz!yEp zqQ?RO@R0I50JNCX>-wg9Lz9`8ZJ*PLKnK-N?p5?x2cQ-!*UKjW{so}hHX;}I{?k91 z%Qr5LZybX(y>*J-s`s%J`?D3RG6-g(q6~zd8Z9n1$Hy-&V{hxgI01wWG}&w-F#FjV zjVCGHdlp^RisXgdF8U;8m=k2~O~cR0`VXGqP)jZ+0P7V1<52*}QcV3ttQUZoon|uY z*t&Md#VO?#3#M$3O{S%d(T0pO&}!7PppIO+;Tk~7sH9xSlgTib)mE_$$*^sQ3#k!Y zBz@A^7UQ_%^GXnm0BFA&_s(`|n`K@&;v1}uQ(KzsO2-Z0yQX}1q;B!JP=opehgtxi z0FVj5b_D=50}h`f=%!pON8*z~3}dQt$H;vu+4Fw+E$T|L+fn5<62=YSP3EK}604Sf z=VkM}G$p~O*InH5I!x(jJ^L6t&(R`FwEzwP0)YJrz#=kuAD{tQ)x6W$lXaQH$sciYu&%Gb zmhyM*&Dup!)zn={ZlJ(iF%N$VGVS#Q5c`GpecdnIV|v!CEz?CX)W>Jxe!Ha%NS74p zZUm~`jM6?^|;gc|Za+jH&v^o%q)P==z5D zBT;cmF=BA}+}12Nm9hhH5l_n~!kf05`$Tl7UVu zk=K+Y!XpUi644ynmyq`F42a2QGTg}g2Qz*kT$RT!g)(2WBx+9MtlreoT{ret<%IR3 z;B~7)GB5BJo&?>@yN^$9=JWH>mgVkwBn|H`dxJWgVSK3lg<1dy00F>t1t6Cj0BU1r z<-MrzE6)fmJpaXp9F2D;>&WlAz}>0?1lY zqZ+rWp22=BmZP;NOdwo%ro>A=C+|zb>$beNbq7SXWmJTMra$AaDdSp zfW&nM1ey_~bs(?Hr^uzyvX_72C+}UwPnPYy=6PyZYVu|ufvPGQIi-pNljBePWC$qC zz|Sb=o#rdk)K8zoBfqw_Q0+GVC^&YW9$xYjdS{XVdia_&6%!F@Xw0pn3NLx+*fR42 z*Iw!-ccXR`4MM1d^VIRO9_A-e~BCt4>w;HjL65 zl5eNc+64|B(ggKQmQ3QKJdnL!YYvAb+w)u}eJN7} zUfCOdx+nE3&F2MXSylRrz#-?J%rO`Nv=OTUKAf&Er#^@U47GMYoWfe~9IWyCa>gwd zJf-preyv~V?S)=(34rekz`G~lQ!Q2sJkm4z(z`^L8gepEC{Z&`3yFU(KW*qX`<(Q+ zh!H4sa6)JmPm_2JKsw(n6}0_4dpzFtk)7quNMmF+P^2DGEL|JYO(pCZI~V~t_Qv*h zw^%TRDY+G-$H{R1PEB1!y_fK*-{W9CVgX$i>dqw80{Gr0WN-8C6@VQt0O;FdbgXpr ztrEqLc5=KgDP21F(+2ICip|0s(_gF$88riK61>TM=WCCz0mx}k@3qPtABL`=-B(rL z@_I2sjiIpQnAWtn{S;Zq-ycQ*iz;6&x!G^igedo^X}wI;wB#qwU;zP0b}3$4DU6b) zKS0i1d z<@pBnFVKNKyr;{;qZO>DQ{R1?6q%Hu_7`da8~_A>z!d8|N13nOtB>OKUgC{<5py zULrfKTCiapg9g^@F;E6d8^RNGn-Q)eflrJ@+G7eGyN}h1xpM9rB@|G8E{57)s0DBU z5CDQ#0BT+UK)2+K;)@Py@K)HqzU)VFZV_OX8-H^aD#;$meXnqd2o)$cZvNmX;-~aA z0Kwz~m9+41Nx`>jn_@x2$)t*jKk2Q#Moyeq9D3%0U_IF?QqFjTsFrc^Q@IgO^gHP# zoTd`#QIQu9hxGD~>i7rxq4pPQ0UQ7Xz`ZK~$7tYposww!1xc9P<0`kXW)}2RYX!u?h z$spQeKi_CLKG%&Rb|n^rO}oPax@u)+Fz&zZ~zbhLJ$B7 z!ZiR;&=bnkvx*7tb+lmYU}Uc!%i;|&2_}WX1h%C&%=Ahaf%Z;pVZoJ!1lJQ_xz9s9 z2QhuQ#5fxJuv?6ZtIwK4Q(qc2D)3#a2$O>fi~u;@LT#th^@p5yOttF>+n-D}vMJUk z3?pf*=&ApXwC6`ZZsiR zpv18GAwC@Dzorq+8AE*x)Xfu zsIrLD7Po?~$zIwXf14*jlHp00wxT7e>*dC#6iY8T4rluD9L2tVoB^(bS6S{$sps-G zzy+q-+CdB$0hBmR%y6aFpcYzD`;rtiG*t2$%oUqST-LY^tt`aOj)DHy8mtbs%_iK04q>kH=WtEb_>*D)13*|g z8qq&uu{}#!-05k+L8Gh|cUi1x5xWoPBFVIqf5Za`XK*Y0?yB=&15gD45jgKSC$Kz- z2l>l53_LQL_N9>h*_7%&O&~k09SS3WUghk@ir4RMSA>tq<|Wkj8p+~kUf4&yr9%m3 z@iM(AgZc!AS^%E_kO?3T0icB21^_v%RV<`WWe?a0D7_f(>UuJ!x}{=jqlh5<^Jcpz z^-V;e_K9fz;G1F6YXB4(elEkeB^AxT^%HUBiemU~Q920c<@Yy%i(_yPaizuQpX@e&+%WBB1scY5^Po1c1a90PV*BP*e-Q3w5tp zI3lsH;CU?d&9nJepE(PskB}(1g$0@&!?eIf^c;5ll zlTSQZt|!29wXn2{$5QuQPANk6(7G0*bFp0-#9v`IB=;&F8*+!h2mp)DLw1_8s#R(e zKfL)J4$@**A?uT^XIg~^A8F`w73rb&7is|<00e;46@Zxo0La%pB?j$|A?^n4)4Ojz zy9W+Lw4!rnR;Fr#M5fA#Mc09nwDUdgy#?sk0G?I`N(L6~3Tm0&DPef_@iSXP6p4?; zMaMHj8e4S2Jr@`O*ymJy_D}V036n1qvrBYh>!x~MrMwfU#dBlBaPR4BDyaR1S^x(C z0U!+lpiI3907X9o=Df5$q(jBxIiY)#-z_Xqv@_J|hZG;euW^(%&j(Z(V40LeCZz%c zxQw6NFhe(bu@syp9Q=y)ZJ(a^1S(zUgVhGlnQkWXt_%em7y*>={BAvew}!ENAQI_= zq3&{vx>Y9D;s?7b8K)HYX6YD6gDA3|+C6+~ktvj!nu0z%L2gVmw&&CU)==%-T(eIF8?mn z2$#8+f9{E2{(Jrw-T?pL`tSQEe$wy1#$#T-3Xll^fNTE7Pbym=fTFwX1` zDp`#3UVs{VHKOZn+kWyd?IGzZKH3KQrr%{vMVGPt6F+(Xe=B}+c;?kDGi^Rc62*y+ z??t*q79^()5{$y^)2C$k_<+THAoP`YMEu)p;WpMDI>Wu0o6BfsZ_{KR04;lz-&4A{ zPhB0EtZ&INRJE(0pL@?r6L<3ZiRsDPS+1Xh{%KrE6hSFtc`$;!K~)RLY_j*tPx?6J zK1W%z4?@_T-+X>SuG+01!x09AI&h#Cz$X%9B0c;I65y{~AOHZ3cs?Zh9VAltggt-{1QLYt;QA*)qP zVAOsl{R>pWEBxpgi~w%4fPhS2hTnu0t`t?-b)bKXEc#7r@3UO;OA)4XY$uRAR+Qn z&#T*CK3?yW5DVOwACu^iUia_~VnuG|uyCZJ`FuEa(865rUis<^tnrhP!Y4*38Ku>% z+oGig>}Ngz)E1;xo-BXkr|6i!wZ%K2KEa_Dz$XA?0?0uCsPOy(fDppj8a9Xd^B?fD zJh)NQr=HRHEFyN_g{;^7mjCT)%wr(CD^^;ttAyV*0RH>wVJ1(r?*_a%!bORCbtZ6Q zD>!kpxd$mFP)7y8J`dvrh(nNDzTuh8*~g^Z8nQnY>Axf5hcdqj8tq^TblMPk1+~9W z3*Z1C0OYR#xCH?~4HVBGXi}+rcD0YmXcj`clHpAfL&i=980L1o8Ge<}2 zB)$fqvTOa6WD(Eq&D=99!Q&rF4h!ZXdygvD>4rK2qJV5UFap42!a@@=J9Y$dH;%9} zYd`JGTwvaDP~iK*Bc!Eia0h-hX7JShA8(gSfIs*VJP_ZWjEK9Ar|KGjqCUP~-r_73C_{cgpwD}p$tdf~ z`+@AwJBE`_EIr~r!3e;$gD?e`M;s5YNl5Bc&Sf#tV z{zXvhMKX3Y7IYTu1*h)pW#DP6Xf|efDJrkfu%I^>Mft*dZL~S`PUf(&x2yas+njkx zSX+COE8Ve3_EM(p9ybedi&vrc7is|<00e*%1c0jaG5|C|i7z?y-UK~E`QS8zOPclw zMRTnX_*622Hsm(7LnsQ6buPX#>mJj;%VU}brAcyU@<$kxarstJ7R;a^VC*eL9iYsg zF_+!`ndb=O1i-$z(fk4{&W6?mWDRSH4vFVq4!00;o( zD*z$u0MN=p!5w+J!?~7G17-5bgk)ze`p2KtUz(Qq5UW1~g{lD`k@nbCq`wNeUILuA zyoneyer33#<+>2ik_9eQd<^uzt;za^o^sjiW+^g^04^{jU1O+cgrA3fdC*7jGwkV^ z4-IzLaY+aI%Cdp;Q#Yvng<1dy00E$K1z`9#0Q5dWFPmI{))Qa)u(JOQbeh@JE%MA0 z)VNT+`ml%VW-ie6PE*z~$zVGez-9a-btPZaIg87ukDZyVM`aV=iPH^m^XeKkT{jHq zfyH~UULbe0W)9%yTQ03Aqn8p8@>n5-A%#wjVCUHB#}t=4;W0jll4;<{9a{n51exdf zu2>7YjKIuOT$Vqv&x*axFySpYR<3c2cV+<&Al(Ssa>=f zLvR2P0IGih_}|dm@K+;H1Awwje4Ss_gd8u%zn{$8zZDo&YT&0ahga<4d(?Pm!VV8e zHni8hr6c|~ep2{9i=Wh6Ma5EC(d=O=1=8t&iw@brM) z)zMU~s?_w#5#e?AKipr1LBk9S!b zO=qSpEDugHR0n*ZLfZ*3z>&pd@41fwdijXR$}V^itxDMIH2AKr*xmTNq|X+rI(Abe zbqcnaRaeJ8yL95Q=@PAf6}gB_$I_yukqrXR=%qf=XgzkAmAMy12II_&MtDk>*-`edAYf(F`=3&)R6|Y08So4UJWwy)bz>#pwGYTeQ0k5IGT)% zHDk>H4VD|!T zE_sk>D+j5TW!^4DO2}DA-6e+FU#JCe01yBgR{)m#03g>nyfVg%c_fW3fg5Lq;*??j zt3;dF!DqKdebXrUum=*RX|!J2;O zsdnqt!!yp@5FG)i{e@Zp2LJ(}bp^oD5CB>xPP0{|XQ}WYBPx|sQC(cRfyYd^8-!pq zABsMYa9{>BV?nPqrE~s$y#$ohzxjl})W>{Jm#2-(Xf;;EO;^RnBvVR{Wr6jcnBqMc z0qi#TY(Lj6mZ97t40Rrs(` zZT7<@x8!p_XH(~WwRIJ?RgJo!?mnsZ`EroRkSvyfM}E4J%6U0`+1yH zN^$4S{+)}18B_6EL4jw;t~GwP9JR**Hn z;{fuu<<5@s=^|YNnEDtbc}t5`-AiKpJ;70LX=m*B2m9|yBPwFTwLEl|7GVUCpN+SB z!`A#TV4?NRIC*>3S5ogWlL=un;U9x<48JBML+vlr0yqE&09^N!yOPwz1j*TvQF63(fSlua2o8Rd65&8<73Iiw@ zv^rMOMUFJT3VRqK&h*Dh!3cnZ?tz4WGj6wxm)p9tY5-=2#<6K6_Z$7{Ga3@pPe<^V zf&U9D00h9JD*(V%04VZJ7D{8Z`7Gjd_MchO2>eXAxFep;`|+R_&Fo;D6cwOI&u`8o zN@^e&z-9boQ8KGGNpVg&Xv_X*K2vps%1B(ImP(l99(5-WHy{nxx4&qu9e2)INp<%V zem*5T1Ze{0%I#WWQ9md1J+2Br{(qO8pNp;~l6=`6Q zWh)jlJbn^7k;{Dmy}tnd#7}Ar>i|GHUf+2TJc?A*nBQ~RF;JD(3C# z6IJIsE-z0Zu`z;97hf~7K5IRXasvklsrFVnC0!6|sQ&bPBAgO@n&jn?e(_3#ZE4L*zt%HC{soEB1WFACJPnN`zWOW2d;0Xq0reYAcOGx%%v=LV8*-qFm6O1E#>W`Gn8CH)K^OAbK6WB* zZ%F!Ea+Y2ei~v4W;?IGQwbIoa?@YZQnyLLr6(Wuq@}Akh%8zs-)6X4*+RP`!dbH(mE(>)DG_HoKHQOA_-0D->I;v955x=LlgtvzT2NYH&pfSU8m=D zPxp*@%JpbE%(M)i3kq*YoGDD*@vJ@kRBU31iDd*M0EbUsi`x&xBGTzJZw+9exs%w^ z_GsOc%~LZ~OshihGlJS*s0DBU5CD%M0JL~S0ibvuI#y(~IAI`x=qa<6d{CSy`MkFa z7EYRDdU^&yu{`ieDA8=bKorIG1b8OLbq_1-Ts9B8HrR2u?7>FUpj0|FZ}k@Hi4;Ej zDHV(We$K5;laKWk?E87(SG(-{6srQdnalZ@jdoemjFw}qq4pPQ0UQ7XfbkW87bXCZ z%MoSx*W}>6Ai4`aTMi%9;5C!?WlkeJ#25FSe&S2=0@bm}_7fio{5#=#bJ{7l!T=$# zY+&;B82k4SA3}ue8!g}5Ow*N6L^^thU<7bs?yWx2J@V{xmv_2p<-vQ2dL!ZPGhrQv zAK&U?abvon_7`da8~_A>$rXTB5cquC6jn^Fq=WwVi)hrNop>jS`qei~15t};3(Kag zy$QYnu`6k}9T4T!uP4Cad!w6HhuFlJ<|{b?_l#%A7W=OiURS(}iD&#{1CY3jd=<;X*+bGWIy&F*b3$*|a00O`i0zmub1psvRV?nAQ z=lAyToY>1Ogf{nWqD(S?CTT}AyJUs1sc;NX%s2Widq%L$HGtX<31kA-r6oL8XC?q0 z2DhFgSAh)2n|z0a*#N45`>=+=c;UEI`h9(A&^Fr}E=tq*10`D;RRaNJ*7o9|7 zSQ*Je>7NO389(`6{PA>FaN(G>i<`G);cnbB_cDbd(}1n_JL4wLL&+&%Tmr0u%eA9x zbKF%0@#FZvJop-V3w@6^y@klTYe<@8jrc1_K&(R{+<+H<@Z;DnBSS?yBf0Xas^T-x zwVV=?X}0xQc>E*+)a~++qxoL|f8!^$69~X>J==H?Z4!tk(&>3C5TRI<9`h%TpzYzJ zkKKOjb@G|}B7pZNhZaK+m zkRR{b`v@S~Pc(fSZq1k1%Z)eT>o<(dErnm3%*Ra4^f=;#o#J%U2)%Tt<*L}2od{tB zU^a;q=8wuvQ_na122DU3SFx{UmflRv=4<);0@359HK?lz)B^Z&16gh?AOLh2vH+mI z|A)Q1j*6;%7l%)Ghk$g0Qi61MN(j;+jdXVmAq-v8C?g;(5`svBG?D^}l1fRZG`y$- z&-tG7{??o|zvr*_oxPSYGy7t|b$#Z#_uRAhbsue$;ZjBqfi#MrFo*<*?k9u%DO(v>V90h5=fL9&|-}6koS0t$8#$ zp#(rpDTu8Y*X4=FlO6P;`QbQ7npng1t+-S|sB@M=P_Yuk{6Y+X0RRKAx(48o3IN6O zE?snre`l)}jc3wD5_feS3B16k%|?R1y+5#gCVC4f-1d4{I(^Lk2EhA+F(Y+RN>A}x z0}yg<+>_Ya9uuhtw7m$2r8P=1@ySpE=-EP`6==6ku8iKp3f@%zsMytIww5^6&;VHW z{82fO3NgPB17HBa0IaV8)D!_gx|;YJ#kg@jBd;aH$Gi(|I=#8gjgT0*7Iygh#=caR z0`1C%N%l9~{^>rL*w}~IIrIWQ+=#S%^jCQwLCpzH*bixxvBH3l{fiZEp#hAA@ry8Jt4 zu{MkR%LOsN z5CdQUzyO|r0qDpvT`hXUqkZ5#QEa6B5;e1Di}fQbLv&M}j0XOpjv4}uO0P7K=9yZe zp-GA8%@E*0S)uBrM=2liyzkRY_OFJ5F=GYgVZR=pdY_FaB=?{_(NV0}N{lh(r`d-A z;p5>%;oP`47KBR^wn7xE+(tG`y8aOJ3o!r&01UwP8bDkU0MxHbL5Wt@vy+b`JYNbB zVIeKeJ-B;$`2rqIx;r?&GajfU&xn1Qb<%$WK;wm~B+AQ1Y>-Z3APK{(j?=!|-{*%M zLMU{qLf@^K3PCvppptMS$`A2z6;sa7Y$0+8jU$H;krzJHyVyR}CUF%NfS6y10Wbhy z0Cv{^K2rcdf@|Xb$WfF7asey%PZI=2_O>xAz9wO#l`35BCPdA71DR2W?HmS}-ERPF z5?E5?@mEXH%(TI+6}%5i*GtDTk8!~vS=GS$_Q{zXN&rZB=7q;D_1G3n-{17wRtCtU zz4PRoIxn;chP#kh;EscsUx)!P0AK+2U;w(*9RQH0q=7}AGe4QrcBX#%Yg=E6%d_cU zwOmqf-BdIEE^^0#%0d+GO-@yqR{;LDpL|gNC8!HM<%<>fL*WcPUF07KgZGBU%`Hef ze^K{wGW>uN06#Y-+bU`l`xt7Jg8zhXskjttQZIIIRq>4K%xgsL_n=t?MkQt?cDpU$ z!)R(kN(NOm%b(U|I&MikaJM}ZW<5cT>lARCyR+nEo+0OKYY4F{uaO+ag{V>O^tl=n z2A9tMJAl7^9O3@U27ctfHf+4!d)yZEX9dOke@_#=1yK&@o z!^pq8;o;D3o);W1@h1fQm)tzb&0qHS&$)h<|M@%MuXg?UssDIhiN6y;4q$ zQr9L50J5%2$1qTO)B{)8pNm0r{?_kgvnSddIY&Xa+k8SXnGHz)L@$B9pxy3w`$@5X zr~PCk2!xc!Yp^oG=(lCe)CI>trn$JyJwLpoA{IqU=5X(p7f3{xY~>OCK*&LAu_Ujp z!ex9H-$Qop*2yi#bhYRgbczArj+@3ODWYM9%YN1i2{JJ4-boqmmALx;b#>E%B zk9IR8VcspNNX%j7&cvb>s`OpMj{vmm^q{Q+ov@Lr$WVx&otWzSic?$0usV+W8M`Q? zVsm$FX*^!Ix8>)~g6PMRSsGi2`Gpt&0{|Y9oUQ?!IA0x<-kP+RpIIv^x%V(mLza$& z1i!Hfx6b!xOCWPZ>NE`oQ0WKlkx*h#^$h?nziv07n(cA)b7DC82$66UuN}!P#~M?2 zcodA}74-htCUTx*__?Rk>=owe@MGP2I7Oi(eDLjX~7fp9?@XJrdeMUSQ)p_89} zdWgMe&G;75!O>Go3sQ*rg%|(>00!W44IpL^019*!`}BGc!-CRv+K59uKf6tQH8E^e zKQ~oCN*e1hCmk5X6&9<$MVEd9z@#ORw8w+7Hv1DV%i2ZI?R?{p(XJcsI@L-Z+p1_; zu0aVvBbbQv&G*&Rl<(CUYeS4VLR=ukCi=H+gvjBAkzBXQA?6oi01N;afa^7Yi8}yL zjD8=ys?Bg7+&gRGWU*SBs|D_I0-Z{65QgZK%D&hj0~ve+$81kkOKt#sdD2>^TH1Wl ziGSJ}v|RRW3cvC>w|RB^MoQV_flVB=6I1%ry2|(O4JW%&DbHrT4aT2xHqMLb3R%m0 zYl|wsoGT46zYqgp0Kfp;zyS2A^8ujEnP7AgYEWn25H62JI( zeJT3{H2ForMT>2VdIMm5Al%|9%MM!%m&O;ktrx8R3skFV#yHVarhqq~m~~qyE5KZa z;`g3=H1YbAcssUb4bFPe4FKtSv*%|V+MI1W6<>Q`g4Ixc@V(fUByhiad&DFoSO+i}LOLFX6&OQ1(n zP>Nr5p27`)cs2pv)X(DGiVko5SwJ%+Y0}R2)9vvtw~iZhaFb)|p#(7P)Q~sVXVDse zC=*IVM`F_P<}nSCsiI2BkK0C%N=cd_<`-fB3;-B_=QV({E&xazS%HlF!vVV)U}7&( zl7yaDc|YD-om+`dzVE)fxT-XeRl1_p`GfAs6@b6(Cm+vf-TU~wd3CvRZdSG^f-ZOA z^83YrmnQ?rh7_USI~+;?AJYb)ABw37Ux2LT`y=g3gk>U z+*CKaE8{qf#vzCUQ_+&9x}mE&2%q3Gj)(VH(m8Oc zx_-7&?Q_u+^psi{05AZrKLA4E_3wrn$kknaK-tDIc+>^(3u4x}!(4-8St}o!F>aSS zGCGhyK%aTxmoMg)YmhXv6yw0TRb|%~*1O3urC-pHF@`W#T0lmn>$+2BZ7wHpS^*IB%urp4W1*0b*un?mof0Pe4Y-VR9vK&%~9i9b@1I@s>tEv*1X zNN)Oz-Y?~$wr23>+9O(-Jing%{EXO2Yrq?5-bu&cf!t6Wd3C8+Xb4#bQ(vzet_gED zCzRwx(dK>NHDl~zKNEB9sV|DKUbeM(el&bR|BOexbRGZd;`kM667r9a3NAxsmy%kK z91Rra$TRF;x5Aro*8DJkOA9doMjlMw8(i}Y5_$ljw5&-+uf%AqSkv2BYOP$s_67Vq z$j2=A(B_Zs+lE&70%-{cIXX$W4sQlMLta5*?!3eqVc!FiMWxnb?jzbw4Xcr10qUo5 zqGnZAPy#T5lagoE(|uIQ0smqfkrs>O-ME;zF%gBQKz7VM&S`as`Gpt&0{{l#a}D6@ zF8~N5;C@e^^-B*VwXPpYQZZ-g2^hPSEBxPVdh-R{?Q4sG@GQF=`121vZUEHmIF1+} z<feA#%k}WaljxfAH(o9XQ|M(^$TN> zTf+N>O2s&v4T$-L7yttR2H*<@V8|#10J##3KN)@%o@9S$T;4L;$92e#l4Z@m9**g< z(nsu|k`Clf95WOjY)iWVP_FJL(Q`yzpOXIa$ z9lpN|U3VOYwD=Hil`n;dJ|>-xD~zFN!-}X21De5&O?LXaBHsY0si%H`z?*=f^J#-o zo}C0EOBb8-Hqp;Go!QdnODqC$C;{;47ZrzkZN7Lj)xhXp?i^CyssI3 z&*=bSejx_H0DuAbUjwMW4*X!<>Mv>twL(gn5c3N$ z00saIAn+Q1+6w?kVm6*u^71}^f77Tx07YbVecCBe zhHff=qGSq(R82)XTN}+s)$F&6wpy9b_nSq(Bi?S1jj_lB!H z3H(>0jp8d}1jajrHnj(;+}f=n<`-fB3;-BF&^3Te006`%(6u6XcF3N6*N!I;tyVHl z=;O8{YJ+nA@gpHNHI}ZUB&u3w=gl*Eiv)M}Xh2e|aYS$XE>}f=yPA zLKf+*XhsZ_0C>JFKG@1{=F7Jha^9k+v)m)0L*gz`OBlUR&=W9c4LdIz?qAsco&yEA z2C#Sq0QFOA?l+nZK6!Lhucv`P!T{gJmA%QYe53OyBt|o2Z-6pIiGFZ{n1ALzt&ibP zL5SoF)6RDT-iGm}Q_d8V_*n6I&&WK;NJPan`MI0SGX^DqHD`hj;PymwD%0Uudj2hs zcnQ>t?$@e{wJPr9ozq0!pi$dh<~mBgT>v0x*SyMI%d0kIxBrWJBtkD?s_{iCF|7S0 zWFdb61pfi>yZxjw*VQ0Ejc}My8GMhf#E9mC91&3KC!Fg}rpP@b@UBySP$&HaXnYb= zrhzP)^t=6}#C7}0t}VtAyQr>J?XGrb?6J^0TL|~uez%{D0;RQK%0DTvBvUquo^vS7 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 0 { - _, missingTxs := compareReceivedTxs(recvHashes, txs) - if len(missingTxs) > 0 { - continue - } else { - t.Logf("successfully received all %d txs", len(txs)) - return nil + + // Check if all txs received. + allReceived := func() bool { + for _, tx := range txs { + if !got[tx.Hash()] { + return false + } } + return true } - } - _, missingTxs := compareReceivedTxs(recvHashes, txs) - if len(missingTxs) > 0 { - for _, missing := range missingTxs { - t.Logf("missing tx: %v", missing.Hash()) + if allReceived() { + return nil } - return fmt.Errorf("missing %d txs", len(missingTxs)) } - return nil -} -// checkMaliciousTxPropagation checks whether the given malicious transactions were -// propagated by the node. -func checkMaliciousTxPropagation(s *Suite, txs []*types.Transaction, conn *Conn) error { - switch msg := conn.readAndServe(s.chain, time.Second*8).(type) { - case *Transactions: - // check to see if any of the failing txs were in the announcement - recvTxs := make([]common.Hash, len(*msg)) - for i, recvTx := range *msg { - recvTxs[i] = recvTx.Hash() - } - badTxs, _ := compareReceivedTxs(recvTxs, txs) - if len(badTxs) > 0 { - return fmt.Errorf("received %d bad txs: \n%v", len(badTxs), badTxs) - } - case *NewPooledTransactionHashes66: - badTxs, _ := compareReceivedTxs(*msg, txs) - if len(badTxs) > 0 { - return fmt.Errorf("received %d bad txs: \n%v", len(badTxs), badTxs) - } - case *NewPooledTransactionHashes: - badTxs, _ := compareReceivedTxs(msg.Hashes, txs) - if len(badTxs) > 0 { - return fmt.Errorf("received %d bad txs: \n%v", len(badTxs), badTxs) - } - case *Error: - // Transaction should not be announced -> wait for timeout - return nil - default: - return fmt.Errorf("unexpected message in sendFailingTx: %s", pretty.Sdump(msg)) - } - return nil + return fmt.Errorf("timed out waiting for txs") } -// compareReceivedTxs compares the received set of txs against the given set of txs, -// returning both the set received txs that were present within the given txs, and -// the set of txs that were missing from the set of received txs -func compareReceivedTxs(recvTxs []common.Hash, txs []*types.Transaction) (present []*types.Transaction, missing []*types.Transaction) { - // create a map of the hashes received from node - recvHashes := make(map[common.Hash]common.Hash) - for _, hash := range recvTxs { - recvHashes[hash] = hash +func (s *Suite) sendInvalidTxs(txs []*types.Transaction) error { + // Open sending conn. + sendConn, err := s.dial() + if err != nil { + return err } - - // collect present txs and missing txs separately - present = make([]*types.Transaction, 0) - missing = make([]*types.Transaction, 0) - for _, tx := range txs { - if _, exists := recvHashes[tx.Hash()]; exists { - present = append(present, tx) - } else { - missing = append(missing, tx) - } + defer sendConn.Close() + if err = sendConn.peer(s.chain, nil); err != nil { + return fmt.Errorf("peering failed: %v", err) } - return present, missing -} + sendConn.SetDeadline(time.Now().Add(timeout)) -func unknownTx(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil + // Open receiving conn. + recvConn, err := s.dial() + if err != nil { + return err } - var to common.Address - if tx.To() != nil { - to = *tx.To() + defer recvConn.Close() + if err = recvConn.peer(s.chain, nil); err != nil { + return fmt.Errorf("peering failed: %v", err) } - txNew := types.NewTransaction(tx.Nonce()+1, to, tx.Value(), tx.Gas(), tx.GasPrice(), tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} + recvConn.SetDeadline(time.Now().Add(timeout)) -func getNextTxFromChain(s *Suite) *types.Transaction { - // Get a new transaction - for _, blocks := range s.fullChain.blocks[s.chain.Len():] { - txs := blocks.Transactions() - if txs.Len() != 0 { - return txs[0] - } + if err = sendConn.Write(ethProto, eth.TransactionsMsg, txs); err != nil { + return fmt.Errorf("failed to write message to connection: %w", err) } - return nil -} -func generateTxs(s *Suite, numTxs int) (map[common.Hash]common.Hash, []*types.Transaction, error) { - txHashMap := make(map[common.Hash]common.Hash, numTxs) - txs := make([]*types.Transaction, numTxs) - - nextTx := getNextTxFromChain(s) - if nextTx == nil { - return nil, nil, errors.New("failed to get the next transaction") - } - gas := nextTx.Gas() - - nonce = nonce + 1 - // generate txs - for i := 0; i < numTxs; i++ { - tx := generateTx(s.chain.chainConfig, nonce, gas) - if tx == nil { - return nil, nil, errors.New("failed to get the next transaction") - } - txHashMap[tx.Hash()] = tx.Hash() - txs[i] = tx - nonce = nonce + 1 + // Make map of invalid txs. + invalids := make(map[common.Hash]struct{}) + for _, tx := range txs { + invalids[tx.Hash()] = struct{}{} } - return txHashMap, txs, nil -} -func generateTx(chainConfig *params.ChainConfig, nonce uint64, gas uint64) *types.Transaction { - var to common.Address - tx := types.NewTransaction(nonce, to, big.NewInt(1), gas, big.NewInt(1), []byte{}) - return signWithFaucet(chainConfig, tx) -} - -func getOldTxFromChain(s *Suite) *types.Transaction { - for _, blocks := range s.fullChain.blocks[:s.chain.Len()-1] { - txs := blocks.Transactions() - if txs.Len() != 0 { - return txs[0] + // Get repsonses. + recvConn.SetReadDeadline(time.Now().Add(timeout)) + for { + msg, err := recvConn.ReadEth() + if errors.Is(err, os.ErrDeadlineExceeded) { + // Successful if no invalid txs are propagated before timeout. + return nil + } else if err != nil { + return fmt.Errorf("failed to read from connection: %w", err) + } + + switch msg := msg.(type) { + case *eth.TransactionsPacket: + for _, tx := range txs { + if _, ok := invalids[tx.Hash()]; ok { + return fmt.Errorf("received bad tx: %s", tx.Hash()) + } + } + case *eth.NewPooledTransactionHashesPacket68: + for _, hash := range msg.Hashes { + if _, ok := invalids[hash]; ok { + return fmt.Errorf("received bad tx: %s", hash) + } + } + default: + return fmt.Errorf("unexpected eth message: %v", pretty.Sdump(msg)) } } - return nil -} - -func invalidNonceTx(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce()-2, to, tx.Value(), tx.Gas(), tx.GasPrice(), tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func hugeAmount(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - amount := largeNumber(2) - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce(), to, amount, tx.Gas(), tx.GasPrice(), tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func hugeGasPrice(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - gasPrice := largeNumber(2) - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce(), to, tx.Value(), tx.Gas(), gasPrice, tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func hugeData(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce(), to, tx.Value(), tx.Gas(), tx.GasPrice(), largeBuffer(2)) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func signWithFaucet(chainConfig *params.ChainConfig, tx *types.Transaction) *types.Transaction { - signer := types.LatestSigner(chainConfig) - signedTx, err := types.SignTx(tx, signer, faucetKey) - if err != nil { - return nil - } - return signedTx } diff --git a/cmd/devp2p/internal/ethtest/types.go b/cmd/devp2p/internal/ethtest/types.go deleted file mode 100644 index 805d7a81b9..0000000000 --- a/cmd/devp2p/internal/ethtest/types.go +++ /dev/null @@ -1,291 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum 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 go-ethereum. If not, see . - -package ethtest - -import ( - "crypto/ecdsa" - "errors" - "fmt" - "time" - - "github.com/ethereum/go-ethereum/eth/protocols/eth" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/rlpx" - "github.com/ethereum/go-ethereum/rlp" -) - -type Message interface { - Code() int - ReqID() uint64 -} - -type Error struct { - err error -} - -func (e *Error) Unwrap() error { return e.err } -func (e *Error) Error() string { return e.err.Error() } -func (e *Error) String() string { return e.Error() } - -func (e *Error) Code() int { return -1 } -func (e *Error) ReqID() uint64 { return 0 } - -func errorf(format string, args ...interface{}) *Error { - return &Error{fmt.Errorf(format, args...)} -} - -// Hello is the RLP structure of the protocol handshake. -type Hello struct { - Version uint64 - Name string - Caps []p2p.Cap - ListenPort uint64 - ID []byte // secp256k1 public key - - // Ignore additional fields (for forward compatibility). - Rest []rlp.RawValue `rlp:"tail"` -} - -func (msg Hello) Code() int { return 0x00 } -func (msg Hello) ReqID() uint64 { return 0 } - -// Disconnect is the RLP structure for a disconnect message. -type Disconnect struct { - Reason p2p.DiscReason -} - -func (msg Disconnect) Code() int { return 0x01 } -func (msg Disconnect) ReqID() uint64 { return 0 } - -type Ping struct{} - -func (msg Ping) Code() int { return 0x02 } -func (msg Ping) ReqID() uint64 { return 0 } - -type Pong struct{} - -func (msg Pong) Code() int { return 0x03 } -func (msg Pong) ReqID() uint64 { return 0 } - -// Status is the network packet for the status message for eth/64 and later. -type Status eth.StatusPacket - -func (msg Status) Code() int { return 16 } -func (msg Status) ReqID() uint64 { return 0 } - -// NewBlockHashes is the network packet for the block announcements. -type NewBlockHashes eth.NewBlockHashesPacket - -func (msg NewBlockHashes) Code() int { return 17 } -func (msg NewBlockHashes) ReqID() uint64 { return 0 } - -type Transactions eth.TransactionsPacket - -func (msg Transactions) Code() int { return 18 } -func (msg Transactions) ReqID() uint64 { return 18 } - -// GetBlockHeaders represents a block header query. -type GetBlockHeaders eth.GetBlockHeadersPacket - -func (msg GetBlockHeaders) Code() int { return 19 } -func (msg GetBlockHeaders) ReqID() uint64 { return msg.RequestId } - -type BlockHeaders eth.BlockHeadersPacket - -func (msg BlockHeaders) Code() int { return 20 } -func (msg BlockHeaders) ReqID() uint64 { return msg.RequestId } - -// GetBlockBodies represents a GetBlockBodies request -type GetBlockBodies eth.GetBlockBodiesPacket - -func (msg GetBlockBodies) Code() int { return 21 } -func (msg GetBlockBodies) ReqID() uint64 { return msg.RequestId } - -// BlockBodies is the network packet for block content distribution. -type BlockBodies eth.BlockBodiesPacket - -func (msg BlockBodies) Code() int { return 22 } -func (msg BlockBodies) ReqID() uint64 { return msg.RequestId } - -// NewBlock is the network packet for the block propagation message. -type NewBlock eth.NewBlockPacket - -func (msg NewBlock) Code() int { return 23 } -func (msg NewBlock) ReqID() uint64 { return 0 } - -// NewPooledTransactionHashes66 is the network packet for the tx hash propagation message. -type NewPooledTransactionHashes66 eth.NewPooledTransactionHashesPacket67 - -func (msg NewPooledTransactionHashes66) Code() int { return 24 } -func (msg NewPooledTransactionHashes66) ReqID() uint64 { return 0 } - -// NewPooledTransactionHashes is the network packet for the tx hash propagation message. -type NewPooledTransactionHashes eth.NewPooledTransactionHashesPacket68 - -func (msg NewPooledTransactionHashes) Code() int { return 24 } -func (msg NewPooledTransactionHashes) ReqID() uint64 { return 0 } - -type GetPooledTransactions eth.GetPooledTransactionsPacket - -func (msg GetPooledTransactions) Code() int { return 25 } -func (msg GetPooledTransactions) ReqID() uint64 { return msg.RequestId } - -type PooledTransactions eth.PooledTransactionsPacket - -func (msg PooledTransactions) Code() int { return 26 } -func (msg PooledTransactions) ReqID() uint64 { return msg.RequestId } - -// Conn represents an individual connection with a peer -type Conn struct { - *rlpx.Conn - ourKey *ecdsa.PrivateKey - negotiatedProtoVersion uint - negotiatedSnapProtoVersion uint - ourHighestProtoVersion uint - ourHighestSnapProtoVersion uint - caps []p2p.Cap -} - -// Read reads an eth66 packet from the connection. -func (c *Conn) Read() Message { - code, rawData, _, err := c.Conn.Read() - if err != nil { - return errorf("could not read from connection: %v", err) - } - - var msg Message - switch int(code) { - case (Hello{}).Code(): - msg = new(Hello) - case (Ping{}).Code(): - msg = new(Ping) - case (Pong{}).Code(): - msg = new(Pong) - case (Disconnect{}).Code(): - msg = new(Disconnect) - case (Status{}).Code(): - msg = new(Status) - case (GetBlockHeaders{}).Code(): - ethMsg := new(eth.GetBlockHeadersPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*GetBlockHeaders)(ethMsg) - case (BlockHeaders{}).Code(): - ethMsg := new(eth.BlockHeadersPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*BlockHeaders)(ethMsg) - case (GetBlockBodies{}).Code(): - ethMsg := new(eth.GetBlockBodiesPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*GetBlockBodies)(ethMsg) - case (BlockBodies{}).Code(): - ethMsg := new(eth.BlockBodiesPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*BlockBodies)(ethMsg) - case (NewBlock{}).Code(): - msg = new(NewBlock) - case (NewBlockHashes{}).Code(): - msg = new(NewBlockHashes) - case (Transactions{}).Code(): - msg = new(Transactions) - case (NewPooledTransactionHashes66{}).Code(): - // Try decoding to eth68 - ethMsg := new(NewPooledTransactionHashes) - if err := rlp.DecodeBytes(rawData, ethMsg); err == nil { - return ethMsg - } - msg = new(NewPooledTransactionHashes66) - case (GetPooledTransactions{}.Code()): - ethMsg := new(eth.GetPooledTransactionsPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*GetPooledTransactions)(ethMsg) - case (PooledTransactions{}.Code()): - ethMsg := new(eth.PooledTransactionsPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*PooledTransactions)(ethMsg) - default: - msg = errorf("invalid message code: %d", code) - } - - if msg != nil { - if err := rlp.DecodeBytes(rawData, msg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return msg - } - return errorf("invalid message: %s", string(rawData)) -} - -// Write writes a eth packet to the connection. -func (c *Conn) Write(msg Message) error { - payload, err := rlp.EncodeToBytes(msg) - if err != nil { - return err - } - _, err = c.Conn.Write(uint64(msg.Code()), payload) - return err -} - -// ReadSnap reads a snap/1 response with the given id from the connection. -func (c *Conn) ReadSnap(id uint64) (Message, error) { - respId := id + 1 - start := time.Now() - for respId != id && time.Since(start) < timeout { - code, rawData, _, err := c.Conn.Read() - if err != nil { - return nil, fmt.Errorf("could not read from connection: %v", err) - } - var snpMsg interface{} - switch int(code) { - case (GetAccountRange{}).Code(): - snpMsg = new(GetAccountRange) - case (AccountRange{}).Code(): - snpMsg = new(AccountRange) - case (GetStorageRanges{}).Code(): - snpMsg = new(GetStorageRanges) - case (StorageRanges{}).Code(): - snpMsg = new(StorageRanges) - case (GetByteCodes{}).Code(): - snpMsg = new(GetByteCodes) - case (ByteCodes{}).Code(): - snpMsg = new(ByteCodes) - case (GetTrieNodes{}).Code(): - snpMsg = new(GetTrieNodes) - case (TrieNodes{}).Code(): - snpMsg = new(TrieNodes) - default: - //return nil, fmt.Errorf("invalid message code: %d", code) - continue - } - if err := rlp.DecodeBytes(rawData, snpMsg); err != nil { - return nil, fmt.Errorf("could not rlp decode message: %v", err) - } - return snpMsg.(Message), nil - } - return nil, errors.New("request timed out") -} diff --git a/cmd/devp2p/rlpxcmd.go b/cmd/devp2p/rlpxcmd.go index dccecf3c37..aa7d065818 100644 --- a/cmd/devp2p/rlpxcmd.go +++ b/cmd/devp2p/rlpxcmd.go @@ -24,6 +24,7 @@ import ( "github.com/ethereum/go-ethereum/cmd/devp2p/internal/ethtest" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/rlpx" "github.com/ethereum/go-ethereum/rlp" "github.com/urfave/cli/v2" @@ -46,22 +47,30 @@ var ( } rlpxEthTestCommand = &cli.Command{ Name: "eth-test", - Usage: "Runs tests against a node", - ArgsUsage: " ", + Usage: "Runs eth protocol tests against a node", + ArgsUsage: "", Action: rlpxEthTest, Flags: []cli.Flag{ testPatternFlag, testTAPFlag, + testChainDirFlag, + testNodeFlag, + testNodeJWTFlag, + testNodeEngineFlag, }, } rlpxSnapTestCommand = &cli.Command{ Name: "snap-test", - Usage: "Runs tests against a node", - ArgsUsage: " ", + Usage: "Runs snap protocol tests against a node", + ArgsUsage: "", Action: rlpxSnapTest, Flags: []cli.Flag{ testPatternFlag, testTAPFlag, + testChainDirFlag, + testNodeFlag, + testNodeJWTFlag, + testNodeEngineFlag, }, } ) @@ -103,10 +112,8 @@ func rlpxPing(ctx *cli.Context) error { // rlpxEthTest runs the eth protocol test suite. func rlpxEthTest(ctx *cli.Context) error { - if ctx.NArg() < 3 { - exit("missing path to chain.rlp as command-line argument") - } - suite, err := ethtest.NewSuite(getNodeArg(ctx), ctx.Args().Get(1), ctx.Args().Get(2)) + p := cliTestParams(ctx) + suite, err := ethtest.NewSuite(p.node, p.chainDir, p.engineAPI, p.jwt) if err != nil { exit(err) } @@ -115,12 +122,44 @@ func rlpxEthTest(ctx *cli.Context) error { // rlpxSnapTest runs the snap protocol test suite. func rlpxSnapTest(ctx *cli.Context) error { - if ctx.NArg() < 3 { - exit("missing path to chain.rlp as command-line argument") - } - suite, err := ethtest.NewSuite(getNodeArg(ctx), ctx.Args().Get(1), ctx.Args().Get(2)) + p := cliTestParams(ctx) + suite, err := ethtest.NewSuite(p.node, p.chainDir, p.engineAPI, p.jwt) if err != nil { exit(err) } return runTests(ctx, suite.SnapTests()) } + +type testParams struct { + node *enode.Node + engineAPI string + jwt string + chainDir string +} + +func cliTestParams(ctx *cli.Context) *testParams { + nodeStr := ctx.String(testNodeFlag.Name) + if nodeStr == "" { + exit(fmt.Errorf("missing -%s", testNodeFlag.Name)) + } + node, err := parseNode(nodeStr) + if err != nil { + exit(err) + } + p := testParams{ + node: node, + engineAPI: ctx.String(testNodeEngineFlag.Name), + jwt: ctx.String(testNodeJWTFlag.Name), + chainDir: ctx.String(testChainDirFlag.Name), + } + if p.engineAPI == "" { + exit(fmt.Errorf("missing -%s", testNodeEngineFlag.Name)) + } + if p.jwt == "" { + exit(fmt.Errorf("missing -%s", testNodeJWTFlag.Name)) + } + if p.chainDir == "" { + exit(fmt.Errorf("missing -%s", testChainDirFlag.Name)) + } + return &p +} diff --git a/cmd/devp2p/runtest.go b/cmd/devp2p/runtest.go index 76af53ee4d..7e3723c641 100644 --- a/cmd/devp2p/runtest.go +++ b/cmd/devp2p/runtest.go @@ -20,6 +20,7 @@ import ( "os" "github.com/ethereum/go-ethereum/cmd/devp2p/internal/v4test" + "github.com/ethereum/go-ethereum/internal/flags" "github.com/ethereum/go-ethereum/internal/utesting" "github.com/ethereum/go-ethereum/log" "github.com/urfave/cli/v2" @@ -27,23 +28,51 @@ import ( var ( testPatternFlag = &cli.StringFlag{ - Name: "run", - Usage: "Pattern of test suite(s) to run", + Name: "run", + Usage: "Pattern of test suite(s) to run", + Category: flags.TestingCategory, } testTAPFlag = &cli.BoolFlag{ - Name: "tap", - Usage: "Output TAP", + Name: "tap", + Usage: "Output test results in TAP format", + Category: flags.TestingCategory, } + + // for eth/snap tests + testChainDirFlag = &cli.StringFlag{ + Name: "chain", + Usage: "Test chain directory (required)", + Category: flags.TestingCategory, + } + testNodeFlag = &cli.StringFlag{ + Name: "node", + Usage: "Peer-to-Peer endpoint (ENR) of the test node (required)", + Category: flags.TestingCategory, + } + testNodeJWTFlag = &cli.StringFlag{ + Name: "jwtsecret", + Usage: "JWT secret for the engine API of the test node (required)", + Category: flags.TestingCategory, + Value: "0x7365637265747365637265747365637265747365637265747365637265747365", + } + testNodeEngineFlag = &cli.StringFlag{ + Name: "engineapi", + Usage: "Engine API endpoint of the test node (required)", + Category: flags.TestingCategory, + } + // These two are specific to the discovery tests. testListen1Flag = &cli.StringFlag{ - Name: "listen1", - Usage: "IP address of the first tester", - Value: v4test.Listen1, + Name: "listen1", + Usage: "IP address of the first tester", + Value: v4test.Listen1, + Category: flags.TestingCategory, } testListen2Flag = &cli.StringFlag{ - Name: "listen2", - Usage: "IP address of the second tester", - Value: v4test.Listen2, + Name: "listen2", + Usage: "IP address of the second tester", + Value: v4test.Listen2, + Category: flags.TestingCategory, } ) diff --git a/core/rawdb/chain_freezer.go b/core/rawdb/chain_freezer.go index cbfaf5b9e4..bb2c409dbb 100644 --- a/core/rawdb/chain_freezer.go +++ b/core/rawdb/chain_freezer.go @@ -131,7 +131,7 @@ func (f *chainFreezer) freeze(db ethdb.KeyValueStore) { continue case *number < threshold: - log.Debug("Current full block not old enough", "number", *number, "hash", hash, "delay", threshold) + log.Debug("Current full block not old enough to freeze", "number", *number, "hash", hash, "delay", threshold) backoff = true continue diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index f7d4a2e1e1..959e328b9c 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -977,6 +977,7 @@ func (pool *LegacyPool) Add(txs []*types.Transaction, local, sync bool) []error // in transactions before obtaining lock if err := pool.validateTxBasics(tx, local); err != nil { errs[i] = err + log.Trace("Discarding invalid transaction", "hash", tx.Hash(), "err", err) invalidTxMeter.Mark(1) continue } diff --git a/internal/flags/categories.go b/internal/flags/categories.go index 487684d98b..3ff0767921 100644 --- a/internal/flags/categories.go +++ b/internal/flags/categories.go @@ -35,6 +35,7 @@ const ( LoggingCategory = "LOGGING AND DEBUGGING" MetricsCategory = "METRICS AND STATS" MiscCategory = "MISC" + TestingCategory = "TESTING" DeprecatedCategory = "ALIASED (deprecated)" ) From cca94792a4112687ce23e7041b95ccc7f4bf6123 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Fri, 22 Dec 2023 03:28:32 +0800 Subject: [PATCH 155/223] core, cmd, trie: fix the condition of pathdb initialization (#28718) Original problem was caused by #28595, where we made it so that as soon as we start to sync, the root of the disk layer is deleted. That is not wrong per se, but another part of the code uses the "presence of the root" as an init-check for the pathdb. And, since the init-check now failed, the code tried to re-initialize it which failed since a sync was already ongoing. The total impact being: after a state-sync has begun, if the node for some reason is is shut down, it will refuse to start up again, with the error message: `Fatal: Failed to register the Ethereum service: waiting for sync.`. This change also modifies how `geth removedb` works, so that the user is prompted for two things: `state data` and `ancient chain`. The former includes both the chaindb aswell as any state history stored in ancients. --------- Co-authored-by: Martin HS --- cmd/geth/dbcmd.go | 99 +++++++++++++++++++--------------- core/rawdb/ancient_scheme.go | 8 +-- core/rawdb/ancient_utils.go | 12 ++--- core/rawdb/database.go | 2 +- trie/triedb/pathdb/database.go | 36 ++++++++++--- 5 files changed, 95 insertions(+), 62 deletions(-) diff --git a/cmd/geth/dbcmd.go b/cmd/geth/dbcmd.go index c60147b862..1ae026fd29 100644 --- a/cmd/geth/dbcmd.go +++ b/cmd/geth/dbcmd.go @@ -198,60 +198,73 @@ WARNING: This is a low-level operation which may cause database corruption!`, func removeDB(ctx *cli.Context) error { stack, config := makeConfigNode(ctx) - // Remove the full node state database - path := stack.ResolvePath("chaindata") - if common.FileExist(path) { - confirmAndRemoveDB(path, "full node state database") - } else { - log.Info("Full node state database missing", "path", path) - } - // Remove the full node ancient database - path = config.Eth.DatabaseFreezer + // Resolve folder paths. + var ( + rootDir = stack.ResolvePath("chaindata") + ancientDir = config.Eth.DatabaseFreezer + ) switch { - case path == "": - path = filepath.Join(stack.ResolvePath("chaindata"), "ancient") - case !filepath.IsAbs(path): - path = config.Node.ResolvePath(path) - } - if common.FileExist(path) { - confirmAndRemoveDB(path, "full node ancient database") - } else { - log.Info("Full node ancient database missing", "path", path) - } - // Remove the light node database - path = stack.ResolvePath("lightchaindata") - if common.FileExist(path) { - confirmAndRemoveDB(path, "light node database") - } else { - log.Info("Light node database missing", "path", path) - } + case ancientDir == "": + ancientDir = filepath.Join(stack.ResolvePath("chaindata"), "ancient") + case !filepath.IsAbs(ancientDir): + ancientDir = config.Node.ResolvePath(ancientDir) + } + // Delete state data + statePaths := []string{rootDir, filepath.Join(ancientDir, rawdb.StateFreezerName)} + confirmAndRemoveDB(statePaths, "state data") + + // Delete ancient chain + chainPaths := []string{filepath.Join(ancientDir, rawdb.ChainFreezerName)} + confirmAndRemoveDB(chainPaths, "ancient chain") return nil } +// removeFolder deletes all files (not folders) inside the directory 'dir' (but +// not files in subfolders). +func removeFolder(dir string) { + filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + // If we're at the top level folder, recurse into + if path == dir { + return nil + } + // Delete all the files, but not subfolders + if !info.IsDir() { + os.Remove(path) + return nil + } + return filepath.SkipDir + }) +} + // confirmAndRemoveDB prompts the user for a last confirmation and removes the -// folder if accepted. -func confirmAndRemoveDB(database string, kind string) { - confirm, err := prompt.Stdin.PromptConfirm(fmt.Sprintf("Remove %s (%s)?", kind, database)) +// list of folders if accepted. +func confirmAndRemoveDB(paths []string, kind string) { + msg := fmt.Sprintf("Location(s) of '%s': \n", kind) + for _, path := range paths { + msg += fmt.Sprintf("\t- %s\n", path) + } + fmt.Println(msg) + + confirm, err := prompt.Stdin.PromptConfirm(fmt.Sprintf("Remove '%s'?", kind)) switch { case err != nil: utils.Fatalf("%v", err) case !confirm: - log.Info("Database deletion skipped", "path", database) + log.Info("Database deletion skipped", "kind", kind, "paths", paths) default: - start := time.Now() - filepath.Walk(database, func(path string, info os.FileInfo, err error) error { - // If we're at the top level folder, recurse into - if path == database { - return nil + var ( + deleted []string + start = time.Now() + ) + for _, path := range paths { + if common.FileExist(path) { + removeFolder(path) + deleted = append(deleted, path) + } else { + log.Info("Folder is not existent", "path", path) } - // Delete all the files, but not subfolders - if !info.IsDir() { - os.Remove(path) - return nil - } - return filepath.SkipDir - }) - log.Info("Database successfully deleted", "path", database, "elapsed", common.PrettyDuration(time.Since(start))) + } + log.Info("Database successfully deleted", "kind", kind, "paths", deleted, "elapsed", common.PrettyDuration(time.Since(start))) } } diff --git a/core/rawdb/ancient_scheme.go b/core/rawdb/ancient_scheme.go index 6f409fff1d..e88867af0e 100644 --- a/core/rawdb/ancient_scheme.go +++ b/core/rawdb/ancient_scheme.go @@ -68,14 +68,14 @@ var stateFreezerNoSnappy = map[string]bool{ // The list of identifiers of ancient stores. var ( - chainFreezerName = "chain" // the folder name of chain segment ancient store. - stateFreezerName = "state" // the folder name of reverse diff ancient store. + ChainFreezerName = "chain" // the folder name of chain segment ancient store. + StateFreezerName = "state" // the folder name of reverse diff ancient store. ) // freezers the collections of all builtin freezers. -var freezers = []string{chainFreezerName, stateFreezerName} +var freezers = []string{ChainFreezerName, StateFreezerName} // NewStateFreezer initializes the freezer for state history. func NewStateFreezer(ancientDir string, readOnly bool) (*ResettableFreezer, error) { - return NewResettableFreezer(filepath.Join(ancientDir, stateFreezerName), "eth/db/state", readOnly, stateHistoryTableSize, stateFreezerNoSnappy) + return NewResettableFreezer(filepath.Join(ancientDir, StateFreezerName), "eth/db/state", readOnly, stateHistoryTableSize, stateFreezerNoSnappy) } diff --git a/core/rawdb/ancient_utils.go b/core/rawdb/ancient_utils.go index 1b93a9aa5a..428cda544b 100644 --- a/core/rawdb/ancient_utils.go +++ b/core/rawdb/ancient_utils.go @@ -81,14 +81,14 @@ func inspectFreezers(db ethdb.Database) ([]freezerInfo, error) { var infos []freezerInfo for _, freezer := range freezers { switch freezer { - case chainFreezerName: - info, err := inspect(chainFreezerName, chainFreezerNoSnappy, db) + case ChainFreezerName: + info, err := inspect(ChainFreezerName, chainFreezerNoSnappy, db) if err != nil { return nil, err } infos = append(infos, info) - case stateFreezerName: + case StateFreezerName: if ReadStateScheme(db) != PathScheme { continue } @@ -102,7 +102,7 @@ func inspectFreezers(db ethdb.Database) ([]freezerInfo, error) { } defer f.Close() - info, err := inspect(stateFreezerName, stateFreezerNoSnappy, f) + info, err := inspect(StateFreezerName, stateFreezerNoSnappy, f) if err != nil { return nil, err } @@ -125,9 +125,9 @@ func InspectFreezerTable(ancient string, freezerName string, tableName string, s tables map[string]bool ) switch freezerName { - case chainFreezerName: + case ChainFreezerName: path, tables = resolveChainFreezerDir(ancient), chainFreezerNoSnappy - case stateFreezerName: + case StateFreezerName: path, tables = filepath.Join(ancient, freezerName), stateFreezerNoSnappy default: return fmt.Errorf("unknown freezer, supported ones: %v", freezers) diff --git a/core/rawdb/database.go b/core/rawdb/database.go index 1d7b7d1ca8..18b5bccb51 100644 --- a/core/rawdb/database.go +++ b/core/rawdb/database.go @@ -178,7 +178,7 @@ func resolveChainFreezerDir(ancient string) string { // sub folder, if not then two possibilities: // - chain freezer is not initialized // - chain freezer exists in legacy location (root ancient folder) - freezer := path.Join(ancient, chainFreezerName) + freezer := path.Join(ancient, ChainFreezerName) if !common.FileExist(freezer) { if !common.FileExist(ancient) { // The entire ancient store is not initialized, still use the sub diff --git a/trie/triedb/pathdb/database.go b/trie/triedb/pathdb/database.go index dc64414e9b..f2d6cea635 100644 --- a/trie/triedb/pathdb/database.go +++ b/trie/triedb/pathdb/database.go @@ -170,14 +170,31 @@ func New(diskdb ethdb.Database, config *Config) *Database { } db.freezer = freezer - // Truncate the extra state histories above in freezer in case - // it's not aligned with the disk layer. - pruned, err := truncateFromHead(db.diskdb, freezer, db.tree.bottom().stateID()) - if err != nil { - log.Crit("Failed to truncate extra state histories", "err", err) - } - if pruned != 0 { - log.Warn("Truncated extra state histories", "number", pruned) + diskLayerID := db.tree.bottom().stateID() + if diskLayerID == 0 { + // Reset the entire state histories in case the trie database is + // not initialized yet, as these state histories are not expected. + frozen, err := db.freezer.Ancients() + if err != nil { + log.Crit("Failed to retrieve head of state history", "err", err) + } + if frozen != 0 { + err := db.freezer.Reset() + if err != nil { + log.Crit("Failed to reset state histories", "err", err) + } + log.Info("Truncated extraneous state history") + } + } else { + // Truncate the extra state histories above in freezer in case + // it's not aligned with the disk layer. + pruned, err := truncateFromHead(db.diskdb, freezer, diskLayerID) + if err != nil { + log.Crit("Failed to truncate extra state histories", "err", err) + } + if pruned != 0 { + log.Warn("Truncated extra state histories", "number", pruned) + } } } // Disable database in case node is still in the initial state sync stage. @@ -431,6 +448,9 @@ func (db *Database) Initialized(genesisRoot common.Hash) bool { inited = true } }) + if !inited { + inited = rawdb.ReadSnapSyncStatusFlag(db.diskdb) != rawdb.StateSyncUnknown + } return inited } From f469470aff4bfc206d2a1a25f2b87135d52653ee Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Fri, 22 Dec 2023 14:50:41 +0800 Subject: [PATCH 156/223] core/rawdb: improve state scheme checking (#28724) This pull request improves the condition to check if path state scheme is in use. Originally, root node presence was used as the indicator if path scheme is used or not. However due to fact that root node will be deleted during the initial snap sync, this condition is no longer useful. If PersistentStateID is present, it shows that we've already configured for path scheme. --- core/rawdb/accessors_trie.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/rawdb/accessors_trie.go b/core/rawdb/accessors_trie.go index 78f1a70b1c..ea3367db36 100644 --- a/core/rawdb/accessors_trie.go +++ b/core/rawdb/accessors_trie.go @@ -292,6 +292,11 @@ func ReadStateScheme(db ethdb.Reader) string { if len(blob) != 0 { return PathScheme } + // The root node might be deleted during the initial snap sync, check + // the persistent state id then. + if id := ReadPersistentStateID(db); id != 0 { + return PathScheme + } // In a hash-based scheme, the genesis state is consistently stored // on the disk. To assess the scheme of the persistent state, it // suffices to inspect the scheme of the genesis state. From 904a278054ff9c9ca1d99f4e2ae44c7bda506fa6 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Fri, 22 Dec 2023 13:37:16 +0100 Subject: [PATCH 157/223] params: go-ethereum v1.13.8 stable --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index a9192845bc..688c3a10f8 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 8 // Patch version component of the current release - VersionMeta = "unstable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 8 // Patch version component of the current release + VersionMeta = "stable" // Version metadata to append to the version string ) // Version holds the textual version string. From e4177034f5bec308de5b9b53b0bf7b2d9381f4d3 Mon Sep 17 00:00:00 2001 From: Roberto Bayardo Date: Wed, 3 Jan 2024 08:48:51 -0800 Subject: [PATCH 158/223] 4844 prep: Add Ecotone fork check & refactor l1 / data availability cost functions (#203) * add Ecotone upgrade getters & refactor L1CostFunc to make it easier to swap in new ones * core: nil instead of zero, always check empty rollup data-cost, check op-stack config, fix tx-pool l1-cost-func --------- Co-authored-by: protolambda --- cmd/utils/flags.go | 7 +- core/state_transition.go | 46 ++++----- core/txpool/legacypool/legacypool.go | 13 +-- core/txpool/legacypool/list.go | 2 +- core/txpool/txpool.go | 2 +- core/txpool/validation.go | 2 +- core/types/receipt.go | 29 ++---- core/types/rollup_cost.go | 148 +++++++++++++++++++++++++++ core/types/rollup_cost_test.go | 76 ++++++++++++++ core/types/rollup_l1_cost.go | 83 --------------- core/types/rollup_l1_cost_test.go | 30 ------ core/types/transaction.go | 25 ++--- go.mod | 2 +- go.sum | 4 +- params/config.go | 10 ++ params/superchain.go | 1 + 16 files changed, 296 insertions(+), 184 deletions(-) create mode 100644 core/types/rollup_cost.go create mode 100644 core/types/rollup_cost_test.go delete mode 100644 core/types/rollup_l1_cost.go delete mode 100644 core/types/rollup_l1_cost_test.go diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index c1970e7148..994ba7fc82 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -264,7 +264,12 @@ var ( } OverrideOptimismCanyon = &flags.BigFlag{ Name: "override.canyon", - Usage: "Manually specify the Optimsim Canyon fork timestamp, overriding the bundled setting", + Usage: "Manually specify the Optimism Canyon fork timestamp, overriding the bundled setting", + Category: flags.EthCategory, + } + OverrideOptimismEcotone = &flags.BigFlag{ + Name: "override.ecotone", + Usage: "Manually specify the Optimism Ecotone fork timestamp, overriding the bundled setting", Category: flags.EthCategory, } OverrideOptimismInterop = &cli.Uint64Flag{ diff --git a/core/state_transition.go b/core/state_transition.go index 1a555b4c2f..8caef8985c 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -144,28 +144,28 @@ type Message struct { // This field will be set to true for operations like RPC eth_call. SkipAccountChecks bool - IsSystemTx bool // IsSystemTx indicates the message, if also a deposit, does not emit gas usage. - IsDepositTx bool // IsDepositTx indicates the message is force-included and can persist a mint. - Mint *big.Int // Mint is the amount to mint before EVM processing, or nil if there is no minting. - RollupDataGas types.RollupGasData // RollupDataGas indicates the rollup cost of the message, 0 if not a rollup or no cost. + IsSystemTx bool // IsSystemTx indicates the message, if also a deposit, does not emit gas usage. + IsDepositTx bool // IsDepositTx indicates the message is force-included and can persist a mint. + Mint *big.Int // Mint is the amount to mint before EVM processing, or nil if there is no minting. + RollupCostData types.RollupCostData // RollupCostData caches data to compute the fee we charge for data availability } // TransactionToMessage converts a transaction into a Message. func TransactionToMessage(tx *types.Transaction, s types.Signer, baseFee *big.Int) (*Message, error) { msg := &Message{ - Nonce: tx.Nonce(), - GasLimit: tx.Gas(), - GasPrice: new(big.Int).Set(tx.GasPrice()), - GasFeeCap: new(big.Int).Set(tx.GasFeeCap()), - GasTipCap: new(big.Int).Set(tx.GasTipCap()), - To: tx.To(), - Value: tx.Value(), - Data: tx.Data(), - AccessList: tx.AccessList(), - IsSystemTx: tx.IsSystemTx(), - IsDepositTx: tx.IsDepositTx(), - Mint: tx.Mint(), - RollupDataGas: tx.RollupDataGas(), + Nonce: tx.Nonce(), + GasLimit: tx.Gas(), + GasPrice: new(big.Int).Set(tx.GasPrice()), + GasFeeCap: new(big.Int).Set(tx.GasFeeCap()), + GasTipCap: new(big.Int).Set(tx.GasTipCap()), + To: tx.To(), + Value: tx.Value(), + Data: tx.Data(), + AccessList: tx.AccessList(), + IsSystemTx: tx.IsSystemTx(), + IsDepositTx: tx.IsDepositTx(), + Mint: tx.Mint(), + RollupCostData: tx.RollupCostData(), SkipAccountChecks: false, BlobHashes: tx.BlobHashes(), @@ -245,10 +245,10 @@ func (st *StateTransition) buyGas() error { mgval = mgval.Mul(mgval, st.msg.GasPrice) var l1Cost *big.Int if st.evm.Context.L1CostFunc != nil && !st.msg.SkipAccountChecks { - l1Cost = st.evm.Context.L1CostFunc(st.evm.Context.BlockNumber.Uint64(), st.evm.Context.Time, st.msg.RollupDataGas, st.msg.IsDepositTx) - } - if l1Cost != nil { - mgval = mgval.Add(mgval, l1Cost) + l1Cost = st.evm.Context.L1CostFunc(st.msg.RollupCostData, st.evm.Context.Time) + if l1Cost != nil { + mgval = mgval.Add(mgval, l1Cost) + } } balanceCheck := new(big.Int).Set(mgval) if st.msg.GasFeeCap != nil { @@ -535,9 +535,9 @@ func (st *StateTransition) innerTransitionDb() (*ExecutionResult, error) { // Check that we are post bedrock to enable op-geth to be able to create pseudo pre-bedrock blocks (these are pre-bedrock, but don't follow l2 geth rules) // Note optimismConfig will not be nil if rules.IsOptimismBedrock is true - if optimismConfig := st.evm.ChainConfig().Optimism; optimismConfig != nil && rules.IsOptimismBedrock { + if optimismConfig := st.evm.ChainConfig().Optimism; optimismConfig != nil && rules.IsOptimismBedrock && !st.msg.IsDepositTx { st.state.AddBalance(params.OptimismBaseFeeRecipient, new(big.Int).Mul(new(big.Int).SetUint64(st.gasUsed()), st.evm.Context.BaseFee)) - if cost := st.evm.Context.L1CostFunc(st.evm.Context.BlockNumber.Uint64(), st.evm.Context.Time, st.msg.RollupDataGas, st.msg.IsDepositTx); cost != nil { + if cost := st.evm.Context.L1CostFunc(st.msg.RollupCostData, st.evm.Context.Time); cost != nil { st.state.AddBalance(params.OptimismL1FeeRecipient, cost) } } diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index 6d415032cf..dad8018d65 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -660,7 +660,7 @@ func (pool *LegacyPool) validateTx(tx *types.Transaction, local bool) error { if tx := list.txs.Get(nonce); tx != nil { cost := tx.Cost() if pool.l1CostFn != nil { - if l1Cost := pool.l1CostFn(tx.RollupDataGas()); l1Cost != nil { // add rollup cost + if l1Cost := pool.l1CostFn(tx.RollupCostData()); l1Cost != nil { // add rollup cost cost = cost.Add(cost, l1Cost) } } @@ -1445,9 +1445,10 @@ func (pool *LegacyPool) reset(oldHead, newHead *types.Header) { pool.currentState = statedb pool.pendingNonces = newNoncer(statedb) - costFn := types.NewL1CostFunc(pool.chainconfig, statedb) - pool.l1CostFn = func(dataGas types.RollupGasData) *big.Int { - return costFn(newHead.Number.Uint64(), newHead.Time, dataGas, false) + if costFn := types.NewL1CostFunc(pool.chainconfig, statedb); costFn != nil { + pool.l1CostFn = func(rollupCostData types.RollupCostData) *big.Int { + return costFn(rollupCostData, newHead.Time) + } } // Inject any transactions discarded due to reorgs @@ -1481,7 +1482,7 @@ func (pool *LegacyPool) promoteExecutables(accounts []common.Address) []*types.T if !list.Empty() && pool.l1CostFn != nil { // Reduce the cost-cap by L1 rollup cost of the first tx if necessary. Other txs will get filtered out afterwards. el := list.txs.FirstElement() - if l1Cost := pool.l1CostFn(el.RollupDataGas()); l1Cost != nil { + if l1Cost := pool.l1CostFn(el.RollupCostData()); l1Cost != nil { balance = new(big.Int).Sub(balance, l1Cost) // negative big int is fine } } @@ -1690,7 +1691,7 @@ func (pool *LegacyPool) demoteUnexecutables() { if !list.Empty() && pool.l1CostFn != nil { // Reduce the cost-cap by L1 rollup cost of the first tx if necessary. Other txs will get filtered out afterwards. el := list.txs.FirstElement() - if l1Cost := pool.l1CostFn(el.RollupDataGas()); l1Cost != nil { + if l1Cost := pool.l1CostFn(el.RollupCostData()); l1Cost != nil { balance = new(big.Int).Sub(balance, l1Cost) // negative big int is fine } } diff --git a/core/txpool/legacypool/list.go b/core/txpool/legacypool/list.go index c61f7a0f8c..28333a2c05 100644 --- a/core/txpool/legacypool/list.go +++ b/core/txpool/legacypool/list.go @@ -337,7 +337,7 @@ func (l *list) Add(tx *types.Transaction, priceBump uint64, l1CostFn txpool.L1Co // Add new tx cost to totalcost l.totalcost.Add(l.totalcost, tx.Cost()) if l1CostFn != nil { - if l1Cost := l1CostFn(tx.RollupDataGas()); l1Cost != nil { // add rollup cost + if l1Cost := l1CostFn(tx.RollupCostData()); l1Cost != nil { // add rollup cost l.totalcost.Add(l.totalcost, l1Cost) } } diff --git a/core/txpool/txpool.go b/core/txpool/txpool.go index 76b4e7dab8..d5d496c589 100644 --- a/core/txpool/txpool.go +++ b/core/txpool/txpool.go @@ -30,7 +30,7 @@ import ( "github.com/ethereum/go-ethereum/metrics" ) -type L1CostFunc func(dataGas types.RollupGasData) *big.Int +type L1CostFunc func(dataGas types.RollupCostData) *big.Int // TxStatus is the current status of a transaction as seen by the pool. type TxStatus uint diff --git a/core/txpool/validation.go b/core/txpool/validation.go index a708d09ae3..ed0a8bb706 100644 --- a/core/txpool/validation.go +++ b/core/txpool/validation.go @@ -245,7 +245,7 @@ func ValidateTransactionWithState(tx *types.Transaction, signer types.Signer, op cost = tx.Cost() ) if opts.L1CostFn != nil { - if l1Cost := opts.L1CostFn(tx.RollupDataGas()); l1Cost != nil { // add rollup cost + if l1Cost := opts.L1CostFn(tx.RollupCostData()); l1Cost != nil { // add rollup cost cost = cost.Add(cost, l1Cost) } } diff --git a/core/types/receipt.go b/core/types/receipt.go index 6c0d863ef6..a7562e7399 100644 --- a/core/types/receipt.go +++ b/core/types/receipt.go @@ -570,27 +570,18 @@ func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, nu } } if config.Optimism != nil && len(txs) >= 2 { // need at least an info tx and a non-info tx - if data := txs[0].Data(); len(data) >= 4+32*8 { // function selector + 8 arguments to setL1BlockValues - l1Basefee := new(big.Int).SetBytes(data[4+32*2 : 4+32*3]) // arg index 2 - overhead := new(big.Int).SetBytes(data[4+32*6 : 4+32*7]) // arg index 6 - scalar := new(big.Int).SetBytes(data[4+32*7 : 4+32*8]) // arg index 7 - fscalar := new(big.Float).SetInt(scalar) // legacy: format fee scalar as big Float - fdivisor := new(big.Float).SetUint64(1_000_000) // 10**6, i.e. 6 decimals - feeScalar := new(big.Float).Quo(fscalar, fdivisor) - for i := 0; i < len(rs); i++ { - if !txs[i].IsDepositTx() { - gas := txs[i].RollupDataGas().DataGas(time, config) - rs[i].L1GasPrice = l1Basefee - // GasUsed reported in receipt should include the overhead - rs[i].L1GasUsed = new(big.Int).Add(new(big.Int).SetUint64(gas), overhead) - rs[i].L1Fee = L1Cost(gas, l1Basefee, overhead, scalar) - rs[i].FeeScalar = feeScalar - } + l1Basefee, costFunc, feeScalar, err := extractL1GasParams(config, time, txs[0].Data()) + if err != nil { + return err + } + for i := 0; i < len(rs); i++ { + if txs[i].IsDepositTx() { + continue } - } else { - return fmt.Errorf("L1 info tx only has %d bytes, cannot read gas price parameters", len(data)) + rs[i].L1GasPrice = l1Basefee + rs[i].L1Fee, rs[i].L1GasUsed = costFunc(txs[i].RollupCostData()) + rs[i].FeeScalar = feeScalar } } - return nil } diff --git a/core/types/rollup_cost.go b/core/types/rollup_cost.go new file mode 100644 index 0000000000..fcac3c1c6f --- /dev/null +++ b/core/types/rollup_cost.go @@ -0,0 +1,148 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package types + +import ( + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" +) + +type RollupCostData struct { + zeroes, ones uint64 +} + +func NewRollupCostData(data []byte) (out RollupCostData) { + for _, b := range data { + if b == 0 { + out.zeroes++ + } else { + out.ones++ + } + } + return out +} + +type StateGetter interface { + GetState(common.Address, common.Hash) common.Hash +} + +// L1CostFunc is used in the state transition to determine the L1 data fee charged to the sender of +// non-Deposit transactions. +// It returns nil if no L1 data fee is charged. +type L1CostFunc func(rcd RollupCostData, blockTime uint64) *big.Int + +// l1CostFunc is an internal version of L1CostFunc that also returns the gasUsed for use in +// receipts. +type l1CostFunc func(rcd RollupCostData) (fee, gasUsed *big.Int) + +var ( + L1BasefeeSlot = common.BigToHash(big.NewInt(1)) + OverheadSlot = common.BigToHash(big.NewInt(5)) + ScalarSlot = common.BigToHash(big.NewInt(6)) +) + +var L1BlockAddr = common.HexToAddress("0x4200000000000000000000000000000000000015") + +// NewL1CostFunc returns a function used for calculating L1 fee cost, or nil if this is not an +// op-stack chain. +func NewL1CostFunc(config *params.ChainConfig, statedb StateGetter) L1CostFunc { + if config.Optimism == nil { + return nil + } + forBlock := ^uint64(0) + var cachedFunc l1CostFunc + return func(rollupCostData RollupCostData, blockTime uint64) *big.Int { + if rollupCostData == (RollupCostData{}) { + return nil // Do not charge if there is no rollup cost-data (e.g. RPC call or deposit). + } + if forBlock != blockTime { + // Note: The following variables are not initialized from the state DB until this point + // to allow deposit transactions from the block to be processed first by state + // transition. This behavior is consensus critical! + l1Basefee := statedb.GetState(L1BlockAddr, L1BasefeeSlot).Big() + overhead := statedb.GetState(L1BlockAddr, OverheadSlot).Big() + scalar := statedb.GetState(L1BlockAddr, ScalarSlot).Big() + isRegolith := config.IsRegolith(blockTime) + cachedFunc = newL1CostFunc(l1Basefee, overhead, scalar, isRegolith) + if forBlock != ^uint64(0) { + // best practice is not to re-use l1 cost funcs across different blocks, but we + // make it work just in case. + log.Info("l1 cost func re-used for different L1 block", "oldTime", forBlock, "newTime", blockTime) + } + forBlock = blockTime + } + fee, _ := cachedFunc(rollupCostData) + return fee + } +} + +var ( + oneMillion = big.NewInt(1_000_000) +) + +func newL1CostFunc(l1Basefee, overhead, scalar *big.Int, isRegolith bool) l1CostFunc { + return func(rollupCostData RollupCostData) (fee, gasUsed *big.Int) { + if rollupCostData == (RollupCostData{}) { + return nil, nil // Do not charge if there is no rollup cost-data (e.g. RPC call or deposit) + } + gas := rollupCostData.zeroes * params.TxDataZeroGas + if isRegolith { + gas += rollupCostData.ones * params.TxDataNonZeroGasEIP2028 + } else { + gas += (rollupCostData.ones + 68) * params.TxDataNonZeroGasEIP2028 + } + gasWithOverhead := new(big.Int).SetUint64(gas) + gasWithOverhead.Add(gasWithOverhead, overhead) + l1Cost := l1CostHelper(gasWithOverhead, l1Basefee, scalar) + return l1Cost, gasWithOverhead + } +} + +// extractL1GasParams extracts the gas parameters necessary to compute gas costs from L1 block info +// calldata. +func extractL1GasParams(config *params.ChainConfig, time uint64, data []byte) (l1Basefee *big.Int, costFunc l1CostFunc, feeScalar *big.Float, err error) { + // data consists of func selector followed by 7 ABI-encoded parameters (32 bytes each) + if len(data) < 4+32*8 { + return nil, nil, nil, fmt.Errorf("expected at least %d L1 info bytes, got %d", 4+32*8, len(data)) + } + data = data[4:] // trim function selector + l1Basefee = new(big.Int).SetBytes(data[32*2 : 32*3]) // arg index 2 + overhead := new(big.Int).SetBytes(data[32*6 : 32*7]) // arg index 6 + scalar := new(big.Int).SetBytes(data[32*7 : 32*8]) // arg index 7 + fscalar := new(big.Float).SetInt(scalar) // legacy: format fee scalar as big Float + fdivisor := new(big.Float).SetUint64(1_000_000) // 10**6, i.e. 6 decimals + feeScalar = new(big.Float).Quo(fscalar, fdivisor) + costFunc = newL1CostFunc(l1Basefee, overhead, scalar, config.IsRegolith(time)) + return +} + +// L1Cost computes the the L1 data fee. It is used by e2e tests so must remain exported. +func L1Cost(rollupDataGas uint64, l1Basefee, overhead, scalar *big.Int) *big.Int { + l1GasUsed := new(big.Int).SetUint64(rollupDataGas) + l1GasUsed.Add(l1GasUsed, overhead) + return l1CostHelper(l1GasUsed, l1Basefee, scalar) +} + +func l1CostHelper(gasWithOverhead, l1Basefee, scalar *big.Int) *big.Int { + fee := new(big.Int).Set(gasWithOverhead) + fee.Mul(fee, l1Basefee).Mul(fee, scalar).Div(fee, oneMillion) + return fee +} diff --git a/core/types/rollup_cost_test.go b/core/types/rollup_cost_test.go new file mode 100644 index 0000000000..57640d3015 --- /dev/null +++ b/core/types/rollup_cost_test.go @@ -0,0 +1,76 @@ +package types + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/params" + "github.com/stretchr/testify/require" +) + +func TestL1CostFunc(t *testing.T) { + basefee := big.NewInt(1) + overhead := big.NewInt(1) + scalar := big.NewInt(1_000_000) + + costFunc0 := newL1CostFunc(basefee, overhead, scalar, false /*isRegolith*/) + costFunc1 := newL1CostFunc(basefee, overhead, scalar, true) + + // emptyTx is a test tx defined in transaction_test.go + c0, g0 := costFunc0(emptyTx.RollupCostData()) // pre-Regolith + c1, g1 := costFunc1(emptyTx.RollupCostData()) + require.Equal(t, big.NewInt(1569), c0) + require.Equal(t, big.NewInt(1569), g0) // gas-used == fee since scalars are all 1 + require.Equal(t, big.NewInt(481), c1) + require.Equal(t, big.NewInt(481), g1) +} + +func TestExtractGasParams(t *testing.T) { + regolithTime := uint64(1) + config := ¶ms.ChainConfig{ + Optimism: params.OptimismTestConfig.Optimism, + RegolithTime: ®olithTime, + } + + selector := []byte{0x01, 0x5d, 0x8e, 0xb9} + uint256 := make([]byte, 32) + + ignored := big.NewInt(1234) + basefee := big.NewInt(1) + overhead := big.NewInt(1) + scalar := big.NewInt(1_000_000) + + data := []byte{} + data = append(data, selector...) // selector + data = append(data, ignored.FillBytes(uint256)...) // arg 0 + data = append(data, ignored.FillBytes(uint256)...) // arg 1 + data = append(data, basefee.FillBytes(uint256)...) // arg 2 + data = append(data, ignored.FillBytes(uint256)...) // arg 3 + data = append(data, ignored.FillBytes(uint256)...) // arg 4 + data = append(data, ignored.FillBytes(uint256)...) // arg 5 + data = append(data, overhead.FillBytes(uint256)...) // arg 6 + + // try to extract from data which has not enough params, should get error. + _, _, _, err := extractL1GasParams(config, regolithTime, data) + require.Error(t, err) + + data = append(data, scalar.FillBytes(uint256)...) // arg 7 + + // now it should succeed + _, costFuncPreRegolith, _, err := extractL1GasParams(config, regolithTime-1, data) + require.NoError(t, err) + + // Function should continue to succeed even with extra data (that just gets ignored) since we + // have been testing the data size is at least the expected number of bytes instead of exactly + // the expected number of bytes. It's unclear if this flexibility was intentional, but since + // it's been in production we shouldn't change this behavior. + data = append(data, ignored.FillBytes(uint256)...) // extra ignored arg + _, costFuncRegolith, _, err := extractL1GasParams(config, regolithTime, data) + require.NoError(t, err) + + c, _ := costFuncPreRegolith(emptyTx.RollupCostData()) + require.Equal(t, big.NewInt(1569), c) + + c, _ = costFuncRegolith(emptyTx.RollupCostData()) + require.Equal(t, big.NewInt(481), c) +} diff --git a/core/types/rollup_l1_cost.go b/core/types/rollup_l1_cost.go deleted file mode 100644 index 521dfc10d7..0000000000 --- a/core/types/rollup_l1_cost.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2022 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package types - -import ( - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/params" -) - -type RollupGasData struct { - Zeroes, Ones uint64 -} - -func (r RollupGasData) DataGas(time uint64, cfg *params.ChainConfig) (gas uint64) { - gas = r.Zeroes * params.TxDataZeroGas - if cfg.IsRegolith(time) { - gas += r.Ones * params.TxDataNonZeroGasEIP2028 - } else { - gas += (r.Ones + 68) * params.TxDataNonZeroGasEIP2028 - } - return gas -} - -type StateGetter interface { - GetState(common.Address, common.Hash) common.Hash -} - -// L1CostFunc is used in the state transition to determine the cost of a rollup message. -// Returns nil if there is no cost. -type L1CostFunc func(blockNum uint64, blockTime uint64, dataGas RollupGasData, isDepositTx bool) *big.Int - -var ( - L1BaseFeeSlot = common.BigToHash(big.NewInt(1)) - OverheadSlot = common.BigToHash(big.NewInt(5)) - ScalarSlot = common.BigToHash(big.NewInt(6)) -) - -var L1BlockAddr = common.HexToAddress("0x4200000000000000000000000000000000000015") - -// NewL1CostFunc returns a function used for calculating L1 fee cost. -// This depends on the oracles because gas costs can change over time. -// It returns nil if there is no applicable cost function. -func NewL1CostFunc(config *params.ChainConfig, statedb StateGetter) L1CostFunc { - cacheBlockNum := ^uint64(0) - var l1BaseFee, overhead, scalar *big.Int - return func(blockNum uint64, blockTime uint64, dataGas RollupGasData, isDepositTx bool) *big.Int { - rollupDataGas := dataGas.DataGas(blockTime, config) // Only fake txs for RPC view-calls are 0. - if config.Optimism == nil || isDepositTx || rollupDataGas == 0 { - return nil - } - if blockNum != cacheBlockNum { - l1BaseFee = statedb.GetState(L1BlockAddr, L1BaseFeeSlot).Big() - overhead = statedb.GetState(L1BlockAddr, OverheadSlot).Big() - scalar = statedb.GetState(L1BlockAddr, ScalarSlot).Big() - cacheBlockNum = blockNum - } - return L1Cost(rollupDataGas, l1BaseFee, overhead, scalar) - } -} - -func L1Cost(rollupDataGas uint64, l1BaseFee, overhead, scalar *big.Int) *big.Int { - l1GasUsed := new(big.Int).SetUint64(rollupDataGas) - l1GasUsed = l1GasUsed.Add(l1GasUsed, overhead) - l1Cost := l1GasUsed.Mul(l1GasUsed, l1BaseFee) - l1Cost = l1Cost.Mul(l1Cost, scalar) - return l1Cost.Div(l1Cost, big.NewInt(1_000_000)) -} diff --git a/core/types/rollup_l1_cost_test.go b/core/types/rollup_l1_cost_test.go deleted file mode 100644 index e43ea967ee..0000000000 --- a/core/types/rollup_l1_cost_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package types - -import ( - "math/rand" - "testing" - - "github.com/ethereum/go-ethereum/params" - "github.com/stretchr/testify/require" -) - -func TestRollupGasData(t *testing.T) { - for i := 0; i < 100; i++ { - zeroes := rand.Uint64() - ones := rand.Uint64() - - r := RollupGasData{ - Zeroes: zeroes, - Ones: ones, - } - time := uint64(1) - cfg := ¶ms.ChainConfig{ - RegolithTime: &time, - } - gasPreRegolith := r.DataGas(0, cfg) - gasPostRegolith := r.DataGas(1, cfg) - - require.Equal(t, r.Zeroes*params.TxDataZeroGas+(r.Ones+68)*params.TxDataNonZeroGasEIP2028, gasPreRegolith) - require.Equal(t, r.Zeroes*params.TxDataZeroGas+r.Ones*params.TxDataNonZeroGasEIP2028, gasPostRegolith) - } -} diff --git a/core/types/transaction.go b/core/types/transaction.go index fc00327ea6..d6eb0ad9a9 100644 --- a/core/types/transaction.go +++ b/core/types/transaction.go @@ -58,8 +58,8 @@ type Transaction struct { size atomic.Value from atomic.Value - // cache of RollupGasData details to compute the gas the tx takes on L1 for its share of rollup data - rollupGas atomic.Value + // cache of details to compute the data availability fee + rollupCostData atomic.Value } // NewTx creates a new transaction. @@ -366,27 +366,20 @@ func (tx *Transaction) Cost() *big.Int { return total } -// RollupDataGas is the amount of gas it takes to confirm the tx on L1 as a rollup -func (tx *Transaction) RollupDataGas() RollupGasData { +// RollupCostData caches the information needed to efficiently compute the data availability fee +func (tx *Transaction) RollupCostData() RollupCostData { if tx.Type() == DepositTxType { - return RollupGasData{} + return RollupCostData{} } - if v := tx.rollupGas.Load(); v != nil { - return v.(RollupGasData) + if v := tx.rollupCostData.Load(); v != nil { + return v.(RollupCostData) } data, err := tx.MarshalBinary() if err != nil { // Silent error, invalid txs will not be marshalled/unmarshalled for batch submission anyway. log.Error("failed to encode tx for L1 cost computation", "err", err) } - var out RollupGasData - for _, byt := range data { - if byt == 0 { - out.Zeroes++ - } else { - out.Ones++ - } - } - tx.rollupGas.Store(out) + out := NewRollupCostData(data) + tx.rollupCostData.Store(out) return out } diff --git a/go.mod b/go.mod index 303139c7b9..a5a43d32e1 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231211205419-ff2e152c624f + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 4a87c55f93..3f5b87bd07 100644 --- a/go.sum +++ b/go.sum @@ -181,8 +181,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231211205419-ff2e152c624f h1:ISd3MAco0U0XT5ADDQ8pzVntQpL9yEUQzpsIqfLJY2M= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231211205419-ff2e152c624f/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea h1:eG415nqsRtvN9TtsyqreAmtBOCisRtG9M9JICYXNI5c= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= diff --git a/params/config.go b/params/config.go index fdfe454902..6c6e82e505 100644 --- a/params/config.go +++ b/params/config.go @@ -359,6 +359,7 @@ type ChainConfig struct { RegolithTime *uint64 `json:"regolithTime,omitempty"` // Regolith switch time (nil = no fork, 0 = already on optimism regolith) CanyonTime *uint64 `json:"canyonTime,omitempty"` // Canyon switch time (nil = no fork, 0 = already on optimism canyon) // Delta: the Delta upgrade does not affect the execution-layer, and is thus not configurable in the chain config. + EcotoneTime *uint64 `json:"ecotoneTime,omitempty"` // Ecotone switch time (nil = no fork, 0 = already on optimism ecotone) InteropTime *uint64 `json:"interopTime,omitempty"` // Interop switch time (nil = no fork, 0 = already on optimism interop) @@ -627,6 +628,10 @@ func (c *ChainConfig) IsCanyon(time uint64) bool { return isTimestampForked(c.CanyonTime, time) } +func (c *ChainConfig) IsEcotone(time uint64) bool { + return isTimestampForked(c.EcotoneTime, time) +} + func (c *ChainConfig) IsInterop(time uint64) bool { return isTimestampForked(c.InteropTime, time) } @@ -644,10 +649,15 @@ func (c *ChainConfig) IsOptimismBedrock(num *big.Int) bool { func (c *ChainConfig) IsOptimismRegolith(time uint64) bool { return c.IsOptimism() && c.IsRegolith(time) } + func (c *ChainConfig) IsOptimismCanyon(time uint64) bool { return c.IsOptimism() && c.IsCanyon(time) } +func (c *ChainConfig) IsOptimismEcotone(time uint64) bool { + return c.IsOptimism() && c.IsEcotone(time) +} + // IsOptimismPreBedrock returns true iff this is an optimism node & bedrock is not yet active func (c *ChainConfig) IsOptimismPreBedrock(num *big.Int) bool { return c.IsOptimism() && !c.IsBedrock(num) diff --git a/params/superchain.go b/params/superchain.go index 174b0a16b1..38a4eb05fe 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -71,6 +71,7 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { BedrockBlock: common.Big0, RegolithTime: &genesisActivation, CanyonTime: superchainConfig.Config.CanyonTime, + EcotoneTime: superchainConfig.Config.EcotoneTime, TerminalTotalDifficulty: common.Big0, TerminalTotalDifficultyPassed: true, Ethash: nil, From c7871bc4454ffc924eb128fa492975b30c9c46ad Mon Sep 17 00:00:00 2001 From: Andrew Huang Date: Wed, 3 Jan 2024 13:02:59 -0800 Subject: [PATCH 159/223] Update superchain dep to include new mainnet targets (#211) --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index a5a43d32e1..a89da3df66 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 3f5b87bd07..0f8381ba6e 100644 --- a/go.sum +++ b/go.sum @@ -183,6 +183,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea h1:eG415nqsRtvN9TtsyqreAmtBOCisRtG9M9JICYXNI5c= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753 h1:DL667cfM6peU8H9Ut/uu9h9Bd4gQCcJrjq+yYsfYwjk= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= From d16d0f7916b9fb4121b0296aba9d07bfbc410b37 Mon Sep 17 00:00:00 2001 From: Danyal Prout Date: Mon, 8 Jan 2024 20:59:05 -0600 Subject: [PATCH 160/223] Extend execution payload envelope to contain parent beacon block root --- beacon/engine/gen_epe.go | 23 +++++++++++++++-------- beacon/engine/types.go | 11 ++++++++++- eth/catalyst/api.go | 1 + 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/beacon/engine/gen_epe.go b/beacon/engine/gen_epe.go index e69f9a5951..3529bbd661 100644 --- a/beacon/engine/gen_epe.go +++ b/beacon/engine/gen_epe.go @@ -7,6 +7,7 @@ import ( "errors" "math/big" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" ) @@ -15,26 +16,29 @@ var _ = (*executionPayloadEnvelopeMarshaling)(nil) // MarshalJSON marshals as JSON. func (e ExecutionPayloadEnvelope) MarshalJSON() ([]byte, error) { type ExecutionPayloadEnvelope struct { - ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"` - BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"` - BlobsBundle *BlobsBundleV1 `json:"blobsBundle"` - Override bool `json:"shouldOverrideBuilder"` + ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"` + BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"` + BlobsBundle *BlobsBundleV1 `json:"blobsBundle"` + Override bool `json:"shouldOverrideBuilder"` + ParentBeaconBlockRoot *common.Hash `json:"parentBeaconBlockRoot,omitempty"` } var enc ExecutionPayloadEnvelope enc.ExecutionPayload = e.ExecutionPayload enc.BlockValue = (*hexutil.Big)(e.BlockValue) enc.BlobsBundle = e.BlobsBundle enc.Override = e.Override + enc.ParentBeaconBlockRoot = e.ParentBeaconBlockRoot return json.Marshal(&enc) } // UnmarshalJSON unmarshals from JSON. func (e *ExecutionPayloadEnvelope) UnmarshalJSON(input []byte) error { type ExecutionPayloadEnvelope struct { - ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"` - BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"` - BlobsBundle *BlobsBundleV1 `json:"blobsBundle"` - Override *bool `json:"shouldOverrideBuilder"` + ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"` + BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"` + BlobsBundle *BlobsBundleV1 `json:"blobsBundle"` + Override *bool `json:"shouldOverrideBuilder"` + ParentBeaconBlockRoot *common.Hash `json:"parentBeaconBlockRoot,omitempty"` } var dec ExecutionPayloadEnvelope if err := json.Unmarshal(input, &dec); err != nil { @@ -54,5 +58,8 @@ func (e *ExecutionPayloadEnvelope) UnmarshalJSON(input []byte) error { if dec.Override != nil { e.Override = *dec.Override } + if dec.ParentBeaconBlockRoot != nil { + e.ParentBeaconBlockRoot = dec.ParentBeaconBlockRoot + } return nil } diff --git a/beacon/engine/types.go b/beacon/engine/types.go index 6f3aa006b8..487693ea18 100644 --- a/beacon/engine/types.go +++ b/beacon/engine/types.go @@ -98,6 +98,9 @@ type ExecutionPayloadEnvelope struct { BlockValue *big.Int `json:"blockValue" gencodec:"required"` BlobsBundle *BlobsBundleV1 `json:"blobsBundle"` Override bool `json:"shouldOverrideBuilder"` + + // OP-Stack: Ecotone specific fields + ParentBeaconBlockRoot *common.Hash `json:"parentBeaconBlockRoot,omitempty"` } type BlobsBundleV1 struct { @@ -281,7 +284,13 @@ func BlockToExecutableData(block *types.Block, fees *big.Int, sidecars []*types. bundle.Proofs = append(bundle.Proofs, hexutil.Bytes(sidecar.Proofs[j][:])) } } - return &ExecutionPayloadEnvelope{ExecutionPayload: data, BlockValue: fees, BlobsBundle: &bundle, Override: false} + return &ExecutionPayloadEnvelope{ + ExecutionPayload: data, + BlockValue: fees, + BlobsBundle: &bundle, + Override: false, + ParentBeaconBlockRoot: block.BeaconRoot(), + } } // ExecutionPayloadBodyV1 is used in the response to GetPayloadBodiesByHashV1 and GetPayloadBodiesByRangeV1 diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 69599d8c6c..642b32eda4 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -458,6 +458,7 @@ func (api *ConsensusAPI) getPayload(payloadID engine.PayloadID, full bool) (*eng if data == nil { return nil, engine.UnknownPayload } + return data, nil } From 36afcb9387e78e0cd057d7a3ef4465bf093274a1 Mon Sep 17 00:00:00 2001 From: Danyal Prout Date: Tue, 9 Jan 2024 10:36:15 -0600 Subject: [PATCH 161/223] Update eth/catalyst/api.go Co-authored-by: protolambda --- eth/catalyst/api.go | 1 - 1 file changed, 1 deletion(-) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 642b32eda4..69599d8c6c 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -458,7 +458,6 @@ func (api *ConsensusAPI) getPayload(payloadID engine.PayloadID, full bool) (*eng if data == nil { return nil, engine.UnknownPayload } - return data, nil } From be81fa47deffb246df6c9f06cf01af69a2269492 Mon Sep 17 00:00:00 2001 From: Roberto Bayardo Date: Thu, 21 Dec 2023 09:41:22 -0800 Subject: [PATCH 162/223] Ecotone l1 cost function Move all ecotone switching logic into rollup_cost --- core/types/receipt.go | 2 +- core/types/receipt_test.go | 105 ++++++++++---- core/types/rollup_cost.go | 213 +++++++++++++++++++++++------ core/types/rollup_cost_test.go | 243 ++++++++++++++++++++++++++++----- 4 files changed, 459 insertions(+), 104 deletions(-) diff --git a/core/types/receipt.go b/core/types/receipt.go index a7562e7399..b85df05a3a 100644 --- a/core/types/receipt.go +++ b/core/types/receipt.go @@ -88,7 +88,7 @@ type Receipt struct { L1GasPrice *big.Int `json:"l1GasPrice,omitempty"` L1GasUsed *big.Int `json:"l1GasUsed,omitempty"` L1Fee *big.Int `json:"l1Fee,omitempty"` - FeeScalar *big.Float `json:"l1FeeScalar,omitempty"` + FeeScalar *big.Float `json:"l1FeeScalar,omitempty"` // always nil after Ecotone hardfork } type receiptMarshaling struct { diff --git a/core/types/receipt_test.go b/core/types/receipt_test.go index 766640129c..f6a3598ca9 100644 --- a/core/types/receipt_test.go +++ b/core/types/receipt_test.go @@ -34,6 +34,13 @@ import ( ) var ( + ecotoneTestConfig = func() *params.ChainConfig { + conf := *params.OptimismTestConfig // copy the config + time := uint64(0) + conf.EcotoneTime = &time + return &conf + }() + legacyReceipt = &Receipt{ Status: ReceiptStatusFailed, CumulativeGasUsed: 1, @@ -683,30 +690,20 @@ func clearComputedFieldsOnLogs(logs []*Log) []*Log { return l } -func TestDeriveOptimismTxReceipt(t *testing.T) { - to4 := common.HexToAddress("0x4") +func getOptimismTxReceipts( + t *testing.T, l1AttributesPayload []byte, + l1GasPrice, l1GasUsed *big.Int, feeScalar *big.Float, l1Fee *big.Int) ([]*Transaction, []*Receipt) { + //to4 := common.HexToAddress("0x4") // Create a few transactions to have receipts for txs := Transactions{ NewTx(&DepositTx{ To: nil, // contract creation Value: big.NewInt(6), Gas: 50, - // System config with L1Scalar=2_000_000 (becomes 2 after division), L1Overhead=2500, L1BaseFee=5000 - Data: common.Hex2Bytes("015d8eb900000000000000000000000000000000000000000000000026b39534042076f70000000000000000000000000000000000000000000000007e33b7c4995967580000000000000000000000000000000000000000000000000000000000001388547dea8ff339566349ed0ef6384876655d1b9b955e36ac165c6b8ab69b9af5cd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123400000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000001e8480"), - }), - NewTx(&DynamicFeeTx{ - To: &to4, - Nonce: 4, - Value: big.NewInt(4), - Gas: 4, - GasTipCap: big.NewInt(44), - GasFeeCap: big.NewInt(1045), - Data: []byte{0, 1, 255, 0}, + Data: l1AttributesPayload, }), + emptyTx, } - depNonce := uint64(7) - blockNumber := big.NewInt(1) - blockHash := common.BytesToHash([]byte{0x03, 0x14}) // Create the corresponding receipts receipts := Receipts{ @@ -741,35 +738,83 @@ func TestDeriveOptimismTxReceipt(t *testing.T) { BlockHash: blockHash, BlockNumber: blockNumber, TransactionIndex: 0, - DepositNonce: &depNonce, + DepositNonce: &depNonce1, }, &Receipt{ - Type: DynamicFeeTxType, + Type: LegacyTxType, + EffectiveGasPrice: big.NewInt(0), PostState: common.Hash{4}.Bytes(), CumulativeGasUsed: 10, Logs: []*Log{}, // derived fields: - TxHash: txs[1].Hash(), - GasUsed: 18446744073709551561, - EffectiveGasPrice: big.NewInt(1044), - BlockHash: blockHash, - BlockNumber: blockNumber, - TransactionIndex: 1, - L1GasPrice: big.NewInt(5000), - L1GasUsed: big.NewInt(3976), - L1Fee: big.NewInt(39760000), - FeeScalar: big.NewFloat(2), + TxHash: txs[1].Hash(), + GasUsed: 18446744073709551561, + BlockHash: blockHash, + BlockNumber: blockNumber, + TransactionIndex: 1, + L1GasPrice: l1GasPrice, + L1GasUsed: l1GasUsed, + L1Fee: l1Fee, + FeeScalar: feeScalar, }, } + return txs, receipts +} + +func TestDeriveOptimismBedrockTxReceipts(t *testing.T) { + // Bedrock style l1 attributes with L1Scalar=7_000_000 (becomes 7 after division), L1Overhead=50, L1BaseFee=1000*1e6 + payload := common.Hex2Bytes("015d8eb900000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000006acfc0015d8eb900000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000006acfc0") + // the parameters we use below are defined in rollup_test.go + l1GasPrice := basefee + l1GasUsed := bedrockGas + feeScalar := big.NewFloat(float64(scalar.Uint64() / 1e6)) + l1Fee := bedrockFee + txs, receipts := getOptimismTxReceipts(t, payload, l1GasPrice, l1GasUsed, feeScalar, l1Fee) + + // Re-derive receipts. + basefee := big.NewInt(1000) + derivedReceipts := clearComputedFieldsOnReceipts(receipts) + err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) + if err != nil { + t.Fatalf("DeriveFields(...) = %v, want ", err) + } + checkBedrockReceipts(t, receipts, derivedReceipts) + + // Should get same result with the Ecotone config because it will assume this is "first ecotone block" + // if it sees the bedrock style L1 attributes. + err = Receipts(derivedReceipts).DeriveFields(ecotoneTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) + if err != nil { + t.Fatalf("DeriveFields(...) = %v, want ", err) + } + checkBedrockReceipts(t, receipts, derivedReceipts) +} + +func TestDeriveOptimismEcotoneTxReceipts(t *testing.T) { + // Ecotone style l1 attributes with basefeeScalar=2, blobBasfeeScalar=3, baseFee=1000*1e6, blobBasefee=10*1e6 + payload := common.Hex2Bytes("440a5e20000000020000000300000000000004d200000000000004d200000000000004d2000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000098968000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2") + // the parameters we use below are defined in rollup_test.go + l1GasPrice := basefee + l1GasUsed := ecotoneGas + l1Fee := ecotoneFee + txs, receipts := getOptimismTxReceipts(t, payload, l1GasPrice, l1GasUsed, nil /*feeScalar*/, l1Fee) // Re-derive receipts. basefee := big.NewInt(1000) derivedReceipts := clearComputedFieldsOnReceipts(receipts) + // Should error out if we try to process this with a pre-Ecotone config err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) + if err == nil { + t.Fatalf("expected error from deriving ecotone receipts with pre-ecotone config, got none") + } + + err = Receipts(derivedReceipts).DeriveFields(ecotoneTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) if err != nil { t.Fatalf("DeriveFields(...) = %v, want ", err) } + diffReceipts(t, receipts, derivedReceipts) +} +func diffReceipts(t *testing.T, receipts, derivedReceipts []*Receipt) { // Check diff of receipts against derivedReceipts. r1, err := json.MarshalIndent(receipts, "", " ") if err != nil { @@ -783,6 +828,10 @@ func TestDeriveOptimismTxReceipt(t *testing.T) { if d != "" { t.Fatal("receipts differ:", d) } +} + +func checkBedrockReceipts(t *testing.T, receipts, derivedReceipts []*Receipt) { + diffReceipts(t, receipts, derivedReceipts) // Check that we preserved the invariant: l1Fee = l1GasPrice * l1GasUsed * l1FeeScalar // but with more difficult int math... diff --git a/core/types/rollup_cost.go b/core/types/rollup_cost.go index fcac3c1c6f..b1d4ccd0a6 100644 --- a/core/types/rollup_cost.go +++ b/core/types/rollup_cost.go @@ -17,6 +17,7 @@ package types import ( + "bytes" "fmt" "math/big" @@ -25,44 +26,87 @@ import ( "github.com/ethereum/go-ethereum/params" ) -type RollupCostData struct { - zeroes, ones uint64 -} +const ( + // The two 4-byte Ecotone fee scalar values are packed into the same storage slot as the 8-byte + // sequence number and have the following Solidity offsets within the slot. Note that Solidity + // offsets correspond to the last byte of the value in the slot, counting backwards from the + // end of the slot. For example, The 8-byte sequence number has offset 0, and is therefore + // stored as big-endian format in bytes [24:32] of the slot. + BasefeeScalarSlotOffset = 12 // bytes [16:20] of the slot + BlobBasefeeScalarSlotOffset = 8 // bytes [20:24] of the slot -func NewRollupCostData(data []byte) (out RollupCostData) { - for _, b := range data { - if b == 0 { - out.zeroes++ - } else { - out.ones++ - } + // scalarSectionStart is the beginning of the scalar values segment in the slot + // array. basefeeScalar is in the first four bytes of the segment, blobBasefeeScalar the next + // four. + scalarSectionStart = 32 - BasefeeScalarSlotOffset - 4 +) + +func init() { + if BlobBasefeeScalarSlotOffset != BasefeeScalarSlotOffset-4 { + panic("this code assumes the scalars are at adjacent positions in the scalars slot") } - return out +} + +var ( + // BedrockL1AttributesSelector is the function selector indicating Bedrock style L1 gas + // attributes. + BedrockL1AttributesSelector = []byte{0x01, 0x5d, 0x8e, 0xb9} + // EcotoneL1AttributesSelector is the selector indicating Ecotone style L1 gas attributes. + EcotoneL1AttributesSelector = []byte{0x44, 0x0a, 0x5e, 0x20} + + // L1BlockAddr is the address of the L1Block contract which stores the L1 gas attributes. + L1BlockAddr = common.HexToAddress("0x4200000000000000000000000000000000000015") + + L1BasefeeSlot = common.BigToHash(big.NewInt(1)) + OverheadSlot = common.BigToHash(big.NewInt(5)) + ScalarSlot = common.BigToHash(big.NewInt(6)) + + // L2BlobBasefeeSlot was added with the Ecotone upgrade and stores the blobBasefee L1 gas + // attribute. + L1BlobBasefeeSlot = common.BigToHash(big.NewInt(7)) + // L1FeeScalarsSlot as of the Ecotone upgrade stores the 32-bit basefeeScalar and + // blobBasefeeScalar L1 gas attributes at offsets `BasefeeScalarSlotOffset` and + // `BlobBasefeeScalarSlotOffset` respectively. + L1FeeScalarsSlot = common.BigToHash(big.NewInt(3)) + + oneMillion = big.NewInt(1_000_000) + ecotoneDivisor = big.NewInt(1_000_000 * 16) + sixteen = big.NewInt(16) + + emptyScalars = make([]byte, 8) +) + +// RollupCostData is a transaction structure that caches data for quickly computing the data +// availablility costs for the transaction. +type RollupCostData struct { + zeroes, ones uint64 } type StateGetter interface { GetState(common.Address, common.Hash) common.Hash } -// L1CostFunc is used in the state transition to determine the L1 data fee charged to the sender of -// non-Deposit transactions. -// It returns nil if no L1 data fee is charged. +// L1CostFunc is used in the state transition to determine the data availability fee charged to the +// sender of non-Deposit transactions. It returns nil if no data availability fee is charged. type L1CostFunc func(rcd RollupCostData, blockTime uint64) *big.Int // l1CostFunc is an internal version of L1CostFunc that also returns the gasUsed for use in // receipts. type l1CostFunc func(rcd RollupCostData) (fee, gasUsed *big.Int) -var ( - L1BasefeeSlot = common.BigToHash(big.NewInt(1)) - OverheadSlot = common.BigToHash(big.NewInt(5)) - ScalarSlot = common.BigToHash(big.NewInt(6)) -) - -var L1BlockAddr = common.HexToAddress("0x4200000000000000000000000000000000000015") +func NewRollupCostData(data []byte) (out RollupCostData) { + for _, b := range data { + if b == 0 { + out.zeroes++ + } else { + out.ones++ + } + } + return out +} -// NewL1CostFunc returns a function used for calculating L1 fee cost, or nil if this is not an -// op-stack chain. +// NewL1CostFunc returns a function used for calculating data availability fees, or nil if this is +// not an op-stack chain. func NewL1CostFunc(config *params.ChainConfig, statedb StateGetter) L1CostFunc { if config.Optimism == nil { return nil @@ -74,31 +118,56 @@ func NewL1CostFunc(config *params.ChainConfig, statedb StateGetter) L1CostFunc { return nil // Do not charge if there is no rollup cost-data (e.g. RPC call or deposit). } if forBlock != blockTime { - // Note: The following variables are not initialized from the state DB until this point - // to allow deposit transactions from the block to be processed first by state - // transition. This behavior is consensus critical! - l1Basefee := statedb.GetState(L1BlockAddr, L1BasefeeSlot).Big() - overhead := statedb.GetState(L1BlockAddr, OverheadSlot).Big() - scalar := statedb.GetState(L1BlockAddr, ScalarSlot).Big() - isRegolith := config.IsRegolith(blockTime) - cachedFunc = newL1CostFunc(l1Basefee, overhead, scalar, isRegolith) if forBlock != ^uint64(0) { // best practice is not to re-use l1 cost funcs across different blocks, but we // make it work just in case. log.Info("l1 cost func re-used for different L1 block", "oldTime", forBlock, "newTime", blockTime) } forBlock = blockTime + // Note: the various state variables below are not initialized from the DB until this + // point to allow deposit transactions from the block to be processed first by state + // transition. This behavior is consensus critical! + if !config.IsOptimismEcotone(blockTime) { + cachedFunc = newL1CostFuncBedrock(config, statedb, blockTime) + } else { + l1BlobBasefee := statedb.GetState(L1BlockAddr, L1BlobBasefeeSlot).Big() + l1FeeScalars := statedb.GetState(L1BlockAddr, L1FeeScalarsSlot).Bytes() + + // Edge case: the very first Ecotone block requires we use the Bedrock cost + // function. We detect this scenario by checking if the Ecotone parameters are + // unset. Not here we rely on assumption that the scalar parameters are adjacent + // in the buffer and basefeeScalar comes first. + if l1BlobBasefee.BitLen() == 0 && + bytes.Equal(emptyScalars, l1FeeScalars[scalarSectionStart:scalarSectionStart+8]) { + log.Info("using bedrock l1 cost func for first Ecotone block", "time", blockTime) + cachedFunc = newL1CostFuncBedrock(config, statedb, blockTime) + } else { + l1Basefee := statedb.GetState(L1BlockAddr, L1BasefeeSlot).Big() + offset := scalarSectionStart + l1BasefeeScalar := new(big.Int).SetBytes(l1FeeScalars[offset : offset+4]) + l1BlobBasefeeScalar := new(big.Int).SetBytes(l1FeeScalars[offset+4 : offset+8]) + cachedFunc = newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasefeeScalar) + } + } } fee, _ := cachedFunc(rollupCostData) return fee } } -var ( - oneMillion = big.NewInt(1_000_000) -) +// newL1CostFuncBedrock returns an L1 cost function suitable for Bedrock, Regolith, and the first +// block only of the Ecotone upgrade. +func newL1CostFuncBedrock(config *params.ChainConfig, statedb StateGetter, blockTime uint64) l1CostFunc { + l1Basefee := statedb.GetState(L1BlockAddr, L1BasefeeSlot).Big() + overhead := statedb.GetState(L1BlockAddr, OverheadSlot).Big() + scalar := statedb.GetState(L1BlockAddr, ScalarSlot).Big() + isRegolith := config.IsRegolith(blockTime) + return newL1CostFuncBedrockHelper(l1Basefee, overhead, scalar, isRegolith) +} -func newL1CostFunc(l1Basefee, overhead, scalar *big.Int, isRegolith bool) l1CostFunc { +// newL1CostFuncBedrockHelper is lower level version of newL1CostFuncBedrock that expects already +// extracted parameters +func newL1CostFuncBedrockHelper(l1Basefee, overhead, scalar *big.Int, isRegolith bool) l1CostFunc { return func(rollupCostData RollupCostData) (fee, gasUsed *big.Int) { if rollupCostData == (RollupCostData{}) { return nil, nil // Do not charge if there is no rollup cost-data (e.g. RPC call or deposit) @@ -116,9 +185,50 @@ func newL1CostFunc(l1Basefee, overhead, scalar *big.Int, isRegolith bool) l1Cost } } +// newL1CostFuncEcotone returns an l1 cost function suitable for the Ecotone upgrade except for the +// very first block of the upgrade. +func newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasefeeScalar *big.Int) l1CostFunc { + return func(costData RollupCostData) (fee, calldataGasUsed *big.Int) { + calldataGas := (costData.zeroes * params.TxDataZeroGas) + (costData.ones * params.TxDataNonZeroGasEIP2028) + calldataGasUsed = new(big.Int).SetUint64(calldataGas) + + // Ecotone L1 cost function: + // + // (gas/16)*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/1e6 + // + // We divide "gas" by 16 to change from units of calldata gas to "estimated # of bytes when + // compressed". + // + // Function is actually computed as follows for better precision under integer arithmetic: + // + // gas*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/16e6 + + calldataCostPerByte := new(big.Int).Set(l1Basefee) + calldataCostPerByte = calldataCostPerByte.Mul(calldataCostPerByte, sixteen) + calldataCostPerByte = calldataCostPerByte.Mul(calldataCostPerByte, l1BasefeeScalar) + + blobCostPerByte := new(big.Int).Set(l1BlobBasefee) + blobCostPerByte = blobCostPerByte.Mul(blobCostPerByte, l1BlobBasefeeScalar) + + fee = new(big.Int).Add(calldataCostPerByte, blobCostPerByte) + fee = fee.Mul(fee, calldataGasUsed) + fee = fee.Div(fee, ecotoneDivisor) + + return fee, calldataGasUsed + } +} + // extractL1GasParams extracts the gas parameters necessary to compute gas costs from L1 block info -// calldata. func extractL1GasParams(config *params.ChainConfig, time uint64, data []byte) (l1Basefee *big.Int, costFunc l1CostFunc, feeScalar *big.Float, err error) { + if config.IsEcotone(time) { + // edge case: for the very first Ecotone block we still need to use the Bedrock + // function. We detect this edge case by seeing if the function selector is the old one + if len(data) >= 4 && !bytes.Equal(data[0:4], BedrockL1AttributesSelector) { + l1Basefee, costFunc, err = extractL1GasParamsEcotone(data) + return + } + } + // data consists of func selector followed by 7 ABI-encoded parameters (32 bytes each) if len(data) < 4+32*8 { return nil, nil, nil, fmt.Errorf("expected at least %d L1 info bytes, got %d", 4+32*8, len(data)) @@ -130,11 +240,38 @@ func extractL1GasParams(config *params.ChainConfig, time uint64, data []byte) (l fscalar := new(big.Float).SetInt(scalar) // legacy: format fee scalar as big Float fdivisor := new(big.Float).SetUint64(1_000_000) // 10**6, i.e. 6 decimals feeScalar = new(big.Float).Quo(fscalar, fdivisor) - costFunc = newL1CostFunc(l1Basefee, overhead, scalar, config.IsRegolith(time)) + costFunc = newL1CostFuncBedrockHelper(l1Basefee, overhead, scalar, config.IsRegolith(time)) + return +} + +// extractEcotoneL1GasParams extracts the gas parameters necessary to compute gas from L1 attribute +// info calldata after the Ecotone upgrade, but not for the very first Ecotone block. +func extractL1GasParamsEcotone(data []byte) (l1Basefee *big.Int, costFunc l1CostFunc, err error) { + if len(data) != 164 { + return nil, nil, fmt.Errorf("expected 164 L1 info bytes, got %d", len(data)) + } + // data layout assumed for Ecotone: + // offset type varname + // 0 + // 4 uint32 _basefeeScalar + // 8 uint32 _blobBasefeeScalar + // 12 uint64 _sequenceNumber, + // 20 uint64 _timestamp, + // 28 uint64 _l1BlockNumber + // 36 uint256 _basefee, + // 68 uint256 _blobBasefee, + // 100 bytes32 _hash, + // 132 bytes32 _batcherHash, + l1Basefee = new(big.Int).SetBytes(data[36:68]) + l1BlobBasefee := new(big.Int).SetBytes(data[68:100]) + l1BasefeeScalar := new(big.Int).SetBytes(data[4:8]) + l1BlobBasefeeScalar := new(big.Int).SetBytes(data[8:12]) + costFunc = newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasefeeScalar) return } -// L1Cost computes the the L1 data fee. It is used by e2e tests so must remain exported. +// L1Cost computes the the data availability fee for transactions in blocks prior to the Ecotone +// upgrade. It is used by e2e tests so must remain exported. func L1Cost(rollupDataGas uint64, l1Basefee, overhead, scalar *big.Int) *big.Int { l1GasUsed := new(big.Int).SetUint64(rollupDataGas) l1GasUsed.Add(l1GasUsed, overhead) diff --git a/core/types/rollup_cost_test.go b/core/types/rollup_cost_test.go index 57640d3015..a90a2d07cd 100644 --- a/core/types/rollup_cost_test.go +++ b/core/types/rollup_cost_test.go @@ -1,47 +1,139 @@ package types import ( + "encoding/binary" "math/big" "testing" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/params" "github.com/stretchr/testify/require" ) -func TestL1CostFunc(t *testing.T) { - basefee := big.NewInt(1) - overhead := big.NewInt(1) - scalar := big.NewInt(1_000_000) +var ( + basefee = big.NewInt(1000 * 1e6) + overhead = big.NewInt(50) + scalar = big.NewInt(7 * 1e6) - costFunc0 := newL1CostFunc(basefee, overhead, scalar, false /*isRegolith*/) - costFunc1 := newL1CostFunc(basefee, overhead, scalar, true) + blobBasefee = big.NewInt(10 * 1e6) + basefeeScalar = big.NewInt(2) + blobBasefeeScalar = big.NewInt(3) + + // below are the expected cost func outcomes for the above parameter settings on the emptyTx + // which is defined in transaction_test.go + bedrockFee = big.NewInt(11326000000000) + regolithFee = big.NewInt(3710000000000) + ecotoneFee = big.NewInt(960900) // (480/16)*(2*16*1000 + 3*10) == 960900 + + bedrockGas = big.NewInt(1618) + regolithGas = big.NewInt(530) // 530 = 1618 - (16*68) + ecotoneGas = big.NewInt(480) +) + +func TestBedrockL1CostFunc(t *testing.T) { + costFunc0 := newL1CostFuncBedrockHelper(basefee, overhead, scalar, false /*isRegolith*/) + costFunc1 := newL1CostFuncBedrockHelper(basefee, overhead, scalar, true) - // emptyTx is a test tx defined in transaction_test.go c0, g0 := costFunc0(emptyTx.RollupCostData()) // pre-Regolith c1, g1 := costFunc1(emptyTx.RollupCostData()) - require.Equal(t, big.NewInt(1569), c0) - require.Equal(t, big.NewInt(1569), g0) // gas-used == fee since scalars are all 1 - require.Equal(t, big.NewInt(481), c1) - require.Equal(t, big.NewInt(481), g1) + + require.Equal(t, bedrockFee, c0) + require.Equal(t, bedrockGas, g0) // gas-used + + require.Equal(t, regolithFee, c1) + require.Equal(t, regolithGas, g1) +} + +func TestEcotoneL1CostFunc(t *testing.T) { + costFunc := newL1CostFuncEcotone(basefee, blobBasefee, basefeeScalar, blobBasefeeScalar) + c, g := costFunc(emptyTx.RollupCostData()) + require.Equal(t, ecotoneGas, g) + require.Equal(t, ecotoneFee, c) } -func TestExtractGasParams(t *testing.T) { +func TestExtractBedrockGasParams(t *testing.T) { regolithTime := uint64(1) config := ¶ms.ChainConfig{ Optimism: params.OptimismTestConfig.Optimism, RegolithTime: ®olithTime, } - selector := []byte{0x01, 0x5d, 0x8e, 0xb9} - uint256 := make([]byte, 32) + data := getBedrockL1Attributes(basefee, overhead, scalar) - ignored := big.NewInt(1234) - basefee := big.NewInt(1) - overhead := big.NewInt(1) - scalar := big.NewInt(1_000_000) + _, costFuncPreRegolith, _, err := extractL1GasParams(config, regolithTime-1, data) + require.NoError(t, err) + + // Function should continue to succeed even with extra data (that just gets ignored) since we + // have been testing the data size is at least the expected number of bytes instead of exactly + // the expected number of bytes. It's unclear if this flexibility was intentional, but since + // it's been in production we shouldn't change this behavior. + data = append(data, []byte{0xBE, 0xEE, 0xEE, 0xFF}...) // tack on garbage data + _, costFuncRegolith, _, err := extractL1GasParams(config, regolithTime, data) + require.NoError(t, err) + + c, _ := costFuncPreRegolith(emptyTx.RollupCostData()) + require.Equal(t, bedrockFee, c) + + c, _ = costFuncRegolith(emptyTx.RollupCostData()) + require.Equal(t, regolithFee, c) + + // try to extract from data which has not enough params, should get error. + data = data[:len(data)-4-32] + _, _, _, err = extractL1GasParams(config, regolithTime, data) + require.Error(t, err) +} + +func TestExtractEcotoneGasParams(t *testing.T) { + zeroTime := uint64(0) + // create a config where ecotone upgrade is active + config := ¶ms.ChainConfig{ + Optimism: params.OptimismTestConfig.Optimism, + RegolithTime: &zeroTime, + EcotoneTime: &zeroTime, + } + require.True(t, config.IsOptimismEcotone(0)) + + data := getEcotoneL1Attributes(basefee, blobBasefee, basefeeScalar, blobBasefeeScalar) + + _, costFunc, _, err := extractL1GasParams(config, 0, data) + require.NoError(t, err) + + c, g := costFunc(emptyTx.RollupCostData()) + + require.Equal(t, ecotoneGas, g) + require.Equal(t, ecotoneFee, c) + + // make sure wrong amont of data results in error + data = append(data, 0x00) // tack on garbage byte + _, _, err = extractL1GasParamsEcotone(data) + require.Error(t, err) +} + +// make sure the first block of the ecotone upgrade is properly detected, and invokes the bedrock +// cost function appropriately +func TestFirstBlockEcotoneGasParams(t *testing.T) { + zeroTime := uint64(0) + // create a config where ecotone upgrade is active + config := ¶ms.ChainConfig{ + Optimism: params.OptimismTestConfig.Optimism, + RegolithTime: &zeroTime, + EcotoneTime: &zeroTime, + } + require.True(t, config.IsOptimismEcotone(0)) + data := getBedrockL1Attributes(basefee, overhead, scalar) + + _, oldCostFunc, _, err := extractL1GasParams(config, 0, data) + require.NoError(t, err) + c, _ := oldCostFunc(emptyTx.RollupCostData()) + require.Equal(t, regolithFee, c) +} + +func getBedrockL1Attributes(basefee, overhead, scalar *big.Int) []byte { + uint256 := make([]byte, 32) + ignored := big.NewInt(1234) data := []byte{} - data = append(data, selector...) // selector + data = append(data, BedrockL1AttributesSelector...) data = append(data, ignored.FillBytes(uint256)...) // arg 0 data = append(data, ignored.FillBytes(uint256)...) // arg 1 data = append(data, basefee.FillBytes(uint256)...) // arg 2 @@ -49,28 +141,105 @@ func TestExtractGasParams(t *testing.T) { data = append(data, ignored.FillBytes(uint256)...) // arg 4 data = append(data, ignored.FillBytes(uint256)...) // arg 5 data = append(data, overhead.FillBytes(uint256)...) // arg 6 + data = append(data, scalar.FillBytes(uint256)...) // arg 7 + return data +} - // try to extract from data which has not enough params, should get error. - _, _, _, err := extractL1GasParams(config, regolithTime, data) - require.Error(t, err) +func getEcotoneL1Attributes(basefee, blobBasefee, basefeeScalar, blobBasefeeScalar *big.Int) []byte { + ignored := big.NewInt(1234) + data := []byte{} + uint256 := make([]byte, 32) + uint64 := make([]byte, 8) + uint32 := make([]byte, 4) + data = append(data, EcotoneL1AttributesSelector...) + data = append(data, basefeeScalar.FillBytes(uint32)...) + data = append(data, blobBasefeeScalar.FillBytes(uint32)...) + data = append(data, ignored.FillBytes(uint64)...) + data = append(data, ignored.FillBytes(uint64)...) + data = append(data, ignored.FillBytes(uint64)...) + data = append(data, basefee.FillBytes(uint256)...) + data = append(data, blobBasefee.FillBytes(uint256)...) + data = append(data, ignored.FillBytes(uint256)...) + data = append(data, ignored.FillBytes(uint256)...) + return data +} + +type testStateGetter struct { + basefee, blobBasefee, overhead, scalar *big.Int + basefeeScalar, blobBasefeeScalar uint32 +} - data = append(data, scalar.FillBytes(uint256)...) // arg 7 +func (sg *testStateGetter) GetState(addr common.Address, slot common.Hash) common.Hash { + buf := common.Hash{} + switch slot { + case L1BasefeeSlot: + sg.basefee.FillBytes(buf[:]) + case OverheadSlot: + sg.overhead.FillBytes(buf[:]) + case ScalarSlot: + sg.scalar.FillBytes(buf[:]) + case L1BlobBasefeeSlot: + sg.blobBasefee.FillBytes(buf[:]) + case L1FeeScalarsSlot: + offset := scalarSectionStart + binary.BigEndian.PutUint32(buf[offset:offset+4], sg.basefeeScalar) + binary.BigEndian.PutUint32(buf[offset+4:offset+8], sg.blobBasefeeScalar) + default: + panic("unknown slot") + } + return buf +} - // now it should succeed - _, costFuncPreRegolith, _, err := extractL1GasParams(config, regolithTime-1, data) - require.NoError(t, err) +// TestNewL1CostFunc tests that the appropriate cost function is selected based on the +// configuration and statedb values. +func TestNewL1CostFunc(t *testing.T) { + time := uint64(1) + config := ¶ms.ChainConfig{ + Optimism: params.OptimismTestConfig.Optimism, + } + statedb := &testStateGetter{ + basefee: basefee, + overhead: overhead, + scalar: scalar, + blobBasefee: blobBasefee, + basefeeScalar: uint32(basefeeScalar.Uint64()), + blobBasefeeScalar: uint32(blobBasefeeScalar.Uint64()), + } - // Function should continue to succeed even with extra data (that just gets ignored) since we - // have been testing the data size is at least the expected number of bytes instead of exactly - // the expected number of bytes. It's unclear if this flexibility was intentional, but since - // it's been in production we shouldn't change this behavior. - data = append(data, ignored.FillBytes(uint256)...) // extra ignored arg - _, costFuncRegolith, _, err := extractL1GasParams(config, regolithTime, data) - require.NoError(t, err) + costFunc := NewL1CostFunc(config, statedb) + require.NotNil(t, costFunc) - c, _ := costFuncPreRegolith(emptyTx.RollupCostData()) - require.Equal(t, big.NewInt(1569), c) + // empty cost data should result in nil fee + fee := costFunc(RollupCostData{}, time) + require.Nil(t, fee) - c, _ = costFuncRegolith(emptyTx.RollupCostData()) - require.Equal(t, big.NewInt(481), c) + // emptyTx fee w/ bedrock config should be the bedrock fee + fee = costFunc(emptyTx.RollupCostData(), time) + require.NotNil(t, fee) + require.Equal(t, bedrockFee, fee) + + // emptyTx fee w/ regolith config should be the regolith fee + config.RegolithTime = &time + costFunc = NewL1CostFunc(config, statedb) + require.NotNil(t, costFunc) + fee = costFunc(emptyTx.RollupCostData(), time) + require.NotNil(t, fee) + require.Equal(t, regolithFee, fee) + + // emptyTx fee w/ ecotone config should be the ecotone fee + config.EcotoneTime = &time + costFunc = NewL1CostFunc(config, statedb) + fee = costFunc(emptyTx.RollupCostData(), time) + require.NotNil(t, fee) + require.Equal(t, ecotoneFee, fee) + + // emptyTx fee w/ ecotone config, but simulate first ecotone block by blowing away the ecotone + // params. Should result in regolith fee. + statedb.basefeeScalar = 0 + statedb.blobBasefeeScalar = 0 + statedb.blobBasefee = new(big.Int) + costFunc = NewL1CostFunc(config, statedb) + fee = costFunc(emptyTx.RollupCostData(), time) + require.NotNil(t, fee) + require.Equal(t, regolithFee, fee) } From c887e59de526b612a616ac56f5843da30d70ecb1 Mon Sep 17 00:00:00 2001 From: Roberto Bayardo Date: Tue, 9 Jan 2024 09:26:03 -0800 Subject: [PATCH 163/223] Update core/types/rollup_cost.go Co-authored-by: protolambda --- core/types/rollup_cost.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/types/rollup_cost.go b/core/types/rollup_cost.go index b1d4ccd0a6..9718560b76 100644 --- a/core/types/rollup_cost.go +++ b/core/types/rollup_cost.go @@ -194,14 +194,14 @@ func newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasef // Ecotone L1 cost function: // - // (gas/16)*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/1e6 + // (calldataGas/16)*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/1e6 // - // We divide "gas" by 16 to change from units of calldata gas to "estimated # of bytes when - // compressed". + // We divide "calldataGas" by 16 to change from units of calldata gas to "estimated # of bytes when + // compressed". Known as "compressedTxSize" in the spec. // // Function is actually computed as follows for better precision under integer arithmetic: // - // gas*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/16e6 + // calldataGas*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/16e6 calldataCostPerByte := new(big.Int).Set(l1Basefee) calldataCostPerByte = calldataCostPerByte.Mul(calldataCostPerByte, sixteen) From 32f2bac751f684cbe27cb30d3925af889f6f4356 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 9 Jan 2024 22:20:22 +0100 Subject: [PATCH 164/223] eth/gasestimator: Fix NewEVMBlockContext call --- eth/gasestimator/gasestimator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/gasestimator/gasestimator.go b/eth/gasestimator/gasestimator.go index a36c670747..734b47c73f 100644 --- a/eth/gasestimator/gasestimator.go +++ b/eth/gasestimator/gasestimator.go @@ -208,7 +208,7 @@ func run(ctx context.Context, call *core.Message, opts *Options) (*core.Executio // Assemble the call and the call context var ( msgContext = core.NewEVMTxContext(call) - evmContext = core.NewEVMBlockContext(opts.Header, opts.Chain, nil) + evmContext = core.NewEVMBlockContext(opts.Header, opts.Chain, nil, opts.Config, opts.State) dirtyState = opts.State.Copy() evm = vm.NewEVM(evmContext, msgContext, dirtyState, opts.Config, vm.Config{NoBaseFee: true}) From 3d3dfcd9d3849fbf98edf3a6095f3e8bc948e652 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 9 Jan 2024 22:21:27 +0100 Subject: [PATCH 165/223] go: mod tidy --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index 124568f73d..ebecaa893a 100644 --- a/go.sum +++ b/go.sum @@ -181,8 +181,6 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea h1:eG415nqsRtvN9TtsyqreAmtBOCisRtG9M9JICYXNI5c= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231220193740-b624008369ea/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753 h1:DL667cfM6peU8H9Ut/uu9h9Bd4gQCcJrjq+yYsfYwjk= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= From 3dcc1dd81e77fe54b93003c7091d49779c012955 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 9 Jan 2024 22:29:43 +0100 Subject: [PATCH 166/223] forkdiff: Update base hash to v1.13.8 --- fork.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fork.yaml b/fork.yaml index eb697a7ae8..3ceb573b30 100644 --- a/fork.yaml +++ b/fork.yaml @@ -5,7 +5,7 @@ footer: | base: name: go-ethereum url: https://github.com/ethereum/go-ethereum - hash: 916d6a441a866cb618ae826c220866de118899f7 # v1.13.5 + hash: b20b4a71598481443d60b261d3e5dcb37f8a0d82 # v1.13.8 fork: name: op-geth url: https://github.com/ethereum-optimism/op-geth From a79bde2c0f4f11620a0a7b1cd81d4274d6099e83 Mon Sep 17 00:00:00 2001 From: protolambda Date: Tue, 9 Jan 2024 16:58:05 -0500 Subject: [PATCH 167/223] L2 Cancun support, activate on Ecotone (#205) --- core/txpool/validation.go | 3 +++ core/types/transaction_signing.go | 4 ++-- eth/api_backend.go | 3 +++ eth/backend.go | 8 ++++++-- go.sum | 2 -- params/superchain.go | 4 ++-- 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/core/txpool/validation.go b/core/txpool/validation.go index ed0a8bb706..b087e34ee0 100644 --- a/core/txpool/validation.go +++ b/core/txpool/validation.go @@ -69,6 +69,9 @@ func ValidateTransaction(tx *types.Transaction, head *types.Header, signer types if tx.Type() == types.DepositTxType { return core.ErrTxTypeNotSupported } + if opts.Config.IsOptimism() && tx.Type() == types.BlobTxType { + return core.ErrTxTypeNotSupported + } // Ensure transactions not implemented by the calling pool are rejected if opts.Accept&(1< Date: Thu, 11 Jan 2024 07:18:14 -0800 Subject: [PATCH 168/223] baseFee consistency related renaming --- core/types/receipt.go | 4 +- core/types/receipt_test.go | 22 ++++----- core/types/rollup_cost.go | 86 +++++++++++++++++----------------- core/types/rollup_cost_test.go | 64 ++++++++++++------------- 4 files changed, 88 insertions(+), 88 deletions(-) diff --git a/core/types/receipt.go b/core/types/receipt.go index b85df05a3a..edd90d9ab2 100644 --- a/core/types/receipt.go +++ b/core/types/receipt.go @@ -570,7 +570,7 @@ func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, nu } } if config.Optimism != nil && len(txs) >= 2 { // need at least an info tx and a non-info tx - l1Basefee, costFunc, feeScalar, err := extractL1GasParams(config, time, txs[0].Data()) + l1BaseFee, costFunc, feeScalar, err := extractL1GasParams(config, time, txs[0].Data()) if err != nil { return err } @@ -578,7 +578,7 @@ func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, nu if txs[i].IsDepositTx() { continue } - rs[i].L1GasPrice = l1Basefee + rs[i].L1GasPrice = l1BaseFee rs[i].L1Fee, rs[i].L1GasUsed = costFunc(txs[i].RollupCostData()) rs[i].FeeScalar = feeScalar } diff --git a/core/types/receipt_test.go b/core/types/receipt_test.go index f6a3598ca9..5f6a125636 100644 --- a/core/types/receipt_test.go +++ b/core/types/receipt_test.go @@ -458,10 +458,10 @@ func TestDecodeEmptyTypedReceipt(t *testing.T) { // Tests that receipt data can be correctly derived from the contextual infos func TestDeriveFields(t *testing.T) { // Re-derive receipts. - basefee := big.NewInt(1000) + baseFee := big.NewInt(1000) blobGasPrice := big.NewInt(920) derivedReceipts := clearComputedFieldsOnReceipts(receipts) - err := Receipts(derivedReceipts).DeriveFields(params.TestChainConfig, blockHash, blockNumber.Uint64(), blockTime, basefee, blobGasPrice, txs) + err := Receipts(derivedReceipts).DeriveFields(params.TestChainConfig, blockHash, blockNumber.Uint64(), blockTime, baseFee, blobGasPrice, txs) if err != nil { t.Fatalf("DeriveFields(...) = %v, want ", err) } @@ -765,16 +765,16 @@ func TestDeriveOptimismBedrockTxReceipts(t *testing.T) { // Bedrock style l1 attributes with L1Scalar=7_000_000 (becomes 7 after division), L1Overhead=50, L1BaseFee=1000*1e6 payload := common.Hex2Bytes("015d8eb900000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000006acfc0015d8eb900000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000006acfc0") // the parameters we use below are defined in rollup_test.go - l1GasPrice := basefee + l1GasPrice := baseFee l1GasUsed := bedrockGas feeScalar := big.NewFloat(float64(scalar.Uint64() / 1e6)) l1Fee := bedrockFee txs, receipts := getOptimismTxReceipts(t, payload, l1GasPrice, l1GasUsed, feeScalar, l1Fee) // Re-derive receipts. - basefee := big.NewInt(1000) + baseFee := big.NewInt(1000) derivedReceipts := clearComputedFieldsOnReceipts(receipts) - err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) + err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) if err != nil { t.Fatalf("DeriveFields(...) = %v, want ", err) } @@ -782,7 +782,7 @@ func TestDeriveOptimismBedrockTxReceipts(t *testing.T) { // Should get same result with the Ecotone config because it will assume this is "first ecotone block" // if it sees the bedrock style L1 attributes. - err = Receipts(derivedReceipts).DeriveFields(ecotoneTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) + err = Receipts(derivedReceipts).DeriveFields(ecotoneTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) if err != nil { t.Fatalf("DeriveFields(...) = %v, want ", err) } @@ -790,24 +790,24 @@ func TestDeriveOptimismBedrockTxReceipts(t *testing.T) { } func TestDeriveOptimismEcotoneTxReceipts(t *testing.T) { - // Ecotone style l1 attributes with basefeeScalar=2, blobBasfeeScalar=3, baseFee=1000*1e6, blobBasefee=10*1e6 + // Ecotone style l1 attributes with baseFeeScalar=2, blobBaseFeeScalar=3, baseFee=1000*1e6, blobBaseFee=10*1e6 payload := common.Hex2Bytes("440a5e20000000020000000300000000000004d200000000000004d200000000000004d2000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000098968000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2") // the parameters we use below are defined in rollup_test.go - l1GasPrice := basefee + l1GasPrice := baseFee l1GasUsed := ecotoneGas l1Fee := ecotoneFee txs, receipts := getOptimismTxReceipts(t, payload, l1GasPrice, l1GasUsed, nil /*feeScalar*/, l1Fee) // Re-derive receipts. - basefee := big.NewInt(1000) + baseFee := big.NewInt(1000) derivedReceipts := clearComputedFieldsOnReceipts(receipts) // Should error out if we try to process this with a pre-Ecotone config - err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) + err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) if err == nil { t.Fatalf("expected error from deriving ecotone receipts with pre-ecotone config, got none") } - err = Receipts(derivedReceipts).DeriveFields(ecotoneTestConfig, blockHash, blockNumber.Uint64(), 0, basefee, nil, txs) + err = Receipts(derivedReceipts).DeriveFields(ecotoneTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) if err != nil { t.Fatalf("DeriveFields(...) = %v, want ", err) } diff --git a/core/types/rollup_cost.go b/core/types/rollup_cost.go index 9718560b76..c40b24db94 100644 --- a/core/types/rollup_cost.go +++ b/core/types/rollup_cost.go @@ -32,17 +32,17 @@ const ( // offsets correspond to the last byte of the value in the slot, counting backwards from the // end of the slot. For example, The 8-byte sequence number has offset 0, and is therefore // stored as big-endian format in bytes [24:32] of the slot. - BasefeeScalarSlotOffset = 12 // bytes [16:20] of the slot - BlobBasefeeScalarSlotOffset = 8 // bytes [20:24] of the slot + BaseFeeScalarSlotOffset = 12 // bytes [16:20] of the slot + BlobBaseFeeScalarSlotOffset = 8 // bytes [20:24] of the slot // scalarSectionStart is the beginning of the scalar values segment in the slot - // array. basefeeScalar is in the first four bytes of the segment, blobBasefeeScalar the next + // array. baseFeeScalar is in the first four bytes of the segment, blobBaseFeeScalar the next // four. - scalarSectionStart = 32 - BasefeeScalarSlotOffset - 4 + scalarSectionStart = 32 - BaseFeeScalarSlotOffset - 4 ) func init() { - if BlobBasefeeScalarSlotOffset != BasefeeScalarSlotOffset-4 { + if BlobBaseFeeScalarSlotOffset != BaseFeeScalarSlotOffset-4 { panic("this code assumes the scalars are at adjacent positions in the scalars slot") } } @@ -57,16 +57,16 @@ var ( // L1BlockAddr is the address of the L1Block contract which stores the L1 gas attributes. L1BlockAddr = common.HexToAddress("0x4200000000000000000000000000000000000015") - L1BasefeeSlot = common.BigToHash(big.NewInt(1)) + L1BaseFeeSlot = common.BigToHash(big.NewInt(1)) OverheadSlot = common.BigToHash(big.NewInt(5)) ScalarSlot = common.BigToHash(big.NewInt(6)) - // L2BlobBasefeeSlot was added with the Ecotone upgrade and stores the blobBasefee L1 gas + // L2BlobBaseFeeSlot was added with the Ecotone upgrade and stores the blobBaseFee L1 gas // attribute. - L1BlobBasefeeSlot = common.BigToHash(big.NewInt(7)) + L1BlobBaseFeeSlot = common.BigToHash(big.NewInt(7)) // L1FeeScalarsSlot as of the Ecotone upgrade stores the 32-bit basefeeScalar and - // blobBasefeeScalar L1 gas attributes at offsets `BasefeeScalarSlotOffset` and - // `BlobBasefeeScalarSlotOffset` respectively. + // blobBaseFeeScalar L1 gas attributes at offsets `BaseFeeScalarSlotOffset` and + // `BlobBaseFeeScalarSlotOffset` respectively. L1FeeScalarsSlot = common.BigToHash(big.NewInt(3)) oneMillion = big.NewInt(1_000_000) @@ -130,23 +130,23 @@ func NewL1CostFunc(config *params.ChainConfig, statedb StateGetter) L1CostFunc { if !config.IsOptimismEcotone(blockTime) { cachedFunc = newL1CostFuncBedrock(config, statedb, blockTime) } else { - l1BlobBasefee := statedb.GetState(L1BlockAddr, L1BlobBasefeeSlot).Big() + l1BlobBaseFee := statedb.GetState(L1BlockAddr, L1BlobBaseFeeSlot).Big() l1FeeScalars := statedb.GetState(L1BlockAddr, L1FeeScalarsSlot).Bytes() // Edge case: the very first Ecotone block requires we use the Bedrock cost // function. We detect this scenario by checking if the Ecotone parameters are // unset. Not here we rely on assumption that the scalar parameters are adjacent // in the buffer and basefeeScalar comes first. - if l1BlobBasefee.BitLen() == 0 && + if l1BlobBaseFee.BitLen() == 0 && bytes.Equal(emptyScalars, l1FeeScalars[scalarSectionStart:scalarSectionStart+8]) { log.Info("using bedrock l1 cost func for first Ecotone block", "time", blockTime) cachedFunc = newL1CostFuncBedrock(config, statedb, blockTime) } else { - l1Basefee := statedb.GetState(L1BlockAddr, L1BasefeeSlot).Big() + l1BaseFee := statedb.GetState(L1BlockAddr, L1BaseFeeSlot).Big() offset := scalarSectionStart - l1BasefeeScalar := new(big.Int).SetBytes(l1FeeScalars[offset : offset+4]) - l1BlobBasefeeScalar := new(big.Int).SetBytes(l1FeeScalars[offset+4 : offset+8]) - cachedFunc = newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasefeeScalar) + l1BaseFeeScalar := new(big.Int).SetBytes(l1FeeScalars[offset : offset+4]) + l1BlobBaseFeeScalar := new(big.Int).SetBytes(l1FeeScalars[offset+4 : offset+8]) + cachedFunc = newL1CostFuncEcotone(l1BaseFee, l1BlobBaseFee, l1BaseFeeScalar, l1BlobBaseFeeScalar) } } } @@ -158,16 +158,16 @@ func NewL1CostFunc(config *params.ChainConfig, statedb StateGetter) L1CostFunc { // newL1CostFuncBedrock returns an L1 cost function suitable for Bedrock, Regolith, and the first // block only of the Ecotone upgrade. func newL1CostFuncBedrock(config *params.ChainConfig, statedb StateGetter, blockTime uint64) l1CostFunc { - l1Basefee := statedb.GetState(L1BlockAddr, L1BasefeeSlot).Big() + l1BaseFee := statedb.GetState(L1BlockAddr, L1BaseFeeSlot).Big() overhead := statedb.GetState(L1BlockAddr, OverheadSlot).Big() scalar := statedb.GetState(L1BlockAddr, ScalarSlot).Big() isRegolith := config.IsRegolith(blockTime) - return newL1CostFuncBedrockHelper(l1Basefee, overhead, scalar, isRegolith) + return newL1CostFuncBedrockHelper(l1BaseFee, overhead, scalar, isRegolith) } // newL1CostFuncBedrockHelper is lower level version of newL1CostFuncBedrock that expects already // extracted parameters -func newL1CostFuncBedrockHelper(l1Basefee, overhead, scalar *big.Int, isRegolith bool) l1CostFunc { +func newL1CostFuncBedrockHelper(l1BaseFee, overhead, scalar *big.Int, isRegolith bool) l1CostFunc { return func(rollupCostData RollupCostData) (fee, gasUsed *big.Int) { if rollupCostData == (RollupCostData{}) { return nil, nil // Do not charge if there is no rollup cost-data (e.g. RPC call or deposit) @@ -180,35 +180,35 @@ func newL1CostFuncBedrockHelper(l1Basefee, overhead, scalar *big.Int, isRegolith } gasWithOverhead := new(big.Int).SetUint64(gas) gasWithOverhead.Add(gasWithOverhead, overhead) - l1Cost := l1CostHelper(gasWithOverhead, l1Basefee, scalar) + l1Cost := l1CostHelper(gasWithOverhead, l1BaseFee, scalar) return l1Cost, gasWithOverhead } } // newL1CostFuncEcotone returns an l1 cost function suitable for the Ecotone upgrade except for the // very first block of the upgrade. -func newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasefeeScalar *big.Int) l1CostFunc { +func newL1CostFuncEcotone(l1BaseFee, l1BlobBaseFee, l1BaseFeeScalar, l1BlobBaseFeeScalar *big.Int) l1CostFunc { return func(costData RollupCostData) (fee, calldataGasUsed *big.Int) { calldataGas := (costData.zeroes * params.TxDataZeroGas) + (costData.ones * params.TxDataNonZeroGasEIP2028) calldataGasUsed = new(big.Int).SetUint64(calldataGas) // Ecotone L1 cost function: // - // (calldataGas/16)*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/1e6 + // (calldataGas/16)*(l1BaseFee*16*l1BaseFeeScalar + l1BlobBaseFee*l1BlobBaseFeeScalar)/1e6 // // We divide "calldataGas" by 16 to change from units of calldata gas to "estimated # of bytes when // compressed". Known as "compressedTxSize" in the spec. // // Function is actually computed as follows for better precision under integer arithmetic: // - // calldataGas*(l1Basefee*16*l1BasefeeScalar + l1BlobBasefee*l1BlobBasefeeScalar)/16e6 + // calldataGas*(l1BaseFee*16*l1BaseFeeScalar + l1BlobBaseFee*l1BlobBaseFeeScalar)/16e6 - calldataCostPerByte := new(big.Int).Set(l1Basefee) + calldataCostPerByte := new(big.Int).Set(l1BaseFee) calldataCostPerByte = calldataCostPerByte.Mul(calldataCostPerByte, sixteen) - calldataCostPerByte = calldataCostPerByte.Mul(calldataCostPerByte, l1BasefeeScalar) + calldataCostPerByte = calldataCostPerByte.Mul(calldataCostPerByte, l1BaseFeeScalar) - blobCostPerByte := new(big.Int).Set(l1BlobBasefee) - blobCostPerByte = blobCostPerByte.Mul(blobCostPerByte, l1BlobBasefeeScalar) + blobCostPerByte := new(big.Int).Set(l1BlobBaseFee) + blobCostPerByte = blobCostPerByte.Mul(blobCostPerByte, l1BlobBaseFeeScalar) fee = new(big.Int).Add(calldataCostPerByte, blobCostPerByte) fee = fee.Mul(fee, calldataGasUsed) @@ -219,12 +219,12 @@ func newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasef } // extractL1GasParams extracts the gas parameters necessary to compute gas costs from L1 block info -func extractL1GasParams(config *params.ChainConfig, time uint64, data []byte) (l1Basefee *big.Int, costFunc l1CostFunc, feeScalar *big.Float, err error) { +func extractL1GasParams(config *params.ChainConfig, time uint64, data []byte) (l1BaseFee *big.Int, costFunc l1CostFunc, feeScalar *big.Float, err error) { if config.IsEcotone(time) { // edge case: for the very first Ecotone block we still need to use the Bedrock // function. We detect this edge case by seeing if the function selector is the old one if len(data) >= 4 && !bytes.Equal(data[0:4], BedrockL1AttributesSelector) { - l1Basefee, costFunc, err = extractL1GasParamsEcotone(data) + l1BaseFee, costFunc, err = extractL1GasParamsEcotone(data) return } } @@ -234,19 +234,19 @@ func extractL1GasParams(config *params.ChainConfig, time uint64, data []byte) (l return nil, nil, nil, fmt.Errorf("expected at least %d L1 info bytes, got %d", 4+32*8, len(data)) } data = data[4:] // trim function selector - l1Basefee = new(big.Int).SetBytes(data[32*2 : 32*3]) // arg index 2 + l1BaseFee = new(big.Int).SetBytes(data[32*2 : 32*3]) // arg index 2 overhead := new(big.Int).SetBytes(data[32*6 : 32*7]) // arg index 6 scalar := new(big.Int).SetBytes(data[32*7 : 32*8]) // arg index 7 fscalar := new(big.Float).SetInt(scalar) // legacy: format fee scalar as big Float fdivisor := new(big.Float).SetUint64(1_000_000) // 10**6, i.e. 6 decimals feeScalar = new(big.Float).Quo(fscalar, fdivisor) - costFunc = newL1CostFuncBedrockHelper(l1Basefee, overhead, scalar, config.IsRegolith(time)) + costFunc = newL1CostFuncBedrockHelper(l1BaseFee, overhead, scalar, config.IsRegolith(time)) return } // extractEcotoneL1GasParams extracts the gas parameters necessary to compute gas from L1 attribute // info calldata after the Ecotone upgrade, but not for the very first Ecotone block. -func extractL1GasParamsEcotone(data []byte) (l1Basefee *big.Int, costFunc l1CostFunc, err error) { +func extractL1GasParamsEcotone(data []byte) (l1BaseFee *big.Int, costFunc l1CostFunc, err error) { if len(data) != 164 { return nil, nil, fmt.Errorf("expected 164 L1 info bytes, got %d", len(data)) } @@ -254,32 +254,32 @@ func extractL1GasParamsEcotone(data []byte) (l1Basefee *big.Int, costFunc l1Cost // offset type varname // 0 // 4 uint32 _basefeeScalar - // 8 uint32 _blobBasefeeScalar + // 8 uint32 _blobBaseFeeScalar // 12 uint64 _sequenceNumber, // 20 uint64 _timestamp, // 28 uint64 _l1BlockNumber // 36 uint256 _basefee, - // 68 uint256 _blobBasefee, + // 68 uint256 _blobBaseFee, // 100 bytes32 _hash, // 132 bytes32 _batcherHash, - l1Basefee = new(big.Int).SetBytes(data[36:68]) - l1BlobBasefee := new(big.Int).SetBytes(data[68:100]) - l1BasefeeScalar := new(big.Int).SetBytes(data[4:8]) - l1BlobBasefeeScalar := new(big.Int).SetBytes(data[8:12]) - costFunc = newL1CostFuncEcotone(l1Basefee, l1BlobBasefee, l1BasefeeScalar, l1BlobBasefeeScalar) + l1BaseFee = new(big.Int).SetBytes(data[36:68]) + l1BlobBaseFee := new(big.Int).SetBytes(data[68:100]) + l1BaseFeeScalar := new(big.Int).SetBytes(data[4:8]) + l1BlobBaseFeeScalar := new(big.Int).SetBytes(data[8:12]) + costFunc = newL1CostFuncEcotone(l1BaseFee, l1BlobBaseFee, l1BaseFeeScalar, l1BlobBaseFeeScalar) return } // L1Cost computes the the data availability fee for transactions in blocks prior to the Ecotone // upgrade. It is used by e2e tests so must remain exported. -func L1Cost(rollupDataGas uint64, l1Basefee, overhead, scalar *big.Int) *big.Int { +func L1Cost(rollupDataGas uint64, l1BaseFee, overhead, scalar *big.Int) *big.Int { l1GasUsed := new(big.Int).SetUint64(rollupDataGas) l1GasUsed.Add(l1GasUsed, overhead) - return l1CostHelper(l1GasUsed, l1Basefee, scalar) + return l1CostHelper(l1GasUsed, l1BaseFee, scalar) } -func l1CostHelper(gasWithOverhead, l1Basefee, scalar *big.Int) *big.Int { +func l1CostHelper(gasWithOverhead, l1BaseFee, scalar *big.Int) *big.Int { fee := new(big.Int).Set(gasWithOverhead) - fee.Mul(fee, l1Basefee).Mul(fee, scalar).Div(fee, oneMillion) + fee.Mul(fee, l1BaseFee).Mul(fee, scalar).Div(fee, oneMillion) return fee } diff --git a/core/types/rollup_cost_test.go b/core/types/rollup_cost_test.go index a90a2d07cd..d893f4517b 100644 --- a/core/types/rollup_cost_test.go +++ b/core/types/rollup_cost_test.go @@ -11,13 +11,13 @@ import ( ) var ( - basefee = big.NewInt(1000 * 1e6) + baseFee = big.NewInt(1000 * 1e6) overhead = big.NewInt(50) scalar = big.NewInt(7 * 1e6) - blobBasefee = big.NewInt(10 * 1e6) - basefeeScalar = big.NewInt(2) - blobBasefeeScalar = big.NewInt(3) + blobBaseFee = big.NewInt(10 * 1e6) + baseFeeScalar = big.NewInt(2) + blobBaseFeeScalar = big.NewInt(3) // below are the expected cost func outcomes for the above parameter settings on the emptyTx // which is defined in transaction_test.go @@ -31,8 +31,8 @@ var ( ) func TestBedrockL1CostFunc(t *testing.T) { - costFunc0 := newL1CostFuncBedrockHelper(basefee, overhead, scalar, false /*isRegolith*/) - costFunc1 := newL1CostFuncBedrockHelper(basefee, overhead, scalar, true) + costFunc0 := newL1CostFuncBedrockHelper(baseFee, overhead, scalar, false /*isRegolith*/) + costFunc1 := newL1CostFuncBedrockHelper(baseFee, overhead, scalar, true) c0, g0 := costFunc0(emptyTx.RollupCostData()) // pre-Regolith c1, g1 := costFunc1(emptyTx.RollupCostData()) @@ -45,7 +45,7 @@ func TestBedrockL1CostFunc(t *testing.T) { } func TestEcotoneL1CostFunc(t *testing.T) { - costFunc := newL1CostFuncEcotone(basefee, blobBasefee, basefeeScalar, blobBasefeeScalar) + costFunc := newL1CostFuncEcotone(baseFee, blobBaseFee, baseFeeScalar, blobBaseFeeScalar) c, g := costFunc(emptyTx.RollupCostData()) require.Equal(t, ecotoneGas, g) require.Equal(t, ecotoneFee, c) @@ -58,7 +58,7 @@ func TestExtractBedrockGasParams(t *testing.T) { RegolithTime: ®olithTime, } - data := getBedrockL1Attributes(basefee, overhead, scalar) + data := getBedrockL1Attributes(baseFee, overhead, scalar) _, costFuncPreRegolith, _, err := extractL1GasParams(config, regolithTime-1, data) require.NoError(t, err) @@ -93,7 +93,7 @@ func TestExtractEcotoneGasParams(t *testing.T) { } require.True(t, config.IsOptimismEcotone(0)) - data := getEcotoneL1Attributes(basefee, blobBasefee, basefeeScalar, blobBasefeeScalar) + data := getEcotoneL1Attributes(baseFee, blobBaseFee, baseFeeScalar, blobBaseFeeScalar) _, costFunc, _, err := extractL1GasParams(config, 0, data) require.NoError(t, err) @@ -121,7 +121,7 @@ func TestFirstBlockEcotoneGasParams(t *testing.T) { } require.True(t, config.IsOptimismEcotone(0)) - data := getBedrockL1Attributes(basefee, overhead, scalar) + data := getBedrockL1Attributes(baseFee, overhead, scalar) _, oldCostFunc, _, err := extractL1GasParams(config, 0, data) require.NoError(t, err) @@ -129,14 +129,14 @@ func TestFirstBlockEcotoneGasParams(t *testing.T) { require.Equal(t, regolithFee, c) } -func getBedrockL1Attributes(basefee, overhead, scalar *big.Int) []byte { +func getBedrockL1Attributes(baseFee, overhead, scalar *big.Int) []byte { uint256 := make([]byte, 32) ignored := big.NewInt(1234) data := []byte{} data = append(data, BedrockL1AttributesSelector...) data = append(data, ignored.FillBytes(uint256)...) // arg 0 data = append(data, ignored.FillBytes(uint256)...) // arg 1 - data = append(data, basefee.FillBytes(uint256)...) // arg 2 + data = append(data, baseFee.FillBytes(uint256)...) // arg 2 data = append(data, ignored.FillBytes(uint256)...) // arg 3 data = append(data, ignored.FillBytes(uint256)...) // arg 4 data = append(data, ignored.FillBytes(uint256)...) // arg 5 @@ -145,45 +145,45 @@ func getBedrockL1Attributes(basefee, overhead, scalar *big.Int) []byte { return data } -func getEcotoneL1Attributes(basefee, blobBasefee, basefeeScalar, blobBasefeeScalar *big.Int) []byte { +func getEcotoneL1Attributes(baseFee, blobBaseFee, baseFeeScalar, blobBaseFeeScalar *big.Int) []byte { ignored := big.NewInt(1234) data := []byte{} uint256 := make([]byte, 32) uint64 := make([]byte, 8) uint32 := make([]byte, 4) data = append(data, EcotoneL1AttributesSelector...) - data = append(data, basefeeScalar.FillBytes(uint32)...) - data = append(data, blobBasefeeScalar.FillBytes(uint32)...) + data = append(data, baseFeeScalar.FillBytes(uint32)...) + data = append(data, blobBaseFeeScalar.FillBytes(uint32)...) data = append(data, ignored.FillBytes(uint64)...) data = append(data, ignored.FillBytes(uint64)...) data = append(data, ignored.FillBytes(uint64)...) - data = append(data, basefee.FillBytes(uint256)...) - data = append(data, blobBasefee.FillBytes(uint256)...) + data = append(data, baseFee.FillBytes(uint256)...) + data = append(data, blobBaseFee.FillBytes(uint256)...) data = append(data, ignored.FillBytes(uint256)...) data = append(data, ignored.FillBytes(uint256)...) return data } type testStateGetter struct { - basefee, blobBasefee, overhead, scalar *big.Int - basefeeScalar, blobBasefeeScalar uint32 + baseFee, blobBaseFee, overhead, scalar *big.Int + baseFeeScalar, blobBaseFeeScalar uint32 } func (sg *testStateGetter) GetState(addr common.Address, slot common.Hash) common.Hash { buf := common.Hash{} switch slot { - case L1BasefeeSlot: - sg.basefee.FillBytes(buf[:]) + case L1BaseFeeSlot: + sg.baseFee.FillBytes(buf[:]) case OverheadSlot: sg.overhead.FillBytes(buf[:]) case ScalarSlot: sg.scalar.FillBytes(buf[:]) - case L1BlobBasefeeSlot: - sg.blobBasefee.FillBytes(buf[:]) + case L1BlobBaseFeeSlot: + sg.blobBaseFee.FillBytes(buf[:]) case L1FeeScalarsSlot: offset := scalarSectionStart - binary.BigEndian.PutUint32(buf[offset:offset+4], sg.basefeeScalar) - binary.BigEndian.PutUint32(buf[offset+4:offset+8], sg.blobBasefeeScalar) + binary.BigEndian.PutUint32(buf[offset:offset+4], sg.baseFeeScalar) + binary.BigEndian.PutUint32(buf[offset+4:offset+8], sg.blobBaseFeeScalar) default: panic("unknown slot") } @@ -198,12 +198,12 @@ func TestNewL1CostFunc(t *testing.T) { Optimism: params.OptimismTestConfig.Optimism, } statedb := &testStateGetter{ - basefee: basefee, + baseFee: baseFee, overhead: overhead, scalar: scalar, - blobBasefee: blobBasefee, - basefeeScalar: uint32(basefeeScalar.Uint64()), - blobBasefeeScalar: uint32(blobBasefeeScalar.Uint64()), + blobBaseFee: blobBaseFee, + baseFeeScalar: uint32(baseFeeScalar.Uint64()), + blobBaseFeeScalar: uint32(blobBaseFeeScalar.Uint64()), } costFunc := NewL1CostFunc(config, statedb) @@ -235,9 +235,9 @@ func TestNewL1CostFunc(t *testing.T) { // emptyTx fee w/ ecotone config, but simulate first ecotone block by blowing away the ecotone // params. Should result in regolith fee. - statedb.basefeeScalar = 0 - statedb.blobBasefeeScalar = 0 - statedb.blobBasefee = new(big.Int) + statedb.baseFeeScalar = 0 + statedb.blobBaseFeeScalar = 0 + statedb.blobBaseFee = new(big.Int) costFunc = NewL1CostFunc(config, statedb) fee = costFunc(emptyTx.RollupCostData(), time) require.NotNil(t, fee) From c2d9dcd8e6fd30706f136a8ad419aea4a79d78d3 Mon Sep 17 00:00:00 2001 From: Michael de Hoog Date: Thu, 11 Jan 2024 07:28:29 -1000 Subject: [PATCH 169/223] Add log for ecotone time --- params/config.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/params/config.go b/params/config.go index 6c6e82e505..03c51dc59d 100644 --- a/params/config.go +++ b/params/config.go @@ -509,6 +509,9 @@ func (c *ChainConfig) Description() string { if c.CanyonTime != nil { banner += fmt.Sprintf(" - Canyon: @%-10v\n", *c.CanyonTime) } + if c.EcotoneTime != nil { + banner += fmt.Sprintf(" - Ecotone: @%-10v\n", *c.EcotoneTime) + } if c.InteropTime != nil { banner += fmt.Sprintf(" - Interop: @%-10v\n", *c.InteropTime) } From 29b173b8a12df79c0601e399f170adca40e8c795 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Thu, 11 Jan 2024 14:56:13 +0100 Subject: [PATCH 170/223] log: Add Handler getter to Logger interface --- internal/testlog/testlog.go | 4 ++++ log/logger.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/internal/testlog/testlog.go b/internal/testlog/testlog.go index 037b7ee9c1..3cdbea6e05 100644 --- a/internal/testlog/testlog.go +++ b/internal/testlog/testlog.go @@ -98,6 +98,10 @@ func LoggerWithHandler(t *testing.T, handler slog.Handler) log.Logger { } } +func (l *logger) Handler() slog.Handler { + return l.l.Handler() +} + func (l *logger) Write(level slog.Level, msg string, ctx ...interface{}) {} func (l *logger) Enabled(ctx context.Context, level slog.Level) bool { diff --git a/log/logger.go b/log/logger.go index 93d62f080b..20130146a5 100644 --- a/log/logger.go +++ b/log/logger.go @@ -137,6 +137,9 @@ type Logger interface { // Enabled reports whether l emits log records at the given context and level. Enabled(ctx context.Context, level slog.Level) bool + + // Handler returns the underlying handler of the inner logger. + Handler() slog.Handler } type logger struct { @@ -150,6 +153,10 @@ func NewLogger(h slog.Handler) Logger { } } +func (l *logger) Handler() slog.Handler { + return l.inner.Handler() +} + // write logs a message at the specified level: func (l *logger) Write(level slog.Level, msg string, attrs ...any) { if !l.inner.Enabled(context.Background(), level) { From fb9e95efd12f673e0839911f3ab93fdc12cae50b Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Mon, 15 Jan 2024 22:53:53 +0100 Subject: [PATCH 171/223] github: Remove go workflow --- .github/workflows/go.yml | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 .github/workflows/go.yml diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml deleted file mode 100644 index 7924c521e8..0000000000 --- a/.github/workflows/go.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: i386 linux tests - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - workflow_dispatch: - -jobs: - build: - runs-on: self-hosted - steps: - - uses: actions/checkout@v2 - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.21.4 - - name: Run tests - run: go test ./... - env: - GOOS: linux - GOARCH: 386 From 75ee01e842954cfacc19aff7061ece6960fd15a1 Mon Sep 17 00:00:00 2001 From: protolambda Date: Tue, 16 Jan 2024 18:55:52 -0500 Subject: [PATCH 172/223] ethapi: handle fee-scalar receipt attribute --- internal/ethapi/api.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index f75caa3caa..317bf9aa76 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -2031,7 +2031,9 @@ func marshalReceipt(receipt *types.Receipt, blockHash common.Hash, blockNumber u fields["l1GasPrice"] = (*hexutil.Big)(receipt.L1GasPrice) fields["l1GasUsed"] = (*hexutil.Big)(receipt.L1GasUsed) fields["l1Fee"] = (*hexutil.Big)(receipt.L1Fee) - fields["l1FeeScalar"] = receipt.FeeScalar.String() + if receipt.FeeScalar != nil { // removed in Ecotone + fields["l1FeeScalar"] = receipt.FeeScalar.String() + } } if chainConfig.Optimism != nil && tx.IsDepositTx() && receipt.DepositNonce != nil { fields["depositNonce"] = hexutil.Uint64(*receipt.DepositNonce) From ec72ec6a285e85761a21d6700af8c52513fed9eb Mon Sep 17 00:00:00 2001 From: protolambda Date: Mon, 22 Jan 2024 13:19:28 -0600 Subject: [PATCH 173/223] Snap Sync: consensus: handle legacy pre-bedrock header verification (#182) * consensus: handle legacy pre-bedrock header verification * consensus/beacon: Add parent hash check to OpLegacy.VerifyHeader VerifyHeaders will be dealt with in a follow-up. * optimism: fix historical-blocks chain-gen and TTD check --------- Co-authored-by: Sebastian Stammler --- consensus/beacon/consensus.go | 25 ++++++++++++ consensus/beacon/oplegacy.go | 74 +++++++++++++++++++++++++++++++++++ core/chain_makers.go | 2 +- core/types/receipt.go | 2 +- core/types/receipt_test.go | 14 +++++-- eth/ethconfig/config.go | 3 ++ ethclient/ethclient_test.go | 47 +++++++++++++--------- fork.yaml | 10 +++++ 8 files changed, 154 insertions(+), 23 deletions(-) create mode 100644 consensus/beacon/oplegacy.go diff --git a/consensus/beacon/consensus.go b/consensus/beacon/consensus.go index a7d0e58161..1db9d81a1d 100644 --- a/consensus/beacon/consensus.go +++ b/consensus/beacon/consensus.go @@ -58,6 +58,7 @@ var ( // is only used for necessary consensus checks. The legacy consensus engine can be any // engine implements the consensus interface (except the beacon itself). type Beacon struct { + // For migrated OP chains (OP mainnet, OP Goerli), ethone is a dummy legacy pre-Bedrock consensus ethone consensus.Engine // Original consensus engine used in eth1, e.g. ethash or clique } @@ -105,12 +106,27 @@ func errOut(n int, err error) chan error { return errs } +// OP-Stack Bedrock variant of splitHeaders: the total-terminal difficulty is terminated at bedrock transition, but also reset to 0. +// So just use the bedrock fork check to split the headers, to simplify the splitting. +// The returned slices are slices over the input. The input must be sorted. +func (beacon *Beacon) splitBedrockHeaders(chain consensus.ChainHeaderReader, headers []*types.Header) ([]*types.Header, []*types.Header, error) { + for i, h := range headers { + if chain.Config().IsBedrock(h.Number) { + return headers[:i], headers[i:], nil + } + } + return headers, nil, nil +} + // splitHeaders splits the provided header batch into two parts according to // the configured ttd. It requires the parent of header batch along with its // td are stored correctly in chain. If ttd is not configured yet, all headers // will be treated legacy PoW headers. // Note, this function will not verify the header validity but just split them. func (beacon *Beacon) splitHeaders(chain consensus.ChainHeaderReader, headers []*types.Header) ([]*types.Header, []*types.Header, error) { + if chain.Config().Optimism != nil { + return beacon.splitBedrockHeaders(chain, headers) + } // TTD is not defined yet, all headers should be in legacy format. ttd := chain.Config().TerminalTotalDifficulty if ttd == nil { @@ -446,6 +462,10 @@ func (beacon *Beacon) InnerEngine() consensus.Engine { return beacon.ethone } +func (beacon *Beacon) SwapInner(inner consensus.Engine) { + beacon.ethone = inner +} + // SetThreads updates the mining threads. Delegate the call // to the eth1 engine if it's threaded. func (beacon *Beacon) SetThreads(threads int) { @@ -461,6 +481,11 @@ func (beacon *Beacon) SetThreads(threads int) { // It depends on the parentHash already being stored in the database. // If the parentHash is not stored in the database a UnknownAncestor error is returned. func IsTTDReached(chain consensus.ChainHeaderReader, parentHash common.Hash, parentNumber uint64) (bool, error) { + if cfg := chain.Config(); cfg.Optimism != nil { + // If OP-Stack then bedrock activation number determines when TTD (eth Merge) has been reached. + // Note: some tests/utils will set parentNumber == max_uint64 as "parent" of the genesis block, this is fine. + return cfg.IsBedrock(new(big.Int).SetUint64(parentNumber + 1)), nil + } if chain.Config().TerminalTotalDifficulty == nil { return false, nil } diff --git a/consensus/beacon/oplegacy.go b/consensus/beacon/oplegacy.go new file mode 100644 index 0000000000..90d7e8678e --- /dev/null +++ b/consensus/beacon/oplegacy.go @@ -0,0 +1,74 @@ +package beacon + +import ( + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/rpc" +) + +type OpLegacy struct{} + +func (o *OpLegacy) Author(header *types.Header) (common.Address, error) { + return header.Coinbase, nil +} + +func (o *OpLegacy) VerifyHeader(chain consensus.ChainHeaderReader, header *types.Header) error { + // redundant check to guarantee DB consistency + parent := chain.GetHeader(header.ParentHash, header.Number.Uint64()-1) + if parent == nil { + return consensus.ErrUnknownAncestor + } + return nil // legacy chain is verified by block-hash reverse sync otherwise +} + +func (o *OpLegacy) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*types.Header) (chan<- struct{}, <-chan error) { + quit := make(chan struct{}, 1) + result := make(chan error, len(headers)) + for _, h := range headers { + result <- o.VerifyHeader(chain, h) + } + return quit, result +} + +func (o *OpLegacy) VerifyUncles(chain consensus.ChainReader, block *types.Block) error { + return nil +} + +func (o *OpLegacy) Prepare(chain consensus.ChainHeaderReader, header *types.Header) error { + return fmt.Errorf("cannot prepare for legacy block header: %s (num %d)", header.Hash(), header.Number) +} + +func (o *OpLegacy) Finalize(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, withdrawals []*types.Withdrawal) { + panic(fmt.Errorf("cannot finalize legacy block header: %s (num %d)", header.Hash(), header.Number)) +} + +func (o *OpLegacy) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts []*types.Receipt, withdrawals []*types.Withdrawal) (*types.Block, error) { + return nil, fmt.Errorf("cannot finalize and assemble for legacy block header: %s (num %d)", header.Hash(), header.Number) +} + +func (o *OpLegacy) Seal(chain consensus.ChainHeaderReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error { + return fmt.Errorf("cannot seal legacy block header: %s (num %d)", block.Hash(), block.Number()) +} + +func (o *OpLegacy) SealHash(header *types.Header) common.Hash { + panic(fmt.Errorf("cannot compute pow/poa seal-hash for legacy block header: %s (num %d)", header.Hash(), header.Number)) +} + +func (o *OpLegacy) CalcDifficulty(chain consensus.ChainHeaderReader, time uint64, parent *types.Header) *big.Int { + return big.NewInt(0) +} + +func (o *OpLegacy) APIs(chain consensus.ChainHeaderReader) []rpc.API { + return nil +} + +func (o *OpLegacy) Close() error { + return nil +} + +var _ consensus.Engine = (*OpLegacy)(nil) diff --git a/core/chain_makers.go b/core/chain_makers.go index 90b5b1fcee..22c837e84f 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -319,7 +319,7 @@ func GenerateChain(config *params.ChainConfig, parent *types.Block, engine conse // to a chain, so the difficulty will be left unset (nil). Set it here to the // correct value. if b.header.Difficulty == nil { - if config.TerminalTotalDifficulty == nil { + if config.TerminalTotalDifficulty == nil && !config.IsOptimismBedrock(b.header.Number) { // Clique chain b.header.Difficulty = big.NewInt(2) } else { diff --git a/core/types/receipt.go b/core/types/receipt.go index edd90d9ab2..1b7d03459a 100644 --- a/core/types/receipt.go +++ b/core/types/receipt.go @@ -569,7 +569,7 @@ func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, nu logIndex++ } } - if config.Optimism != nil && len(txs) >= 2 { // need at least an info tx and a non-info tx + if config.Optimism != nil && len(txs) >= 2 && config.IsBedrock(new(big.Int).SetUint64(number)) { // need at least an info tx and a non-info tx l1BaseFee, costFunc, feeScalar, err := extractL1GasParams(config, time, txs[0].Data()) if err != nil { return err diff --git a/core/types/receipt_test.go b/core/types/receipt_test.go index 5f6a125636..8eaae91057 100644 --- a/core/types/receipt_test.go +++ b/core/types/receipt_test.go @@ -34,8 +34,16 @@ import ( ) var ( + bedrockGenesisTestConfig = func() *params.ChainConfig { + conf := *params.AllCliqueProtocolChanges // copy the config + conf.Clique = nil + conf.TerminalTotalDifficultyPassed = true + conf.BedrockBlock = big.NewInt(0) + conf.Optimism = ¶ms.OptimismConfig{EIP1559Elasticity: 50, EIP1559Denominator: 10} + return &conf + }() ecotoneTestConfig = func() *params.ChainConfig { - conf := *params.OptimismTestConfig // copy the config + conf := *bedrockGenesisTestConfig // copy the config time := uint64(0) conf.EcotoneTime = &time return &conf @@ -774,7 +782,7 @@ func TestDeriveOptimismBedrockTxReceipts(t *testing.T) { // Re-derive receipts. baseFee := big.NewInt(1000) derivedReceipts := clearComputedFieldsOnReceipts(receipts) - err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) + err := Receipts(derivedReceipts).DeriveFields(bedrockGenesisTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) if err != nil { t.Fatalf("DeriveFields(...) = %v, want ", err) } @@ -802,7 +810,7 @@ func TestDeriveOptimismEcotoneTxReceipts(t *testing.T) { baseFee := big.NewInt(1000) derivedReceipts := clearComputedFieldsOnReceipts(receipts) // Should error out if we try to process this with a pre-Ecotone config - err := Receipts(derivedReceipts).DeriveFields(params.OptimismTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) + err := Receipts(derivedReceipts).DeriveFields(bedrockGenesisTestConfig, blockHash, blockNumber.Uint64(), 0, baseFee, nil, txs) if err == nil { t.Fatalf("expected error from deriving ecotone receipts with pre-ecotone config, got none") } diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index ff164ed841..9b2edec62e 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -190,6 +190,9 @@ type Config struct { // Clique is allowed for now to live standalone, but ethash is forbidden and can // only exist on already merged networks. func CreateConsensusEngine(config *params.ChainConfig, db ethdb.Database) (consensus.Engine, error) { + if config.Optimism != nil { + return beacon.New(&beacon.OpLegacy{}), nil + } // If proof-of-authority is requested, set it up if config.Clique != nil { return beacon.New(clique.New(config.Clique, db)), nil diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index c2b8748110..2b6f19f447 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -29,6 +29,8 @@ import ( "time" "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum" @@ -286,8 +288,21 @@ func newMockHistoricalBackend(t *testing.T) string { func newTestBackend(t *testing.T, enableHistoricalState bool) (*node.Node, []*types.Block) { histAddr := newMockHistoricalBackend(t) - // Generate test chain. - blocks := generateTestChain(enableHistoricalState) + var consensusEngine consensus.Engine + var actualGenesis *core.Genesis + var chainLength int + if enableHistoricalState { + actualGenesis = genesisForHistorical + consensusEngine = beacon.New(ethash.NewFaker()) + chainLength = 10 + } else { + actualGenesis = genesis + consensusEngine = ethash.NewFaker() + chainLength = 2 + } + + // Generate test chain + blocks := generateTestChain(consensusEngine, actualGenesis, chainLength) // Create node n, err := node.New(&node.Config{}) @@ -295,12 +310,6 @@ func newTestBackend(t *testing.T, enableHistoricalState bool) (*node.Node, []*ty t.Fatalf("can't create new node: %v", err) } // Create Ethereum Service - var actualGenesis *core.Genesis - if enableHistoricalState { - actualGenesis = genesisForHistorical - } else { - actualGenesis = genesis - } config := ðconfig.Config{Genesis: actualGenesis} if enableHistoricalState { config.RollupHistoricalRPC = histAddr @@ -310,6 +319,9 @@ func newTestBackend(t *testing.T, enableHistoricalState bool) (*node.Node, []*ty if err != nil { t.Fatalf("can't create new ethereum service: %v", err) } + if enableHistoricalState { // swap to the pre-bedrock consensus-engine that we used to generate the historical blocks + ethservice.BlockChain().Engine().(*beacon.Beacon).SwapInner(ethash.NewFaker()) + } // Import the test chain. if err := n.Start(); err != nil { t.Fatalf("can't start test node: %v", err) @@ -317,30 +329,29 @@ func newTestBackend(t *testing.T, enableHistoricalState bool) (*node.Node, []*ty if _, err := ethservice.BlockChain().InsertChain(blocks[1:]); err != nil { t.Fatalf("can't import test blocks: %v", err) } + if enableHistoricalState { + // Now that we have a filled DB, swap the pre-Bedrock consensus to OpLegacy, + // which does not support re-processing of pre-bedrock data. + ethservice.Engine().(*beacon.Beacon).SwapInner(&beacon.OpLegacy{}) + } return n, blocks } -func generateTestChain(enableHistoricalState bool) []*types.Block { +func generateTestChain(consensusEngine consensus.Engine, genesis *core.Genesis, length int) []*types.Block { generate := func(i int, g *core.BlockGen) { g.OffsetTime(5) g.SetExtra([]byte("test")) if i == 1 { // Test transactions are included in block #2. - if enableHistoricalState { + if genesis.Config.Optimism != nil && genesis.Config.IsBedrock(big.NewInt(1)) { g.AddTx(depositTx) } g.AddTx(testTx1) g.AddTx(testTx2) } } - var actualGenesis *core.Genesis - if enableHistoricalState { - actualGenesis = genesisForHistorical - } else { - actualGenesis = genesis - } - _, blocks, _ := core.GenerateChainWithGenesis(actualGenesis, ethash.NewFaker(), 2, generate) - return append([]*types.Block{actualGenesis.ToBlock()}, blocks...) + _, blocks, _ := core.GenerateChainWithGenesis(genesis, consensusEngine, length, generate) + return append([]*types.Block{genesis.ToBlock()}, blocks...) } func TestEthClientHistoricalBackend(t *testing.T) { diff --git a/fork.yaml b/fork.yaml index eb697a7ae8..a60ae411a0 100644 --- a/fork.yaml +++ b/fork.yaml @@ -80,8 +80,18 @@ def: description: | The Engine API is activated at the Merge transition, with a Total Terminal Difficulty (TTD). The rollup starts post-merge, and thus sets the TTD to 0. + The TTD is always "reached" starting at the bedrock block. globs: - "consensus/beacon/consensus.go" + - title: "Legacy OP-mainnet / OP-goerli header-verification support" + description: | + Pre-Bedrock OP-mainnet and OP-Goerli had differently formatted block-headers, loosely compatible with the geth types (since it was based on Clique). + However, due to differences like the extra-data length (97+ bytes), these legacy block-headers need special verification. + The pre-merge "consensus" fallback is set to this custom but basic verifier, to accept these headers when syncing a pre-bedrock part of the chain, + independent of any clique code or configuration (which may be removed from geth at a later point). + All the custom verifier has to do is accept the headers, as the headers are already verified by block-hash through the reverse-header-sync. + globs: + - "consensus/beacon/oplegacy.go" - title: "Engine API modifications" description: | The Engine API is extended to insert transactions into the block and optionally exclude the tx-pool, From 396bfc4a2369005f237bc6a4c4c782fe59bf876d Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 23 Jan 2024 19:44:09 +0100 Subject: [PATCH 174/223] params: Increment supported protocol version (Ecotone rc) --- params/superchain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params/superchain.go b/params/superchain.go index a2603987da..cb64f0d46f 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -11,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" ) -var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 5, Minor: 0, Patch: 0, PreRelease: 1}.Encode() +var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 6, Minor: 0, Patch: 0, PreRelease: 1}.Encode() func init() { for id, ch := range superchain.OPChains { From fe5a2b49c35f907fd6841d293d82858bde76cdf3 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 23 Jan 2024 20:57:58 +0100 Subject: [PATCH 175/223] go: Update superchain-registry to include goerli-dev-0 Ecotone --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a89da3df66..e8497fa611 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753 + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240123193359-a5fc767e225a github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index e213a408d5..5209719ea5 100644 --- a/go.sum +++ b/go.sum @@ -181,8 +181,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753 h1:DL667cfM6peU8H9Ut/uu9h9Bd4gQCcJrjq+yYsfYwjk= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240103191009-655947053753/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240123193359-a5fc767e225a h1:mWIRpGyrAlWHUznUHKgAJUafkNGfO7VmeLjilhVhB80= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240123193359-a5fc767e225a/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= From 66871248615c6c6857ee1d0578c6b901b3bfabd9 Mon Sep 17 00:00:00 2001 From: Felipe Andrade Date: Tue, 23 Jan 2024 14:39:52 -0800 Subject: [PATCH 176/223] fix: ledger hardware wallet support on mac --- accounts/usbwallet/hub.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/accounts/usbwallet/hub.go b/accounts/usbwallet/hub.go index e67942dbc1..0682310867 100644 --- a/accounts/usbwallet/hub.go +++ b/accounts/usbwallet/hub.go @@ -23,6 +23,8 @@ import ( "sync/atomic" "time" + "golang.org/x/exp/slices" + "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/log" @@ -48,7 +50,7 @@ type Hub struct { scheme string // Protocol scheme prefixing account and wallet URLs. vendorID uint16 // USB vendor identifier used for device discovery productIDs []uint16 // USB product identifiers used for device discovery - usageID uint16 // USB usage page identifier used for macOS device discovery + usageIDs []uint16 // USB usage page identifier used for macOS device discovery endpointID int // USB endpoint identifier used for non-macOS device discovery makeDriver func(log.Logger) driver // Factory method to construct a vendor specific driver @@ -93,22 +95,22 @@ func NewLedgerHub() (*Hub, error) { 0x4011, /* HID + WebUSB Ledger Nano X */ 0x5011, /* HID + WebUSB Ledger Nano S Plus */ 0x6011, /* HID + WebUSB Ledger Nano FTS */ - }, 0xffa0, 0, newLedgerDriver) + }, []uint16{0xffa0, 0}, 2, newLedgerDriver) } // NewTrezorHubWithHID creates a new hardware wallet manager for Trezor devices. func NewTrezorHubWithHID() (*Hub, error) { - return newHub(TrezorScheme, 0x534c, []uint16{0x0001 /* Trezor HID */}, 0xff00, 0, newTrezorDriver) + return newHub(TrezorScheme, 0x534c, []uint16{0x0001 /* Trezor HID */}, []uint16{0xff00}, 0, newTrezorDriver) } // NewTrezorHubWithWebUSB creates a new hardware wallet manager for Trezor devices with // firmware version > 1.8.0 func NewTrezorHubWithWebUSB() (*Hub, error) { - return newHub(TrezorScheme, 0x1209, []uint16{0x53c1 /* Trezor WebUSB */}, 0xffff /* No usage id on webusb, don't match unset (0) */, 0, newTrezorDriver) + return newHub(TrezorScheme, 0x1209, []uint16{0x53c1 /* Trezor WebUSB */}, []uint16{0xffff} /* No usage id on webusb, don't match unset (0) */, 0, newTrezorDriver) } // newHub creates a new hardware wallet manager for generic USB devices. -func newHub(scheme string, vendorID uint16, productIDs []uint16, usageID uint16, endpointID int, makeDriver func(log.Logger) driver) (*Hub, error) { +func newHub(scheme string, vendorID uint16, productIDs []uint16, usageIDs []uint16, endpointID int, makeDriver func(log.Logger) driver) (*Hub, error) { if !usb.Supported() { return nil, errors.New("unsupported platform") } @@ -116,7 +118,7 @@ func newHub(scheme string, vendorID uint16, productIDs []uint16, usageID uint16, scheme: scheme, vendorID: vendorID, productIDs: productIDs, - usageID: usageID, + usageIDs: usageIDs, endpointID: endpointID, makeDriver: makeDriver, quit: make(chan chan error), @@ -186,7 +188,9 @@ func (hub *Hub) refreshWallets() { for _, info := range infos { for _, id := range hub.productIDs { // Windows and Macos use UsageID matching, Linux uses Interface matching - if info.ProductID == id && (info.UsagePage == hub.usageID || info.Interface == hub.endpointID) { + if info.ProductID == id && + info.Path != "" && + (slices.Contains(hub.usageIDs, info.UsagePage) || info.Interface == hub.endpointID) { devices = append(devices, info) break } From 7f23da6c0286d1f9a9ee336108be548031f78f19 Mon Sep 17 00:00:00 2001 From: Felipe Andrade Date: Tue, 23 Jan 2024 17:35:30 -0800 Subject: [PATCH 177/223] add fork.yaml --- fork.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fork.yaml b/fork.yaml index a60ae411a0..615addc03a 100644 --- a/fork.yaml +++ b/fork.yaml @@ -246,6 +246,13 @@ def: - title: Simulated Backend globs: - "accounts/abi/bind/backends/simulated.go" + - title: "Hardware wallet support" + description: Extend Ledger wallet support for newer devices on Macos + sub: + - title: Fix Ledger discoverability + # upstream PR: https://github.com/ethereum/go-ethereum/pull/28863/ + globs: + - "accounts/usbwallet/hub.go" # ignored globally, does not count towards line count ignore: From 288b43d1c5dce5f46503977be11782498555922d Mon Sep 17 00:00:00 2001 From: protolambda Date: Wed, 24 Jan 2024 15:59:45 -0600 Subject: [PATCH 178/223] core/types: SetBlobTxSidecar to support blob tx tooling --- core/types/transaction.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/types/transaction.go b/core/types/transaction.go index d6eb0ad9a9..e8048e5a9a 100644 --- a/core/types/transaction.go +++ b/core/types/transaction.go @@ -19,6 +19,7 @@ package types import ( "bytes" "errors" + "fmt" "io" "math/big" "sync/atomic" @@ -482,6 +483,18 @@ func (tx *Transaction) BlobTxSidecar() *BlobTxSidecar { return nil } +// SetBlobTxSidecar sets the sidecar of a transaction. +// The sidecar should match the blob-tx versioned hashes, or the transaction will be invalid. +// This allows tools to easily re-attach blob sidecars to signed transactions that omit the sidecar. +func (tx *Transaction) SetBlobTxSidecar(sidecar *BlobTxSidecar) error { + blobtx, ok := tx.inner.(*BlobTx) + if !ok { + return fmt.Errorf("not a blob tx, type = %d", tx.Type()) + } + blobtx.Sidecar = sidecar + return nil +} + // BlobGasFeeCapCmp compares the blob fee cap of two transactions. func (tx *Transaction) BlobGasFeeCapCmp(other *Transaction) int { return tx.BlobGasFeeCap().Cmp(other.BlobGasFeeCap()) From c8a137c4659dc9d0dd97a0998b944e71b11cd30b Mon Sep 17 00:00:00 2001 From: Roberto Bayardo Date: Thu, 25 Jan 2024 08:29:06 -0800 Subject: [PATCH 179/223] update transaction_args to latest for blob support --- internal/ethapi/transaction_args.go | 116 +++++++++++++++++--- internal/ethapi/transaction_args_test.go | 129 +++++++++++++++++------ 2 files changed, 196 insertions(+), 49 deletions(-) diff --git a/internal/ethapi/transaction_args.go b/internal/ethapi/transaction_args.go index e4cf81a3f4..75dbe38a59 100644 --- a/internal/ethapi/transaction_args.go +++ b/internal/ethapi/transaction_args.go @@ -26,10 +26,12 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/consensus/misc/eip4844" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rpc" + "github.com/holiman/uint256" ) // TransactionArgs represents the arguments to construct a new transaction @@ -53,6 +55,10 @@ type TransactionArgs struct { // Introduced by AccessListTxType transaction. AccessList *types.AccessList `json:"accessList,omitempty"` ChainID *hexutil.Big `json:"chainId,omitempty"` + + // Introduced by EIP-4844. + BlobFeeCap *hexutil.Big `json:"maxFeePerBlobGas"` + BlobHashes []common.Hash `json:"blobVersionedHashes,omitempty"` } // from retrieves the transaction sender address. @@ -92,6 +98,12 @@ func (args *TransactionArgs) setDefaults(ctx context.Context, b Backend) error { if args.Data != nil && args.Input != nil && !bytes.Equal(*args.Data, *args.Input) { return errors.New(`both "data" and "input" are set and not equal. Please use "input" to pass transaction call data`) } + if args.BlobHashes != nil && args.To == nil { + return errors.New(`blob transactions cannot have the form of a create transaction`) + } + if args.BlobHashes != nil && len(args.BlobHashes) == 0 { + return errors.New(`need at least 1 blob for a blob transaction`) + } if args.To == nil && len(args.data()) == 0 { return errors.New(`contract creation without any data provided`) } @@ -110,8 +122,8 @@ func (args *TransactionArgs) setDefaults(ctx context.Context, b Backend) error { Data: (*hexutil.Bytes)(&data), AccessList: args.AccessList, } - pendingBlockNr := rpc.BlockNumberOrHashWithNumber(rpc.PendingBlockNumber) - estimated, err := DoEstimateGas(ctx, b, callArgs, pendingBlockNr, nil, b.RPCGasCap()) + latestBlockNr := rpc.BlockNumberOrHashWithNumber(rpc.LatestBlockNumber) + estimated, err := DoEstimateGas(ctx, b, callArgs, latestBlockNr, nil, b.RPCGasCap()) if err != nil { return err } @@ -137,27 +149,53 @@ func (args *TransactionArgs) setFeeDefaults(ctx context.Context, b Backend) erro if args.GasPrice != nil && (args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil) { return errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified") } - // If the tx has completely specified a fee mechanism, no default is needed. This allows users - // who are not yet synced past London to get defaults for other tx values. See - // https://github.com/ethereum/go-ethereum/pull/23274 for more information. + // If the tx has completely specified a fee mechanism, no default is needed. + // This allows users who are not yet synced past London to get defaults for + // other tx values. See https://github.com/ethereum/go-ethereum/pull/23274 + // for more information. eip1559ParamsSet := args.MaxFeePerGas != nil && args.MaxPriorityFeePerGas != nil - if (args.GasPrice != nil && !eip1559ParamsSet) || (args.GasPrice == nil && eip1559ParamsSet) { - // Sanity check the EIP-1559 fee parameters if present. - if args.GasPrice == nil && args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { + + // Sanity check the EIP-1559 fee parameters if present. + if args.GasPrice == nil && eip1559ParamsSet { + if args.MaxFeePerGas.ToInt().Sign() == 0 { + return errors.New("maxFeePerGas must be non-zero") + } + if args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { return fmt.Errorf("maxFeePerGas (%v) < maxPriorityFeePerGas (%v)", args.MaxFeePerGas, args.MaxPriorityFeePerGas) } - return nil + return nil // No need to set anything, user already set MaxFeePerGas and MaxPriorityFeePerGas } - // Now attempt to fill in default value depending on whether London is active or not. + // Sanity check the EIP-4844 fee parameters. + if args.BlobFeeCap != nil && args.BlobFeeCap.ToInt().Sign() == 0 { + return errors.New("maxFeePerBlobGas must be non-zero") + } + // Sanity check the non-EIP-1559 fee parameters. head := b.CurrentHeader() - if b.ChainConfig().IsLondon(head.Number) { + isLondon := b.ChainConfig().IsLondon(head.Number) + if args.GasPrice != nil && !eip1559ParamsSet { + // Zero gas-price is not allowed after London fork + if args.GasPrice.ToInt().Sign() == 0 && isLondon { + return errors.New("gasPrice must be non-zero after london fork") + } + return nil // No need to set anything, user already set GasPrice + } + + // Now attempt to fill in default value depending on whether London is active or not. + if b.ChainConfig().IsCancun(head.Number, head.Time) { + if err := args.setCancunFeeDefaults(ctx, head, b); err != nil { + return err + } + } else if isLondon { + if args.BlobFeeCap != nil { + return errors.New("maxFeePerBlobGas is not valid before Cancun is active") + } // London is active, set maxPriorityFeePerGas and maxFeePerGas. if err := args.setLondonFeeDefaults(ctx, head, b); err != nil { return err } } else { - if args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil { - return errors.New("maxFeePerGas and maxPriorityFeePerGas are not valid before London is active") + if args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil || args.BlobFeeCap != nil { + return errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active") } // London not active, set gas price. price, err := b.SuggestGasTipCap(ctx) @@ -169,6 +207,21 @@ func (args *TransactionArgs) setFeeDefaults(ctx context.Context, b Backend) erro return nil } +// setCancunFeeDefaults fills in reasonable default fee values for unspecified fields. +func (args *TransactionArgs) setCancunFeeDefaults(ctx context.Context, head *types.Header, b Backend) error { + // Set maxFeePerBlobGas if it is missing. + if args.BlobHashes != nil && args.BlobFeeCap == nil { + // ExcessBlobGas must be set for a Cancun block. + blobBaseFee := eip4844.CalcBlobFee(*head.ExcessBlobGas) + // Set the max fee to be 2 times larger than the previous block's blob base fee. + // The additional slack allows the tx to not become invalidated if the base + // fee is rising. + val := new(big.Int).Mul(blobBaseFee, big.NewInt(2)) + args.BlobFeeCap = (*hexutil.Big)(val) + } + return args.setLondonFeeDefaults(ctx, head, b) +} + // setLondonFeeDefaults fills in reasonable default fee values for unspecified fields. func (args *TransactionArgs) setLondonFeeDefaults(ctx context.Context, head *types.Header, b Backend) error { // Set maxPriorityFeePerGas if it is missing. @@ -221,9 +274,10 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* gas = globalGasCap } var ( - gasPrice *big.Int - gasFeeCap *big.Int - gasTipCap *big.Int + gasPrice *big.Int + gasFeeCap *big.Int + gasTipCap *big.Int + blobFeeCap *big.Int ) if baseFee == nil { // If there's no basefee, then it must be a non-1559 execution @@ -255,6 +309,11 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* } } } + if args.BlobFeeCap != nil { + blobFeeCap = args.BlobFeeCap.ToInt() + } else if args.BlobHashes != nil { + blobFeeCap = new(big.Int) + } value := new(big.Int) if args.Value != nil { value = args.Value.ToInt() @@ -274,6 +333,8 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* GasTipCap: gasTipCap, Data: data, AccessList: accessList, + BlobGasFeeCap: blobFeeCap, + BlobHashes: args.BlobHashes, SkipAccountChecks: true, } return msg, nil @@ -284,6 +345,24 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* func (args *TransactionArgs) toTransaction() *types.Transaction { var data types.TxData switch { + case args.BlobHashes != nil: + al := types.AccessList{} + if args.AccessList != nil { + al = *args.AccessList + } + data = &types.BlobTx{ + To: *args.To, + ChainID: uint256.MustFromBig((*big.Int)(args.ChainID)), + Nonce: uint64(*args.Nonce), + Gas: uint64(*args.Gas), + GasFeeCap: uint256.MustFromBig((*big.Int)(args.MaxFeePerGas)), + GasTipCap: uint256.MustFromBig((*big.Int)(args.MaxPriorityFeePerGas)), + Value: uint256.MustFromBig((*big.Int)(args.Value)), + Data: args.data(), + AccessList: al, + BlobHashes: args.BlobHashes, + BlobFeeCap: uint256.MustFromBig((*big.Int)(args.BlobFeeCap)), + } case args.MaxFeePerGas != nil: al := types.AccessList{} if args.AccessList != nil { @@ -329,3 +408,8 @@ func (args *TransactionArgs) toTransaction() *types.Transaction { func (args *TransactionArgs) ToTransaction() *types.Transaction { return args.toTransaction() } + +// IsEIP4844 returns an indicator if the args contains EIP4844 fields. +func (args *TransactionArgs) IsEIP4844() bool { + return args.BlobHashes != nil || args.BlobFeeCap != nil +} diff --git a/internal/ethapi/transaction_args_test.go b/internal/ethapi/transaction_args_test.go index b743064625..e16477dc00 100644 --- a/internal/ethapi/transaction_args_test.go +++ b/internal/ethapi/transaction_args_test.go @@ -43,15 +43,16 @@ import ( // TestSetFeeDefaults tests the logic for filling in default fee values works as expected. func TestSetFeeDefaults(t *testing.T) { type test struct { - name string - isLondon bool - in *TransactionArgs - want *TransactionArgs - err error + name string + fork string // options: legacy, london, cancun + in *TransactionArgs + want *TransactionArgs + err error } var ( b = newBackendMock() + zero = (*hexutil.Big)(big.NewInt(0)) fortytwo = (*hexutil.Big)(big.NewInt(42)) maxFee = (*hexutil.Big)(new(big.Int).Add(new(big.Int).Mul(b.current.BaseFee, big.NewInt(2)), fortytwo.ToInt())) al = &types.AccessList{types.AccessTuple{Address: common.Address{0xaa}, StorageKeys: []common.Hash{{0x01}}}} @@ -61,51 +62,65 @@ func TestSetFeeDefaults(t *testing.T) { // Legacy txs { "legacy tx pre-London", - false, + "legacy", &TransactionArgs{}, &TransactionArgs{GasPrice: fortytwo}, nil, }, + { + "legacy tx pre-London with zero price", + "legacy", + &TransactionArgs{GasPrice: zero}, + &TransactionArgs{GasPrice: zero}, + nil, + }, { "legacy tx post-London, explicit gas price", - true, + "london", &TransactionArgs{GasPrice: fortytwo}, &TransactionArgs{GasPrice: fortytwo}, nil, }, + { + "legacy tx post-London with zero price", + "london", + &TransactionArgs{GasPrice: zero}, + nil, + errors.New("gasPrice must be non-zero after london fork"), + }, // Access list txs { "access list tx pre-London", - false, + "legacy", &TransactionArgs{AccessList: al}, &TransactionArgs{AccessList: al, GasPrice: fortytwo}, nil, }, { "access list tx post-London, explicit gas price", - false, + "legacy", &TransactionArgs{AccessList: al, GasPrice: fortytwo}, &TransactionArgs{AccessList: al, GasPrice: fortytwo}, nil, }, { "access list tx post-London", - true, + "london", &TransactionArgs{AccessList: al}, &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, nil, }, { "access list tx post-London, only max fee", - true, + "london", &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee}, &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, nil, }, { "access list tx post-London, only priority fee", - true, + "london", &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee}, &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, nil, @@ -114,84 +129,118 @@ func TestSetFeeDefaults(t *testing.T) { // Dynamic fee txs { "dynamic tx post-London", - true, + "london", &TransactionArgs{}, &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, nil, }, { "dynamic tx post-London, only max fee", - true, + "london", &TransactionArgs{MaxFeePerGas: maxFee}, &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, nil, }, { "dynamic tx post-London, only priority fee", - true, + "london", &TransactionArgs{MaxFeePerGas: maxFee}, &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, nil, }, { "dynamic fee tx pre-London, maxFee set", - false, + "legacy", &TransactionArgs{MaxFeePerGas: maxFee}, nil, - errors.New("maxFeePerGas and maxPriorityFeePerGas are not valid before London is active"), + errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active"), }, { "dynamic fee tx pre-London, priorityFee set", - false, + "legacy", &TransactionArgs{MaxPriorityFeePerGas: fortytwo}, nil, - errors.New("maxFeePerGas and maxPriorityFeePerGas are not valid before London is active"), + errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active"), }, { "dynamic fee tx, maxFee < priorityFee", - true, + "london", &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: (*hexutil.Big)(big.NewInt(1000))}, nil, errors.New("maxFeePerGas (0x3e) < maxPriorityFeePerGas (0x3e8)"), }, { "dynamic fee tx, maxFee < priorityFee while setting default", - true, + "london", &TransactionArgs{MaxFeePerGas: (*hexutil.Big)(big.NewInt(7))}, nil, errors.New("maxFeePerGas (0x7) < maxPriorityFeePerGas (0x2a)"), }, + { + "dynamic fee tx post-London, explicit gas price", + "london", + &TransactionArgs{MaxFeePerGas: zero, MaxPriorityFeePerGas: zero}, + nil, + errors.New("maxFeePerGas must be non-zero"), + }, // Misc { "set all fee parameters", - false, + "legacy", &TransactionArgs{GasPrice: fortytwo, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, nil, errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), }, { "set gas price and maxPriorityFee", - false, + "legacy", &TransactionArgs{GasPrice: fortytwo, MaxPriorityFeePerGas: fortytwo}, nil, errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), }, { "set gas price and maxFee", - true, + "london", &TransactionArgs{GasPrice: fortytwo, MaxFeePerGas: maxFee}, nil, errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), }, + // EIP-4844 + { + "set maxFeePerBlobGas pre cancun", + "london", + &TransactionArgs{BlobFeeCap: fortytwo}, + nil, + errors.New("maxFeePerBlobGas is not valid before Cancun is active"), + }, + { + "set maxFeePerBlobGas pre london", + "legacy", + &TransactionArgs{BlobFeeCap: fortytwo}, + nil, + errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active"), + }, + { + "set gas price and maxFee for blob transaction", + "cancun", + &TransactionArgs{GasPrice: fortytwo, MaxFeePerGas: maxFee, BlobHashes: []common.Hash{}}, + nil, + errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), + }, + { + "fill maxFeePerBlobGas", + "cancun", + &TransactionArgs{BlobHashes: []common.Hash{}}, + &TransactionArgs{BlobHashes: []common.Hash{}, BlobFeeCap: (*hexutil.Big)(big.NewInt(4)), MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, + nil, + }, } ctx := context.Background() for i, test := range tests { - if test.isLondon { - b.activateLondon() - } else { - b.deactivateLondon() + if err := b.setFork(test.fork); err != nil { + t.Fatalf("failed to set fork: %v", err) } got := test.in err := got.setFeeDefaults(ctx, b) @@ -213,6 +262,7 @@ type backendMock struct { } func newBackendMock() *backendMock { + var cancunTime uint64 = 600 config := ¶ms.ChainConfig{ ChainID: big.NewInt(42), HomesteadBlock: big.NewInt(0), @@ -228,6 +278,7 @@ func newBackendMock() *backendMock { MuirGlacierBlock: big.NewInt(0), BerlinBlock: big.NewInt(0), LondonBlock: big.NewInt(1000), + CancunTime: &cancunTime, } return &backendMock{ current: &types.Header{ @@ -243,13 +294,25 @@ func newBackendMock() *backendMock { } } -func (b *backendMock) activateLondon() { - b.current.Number = big.NewInt(1100) +func (b *backendMock) setFork(fork string) error { + if fork == "legacy" { + b.current.Number = big.NewInt(900) + b.current.Time = 555 + } else if fork == "london" { + b.current.Number = big.NewInt(1100) + b.current.Time = 555 + } else if fork == "cancun" { + b.current.Number = big.NewInt(1100) + b.current.Time = 700 + // Blob base fee will be 2 + excess := uint64(2314058) + b.current.ExcessBlobGas = &excess + } else { + return errors.New("invalid fork") + } + return nil } -func (b *backendMock) deactivateLondon() { - b.current.Number = big.NewInt(900) -} func (b *backendMock) SuggestGasTipCap(ctx context.Context) (*big.Int, error) { return big.NewInt(42), nil } From 298900cf96512f9b4c3893e607b338112d62f7d1 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Fri, 26 Jan 2024 16:55:40 +0100 Subject: [PATCH 180/223] core/state: Add StateDB.OpenStorageTrie --- core/state/statedb.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/state/statedb.go b/core/state/statedb.go index 905944cbb5..cd61b07297 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -1388,6 +1388,12 @@ func (s *StateDB) convertAccountSet(set map[common.Address]*types.StateAccount) return ret } +// OpenStorageTrie opens the storage trie for the storage root of the provided address. +func (s *StateDB) OpenStorageTrie(addr common.Address) (Trie, error) { + storageRoot := s.GetStorageRoot(addr) + return s.db.OpenStorageTrie(s.originalRoot, addr, storageRoot, s.trie) +} + // copySet returns a deep-copied set. func copySet[k comparable](set map[k][]byte) map[k][]byte { copied := make(map[k][]byte, len(set)) From d35dd231805c4c05bef761c3403f2ee2a71dc275 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 30 Jan 2024 01:19:41 +0100 Subject: [PATCH 181/223] Bump superchain dependency to contain sepolia-dev-0 Ecotone activation --- go.mod | 24 ++++++++++++---------- go.sum | 49 +++++++++++++++++++++++++++----------------- params/superchain.go | 2 +- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/go.mod b/go.mod index e8497fa611..4da129939c 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/ethereum/go-ethereum -go 1.20 +go 1.21 + +toolchain go1.21.6 require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 @@ -20,7 +22,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240123193359-a5fc767e225a + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240129235549-0a582d7654ee github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e @@ -64,13 +66,13 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 github.com/urfave/cli/v2 v2.25.7 go.uber.org/automaxprocs v1.5.2 - golang.org/x/crypto v0.14.0 - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 - golang.org/x/sync v0.3.0 - golang.org/x/sys v0.13.0 - golang.org/x/text v0.13.0 + golang.org/x/crypto v0.18.0 + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa + golang.org/x/sync v0.5.0 + golang.org/x/sys v0.16.0 + golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 - golang.org/x/tools v0.13.0 + golang.org/x/tools v0.15.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -132,14 +134,14 @@ require ( github.com/prometheus/common v0.32.1 // indirect github.com/prometheus/procfs v0.7.3 // indirect github.com/rivo/uniseg v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/stretchr/objx v0.5.0 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.17.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.18.0 // indirect google.golang.org/protobuf v1.27.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect diff --git a/go.sum b/go.sum index 5209719ea5..46d731cb5b 100644 --- a/go.sum +++ b/go.sum @@ -35,14 +35,18 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOv github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 h1:8q4SaHjFsClSvuVne0ID/5Ka8u3fcIHyqkLjcFpNRHQ= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0 h1:Ma67P/GGprNwsslzEH6+Kb8nybI8jpDTm4Wmzu2ReK8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0/go.mod h1:c+Lifp3EDEamAkPVzMooRNOK6CZjNSdEnf1A7jsI9u4= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 h1:gggzg0SUMs6SQbEw+3LoSsYf9YMjkupeAnHMX8O9mmY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4= github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= @@ -102,6 +106,7 @@ github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= @@ -121,6 +126,7 @@ github.com/cloudflare/cloudflare-go v0.79.0/go.mod h1:gkHQf9xEubaQPEuerBuoinR9P8 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= github.com/cockroachdb/errors v1.8.1 h1:A5+txlVZfOqFBDa4mGz2bUWSp0aHElvHX2bKkdbQu+Y= github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= @@ -169,6 +175,7 @@ github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwu github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 h1:qwcF+vdFrvPSEUDSX5RVoRccG8a5DhOdWdQ4zN62zzo= github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= @@ -181,8 +188,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240123193359-a5fc767e225a h1:mWIRpGyrAlWHUznUHKgAJUafkNGfO7VmeLjilhVhB80= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240123193359-a5fc767e225a/go.mod h1:/70H/KqrtKcvWvNGVj6S3rAcLC+kUPr3t2aDmYIS+Xk= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240129235549-0a582d7654ee h1:1a7ZvkuPhLJ6uAAsAAfaD7K0wYr45l9eH3TdIMpYl+M= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240129235549-0a582d7654ee/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= @@ -333,6 +340,7 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -494,6 +502,7 @@ github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssy github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -502,6 +511,7 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= @@ -531,8 +541,9 @@ github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -624,8 +635,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -636,8 +647,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -659,8 +670,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -700,8 +711,8 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -721,8 +732,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -786,8 +797,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -800,8 +811,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -856,8 +867,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/params/superchain.go b/params/superchain.go index cb64f0d46f..f6f8915b8d 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -11,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" ) -var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 6, Minor: 0, Patch: 0, PreRelease: 1}.Encode() +var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 6, Minor: 0, Patch: 0, PreRelease: 2}.Encode() func init() { for id, ch := range superchain.OPChains { From 662fa059d268182bcd731f8d4ddb686ed0f5f7ec Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 30 Jan 2024 01:36:48 +0100 Subject: [PATCH 182/223] Bump go versions to 1.21 in cci and Dockerfiles --- .circleci/config.yml | 8 ++++---- Dockerfile.alltools | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 374313392f..dd2ae531bc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -112,7 +112,7 @@ jobs: build-geth: docker: - - image: cimg/go:1.20 + - image: cimg/go:1.21 resource_class: xlarge steps: - checkout @@ -121,7 +121,7 @@ jobs: unit-test: resource_class: xlarge docker: - - image: cimg/go:1.20 + - image: cimg/go:1.21 steps: - checkout - run: @@ -129,14 +129,14 @@ jobs: lint-geth: resource_class: medium docker: - - image: cimg/go:1.20 + - image: cimg/go:1.21 steps: - checkout - run: command: go run build/ci.go lint check-releases: docker: - - image: cimg/go:1.20 + - image: cimg/go:1.21 steps: - checkout - run: diff --git a/Dockerfile.alltools b/Dockerfile.alltools index 70ccc39825..c317da25fa 100644 --- a/Dockerfile.alltools +++ b/Dockerfile.alltools @@ -4,7 +4,7 @@ ARG VERSION="" ARG BUILDNUM="" # Build Geth in a stock Go builder container -FROM golang:1.20-alpine as builder +FROM golang:1.21-alpine as builder RUN apk add --no-cache gcc musl-dev linux-headers git From 311ee02b3069788bb7e9065cc519c4507350fdb7 Mon Sep 17 00:00:00 2001 From: protolambda Date: Mon, 29 Jan 2024 19:04:45 -0600 Subject: [PATCH 183/223] all: temporary Go 1.21 lint solution --- .golangci.yml | 1 + accounts/abi/packing_test.go | 10 ++-- build/checksums.txt | 87 +++++++++++++++++----------------- core/vm/gas_table_test.go | 2 +- crypto/signify/signify_test.go | 2 +- node/node.go | 2 +- rpc/client_test.go | 2 +- 7 files changed, 54 insertions(+), 52 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8a054667e6..009ef19992 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -62,3 +62,4 @@ issues: - 'SA1019: strings.Title is deprecated' - 'SA1019: strings.Title has been deprecated since Go 1.18 and an alternative has been available since Go 1.0: The rule Title uses for word boundaries does not handle Unicode punctuation properly. Use golang.org/x/text/cases instead.' - 'SA1029: should not use built-in type string as key for value' + - 'SA1019:' # temporary, until fully updated to Go 1.21 diff --git a/accounts/abi/packing_test.go b/accounts/abi/packing_test.go index eae3b0df20..9ed52a475e 100644 --- a/accounts/abi/packing_test.go +++ b/accounts/abi/packing_test.go @@ -375,7 +375,7 @@ var packUnpackTests = []packUnpackTest{ def: `[{"type": "bytes"}]`, packed: "0000000000000000000000000000000000000000000000000000000000000020" + "0000000000000000000000000000000000000000000000000000000000000020" + - "0100000000000000000000000000000000000000000000000000000000000000", + "0100000000000000000000000000000000000000000000000000000000000000", //nolint:all unpacked: common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"), }, { @@ -476,7 +476,7 @@ var packUnpackTests = []packUnpackTest{ def: `[{"type": "int256[3]"}]`, packed: "0000000000000000000000000000000000000000000000000000000000000001" + "0000000000000000000000000000000000000000000000000000000000000002" + - "0000000000000000000000000000000000000000000000000000000000000003", + "0000000000000000000000000000000000000000000000000000000000000003", //nolint:all unpacked: [3]*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}, }, // multi dimensional, if these pass, all types that don't require length prefix should pass @@ -536,7 +536,7 @@ var packUnpackTests = []packUnpackTest{ def: `[{"type": "uint8[][2]"}]`, packed: "0000000000000000000000000000000000000000000000000000000000000020" + "0000000000000000000000000000000000000000000000000000000000000040" + - "0000000000000000000000000000000000000000000000000000000000000080" + + "0000000000000000000000000000000000000000000000000000000000000080" + //nolint:all "0000000000000000000000000000000000000000000000000000000000000001" + "0000000000000000000000000000000000000000000000000000000000000001" + "0000000000000000000000000000000000000000000000000000000000000001" + @@ -801,7 +801,7 @@ var packUnpackTests = []packUnpackTest{ "0100000000000000000000000000000000000000000000000000000000000000" + // array[0][0] "0200000000000000000000000000000000000000000000000000000000000000" + // array[0][1] "0000000000000000000000000000000000000000000000000000000000000003" + // len(array[1]) = 3 - "0300000000000000000000000000000000000000000000000000000000000000" + // array[1][0] + "0300000000000000000000000000000000000000000000000000000000000000" + //nolint:all // array[1][0] "0400000000000000000000000000000000000000000000000000000000000000" + // array[1][1] "0500000000000000000000000000000000000000000000000000000000000000", // array[1][2] }, @@ -845,7 +845,7 @@ var packUnpackTests = []packUnpackTest{ }{1, big.NewInt(1), big.NewInt(-1), true, [2][3][32]byte{{{1}, {2}, {3}}, {{3}, {4}, {5}}}}, packed: "0000000000000000000000000000000000000000000000000000000000000001" + // struct[a] "0000000000000000000000000000000000000000000000000000000000000001" + // struct[b] - "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + // struct[c] + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + //nolint:all // struct[c] "0000000000000000000000000000000000000000000000000000000000000001" + // struct[d] "0100000000000000000000000000000000000000000000000000000000000000" + // struct[e] array[0][0] "0200000000000000000000000000000000000000000000000000000000000000" + // struct[e] array[0][1] diff --git a/build/checksums.txt b/build/checksums.txt index c96bd85667..96815ff791 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -5,52 +5,53 @@ # https://github.com/ethereum/execution-spec-tests/releases/download/v1.0.6/ 485af7b66cf41eb3a8c1bd46632913b8eb95995df867cf665617bbc9b4beedd1 fixtures_develop.tar.gz -# version:golang 1.21.4 +# version:golang 1.21.6 # https://go.dev/dl/ -47b26a83d2b65a3c1c1bcace273b69bee49a7a7b5168a7604ded3d26a37bd787 go1.21.4.src.tar.gz -cd3bdcc802b759b70e8418bc7afbc4a65ca73a3fe576060af9fc8a2a5e71c3b8 go1.21.4.darwin-amd64.tar.gz -8b7caf2ac60bdff457dba7d4ff2a01def889592b834453431ae3caecf884f6a5 go1.21.4.darwin-arm64.tar.gz -f1e685d086eb36f4be5b8b953b52baf7752bc6235400d84bb7d87e500b65f03e go1.21.4.freebsd-386.tar.gz -59f9b32187efb98d344a3818a631d3815ebb5c7bbefc367bab6515caaca544e9 go1.21.4.freebsd-amd64.tar.gz -64d3e5d295806e137c9e39d1e1f10b00a30fcd5c2f230d72b3298f579bb3c89a go1.21.4.linux-386.tar.gz -73cac0215254d0c7d1241fa40837851f3b9a8a742d0b54714cbdfb3feaf8f0af go1.21.4.linux-amd64.tar.gz -ce1983a7289856c3a918e1fd26d41e072cc39f928adfb11ba1896440849b95da go1.21.4.linux-arm64.tar.gz -6c62e89113750cc77c498194d13a03fadfda22bd2c7d44e8a826fd354db60252 go1.21.4.linux-armv6l.tar.gz -2c63b36d2adcfb22013102a2ee730f058ec2f93b9f27479793c80b2e3641783f go1.21.4.linux-ppc64le.tar.gz -7a75ba4afc7a96058ca65903d994cd862381825d7dca12b2183f087c757c26c0 go1.21.4.linux-s390x.tar.gz -870a0e462b94671dc2d6cac707e9e19f7524fdc3c90711e6cd4450c3713a8ce0 go1.21.4.windows-386.zip -79e5428e068c912d9cfa6cd115c13549856ec689c1332eac17f5d6122e19d595 go1.21.4.windows-amd64.zip -58bc7c6f4d4c72da2df4d2650c8222fe03c9978070eb3c66be8bbaa2a4757ac1 go1.21.4.windows-arm64.zip +124926a62e45f78daabbaedb9c011d97633186a33c238ffc1e25320c02046248 go1.21.6.src.tar.gz +31d6ecca09010ab351e51343a5af81d678902061fee871f912bdd5ef4d778850 go1.21.6.darwin-amd64.tar.gz +0ff541fb37c38e5e5c5bcecc8f4f43c5ffd5e3a6c33a5d3e4003ded66fcfb331 go1.21.6.darwin-arm64.tar.gz +a1d1a149b34bf0f53965a237682c6da1140acabb131bf0e597240e4a140b0e5e go1.21.6.freebsd-386.tar.gz +de59e1217e4398b1522eed8dddabab2fa1b97aecbdca3af08e34832b4f0e3f81 go1.21.6.freebsd-amd64.tar.gz +05d09041b5a1193c14e4b2db3f7fcc649b236c567f5eb93305c537851b72dd95 go1.21.6.linux-386.tar.gz +3f934f40ac360b9c01f616a9aa1796d227d8b0328bf64cb045c7b8c4ee9caea4 go1.21.6.linux-amd64.tar.gz +e2e8aa88e1b5170a0d495d7d9c766af2b2b6c6925a8f8956d834ad6b4cacbd9a go1.21.6.linux-arm64.tar.gz +6a8eda6cc6a799ff25e74ce0c13fdc1a76c0983a0bb07c789a2a3454bf6ec9b2 go1.21.6.linux-armv6l.tar.gz +e872b1e9a3f2f08fd4554615a32ca9123a4ba877ab6d19d36abc3424f86bc07f go1.21.6.linux-ppc64le.tar.gz +92894d0f732d3379bc414ffdd617eaadad47e1d72610e10d69a1156db03fc052 go1.21.6.linux-s390x.tar.gz +65b38857135cf45c80e1d267e0ce4f80fe149326c68835217da4f2da9b7943fe go1.21.6.windows-386.zip +27ac9dd6e66fb3fd0acfa6792ff053c86e7d2c055b022f4b5d53bfddec9e3301 go1.21.6.windows-amd64.zip +b93aff8f3c882c764c66a39b7a1483b0460e051e9992bf3435479129e5051bcd go1.21.6.windows-arm64.zip -# version:golangci 1.51.1 +# version:golangci 1.55.2 # https://github.com/golangci/golangci-lint/releases/ -# https://github.com/golangci/golangci-lint/releases/download/v1.51.1/ -fba08acc4027f69f07cef48fbff70b8a7ecdfaa1c2aba9ad3fb31d60d9f5d4bc golangci-lint-1.51.1-darwin-amd64.tar.gz -75b8f0ff3a4e68147156be4161a49d4576f1be37a0b506473f8c482140c1e7f2 golangci-lint-1.51.1-darwin-arm64.tar.gz -e06b3459aaed356e1667580be00b05f41f3b2e29685d12cdee571c23e1edb414 golangci-lint-1.51.1-freebsd-386.tar.gz -623ce2d0fa4d35cc2e8d69fa7334227ab592380962a13b4d9cdc77cf41db2008 golangci-lint-1.51.1-freebsd-amd64.tar.gz -131365feb0584cc2736c43192fa673ca50e5b6b765456990cb379ecfb787e568 golangci-lint-1.51.1-freebsd-armv6.tar.gz -98fb627927cbb654f5bf85dcffc5f646666b2ce96ea0fed977c9fb28abd51532 golangci-lint-1.51.1-freebsd-armv7.tar.gz -b36a99702fa762c15840261bc0fb41b4b1b16b8b19b8c0941bae98c85bb0f8b8 golangci-lint-1.51.1-linux-386.tar.gz -17aeb26c76820c22efa0e1838b0ab93e90cfedef43fbfc9a2f33f27eb9e5e070 golangci-lint-1.51.1-linux-amd64.tar.gz -9744bc34e7b8d82ca788b667bfb7155a39b4be9aef43bf9f10318b1372cea338 golangci-lint-1.51.1-linux-arm64.tar.gz -0dda8dbeb2ff7455a044ec8e347f2fc6d655d2e99d281b3b95e88167031c673d golangci-lint-1.51.1-linux-armv6.tar.gz -0512f311b11d43b8b22989d929f0fe8a2e1e5ebe497f1eb0ff73a0fc3d188fd1 golangci-lint-1.51.1-linux-armv7.tar.gz -d767108dcf84a8eaa844df3454cb0f75a492f4e7102ecc2b0a3545cfe073a566 golangci-lint-1.51.1-linux-loong64.tar.gz -3bd56c54daec16585b2668e0dfabb27af2c2b38cc0fdb46923e2521e1634846b golangci-lint-1.51.1-linux-mips64.tar.gz -f72f5adfa2219e15d2414c9a2966f86e74556cf17a85c727a7fb7770a16cf814 golangci-lint-1.51.1-linux-mips64le.tar.gz -e605521dac98096d8737e1997c954f41f1d0d8275b8731f62783d410c23574b9 golangci-lint-1.51.1-linux-ppc64le.tar.gz -2f683217b814339e74d61ca700922d8407f15addd6d4c5e8b156fbab79f26a87 golangci-lint-1.51.1-linux-riscv64.tar.gz -d98528292b65971a3594e5880530e7624597dc9806fcfccdfbe39be411713d63 golangci-lint-1.51.1-linux-s390x.tar.gz -9bb2d0fe9e692ed0aea4f2537e3e6862b2f6768fe2849a84f4a6ad09da9fd971 golangci-lint-1.51.1-netbsd-386.tar.gz -34cafdcd11ae73ae88d66c33eb8449f5c976fc3e37b44774dbe9c71caa95e592 golangci-lint-1.51.1-netbsd-amd64.tar.gz -f8b4e1e47ac17caafe8a5f32f975a2b6a7cb14c27c0f73c1fb15c20ca91c2e03 golangci-lint-1.51.1-netbsd-armv6.tar.gz -c4f58b7e227b9fd41f0e9310dc83f4a4e7d026598e2f6e95b78761081a6d9bd2 golangci-lint-1.51.1-netbsd-armv7.tar.gz -6710e2f5375dc75521c1a17980a6cbbe6ff76c2f8b852964a8af558899a97cf5 golangci-lint-1.51.1-windows-386.zip -722d7b87b9cdda0a3835d5030b3fc5385c2eba4c107f63f6391cfb2ac35f051d golangci-lint-1.51.1-windows-amd64.zip -eb57f9bcb56646f2e3d6ccaf02ec227815fb05077b2e0b1bf9e755805acdc2b9 golangci-lint-1.51.1-windows-arm64.zip -bce02f7232723cb727755ee11f168a700a00896a25d37f87c4b173bce55596b4 golangci-lint-1.51.1-windows-armv6.zip -cf6403f84707ce8c98664736772271bc8874f2e760c2fd0f00cf3e85963507e9 golangci-lint-1.51.1-windows-armv7.zip +# https://github.com/golangci/golangci-lint/releases/download/v1.55.2/ +632e96e6d5294fbbe7b2c410a49c8fa01c60712a0af85a567de85bcc1623ea21 golangci-lint-1.55.2-darwin-amd64.tar.gz +234463f059249f82045824afdcdd5db5682d0593052f58f6a3039a0a1c3899f6 golangci-lint-1.55.2-darwin-arm64.tar.gz +2bdd105e2d4e003a9058c33a22bb191a1e0f30fa0790acca0d8fbffac1d6247c golangci-lint-1.55.2-freebsd-386.tar.gz +e75056e8b082386676ce23eba455cf893931a792c0d87e1e3743c0aec33c7fb5 golangci-lint-1.55.2-freebsd-amd64.tar.gz +5789b933facaf6136bd23f1d50add67b79bbcf8dfdfc9069a37f729395940a66 golangci-lint-1.55.2-freebsd-armv6.tar.gz +7f21ab1008d05f32c954f99470fc86a83a059e530fe2add1d0b7d8ed4d8992a7 golangci-lint-1.55.2-freebsd-armv7.tar.gz +33ab06139b9219a28251f10821da94423db30285cc2af97494cbb2a281927de9 golangci-lint-1.55.2-illumos-amd64.tar.gz +57ce6f8ce3ad6ee45d7cc3d9a047545a851c2547637834a3fcb086c7b40b1e6b golangci-lint-1.55.2-linux-386.tar.gz +ca21c961a33be3bc15e4292dc40c98c8dcc5463a7b6768a3afc123761630c09c golangci-lint-1.55.2-linux-amd64.tar.gz +8eb0cee9b1dbf0eaa49871798c7f8a5b35f2960c52d776a5f31eb7d886b92746 golangci-lint-1.55.2-linux-arm64.tar.gz +3195f3e0f37d353fd5bd415cabcd4e263f5c29d3d0ffb176c26ff3d2c75eb3bb golangci-lint-1.55.2-linux-armv6.tar.gz +c823ee36eb1a719e171de1f2f5ca3068033dce8d9817232fd10ed71fd6650406 golangci-lint-1.55.2-linux-armv7.tar.gz +758a5d2a356dc494bd13ed4c0d4bf5a54a4dc91267ea5ecdd87b86c7ca0624e7 golangci-lint-1.55.2-linux-loong64.tar.gz +2c7b9abdce7cae802a67d583cd7c6dca520bff6d0e17c8535a918e2f2b437aa0 golangci-lint-1.55.2-linux-mips64.tar.gz +024e0a15b85352cc27271285526e16a4ab66d3e67afbbe446c9808c06cb8dbed golangci-lint-1.55.2-linux-mips64le.tar.gz +6b00f89ba5506c1de1efdd9fa17c54093013a294fefd8b9b31534db626a672ee golangci-lint-1.55.2-linux-ppc64le.tar.gz +0faa0d047d9bf7b703ed3ea65b6117043c93504f9ca1de25ae929d3901c73d4a golangci-lint-1.55.2-linux-riscv64.tar.gz +30dec9b22e7d5bb4e9d5ccea96da20f71cd7db3c8cf30b8ddc7cb9174c4d742a golangci-lint-1.55.2-linux-s390x.tar.gz +5a0ede48f79ad707902fdb29be8cd2abd8302dc122b65ebae3fdfc86751c7698 golangci-lint-1.55.2-netbsd-386.tar.gz +95af20a2e617126dd5b08122ece7819101070e1582a961067ce8c41172f901ad golangci-lint-1.55.2-netbsd-amd64.tar.gz +94fb7dacb7527847cc95d7120904e19a2a0a81a0d50d61766c9e0251da72ab9d golangci-lint-1.55.2-netbsd-armv6.tar.gz +ca906bce5fee9619400e4a321c56476fe4a4efb6ac4fc989d340eb5563348873 golangci-lint-1.55.2-netbsd-armv7.tar.gz +45b442f69fc8915c4500201c0247b7f3f69544dbc9165403a61f9095f2c57355 golangci-lint-1.55.2-windows-386.zip +f57d434d231d43417dfa631587522f8c1991220b43c8ffadb9c7bd279508bf81 golangci-lint-1.55.2-windows-amd64.zip +fd7dc8f4c6829ee6fafb252a4d81d2155cd35da7833665cbb25d53ce7cecd990 golangci-lint-1.55.2-windows-arm64.zip +1892c3c24f9e7ef44b02f6750c703864b6dc350129f3ec39510300007b2376f1 golangci-lint-1.55.2-windows-armv6.zip +a5e68ae73d38748b5269fad36ac7575e3c162a5dc63ef58abdea03cc5da4522a golangci-lint-1.55.2-windows-armv7.zip # This is the builder on PPA that will build Go itself (inception-y), don't modify! # diff --git a/core/vm/gas_table_test.go b/core/vm/gas_table_test.go index 4a5259a262..c1f7fd70c8 100644 --- a/core/vm/gas_table_test.go +++ b/core/vm/gas_table_test.go @@ -116,7 +116,7 @@ var createGasTests = []struct { minimumGas uint64 }{ // legacy create(0, 0, 0xc000) without 3860 used - {"0x61C00060006000f0" + "600052" + "60206000F3", false, 41237, 41237}, + {"0x61C00060006000f0" + "600052" + "60206000F3", false, 41237, 41237}, //nolint:all // legacy create(0, 0, 0xc000) _with_ 3860 {"0x61C00060006000f0" + "600052" + "60206000F3", true, 44309, 44309}, // create2(0, 0, 0xc001, 0) without 3860 diff --git a/crypto/signify/signify_test.go b/crypto/signify/signify_test.go index 9bac2c825f..56195649df 100644 --- a/crypto/signify/signify_test.go +++ b/crypto/signify/signify_test.go @@ -48,7 +48,7 @@ func TestSignify(t *testing.T) { t.Fatal(err) } - err = SignFile(tmpFile.Name(), tmpFile.Name()+".sig", testSecKey, "clé", "croissants") + err = SignFile(tmpFile.Name(), tmpFile.Name()+".sig", testSecKey, "clé", "croissants") //nolint:all if err != nil { t.Fatal(err) } diff --git a/node/node.go b/node/node.go index 41c9971fe8..d10639fe5b 100644 --- a/node/node.go +++ b/node/node.go @@ -678,7 +678,7 @@ func (n *Node) IPCEndpoint() string { // HTTPEndpoint returns the URL of the HTTP server. Note that this URL does not // contain the JSON-RPC path prefix set by HTTPPathPrefix. func (n *Node) HTTPEndpoint() string { - return "http://" + n.http.listenAddr() + return "http://" + n.http.listenAddr() //nolint:all } // WSEndpoint returns the current JSON-RPC over WebSocket endpoint. diff --git a/rpc/client_test.go b/rpc/client_test.go index 7c96b2d666..ffecefc9e6 100644 --- a/rpc/client_test.go +++ b/rpc/client_test.go @@ -585,7 +585,7 @@ func TestClientSubscriptionChannelClose(t *testing.T) { var ( srv = NewServer() httpsrv = httptest.NewServer(srv.WebsocketHandler(nil)) - wsURL = "ws:" + strings.TrimPrefix(httpsrv.URL, "http:") + wsURL = "ws:" + strings.TrimPrefix(httpsrv.URL, "http:") //nolint:all ) defer srv.Stop() defer httpsrv.Close() From 3f056633b91d978c5dc0c5401a04ed6f0e4da52b Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Tue, 30 Jan 2024 09:16:40 -0800 Subject: [PATCH 184/223] beacon: Fix OP Legacy block hash checks (#228) When verifying a batch of headers, verify the parent inside the section of headers because they don't exist in the DB yet. --- consensus/beacon/oplegacy.go | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/consensus/beacon/oplegacy.go b/consensus/beacon/oplegacy.go index 90d7e8678e..62810cb03f 100644 --- a/consensus/beacon/oplegacy.go +++ b/consensus/beacon/oplegacy.go @@ -18,21 +18,38 @@ func (o *OpLegacy) Author(header *types.Header) (common.Address, error) { } func (o *OpLegacy) VerifyHeader(chain consensus.ChainHeaderReader, header *types.Header) error { - // redundant check to guarantee DB consistency - parent := chain.GetHeader(header.ParentHash, header.Number.Uint64()-1) + // Short circuit if the header is known, or its parent not + number := header.Number.Uint64() + if chain.GetHeader(header.Hash(), number) != nil { + return nil + } + parent := chain.GetHeader(header.ParentHash, number-1) if parent == nil { return consensus.ErrUnknownAncestor } - return nil // legacy chain is verified by block-hash reverse sync otherwise + // legacy chain is verified by block-hash reverse sync otherwise + return nil } func (o *OpLegacy) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*types.Header) (chan<- struct{}, <-chan error) { - quit := make(chan struct{}, 1) - result := make(chan error, len(headers)) - for _, h := range headers { - result <- o.VerifyHeader(chain, h) + abort := make(chan struct{}) + results := make(chan error, len(headers)) + + for i := range headers { + // legacy chain is verified by block-hash reverse sync + var parent *types.Header + if i == 0 { + parent = chain.GetHeader(headers[0].ParentHash, headers[0].Number.Uint64()-1) + } else if headers[i-1].Hash() == headers[i].ParentHash { + parent = headers[i-1] + } + var err error + if parent == nil { + err = consensus.ErrUnknownAncestor + } + results <- err } - return quit, result + return abort, results } func (o *OpLegacy) VerifyUncles(chain consensus.ChainReader, block *types.Block) error { From f49155a4c50605720c3d2da54b2673ccff272037 Mon Sep 17 00:00:00 2001 From: jp-imx <109574657+jp-imx@users.noreply.github.com> Date: Mon, 20 Nov 2023 19:05:20 +1100 Subject: [PATCH 185/223] core/txpool/legacypool: respect nolocals-setting (#28435) This change adds a check to ensure that transactions added to the legacy pool are not treated as 'locals' if the global locals-management has been disabled. This change makes the pool enforce the --txpool.pricelimit setting. --- core/txpool/legacypool/legacypool.go | 3 ++ core/txpool/legacypool/legacypool_test.go | 44 +++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index dad8018d65..7b2abdf1b6 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -993,6 +993,9 @@ func (pool *LegacyPool) addRemoteSync(tx *types.Transaction) error { // If sync is set, the method will block until all internal maintenance related // to the add is finished. Only use this during tests for determinism! func (pool *LegacyPool) Add(txs []*types.Transaction, local, sync bool) []error { + // Do not treat as local if local transactions have been disabled + local = local && !pool.config.NoLocals + // Filter out known ones without obtaining the pool lock or recovering signatures var ( errs = make([]error, len(txs)) diff --git a/core/txpool/legacypool/legacypool_test.go b/core/txpool/legacypool/legacypool_test.go index 43dfeee92c..fb2a77d559 100644 --- a/core/txpool/legacypool/legacypool_test.go +++ b/core/txpool/legacypool/legacypool_test.go @@ -1492,6 +1492,50 @@ func TestRepricing(t *testing.T) { } } +func TestMinGasPriceEnforced(t *testing.T) { + t.Parallel() + + // Create the pool to test the pricing enforcement with + statedb, _ := state.New(types.EmptyRootHash, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) + blockchain := newTestBlockChain(eip1559Config, 10000000, statedb, new(event.Feed)) + + txPoolConfig := DefaultConfig + txPoolConfig.NoLocals = true + pool := New(txPoolConfig, blockchain) + pool.Init(new(big.Int).SetUint64(txPoolConfig.PriceLimit), blockchain.CurrentBlock(), makeAddressReserver()) + defer pool.Close() + + key, _ := crypto.GenerateKey() + testAddBalance(pool, crypto.PubkeyToAddress(key.PublicKey), big.NewInt(1000000)) + + tx := pricedTransaction(0, 100000, big.NewInt(2), key) + pool.SetGasTip(big.NewInt(tx.GasPrice().Int64() + 1)) + + if err := pool.addLocal(tx); !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + + if err := pool.Add([]*types.Transaction{tx}, true, false)[0]; !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + + tx = dynamicFeeTx(0, 100000, big.NewInt(3), big.NewInt(2), key) + pool.SetGasTip(big.NewInt(tx.GasTipCap().Int64() + 1)) + + if err := pool.addLocal(tx); !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + + if err := pool.Add([]*types.Transaction{tx}, true, false)[0]; !errors.Is(err, txpool.ErrUnderpriced) { + t.Fatalf("Min tip not enforced") + } + // Make sure the tx is accepted if locals are enabled + pool.config.NoLocals = false + if err := pool.Add([]*types.Transaction{tx}, true, false)[0]; err != nil { + t.Fatalf("Min tip enforced with locals enabled, error: %v", err) + } +} + // Tests that setting the transaction pool gas price to a higher value correctly // discards everything cheaper (legacy & dynamic fee) than that and moves any // gapped transactions back from the pending pool to the queue. From 05786fddb27daf24992b81c0e8570674fc37a98e Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Wed, 31 Jan 2024 10:31:18 -0800 Subject: [PATCH 186/223] Update superchain registry to include Delta mainnet (#232) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4da129939c..544491ee97 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240129235549-0a582d7654ee + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240131175747-1300b1825140 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 46d731cb5b..1d2315cca1 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240129235549-0a582d7654ee h1:1a7ZvkuPhLJ6uAAsAAfaD7K0wYr45l9eH3TdIMpYl+M= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240129235549-0a582d7654ee/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240131175747-1300b1825140 h1:F2Q+Gj4+W67CKZpVR+MEDL+EiIpgbx6VtwtdsPR4mbQ= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240131175747-1300b1825140/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= From 5eab46cfc5d6d082ec80ac16f1fc84418da4e85d Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Wed, 31 Jan 2024 22:56:14 +0100 Subject: [PATCH 187/223] all: Add Ecotone override flag --- cmd/geth/config.go | 5 +++++ cmd/geth/main.go | 1 + cmd/utils/flags.go | 4 ++-- core/genesis.go | 5 +++++ eth/backend.go | 5 ++++- eth/ethconfig/config.go | 2 ++ eth/ethconfig/gen_config.go | 12 ++++++++++++ 7 files changed, 31 insertions(+), 3 deletions(-) diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 194f779842..237d646c77 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -180,6 +180,11 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { cfg.Eth.OverrideOptimismCanyon = &v } + if ctx.IsSet(utils.OverrideOptimismEcotone.Name) { + v := ctx.Uint64(utils.OverrideOptimismEcotone.Name) + cfg.Eth.OverrideOptimismEcotone = &v + } + if ctx.IsSet(utils.OverrideOptimismInterop.Name) { v := ctx.Uint64(utils.OverrideOptimismInterop.Name) cfg.Eth.OverrideOptimismInterop = &v diff --git a/cmd/geth/main.go b/cmd/geth/main.go index d19641986b..afea5ab321 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -68,6 +68,7 @@ var ( utils.OverrideCancun, utils.OverrideVerkle, utils.OverrideOptimismCanyon, + utils.OverrideOptimismEcotone, utils.OverrideOptimismInterop, utils.EnablePersonal, utils.TxPoolLocalsFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 994ba7fc82..34fabc503a 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -262,12 +262,12 @@ var ( Usage: "Manually specify the Verkle fork timestamp, overriding the bundled setting", Category: flags.EthCategory, } - OverrideOptimismCanyon = &flags.BigFlag{ + OverrideOptimismCanyon = &cli.Uint64Flag{ Name: "override.canyon", Usage: "Manually specify the Optimism Canyon fork timestamp, overriding the bundled setting", Category: flags.EthCategory, } - OverrideOptimismEcotone = &flags.BigFlag{ + OverrideOptimismEcotone = &cli.Uint64Flag{ Name: "override.ecotone", Usage: "Manually specify the Optimism Ecotone fork timestamp, overriding the bundled setting", Category: flags.EthCategory, diff --git a/core/genesis.go b/core/genesis.go index e5126de1cb..391afb8daa 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -258,6 +258,7 @@ type ChainOverrides struct { OverrideVerkle *uint64 // optimism OverrideOptimismCanyon *uint64 + OverrideOptimismEcotone *uint64 ApplySuperchainUpgrades bool OverrideOptimismInterop *uint64 } @@ -319,6 +320,10 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen config.Optimism.EIP1559DenominatorCanyon = 250 } } + if overrides != nil && overrides.OverrideOptimismEcotone != nil { + config.EcotoneTime = overrides.OverrideOptimismEcotone + config.CancunTime = overrides.OverrideOptimismEcotone + } if overrides != nil && overrides.OverrideOptimismInterop != nil { config.InteropTime = overrides.OverrideOptimismInterop } diff --git a/eth/backend.go b/eth/backend.go index 23d3fe07cd..f5f5f4c9e8 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -181,7 +181,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { nodeCloser: stack.Close, } bcVersion := rawdb.ReadDatabaseVersion(chainDb) - var dbVer = "" + dbVer := "" if bcVersion != nil { dbVer = fmt.Sprintf("%d", *bcVersion) } @@ -223,6 +223,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if config.OverrideOptimismCanyon != nil { overrides.OverrideOptimismCanyon = config.OverrideOptimismCanyon } + if config.OverrideOptimismEcotone != nil { + overrides.OverrideOptimismEcotone = config.OverrideOptimismEcotone + } if config.OverrideOptimismInterop != nil { overrides.OverrideOptimismInterop = config.OverrideOptimismInterop } diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 9b2edec62e..7a47300590 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -173,6 +173,8 @@ type Config struct { OverrideOptimismCanyon *uint64 `toml:",omitempty"` + OverrideOptimismEcotone *uint64 `toml:",omitempty"` + OverrideOptimismInterop *uint64 `toml:",omitempty"` // ApplySuperchainUpgrades requests the node to load chain-configuration from the superchain-registry. diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index 27ade8781d..92a7147396 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -57,6 +57,8 @@ func (c Config) MarshalTOML() (interface{}, error) { OverrideCancun *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` OverrideOptimismCanyon *uint64 `toml:",omitempty"` + OverrideOptimismEcotone *uint64 `toml:",omitempty"` + OverrideOptimismInterop *uint64 `toml:",omitempty"` ApplySuperchainUpgrades bool `toml:",omitempty"` RollupSequencerHTTP string RollupHistoricalRPC string @@ -106,6 +108,8 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.OverrideCancun = c.OverrideCancun enc.OverrideVerkle = c.OverrideVerkle enc.OverrideOptimismCanyon = c.OverrideOptimismCanyon + enc.OverrideOptimismEcotone = c.OverrideOptimismEcotone + enc.OverrideOptimismInterop = c.OverrideOptimismInterop enc.ApplySuperchainUpgrades = c.ApplySuperchainUpgrades enc.RollupSequencerHTTP = c.RollupSequencerHTTP enc.RollupHistoricalRPC = c.RollupHistoricalRPC @@ -159,6 +163,8 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { OverrideCancun *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` OverrideOptimismCanyon *uint64 `toml:",omitempty"` + OverrideOptimismEcotone *uint64 `toml:",omitempty"` + OverrideOptimismInterop *uint64 `toml:",omitempty"` ApplySuperchainUpgrades *bool `toml:",omitempty"` RollupSequencerHTTP *string RollupHistoricalRPC *string @@ -291,6 +297,12 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.OverrideOptimismCanyon != nil { c.OverrideOptimismCanyon = dec.OverrideOptimismCanyon } + if dec.OverrideOptimismEcotone != nil { + c.OverrideOptimismEcotone = dec.OverrideOptimismEcotone + } + if dec.OverrideOptimismInterop != nil { + c.OverrideOptimismInterop = dec.OverrideOptimismInterop + } if dec.ApplySuperchainUpgrades != nil { c.ApplySuperchainUpgrades = *dec.ApplySuperchainUpgrades } From b15f1ac89cc0996991b3613f7a9d7df887ec1e50 Mon Sep 17 00:00:00 2001 From: geoknee Date: Thu, 1 Feb 2024 10:45:03 +0000 Subject: [PATCH 188/223] ci: add go mod tidy check --- .circleci/config.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index dd2ae531bc..1ac6cbddaf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -134,6 +134,14 @@ jobs: - checkout - run: command: go run build/ci.go lint + tidy-geth: + resource_class: small + docker: + - image: cimg/go:1.21 + steps: + - checkout + - run: + command: go mod tidy && git diff --exit-code check-releases: docker: - image: cimg/go:1.21 @@ -157,6 +165,8 @@ workflows: name: Run unit tests for geth - lint-geth: name: Run linter over geth + - tidy-geth: + name: Check geth go.mod file has been tidied - docker-release: name: Push to Docker docker_tags: <> From 486b55f69e24ae56f3dd027afae6b51e9b31c5c6 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Sun, 4 Feb 2024 20:03:26 +0100 Subject: [PATCH 189/223] fokdiff: Remove entry for `les` --- fork.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fork.yaml b/fork.yaml index 349f4f5393..e2627c339a 100644 --- a/fork.yaml +++ b/fork.yaml @@ -216,10 +216,6 @@ def: description: Forward pre-bedrock tracing calls to legacy node. globs: - "eth/tracers/api.go" - - title: "Light Ethereum Subprotocol (LES) RPC" - description: Match the RPC changes in the LES RPC - globs: - - "les/*" - title: "Daisy Chain tests" globs: - "internal/ethapi/transaction_args_test.go" From 05382895bbcd44490b889e1517230c427fb4b55a Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Sun, 4 Feb 2024 20:03:45 +0100 Subject: [PATCH 190/223] core: remove TODO comment --- core/state_transition.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/state_transition.go b/core/state_transition.go index 3b9cbe1e95..51c4b36cca 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -516,7 +516,7 @@ func (st *StateTransition) innerTransitionDb() (*ExecutionResult, error) { // Skip coinbase payments for deposit tx in Regolith return &ExecutionResult{ UsedGas: st.gasUsed(), - RefundedGas: gasRefund, // TODO(Seb): is this correct for depoit txs? + RefundedGas: gasRefund, Err: vmerr, ReturnData: ret, }, nil From dc4ea6323692f3cdade45bf8d1d9dd83f0b2801a Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Mon, 5 Feb 2024 21:29:42 +0100 Subject: [PATCH 191/223] Remove .orig files --- internal/ethapi/transaction_args.go.orig | 422 ------------------ internal/ethapi/transaction_args_test.go.orig | 422 ------------------ 2 files changed, 844 deletions(-) delete mode 100644 internal/ethapi/transaction_args.go.orig delete mode 100644 internal/ethapi/transaction_args_test.go.orig diff --git a/internal/ethapi/transaction_args.go.orig b/internal/ethapi/transaction_args.go.orig deleted file mode 100644 index 71f4fe5122..0000000000 --- a/internal/ethapi/transaction_args.go.orig +++ /dev/null @@ -1,422 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package ethapi - -import ( - "bytes" - "context" - "errors" - "fmt" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/rpc" - "github.com/holiman/uint256" -) - -// TransactionArgs represents the arguments to construct a new transaction -// or a message call. -type TransactionArgs struct { - From *common.Address `json:"from"` - To *common.Address `json:"to"` - Gas *hexutil.Uint64 `json:"gas"` - GasPrice *hexutil.Big `json:"gasPrice"` - MaxFeePerGas *hexutil.Big `json:"maxFeePerGas"` - MaxPriorityFeePerGas *hexutil.Big `json:"maxPriorityFeePerGas"` - Value *hexutil.Big `json:"value"` - Nonce *hexutil.Uint64 `json:"nonce"` - - // We accept "data" and "input" for backwards-compatibility reasons. - // "input" is the newer name and should be preferred by clients. - // Issue detail: https://github.com/ethereum/go-ethereum/issues/15628 - Data *hexutil.Bytes `json:"data"` - Input *hexutil.Bytes `json:"input"` - - // Introduced by AccessListTxType transaction. - AccessList *types.AccessList `json:"accessList,omitempty"` - ChainID *hexutil.Big `json:"chainId,omitempty"` - - // Introduced by EIP-4844. - BlobFeeCap *hexutil.Big `json:"maxFeePerBlobGas"` - BlobHashes []common.Hash `json:"blobVersionedHashes,omitempty"` -} - -// from retrieves the transaction sender address. -func (args *TransactionArgs) from() common.Address { - if args.From == nil { - return common.Address{} - } - return *args.From -} - -// data retrieves the transaction calldata. Input field is preferred. -func (args *TransactionArgs) data() []byte { - if args.Input != nil { - return *args.Input - } - if args.Data != nil { - return *args.Data - } - return nil -} - -// setDefaults fills in default values for unspecified tx fields. -func (args *TransactionArgs) setDefaults(ctx context.Context, b Backend) error { - if err := args.setFeeDefaults(ctx, b); err != nil { - return err - } - if args.Value == nil { - args.Value = new(hexutil.Big) - } - if args.Nonce == nil { - nonce, err := b.GetPoolNonce(ctx, args.from()) - if err != nil { - return err - } - args.Nonce = (*hexutil.Uint64)(&nonce) - } - if args.Data != nil && args.Input != nil && !bytes.Equal(*args.Data, *args.Input) { - return errors.New(`both "data" and "input" are set and not equal. Please use "input" to pass transaction call data`) - } - if args.BlobHashes != nil && args.To == nil { - return errors.New(`blob transactions cannot have the form of a create transaction`) - } - if args.BlobHashes != nil && len(args.BlobHashes) == 0 { - return errors.New(`need at least 1 blob for a blob transaction`) - } - if args.To == nil && len(args.data()) == 0 { - return errors.New(`contract creation without any data provided`) - } - // Estimate the gas usage if necessary. - if args.Gas == nil { - // These fields are immutable during the estimation, safe to - // pass the pointer directly. - data := args.data() - callArgs := TransactionArgs{ - From: args.From, - To: args.To, - GasPrice: args.GasPrice, - MaxFeePerGas: args.MaxFeePerGas, - MaxPriorityFeePerGas: args.MaxPriorityFeePerGas, - Value: args.Value, - Data: (*hexutil.Bytes)(&data), - AccessList: args.AccessList, - } - latestBlockNr := rpc.BlockNumberOrHashWithNumber(rpc.LatestBlockNumber) - estimated, err := DoEstimateGas(ctx, b, callArgs, latestBlockNr, nil, b.RPCGasCap()) - if err != nil { - return err - } - args.Gas = &estimated - log.Trace("Estimate gas usage automatically", "gas", args.Gas) - } - // If chain id is provided, ensure it matches the local chain id. Otherwise, set the local - // chain id as the default. - want := b.ChainConfig().ChainID - if args.ChainID != nil { - if have := (*big.Int)(args.ChainID); have.Cmp(want) != 0 { - return fmt.Errorf("chainId does not match node's (have=%v, want=%v)", have, want) - } - } else { - args.ChainID = (*hexutil.Big)(want) - } - return nil -} - -// setFeeDefaults fills in default fee values for unspecified tx fields. -func (args *TransactionArgs) setFeeDefaults(ctx context.Context, b Backend) error { - // If both gasPrice and at least one of the EIP-1559 fee parameters are specified, error. - if args.GasPrice != nil && (args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil) { - return errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified") - } - // If the tx has completely specified a fee mechanism, no default is needed. - // This allows users who are not yet synced past London to get defaults for - // other tx values. See https://github.com/ethereum/go-ethereum/pull/23274 - // for more information. - eip1559ParamsSet := args.MaxFeePerGas != nil && args.MaxPriorityFeePerGas != nil - - // Sanity check the EIP-1559 fee parameters if present. - if args.GasPrice == nil && eip1559ParamsSet { - if args.MaxFeePerGas.ToInt().Sign() == 0 { - return errors.New("maxFeePerGas must be non-zero") - } - if args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { - return fmt.Errorf("maxFeePerGas (%v) < maxPriorityFeePerGas (%v)", args.MaxFeePerGas, args.MaxPriorityFeePerGas) - } - return nil // No need to set anything, user already set MaxFeePerGas and MaxPriorityFeePerGas - } -<<<<<<< HEAD -======= - // Sanity check the EIP-4844 fee parameters. - if args.BlobFeeCap != nil && args.BlobFeeCap.ToInt().Sign() == 0 { - return errors.New("maxFeePerBlobGas must be non-zero") - } ->>>>>>> optimism - // Sanity check the non-EIP-1559 fee parameters. - head := b.CurrentHeader() - isLondon := b.ChainConfig().IsLondon(head.Number) - if args.GasPrice != nil && !eip1559ParamsSet { - // Zero gas-price is not allowed after London fork - if args.GasPrice.ToInt().Sign() == 0 && isLondon { - return errors.New("gasPrice must be non-zero after london fork") - } - return nil // No need to set anything, user already set GasPrice - } - - // Now attempt to fill in default value depending on whether London is active or not. -<<<<<<< HEAD - if isLondon { -======= - if b.ChainConfig().IsCancun(head.Number, head.Time) { - if err := args.setCancunFeeDefaults(ctx, head, b); err != nil { - return err - } - } else if isLondon { - if args.BlobFeeCap != nil { - return errors.New("maxFeePerBlobGas is not valid before Cancun is active") - } ->>>>>>> optimism - // London is active, set maxPriorityFeePerGas and maxFeePerGas. - if err := args.setLondonFeeDefaults(ctx, head, b); err != nil { - return err - } - } else { - if args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil || args.BlobFeeCap != nil { - return errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active") - } - // London not active, set gas price. - price, err := b.SuggestGasTipCap(ctx) - if err != nil { - return err - } - args.GasPrice = (*hexutil.Big)(price) - } - return nil -} - -// setCancunFeeDefaults fills in reasonable default fee values for unspecified fields. -func (args *TransactionArgs) setCancunFeeDefaults(ctx context.Context, head *types.Header, b Backend) error { - // Set maxFeePerBlobGas if it is missing. - if args.BlobHashes != nil && args.BlobFeeCap == nil { - // ExcessBlobGas must be set for a Cancun block. - blobBaseFee := eip4844.CalcBlobFee(*head.ExcessBlobGas) - // Set the max fee to be 2 times larger than the previous block's blob base fee. - // The additional slack allows the tx to not become invalidated if the base - // fee is rising. - val := new(big.Int).Mul(blobBaseFee, big.NewInt(2)) - args.BlobFeeCap = (*hexutil.Big)(val) - } - return args.setLondonFeeDefaults(ctx, head, b) -} - -// setLondonFeeDefaults fills in reasonable default fee values for unspecified fields. -func (args *TransactionArgs) setLondonFeeDefaults(ctx context.Context, head *types.Header, b Backend) error { - // Set maxPriorityFeePerGas if it is missing. - if args.MaxPriorityFeePerGas == nil { - tip, err := b.SuggestGasTipCap(ctx) - if err != nil { - return err - } - args.MaxPriorityFeePerGas = (*hexutil.Big)(tip) - } - // Set maxFeePerGas if it is missing. - if args.MaxFeePerGas == nil { - // Set the max fee to be 2 times larger than the previous block's base fee. - // The additional slack allows the tx to not become invalidated if the base - // fee is rising. - val := new(big.Int).Add( - args.MaxPriorityFeePerGas.ToInt(), - new(big.Int).Mul(head.BaseFee, big.NewInt(2)), - ) - args.MaxFeePerGas = (*hexutil.Big)(val) - } - // Both EIP-1559 fee parameters are now set; sanity check them. - if args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { - return fmt.Errorf("maxFeePerGas (%v) < maxPriorityFeePerGas (%v)", args.MaxFeePerGas, args.MaxPriorityFeePerGas) - } - return nil -} - -// ToMessage converts the transaction arguments to the Message type used by the -// core evm. This method is used in calls and traces that do not require a real -// live transaction. -func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (*core.Message, error) { - // Reject invalid combinations of pre- and post-1559 fee styles - if args.GasPrice != nil && (args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil) { - return nil, errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified") - } - // Set sender address or use zero address if none specified. - addr := args.from() - - // Set default gas & gas price if none were set - gas := globalGasCap - if gas == 0 { - gas = uint64(math.MaxUint64 / 2) - } - if args.Gas != nil { - gas = uint64(*args.Gas) - } - if globalGasCap != 0 && globalGasCap < gas { - log.Warn("Caller gas above allowance, capping", "requested", gas, "cap", globalGasCap) - gas = globalGasCap - } - var ( - gasPrice *big.Int - gasFeeCap *big.Int - gasTipCap *big.Int - blobFeeCap *big.Int - ) - if baseFee == nil { - // If there's no basefee, then it must be a non-1559 execution - gasPrice = new(big.Int) - if args.GasPrice != nil { - gasPrice = args.GasPrice.ToInt() - } - gasFeeCap, gasTipCap = gasPrice, gasPrice - } else { - // A basefee is provided, necessitating 1559-type execution - if args.GasPrice != nil { - // User specified the legacy gas field, convert to 1559 gas typing - gasPrice = args.GasPrice.ToInt() - gasFeeCap, gasTipCap = gasPrice, gasPrice - } else { - // User specified 1559 gas fields (or none), use those - gasFeeCap = new(big.Int) - if args.MaxFeePerGas != nil { - gasFeeCap = args.MaxFeePerGas.ToInt() - } - gasTipCap = new(big.Int) - if args.MaxPriorityFeePerGas != nil { - gasTipCap = args.MaxPriorityFeePerGas.ToInt() - } - // Backfill the legacy gasPrice for EVM execution, unless we're all zeroes - gasPrice = new(big.Int) - if gasFeeCap.BitLen() > 0 || gasTipCap.BitLen() > 0 { - gasPrice = math.BigMin(new(big.Int).Add(gasTipCap, baseFee), gasFeeCap) - } - } - } - if args.BlobFeeCap != nil { - blobFeeCap = args.BlobFeeCap.ToInt() - } else if args.BlobHashes != nil { - blobFeeCap = new(big.Int) - } - value := new(big.Int) - if args.Value != nil { - value = args.Value.ToInt() - } - data := args.data() - var accessList types.AccessList - if args.AccessList != nil { - accessList = *args.AccessList - } - msg := &core.Message{ - From: addr, - To: args.To, - Value: value, - GasLimit: gas, - GasPrice: gasPrice, - GasFeeCap: gasFeeCap, - GasTipCap: gasTipCap, - Data: data, - AccessList: accessList, - BlobGasFeeCap: blobFeeCap, - BlobHashes: args.BlobHashes, - SkipAccountChecks: true, - } - return msg, nil -} - -// toTransaction converts the arguments to a transaction. -// This assumes that setDefaults has been called. -func (args *TransactionArgs) toTransaction() *types.Transaction { - var data types.TxData - switch { - case args.BlobHashes != nil: - al := types.AccessList{} - if args.AccessList != nil { - al = *args.AccessList - } - data = &types.BlobTx{ - To: *args.To, - ChainID: uint256.MustFromBig((*big.Int)(args.ChainID)), - Nonce: uint64(*args.Nonce), - Gas: uint64(*args.Gas), - GasFeeCap: uint256.MustFromBig((*big.Int)(args.MaxFeePerGas)), - GasTipCap: uint256.MustFromBig((*big.Int)(args.MaxPriorityFeePerGas)), - Value: uint256.MustFromBig((*big.Int)(args.Value)), - Data: args.data(), - AccessList: al, - BlobHashes: args.BlobHashes, - BlobFeeCap: uint256.MustFromBig((*big.Int)(args.BlobFeeCap)), - } - case args.MaxFeePerGas != nil: - al := types.AccessList{} - if args.AccessList != nil { - al = *args.AccessList - } - data = &types.DynamicFeeTx{ - To: args.To, - ChainID: (*big.Int)(args.ChainID), - Nonce: uint64(*args.Nonce), - Gas: uint64(*args.Gas), - GasFeeCap: (*big.Int)(args.MaxFeePerGas), - GasTipCap: (*big.Int)(args.MaxPriorityFeePerGas), - Value: (*big.Int)(args.Value), - Data: args.data(), - AccessList: al, - } - case args.AccessList != nil: - data = &types.AccessListTx{ - To: args.To, - ChainID: (*big.Int)(args.ChainID), - Nonce: uint64(*args.Nonce), - Gas: uint64(*args.Gas), - GasPrice: (*big.Int)(args.GasPrice), - Value: (*big.Int)(args.Value), - Data: args.data(), - AccessList: *args.AccessList, - } - default: - data = &types.LegacyTx{ - To: args.To, - Nonce: uint64(*args.Nonce), - Gas: uint64(*args.Gas), - GasPrice: (*big.Int)(args.GasPrice), - Value: (*big.Int)(args.Value), - Data: args.data(), - } - } - return types.NewTx(data) -} - -// ToTransaction converts the arguments to a transaction. -// This assumes that setDefaults has been called. -func (args *TransactionArgs) ToTransaction() *types.Transaction { - return args.toTransaction() -} - -// IsEIP4844 returns an indicator if the args contains EIP4844 fields. -func (args *TransactionArgs) IsEIP4844() bool { - return args.BlobHashes != nil || args.BlobFeeCap != nil -} diff --git a/internal/ethapi/transaction_args_test.go.orig b/internal/ethapi/transaction_args_test.go.orig deleted file mode 100644 index 799177088b..0000000000 --- a/internal/ethapi/transaction_args_test.go.orig +++ /dev/null @@ -1,422 +0,0 @@ -// Copyright 2022 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package ethapi - -import ( - "context" - "errors" - "math/big" - "reflect" - "testing" - "time" - - "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/bloombits" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rpc" -) - -// TestSetFeeDefaults tests the logic for filling in default fee values works as expected. -func TestSetFeeDefaults(t *testing.T) { - type test struct { - name string - fork string // options: legacy, london, cancun - in *TransactionArgs - want *TransactionArgs - err error - } - - var ( - b = newBackendMock() - zero = (*hexutil.Big)(big.NewInt(0)) - fortytwo = (*hexutil.Big)(big.NewInt(42)) - maxFee = (*hexutil.Big)(new(big.Int).Add(new(big.Int).Mul(b.current.BaseFee, big.NewInt(2)), fortytwo.ToInt())) - al = &types.AccessList{types.AccessTuple{Address: common.Address{0xaa}, StorageKeys: []common.Hash{{0x01}}}} - ) - - tests := []test{ - // Legacy txs - { - "legacy tx pre-London", - "legacy", - &TransactionArgs{}, - &TransactionArgs{GasPrice: fortytwo}, - nil, - }, - { - "legacy tx pre-London with zero price", -<<<<<<< HEAD - false, -======= - "legacy", ->>>>>>> optimism - &TransactionArgs{GasPrice: zero}, - &TransactionArgs{GasPrice: zero}, - nil, - }, - { - "legacy tx post-London, explicit gas price", - "london", - &TransactionArgs{GasPrice: fortytwo}, - &TransactionArgs{GasPrice: fortytwo}, - nil, - }, - { - "legacy tx post-London with zero price", -<<<<<<< HEAD - true, -======= - "london", ->>>>>>> optimism - &TransactionArgs{GasPrice: zero}, - nil, - errors.New("gasPrice must be non-zero after london fork"), - }, - - // Access list txs - { - "access list tx pre-London", - "legacy", - &TransactionArgs{AccessList: al}, - &TransactionArgs{AccessList: al, GasPrice: fortytwo}, - nil, - }, - { - "access list tx post-London, explicit gas price", - "legacy", - &TransactionArgs{AccessList: al, GasPrice: fortytwo}, - &TransactionArgs{AccessList: al, GasPrice: fortytwo}, - nil, - }, - { - "access list tx post-London", - "london", - &TransactionArgs{AccessList: al}, - &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - }, - { - "access list tx post-London, only max fee", - "london", - &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee}, - &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - }, - { - "access list tx post-London, only priority fee", - "london", - &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee}, - &TransactionArgs{AccessList: al, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - }, - - // Dynamic fee txs - { - "dynamic tx post-London", - "london", - &TransactionArgs{}, - &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - }, - { - "dynamic tx post-London, only max fee", - "london", - &TransactionArgs{MaxFeePerGas: maxFee}, - &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - }, - { - "dynamic tx post-London, only priority fee", - "london", - &TransactionArgs{MaxFeePerGas: maxFee}, - &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - }, - { - "dynamic fee tx pre-London, maxFee set", - "legacy", - &TransactionArgs{MaxFeePerGas: maxFee}, - nil, - errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active"), - }, - { - "dynamic fee tx pre-London, priorityFee set", - "legacy", - &TransactionArgs{MaxPriorityFeePerGas: fortytwo}, - nil, - errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active"), - }, - { - "dynamic fee tx, maxFee < priorityFee", - "london", - &TransactionArgs{MaxFeePerGas: maxFee, MaxPriorityFeePerGas: (*hexutil.Big)(big.NewInt(1000))}, - nil, - errors.New("maxFeePerGas (0x3e) < maxPriorityFeePerGas (0x3e8)"), - }, - { - "dynamic fee tx, maxFee < priorityFee while setting default", - "london", - &TransactionArgs{MaxFeePerGas: (*hexutil.Big)(big.NewInt(7))}, - nil, - errors.New("maxFeePerGas (0x7) < maxPriorityFeePerGas (0x2a)"), - }, - { - "dynamic fee tx post-London, explicit gas price", -<<<<<<< HEAD - true, -======= - "london", ->>>>>>> optimism - &TransactionArgs{MaxFeePerGas: zero, MaxPriorityFeePerGas: zero}, - nil, - errors.New("maxFeePerGas must be non-zero"), - }, - - // Misc - { - "set all fee parameters", - "legacy", - &TransactionArgs{GasPrice: fortytwo, MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), - }, - { - "set gas price and maxPriorityFee", - "legacy", - &TransactionArgs{GasPrice: fortytwo, MaxPriorityFeePerGas: fortytwo}, - nil, - errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), - }, - { - "set gas price and maxFee", - "london", - &TransactionArgs{GasPrice: fortytwo, MaxFeePerGas: maxFee}, - nil, - errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), - }, - // EIP-4844 - { - "set maxFeePerBlobGas pre cancun", - "london", - &TransactionArgs{BlobFeeCap: fortytwo}, - nil, - errors.New("maxFeePerBlobGas is not valid before Cancun is active"), - }, - { - "set maxFeePerBlobGas pre london", - "legacy", - &TransactionArgs{BlobFeeCap: fortytwo}, - nil, - errors.New("maxFeePerGas and maxPriorityFeePerGas and maxFeePerBlobGas are not valid before London is active"), - }, - { - "set gas price and maxFee for blob transaction", - "cancun", - &TransactionArgs{GasPrice: fortytwo, MaxFeePerGas: maxFee, BlobHashes: []common.Hash{}}, - nil, - errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified"), - }, - { - "fill maxFeePerBlobGas", - "cancun", - &TransactionArgs{BlobHashes: []common.Hash{}}, - &TransactionArgs{BlobHashes: []common.Hash{}, BlobFeeCap: (*hexutil.Big)(big.NewInt(4)), MaxFeePerGas: maxFee, MaxPriorityFeePerGas: fortytwo}, - nil, - }, - } - - ctx := context.Background() - for i, test := range tests { - if err := b.setFork(test.fork); err != nil { - t.Fatalf("failed to set fork: %v", err) - } - got := test.in - err := got.setFeeDefaults(ctx, b) - if err != nil && err.Error() == test.err.Error() { - // Test threw expected error. - continue - } else if err != nil { - t.Fatalf("test %d (%s): unexpected error: %s", i, test.name, err) - } - if !reflect.DeepEqual(got, test.want) { - t.Fatalf("test %d (%s): did not fill defaults as expected: (got: %v, want: %v)", i, test.name, got, test.want) - } - } -} - -type backendMock struct { - current *types.Header - config *params.ChainConfig -} - -func newBackendMock() *backendMock { - var cancunTime uint64 = 600 - config := ¶ms.ChainConfig{ - ChainID: big.NewInt(42), - HomesteadBlock: big.NewInt(0), - DAOForkBlock: nil, - DAOForkSupport: true, - EIP150Block: big.NewInt(0), - EIP155Block: big.NewInt(0), - EIP158Block: big.NewInt(0), - ByzantiumBlock: big.NewInt(0), - ConstantinopleBlock: big.NewInt(0), - PetersburgBlock: big.NewInt(0), - IstanbulBlock: big.NewInt(0), - MuirGlacierBlock: big.NewInt(0), - BerlinBlock: big.NewInt(0), - LondonBlock: big.NewInt(1000), - CancunTime: &cancunTime, - } - return &backendMock{ - current: &types.Header{ - Difficulty: big.NewInt(10000000000), - Number: big.NewInt(1100), - GasLimit: 8_000_000, - GasUsed: 8_000_000, - Time: 555, - Extra: make([]byte, 32), - BaseFee: big.NewInt(10), - }, - config: config, - } -} - -func (b *backendMock) setFork(fork string) error { - if fork == "legacy" { - b.current.Number = big.NewInt(900) - b.current.Time = 555 - } else if fork == "london" { - b.current.Number = big.NewInt(1100) - b.current.Time = 555 - } else if fork == "cancun" { - b.current.Number = big.NewInt(1100) - b.current.Time = 700 - // Blob base fee will be 2 - excess := uint64(2314058) - b.current.ExcessBlobGas = &excess - } else { - return errors.New("invalid fork") - } - return nil -} - -func (b *backendMock) SuggestGasTipCap(ctx context.Context) (*big.Int, error) { - return big.NewInt(42), nil -} -func (b *backendMock) CurrentHeader() *types.Header { return b.current } -func (b *backendMock) ChainConfig() *params.ChainConfig { return b.config } - -// Other methods needed to implement Backend interface. -func (b *backendMock) SyncProgress() ethereum.SyncProgress { return ethereum.SyncProgress{} } -func (b *backendMock) FeeHistory(ctx context.Context, blockCount uint64, lastBlock rpc.BlockNumber, rewardPercentiles []float64) (*big.Int, [][]*big.Int, []*big.Int, []float64, error) { - return nil, nil, nil, nil, nil -} -func (b *backendMock) ChainDb() ethdb.Database { return nil } -func (b *backendMock) AccountManager() *accounts.Manager { return nil } -func (b *backendMock) ExtRPCEnabled() bool { return false } -func (b *backendMock) RPCGasCap() uint64 { return 0 } -func (b *backendMock) RPCEVMTimeout() time.Duration { return time.Second } -func (b *backendMock) RPCTxFeeCap() float64 { return 0 } -func (b *backendMock) UnprotectedAllowed() bool { return false } -func (b *backendMock) SetHead(number uint64) {} -func (b *backendMock) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) { - return nil, nil -} -func (b *backendMock) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) { - return nil, nil -} -func (b *backendMock) HeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Header, error) { - return nil, nil -} -func (b *backendMock) CurrentBlock() *types.Header { return nil } -func (b *backendMock) BlockByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Block, error) { - return nil, nil -} -func (b *backendMock) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) { - return nil, nil -} -func (b *backendMock) BlockByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Block, error) { - return nil, nil -} -func (b *backendMock) GetBody(ctx context.Context, hash common.Hash, number rpc.BlockNumber) (*types.Body, error) { - return nil, nil -} -func (b *backendMock) StateAndHeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*state.StateDB, *types.Header, error) { - return nil, nil, nil -} -func (b *backendMock) StateAndHeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*state.StateDB, *types.Header, error) { - return nil, nil, nil -} -func (b *backendMock) PendingBlockAndReceipts() (*types.Block, types.Receipts) { return nil, nil } -func (b *backendMock) GetReceipts(ctx context.Context, hash common.Hash) (types.Receipts, error) { - return nil, nil -} -func (b *backendMock) GetLogs(ctx context.Context, blockHash common.Hash, number uint64) ([][]*types.Log, error) { - return nil, nil -} -func (b *backendMock) GetTd(ctx context.Context, hash common.Hash) *big.Int { return nil } -func (b *backendMock) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config, blockCtx *vm.BlockContext) *vm.EVM { - return nil -} -func (b *backendMock) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription { return nil } -func (b *backendMock) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription { - return nil -} -func (b *backendMock) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription { - return nil -} -func (b *backendMock) SendTx(ctx context.Context, signedTx *types.Transaction) error { return nil } -func (b *backendMock) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) { - return nil, [32]byte{}, 0, 0, nil -} -func (b *backendMock) GetPoolTransactions() (types.Transactions, error) { return nil, nil } -func (b *backendMock) GetPoolTransaction(txHash common.Hash) *types.Transaction { return nil } -func (b *backendMock) GetPoolNonce(ctx context.Context, addr common.Address) (uint64, error) { - return 0, nil -} -func (b *backendMock) Stats() (pending int, queued int) { return 0, 0 } -func (b *backendMock) TxPoolContent() (map[common.Address][]*types.Transaction, map[common.Address][]*types.Transaction) { - return nil, nil -} -func (b *backendMock) TxPoolContentFrom(addr common.Address) ([]*types.Transaction, []*types.Transaction) { - return nil, nil -} -func (b *backendMock) SubscribeNewTxsEvent(chan<- core.NewTxsEvent) event.Subscription { return nil } -func (b *backendMock) BloomStatus() (uint64, uint64) { return 0, 0 } -func (b *backendMock) ServiceFilter(ctx context.Context, session *bloombits.MatcherSession) {} -func (b *backendMock) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription { return nil } -func (b *backendMock) SubscribePendingLogsEvent(ch chan<- []*types.Log) event.Subscription { - return nil -} -func (b *backendMock) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription { - return nil -} - -func (b *backendMock) Engine() consensus.Engine { return nil } -func (b *backendMock) HistoricalRPCService() *rpc.Client { return nil } -func (b *backendMock) Genesis() *types.Block { return nil } From d48b5d7139946dc5ff241ffe9dca7bb6d7b8e348 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Wed, 7 Feb 2024 11:50:48 +0100 Subject: [PATCH 192/223] Update superchain-reg dependency for OP Sepolia Ecotone activation --- go.mod | 2 +- go.sum | 4 ++-- params/superchain.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 3f736dcfd8..4f06756d17 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240131175747-1300b1825140 + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240207091552-bfa80184df11 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 225b229cfa..309b50ade6 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240131175747-1300b1825140 h1:F2Q+Gj4+W67CKZpVR+MEDL+EiIpgbx6VtwtdsPR4mbQ= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240131175747-1300b1825140/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240207091552-bfa80184df11 h1:PL3cFhrsPcO5FR2+ZYw+/yuZXU4C5oE4r18AShIJbUY= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240207091552-bfa80184df11/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= diff --git a/params/superchain.go b/params/superchain.go index f6f8915b8d..9444c54405 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -11,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" ) -var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 6, Minor: 0, Patch: 0, PreRelease: 2}.Encode() +var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 6, Minor: 0, Patch: 0, PreRelease: 3}.Encode() func init() { for id, ch := range superchain.OPChains { From fdf0da82c4416236bb64402606c1c4727aa37129 Mon Sep 17 00:00:00 2001 From: axelKingsley Date: Wed, 7 Feb 2024 09:49:42 -0600 Subject: [PATCH 193/223] Deposit Transaction Nonce Correction --- eth/downloader/downloader.go | 8 +- eth/downloader/downloader_test.go | 2 +- eth/downloader/receiptreference.go | 144 ++++++++++++++++++ eth/downloader/receiptreference_test.go | 108 +++++++++++++ .../10.105235063-114696812.gob | Bin 0 -> 833023 bytes .../userDepositData/291.0-4192087.gob | Bin 0 -> 282 bytes .../userDepositData/34443.0-2412409.gob | Bin 0 -> 4875 bytes .../userDepositData/420.6825766-17276566.gob | Bin 0 -> 715450 bytes .../userDepositData/7777777.0-9149281.gob | Bin 0 -> 2264929 bytes .../userDepositData/8453.0-9101527.gob | Bin 0 -> 3143206 bytes eth/handler.go | 8 +- fork.yaml | 6 + 12 files changed, 272 insertions(+), 4 deletions(-) create mode 100644 eth/downloader/receiptreference.go create mode 100644 eth/downloader/receiptreference_test.go create mode 100644 eth/downloader/userDepositData/10.105235063-114696812.gob create mode 100644 eth/downloader/userDepositData/291.0-4192087.gob create mode 100644 eth/downloader/userDepositData/34443.0-2412409.gob create mode 100644 eth/downloader/userDepositData/420.6825766-17276566.gob create mode 100644 eth/downloader/userDepositData/7777777.0-9149281.gob create mode 100644 eth/downloader/userDepositData/8453.0-9101527.gob diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index f1cfa92d5d..3f39b19485 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -156,6 +156,9 @@ type Downloader struct { syncStartBlock uint64 // Head snap block when Geth was started syncStartTime time.Time // Time instance when chain sync started syncLogTime time.Time // Time instance when status was last reported + + // Chain ID for downloaders to reference + chainID uint64 } // LightChain encapsulates functions required to synchronise a light chain. @@ -216,7 +219,7 @@ type BlockChain interface { } // New creates a new downloader to fetch hashes and blocks from remote peers. -func New(stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn, success func()) *Downloader { +func New(stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn, success func(), chainID uint64) *Downloader { if lightchain == nil { lightchain = chain } @@ -233,6 +236,7 @@ func New(stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchai SnapSyncer: snap.NewSyncer(stateDb, chain.TrieDB().Scheme()), stateSyncStart: make(chan *stateSync), syncStartBlock: chain.CurrentSnapBlock().Number.Uint64(), + chainID: chainID, } // Create the post-merge skeleton syncer and start the process dl.skeleton = newSkeleton(stateDb, dl.peers, dropPeer, newBeaconBackfiller(dl, success)) @@ -1718,7 +1722,7 @@ func (d *Downloader) commitSnapSyncData(results []*fetchResult, stateSync *state receipts := make([]types.Receipts, len(results)) for i, result := range results { blocks[i] = types.NewBlockWithHeader(result.Header).WithBody(result.Transactions, result.Uncles).WithWithdrawals(result.Withdrawals) - receipts[i] = result.Receipts + receipts[i] = correctReceipts(result.Receipts, result.Transactions, blocks[i].NumberU64(), d.chainID) } if index, err := d.blockchain.InsertReceiptChain(blocks, receipts, d.ancientLimit); err != nil { log.Debug("Downloaded item processing failed", "number", results[index].Header.Number, "hash", results[index].Header.Hash(), "err", err) diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index e4875b959a..52feaa327b 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -81,7 +81,7 @@ func newTesterWithNotification(t *testing.T, success func()) *downloadTester { chain: chain, peers: make(map[string]*downloadTesterPeer), } - tester.downloader = New(db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, success) + tester.downloader = New(db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, success, 0) return tester } diff --git a/eth/downloader/receiptreference.go b/eth/downloader/receiptreference.go new file mode 100644 index 0000000000..b4c5623ddc --- /dev/null +++ b/eth/downloader/receiptreference.go @@ -0,0 +1,144 @@ +package downloader + +import ( + "bytes" + "embed" + "encoding/gob" + "fmt" + "path" + "strings" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" +) + +// userDepositNonces is a struct to hold the reference data for user deposits +// The reference data is used to correct the deposit nonce in the receipts +type userDepositNonces struct { + ChainID uint64 + First uint64 + Last uint64 // non inclusive + Results map[uint64][]uint64 +} + +var ( + systemAddress = common.HexToAddress("0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001") + receiptReferencePath = "userDepositData" + //go:embed userDepositData/*.gob + receiptReference embed.FS + userDepositNoncesAlreadySearched = map[uint64]bool{} + userDepositNoncesReference = map[uint64]userDepositNonces{} +) + +// lazy load the reference data for the requested chain +// if this chain data was already requested, returns early +func initReceiptReferences(chainID uint64) { + // if already loaded, return + if userDepositNoncesAlreadySearched[chainID] { + return + } + // look for a file prefixed by the chainID + fPrefix := fmt.Sprintf("%d.", chainID) + files, err := receiptReference.ReadDir(receiptReferencePath) + if err != nil { + log.Warn("Receipt Correction: Failed to read reference directory", "err", err) + return + } + // mark as loaded so we don't try again, even if no files match + userDepositNoncesAlreadySearched[chainID] = true + for _, file := range files { + // skip files which don't match the prefix + if !strings.HasPrefix(file.Name(), fPrefix) { + continue + } + fpath := path.Join(receiptReferencePath, file.Name()) + bs, err := receiptReference.ReadFile(fpath) + if err != nil { + log.Warn("Receipt Correction: Failed to read reference data", "err", err) + continue + } + udns := userDepositNonces{} + err = gob.NewDecoder(bytes.NewReader(bs)).Decode(&udns) + if err != nil { + log.Warn("Receipt Correction: Failed to decode reference data", "err", err) + continue + } + userDepositNoncesReference[udns.ChainID] = udns + return + } +} + +// correctReceipts corrects the deposit nonce in the receipts using the reference data +// prior to Canyon Hard Fork, DepositNonces were not cryptographically verifiable. +// As a consequence, the deposit nonces found during Snap Sync may be incorrect. +// This function inspects transaction data for user deposits, and if it is found to be incorrect, it is corrected. +// The data used to correct the deposit nonce is stored in the userDepositData directory, +// and was generated with the receipt reference tool in the optimism monorepo. +func correctReceipts(receipts types.Receipts, transactions types.Transactions, blockNumber uint64, chainID uint64) types.Receipts { + initReceiptReferences(chainID) + // if there is no data even after initialization, return the receipts as is + depositNoncesForChain, ok := userDepositNoncesReference[chainID] + if !ok { + log.Trace("Receipt Correction: No data source for chain", "chainID", chainID) + return receipts + } + + // check that the block number being examined is within the range of the reference data + if blockNumber < depositNoncesForChain.First || blockNumber > depositNoncesForChain.Last { + log.Trace("Receipt Correction: Block is out of range for receipt reference", + "blockNumber", blockNumber, + "start", depositNoncesForChain.First, + "end", depositNoncesForChain.Last) + return receipts + } + + // get the block nonces + blockNonces, ok := depositNoncesForChain.Results[blockNumber] + if !ok { + log.Trace("Receipt Correction: Block does not contain user deposits", "blockNumber", blockNumber) + return receipts + } + + // iterate through the receipts and transactions to correct the deposit nonce + // user deposits should always be at the front of the block, but we will check all transactions to be sure + udCount := 0 + for i := 0; i < len(receipts); i++ { + r := receipts[i] + tx := transactions[i] + from, err := types.Sender(types.LatestSignerForChainID(tx.ChainId()), tx) + if err != nil { + log.Warn("Receipt Correction: Failed to determine sender", "err", err) + continue + } + // break as soon as a non deposit is found + if r.Type != types.DepositTxType { + break + } + // ignore any transactions from the system address + if from != systemAddress { + // prevent index out of range (indicates a problem with the reference data or the block data) + if udCount >= len(blockNonces) { + log.Warn("Receipt Correction: More user deposits in block than included in reference data", "in_reference", len(blockNonces)) + break + } + nonce := blockNonces[udCount] + udCount++ + log.Trace("Receipt Correction: User Deposit detected", "address", from, "nonce", nonce) + if nonce != *r.DepositNonce { + // correct the deposit nonce + // warn because this should not happen unless the data was modified by corruption or a malicious peer + // by correcting the nonce, the entire block is still valid for use + log.Warn("Receipt Correction: Corrected deposit nonce", "nonce", *r.DepositNonce, "corrected", nonce) + r.DepositNonce = &nonce + } + } + } + // check for unused reference data (indicates a problem with the reference data or the block data) + if udCount < len(blockNonces) { + log.Warn("Receipt Correction: More user deposits in reference data than found in block", "in_reference", len(blockNonces), "in_block", udCount) + } + + log.Trace("Receipt Correction: Completed", "blockNumber", blockNumber, "userDeposits", udCount, "receipts", len(receipts), "transactions", len(transactions)) + return receipts +} diff --git a/eth/downloader/receiptreference_test.go b/eth/downloader/receiptreference_test.go new file mode 100644 index 0000000000..85bc4e1aaa --- /dev/null +++ b/eth/downloader/receiptreference_test.go @@ -0,0 +1,108 @@ +package downloader + +import ( + "testing" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/assert" +) + +// makeCorrection is a helper function to create a slice of receipts and a slice of corrected receipts +func makeCorrection(bn uint64, cid uint64, ns []uint64, ty []uint8) (types.Receipts, types.Receipts) { + receipts := make(types.Receipts, len(ns)) + correctedReceipts := make(types.Receipts, len(ns)) + transactions := make(types.Transactions, len(ns)) + for i := range ns { + receipts[i] = &types.Receipt{Type: ty[i], DepositNonce: &ns[i]} + correctedReceipts[i] = &types.Receipt{Type: ty[i], DepositNonce: &ns[i]} + transactions[i] = types.NewTx(&types.DepositTx{}) + } + + correctedReceipts = correctReceipts(correctedReceipts, transactions, bn, cid) + + return receipts, correctedReceipts +} + +func TestCorrectReceipts(t *testing.T) { + type testcase struct { + blockNum uint64 + chainID uint64 + nonces []uint64 + txTypes []uint8 + validate func(types.Receipts, types.Receipts) + } + + // Tests use the real reference data, so block numbers and chainIDs are selected for different test cases + testcases := []testcase{ + // Test case 1: No receipts + { + blockNum: 6825767, + chainID: 420, + nonces: []uint64{}, + txTypes: []uint8{}, + validate: func(receipts types.Receipts, correctedReceipts types.Receipts) { + assert.Empty(t, correctedReceipts) + }, + }, + // Test case 2: No deposits + { + blockNum: 6825767, + chainID: 420, + nonces: []uint64{1, 2, 3}, + txTypes: []uint8{1, 1, 1}, + validate: func(receipts types.Receipts, correctedReceipts types.Receipts) { + assert.Equal(t, receipts, correctedReceipts) + }, + }, + // Test case 3: all deposits with no correction + { + blockNum: 8835769, + chainID: 420, + nonces: []uint64{78756, 78757, 78758, 78759, 78760, 78761, 78762, 78763, 78764}, + txTypes: []uint8{126, 126, 126, 126, 126, 126, 126, 126, 126}, + validate: func(receipts types.Receipts, correctedReceipts types.Receipts) { + assert.Equal(t, receipts, correctedReceipts) + }, + }, + // Test case 4: all deposits with a correction + { + blockNum: 8835769, + chainID: 420, + nonces: []uint64{78756, 78757, 78758, 12345, 78760, 78761, 78762, 78763, 78764}, + txTypes: []uint8{126, 126, 126, 126, 126, 126, 126, 126, 126}, + validate: func(receipts types.Receipts, correctedReceipts types.Receipts) { + assert.NotEqual(t, receipts[3], correctedReceipts[3]) + for i := range receipts { + if i != 3 { + assert.Equal(t, receipts[i], correctedReceipts[i]) + } + } + }, + }, + // Test case 5: deposits with several corrections and non-deposits + { + blockNum: 8835769, + chainID: 420, + nonces: []uint64{0, 1, 2, 78759, 78760, 78761, 6, 78763, 78764, 9, 10, 11}, + txTypes: []uint8{126, 126, 126, 126, 126, 126, 126, 126, 126, 1, 1, 1}, + validate: func(receipts types.Receipts, correctedReceipts types.Receipts) { + // indexes 0, 1, 2, 6 were modified + // indexes 9, 10, 11 were added too, but they are not user deposits + assert.NotEqual(t, receipts[0], correctedReceipts[0]) + assert.NotEqual(t, receipts[1], correctedReceipts[1]) + assert.NotEqual(t, receipts[2], correctedReceipts[2]) + assert.NotEqual(t, receipts[6], correctedReceipts[6]) + for i := range receipts { + if i != 0 && i != 1 && i != 2 && i != 6 { + assert.Equal(t, receipts[i], correctedReceipts[i]) + } + } + }, + }, + } + + for _, tc := range testcases { + receipts, correctedReceipts := makeCorrection(tc.blockNum, tc.chainID, tc.nonces, tc.txTypes) + tc.validate(receipts, correctedReceipts) + } +} diff --git a/eth/downloader/userDepositData/10.105235063-114696812.gob b/eth/downloader/userDepositData/10.105235063-114696812.gob new file mode 100644 index 0000000000000000000000000000000000000000..f26643825f272cf945fc71c953265bac6336f40a GIT binary patch literal 833023 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�Dfh#uc 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�QYG?dDo2V1foZ#HYo}j{?SfpwxD=N*n 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 FSZj@ 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Ħ>uJ*END>j43u+@hh+1xyYiXq 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

LDPSM*VhK8iM6MsJl*86OU2>T7ff}GjU$OX9 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 z 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

w!=52 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 JIsd&aegSgATR#8* literal 0 HcmV?d00001 diff --git a/eth/downloader/userDepositData/34443.0-2412409.gob b/eth/downloader/userDepositData/34443.0-2412409.gob new file mode 100644 index 0000000000000000000000000000000000000000..750e6669594db72e1ce3d5d779651a56e3166cb2 GIT binary patch literal 4875 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

sD)SyOX2l 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 z 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

BC~mkfsYp&b4OGNNQ;|;};!qLAVcjjG$R(x? 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 literal 0 HcmV?d00001 diff --git a/eth/downloader/userDepositData/7777777.0-9149281.gob b/eth/downloader/userDepositData/7777777.0-9149281.gob new file mode 100644 index 0000000000000000000000000000000000000000..ee63497b9c874cffc6435d680be8dc67958456c9 GIT binary patch literal 2264929 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 vzr2Ck>9PE@aQ&N=h2cWIV0i8n#~bW%aBlD zVaHKGOPm&u#2lWH1)T1)6(ZgDE9^{^_FfiJ)G1FiPSQCQ<77vpLqLJ%Iw6w(F;jXX zn!ko8@AXWKAA$yv2hj` zT|gHVbRt%lCy1d+Ku|FsHRNzr5a$+%D{W(6Zv8{m53;T^kAv)WS+cxPJ5(j23cu1Biy*(|{3TJEp_+bSUJob8{FR_jgOTOK30efuJlA@Iu*OVy8b9TY;i0h7vgOS|2I_^;lsGki_g6yEkeDWAt zH09!G+ljl#>uwG#f!CT!SFEIdDKYfLpk(~`<#4ONYX@}i ze;YBiAB>;y`5t@#J_xs`A!hYt3D9-!Wy-4Chi|YxOI8R^dj@~(l4+uDokHvIcw9{j z&@vp29~NgeS%#f0g^M{q?c}yoENYe*w&39tWM7A!kheA<>R){yhgiS$Zr)*{4eku`BEyKvQRib2;$zoY8C zmorpf9WBb&Mf~*Ui0%=ewH& zFW-xCz`z7An%s&bdMdK_G!iR3`=G+CbwfnOYAUtj-v_&aFwNigGoGl5DLN^7ir5cY z=)RO^1DC9&9Z=`Q@qnwjag5<7PJ)fLP_v@SpC2{-cv|XmxhG-_ss9xi>2n&G{`U>j zUQ*6lwp_ps3V!@WPMD}H#=&hFxCq#7>Tf`|r)0~>ZtUSymm5X4)O&WKlV{yx^{)XW z-1#+T231=0_^EuaRhsDTQ%~*^zWJB&aPas*j^09)zrz#dM!|?b@h31l^Et3+Mk3JN zy-vI#pNcy-AT~x^|X54zqH%3mtYauPOX$S@U!-kFOyM(Xl-<~GSglSaGajkj- zC)IK;*13Na+}dUs#$cctD;sLY>DC%O*(>fQ1-!=tmRHk{%Ev!k0}OPt`Og>%SvF@C zg!{I{Bzd&$acpOGZk-8=&Z`yQ8{mD5f615TQC6IK!@>sZzvmW#_;<@dQsmA?E2a&d z0C)MyBA~W8E5Rf8Js*tQYtBFUZO-nc46;Xv@A)OjcxW#w^2iS8wk)LNzw_a7{*l^D z<3Z(=IPE4dJA)mC$92vlrEg$OX1?4H1ER$rCpL3;yAP}Y>vHnD+oi=Ul9l9jkWB51E3;r2&ZE{3yaG9sOKp4b zA=@ur05f?GI6huAMB)s6i(Sly^|V32x?QZgJn0g!u;C!kBZ=$qc#kgfG)zhVoD9A+ zU?dqzF^Pheeybbj*+H%Oj@z3Zk2{HmSt}-zlrC0?lam$*bQ2?ykT9~8q2(T9y0P(T zD6o9yGEu$Rbp;44e|QGy;>YvsJa;F-9qs=HsC3&89J2X1Flq%ml_U!`L2ewZut3Q_ zqa!?lj_5IA2_B=t<-GGL&_4|2#Z6ki#+{e-_47=NCHaWitc2Xl#yMx@mu&dLj!i7g0rTmCn31K;JLG%}?wA9F^U#$2DjI*#`UV8u@t=yzn=qIU8B6`Uf%?F zeS7xTO|S3}U5_8BnsiZQ_~`q~Q5(^Jk@w;fxYG>v@%jKN%ssw=IoG>ea)1@n*@3>! z{-KE2yL}zd=bxF(VXLWp*6Zn@4bKa=V+03J+f6 z1aIi^qp%l7TolMQHj@*GLld&I~;@DdJRXH=S%kqofE z!fV|z+bd5^!y;Pynp>cZN}B?#yZ!)} zeR&a3^+ITNySBgcY3CL_`4<>b&+3n^?m}NeR!dHAq>B6UsoVnkId zV5_L6>=W9Zi-VB%-#r(k)^7`e>K{g!v5lgN!>s>fqMPDEX6#Jc$<$N-T+6?r?qYOS z9Cwt@96FCw)Nkh-b%IAB8K5xn2(VwjMAMGA#VMX@dbMyK#;T-L^DY~50M2}g(dS5RCK>99|}7n zrT~@Z*7W82t`~D!5*1Ol%#nx24R`0R7!-Q;yuQ1oBfhP4u8scCtz>%9yP0 z{?Wi_FZPPDTeA2>_N9)vj8UZ#ljW-50%OH##i8S#9rM|}%nM~i{WLM)Pu$iY4-fS0 z4NQ&~D^ixndAWo7xlRUNOqh5P6_grbMm|vHjR027QvmH8V}TlJ2i|~*+QJ{H6Z)x` zj@8=@e1oB&4gaDCwgAm%(|vmUN3Db>WIo3^1rt0VQ++qTf?IpaXaxH1h=EVJSy*%} zPO`sIi4EoMbEon7$PpbtO1*p$n6|c~sOe1HPK6Q8`UbY0`l_&Uy|b$sJt!g=LBY4< zf#G_#!IWBdB$|(z3@&`|6I9i>`W_%P6PvwVE#7{b`S3B$2xmv`XRq{2)@B`oyUmIryEGVrSXy~Qm zOknIp4`_LFGimI!d{Ar7l>sN7kA<)|w#fj8H@U<49`|o-k)GxpO~}$sE|OC@_qM%<~POCvy^-B37q@C2+g0#ePZ5 zJOWa5Nd;a0O1f1Mw(azt=2S*BZGdBR>%lnPhACi|2Q zqHg!PFRUf+Rh%W!oux{R+OZKRuU`B~C1$6>$Zsn3`~S##3-G9psC_)yWF<-hvE5`h zvdPAijk_x`;*bOgPS66yEdhd4Xn|5naV->Dv_(pxl;X5l@lxEqI9&L>?}UEe|9k#< z;N3Z6cjTNiXXeh#ZM6&DUOsby(Luw3G2*M~`K~_bUfc|iim3<3av4Oo7ZwBhcTz{h zO8@pMP;r~r2a5%kmi?D8wBV5e{_O{haqCjn(w(wg3ls*k3*E$cIWu&CefoWh?J$4GIO=$lQvRp1_(=`L6Px2=Oj|0 z${j>Q$u?l|k<+jgYW_VBx8vdQ5SqY~ugvAp<&trzXcObt@l2F=PK}xsoJ0rUnNlw+ z4I16*tJduEhD$}rL_3JmtG)e^nL^LNn#03BY2=UHH42Hp=awc;3+U(a-^+uz<~ZsC zeU-H68e-U&v3cFL4rC(Trl!>=ul3Y0$(Nb~>#xSa&i9%$fmfr*kIsXaDxsFKRqb1Y zuqbguIVbh)hTe$zUAzpobohqh8B?dRZ)%$s;`L8EAhuy3K7C4N@tta9oW>u9(05_3 z3||_KSe{J3*qTUjce>?P@?1*uwLn$rKwz`$lo7|(yBN)RP6G(d>Mp=Qqu65+tM3ZJ z&~+0kh|e?}b%r4`*7*$ld~AMXnuNm9AW|<402VH-;!P;u(XgmGafI*oRsHrhmCp5L zx#(yQRevTkeschk;w)T&1$!p~OV)EN@I5tGM2nw%3{R2Ch}?pHbmSG!ITL$66S)~p)3_euSOU3K2?o0elOU}K?4^9%RTmr;#u9KCTMgS z2K0SKca-`V6|y$|0p!`|{MSvj)?UH8Hasxy=yhnUqCuaU8Qk0?#TzfAaLqW&vS<^i z96X)tx!mFPJ)an~js{v*ItQSL1E+vFT`vKZ6E-kKfhFs%zOhHn3j~nS6}FY(Gj|q1 zxru=lMeGCj0D3nIQF6-Uy{wI5Z2@@yn%U))@d!+0q@;U3^g)Y`HI zQ!6w;)#c`BUyE*Z+xSzI^@U#ngLZrk4Bz%UHeBXUdkA+&vvc4N=UaS6;1+N3#lSG* z-=I9*3!7TRd%X3>M`!G$`O>Dgz|=>o*>8l~x|a{@H*Wt+5Sqqtp!Pi1kh~{jc?DN! zFYOBUj~KUyv9cOCg4)X#%S?Q5t-(wX@fkrMuQ@6xc0qd&ze<*hkGKv@>wA$Osn=kq>`glmL~lC#*e#^x8FiH(+}(LJr`PXik9dge0{o#LrRbHY*%X>CCAVl za31I`-z(?$$6;6ma;S)ojG-RRUwjZ)V7~*|X)8W1hE#2*m>I?l=a?At10^qgd^M|~ z%%mW+!li@Q!+eBKa@)|E9(&XI`o{xPf&@T-fdAv8#+A;P= zi{P~X;sg+0Wn|Q>CHL|CaZwrc`I8Ln|B_4>^amR{So^8mk$+NH!Yt4&hH|0LFM(M` z#+d-e40{4}+Lq0XgT`MJTpSwXXqqJzd9ewHj%VjvudoD$_M&Re>Aw?LHhK>PppQQc zZK&oEtWa5NVKJ)9CgR*V*EOLQHxwYiXO0eNSV9H~Xfyvmby}E88Lrcn0PQ~s1A3lo zT17JS*ULGE;E}d>;U7J0G#`_*Y6l3NMSEn8k8YK+^L(9`LxM}D{|5KuZz)5n>s0QY zX5<0YLr&vqxGf2`N%>WH_-hJ96^*%v#HKD~2do5fnpr&T8G=3k;9!|{K@H42`Wjfc zc?!_lL&ZM#Q5VA$317$W*{7DXlQKI`02Z|ziXo<`4GoR43W5Fmm>|;Q=3gR;Anmas|=;^mF(s0zZC^AalP3q7Gik z6Z1BD4q9#_sTA}|eq<*@oZ78clIhj;mw}pTM<~lE3;!gy#S7tSa0m0^;C8@o^F$BF zn4N%c(lQ^6_ZqL+=rOP2X7CBAZ`$q`KChqYhhtKN7bmn@DQfOI1ZJ!vpJzWBDYB?^ z4Q88n>DmvTwJB~;V4iOc^zxr2?4GD214w0j*A)>|qei1r78UD0+OSQ9OI}@SX41l1 z%2`KcV0CgZ(8(qi=rSS|==ZV{(73V#u&~8Gtd)gKxC(c8_Sfj1__sZfr+VBmsE8n0 z8?pHI*h_BW$9i|dK5qMpI#k~3mAY=fp}Jj*neaDv0umj+5xPgFgeW(tcC@_%Oi(Z7<+w1 z*)=xpbB&!^iW0^DdK6v>kJ!ZOLNl{wSi%e#dI(gQkI*Y&`yL~++^EsqHq@@b8X@@| zmI2*2^+U;h_hRM;Wf~U=ukhLzz~mS)N6sE}wrR9;T+YVQR%^sNF+}!!DF3)`22Qe0CdP+rFF`cL_fS^r%<_3=aC08yPc}f8e8)8y<;nat>se z*R%CxgwTzPL4-f*rZmB=f7}oj(IW+7mfUNXh+K1vyw>r>RaC+1SE|~GqjzY0L@ncI zlgCF>VqMn5d;_~AQ|i2a*aGxljU`Sf+vUwc1WgD47UVhrYjHi0T`x!NB- z{Z}*q9rtk78l^G9oqV~;{8PLT>!?Lmt>LL{xfiG}>O%|M`}I~3QS$j8tvuTAS-sh` zZhOS|q0_xVb|ueF!^56 zSAu>!3C@t;-zSQvr4H3b)QCdp`%yY9FFP`*MZ0f7couB~%3rs|<44c+hTA^q8c^%8 z6j(iM9xzG6uF$6b0(5_(0(yP(hFMfUWw*KQ+Q>H6O0@Q;#@tA-!WvC!eS-0ct_pG(vx!um9knImpS>|!)~-jBI(Pmri4n-%W| zYO}|(r*#*^x9$x64}>ttGcA zRFk*jojDjerhX1ge-`~wI&x2m`A)$%Enz-Zq)=y%$sY=|9wO|8VeAs!)?PsWJ7w!sFgd=2=bF^t3%1Z*pN=5?zL~(t53E*9{6cJ0w2>6esB=>c zT(?y$z^-gl$*yt*2;DfEE1oAN0S%?-4pcm1+7nPwN0NaVHN<|;s8Pm$$G-FXgd;<6 zGS=hJuwgqpfW_orvP{X*!-3hCwgc4PhC00fAN)> z3a=^*qwCNzI1h@$(tS+xrB+Y0NY?EEwRHTfZa_rRk`?glx4h}8Wi`t|DvrJYme*3LJG!<3x^{R2S@)jd&Y|1a{0O{4 z3%yPKaQA*ZAKPy0V|cauz{W3_5RKxEsXqm`_U~@Y7*?9>l?-#_m@n~anhE5azD00q z(t8qVeVL-O*9R_K4Y^uMKTY^`M3A@55gnNzv2oHjP`&0_QmhNF(QTdhH_%PD32iRF z`UdXwRoqW&UBWRa<>-94Q}6!*&p$vV%?unjzJP|*d^3s(+{U6i zp_p6K&WZ>ggUwm0_l*em*(64&xLX&ITz%7zkt5^-u_~4Jb8~))u~i!{B(a_{i|LKi zS?$7<6kyqidKi%v)9yj*O|sh!AEzj?p6@+!XxiqJK$kh$KyACPm~F5k6@>B?`JmNF z8jY$!VlBY0jFHUMrfaP52(FD!3%i9RtucJ30Np6Te{`2 zkj9n+*mmJ}qFdlA)+VOGSPrr`!)VXB6zDq34@k{Lv?K z;7iLCbMWNV{cwm!@iW^{Gef+J(?eh&ZIw)l?DmKo0c@^B z!!Jj?dufZ?!NK|eRXegrG`2s*Pd~+y29IwP;jyFmRe=oa zyGWWnnvK@|k4KE~$%1nr>ZgxI?dmXs&C!^!Z3FZO;|as98Abg%!OC@jUFl!Q%A_Cb*xktI|dS8 z-HCFgU&B{)QFG41tz5l@VmB&%CD6Jvb|65wPLzP~{`y~_Uw_sB?oiAlpmQpm`3n;_R2iWbN&nR(z1N#AkOfLZC%L9}qoMqr~ zIlCqJ_@oZQ^~TWn{lrFwfU!-z6xr`30%I2CHnp6MpIB0e4TXu*Te7<7gg`^L%BDcW zqN0l6B2b>~*?tiwSD?tSEZfNhH-aV2 zdI7(JS66|xhlO1JJd{lm(rOyKESL5NIzHY2H1__J0qF`Fp6c#4R2hPATu+fbBBPPc zMoL_{8AQoj5610eY6YU=9H0A%)kR2JixOIm?jatckKD_=7%lwJM%jDQK9*9t>;~zq z(Weoqe$Zr~_lR4VDp;Vye7(S(s?Tds%bJ%gR=cV*K9pcYK4KhY+~5BM7GBMzpgCbYq8(E= z7@j$6qk*Ar7%?Pcf&(zZM@J(zvzjAj(Zxon#P2xnBX$dWHko+qr8a8pu#ZwG%LGDC~mpMW12|y6>xV ztV2}0Ur~SgrC0>F%)18kSH1gh?^V*Hi}0v;OKu!2^MaO6y&4F2hPDgS=8IQFCBqKl z(#o2!g9z}P!Kl6~#kjqFHzO4cuY#BBJ4+HVqe}SG8D9;DzFf|R_IgbrNIiie81n&K zZ{s9+elRByeI*1T#XDvJ+aD#j2dpLkhm8_TFd0YLaIL1hLA?!b*EA{&sl%;p=OouB zyUoRWQm?_wn3KMHd!`<78yNlm4|>I{p;uh1GcdnZ2V01TFQ-{4`%RpjBN%={AgCDYL?% zuR`V(r&`XGC122%($(2=gSXE%3P|`L39=S8QbkTD5H%t98LjKV_UJDs6AlwCyNu+a z#-IeM!{V=vz>?2n@I-5Cs`iQ_C*d9|z7OnhnT6DKI>iMmp9LH${B;wUVbJu8{E6v7 zacPL6Bs8|Cne3jzaoJN&9@3{k*P2WEGwB=*e4Mv3iRuo=)yd;EQ1Gs1lNhb!M_}NW zopbaiQ{9#rM>~*fJz!Q5A#3^sn-yp)78VkZ@9Y0o@Mhr-xe~C71V`^pn_JN zfc+TXCJAgA8d4ynKkM@id~D&fr-)FO^-y>=98-bv-bQ8(juT6j#?M}hpxDVX;92b4 z0!FmeGnPhmDi1hl8Wl%#e2yNwt>sQ|$9O8>j){9mRxLRHgpVniqXCh*j7-*jO9*T@ zC({XVyO$m?H?hRP78q3_5qm|vc7Q`M9k;TX#@p)?!?@a(>THY#-uc3$>XEz5}_yLwL zM!LJ~xPbECx=R;0iP@1|wkg%wi&lNG^3^opG5G zgwvNJQDE&^-W3XC)V<@+@YFBlCgVV_aJa)?+<_gZF>bpUrX`9E8PHYky?4W{-w z2@LL13mzY^vkvY_hvx&EJK=>P#sbX){)D8BLU=(w!^`c#N~Y2$D@XE@#4% zOlOSAlHy&vk3H|}FIXkwOan%W)R3Drb$oB=m>}?K3q*plk|LAFa~p@^SL(~s@r$tZ z;XT${gzrLGN#ZM75zq@){`%QS|16*s3u^}LOcn3b5?sBr6wXoAj{utbhO$$RHT1o~b( z(M03t@1$)(YL_Q%_qtV>=e2z-@X3zP4Bpog@aaw$`*8H12PJ z?vHi?gU-GLMyxq1!lU-vf=aw>ix+|xlKO5MC~dQj$Q}k*t=~KJcGdd`c(yyk?sA-c zg3s_>JD)!p;){BDda8Hj=evMaZA(oJQc&lh{}qvpEyd7H7_}UCAi~5EH_#fM|2pAC z1SId)UIX7nR6OShs9e$bv2Rro=RkKo%Gw$lUi|Mf{JhB- zR#NPnzW?i4{1wdvuZL5a?dS#NJa?nc|DSn7WWjv}CTTL6y_7Ih?6(;`_nhD_hci=< z(D4GB+W1W;CJ!G!2t@d?Kd}tzAVbU9dt!;DJ9V7*ziWa1w%3tXA*Ccx7OP%Uuh=Tv zqxl?Pi8+;@kEqu#tq@SXmb%sI60Gr_$Z4l8)p%lYpkz>qAqai-H?VBwo& z@TB9cwSpJ)k$!kW+g{BPqB@!iv~>0Y>Pklg1B!xy5j%O=N}T0m?o-QF4n*=|jj;IK zUj!gLxLq7De?ezp>ERe)#c`odf}J{mhzPG>@iW}dgUB|2MT5Yx`(YS0&Ns3dqMIB} zbHq4_vCD1G0PWMp0rUQD1`|P5xfw+@lN>gEkA4ZwQ-k!9Jf1;qvoI5}Ip9^o6#SuZZXU=38j@SpRN_5S?O) z>#F{Le>kQCdc-S@9D!~deXR;@t*)OS_I>Gx>R>zWNrUfc_q_RB>+ zv%vkVEENKD?+N@WWj~;|t2%kZdREWPMmI&cJ~QWZOo|#(h6vGiFMzR$^%(2QE?hU& zoKFiC5mWvz`XhM!_`A5rG);9L%xw@)CXx8n?;!;pQ9b*4Yiu)3Kz zDOVMvK&{{$Y<+ea|-aP0)=8BU0j>hsm&H^spL}M!UnhPSR z!q4Ez4Ugu*UE^knQg+_#4!6tiZ02ZuZx6Qto@7kr{S=@|&zP0Xs2FTNu!&rP-7qw} z^`sW_x_$>3_}u`MOmR|3YK=c5wd_<2ul)7Qbn=W#F!7t+Sqis$;B0D!=m0wqs{7wV zyws_En#MY}DVurouGcmWvk?bo$^xO{9^lnT0G3-D*!r53PGa8aW7Zo~?JEc1=wa-! z?0ri`Q(B#P1ejYh{S(1GBz71)(#uLT&{hJ3Oiop=;$3m{S|)QU}<97+=BaPaGs;(n78n3Ifs?)u=)s? zLS54qsGH?Q1`6pq3;`h{w7`h*{PJb{8-d^=x4*74*m&?6eHP{G_OKm?L9_wO$2G`iHD#9Q0#TNY6Fm zH_rMHr&Ec02OzK_?FV4}acJgH$$8|;roJ=`s25`~KL8|!MZH05L`z4QS=Ln@fBJ72 zEAsOAUL_W0lg4l`$m(_zG41pZ;5M{xF0!DRB}KkvFUM@)7d8@i`+-T*i!Z}R6-V9O z{5UzmttBPEYvwFAXP9R#>K)bV8oXkMvil=zaM1y#X^QWgD)VD7B1DS4)m`$H&;x_l znK9*vPg|i3oNf@?;8G|G)TZzE1zGhxK&{|p2X(!GzloJ&)oKMM}iEBP)x zYy#DsktT=lw`H?vWt!;WUePtu5jGc!O&1*`!XlrAqFF@IZ`vI-HyaPIyir5}+ zFY!H_e@N#hV;bAxUs@qJ#x@n0|EUSk;ovlpNx(Rc9nlZhVcVE;!hgFC`%>Ge&AI^% zk65&tC5+(G^N47rJebJuO+9c>jrFx!Ox7OzGxu)?zx|Q1gQJ1thWZ1Y-X7zCVyu=~ zSxCAgYt68|LGo=)u}x}C-8}e>8rb6SEC{b(EEPdv(s7{5LCk4}e9u8A=%9Gr6Y<{o+leOA1hJ#F8u80fX!6R8bjp32OvrP#lwnR-d8w~ShTYY0$lj0Gm@$ezi! zOj(YsyR3ez4*vpG)h&TFu~bL(_sP#e1`0QpVlLa8rbzMYSHQ1TZ4I7L?nu?7+TWF# z84ACdDMsJ4#co=uHv6)Xi~FC4|e zYu11unT&6UeOK4IkKh%eUwBY!qG4U&|{`oLY`rt0gkh+Z{b3x15tW$Hn8HgZToH7QLIddQ4tCZit zZ|s#o)6P<}5fkBdeR7clp~C#}o*OG35pZxYqrHy6&{}vjfsvj3Y*FG!&0Yk=jrGUdtky*wmmRKchcLNZ zjE7r&=m4;Iwpe+z-rfU5(q`ThVk=cYe*#J;RSWyYpzV#ZCuBAGHo|vJ)DSZstSi!)ed6+BpVE#9cOp~!H zw2@Y$yx%c+ISn}tO#NdmFlYK^ps{EyFg$i1uqKE?uWzmb2FHozd__vr&w~-&{eTm4){>;mR&Yyn+d);|TTScBCM@ZE3SaXm}3vP`&L zPeax);*|XWB1T+QTdd-+)iJC;FyRaGTXODtVCH^WNG+3cn4n;E5{S|T%}MBQ?B$Q~ zb!+}4Oc(%uO0S=S#dpO?VIn9V?qZ+Rcm5qL=&>fOsq*@B*sg>Gu|8rCLF&O5$g-O` z)7jXwrxjVLXv^G#(QudSH~=|s9mjTcNuw?dPq+?D|Evw{q`YHPxDDaQAQu`tTA2xV z$YjbMLq%yHhkz(*H&j-L+I%<#!h3un(AU37$p#LiG7A2R%^B7HGho~o%w6}bEAgEZ z(DRh&!HU1WM#p;v6~N0-51SopqlPn#oULAsK};FX?jB#qAzb&C+3M}c$WdR{0Fxe- z0#)uoES6{F5lUWTCwP@jBlD^L9Eej{*if~(619!cWOD05Mq)QniOea8(R%-9rfnsQ zbjrTtH8H8zcs7~HdV4M7rO)Cc8jrOl;qvP>$e{6SD!s_-OJp*0sW$o#5LTr>0iB$1 zWgcD=moEchc(s{((PFrV4D5EA#WGA#VC@Mv>(oNQ;BEf4Kje<$ z1}MYmzKCIg4_;7_1>utoXy`yp7G+X?emN7l1p>>b3zqf3HE8ILjnqzl4bNm2I9z+M zACe^4T!q=M=qlbSmD?w>yc2$*abtIxQsQWj9zw6K=?5Zb^K)R!z&v2FK3|5Ps`|mW zZ^HT48PE@|+I#Tv+_@6y>-*7$3V$uLbwiVxqfucIo5;(3i{(D~swYA4 zQMb7-+DLQf2tvC5JpiI(`Rf9Pyj;T!0}qY@q3SUQSYAR!Q&A$eIkaD;0b$)S9jMOw zUTFq92{R>0TgcTpI8xS}Lr`H`So+PRGTe`fPZmyaPlrlg@sN*qwi&j%~hrH!!i{1ca~7d=}gp zgUWz~9sj|GL(7XD;Le#b2v~HQZudjf*!tRPRx6}x9;VH9lJP5Q$AnHMz|_KgFld!T z&Yv`rJ@0Tkg~H%?p3e(fXat6ulJ~;Teu29Yu<(^!na=D&H_>WLvg;0PRmrCftN#Qq zb$!2LY#YzA%CLQxB^m2Kf`9NH5YXC+qNlv6f=DBVhRWA6#c0>hrp=a0qQnefwm z^O%I!pXK~%HF`Sy+%|AOgU2oxv{T%nImj9}v}~V^5LN4YTojNx-d+w2??LsJ)L4za z9XzO#Oc-V6cv@qmy=;vINcKySpf zJ|(o3&vx2dzV>^7@ybq+j)JS$QG)XIJ_;|ZT_;e!W;J5D-alg=yn_5T0z*blW2}5} zoxt$Zx$x?Kdw>`vg9k zX<9rvB4{RLFlN?W_+-pUl!eG7`$uz7aGh-nKFmFJkNCMt{hM0W8EETG3Gg&cP~c2B zt`w1?8_vT+RXrY9xA-&B6!j`vb=E`bfa<`GGQ8o`coc!~c_3cs7}UIKE@>jg%j)Y1 zRDG7meL>hyngMi8DFAx5WpY1tM_|kf3RHq>4wC8mvIGWORx>1@MUNc9X3C#c0rRx1 ztP?kut20Ln+i7|!LLx?A;0kZ_p%);myKe_-It&EHZ+r^O>M!1JW*waZBF9$)4E$!N zs7S%>OUSc)FlEnL&E;B@Wzz*vx~*r~G=4XRfk=LxN1}b`M$-=yr9PhX;aC5-9%wVV z14CL&hy>wmpe3Qr73Cj$MS+zVW+-0+ZH&#s_nMA9Vx!M>8Vxox+L%F=Nxmn@_-Wt0 z1eTi}2DTmG3A7sZj#;}6e*?m}ZYD71(HdZE^Jy|OD@p!B3|-dWtcIVx&kCS6k{fK$ z4K`2F?-2t+sC4l5WqTt6vu(cvdK4XCuF;WVOpMvk3w};BJrUjaBE~g5ub;@)FNR`k zalbG9oK}K26_UqH1+|m!ej(mb5j^DAcKk!cb2C)~gM5!LcF^T#AVOBEfXX><#gqz8 z)ye9Qhbzdqme)AikDP3S6#<2&X-vxQHV4B%?tr=I6YD>C1B^izCbPwh)ISDs!ii@a zkDo#^#myvOhn4(pj$1nW+xJr{^q|UJ@aYg426vw=w}9?jPnqFBJ3fRIgu-ShU$KBS zu4D^+crBB3%M?pl$R0}J^j9huGgFzy2@9b)+fT@#3=4J*;kxTQGGglvG@a|dSYW2#+fC=Qj%D$ISzgXq3n z?JMS(nsNlF9PwOmQoiy4sAf-cfev%l@(1?^Mb~;)z4R zg5@n4?Bq|vW&2KGWOrLMWXeny*ztKQp!aQWVC7k5E z@e!WkGsV3GlJB}ChAHI*{K>f~aWHD{$U>|3!?H7#9K=p^=b98AD{`+TGrIQ-15agH z-ZAx-O1B-rv@<~(HB^s~akB>iojO|qHRd$-^xuhBGEqyaKqQS{4@@=t7U<)XC*EiH zyX+Bdqp;oz-_{8|z``EyY8Y=uB-&AFqJ_KK-VC>W zzH33`rk-Riie}iFIYWba-lJj&`V3XV+H6M;a+|xxO@<%eTN8oCF^)hhGh3j(>?~A# z=BF3o&iPuCtzBw&@mH! z%7Fq<{|5erjA`$9gOwoxe%_ zTl0;;)O#~otMWa)K{T7m;mbZxyk^&4Kk(lQi%&G$H*jCmt`_Uh{srX}G>8e+{~F~O zsoA|tqT$`LzBkN$qf|E?ZyeyOY}FUOwz;f<)1cnyS(oE9W89+l0=*Vd+`{_30xFX_ zqFoHPXkLf3jshmTHv?unlc!p`P;#r1d-7TpZRKXDC+5#b==Q~9LlcIU{qM|_EntMq z^^uvhz)BGHT*nmZYV`|_=epI05f7KQog%M>Ups4VW&^p49`Ok#oB3@vpk34dq77W* z&qCKt3}X#jT(U%4D)h_XRqE_aud2;MQ4#gGoR3AG>51UDW0a?;b0cW~m0V;U9P5Sy zHFG*Kg}eVRAUwvVd|Zq(Ea4{xqpV)Qw>pm z%rs%~>}73Q8SWsE-1p=oeO@zRKj$SKp)M)&;4o?B{STV7eg##Z+wUt`kf3vRAVS)8 z1BTXTV}D1YX*2^0AAKe>Ns%&7T}MdX%v4OtbiY}0XzFgw@W_JqsAuxnQUs^X{1y$F zCS_c>#*Me`OM9a-$+NqV`TOV>0NrffV_sY%C%bj4Tm$s9quA=l3}j}$E>4UasLTUK zj_8f{FTKys9`}OUwDlVyG)Ycy8~3IIqdewtIE(s?LrUBd3!oD6i>#dc?gQbPO{tGN zOKqEcn_^~Ne3QWqKePkkDZvCmCk_avUqv%H{KmbV4jd!n&|~+Q3AN?CT8@7z)GB*t zFPTYSskr=01od&f4{VsUA6OgmDUX0kRxdw(MprW%%apjL{nl=TCVKt|%>G+w-h%i1 zFlq7Ei9mHg2XW^Bis62Z#mL_|88HXX+Kn-2NNaXT;0;k%%|GDr_^E7zcpR(7$T7-* zJw=uqE8uon+K-7NH&LElx79Rpg!ir%=xK#(KVhaMpLIas@TY(*GHg(tjtN7StOOCd&%i0Tu`sBqzNv~SBEjH-%LvUKMeO~WT1p*y z0W&Ue;BwJUhU7auB#4`={hLyTI#SuB)KZ-^nq0(qV2I{XFFwApdl-COQ#S!UQ^ib0 zADRdvX(3rL*)1Me9wOvn&`Vbk!C0#?m3BIfsAc!204JQG#M}Kc2dMi( zv}x49(PY?`7Zc#8{D+YFosuNc229PF3XqcexX?CK#9oI*D~pxBFfTHoi`J@Jtb(8-=f_L`aujQQeI zc6webcA$0YHDKfEV>0VzlJ2z^4GoW_{NlUM{q}s8zj&cwoP3{z83S61j zsWXVc`9;9UtX@c>c<#Yi)tjgWG=F%*D*_h`H*Hk@fVC#Eh!EFe9b;#x z*wMv4Q_W0VFkD>YNRTsy{m>AhMh^ClE^xc79xaR%_uG^y!-`H=&kR##GlN+7aq#l^ zY!6WXn1bgMcn_^vG;Rv+i1vQbw9M%H0|h02w4O<9hYUc@^6HNV%B{wAK$xnPFT=`H zcJs&GnM1zEI*jjF@0(x_rtkhogi@-^zd6a5hZ*ecKzS++xSjK?s+(qIi<(w4D zFMY*jor+1v5wSQW0bO5=`%Lqs*00&m%FuQ!aPJb#4Uw$wQ6a@uu5K!s~tbAQIu?_v`L^kj1;jBW)5=eUbXTwTM@?V#UW zpHBlBRd5yPX)y-aGPe)i4>_WQv{?vLo~5QPU!VrN$DZjX3Q)a-?_M-}sPEkV900fe zH+Q&wwu@KEXu{{oeNcNyOrUpD`&2(EhgyI1==3<}>4W}qa9yue!xDs1V zT{8M#8=xUSiAIU z0c>}Iy*~C=c68OFL;o3dZnM4>f+6pb<#OXtU>C4z%H3b~V3#u|$HQ(q65TVn}fYIC517jX8l;J1Qjqg=qL_92E zJdac3s93!1^azt5uLmYf=?=`^F3yj7<6g-UkOeMHm-hOaMS}AEV=Dd5UIAk?d(AP@ znD-tSS^qOLmH+z+ji8(yN5a;Ex+hR_C+Eqfs&Djot)tb?`*`<{F6KIdgF`6ng^Mo% zE4m~B8^gW^j%*79VTo7`!opgrRpbe`4NnnA9pGsh@RY%Rm^H zlc5!_a8{gMFiG(f$Yh7zK#S)kD2nqZ?$mwW3xnVlkV>7NHPKDFE;=~&Qj)Llf~UPx0Bos>>ik25=0H>eL9vj&VJVRm+6u6ua?VYhgJ0 zTpI~@s4L|nc8fVI(SpN#n7V%#pl^myNCmEcn&E3BxEEj*JS{WWF!^>k!6A#p=WJ=sDGL_?9Y?2tN zGH-4N(P22p6RQ#Rv|E&wJc_Q80Ne1UA0V#%85pO&L*!+&`V5su71%SmC; zDGFiK_uPt;qgx2K!|)|Q$4xaHa@7ag2xifzH62RvzO#TuGc5iEqZ7^=S^bT;)oUAo z9nETBv-Q5a6>h6g=nph=_($~<9z77g8B;pYcW}^75P`>k`A^#@j!+`Xp0Xj@M{%TT ztYGtN>S%^~mE2`2pT`6E6Ls(gwqXsIVrzGcg0&w?9X@FPQJ|B_ct&y0rYPzsQ_ID7 z9wIaG#Md!>P_{u6dcaG)gJto`qqYis!hQ@K6*C7?xLDxaaX7l4{64RTW%7dx|x z;z1WAu+2)QAEaeawmBb!)n;~n_@A#7zDh`)N{U;}qt!}dS3atE6?MMXPn&=~L6if- zG%JM)pHjm5L;M$N#YYRZ<^3NK=C{<3lRSSpg(ou|>k=VSVb7^BO3Hhg%d}l_pmm5$ ziHXO4ImDrHTP_%GijqR)xR?B&GL@Ecu9xWNmYp_(sMv6hCz(9^vNZY!FUe@W;V+dq z5RN~Y6n`NMvE2GEMr$dh;P1)x@#d?6jj^df^^al!6AouLX5ldyb_~p}wYNznO`>F^ zjPDApET)c+aO#HM(oCHPcVxQ(;$u7krT(CTreRAtu2jFx7D*ZN5LocH*x@qyi{DKn zv2@N;L{?Gr$+~t6$l%&wHbl_SIzBR}k-{A|q86A?X9PxjQ&bd@lv>4Zs!vN_icsUd z<;Wvs%R$sH`>88@Iz~DJy;eaSanQ0O-lW+}$tT&Pit8VMZS6Q#H2>9z!Kdr4#c+>4 zaTeI{3srf9o00l7F`8voO?LveDRKZ-Z72s?s_z3`-u4CRtJoX9It)eNKDdgqL5JV_ z%@PYvP&oFyX)g8YT6jj@y#y_nc96*`v?f41&$TGGbL$`RUKI;!>f8Ip2}(^Pw_RX8 zz#p5l(demH5sF{G=KYZ<@V6!Gi2+gw2){8yNysyWa*pi_6Ip><5LzOrHfeR z2J-BQKy7v?rI-o)HNBfgq2z-{EkLK`cC;O|zhg=Ub`P;)#pRoXL&V5yXTvxOBhk%wy2H-jyaeMRQ%f>Xmgm)^xjAQ&b>)@!Cpt8RmUqpeLk7nyZ1;I z*n63gw+aNleFHz^DiyHU%LUlnXBW`L>V1Yz{Flj3-jF3t9n{tR*+sVvCjVkpy#}sbAb>mNj?3Bvj-@@9&JP4ZB zFd6zJ`{qi#>>BkqYh!i&JkU4w4$$9XJTUfk5YuJe5_U$b{*TeNJ>!1@R>WRH_{f4E zfR1aDfSx)>#`V48%6fUTLF4BvZ7NRDQdWO-aVpfD&k43!&^J`1QL(i^tI=zkqS;J6 zKvLXm;qji=&HFy3C1Q-*3XI>F3Cz1xCVMa23%l>P;fN4(d^kKS=aZMZAEyQ^EM_!S zkgzJ8I(Gr#I&lopy)X)>zg`UVePjd78e0vt4yMM{yeFpxJXi^g&^$#!GgBN)y`-AQ z9Gb`Yz5}{mmVkyOkAcQfwm@r-_pG$;_c{>r>5EC^yr&X%JiiR+b6O+AiK(osy<`#S z#RGPj-gN(MAVQk&7YmgwCTv12T1HR^15dLZS9O}iu8UE^XG=Pbz zTn@y=M!3CsBKgtxIm@PO9|)`*6pHc6@?JRH@k6bsaN}QJVyUv#$+8c(@v{9;H-r_$ zIlki0g9kkr3w+G$wWkE*cG`~|>q zQ)R%EPJN+ClzWRvSREdUnho_HjXrJhf{p8Z(+Jes3k~PnT?-;o#u2D6@iNfy9mP}| zS=Mx)MZ|=iv>RIKUWsbx$1>Bpwk?3_jz09u*dbp0bm&$IKc~4nf$qLlcxdG7eP;M5 zx)gno8aGBRhT4ip)Ci@=I+%X=Tq?h^2=7mZO5157s?3#<rmxTbW>*_Sn+!XP}dMHv&K20H#!hrkFSYc)au7wSzJ}uYe1{J zTcAf>Zexu{X)Xnf5$u}Z^$3D29J3zWF}!!%b$Ni*B1Mb0m@E{1-h;JMTu2G2my+9it-YY zxEZKu(-IiC`!Jsx^Uj_>84Z^3%c*52DGS8=3+1Yn3~^ePAu5Q}Z8&zvKD=dSgX-t+j<)u(2ns|V@#_H505-$CN#?Qg=eu(|`S3s-CwZL(oQT^J8m#dmpE^vEVd|-m$ ztGhvjT;|s^U8HOeOX%eBkdfZwKUTrz{#-Vqdlqjsw7}K4o`_#*|C@M&l2uIIIdb1L zV4!a_b1IlXY{x;xcxdu}bCQ@J7s_xoP}Zo4@YmUj%_8!-1DZyQ@OLjQOq8ZLp2`i( zC6`$_msL&2z0}%fG`zH39BGF8I2}Zo;qxGKv6|;QGhF71(+<|%;X8K9X<(nLTpv=e zn{Fn~X0N6e3{X)E249QiJgrx%%njB`zy6f!(g`GDP5wZ5`J4y9if*jMz}sG!j?_P- z26VrrN0Zub;4>V=x{_m`GjKqfR#mrlc^-mi{~mtnXqllw_6hvGdLcyb!7EVOU+n~&X=pEnYb+$JnmqWAC*d5?Mq zALUyLy!HK|K<7fLD(7kmuMu(4;3~GQuWS!cagjBwxBQcHljwiQBJp-CU~0#?Jn`go zJQ#I$Z&MGi5br6#P(Ru@G2*JMf>?jJ_4_XXjT+jmk)s}9@i1!F?`ZT-tnY#2EiYbX zp~jSRy!Cr3CNfFpLaOsTw!*J^qP;EU@PGfLj+dz5EazSY+AA<`LW^9W!ELB_HIv&Y zrEx1lKv^#gXVBQLv=!Vo;4Lj)0lc89&b*8LhHg?>qL`~!H|D^v%Wx{*X4&7MLXOXP zIgCPbvb+gDmz83%SLd<_L{QjXpku+8z|0c^%}n&@!5im!(6PEi0Z;2}GQQ(uFVUTb zvfeU$J0i9%?(UFF=~tUKak_G;$kNhD7(<7bHhp6xZD#|Lsz#pz7C3U9sp!5Zu-UQR z@NwJywkdIF^Gc8@a~=WHwsUiL&Mxf8fC>Aohj^&sn$Rq{t=l4os#+Y~D4)T8QH_xS z#|+yAH1xp>CA<@o4#^c3HV%-2fmh(2wrUA5dl7X*!-x*RF{RUihHbkr+=jI7!zYEg zV?vEs;XS~nO0n|RYx^?9YJPe&P=28ku)?twaLBs9f$G6jqVA_zB1QdI#OEwZeE>~f z#|1RxGUss;o>$AlwJM~$f+$HHVAJqWG)TD&(D?SXP=53(Kg=^9{g zcw5m3#`?|wDV^{;9pnj!iwi6Re?=5c&_0%48~gavaGma`(x zFSCK#z`q#m@hcYg6_S5yGx&w~S^{mLI44dp*1n_|c^aEeWCYv(11i!#jtVPk@NFDx zZ}T}X0J1tEY#%pqL`Zvb5!y3p|6Ea8RczB$5H=A!Sg2jT1nAR11`lf~62;_DY8B(} zARsQU8Is0ti-22kK+#FKvmCLH!}Tu)*B|H+#S@Za^Dg!uwS~KbPh} zO?S3WuE%=VhLt|nGTUUSeH%7k<7uiLm&bo1U-uNUp2ygWz>KGHKM9P%14FC-oPtqDaYr69}=PYiXQQ_YUhpnO?{-w1zPw!-mGJXsNeNwCAFFX zq;fu?siizbRw(}^1*q%$2drUECBxM$d9n6BaBw`-g0p1fOs~dlC9t4l0*(6Sompu0 zGL8angH>Wvc0i4IRUhWswEHbj2nxPAkr8mgYvU~!z@9# zYuV}U72N3H^Wbcgw4GbP$Su~hBondZ_~C0Q@NTFG3vaWQqAvfLnb)*;26l)gYg^nP zvs)Ejhr8snyTFJ+9NwbVV^zT#w|3r?nSFR7>IE55z~aj^L&mCyB&pN5yO4@(*Np^9GNPZl{^VhP^T7Q2E?aZ9>6-mmey zcGy116_0ddDX?W-uFND5UzvW#GBq z@q}e~h<$P|xE(Hduq1AE*gAuRe%BVmxQW7NTA-Q}dX8mg@*=Ug5EDNQ@pHZ-vnY!` z1r}YUuvvUL7rAMF;I*B)@1asrGVNIeM66Gw0!Ua#n=#|feN#Wl`aGl%5o`x#z%Q^N z6Byl$JrVot7*pC$gjArzo4rDA`dnT*hF-dpgcxCi*D$+?=`YyJ#!0+##=>$tLi%k8 z06NL209tmUjne+xk?1Pxkwci-gi{CM%2#sVm8wQ^H4YI}QN)p0wZ=gY}Wi2{!; zGl@d@zB;He(Q%O8&}*5G7tla1Nx=RKeldtqm%~va$Ai=1_MUGE^vBIvFipH4GFRu>e*DoHDfS-v zcMMs*3TU`OwPN{!J`*h4fd9vDPGSLUpdY~{e{MlQ`T=&KV%KW^WUID<*-EZa8k4Of z=+ihE=(YmQWFfhS%?077n}XprymB4f5jR=>WRpCg`#nl(z^8YCwJl=7pw`_Vu@fga zkxw1J5z~&?F7rUde@cN$_+ljlE%i$ZXv@MzpsEdpQFs3y&@;{g=LQtXLkpp(yy1uAPl0rnL;j2oZF zpnF{2%wfyI+6f$E=fQ4a4yh&pmGJQbHi+DZ{$ahF~CL~#pc-peY}59g)$)@+<)94m#Q z>~i~ruZnWzuH_J9V@%I|_G69>{fiF%w2EMEQu9oeaFhiQ9h?D6&R z(QRg92lS;oGGB)$XD3YhsIn|0h47?b#bf0Y+z}&Pe*mmhfIG&}-7#bno4zA}!!FbT zU61i-qyA5HHVPd+F9mWQc_)-{qi+K1E|mf!dvu`Qke9p!k>8oGOwoe{iJ-KP&-3CI zv|E3&TEbK+m6q2pa1yEWJjFkdgoYcZH;n_(jq3_qMiCT=|4U2&3V)tHQ zA@mVgrAWLo#oJTgoFD}Hc1)9j3H(NU10rzSEMSW1KA`d{Rr=TsKf!H3#2rGO@mnM3 zqN?BMHN|3qsDgH#H>fZZVem!_r##2crs^+V^(*F7)_-1v+i4t|S7%`+V{plQ^i1t^ zt_6%ye9J!z(&W0Zf@}Lz%XE z?*bxeHD6~0)H%@oHNV^S|5$tP_^7I`4V08A>4mgOGLuZoOnUFV_Z|{R2mwOxy-Eor zKtQ?(2q;CQcc}`}5e1|d5dj4e5s)SVa^ODCp1kk(-S6Lfli%-|-OfIHuf5jVYuA(U zq6^#>(^xmllzS}jbot-#$PRvv4AWQF@M(|a4G8kOXU+kD_h=P7A-(PaV-5GP#O=Nd zkL3|6SeHM~qhU3d$wF}t^MI3AxdQF1Kjz@IZ5OJbkh!Z&FexvE8}*0JqoD&|?71us zuhd_;X^_&eSB;2MgnxypNJi%s&w)RF&0i#R`WG5wZ2NY-`XxM??~26poyq#zl9}wRPu_|h%1?B3+(t6scE^GmZ7TB5i>UAd)1_?^uMmk?NmC-#mb}%Y$&z}s=gU7J$F8A05#&98nTaWW^*^-bGqM@m4LU0>jiIs=*$lO< zp9xQN0ClZmB8z3wts^khhegOLa0k}^Xa{T>5Dc`9VFPFezXW<(HZlvJGi=S+v(&qz zEBLJt*Wr9X<3keqOt=pW3;hgOxNQK&GOEZ^7@oj7)O|`N5K_&mhZPRu1hndleTI*s zgV+v*CvHNCOwZm22KD+(OsNFjq%4>>b9(;4mxv1OoU#}T6sB&Q!KFJ4dyxXM6$ z`7~wf7=+}UZ_k%Hm1cv*LNMJ6?KLlsK{>@E;jwB=6_TSCdsuv(@_GAb;QND!N{plW z$y>JtXlZ86XUwLwgJ)zHmaXG+t!M!!=_!1wGOnZG%23NBlpuK0xYiG%2w{=;j7O59 zKJLc&aBIqi-SDJ6E(7Kqc>~Pz8HIY6uF;g zCcVFmr&OO_65AWJOXtH^;~hdwxdF7;zXs?&kX#%&4aJ96S)YIkmYm@Z+p^y#AfnyS zVQ3QfcVvrnvEwFZE;+a?fajJcdW%7^TRm?T^E&mbpqXAQm{^K?lEZtE1uPy>zf6Do z5}7;4LIdO0(4WpANWXzvEVxtZ|D2CYHQXoE&wd$V+$Vet^nOj%?X=qu=+Q;k-SOy4 zVK>exBiXDL`op7Fk!|9mYC*P=ucv{jN)Glw$fO2mxSen9fm@qO_6v=2M@JTVp%*6H zV#PO4yG+9zmlPR$6Ij^uIy2S!SHt6Vp2|j-$uAY^Py7ORSQhQZusJ`p8ZM=VmWUy1;im5J6|1KKHEY?< zK|QPgUw7vPwJc$Q!4}WvEvL+9`In1h?|RcY+jOU`_|5*4bkZi0$kW z#HfFdVE?B*L+;k!_!rz5y>^B4KgH+nGK5%2S%Bib0- zn<}*UjDjRTOXIFaD6fzq$3I|B6ir-UWZrTd^g0`E^X zZQB-|UF42*@PPaN`(pXji5RTmcNZXATVeb~?+FuzNW?#Um_%${S9=F&(Y}r!{b2f`{C`weiEfqnJG2 z{4Q#ry4IDRf>2(Z086kJw+@u{x59I^6U0bKUC!Q0W3FL3eV-fb@}h#ow0T;^aubYS zVZT2^67%azfaDI>qdu zqA@%2H8N0j8OeDjkIWSD!h&!-68#U^DBW)`Dw5;0AMVCYq?G#nQYsD41+1-a>H|Iz z{~a|%{EsruZO9*#LlzL~aE;ncH|S619sK2wOyAa*=r#e?L6|xVuPN+KJ6Y*Kx#}FQ z19l56!KZF}xA}-y)V#F%&(I>Swj0&S?#EuoeTpX^^x8nn z!2I*oz{LC6K*dEyD{ju^5P8D*26$W@uLE_~Viv>Jel0u>2h)Mhi#b+__;)nUzhi?h zwL_UIny1p-I^RZ&hgm&xV5T}3U16`bz z2zT2{$?-oj8kjtYRPv2%C)#q~ryz-ZbuZMz{W1ps;PT`T5pT94Pw?yHVG8&(Gq(Xf zEvGVp-vVx;5B9G@Q0~Z+hGgT1!>6)RL64|1=AzY5z5sD_IV5oqF1d8VU8&!&J0q_Q z`ASE5?~#gUf>LRjg zyJL52q{mJ)UVI;_)$9-1*=sIYQG~(=W`#kK`YK4jY*^D4y!Y z@ebB4;Q6o#p0MylNK!=cOSltPknfd$F{$V1-N2y6m#BQIPX*k$b z$4)?BGE`>J7f94t)E^Ddcutt4R!LN9_O%;<`eM;R#bo~i9a&h(rg2TD0@t0G0*w8v zlc1@?=&_`80T+-m8tQNcP0=HS<(xQ;-HNNtKoC*$;YD_wS(!Nq%C8fBLc5UD@R(JJ zDOXjoJC6ZUMp?xPy+z)IEo4x$>4vfI)cHQ}&G48D4WH&U5$;ae4LJ3!S-kas+cX~f zgM59M&jO@~{pKk>2}a3apyV1e>~Vf8)o&|8lyg-l;s;a2t9%9wg)dmYoigUik6d7v zLi&NJ2yDhj4ds&iRV~~BAB_ZtSB(W0$jXqoARW_*5P(cZxDRO&g6FyNDtxK#HNeb6 zF~F$@Y1X==qyROQi$OB4l~n1vk?F1HALSt6kj-Bh6-jNeZ`)YX8m|{6^ZvL8(p9}? zlhv-8je3|Rt%1A$4`j@UqD#cT+bN8!thGkSH>#r11T&~oj9Bzba3@PCahEsh`aO9~ zYcUbUP8j}%lAa(Y+O(Uf4l;UX8&ygPAB4f3^r%9-yv&Lkro+-^WbF7t19#Xhj(MWm zZ85{jn)pLS#b$9Q6OvH5I`fo~fZS^lnGNOo*KZqeYeHBLqc?-c$q*j{8T< z5LJXx=TCST%>52-zYIeCqtn@ICEa3ouRQoKu)g7E;B+q?Ml#yFGy{XrQAfv)6UJrw z)Si5E(9zG(TsglRh9Nbl$jeh-uv@RJ*kWvHA$7a$$8?T%)d+Ll+#l%PMFZ_0n9M@R zcC}t$URpH>UdwINg^pTw(~`TK0^qs68x>nvl~7J`vu;DOI{srP5*%HR1R5*oOcTj- zBXw%%F>*%yy;mS%rZ^WE)LeiNvo7Qjz0EhELg2xV_;k40O9bWpgraMw(X z-d~Xt|6vcGJcBLZcKJJ?{wNd+a-YFII#NFpH`nnG8`RDtAnpT7POZ2g#_NxIxI;8| z!Th*_w66<@o4NQH!W3QOfJH%rQ3TK60f_at7TUGfr9Oz5dOsNGwu$ZF(_~m$@jq}6 zz8It5Ak`UQswWR~$&ir==wzU@}vQtw9 zj-}1(b-ycL8`A$Rf3k1^C4Q97$C0A*bF#{`(WXFk;76dJuHH}929gE!>KTL3f{Yxp zdzrf(JW5*{#Oa%0z(A_v*aN9FoJml>K(+C;+cqx{6r*92CZzGE%Y;SwaOd6c%_me3 zam^5Zy^h8ps`5kxqO8nz;Q5GKOO%c{u41Of1y9klsD@?D)~q8Y9{+9P!ijp|s$QiABB|c!Os%n~jmz8)Av|{RBR-t? znPB{~1WJ8pZ+6ob@5H_KaOF;DWE%CG9q`DyGy>!M{|c0!4-{39U)v5}&U9N~#M5KA zwZI6iAM>;w<|Gxk00JYH=PQAe!uJ7Pr@R5G$G;^mKLU*MuRzf|$1@l2qC%iP=oQfa zULIc@eUXcgRXxP?mD8qyY(~GREb;2N7{dmK%t|LbQ2sy;44>%-^nOG28EeK*PPLmy zC2Hp&EN4fPN$}`ra{Ac+!hTxr*}W_g)NdTce$tE;=y~MUG&PcbVl^GV4CnAfqnOLa z_a2+ULWOsCK$NV*awhY!0hat#WaKIJ?iC2P^CfbKXLUNzcYG8u?_QB{GMFYz1&_I& zoa&mf8?EiWWg*<|2UfKj?8)L&QK@g%!Cucw%H+Gk3|k1zJ~)b$jx)(bj!W)uuCxPA(7syRjlbJ^u=10&sS1&$~C%k+8N~^^C!%kunC2XW& zMJ(o310IXr@GB=;(C&vk;Pv>jFVJ(E4yY@Jx`j@R-#g0K9x7$?RBW5mTdqKq-0X&E z5G(Ifplh$B2MFu!CF~uiSoRLigMK6V)bBD3BWV^YXwDD=S4P~CwKX%9%Z+Ru6$)@4 z&cztFNivhl_N>FB7SqUcR-x<{98WC*>W0tY^M148ndEcjf@SyIVm1y!@^3QHGwV*o0R;h)*y5_lWOF9ljTp98wC zZ3cSy-UG__tq1vR`p3cTe~N+?)_eunam^B7o6tR3p;Mj9sh# zc9x+fGxevKah~~SsQr-rn6^?#Q*Fj0iEHOSfZhoe?EK}b8HV)Avrwt1ik`W2Jlh61 z-F*{rF#0;FT>ld8K>adc_-7q}MXTNeOS{g%jjd6eO)IR=&X440F6Iq4qHoAr`VyI+!6w`A0a=^6!Pf7zavi%*SI<=)|@+Z~eM&pC_ zGAT=}|K%P18_|WQ$!E$eU=Z<`?j20W5VvR7n9xm&``6YW3$lv zc}M?+K);Wcr9epkKm17%9oX^9z2*SZzWNHa2)w0&wgy`)Ce^#G+~A(2u&{K&e_I=S z8y`oN<^Nu^m&X3Y45oRl1^YU_TMSuK{q2PPQpmy830xqB<8*Us!f+W^|$bVWaU<{qN)jk9%xw&rJg`^ znLyViJ4AKe%!D}`+LJ0e=KU2gjAA`|08kIBC0e$DwW(eM23QWs>YmA?gfd_%P z`<#Hv4q~rj%8#u(9x`T%l{KfW0}!eIxf&Q2LXnE-*q!Ym%c5nRvMK^n-(?(Cmm7}G zzy$aC8W=JJDjbQv4@Dx&xwJ!FUx1&b*l4l+!zynlJmEdbSEbMILm)M?9>X1JZw?Zh z;KS~N`FwUAS!co-51@YHTA+L;dLvi{3r1q{AV-RSE*8Qpo7c3mLeru#jPLwn9}+wF z=?(Pmas=`e^}Qzzq3-^SPFXaL$59mHe?fdm?;@bp@bf@_e~csWQ~nAJ7T31|L9+WS zSmNp}CK&VLuC$e?a7lMIblzL)()_uf1Cr`Zc%BEMUbdUtm`)OVhIU66~zt^=zN$X&fY_&LI&>f+qqU&x4;Z zhqJB)ohBqQb=ww^?<+)YBoGqMIE37I9mQR}wE#7a3VaZ&jGewx{a0<}F={C?W^eEyZ z`*i!?d)O7&y`t;?11mgph-tvV@ZcS8~}#4 zx4j7pXrJ_DP*^u^Jjgo5p0MDK8?d2N5iazAo) zdDBMRzhhQHlDMy4Bc3Q7^^~)+1D1s$a9j*kaO{WgfT?~l#{QTIuw*X&sZ)XBSC1jD zh?EH+R?O_TsE@4WZ;?y4aXcs$?kwg`Em}TdjU7KT!ZV(Gg6Iisb6g}$c|plY_4*Rx zJ0*~MC_3~MFfK(9&URTeBHB(Fiy-x-mt+FWL0#EPPw&;&7=G+BWR{2|F zMCR*d#B1&JkH188!1yVmw#hW z=W{kOaTIqRW_;d^pb5XR#hV|$GScCbU7y13o|FOf>FmjDL;V9_xtQOZ!`^4mUlL-R zex<^8x9!czb}w;q*n2e}@Z_9q+>D^Xr2RwJdriOv(=y^+B582qm~M zd~Q#;qjIV36TT&3l^cHqs!~Ve5(5PvS6@8FpQyVtjNUg%DPj8&Ju&_%W)!DCo{#Rq zt^FHlP|3aD6%!-q5bebCpqTebOC*aKvK5%*mLrgzW2H^&zB-NB_4W?ZCvUwCcS`Yp{BkFv)>z?Mckpq2Btt)->t@eC{btX4A;e+ zAySLmFoW9&JE`!4eMUZ#VzDS{M(A$DXAfJ&*J7^r<^mq+3iNkneu3#Ppg4kRmLb>J zza}H0Z1+=O;gcv}vA7SVVia}?zn}Jg>Trz8#GTw;b5|iY>=9LQ@@jWrR^t$$!o!G} z7OQ;Vsj3b$!LeYe%cH*FTsJSFXw+ZUBFdx0Fpk=M7M{dT^Z#dUJ#$?<1Qi@tL5nLs zu>&#GybJ|D_s%22`}n`Wq*RWkl2%bVGR{*L`ZqwaNVZcvfWCewY4Peebz#30C_XaP zEsc8Ba#jf2HmJMyf3GA&pJZuE$5DKzZu$u5^5+Rt3s?k_$C)GWCVx5+<*=TpgF7mY zl3n@BC5Wx^bz9c9=^eXoeYmA)&48Llz9Uq763;|jR+yWr+Tb(p_;xJHt>93=vLXZM z`Q=|g-GkO!2KArP9!>Ho5@!rEuJZ#pIl;m%)HP!pATJ6DI6SegyIMmv3PhZ1S zO0?eb4KQHV6=1Z%g7aMQG@tP=FlRn(oSe%v7-}C-(rrKD1cckw zEFm|+g0A6h{8+h|P>Nlitu?T2L69>qSjX9(_it_)~y zIKmq7w7aZ-I?O`s393LEn==7G-!KYjz~LvrpgvlIDvMlPD(*>%o04kmkNbq=hrv&> z-r-0ik0iSky=D4Rt0CCI-XM;Yb^kLRlnYzWRu3i#>hfk|o5YYHrL-R_%eu zqqrW70b-shfUlkH3SjR)*!?&A9*5g6*%v4)rf_C#=Owur?^htU*lZ9&Y;7`F9Bp}p zD7W6uu-!GLmi?XVNF^{WX%&+cx8?Q}*Jmzh=!n`fL_{jF=88+OqYf>_xtrLs4-i&9 zXEV?#sD*mg-Om!9fY}pTEuEN)Z&9nfwd9zh*D*{ezX^2xI)HCT!n}?g-6RFsrdAv= z4{z=VPse~Lpq*0`Q@JdTKshu^Q&3E?qEOjGzefuB8xR&VwwW71An$q0>Cs>AieMsy-A;`SZntIgcqC9mTyTiVyc2xVL$v6&v0^>PtQ}`4dzq^2_~jMc)~C;*N#DW3dDFzcf9WJ%!ea3SRqDHue#rH?qir zuWo`1F#aD3L!PDsu%edY*KKnwwEu*mtKcq`t%t>IS zrHAlrOH_wjW@0r^tOzQa+9S$6YAV_~Xu%Saq5W$g1l4~q6d1hb0?;eB1?Ye80;A*Y zcu^ya-Q+bvMtZ5~Zx&JYx0oyOdQ}Kd%2IZ^79JykE@tCNE^IOUQ!GjZ%smS8Eqb3l zKVfazm2a}W6A9FOahADz`}^?6UuBE1fH5u{07R+vnB;0F4mMj~`wbD!{aGwO>m$Ix zzu$ujmSuD|t@DS3s^;u~+id}b-`_=8o&GWGSPSN{9n316MXRREC^Q+_l(Wni_pq$6`91`v$1; z6d2tCV@D=714w?K?xz`NcIugd5na6u-?G(A!w3}DmFMt%emyxE7{9Lo?V1u*1b4*c zOG?~chO#0kZx;JA#je$&Q04CV7`Rt9PXiCv?3@6*%R|GK$=w+WRC<5RCUKjV29Mj@ zZa|-{)H>0)QVQY~`{p%*O6ALegI4Dlg~6u%hfnnFyu`>Kr}R7#VK>B^YeybeO5o8A z3UB=`h~LB@_~ZZlgXyP#O>&0Ht$@jLbhY@+Xz(;{qrnZ7Kf_~bG}IVB)5eh<-Q|KE zJ-#PF-9+U0<33Cno0tqhefe z*Pv_`~F`fZp>MX7tExH>!)GgnP8W(IV8qZA%zBSLv+|Av3e1o*Bw+W%%sLD-${n|en#?y zI$8rGt;FP#E2Iba568Rg<)LB_WS2c6bJEy;uA}Y(b*d(`Xmro7AqI+#>Q)V06T}v* z`V;CI`lOJ3P>RQPU|M$`V9SVPNOn@%|JbzVQl9fp6sYFUUB;mSxPGQXYgQ4XS?E{~ zB`~*-%A!p+%7kq3Cl%MCJF&;5gw=V7bvsJE?|+spjjsm< zyh2=B&17Kiv@d{#51-+JldBjYo}3A9xhJ|^DR0O!;Iw=5fvTfPK=u4BKo7MIYO8&E zhh4kt>(Z^C&V1JpVL-&g4zlrENJjxc%uE;bte6Ak&je}U4HRB zs&V?sa>h@H(ENKu$f!qMi-GUFC(T1}VB{!Zkd^4M%J?29EjHHSMC+(3Gd2#4f8>{> zdDbjY48Nz#2pgc-yXSVu(1hdp!+r(`AQin z9*FBVsttxDNUD0@%Ku*RVa#Uci&icPvU$j?B0KM<#S-)44t)WxoSlxfO+nIxvb|!Y zAn!=UTzfbMWUF&q2)A!=EfYtDzTr=1CC!Vxet!U!V~&BhLvB$-B3HCC_C(L!T?}ap zLYj=*ct~}#_8PyxiB>4s%V$%~DL{E=w0!pHFF7PB68Lb z`enmk;6`i?NhSTJP-nVaW}?VZKbMz z8xa{ljl7s-yc?MI&qJVM)+nA7QQpOe%8)wfC6!%R2{}FDTwl3~yGa`d4d(cuE#*@B z(^&{_TEb?rO4o`quJL96r@ycfVVMgefJJ%FfMx^9vIBzHajL3r$ype*Tkx(!2*?Sy z24$n-KHwpoZix*D8hzzgU~%GUpiK!`+zCfn&{OheLfmlbyLdgqqLj3U^IbE5`jzbF zV&0VkV{dXqk!<`uFn<`+OubzVRJ+|KOG1Lmgt?vb@&rN)mjwcC2V>nH9U+n41)Q#r>F+h|4bu8c5Rv{LQ%gm1o~;t@wvd$QU5)5 z9J$^b5wbDjuzArPD*4h^D}b6^f`@bOS0eW=TQ?X5N*cTQ|G78B%g7fh$$uJIQ@x2F z81pG$`|3(up?|XHkV3g3?2D@!YnaCMF6GlZ{Rs;Y_011>BDxdHG=2#s$ti%WtBc#g zXx+8m|C!yuEgnDL5;drb>$tXAWZ)9GO*w$HPES^nK(5q0P2E0L8|n;`51@Gmw$qgtP8VDZ38{Q z``h{=f7dl@C_uTxsb0`4P8=nEJsT~Ud0^QaJd)mLHL&1YLHv75@Hq5#?p*2>Q(YJ#~STJT9BmfJi9!{zHfo5emAHsYR)vETJ^g~%!&I7fquTi zQu4pnI&!HUKm{?Sh1$cm`8f1|?*ezWY``4!Th>zOvulXy>Os3^=whPPXY6OR8COIB zd_Vh@wMiXI<~17{Pfwq-?2jg6+X{M3%#s>Oqt;QZY?@gPb?`HiL|69!O=KzQde5Mx z8oeUN1k3$Wy!9}qi9alI_ir}^zPN@zpq}G?g7TJ0B~xx7NEN;qAAy3J3q1hJA)sLY zVGKaZJPd168Mlrj%>D3nV-r&;JasNhrAXa}Fs14!u;vJ*)8ps%;O7x52ElFh$q6QM z*t`=S^LQ{afhG3b($zn=U_D|(=^WuY1~pe0ez1B0ZeQehgOjH35C0}|50Yt zbGkjstPU6}9@G_)?=s@cjY9*al0oSH!=)x)G3r#OP(S&b4&qbMrAKkx5?WT)!AL8m zeIp^ta_3~Qy!pfDOrS1mJr5;Cbr*{jG1n;^vh8f!qKMhR@^o^k`7ziKa(vfTMI3EH`pHk0ty^Q-Gmo!MLg}0R|PJmQ4Ut=-+nd zRA8|45j<8n@mnyuMVF3nm(>(u3|Ib=CqjK!)3A!THrx#Q+5~Kh*_W~mrm`C23-q=M zK>-47`okSFp%aD{$$eR{%`g19hqFY ziF;EWH5G9C{aeBOf{E)Y2LR2E{R{M0uL6cOwr+V!d~*!m>`r@uRS|cL?cF8ir_StqoYp--nERO9z<{y; z0A(ZZi>f5POra*Pm_@?6hjQnx`tP>}jtMESHAZMmDuu%Qo<9py_U}a#8D_xDFETHi z2NYTFqHIR_yB>s{M}s;*os8h934+;EW5%InLcb$Rq?AH=KrK3M0(LuF3{-wY(P})y zV>>S01K@Vw_<-5@UP|LnP|<7t4G*FTKfH`;kl z>nVBJ1sYi$4jwY{mExVQf+Z9x>hjzUoQukzGM{j(*B#0)~_#ChGT4HjVt^Rd@>XFM+tZipg*noURADiydofNA@wkBaQ?8lOjyo zyx%XEf=nr+5q}+*wc+JQQsEmM3NMtpOg)NV>ySx6yZ7WchX>n`tD6I5$9+~a-<|OC zIC%w^|8LDeXuMk#FzKuoCZ6i9c&2sE3&8R;}t-U=e$ZS)}Bo(cNLkY z#KS;?_Ufm#xC2zAYgCFCFmo~0 zX!2ebp>%-^Sh4dma6lT*1zBc`Qx}#Ust}|eObQ2C=ka|(=f)WXI@N~KCjY4b*uTOD zIB6_ZmU$G*==2XaSn2PuJ}GV4Ef!p+KCbAv4%pG|8M=_D<4fR9iejNMB4GELNO`_S z*uk(=vKSkUK#ToU4V@DM@y$A{X8uebaM&Pt#c2uO6&I~xnc^KBME{!PvlLpmLKof5*fbd9023SJTl#mV;jkof~Shm{BpEFY#wuD%r$!<1nCZ=sU6D zLVoBM_!L&G?Zlg8L#=fXuTP2^>JLxs(+FVCRbQZy6n9PnCx3GvAr9Z21bTh_45<5Z zDOw^tIfCzyEzNJ8Wl8y!c1zQshelOW*{OkWyLz@`61OLY^(W7g{RoVmmCnGTW800g zq_TN`GM&wOTKNc7fB%U%H;~bM0O48l+3?DT#q4Mt#NFrWJ;V8Qr0+`V#`y31)0gv% zAKfn5`v@wjR(x1lg&Sz`{g=5Ig<=;`@l>Wt9t7ow-?YEQnn%XbPoOl++&L%JZ2@(x zxh)H=bh(9)ny<>>c6mD(=sp7sgIjG=R*2^#50ZmZVqd_rO^bev1XjWJd_m`^_Rx$a zE7l{Z*PaAE@5+`|AEs80Sn~oHr(%xTBf5*Mn*2#sbKh-z+_GJJccP*Qyq<7os3Q0q~>Amkb%q7Rp{sfzoB@=KJN+4^;rz8 z)KW?;T*m{|U&_TDb*)l@oRn9i4KzMK1M#-{zkvz%8W2~$D+%tZ^P_?FjU=(G#Z;sn zw&5mxF8D$XCdyQ?aJ&6B9q5%ciG>Rqwg8^+? zry6^K-Y@NuEN+kx$f9R78m14zz}Zwv!w?L0*hPAmltqGs)z*(d@7j*_V5~+pd9iyR z_9s?5(}2zsop}GIm-sq@cf$n)>7I~rVt=~DV#(fV;0X~Ypyi>|G?`Oh1A7{W1KZ)# zZ>ViRltJ5R!up6(>O0ZS4*39o0-3nmUo|))V zvwReAmtM97wpSbm#zhO3uJBJ`kY^{LbpyM1hwt#+P-LPRyam3X{@9d=v#&d$MU+y0 z{_hAYS!o6wyyZR6S;iB0iO;%V>u1JY%oIap8umiTSoLb)=AG22bF-$-vNuWYy@}5@4LwCQw=Kf1UYd#?D8O>PuP`zKQify&LHgGQk2E z+C2*OOQ^UFcgYN9WEDnw*^RpoborNEux|PmE)!wETW3o>sqTP2MRfY zoHBjNS)k(@HcHTM-vg7hw$x<KrUUcno*%JDfOB?dgwkj_>802(JuerRp4q04FYx zfL^O-0ljr^k+PvHKiM?bFeO(m-V}0%dm6Z05@g6;? zq@%f`S;}nQ1$V=!(J&C24{k%jTxTXByy)FZX0Gf)qrBrSs*wWi1WZSjh7>@aJbn~* zzSmg|lws&qD&}x38DM*b*gcuEb^+!;+O47@uSt&rjyN$5I7OV$@LZ7%cXXTGz<5k& z+CtAa9pLMd<&?L^1inuH*94OgEcFCm&VesEg~HVLI;=ElcqyAV;`#-12P14^q8(+A zwUl@k`|m-p5jrTzyN=s}fSTu2e%=#pI6WJhCXCDU)fbFY<&x`qp6N|e$x$J*nGcc7 z;U}_tM3=5COzy!7{)BzOK1B6fZ_&`M#y#PS|MmjV)z=fKt$5pNPj#6{V|Kz#N?+x5 z+8Jhj#1x6M6|?aBYqCM3M;uBrk$ZzrJgRXVt>Cs6k>zayfRjI)4Rjw%nU#HLn8_{p zGK`aQBdl@eu@jW#H?x>m6`cX#`&}#YPgelUc zr)Y?b6~>s^jQna3;?tLn1?D%A>$?6tm>a(>Zc$sS=1h`fiv`t@Yr_*!^}zksh>$H{ zi^=vK0=lR50eVfE0}RW(4b1D90jwHw259Mi8ko|12Qc?iH=t^LgNZRdCG01*G6ysl zAuO^S;%O;Gjy!E*)fT(CKjpWPsuQ*#%A;tTxSCw=KF@?B;G!RfnixS1Rht|@tn%7= zU_Cx5<}7&(s)U{4wQv=xpT7A7!gE)&0H?*-0X^=22GoAu9~g0UuOdRG!QJ7IRO?qJ zeh_!B@@3T2x)EV=CrtXH!AkC#AnjBuss^8}8eq8fM?@@jp?c~3&aU#+1-7k4An)Sz z8nqn}Ub9~TeGAFi{wZ&P$%`6c;wf+eA-LA}H=v6}89QZP%VMg!6uZ9>CV$)+STvC| znsgx&=oYmj;0FT-b_q8Ef9Oj&k^&lC>8fC8=9n*~&7 z!=}M;gJrJRydPM{lUR{Wy`ilmH&Mc6{S0=$*+lA{mihM3L^diE9dj5syaf$0{w*^L zd6$NG#j;#_%yN6fV>#anSp2Bcq-U?5*y0H51+D+HU|S$SDv-r zXTvYRYbF{NK0WU)MqGV=im=s3q@c%ui7>drz9+9Gm|6p?7tUb05?8*(c9!b2iwN>* z{|Rx)-_*Z4eFJK$8&(IA0zX4H>h~;1bl`51fBHvUG%$Cga`CbyvE$BXASB^KYC}bF zBQXD{#7TtGhwb3emCuy7k)y1}Qs`wd290i9i_SmZ*55cBcO>tuL881nA3=adKAMj$ zu@0szjJl?aXjt8-esbtUjAmh7J+hh*oStS-kwbw+2u7*aZ>D=?Z2=G*wgBBlEYp{lTdf*CB-cF zqkT~A%HKts4OxWEeU`VnFe_DC9a04zIceM`M+*Fh@d+~~h(f2Ev7w57Uw{K?PCsVB zUEKX!!BI^Q;BoBrBMRYoW-Z)d2R4dFl$HZPbyfOoL#@S4AM$_C2w#B{t-F#8zR%n~ z8t9!*jq6<{Ob-7H>eRrsAMp)2_cp;(u%rSQeX1W&)_*@ER9jQzO6;D4)76AWdLS(x z$pewVYX!^hyYwtDz?4cnezYGSN!zs=o{Z#BV3u1x&}s@Rrp5^^^x(c%KZ7Ue@E1VY z(SJ;-8>FhUC*gJNJ{uVLbUzhhUhWI#=G>S1+;t;&k5R#SH~OFq&nkOt4x0ivBDj> zg}{m5vT)o1`P>|mXsxGc_amc-`fUX<28f_2xd z+%4j?{w47F^{oSjc+3aZcA$A>mcd;iXvF#^Hj#QK+g&!O5g8PJdKd0q2Wjz4IJ*?s z)MqZR@9_9(L^UHVTygChazgb+UH zHRO9NYsI_tKt%GG>%g?Trx>Bu2wm^9mmC#6C=lqlIE+14?zV04So(P|S=9H>#PXag zMl35F5Z?aEM6PM&4`7bwSBrq|V|Js0?0Ys_!t0;TEQ3B{g3w!BLrYxBZMCZ7)x5|+ zCPkiS*%i@``GU$393gte$iX-Phe_v%A8sn!wlP-9+FID-Iu8QBQPe-Y54VJopP%KH`A2Oo3a? zF_Q78C`~!?7f|c8845ugVvjdq_=(%|eD3a2TZayM;Jh{|oFgb16%y%N51ar`RJb=H(i(A0~NW9+T(p zXD3yuBU8GTu-(H?%Ybqjzg?13R1J5|vvD*fXRH(y4o=?upZ*8WC#t?dirST{joyDG zIk-%L$J6P1VBjC^fvTE8^@-N3DgKCg2abkQ*T<`&5@fnqJbz+)_Rc`ybF5s*>zC{1jiee*C(Q_f||* zq6&YVLyGvUAAxDtSv0fFY+388D}mZ-Qc!2H8JINgfswbAfs0Y>rHXk}`({hefD@7} zHOwey9dsE;s$rm1yR!;m>Zrj6MdCT`IlN(KGJqK`X*?7{GN66LfiDZ|e<4dc z9D&3E467BQ#G$`3RoKWAd_&4Zo=hs)GYml~-n9(M{(|+(-c7}wvx_q{0pnz?o9tjg z1jUoSWs6q;Yp(4_&u;%s66V`N50KWejqUNm)ZI#B{G`_pMo`iIen6*>ni-87g`hVl z(;!6~7gHMD9Y&%Ek!~T7#%|}?wM=oO>UMLXTQ_l>SbPm_c?e(m=b~Te@o|GuCn>E$ zMb;l6%QwiyAhbxCJSap)nKYfmGgVFnd;VE zk*xV|1O;3C1B@5PuR6^b2(qhj^Dp!UuGYdX#P67ULUR`b>C@k?hBtrdPGIwo%V6-@ zKI4nkTkfIq-jlBwRE76FZv^`Jo(6^up$%!-Zys`UvSjTw!+J7y)@WdK7_IEox+B26 z@N%GRz%j$S;?h`*+;L=)LbrJsg(=%Ug1htP4Ip0Up;SVao}$7I`_91Q_CO2tt|tv6 zt~Fo<4cohAZ7hsU+}mi4O{L<~T0B^-;Cmx8*BRrdYkDGD)7%t9`v2iiaBm|xkn^h}5T!XOYXPtrScB>64XA(~Gpt<5!kc6pWMQjvBZYn$zu3=dJ4htI< z-~S6nv(>Ia$<-f_RysdFjw(U}3gAiVunq&LqWL6fdO}}dr#(x6nyI%a@lmyj;tf$} z+8UeMO7TV|h)WPxcBDj%M>lDn%5@Ii?Cwe`DE>+MF*Qi!_r+Z_sKQ7rgnJ~wJ;0g- zx3z>33C+^H4W5cG!;QS8%61)4#3o!j536}iJA|vd1pz&5KLG~xs1`*Ci*bT4d=PEK zxQGYFS}5kFL*UVC{eYpimzi(OpBi{l#|;JM{74C%;{Gd8b>tjoPf$E;_@3Ol)g=D@ zLhxT+jxTMu!aH{{^Vj|$m6jSu#c`YkhJM+@jqqDqP!pNw^+QuTZpY*rICUg*&AEMp zFU{}WA0C&L*+6YHX8K{-8?pb0u73lRt+f|608(cD<7wn8xto*pn)mK}*y~@WOd0(f zgFMvS#Ad?gFZ|XMB5INF917NPvkD=e{oet-yLSLaOsv3}qTU%#;f~ibB>mJOV964g z9SW&YaSbH(wx_W9)sm$7S`u^0JTbpD^){MIa?cF`2D^!IaB$LnmL}8fF2cGckbaF* zT(|`1d-sH}s6tjyMj|cV$*i?@NGdO=LerolWulW znX(UajyT?AY-5UrRGu47dq!?H>#`9!ggn$UJ~k=~L2^@#L3op9v-?teFr9wZ3!u~F z2B!0kdPp0(>%*%?36j~bJMkW@N@v0DzyNCm^RT^joyoV5r@eO#W<)?888_l}wY8}k zX6X!u5OltjcAF~0<~&u5s{I6PGE_>sk8uh?-o`?jVR?+&EU2HMNWpdz^D6SAR#N{_ z**c&?6K3r|3Is;B`B=eC9Hw$#NflZy_*Rv%88N;q#XNgJ&~4N{Y!-GV!d{eph!}sj z)~mFF@ktwmhK=sdANhjuh_uSR0rX1z38)ysgs6I1O9?WmolNCz`;{A%bY`b5A$2o-CX1[+$akOf{wM0?Ze;6l;FK*7r&rV*Dd-1JhG= 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%0A6e7v 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

4C_J)(rx#3TmuKC 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 z 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

Ns`O^$8C%pOLCP?h!1UWj2S*plC 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%0A2DdBp%I|ibsjjx!xWhD%VHr5ed1fP=e4?$ z15exS(|`^oJ%FmaSe?iFvRygNrwtNDztita5fu9B7O>+QH(-e8F-Fsh)tvOfyqhb( zIki`DPCVqvFXCIcb8nacTb`t#2W4>^Y0wS@+|JL)>R#Vdy@c5>6B$a+(J@1%{w#Ct zw*J6@OYP8Ky6A>qqwZ3F*9JRKF*CSu0jTU9`c3J1YW7v8Hk7U2hlk?}uio#Skr~CX zw(wD$gNcXA=qdw|`^f+~Q`U0Or@Z|@%(;8CW4GgVjz)m?S9f5nWtO3ZKkA{x22@Vl zVFq88=|*mxXAq;S$<&|-qxZ6ywntgnoZvzH@EJkQpHl;q+f*h6Qhu$$(=XyslS=$%*{4I7e4C=&m zdrXK&3`N6wV4p`rf%#L_K-W4dS=EO|z#zjbVBYZA^Uxz?)#kz{C#eqkcA3(Jmmr01 zVT)%pz5sM{rnU}PPwt6oiJ}-`NmvR((QPcy;REl?b$;3&ZqIL_M8L9rzg|Km{b9O( zS|4HE>;J*nt$I}!IL>5Y1boKcuLoLwqVZ`zunTd9yXYQW97joL-9Nl*D2L|uDx>yv z**pu16%JRcF~CT-Sj=4}y;y>2%8EAEILjV7hr$!S*~ieLaRhER*UxCB`=?1%sM}>P z5NLPgH=xIIs)TH8IK)W!=rlpA z-imiej27ensN>rZzezv<(Aoq$g0O$b@tzoG_hEgfcBZrzcA~VF*&P&*+UuHvQtnx- z?+U$gIm3)8`mu5F&UTGwVRCE3L5%nw5{)IH4y<^$rFT(_-pkh*+F_SR+C_8tWng%M z9xp2zs9ZY*s5w84kHj|%1=05Viz4Z|0V+_V+fGIT*7pa&?XoKY=)MUDIQec(s>QNux55ygc~;pLlW?==NhE(0|ZbWZFU( z+L}7IVjJbpcN-O5L=#2C-|`GLJM$6^YhfT@(UT@08ED? zi`4`B!N+60JJ8pc`~%bU-Y!t3%_6wtro8MjH-0or^?;w%<+Z@F45YX`jt5qhr=(DlY_ zGC}$e)KaT^9-(xu~Yr(de#DNFV*3vlI$+6#1Wy;oyiXJ@F4a`U z0hTI0nDZ^0U}g0R}{#A_- zGX$+8!Vn`QXc@4}j#=1=)N|uaxE*HYp(Al>z$3Wr>A+sj@kZwFqjoAAIt~%!1CIb* z1Gh1;lslKvS=7ez3k2o($N;>o8@B`dJ4qQ=wP!d`ddCWxmOWnqcX5+VK+m|hU%PBy zw=SUlMoa+)Y@P>fdN2go{#*~pxvKkLkXN7Y+rURXr#IPO+WZ`dq{DKc$^J+NeBRIZ z#;&E7Ph7W�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%0DP@PsA;pdHOF~G#g9>9o{dkjx}BY~)!9*E@K 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

Y%z#NmoCbB<5>8H>ia=M&o{wgm6QX@n%*y-xU4g z3VbpQM7yN-y2M$c|$o}5suU5y8-zK#HfCU-R#15}Gc9E!`YFfSWx z-V<1|FbD3MXsT+hEvp;;E!igSTPooerExs)dUF=sRSR1IV_fgDg<_Awov>0c!KMJX zi~3sul?Q~_s(z-);vX>zs7rq>gQaEIoMmPX6H+^TJl+<|x)D1v5Ziq7A)sR`8mpS+ zE37aUMyp{c1x0>rH=Zj~*<$s(;YSlBFcjKA%NhF*Gxe7&Zc`wdw?7S>SlA8d{XIAt z1!Q!F$9T4JG^=d$052TT{v&eq#K~G#J9RDliNdJ0z>=Xt7MvFCZEOSG-TnyGe>n(Z zfQbaSRhEyL?Sz7f@HlMbjWUi-d*OEZegiB-k7rqpPX_g$g23kYLYdlo#!h(rGOqz+ z-p>JMTAu`3HT(k{QraEpdT}B0(oDMycd^((QNBIV%*mv`5bw_dC#{MhK0?N}4Ig zIH7TDCF75S;8kR13)ZpR3yPY@>wD^MUnJ|$(U7KA~Ogl=} zt9wDXJhZ#T5JiekM!kPBdWX68wr;rWz?CX&+*M8MD0`86)#= zwuQ^b)6CL!mJ>YgUG0G(uY-ZPMf(}y(6tl)TsE&jm_aPBs;05w#{Bg&(B)k^Fm2~y zG`C{?p2nOD4_rW?)om)4emAVKbwz8*N93uyfrZ68KpLp3al(wOn{AE2Cgpzt-DG?u zclIQpGM?LunyWvcx6|LDsAfP<^42ip=dgv*6IPX)qg# zZ?WUfUX7IY!*e9a*u>t%zFkY8CVxCo`>Y8tIO|_@rN-vNWh!h)&*=&2$eK}vh}go$ zrHs_?uAyAZP6af1oL5IcQE4AeCs|YcP9a@d`@7H|8Dbf+m$+!qF$c(@`UU%qtfQCXSz?JJ?Q^dm zC_;&yHUQh*qO^OySp*EXI3QTuIEXx)WKs^y{P7E5?kT>aYREI7jq4boJdWBm=frYg zrSsRUQ>Viub+=S=pzkg*9i|=o0G^nRT3|qX45lrls>r?AEUHpd;RM9qZ)`;U2S29U zxmc#MmJ+tKg=$q^-2LBclk;w#M|a>?HUr6uXOJ^3|D|eb*L)#oeY$NuVd{(h;u*B> zJq8IgHvGeCBryE2mJ6@L*-bdJAWKqOU?RV|2mq{>TD#cWj(0{!t4)GnY%6%gU8S-FJb6eOcu;- z)GtHJ+F*w?k~s&^@N((6l+&SRQc^<~Q*WtSe+hxb+a%J_w*L~es`~Dqd>OYHiyKMg zuIvLz2o(E5^x?OVJify&j2tTaQu$WC*$cG$X(dp%i47ET>z)v>_>%8TcWM3d6@OlaYZ>6XA)UuoQH$_=Vj&ZaU~Z2$w>D`}8?Uh}5_H z6DSY#0OpKX1spv6D<~fI5Uosx4}v^Cjw)k}5jo^F;u5Wc(PK&(TgjR2erXT1?=cdn z?>hGX+`weaUjR$n1oX_<))mpkUgSyTqX^c@X0Zc^t9B7b#ni2EP}xlK98$z6pG2lJ zF6Rifd4FbHFa^w~kgD&#VZ5753TH~9yo$`86(pMQs2KEW z4)j7$>DEN79OeI(MyZ_@4RZK4r|sdF!wFhlWfL0Sp|0Hf*{6cFB%!X?Oc;l#C9H zvVtd~imjHv`UT{{ZKRlv@R?10>pP|j7~?$?m6j*>YOHA47FSuKsZ{%TCs@}hyFc^s zeqVxwf!@>@2_3}Db;dAHc=Cqb5OPvC=Mj7jzkUe<*@#VadT~C>V)qA3Op^Oc;ydzq zQ-{!j@L+4#|BTK1u1tren{iz7xF1XsCL>wuo^sUk21Bh<>>! zM2U#*5ua}T)QW>B5#Ch67Ecnz`02SY$E2H38Q#Kq~Q2i1XcD?0c$3(-8vebz-WbcJYa6u4+MXp=%It{y^%*~Aj-oVE%xJI+tch=+@E$91oCv;z(C((7i1l`d>XLWzmJGg z_d_1I{ITo^0;9inz$9~a(TIAYD-Ed4JSQ{hDJg^N;PLlq4vb#<0~g6IQSBBs-485V$l7(B zKqhtXQY&f~_Iwn4#(&d+DR)TX;)%oX+?0!ChS-87d@V(TVEDS|N`yK5#_w;&<$6*S zk|t9frC+OMGWjhM+2Ey;SzAlhp&j6*W1w%scJZy4}3(13Dt<=6{#?zoehC6S~?-()` z#9(U|dT)HV5r10WW-Pa?%`Zq$wPy@H)elalD`F3d~pcq^6x}`-`Jx|dw2rHKD^-BRCpn`KL?Sr zAM##^(Jd(N>T~r#-;ESzor?p8{xRFPVy&Qg$14b_4SEYSY!yPjm|WU4h6a<*%^i)J zL3igx2x%w!4)hK(b8%%a>?9HT{{<kh3!~3%TM7>@z457&U-s4EY)~#}S){ zv*2_4Ya3}3mBe+Y)13~Og-*A)Kj#y%F&}_gd&ut!*$ZOa24K<1iNMtRZou;4kZ?1pc0n;bsvn0y z<5)L&1ozN36eIiYG{~CP(CwVr8K@q)46W@`eH-rde;U`voSul!y#!=Z=LSq58BZ20AzG!-iKnT!5$D^Uq)g)eOFZ7wg(*C_+XUUVy@$V@5Go z-+3HAXhR2yRc!6DN8$})TzYXt&}K3PxuF%?Vp8XKK##6#fI&&yiT95K69!T%=KOUH zIAIKp0k57TLAa2)XF`foR`_=pgV~TZg~^^|D!rwElC*7ahdC#!i=Mc1G7& zQB|fqKu?Z_%e{m!@0G&P@I9<&n16Ohgr%yX8>C`!G~Ci#EP!d|PT^X4z|r;p&EQ2H zTVuu+$=+|^lX?1VQ-8^Q7gdwyusC>k;waq1D*i_G>?ZYqJLE>fvBn}ts#rKoO`shOtE~_feQgLbGxi$^cW!0@FfZL2==sGf z)}b)^Yj|3AB^}$<+XHp$putp;QvTx4u+3weG~z23s@c|n_X~_5P4vHsAI<*&f3ZrdO-z5b-a zm}<2V8TnL;QMkT>%oTMhS&qpHbP7^|q7MSBpYW-$=9Htbjv8j2TfvT7v96rBt@VG@ zR{sHG+Cs`pq1n-L&Yuvr+BwN^8*F7}LC{hb8z6INj@+|iL|2hYTVT8}Vp138!JX4d zNSxPI_PilK!>&P@rRIosG*@k$ep3=IbnUQ}Br$d|dC-4S@;0*W)|i|JP3; zCCsL#Pwp@R=)IGgN!}(zhQI887V{=W$6_*q$4|76yuUfa3(b8`_k&Fs+z^N$^|NXg z;?{JCsH4Z<%qL;e00t%;34$lxNPXseSP6_6iH(V1>5mF{lo!f?)l>5!=w!!I76XT5>aEAKu*xO&Z6h?>`*gLvX4 zY0Vxmqx@mxmJ5aFJ|rkVF7l84@Eo4P?-!VvqH+ec7z)J{$00Cd(O_VHhJy^dw0wdW zi><8sh22S~ZR`X+$E*cvUu^;UYZy|HLuFsFOI!fv>Sut*u(1Ky>EZx>A4uJ$8TbGr ztNP20q=}lywv#)5F4!a2Dg{2pNOHY8{0!f}`tCG%hM0||r%xw-=By#^8+5V$=X*oi z#81+Hz}`h@(jIw8n;!BWb$N7 zKK0b|K&`SXo(=SF2e;C)8eLY|=ilSPG4Ep7Fklkja{i^9eT(>v;Pa;5*fvZ#EYB)pM7y%g2!%dW)us|uKRQv&uH>4b@as4It*CQVFC?Wseu zTCksUS;HD@*Y*RZ2k;|Qlj`f?E|^F5E}3-=+ko8;G|(yv)nSm1(N4trU_`~$QNWVL z6kzVgLvX8Jk-Z~vl{PSc23{%toKhBp!Q1-&2(tWe8W_5f>LX^+OkhIxLDp88;{uOW zYdc_obPLY~t^9(C*7O7#|Kh}3`GmgUt8U+toH1<|@v)c%r(~A4*vdExVcuVfSwa6Z zln~vOX`-UxO*X(6UVIc-;xrrBX;M>k#|h8*Zb{V*&>khO=xxy`r|&5QpFmmZF0gAb z9@znG_dPopw~#-8o;#wL)b~qj+JIe*2t3ISYYM&{ge`gqDPo!7qCPNa0HzC@Wa3OMV4p-ezC?3QW)C%VbP_4;-|`+w|ivQnna% z7S41)khOZ8tt4Ic><+-fYl{EZeQgQi1ADUs7jc1n?jo{L`OH@w&^-By zoj8<=R~!i!_B$Ed_-X_%ZIRymozn>lLp#6pT=GC)A!)Aa!gMwe3IIumiG>IZJRlW-7`B^2<|FWaVFg27l%erUJGy0Z8 zNwz6bG=1GQvw+^+SW8{IM#CnebK~l|<6sH&@Sgt)apBtyplCC9AGrJe;0LT!p9R`K zXBVgGex9|99Ln;eFSAQXSUHbD3g>BfldiYMV2y3+YJLw#(~SmK+z%&Zu9i~zEk|@t znJV^~6$%}n=r^GPotyie`bJ7T;O#Xz{l7(m=6B|U?AF8of;;8Q=Q8w!SuOvB$JK=# z;Htra8nkc_$>P@_=J5=gO)_T)_l&~`>)JXRsIqDf%utdy?CUu_>t<$T!MXWW=%`;fWoH+-#(@P8Z-wKc9e?%e+AL9^lTAM1|EQpj%%Z(C@)ZXqSMt z_qfqo@4>Hag$-Yhi149}k`v$*$czJS>=PTr!bUKM*jVa>jB}I^TXC$SbTh?Txm66B zd`Eu|>IPZhW(#W@8yhJ$;}y2p;#65vF(}JFpNe{y6xpFLRmK=R*P*Bs=s1QK2RRLy z!UCOd`XZ56{$oLd5NmfKFAzRyB9iuZT?F(waU-;dj&m-MqFQP==T(9;+w#q#p2M#! zThCfewl9Fa)FgMc$DnLO{f_cqu~o3#ip6XZRB8cRR=L1Pu8 zt{t#6mEq=E`zDwn%nZn9KEd6A#vsrLVTDd3(ZEA~kr0-CW1YFl2U!ag+#wo6K^$Rw zJI&18Tp_vNWq;;#@sVhoZ)4HgN!$1Hk z2GC$77x(hVO7_gcHl6fzoqyB}0)fwykEfQ;T}>ORpe$Vmy=l|m5}rw?f`F=lVx42` zT@}jmDHcmgesL%HjIQrQTha}iq@iui0aDztDm-JE@D;F&f@-VFkx4w3x^)DL_OA9N zHABC3K+$$m@-$La`D_NT=G78l#hP=#saDkO>H$l^S%JMj@JYSdGz2B(r{Fy~!+7!O4EdTeHxV>ddihJ!~$(1xwr|8M+-?)sRSWY!^Bl6jvvB^)&a8ZbqFj^S8&3)PLhm6D}0#a1f zB8-0Go-@NX<2S;zvv;HI>f4sH7~wyyhC3pc3MSr!Dkobkre}W-y9e*zW;YGdN56pw zqrLn&fV231I#MOHISy>L=#gAB6Daz=zj$C2)RE>K! z6Zx6R!fsT|3VbvVtiF+2#cBBhpxZ<-u^F&e0cJFWY&N4#Ovv;_l**g>%pt587!^?s zOnvMIZ2N2^(snp=RfY>yq;Y0ign6!Sw8NuXM8K!ihJBLzF8Xl1(a>E+glbNRZZAN^ z{xIPEV4(3Ht%tJ8H^Ay3QgQqT1r)i;nVqis7vACN)@d~+vZcrx1A?N~{$XYk6e}fL z_khnzXA2CB{7j~7Dh2s|Nm_(hve!|CETG4|&0cCqkLw*pj}da*263^S2k;^T@Zdi* zyqc%`12c-*GNrezfG$rclkTs{1fG4x+_2Y&`^-;2mGo~E*>%$=(KDO z&~MRAV31WfFfvi7GmEF!;7Q4yL({{$A`0*3e}L>4F^tbCmTUp`>dT&c{6)+}Np{a9 zaFN@hQE+Pq9RUWd7IR+4?tN&LIPH3a_%!(%#6zh-S8jss{-BKg zWMKcEGqD)v>V)Ap$aEx4(C5O*|E6&=HZYNLKn4Y?RUw(ucU>%TPYEg-F*eSeqY)|N zehUP)_U86yrv=yHcEP>y;LSgO0$N>STlqx1VD7QcT%iZ!PenlAR=?Yhh?XzGhi+hGyPTe60vSEP(w&rBdpF5fd(z>(vGx zr@f9q&A}8@7NZZ}w143ZKd=U^n*7~MxU0ow(ZS;dg$gA`m+oSRYAKxrjvF!_oyB zp%}k57CCu^RfBT6Zms0}4mG4SdG=?bt7$fOA2Y4ik3`z)Grs|~AJF6Ci|Mx@TT;ou zFqw^$RQlzQ@K{eu19q|e66p08Y3`Gh&BuN64)8DBtn?G37tBgRY}I$0fEtU9qW6!h z$Bu1`xfBQdWDu$5QS2LA|2`B+!s=TBjduHh*?(n20u%?Y!foH|16aD#;qNi@=;k>B zirVLkpZMOmPpy`18o6v3(4zNcL4!6ba~H!U zd=MEr3-0*WH8PVArYEH~(;qXr?}fbxjl{lr*xldmM^RXUFPOvLsA$R;z@T5pb5%a6 zxzGc7Cu%VNWV6C2u(H-th|D0=LgYmB@3#@9+e^$p#j>U&o4Rk#Y~*+RR*0 z>$t9>=Z^ob1^VLFf8Ivauw(2^?cI+7EsRf@OZK@R;3>3XgxlZ||0yQTqa_H?7C$55 zLDeow3W0M(<0WLC{anyLdEHJ#nEo_#E?W2s=u>F{49ocugfjG|mPvonlBHz)#YT5t z(}TT15LO6Hy`^rqv4#i}ZTmY!sU1dh|I3n7a7X>}4?cZmY6AtKlE%(Fk08y-B4BXU zbztmkY9~9Xpxt2DR?5SIQ=Hq7mb#v?WHDX8EY1&#UDOdnbzD9+n3X#@H7*MabhS3I z4luL9n^_c+fHlF5+xawg4TI%NnW|!4wAi^dWTj8CZ=8Epn=XXCAw_!Cl z&Ib>BYeuWp`9XU~M2tJTLdDp*LJX{vcY^6WH;iZ$D#NC`GFZa}qq`$b`8RKYBMVJ| z>OFUXx}|;~T)gXJu}(Mo4LPx)_$JuXW?t+kvAoVLnSM405S98+^pAx#F!hy^)#Zr@ z8@-%8f#Y(DzuTNCz;cUNY`yC;b}ig}_fk0orjp}Q%5HK#BG+#wJPiX5109-jZ0))~ z1gL&c0ZiW66mzD<`=C-ko|CLU@5L5#=t>cFKEXcJpx=VNG1vOB%o}h0gr?1yFJ1s$ z#l8>!L@E`1r%XNZeG%#v^l6k(;QYA(E9|XB_ z#no)SC#F+B=$16D0t6+(di&G)?E*`(-MS$nU8b z_xc|r|4i!6W*l>E0?>KjLZGILozQ8T)8q}$m%V^tPpw5IO1FE#7u%^7Il)ruV&@8P zZIKRU#~AraxP7kf21bVHpoWUx=7Vio4Nibmwf+7jrosQOpVV-K4ej|WqyU6-Jj%&s zW7Z*r^47Fk@(3;YpMLJglX%3~ z-xD|`SPOxPKXH@UC(RXxz*S-Gm!BDrc+WlSfc}>3Z`BVYfst!k(g-&k>c}O)(jP++ zW<6w-C^twYG-FubZ3v7=y#kDHIv)k(p1%lpq2*YhQa2x1k+d4`kwJl=ZH=x}bAva%(u;F0cOv z2I+qRCRF!^a>zgAh4OYvWkX1ph|f3zfo|QOOL;YRa{S+g`?RU7N~P~RGGDM2+~L!h zXWiL*vVZ`|ZcaydGzS`I`oq7YNmV2h2BdoP0!Up#;dTTiwrU4dOb;X!?-`>Q_C*{G&%VvXtCj32exF4sq3vEG_C!Krujbe-B(Cf7=~1IR}9m;?m(;Rs+3qG z#iJ3=`ynuO4|!uy=vAm%mororAzPY2;~R5tn&IL;soC|V2(y+j6^UmYXPD!?oJUfm zTwmQozm)NjeQ(}7>VhguU!Xd&)ErgA)?AZs;SHWnxh_z(2iD$R0xi`&hR`mcj??k4pf6^M6q#sr_mQ`TC4}lt!h5vOR+P)q6VDKc0 zWmsjDX$f}HQJ&Mp;h4Ujv*GUlkh;?P<}096T5kyTUBf&rXn=aBjd`3hNBIA)V3Zl$lcT!Srj%RdF7VXPhUssvb=-^^qni zGvM|Z(hBG=iv~s&M}dVc)>6PUlh_$WjJd?(_W4hNzU?M*c0Rz|9-gSj?Hnzvs2yQV%H=Yh7TvrJI>PK}31&1f%iqkx^STka zax71RV3KZfSR)y;Jz3=zLE}K%;#=-;TOUjSdQbb6mGYfWN%vhf78o&?#pj%*@+|nR z64>Ch4rpKg5t!uOnGa0(CKDdrGun*N;eo)y7chl&QvMA}Xy=3!aB`^2Af`3c?Ltue z9d=wP2FiTKuS0;D9my2E#&iPOEEvF~gri*xy;hk6#ZP2M9?l5a~oI|FsIxFI?yf(j131y9z71Us44-<)q(cNXBFQ86Biv2dOh_dC9Sn_C972Zq#m9&4HqHZy|AAKqUqGBk*IFrUwgQ=XeZ?KJ#bh(VZ7DytP5eiss!bJ5H#|8$GS+BV0@4iCxuCFqJ>Z!)e`G#~57Bz5BtAiYa=ok+9)|w$0t94N3oXtF@A;{+PT7wBgBgD3?Py3f^~RZ{kMk& zU+e$jf#bvu$N8Yb;R%wJpRR_M^4_#iB#4vPAh}g+qOm6?0ljzri7fr?BtGIF)A%W) z6!TC-m2CmzOFrlFfRUNhY=#!ofU(1bJ}R6Jcl=jTz@*>C0p;9g_E2)eIgL#HosUmsbrD!!=L;3$W|s}OPk0EEMvN&GxkWE$^ArZZ6GGJd*?Raa zwQMHOxfs@inHM%Ls~R(@6%&0jfQkaXo8p}Ts9RYIDr7$WG#1Vef5xacWG-dhW1!7I z5-xE|d(2lPjn%`QQY0q&6m`N1s2}HpFnfp7AhK?{EgDrA^UxOQAylBMSyT=RV=ZVj z?yv*go{2|+zK=A(0ErsPFoy1!X{)iIWAWupxJ$Ce1FQEB1J+DoSL`;kE8i#bGe$=r zIEmu2PpyD^SWY3(>%$VDZbo*a;6?OT!W(~tBn#{E>0SZjhx3AH%0axn$|jJl+HjRB z-@nxgP}ul(jfhYCg8Wqa74@*v?JuNl(%ug4l%JLXGrs0+s)~9lbdRv(|9v(BeF4ST zccd6s>N<<_Qc+jp@L@AE+#^}qN@QI-^8^ZVG^OfOZ*c;;Yw!Tp(i2=KXtjb-@XFFJGI)-wvsdF%n+T-iZQ64+ei{Xb0-SA zz;7J%4`z7uLe*vL>w_4_!)?(ZPG$jcM{ViKP4;77uvf6_y&S0Tz}_O`1~p~Q(6d77 z)KX#n0{DC1qs-dJVTUVf_QOJW{8rtjxQ2g4j%k^TeXLT*Q=xG!t}#{YU7r21-gh5D zlle1gsnC4-VuG87FW?chOwcF9uRnZo!M&ibjA^(R3J+&m&PG_b4-_ot`%Qt(QU(Jn zc64X>OG{v_zcbKy<`^DONs4Z?gRGaB154V?#8|v;5#728F!QaX=(vS=cZ*F5QDoAk z!)B~-N=`2%QQU0_x9ZdYxW`U@2<df*kbiZ2x`KZ}Uarkq}f zw^>t4?~s4m14nGX1}y(b65F>W9*Wv2!_Tvy!;+9u@QDAY*5 z>Mw*FFaHTF$Qh5aOWW|ZdR_YOx>9w!gK{39!r;WSzwy&48nEx8R;*B970EB3z%@|l zJ!d`sv7Q{h3ZZTtm&ugaKbW@}o|H4gfjMj0n#BgTx8f32rAzOfs8Y(0zr(;QwV~YG zrZP(}r<25E)Y5uo3^3lBzz_dl=^`3nom2r*4`jY>K$KPiY~>n_XsE&Be*N zsvZ=CZr843m^?;)4{octEkL)d-+_Mfv0o7@nn%va;4`Kg_+b3X@8C&nT~Ciw<{+l- z84Qd}FJe%;DM|2*yXu8%IXO*&+ps8K=77bR>+j)7n1BI|xw)iBu7ppsI0DIRYS;<4 zd-&;mysB&oygqH#FuM}*Nwt#WVF;=i){(eiE+drZgw0sjZwkU1s$K!rr&pR;;HrD| zi#(=i*8N`uj!!Fr3}`>HRqMWIHtG{Q#aYKsy|S+NJ>Emf9a3dCA`q_}Dy$G&3)WXN zcj$kVP5N>r0!sQMntq%w^?%LRRJ-N?gU;)DEGhaurxS2Euvs1gs|OARGdKlSz#XpO zlTpX*lu2qUZ%YRgTzPYGom`F0eW>T8H&+pB=SsScUw;7@F#SIAi`Z2QOgX~dFFSk) zP~pQhKAF_|m^~!V=NqaW-x9u=<*|K0)lV&e+F`RT#3B$b0`3lf=3SxPJKV2@$9mEm z;M4(pHxH?^5W0Y7p)~aZ3U(sUBJmdzFUCd;Y-8IBD%;yI zdU-oS2ROY3juu;vHND7~`d=OZdtKwAxVGs|3{#{3xr~ss-lS=D%vY?a18#o9)zGn< zq3p{C)KX3>{X!uYEk0j}SM0ep3vTt8D`-jBcWynY2)b?!-Jsyla{ z_}&Q2?Zfe7%YUg0>aLCfs@wMZ#CJiV&)|<6wMD!{PE0I(CEs}g+w7qItNuw?EWYzQ z!IO3BH=sgA%wD4A)s98D^!?*nsqnY0oX+q%-5Iavy*mmD*s%PmnT=|Mlu}MBr}`RS z-&xxO=)PB2a7OHxO7+qcE#6P(t_$BxGGDNkAJqGMrzXE98X&~e4>!+bB%j)$lJtbYl=3T2FJ&~Zl zZaL^gf-kO%FEAm?9#|AS3+Qk!3|#CkVKrDG`5btRAiu9EnSu6AfW{tt zpf-gHP=#YvAj(+UG>Q*rL=zd(KjKXceQ+!Ts@38hd){Uy&M^Pd3dHy0VO2>v%S^yW z)_<0PWo@68A&E<~LqN?zim7++c_OR0Nl839*kaxqBvwSaBC0gA0!=qI>Q}f8KO6<7 zv>@Ba*HSO!E}aG(@TS<*Pg4KM?K@sFA)vZSXHrV}dKBW@iSJ`i6`#A*ObkSbUR6h& zIs)i_{wlhGAoZW33W~qV5oTFsi;C90W91TxFQRR%hRMVLU8G76h zE1-?4E3owZd}h>l{9RPs&HEn&d7M`QLry#w*+nQ-o&qJEz;<=^a3R!{IN?7wMhA_9~M-tUi%?t@>%kV z<0^8J(<-Wf!oVt^r8|2bXPnrsg@NlJ?j#8NVf;9{d zPJ>9E;~QVwN8KPE|Lz5%^obO=&~2ihwA#eYwEo_h@y05FvIW*LW6j8o2?vCsWc!+g z_P9^Y;FIA%)Bff~xT8M$t8k4GKTqQ-_Q+fGARUeO$!e7^;(>Pe#0+Gh7V~d%Dd=3I zzK?!Os>dwBh~GR`s;HrvXWTFPxFm6xc=KrVtCHIOqs$6-%c=*#qxt+Ws~_=YOFlZD zD#zG`I>8s$G+<&}e4kk{mkQ51dM9w~=>5PZ*{%7Q`sY*F&q-I{zf>o&gZcn73re|K zs#qbYtnFKhuz5AL`hZ#`I)|VxU(|G%#f$jn53#XrN8cW29Wf zb@G2gk2^rQPRxp@%%2KR>XU4AI?9$m3-(hC_#9!XluKwEb-^&SI=_D6{r(yF1PvcN zYL?6nfAxLDKqohgsq=cUyUX_W02bH(X4+D63}Q#(vWjiuw$L0CMgPA)Tw%h7_Aie^2LiK(AljWv*tDZqRx&&PGMO zf8JCkvo|p{b#OArSs9#RH@C&UZ;Pot&{5(iHOt0`*;Xq1xCu|&F8C4XJbW?GHTyPt zZojMiPE=5nE&pQ>N4>RDCCMGIiHp~{H+7LZWxnObD(<=Elmss;>H*zYZR6SyhWS#+ zk_iZkGdKWCBB`rfgR{WG?(tc0huDu4Z;?Ge4ZggT)22A3c3%dzRkWwkRMKW4TGqM$ zPBeha@bPShmtQDB1@V(2?oC0W1kd)+M0u6Jai?SRGt>YcH@efX@p+dCkM7@&q+3X$ z*lw5WE{v=WdX{K+=QE~`Oa0%&02nyw4AfbAbsPUWy4V!kTe-pY(@*l)c^~0H1rueSkgkhY;EA(kAvvQ0U_2G3 zau-MQu&)qO-E1qcA%n6I(3Y|n@`0f06u5|Me`RDT5N^uGcFHgp6UR4>d;{7rqO)MsMqEb~y1 znF&^@mD-Jh8wRowqVGCkJ4345c(iNAiXRXXb<9>~i;ZFdk?^Dzs2Fr>6Ymy}arS{n z-sTxF?Uf_2$W~7)TKO~&o`|uBm~VO+?c8323}8viReYIAe>&n)CKo3z0{EtHLx|SE zFSuy)0!RseeKrS=#YZV2ZVEA8^grs$yewt}BCPcGczT?x=OBaN*UJ!;{OSZSYyL!_ z_1?{(UhLq0%q3&LkC`2;^XxIbP`=Y<0}{Buw&(L6rXS()x8xheExH6usM*hml4{T`IDYltkj&$EF}>-xm^{OjukYmu(;p+Z#xFSlLr3oP0`4i9-GM>#8m-s(L5G;CkN8eT*ghsM z+2jfAaHcn?)M;U~th87f(b5j4fX~|bqP`&+!;v6<+Rs3Fi{~gm^A|rBS$IH=xg`JF zw-8}5dNnX>(sf4E9RCd-hpC5w>O0i1lCH}ESPM{O;Y}XWU)RCGG(egh`438U(j=fI ze9otuaZIh7ypcD+2GpGe#s-rh*%$W#y*7^cpRU8_k3g#A#91x4E2wHXRfv@~i#aze zzmJ=MlIqY3GMpwEfd)!1orC!Fp()tLRCtEOEj-8SI$a9=j~(4Jji`w{O^0BGR|X^9 z9}^F*``@hz8krAg3&Q;qC>{w$tcD@0Q1+bRnrIpR46A6t8vUvnlRV`uJcX<3folC@ zF1$d%J)VpC7ymnp5F9n=BrtZkis=)Qx0t3%HPaplvg`iJM^x}QO07PUIVp|`>N>ug z3UaB>oDj)8_Osm$Q!Sy?@zI>jfakbF)1zpeh}60yAu@2~dtk(0IuC3-BKM4g>z zPo0uCC6H89`T6`u4b6T#g!>(T1&l4BJfsFw?H8_$2bTV{2k7~MO3n9JF>}?5EA8|) zPNpAkN`^HfD8)+bar@Q*nnN=clgXBnXZ$KW;Nzc2gFmWJOi9J97=;5QZc_Gx2Z(dJ z)&c19oZX|l$IoaGRY)DP52)ou*7-O&V=E0_N9IyJqULm7O+j#R_GmP<<2R{re>9jZ zX~ijMp`6WRn@+c0q0J(;w17M6QF}8p#H3G1Vz$LPzGgdTa)j@u>p;WO9qd3;Gt1#g z+q{^#Q>f3;om#=;988tw`twXwC!#O=$-w^K3Q|Xxb7y+Ox?S)&Na_8^6m_-EKpTS} zFnDAbi>&Xu3!W*(U4R8&)9x&MiN?2;oM$}4^WL)05u_j8IAn-C&qr{y1EpoGVfo$c z$V^U8MKe6!3%4=}_x`|Isu<-8pX-A&K+O~?RYNGdmDC;gus@<;NQf*LA8_$pAu8+h z<|rtJ*nrFPxUD|tXVzz|^H5YFaJHVMCLCVQ5m(`aV@5!E+Dou%P6+!h!Y~g9Ub7d z_(cs&@%{~UOntr+Zut!tW?Ah!tr| zQX)mb`dw5uLEDbvU2xnolS88kK5Pj6!X3cyjZ4sy(LEbG9JvqqIQ5%3;?2`Xv0j>x z3y>v`T^XYI%|aYfVm=os%9l{$Ju2g=4xn;z6Z%B*5meeKJFhX z_%!i3d%QXm3Ywdz8$}X#Zsa(LJd?JCA-MY&>lr!Sk&gxZyqkZ9pE?Mt;x=o4zDLo4 zOpM>B45@)TRh&zl8u1t0A!8zdvG@HjB5v7i8|HJYu4$QpwRbEc>KC2@x|B37Ci}QB zt4Ns`I@SbI$*PZ$IfMLf@R{)bSNNB6hbCU_Lt33qe{}@SB6?=Ro#Yx1J3;<12=0P` zLT@VH(#o+JBg`LlpcfwxT5rd{h_?3;6}A38Y@VXG&*83g^JIj!;cla1iar~Kkw>|C z0=7$9Zt6oG&dWN0gi7N&CM%D^_y;FB@Y`53I_J;BmN^wqY$Go z;fQ0ZdKv1hAKJJ3R2pHA+5s)*MS%j)$IR?~yNA3t*eG6EqN0;s*72-oyNUe;Vj<60YilCc; z?-ljoh=r+%qZJld53%cL;Y3MM;g(9U#>}?nrnufwQg;`})S#7-34fU4O&7gnki!ln zG|16h_~1;!7}h!E@kgLB`4LdAR{?W_bIoNOa+g252e1F{*H{_d<~dLy`Kkm2RpcxK zdYN?v`uNbw3skc!iOLxOj4?<+W7C)7RioY}IM|zlPc5}Bm}<8$iK7uES={K0>Pa>; z$olS=R}*g(0fT5E~Knj+C-Gm%jq3_0alPi zD=An_UWrO1qZ^JbR$>8G{G`-4TQgH+nuYsbP$OscLo7q#d8rmt+~6O_e!#3fVpYoV zT;qhAZZUO4M4wVVF{u0kHf^4fO3j(KIvn3;qLmj_Bf9XYOK%+1Ah;<%zGI@b<{RJ> zY*DWsDRH6};qhpxNvkHT?>QcGPB`uecm5)dcZ>hoNZnCovKT#V zm7K!Y5WEgJsfJw89kQ}R2LNGTs}WqQ0s(}Ad8FCpw|B{MaIuQ&ZTPs+WM4^Q#3*1%R%$kw&d zWD3up8$cvBCj`Ls5(FUj@oTiTqWB47bbY3w05BsHfTJ&i&Ik(LU5df-}ag;W#X1bw&56AFZX;y$LHF$ZX4 zy$ZTw%u_$;)4&m1;nx4g-W7K>U0N=3%V{|f>DrI$3GDfP1bQjY(8qA=`gNkj@h4@U z#7GhM4*IajqIV!*Q_1O@1MsLPO(mfMbvr+q7_DUAAXt^qhQpXn*immTO?ZD0K`y(g z(bOZv=rFR2n87SuLnT=1F1DC;3Ok714AsALB%-Rn3v~T^641lyI54Ir36h;Q`Zu`c z>%)M`CZ&xH+w>ioJuv2zB(_4Yst90T&)z_f{_laIPUXNjU-nUH&5J=r z<&}$YTRt`cx~H?Nj2xf>^>g--pG$KpfaPCTo0<3^RqZMGbVUbb7Px%*ht5cre$0rV z<`Lz*$f>VO13Yd$*k3EnHUP`!MgddijRe*hDuGS*Oa(T5$onE)D#`rXJnXQAAdMMF!~QzuK3LJrhMk0G`}ILpll}eMSUgbE!_TI z!6x((*TV!HT92UE{CqQ9tA<;D?aXjgel|!VHj1nD_sy+MP$SR5m{`URz8e=BTgJ-u z93HbixtIAl{=~8jQ?q1p1+ENCrW7i6TyIQSob(9C*_t1VM@o;s-T1x7yjqG$<)jb5 z+{;7wa0}N%rXR;k*5fMZbDbov8yMacia+Z5HSFFtH8TO}6c|rtpQ#YEvh2hC=N;#^ zM<({B2B2T>r@&4)&KoLq-`^ifaGzv9$q`{OTa~aaYcEoc-8vq@MOxfHvPb^k)+Iqy zmwW7dcXV_zae_fUodvboWXZYVZVL{h#nt|l8TaH^ zKAQdH7XMneU_a6A{I@{E7bn>)U7C=EtR`~vZ(UPAxD~T{0hRF(L)_C~-8d5}#mUbj zG;U!>)KK29v3fu$Ue*Q*IB|0vVpCgCIJ`2ru%BR&Dk^C+kkaL1nE|G9*|(Ki(fxWf zf{K5m7N~De?Hg##Rx_-OhS^%3qE& zw(7*wq6%qLskJz6FOx>5Zh^Z@d``G>Xeo$%ow&dJf$cDLa8+uNo;);H1!7^ezTfkG< z>a5JfM;g3@g5s3QF3#)vYR3D=>0yEEbcy82x*r?KV4T(*DQukk09(JMDtAwK01Vtg z{g(7K)q`S>4X|uD_CK#zk`v|9uyjp!=Oz=e9E&(N#p+{8om~`yrjR|&x zJ1%=Ks@(7y^O`*QZ=l9R@Ru&KGd#&=ld@HT4tl2^Y1TkK}X7S-(F z|7iV$d$(C+C-o4NGJ5Ivh*ngK`Fgj(Zj8~ssX$nWHj57$BY=jzY~Gm3Ujj=uECcrJ z@_Qo@+%{*z>v7hdPkR0+RF^Uu`T`&HF*$@N%TD)!)h|b34p8&M0g=q9JA#5{*a0I> zj|D~sQre^MlG&Q{Btdn#=}a2d>40cPi}*zdj9WGfrCPX3_Ce$rPhWQM=@-e-qaTso z8m9I}J`OvkLE>H41&H4SM`y@1W+o2KQk91malN*8K$!p9mMlZxCs~2bRf2?u zAJ524;&51;4QVr(e6IP)3TP<#4djZ8p2*JZpHm1KR_qT99(sp)goZXQH^<%m7Yd=g zcn_kqy%z&B4c~GL72s3aB8E1)*{FtZ3ULXj$@(6(m~AAjemEV_xLII)Gy zrnGiJy2#2>U`)kBpz)TU3`OPbGs4rW<_czBy&c31LBjL12rAt%#0&(I{Qs>$Zp~KM z2u2H<9*MZjpEW@1Rjg%VpJFVVCe9!;mmi5kD(oD!SOlNOkNu#RLoP5vM*}J9@M0Wn zjX!vVwY9e&g*JCkE=7d;gZLy8LOtIfhCggNCln&H8oRTiZR;Q%WrLYfjXh`c#%}u> zZjTQ9P5>O9e`GO7?U}LglrNzK_W#~a3=Z|=PFLJ?k3mQjzscP=L5vF~;l?-Y^n5UU zs+cv1Irafz-cvIf=2OrEo^%5-=b$^#3U?P_=NQ&VxQWh^i8K}@f50sALg24Q|Fh(y zZr0%Bakw1BP$*m^W6>;#Q_ehcz5ny^O#96>U`h;Dm!NmsFq4q;%^OvQt{sNGn6WNx zaUH>yKwSgH1g3UjHXhq1(i0O&1sONJ0q=s{ zpOqVBT9|(MKU>(SxDBUC!74O|gM}bjLQlTiq$ewY>P^CS3CtJ>Pg&kV3^=Mw3g8|; zr5eO=zt|M+0Ieu6>R20iVl-ux&Vq7k%oc7`1s>Hfx-oI_{1+55qGAhzChc_vYX3sN zBbQ=wpTiUPp6`8$pxa|GRkw{_f}K6oWTl|(zQBaEzk$|odI1eS<9X3aVs!#M z>FLK=L}u-Kc=~Vo0(HxNtQNdpeY+50H6E~A%%sUp`Bu6mSee0php6Fvs^8z`sFsq6W)K>JLtvA$^;lFep6248Qqtrw0Q!}b|bf_ z7l#xd@5mLZCaAmd;64N??5@JCEsp_}mn60^d5-%M?$SQI;;PNYIGIVEG~)Lm2y*QC1o_4pv*Au%?T7io!j=ZO z%ftbL=9?Pe_V||VVQA{fNpR!wx9}7`48~Ba|4S#hRTtg?)yc46QJ=nJ;K|K5XMGBE z{LVt5fyy_+Cpt&@Fqrj-Ep-M{` z?z+V(A1n)huEHJgxZVn^;etiinD8n*5x$`UjF6cxM$l!} zrc8WB)w%K-V#0Ra2gZH<0Op6B;}@wgej!3yp56@fDj@pYZQNTG)zcHcW=_np#Hlw* zGT8q=jJ)`R6pBl+a>ILFv-EkM_x=9)lHc#zv3umqIcLtyJu|m0?jij5Pil4Q1OltCQFX>T zb8~3gfK<4Pq(6XV|4`wTckuvL&7TI8zhi9WgE>I&E-!HGTw7;=J96U|VAMZjvFp+d zEyOwIwx&(ur0f%zQQ`dOMNj@%CcB|Dt3997qxszjkI1%u0W1l=0yeeiQ33a8A1`2i z+!>&Y^>jSob*WMaS3o(3wK(s-z|!g8fFG(~Py`LJG{%#D8ieXsZ8!#Zz^$WrPW|Bl z+_HSqAocPtV4DZ!z_h`yfu1|CT#jG$fb$>6W6cd;zQ)q^ScTyDc_Bb~<#b@sxSxQU zjEk&y{1=@#MyJoAnKAP9w-64`r5zZPGr5ULfK=Uj3+$D=!m)6V-#ZI#|M9{o@?W3C zc~bBhpvI+!Fa&2HSZU@X1uw#>Z9Yxk@b(IJk8n_dS77hv2d9KwX zfe{-|0n_HS24>zc2j;Z&2gll*o?y0qYZ?*M%xpCIup)!U#n5g?MHl{BBGN=hoyT$m;L1(5Zu9~W1Bt_Bzwy(n{GT4q?H>ThT%k%6;U-?Q# z=!QA+C$=dCJ9#FnXw#Oo2)ni%sIO*84k;U%$ZOqc!B<{4g%#)T$<21U8=Sz0UGfA| z;PZS^RCj*Qz|cmlNN4n5GyL1K&r)iHlFUnCM_8Lv#9StkdQp820^_bZ0F&l#1!lXm zh7n7@2I}`y(MDzl8b{$6HC0(z%gI3h1GUD$sE1X?ukXlupq?f$!@^DQNtUQrZy;XS zQznzfw(raq7+#`tprU6d^2d8{ALQbb(HGH1ipg*B;Q z;n@zTj&=tIdm0y0BHKUXBZl*0(y55)0OrNeAO)mSv^DV~fMHFA37xB%1dnwkRZULE zseDYa)0ss2%?d%zulg}a8#)=ylZ|gjk8Hbf5-iUih7?(rRSdLqy9P)2YmFvB zQqkZEd{tg0J`&u*+!E2{Z6TGCugMrb?Poa=9(5gdl5jO!0oyOs#Tr5J2cuB9{Fwso zZfUcDAx<3iqPJXUMIFty@^MukA-<~121L0xicLT2^p4A}LmFEA#WGpzVQzRcKO zeD%}4Y%V<^+u5+tcM?6idhCKnMJ?BWl<|jtN11Zx;fztdEB`oN4$93y>umffyUEfq zql~9bTFQ@RsG9O^ma46Vskx2hk!RqOn!`gx)-zx7$I!7Wo>L@V2NuTu0F)PT2+EJA zc5NPKgCe^O+z0ol;@P-Z!_AtK9&q$5F!V(SZqP~3o(hli_ElmYzvwF(-5NWLd9WyA z(r_KgJE{4xdL-$0GYhCYbOM-rl@^k+D2Ti2y18KMF!lrH-$9te(2h*iU8t8dGxE1$ zLM-Tr`E!$SLD$-SGzhJRE&&GPOH?q&?vQZ}(};P~9|IK$!gMQ`c~3O@d_5WxIkFtj z<8;fYMMyD9e-s#XV}>mzZPwUkfZg~_>{08~2XfPEg`FdT9=~(|dcBMkR+ZmNA=|m1AS`3dS$;e=-->${3J2cA#N6kOamX#Zg?RPw zSw`N`xU$8DD~I^drX-+G4HaL^{l$EBnEv}pc*$_E93- z^5jlzaIcX$Acb88`9uAfTOKvykZD0$n|~+V)t9JpeQ+2K68N(mxp{S719$9v7|1yJ zNtGr~jbd(IUGS0yy!YoFG$XplX-sNjevCtWlDU?tY+nO|4`WtnC$-v$-8@q7wc8M+ zxpoV4!8BPQ`!O3Kr_i!!_lkl5F1l1v~e#F=I`J|_Hkc51gM>DYotlA zkC4>5Kx)8H*B-{u(6?X0ThQkZGc_Jmy#F4)$~Tl>Rk*K=x2Qm#`(A+G_O3h7dnsN- zz-leNaRa_?!OpLiyspInHSAXdX0napMw-$5pACABjyk6{zs7x7GyX6hrjweukX zNEV!93tvoKG2RLP=TC}1L5?ZDN4e>Ex;OLdHtQUC)&1M02=d!Yt)m|D3M+inJ8>Pq zhCh92HZY^;0np85I?Vjk#9?sz{OSVKw`Q@CKI`zQA8b;A^xI3>1KA7NyRdZ(CA2)> z4?fN7rclXIbFZ2?J18YX;c4<=qQv@Vo*n~~@BSRE@WD1%R6*7pm~}wdI@770v(|I4 zsq~(UfwHanV7QwPq-s+7#sY(0w&UV^go7TQSf9IWSn}0IcrxOIo^Mpa-NN+>j$~Dg zp%ShBma5QZpmCR@&r?z)aSd&dv{pAowQ~{|{_lq`6|2O?(&{#3Uf0)GMH)lcb(2!b zP+ftrUcGpyTdyg_Mj5dgEle4&r>EFN-}o0C&_X}k#;P?N(oW#cO$Gs?FnpN#&N>qJoC_ZUk@}?l$wTN!`OymE_m3i?~E|j)q6l6 z|1-c)aT9=IKtI;gOzQ2=fyjADYoNz7_IvDMa)R;(c{h1w9YzHF{?!px^6ViLk$*WQ zO1JG8FzUo~3|ulPrfL`@B38}5m&XqRrsq0wfX+3UfLACnH|Qk<;`g7clqO`Bk0=Znekv}kf41aj?x9E&nUz=`K1Eg=270fttngqF(c59$VfFX-OG~YRWubk z)6xu^%yH|{K+-#L;!;K>4->|8{xE8u!henfl@GQPA2$I8j&Y-b7FlNGodEWiZoNCO zl`HrZ7B0TnDKC{|QUy*3x- zYShqY2=eGdH6A%Q5ok4xL*u~FSJ)1FQss_)pc>BqGsIh2-3D=ZFMuf zQIhWYDU@CN)E^;jd-MevEekmSsdhd$7n7<48@>z7NZE+M=J>jUsWj=@9k~4;Q70B$ zivUJj{zD#ii!+sah=W)SgC8PSuTX!|E6u(Oe=@`7LqFyA7d%^HIt9;FE|!2^ckn4+ z{NcJQ)*`~B2pEsujE+*(-dk9`3ktc4kc?Vtx$qvsB-K|N*Rit0IH|}#)zTyYU&Yek zl#(>LaXQj@c#*5Ctat@@%mpV@JN9`XLXw7GA}*w*^GTS5GDcmffIE8EBP`aX7I2VD zYnTg6KS$QG_{keMY&X@KQwE3jnC`uR3Dr~3nnFV;WB<@%%^~8qzHrw%o(IQ|F&_om zy8ZeL?$Avq5uST)3(U^R*ax+rHt8sz22`nGftdE{hfgAb49_{XCb$hZQlqeITX2wz z!7uNip-Ef1z&-YNcD(8>)u+1VH8M(^!OpO`q(`aRuq)iFpx@8e?|&ZQ;T_1_vF%r3qLlukfNNt#pH31| z5jw9Ya|~TK6)CI|I-r8C?@yzv0t)9aBFu9y)MUgBDoDf5!PrZf7S44MYy(hNAH(-D z&8?*1lV37vTnleVL~+D!By|^ri33ljDA~gJc1nCk-vbdaH#Xwb5B05pCB?WG63@U@P z`il5jFe?x|jzYg=vTq^Tu29MP+elE%C?kTt(b+3SK zo0x%j47oVfGyvH4&#$3e%UtwuD@&`*s7i6?GdmQ{h)7O&D2}{^Fx$h~8c?Hyqd24ooR7KlpGgvnv zr`k;|13E9T2JgD8=_K+?>a!iWXCJ(6+C(cA?!1Ns<8M&mMkc0`VzL$;;Ys;?7d@$? z-T9MwZymzQ>sV9Q-*y4xGpSfXiAjDrCEH~p^p9H_f07( zCtLTW;6;2EyRru~O#UZ9hzp!N5mid-{R`YVL#Bd@wmM%JT@-!3*IY zu)q!&|CJa+(?e(sXZD^0wCPoiM5^=uPT4&V3`3~bgH58@h24LKuXyuxru6Rs40B{p zhMma)M!m0ATF5K{n#j$SQjBgrg0dq?6y=G9d`l$142hByBkF*~6EoSYQnBdi`Dr(L z0^E#m9HUB^e~dwE3LYwV5);y%LF{b1Asc~S?ncAkTPe1bgDk#_5gavH;Jsc-ym?bN zHqo0)KHt#Njq!*B#(p~-n0=n3g@w;!V5hRa5W*hGt>IQVAL9GE0K05>LdEeeo%x@L zPVDsrA(_AK!${(>Ny%87rskML!680;6Ce90EtmL_-juhz zu-hRNx4fE3`W74`^t+#6La2Y_33qi1(!O}vAE3IAY9`!%Ic0JmyZLM4gQDEjVs&$kJFIu zKvhY9puZLEslWsd8*zFqzF&i6@wKnT5f!f_G3p!AX;djM2{Eb7;}oLy#e8EWRqxty zE!wAD7qXDL(tO$<^)x7`Q|{*j|}Xk#Ix|0YjYd`lz9 zO4$~abH3gbZl6N(LQqZ(vsO>t06Vi}^>C_))~m+@TeSNXXz~4gpvMjI_Q^ZM1s-*I zJ2q2)d^J4L(p5YtxA_9@$#N=epWi!yWxbZR5YiGdZZ8u@SddKe^*;g?GfWudTyzN* zfZu^+OqZj2w?ssn31WWPqpA};)~QCtSWrW2z{7$ihaOk~j2I5B4*L1!E7g_%Vt-(?S+3mFN^XVynng=TBcON%MQW1URE+A0 zNgThs4dk%m_Gt~!_jB@v-=D^+hFYCr88JTO9NChO?5G+rA7+YX@?QwlkHOnOoX#A> ztfRYJhU!hQl}b#UUt73i~evx{Q4iUM`-9+W*%{BAW&aG_Ah(4 z4A}D3w?LOGJ%E~^&w-(_;y`JHCCQLb|KOwP(&ChmXXoAT{(FKk@bFd97x~mKZjRKK zx*^9!sbTw`a%mv77l$`Z`{^9y!{aDRu@_5VA^TOXHs@9sNxj&c!rA;W4V9|J&4Jbh z=Yg45bHTv5KWBoM@&>IGxmGSLMNI3A5x}0$_#(l6tQDlerT+$2M8D!4B2rKP26Vb3 zdiK2TWBm(;212|h+SVgZ`^XoV-HZendpHIPRsBGi%b^=6yZQ}0rG`6q)AkwlNc*RE z5uCdGHL#>RE7vrYy%(fq7iiA!!b@ndnyoE-(J80R^k9>iRPi#sa{5gKTD9YT*Th`% zROXH~RQ8JKP3T9QIj`WeZhs-QxfFA%o`i~BGoBnA`?obxsA_OdjFzRO9=zSW2{s5x znR>CrRT(1IwpAXRxwztS^dMd#{$GERE_?!V&<}XPGUQV+D1xWwRnq4m7I=zxWg*D2 zGb`!o&Sg6sMp=c098BoFi721ajg0ZcfVW1^MvC6?SWg1wZ~n{1i6Zzr%ehwK{J zj02f+Nj%WEeLA{Wn@Bw)yTMU3Ra|XWXt@w>chzv9I{h**(w{w4Gw~s?_ng)L_x3rj z>U{R5hh+Fg2+NYin4EQT*$DL@yRe%iNqW%;Ia7u$Vjq-`yUKi*j{=6x7z?!9O38HI z><83WEkb5+B<8S>l(8I}?JrPgx-T{EJq}78W8|LFRu2%I@mUr4uksiLdi-$;n(rKj z8}3hK*;&;t@RaNw2R#)az8915n=2!#+LLm2CX;|sx95sW1+m4$Qip3uCC8ov5Uk27 z_;*n#pyIl@&<;Tx@C0>a zgETVAiEiFSuJ1I<`vaa*O9cp~nnhB0>9(_m@zYG_zx!2RVdRKk@8S-d1mm{`~_9ZaLa|$r)tYEb^1OH~`W87{dOm=4? zFm=8QgS5_V;mN#a1uVHd9jGl8@?dStj`w`|1;;9Nj<1pYhM$%oG(B^U(VIP+JZQa> zEps!q0eZY%D_AvB76xB-_G$1%#Rkf^asjJVzno+6n3Ysb{_yJ(({3lwX3Bb~0rvwp;12av87ri#V{cXi0rWnd2n;wNc8!G8x0ityo;=~KLvUO- z_J~bUe_AF_R+0_!@Nq~C80UXMO*HAj#?}9*N#haNVJ>aG>Zs>Hr>>1a?_KFoza&p! zVK?|gcZQicL9>N-?+jncSn6>n$qeW!ZvF5c#2em%f6W&g4D*kTLyR9*Z)~wA^Bq-U zasXr#W8b-O#B}LzZt~%oWV!DJJpP-e0c9JEhg1{J<-?aKZa2!SX0?h3i~%}tAj1dQ zEM_k1zUElCfXM@XfvuB7^2N0kb8Lg{c`P>K)218dBCz#IsyF9tO1y0{$Igcnd|DxA z8+_+Z7tL$603LPSKj>39LSlykBTiG_`xp{{LE&nqi??K-mfYN73Pm)i^FXkg&*3Wa zYj~Xp6GSU@?AA?Gh+YRSGsv%bAb*MvJ>@_d)$2W?qW_5k7PJUvjGIX&Jccqx6vtAQ ztF9CQYfsmhq)Orc#4wQ|@xXrv?u?QXg5}$Ka6IjtMMkg={tl=fSs-F$ow2TfE}Al& zKZ zKGLSOy9<_9c#C&AE=l%C>}HFPS()NO$>P@CSqs&NV*Ys8R3I|Go_S~8r?`I>PL<(+ zQw-*k=6Vw|F(J5O!5iH^KLXWd*)tb0zKi_XE4nFy42H{M-BNz0E2nGCe_LP@D}|q5 zj(p^1XN_WP)fuBO+VaU=)H1<-B0VX~wjxRCO(skpEnccB&;0)X8Kvtos8kxZurF+D zI{`J?)28^*esL2h`vRI3zlJ<08dyAWf1w18Qvrf1e*6L>Zr%f1&g3tjMu>wrisfxp z$gQdxLk9%KmDK|i^BaJvXV(IYTafIXo2~#_UFZ%;Rt;JQxBJv@@l7~0scc>@e7;L4 z{IS1KmoMYBE^NdLp~h-Tzw7~3ZJ~sQon-rvWFhk`3v-2_FrpU-!MEG#l(qkNuj)LT9Xi|sFzp)>A0ddrXOC{ z_Wx@OWc!vNP0h&fz}iLc_Q2g-;}0zTl4_|eW;D>_mGRKF`mZz0Hm*jj%BBt4#J!2~ z@!|lFypbcO)Ae3J&1Hz3i8NZpQ9G$ou(Y=KOn7wS{z|+l@DoBAy^-H~vyh4n_Ymnk zA{8h&V z=aHXNe(Zu}bO*`y?+Ofaes>QcEN0^XV6Deu;3SW~uyE|WocyWkXa*790x3XaTIGX-o0+nG!062L{L~z9`VE$FrU7`7w!bh8ZMET zNUhzQnB8ES4A=&A z+@k_|AJ1pBU&eb7C&aoVrnB*$-%$aK$z%_xP8Et)1%FRkMGYg*(1wpBV}3>sg03aZD$qgWx)W1Bh>EmS_NM37bW zHjEn1N6AwzS?<8ZR?I!CDHUDTo}{EfFu5Zj*;A^H=-PltgJeSn;Y6FWMrq%dT7)bJ26A&cdy%acn z%S9Ap)qND)Lr+8l9r}GkV!L(|!iVk>Q$`kd9`j4o+(EufA8w}9RHf52Go*p*+J_Z%&jDZDSQ z5oC|+{s|Ja>1_oX*gks!w~J#dnpUd6wg2rbC_}e%cu@;2+tUeY6yi=H<#z|+cAHI^ z@*lVvY@FYUAr;~6Sd+@(h45ILQg9r6%fSY@A>NE=eP$qkCiY^C?S>#=;R%wd`sQCi zy9%*T?>Xp(f>k74)eZUPFio*0@Zted#3!4J%4fAW1D{H@SNK#{R^eAECBE;3(B`8` zP-2<6EvnUY45dS*{2r(=UkI8;{z#KpxvLD=DC@;oJtzvztxaRy!bi2IBCh`PF^)i4 zE7(h3HGTfGAgCTbRe^)Ncwgo$sqe_41|pVrL$+~+D?#XdtKk^^V#WP=g{#LgKh^OI zR9616F~~_hupaj^8XGp^39>Pjv~nuN*uGm$aXz8h(68X}c(`6P%PaEc$5k7jM>fn$ z^QQ-*L+}A&c;q$YsirND0bTnFE6?4A9AudK9dLBi4pc?`?t$XtWLFB_sW-)Sv9Y0^ zh)#HV4VdV69w=V{BM-_k3Dm?Uz?P<`F#WlN*_nLr4m`!uP~g#Hf3W5p6P&CYo%8Kj5e{ zFi1{)8P%GzLyPXT6KdA>0S?U4b7~Nt0(W>PTvbPw$Sz?KIn&PqORda+$`|b4@D^-$ zafO9x6JN=C#C3S;^ZTIWsDF~I%@s;lxdMBFG*Af%zEoEEqmzKG_Lc&Bz2lf=t=$Yv zY|{|^*h8iMHX%qeUxxuBm(2l_JV-P-h2zU{O6xVjQmv_ z@oP8!2tr+Yh~vajXBR8@f>e%0^JwpfydN^*RvqG#T+*?SU9y4gRo0M_9`9%3d7R?^ zYrUy6ZWTHyzP1_C9nC}W1xK*WIZsM9up3LZT>;jWVI%>Q9Q$~0y!Ianrm_}=*Et9&M^j6A{voa@ygSC&e}1?c z1XRWr6r8%WNQOIWHz}*C-mm0!Zb${#=%*XTN@k(BLy)03$Uuz}Qo*OigVh^;m_{28NGi6H80nEGD#Gb?_4; z=;pZq*wB}n$TNNz(0^X#M=?&AR$=NXmn=53fBha0Ly!B9HG9x^}AAGmj;?9wi{ z>+g_7e235f*C3Aj;d7|`j9a9mA`I3Sj-1cB!YU$Q)bF9pGU4S?cv?KH09#vq*_~-L zA(Yf+n}%a^MtD9Ir+%Ek8QgbY`S=h*Cim=(-Qs1$z%WA%uI zq?!~xLrm%o($RmbRcNxzq^s0UJ_9wkwjx7#JPhX}o@0)n0Ik5L_QV~y{h*9?^qq#L%ivg-Moo(ihfs3 z@l*VJf9&M0zMRMHyx!X$AV_n>_*zE)#~<*;IyYs3CB@TC0wupQPHa%}2TDufemj&@ ze`NyW-OrFOeezlhtrqZ(JruuhIIzh2FQCf$A91fu<9VL-P!5B=j57(1;fV5{gq=CC z&?Y;=llZn?=(Um{_D`ql&pG{3ZK5&a>B-SL;77`HNbj-0;*Gyy#Y8s$lu;}b+h0In zTHsO`;dw`f!rgTcziAY*oW;nxQBGRrEW+aa*eQRRyf^QPk6RScrU~dY2vMPKa$xSh zHmpsXyU*Ym+hH8I!S&ZnxZT&4fZgRy|AxDLE?d?u*%z34iCWBQznHJNyHTll&!vqO z`t%hrZ2Wa#(otr?1%;GsK*&#brN74?+7MHC= z4I45X5*l(Td`HO*bG;{k9mWJfpDs&#DK~ zv{$$yv`-An9yNHkNrmLJjjW>|RBeXaaHW*$`DEU*;j84hBG4S_s$zKv;%grd2DYi; z(+<<$qw%T=&S9{Em(O-bn{~n$Z9e|lIk=elHi?uBZ8w`*YH?JOD?YAov4V#CdA{gC z8boYr0!vsDdW%Y=xIK+n`l(G>_By9{mw*a3cR_r=AD4tG5M4e}#ojT-aN= z93HP$Cn+o5=KYa*fbNM{!U?j&;eHIl>Obp|MAPmOmjIEKe=xl1zls5rp3p3L>bB;f*7HyI}evCl7(~Usq7a72SF(-jh z9jOkYgWRAMW8JAdQ^zzKMN0AWYFg=)Q4LrQYa8YYQ#bv^vBhMd;^bYRnJGAVLi3P`*4EZoDe3Zvola|GQn79pt*lpl)qbpc-LFWO|Ec z8`4V6-AK!{=r*XowJa6sZPrqO1YYM!oaXkheq1GG2&+(GHWA;wH|r_62l}FWnho

Pqv?pR}Uu_f5_!MNb&Vh@_|FO+c2Z-*sLzu(O`#|fV8-dQNxXgu; zDjzCw(VHNQq~5s+6^*)ViTj{1c;br#p?!` zhCt*dksWGdGx^BKowg?ZBiq zT3kPdOnmTR9+{LfhmFo{zn>rFwEA4wrM55Ghp`i~%`HsekY_zX&gqH5R7wASFM{%h zgS+H7$#$)O%i`)U@j z(2v`Vi!H}s@bvJnK}bM~J)aJ<5|c|=2@Rg=r>3}p>T@ZiOADje>FmddewKIk$B96x>|m(sAk_()KL>lGqkRF2}{ZTYB4;eQCES^ zKd&eG29Krg(Hti8>6Y~Z>W>)JL&5?Td_8UKfbl-;*rb_bfw>*hfy#@?K#QttXpiOM zd2qYS4zi5IoqQl^-fMakGcJgqIk5;EJM=wDbQPbQ)%4EC&_~|YM#bRX04Y}621(+- z&jdDvb4b-)Z~^A-$~3dWGC}eB13Yn4OtaGBXbRA2dpG9o{9q;;8*t__g4B2R029aG zV1(=<7M;+=-3kykHf#rmF>No(U}fb|VBvWONN@4>$ygh5D&_>=<+CAZjF;DPBhf>g zzC~bC{SfHb{2EJ)7|jmRXza8;4d~Z~H4T5Tgyc(`Y09GHFD4 z9T>e4t1wE*ZJ8T9szULu)2nGQ9|>wgS<%`4N{?>)Pw>=!+JG@OBk(u|lT44#P$k8@ zZ3tJ2kF=M6n`rXkkW?8u4ndCJ_XWCCu~k-A$!z(b4hNR@UBvv{ZTUJCqrxELu9$#y z*bmq>HhjMb4!zag$VZ2&@r+ViOiZE`7Enhq51%OPrv&Q>MuOB<|A0`pTfB=%)w7K6 zBUCGRvaqP{OBUCx3#VXiSgS+VVzqYcMxl^c1Ksm=h)TYR{b-Q#rkp<7-lOI(NxIEf z&f=yCxB14GCh9L#vL-U-sHqu)G%>>(!8Z!A`W|CR2JpPcb_ce60aR~E6a!`H%{3;` zlJD3!J{Y;~GepIIJ(Hda&medvo_K{^tS^v5oDZ;Dw4aP+bg(lC7rna53KQgi|D^oG z7ZF<4ee2nddn{6`-&gJ~j# z{G5aEM9e)+rJNCc;LeR?n?`+Djge#Gt39x}=Sb?4cMz6+uf{|#)jRN8nX0($!q5y{ zV+kD*xo9Qgy#~Gp`X8jY1>JwoCxY2LuXtfR>SUYPfQa8q5SC@14YV2}wxlFRH$(Ab z8rmXA<$McRd!5>H?$7$Ec@vVMrM~)ws5<4GyuJJQYgJo>493Ccwl@Wtu>ELP#^g0>g&BI zA*zI|o!Y4gn0_2r1SqgblNJJ>@3#j~#ejj#N`1Qv@|>H54hWGqAm=Mo(v5A z)n7DCC+&vMaIf7*1(%f>h~ksQkb#6IBy_uxH-H9JD`4i;PNL1(`6?!>@}@S+trpg4-icCpN?mrFe)tL|)8F)Y z2DbtFSSAD07K$8>v7sfq*7A9e)g`FE=km?;1Z-ooHL~aIpYH5jL*0Gq59>`d2|}+@ zVxnE|b7hypqAI~l0Z|*(C>um|8@|4+vFhb#EP#W~564jAK8O~S?^i-| zN1NhuDw(~hwL*%H4hLD%JjJVu;x4C<$ZEnMVBUNR?T9twftsQsbVJkvp=_dd)*vX} zED306Mbc(wCIX`pOo5i(1*|}Qem$OWAIwfvZ|jdD5|%B7JGtp*Bq}-i8dzSq7C7mo z0hl(3?)3EId@<*=i*o3EV*t=?&Ti(XIRHh2BO{lWm^En+Iz)bhxV)2%K*vd*K-cp^ z`KjLB22JErv8EVYTmP&QsNeLIS;V+=IEyb#1kH03rgNRbW5@3Z3h5Wh_|z9(@U+)= zKxM5G=cBT!6uj7n#2eoNEpLrzzv*q*N=*wsn6Yz?iAL)3NmsagzRrSu?`iWH)^5VY z0fXpSV!*c9yqQnf-xIHoyysE+L#tn5Ayst|h2T!z24a}NL2~OM~17=3v60<|cnH*W%6~@Ve_xV9+z3(>;2=m`H z1m;lOOKP&Zfqj8(J@x?urfdZoip^P8Ze2J$CA;4M9o|m_hU$9(b<@Z{QCGA18EPk~ z-CwQX_4<7qr7rS3SMg$p3GS2KS^!VaR4tYcqe@w`w0g=#$yPt0ZkV-L9kav*uqZ7n z-GIOr-?4oo{n@a_a~u*~d$W>BR$>Qk!MuH}nW7hY$7{z!LC63vsxAFgDvbm!Z@Nfb zkPmn604>;9Y5eL}<*+G;sIL4C5e?G~%*AOv%?;J1&uN_Xwxc@hQ^HDkoW(_pU^DNN zW$*=*6ao{r_QK$py6YKM_J>R5=XM~>`GmsAZYmenNB$eRvb1TVsg0e~<_EH+D(0DS z4d*kqI3_2PczP1hwbwrMKMzWd5!KtH@b10j$@;}A$g`TO$-^myz9EZv%o%9mN% znVR}amQk%hN)GtBsn5ZD)-A=X*)@{gs7?A281j`lPpo}UVyEsok8aPjA}e@om?kI| z*rEcy^xr!IM&YphH0K+6^Rm(DWL3vb}i!K*7+La96G5 zmmAxrQdwthU(Q73;wBm=^A`wGopsqOy^+6rES-DJE7(x zyaM2syS^4{ymoiIk<53EL69ya@Dc3xuqavrv9Y&E+Lp874m!oNmcc7~GP9V7jX2e< zjQoV2QEL_=#%bSar1IV=l$-D9@8AjfToozMiuucd&gK*!ecw5JFuraU-h<@g zyH&1I&mET$(M!JqSX#aWsJbZTFFrmr*ZjAU^};^o)Fk};8Y3S?$8W%Di^ke`SR;CV zzPVXbxwF)!{3kv>XOgLzT=JY>M~Vb~^BQ5A=-uGS1bau&GI7TbSab;6rA2t+Ln_hy z<$L~}JlDR52_W^q^cq~I4VcHu>YuUutExW%HcVk{f_r=oZ5MYc14#`%mm#;RZ&MN8 zWmJ2h!CEiqnKGdmzV3PRO%`rZteXqWcnEk8|cO(h2{b+}JhIWW5AXf!I*kqs%n^blCFZ5k_fq!#Y- zUH$laS*2gd%|xEfd463T-w83{OMXYi!&h{GTfbwZD5_I*0-wqK0yydzW!@uxD>1i$ zl?`bS@A!0sh9fNIiU%-rB;z9vv-c8{iwq2BYklF?#%DLjt$8-R%ee*qavmVblZwp59eW;l>C;t`_kdvH=46*`=S z#Xr%*lh$X2^yFQO9eIWcv`cSqpy z?ZH;6yZ8RjtS{^e!xh_#P#eXCPbrzIPW!B7_GbT1vrMqRmNKYMqK-CrT?Hn#eu*xD zNIPfZ7t6st{t$&+U5Ch=`Ypg}#a*EL)2Tr1bupjT_xu!|=A1q4yFp4N8KLah=C#o9Oi7@#6m7tVAr@@Dqo$BQ@YA$2l2R< z+Z{3>vha#K@^R~lwzeMrn2M{sDoozk7M_Cp)U`o=GHir`BlugAeB|0Sz|`}Tfh|S| z)#Y@2kg2I$^8VJ1we>$sZVrfV3DoB?S#**QRA;+Yv2fcMD02BB?eHe8B89DYvT+4! zCwTK=?RnBncZhX~`u(bfiOj@A=FVNEsb~HY8%WweeF1Z~%RC=w5NpkQKIGD`2+7@R zzXy7Bo<#swM~Yn3at)gijq7}(q>etKOB(LHMv#m6j%}z!F4gT< z0A-(&S1Ua5h4Oonb7Tn!==vF!vt?L2e-nu)bz@5?9C;I*ZP#@yLUfu5b*QRCUvmZb zV`$!tW|5IM$x&be`C(7@ubwg9 z@4v4O5h&XkAQVvYBB~x2zd&RA zgw3jbHk}P`y`T0z80j+_xO(w5;7GSljEebZH-cnUBxKw@S`bc0#Bk&j><`Lm+>9@b zayL7Q92Dgqe9F0JHh)47HNyifmTd)Ex(oz5Z{l450kej}J-K%<_qe3C5=)`-Pyga0 zswuPh6MSd~Qs_F6!E~oq0mBZh=ZV#r6&Foq_;BrEGFEfdTUcRA(*tmq2j>GTI@~d7 zCv}bH#KP+Dd%*fHvXI6#wghhXCa;*ecZWsrs69Uc+3f8lO`flje!4_4cG=8lpO(F) zo(o7DAgVKLFFfHxm|;u`CuQmFC};Tz?}2T`k!%i?XMo-wZ-G8$UVJR-LB6Gll?l`$ zh=W;T409>^%mJAETo~1vkG?==S*u7Jt2`(g{Hj`3{QI#hEDl3^yzS0+W=0{Cw4;<} zLC8C;H9N+xQ#lI?DWhkweh$#%DK1RFuWJsQ;hX9OlxH^uX6_IMmG@e_8Ndf$W<3(q z#7jC1h~B{*zOver*-B!>UX*IHtLWe%)uffC=RQG(zfQoD{JJ;O-tq*FUL0+bF2y(H zr8l`DWHS5KSAfnh{i(TK)So~MRli+Bkf$Ss$FtLW!6@auZ^Lj>{=|;5SQNnAM@{Sp zHQ_rOLSQDv6donB#{bG8I_dSVz}_+rj-xc%f`lr<2 zwYIe&tAEl>xb?Zgz}V42SjI4yGQTG?mbIqhue|9C4ES}Ds8L9ljjV;Ptv7lGFBao2 z+@`;oSO_e`hw_wCS?N){A8@*Oh*eW{f_&rZ2+#iFRft#MWRZ>ju$b(W;@Sk9N8glz zl;em)OWq7XkzSm%$TeYBLDtRV5R>=m;(Vh zyw*;!A&FgAx=qWfm9;sAc;$D;fHv+Hz^1O2=uFpNmSd(9v2+4L6f-*jhu)cF+ONM9 zzq2Jgg`31nv9b-UmFgMhJGvBVUYWCM>)Du)Tzy~0Ea zm_~vsRxJirZMqG#OxO$@-EJ%}LTqu3?zP(}rCy(@5$N4A4D|48{k1VLpizrJ^{21R z#cAn~81{L|oNXji?X8{gSPeG5_8L1=2cN?|63ts?V|-k*-UZ%Pf4KtP6&j%D=LgW8 zI4?9H8@`ZfFEO>!ukM4%k386T+(dOa$`tEjQKz#M!8oI5f&@A3IWlBU2nXhS85uob zOdI&p#g@WMlS6RVR<1G$mek{mai<#AJe-$(Xp5)hF0&^ z9CdvAx-jePMKpuUt!Dw-4tFt0lq}A8!ySFs8ibHX9A+ZJn`2&SY`z0}<7_*C${euV9WL z0TaFi2CgN)sRtf6@`LQ%19)BkpcE>t~@p4wES7>g;4%Vqq3zP&va}4+P0BH5E)(e7lJB zA98vh0=-%u0Y>@{Wl*{=J2mq?h16{;^Y^dp1Jq7;1%`IBgh4&>(rCD&FO=|sR@OD} zG#$sTRz=Uj$x^P)xc5jiv&6EeXY@u>E8K4SGbLL8j#^RqVmHuYrZ2F+@+mOq^L4=7 z9gKCm$SS$dUy4@4;ip~!49&R;jJgyl$6$nwj#7eH{;sojM)0U~ng%{guLFaRYyc*f zjR00GVFy($Q=#>>Ki-Es;64q*Fa?f7^AF!=j)%W=e@l}<$zm{DY%ztUXKbK5cOMzY zu5kog8PJ)tcXg2t)YU(x@{i4@fg$T_4lG#v4KCa({P_jnFqYaP#QH1^4?_i{Hb83Z z@D>kD?i&fznw3K>$6og2*MmBSc_Nj|Nh%!I&U%y(dXKs{Dtj;FuW?mRJm3_#m_hP} zWO%aHToL`3Hz^%qR{kCoriQgu@F-rf>e`p9G0D(5(!hvt{{onRxqq;fb0-zVq*h!ywnVb^=6`crL&Efh>FtERq>|89gR zLN##}GYTAUKponAG7V9xUv_ckAF9hB^W*jOT&Fg?&e>)7cA8!E#;P*0( z8R(ZS=1*eEHU8w5evJgV2c`f=c{`!n!SQ}H=uj`4qs60d|+79HC&X5x{Mv){MH8cgD=N8RGmo<8!?-m@7?(U zFmRHmvGV#E*6_wBe*wcmaUH8$pis|wBI9OaVX3Bsql~Aej?c!01H*4(s*M!`d@BV+ zZTT|^>37`N_km(FWR1;8gz3IwUnQTs3`~Fb64-o2JuqMj^-cOnURc%qG&M%uwthhS zm`Y&m*p;vY4J+(W@1)kH2+8&phHLS&VIYLI@4o^fOPImrhwlRAf!rJohcZxwelmob zn_E~}<9mPuPC}^#&jwMD)OCRwj3!)X%^D|FZUkzdK1HVS>tn@O?ZaF z?^SO)@Ms5}`Dkn@@sYs& z2nqORsmLs9Fg$sY2Y|)TNdlF23nPjf#M=+WF7aB*X2j2ka$7JARdV}#2kPqnIm|+c z<$+Z6UZHO{-X*;$1nVyKj}|S^QU0o2PAfOIZ9I+b63vGlH0o> zPvxPDh_UE?4rm#CSum&FR1QjIM_mwRTYDC0Us(e5wH0G=z~|I_xl>r@ysA0q>q--$ zTj#w;h~H9vLkXosgy=xJnBHAMnE340h%)>tn$*fw4o~;gJ;3_!d6$1kARAdQ&tU3; z_fQ*uf~W7M-+-P6DHDF*kPXulCb9BeK2S;vwhRC|uZ}WnVr!0N0Sk7Fe>c`RU~)9m zWxDV%$t*6`GNxO-jL!@o1!K^m z9b2rH*hJ0##YP&3K3UClF^_`G++6YH_diLlpn^NV+zw1xp21tz!o6O=o$k*@S`87a zLJng(!Q*>{t@EENrl+AhRxmR;mX`2fCo-nz4jxy>9d;g*G1aJYXUAC{p}-q*u|@}W zOPnUMOZ=^h&t}?rLN#aZ@dZw2=G#vDVc)l>`dpyv-+2-AMv z0L&Rlq3ZaCJni<^5^lHhb#4xiqHYyx7WB**aFmS-vVr63(_QDJ;q$hc4Or}IXwW__$8-M z+8(dLB)a=l-${Lk15;-D0~Je!dDg6Q2t9)z2ot^R^GzH?+}2&hGal|;kfZNBii0}h z2{79AHQr=nB~z01qY38qKAC*0UczxD>c(7KN|PO@r%FqH=Q}gg7ZG_Ej{|wlY!UB%3;*#j27GIK)T}pYkEY#`QL_QtF9SHJ{KNAOv~lpt(1 zsSNoWAyq@wCNWa=b5gtQ7}iVW_bX@_(T7xPX5JZjU?=^)>F|x*PjMfWvJIH@<33>W zHw;NDy#&na!lMnXBl(KlGk`l*yqqHbeWMb3p(~PvKD;M3c*o@KG;b1vPoo%;u}huH zw5s0A$#|@=0(+7(xveUq1yxaG7wWO7h3`Rl8#oQu@W zIE=8ds}EpKs+%QDMtNx=g7RLi0~Td-lxpUigPCm0G8zGXjz5C@e!aPmB&N0&A%$^i z!1j74VCB0ZEVuKQzro|YR+ufi;vVqC$26s2zOU$t}7A!|I z$PE}JdB{y=ctOxyYWZ*;0<1#zp|FA>c5tf_c)Cy~xtGxjiN>W*;FON!*yKCh;F|Z< z8@T;`E2pB7)Nj}i(b#PY>!pGM=GAQBN2+Bx(zwj>)tWZNYTzoW$A|+rSo;(Ob!}k? z-)Ab$e9xeAPZrm$t^+W*eGD*q(Q=@?cs4NeH?}Q%2`$9D;pd3&tbrxn*&g@76M=yZ zqks`_)&pZVOg1%FNbwu5f2>R5gay26#@mD`(=1oxx(8+UV-{?^<~drGyL2apy<**b zwB1~)&W=E`+BcLO@l$^c9`z56K&>~WS|*NR;#G0VY4|!j9>iE-?J|mqUA%G7 z6I||6P5$(H5MYk2cBtXcX<&%-?%NS)(}TS3jO+j?Yoi+R|-xW6e zN^RtG=@u}uC&#VC>2Xw#3f$<$Tq|*b1#F7ll#ax6G+Ro=WiGDW$BUKZfXnRRAaw$( zqkW63G@wq}#6e~ftHa6CO4RsOA%%a?Q(!<9SxVzYn+|V)t~MY(>dZn@ z{K(E~z@Wt;)kx6zy(3WdcP<<4mD}onPOpSMZf)v_O9S@`DQNo-o=l17mY(3>jK^BS zyZ*#>$qLNytYOW2>=oH9wK55YPq%{dEt|0lDBmfJtn9=0n7ZXZY)fr?xM>)s;@kAp z-I}b`T&kDHE@Fz*t0g#_cV! zk0~#Ht5~qCk&k44HvsK!G3pN7HStA|o$`|Ie84518-KlI=s4V)5Hp{{gWivVleOg$ zbWw}-Lpi9s9%qnO<1{qLZ_^35{Xb*^t*)H|`V`=CaNgZ|lMh>@@HUGOHmu8jED~Ce zX6d!*zXK=CrOx(C9>%mmDl&7jFSTCA4q6PkX;2inMBaFTc-S~SBp?iYyxGj;gCylX z69QYjm)u`rLe_HqiBwYE7sizPvM%uWnhS|65npt1TSj90u8#s1*?IyMYqaQTbIEP7 zGkhxdMl?NUQa;8Ri$2f5QH>?+T90$LfX(ot(?cqq&1zQURI<)Z>uAXa>}UxLwh94e z?=r<3k?aTJ%~(;Pxk-l9<=7TP#0(Y-81Z(eL9mj8PtX<^cVmO8D?K`1jmw2pq{vuJQ>LKJE<9X&mo0W}J|9>=>IE=TbC4hNDID+}Y}8SwPMT;W zdEFEwm0!!`La1u+6{PZdP1sSoA6394Gg>){-MxX6Oc%fuNZivJ z?&f9_PzCpqE8q@TyAJL^UouS42JuEaddG%;&7Xw1QD7&F%@Yt?)^`BVqL^|XbgBa| zY*!~>OyUvNCe{RlnNrHqTOlkvB!z8t54VRWxXWR@=geFD1>A~0?2*y`hp+E|ju37D3XGmc8KO{-F=b7lGGL;9G&c7Nt;u+h?*3wEpA=V8b+uD6dgJ ziNSf0Y!_=JdemOgS4PjS=BZQ^*Hz#Tb~Xdai{za*6_&C?0|-bYO2_KZ06|+d?FW z3;9|GiCwrz+rMKa+*@tI=}FkE2e7S04r&6%cTNGydEp9{NxeiX%R;W5$rPbj+yZ7>Og%O-GE9^Hp=1-n2Pytkmh>J=xs zmDS6!9$CP}advkRCh(JO(Bn)y&Z0zE4X6b zPgm%594c}B`fuP>b zp7pM{Fpf>29M_B3OH)SIz^SRB78o$TEiit|Iq2M~bI`?5U8?JO|2F83!^sd`aQ?ta z^666xkq|IQGCv)VD1QRRu@!_wZ5Nz(^a6j3mch6w$iA6Msh7!c z4YHK@#V=TtvX>Oo(9L4A{P9~j9O`}I)c+x%{G=Zob)~fo7ypc6y{44kRX^`7cKd1%H^LS^ zaRuuw#$g+9ish$3pPH`!ZZ8lV?6>(BxW=BjtWt(~TPQ5#&XQ>pd92VQ0z$ynV=2rT zN0#tIg$u||t_Ru!y&R&6^WTlM1Mp4+Rw~4`2yqS1WG-(k>ZIw`45y7(O>kH2BmR6dmc76M$~_-H}Z20_>B)_rgadfX3y%)A{l2A8vA9)qXLh zUGw10K=q~dz)z{Lxk$B2rOS_J|`;w zV*`Q|U1!@<4b1{NL`cAd8XpX8r? zj^FaHz}yFZOWo!}4!DlE2c~h|LJc8iE{QhPhN_CzZzaS|U`riaL(nlw6#XW0yHV^t zDz*rK+2>pcny5VfeVAMPPTy3k7~sVF2au@IsS4~i_*0@fToKj}0UE5o z04n^-fZ3ZV_`MdGcRctF%oH@x_bHVlml&QHy+37klMYaxC6|iX=c3;8unD%N*ADvF z1aOe@o_jvf^XMtm2y_S^mk-&M`_B52L5$U;VT&&w{3}BgVq<%^E4y&l&*YutpOC;W z|Md)+#j26dXpcgqKW8_dcN{YasDy{su(<7D&Ll%2^_XOdB3ZfqsF@M0Z?=S0{r*sf z@O_gEOS<h~!j@L|f>mB{ zxj8IJ-&ccITD~C9s)~8bVP99gRDt`Fx88*Q5v1NK#}Ft_e&F*TcS zkq4VHff{Vxt*t1C&E1~VRJ@Z|O}@R30HeoeusAKgjfF*VXDhIx?+&1oY7D-oc{L4Y zn`8%|?Lam=+kbWfr<`Sb4RfjkD#IwmO4=?5TAyU2@3OB2W(jORddZ}XTZ57P{DHqf zmMW)~!`m(|lpaO>?D^x4=?mymNwb0Bm6pH^7q()>nP)(y|9oKJ(*;1&vDe=J$*}*| zAQe2>j!+X_CSHRq4KLtS+OqKzCnPky>_I2yC@2C?M)baDlrt@>>?jYw=5K zOre-F2yOK+STIS?TFPG}2Auh?IkH!NIU4EUdEnjYVEv%@)^H2Tye`8}>U)16xvVc) zo7rcVF;T}s*06Z~_8amRqntxcF0P(ZAZz>v>=2qPXQ92?35_P%eLb})MJUtC|BCI# zE*iHj$fR+vE`T0o`=4Np>osW`JPd;=S)|~RiLgXmdjU)^yhV=l_UwUqe7&QrnTw=u z_cL!dR!Y8(CmC+m24M6z9M40aSsf$u0$a~x7J^o60-CDTsO_YCGtppLW{K7}i2}s; zuGpFpZk+{7!9qKJx+rBMER$|H0mFYLi=}=z2iPfu@dDj4kZ(gHE?l;kA|Fp=jF=F< z?rn7X8QDzS(3eg=PJbb=|79%F!DfBv8{v46TOE9(*}9@93o@oTU4kX62P;xlGoGP5 z2J;b#uxra{DajoVpNh+D!|fa6fI({)1LHG?`SAeQREeTrTx>pD5FUj^QFIb* zWBAkZ-eiQRx=HFK|GfxUyxtC2HW5N3N~+uc5*8cvLXlDX_0*CB9`pgmPvPxx-gl-l zm2~f7{^ZUl)okO%UL}uBX|Skche1H7pfz&SxH~I1sncU%dE#)?ty_a5%--UveeE-G zWG7$^Cijq7{=JXjrEGctY`i}QlFvJ%CCs6FTJu{`moi{UUo%YvZd=H1vddR2ja|fG!3&z;5ti~3Fv6bI72loOPZRx2x%`%Xv|7>3S{#pwJwet?ocE{9DN$^`oeQf)h4$aP=C9k_*Dy91FV7kAhxZoS*` zSAd5rF}!-=jsTfkhv0BsnU)0Cei_c3Va~`Y0Sz(WNP#GhseA-H)5&xaN3isFTco__(thXF>U3rigHYS1`E0}oB;7Eu<)1MGM>@x z?p`tPq1Qh{@M1mpSG7H44 zJo}?y|AfhxOQdgj=OzyDBA>I(X9cqW-u(^$le;Xiw6Mkv-L*@>OU7@8!7c40>INmx zt$y&1P8;GG))go`!$}#t)uuas5lDjV9PR&+t>ye7JGu(EotQh zi(x`3sA72RM<@3QD`8Q8$ezikcs$N;U`y_CR)KDpn6NgWpU1;M{odUwZ#*>(*YQYc zKmTNjS52hc8-WN~cNc=&8D*IFi`Arr&uj92?A_be?r0<~$TMzq@+g9v zD)%$sI4d7uz zv>!Pnsp>gU@w7G2I%N#7uj~-eFy{}T={2+&=-{g-@F(`CRn}P6R%k7h8qD$CyN3|! z2%%`$M$~~2lRYmok_YR$wwi*;+J`b_Y7q0R-OlPN4LuDs>~rG0Sd1(CldnsS-Zc>F?D~@+!JTFT!)B9l;wnZ^5t+E{5iFe&?gQPnUJ^N85Xs9vP;n>l5-^IIJi8D* zL#gX%`gVAE7psT$Qms?WU&i_SaGVq(kwZ}5EX z;o$gIlFVad!a#1}EICV2RV`!H1>NZbjGiTyYhsVLl=-1)EZHf0`vUwL z#9p`f65EvR&%6oJ^&l>Kg1Yyt8cw>rspPS6AEw;%^(pkz>KM+JU}98X+}_d}p24e0 zso0m1m;iNbhPxA_xWs#$!7TkLlS%y51DMpYKQQ@l2C7Xir7h5d6xN&eGxH8ZJHjim zY?Q@&Qqj(dFjp^20@~?vMICqA>5gpKda(C$?<4e1^$RChbenG~u)s@}O2&araB9;T zVEeoF=;ZBw;fk`~phCFF?;Qr_?@$9P&XQxACPZ1Zm1^2v0|Pfb8Ov;FloY)FZGwOy z&D7%4DHcLKOt~GRFmK(Fih9nGA&&Bm9>MCa?FB|;Q)EUzV-;ksZ31RT&?WmGzf_Rh z4LIKBxW(IblGkhy43raxMZ#P8(UNAx5udG8Y+%xoW5IrgH!bPY|_RhTVw$^meXMuuU@wVkN}|Zgi81ZzM{@j^Mb;> z!|$x_o+vONbs+k4Ul$eim;8@bbmnE8JK--e4J?Lcn(?X#4jVfHY4PFU7M9PGR zW&`8>hFjqya;ZgKB&>OgPa#Jp7?#3ZY+?(mJw@^w-v0q#itQ%$c_-~^11F{Jbz%^d zcFap0U4{`+@Xii!3h@}u<74uZEt!uLaWuL8z3a?r^p|wf4NO6>h~X`P@z=>^DHDGH zw*6%gy%nm-u;hhPkQA&DE70Y;Rv~)NvAll5_w{gi1WjU$&?%MwPBcYq5mGny>3v)c ztgvvjbdoy7i%Aa0-xh*CNLam$l2r44Fwk(veD8y&M>uN7OVRSb%d!)vl)_(8;s9*< z^f}Nc`KnpZ_Gz=^-NZw{S26GioN*YD^<7j7$YUFUl@t4jlhuby|5yG5*M?VsM z?+H8-?HA(JK>8JLxC477j{Jw>orpk~r{Xy*cS+sigf*tBsK%f{dF35q;JAIS5g_v^ zE3{3m8?e(WmZ9euw%N2rWQ%My=N_}MJOtsRVx?D=4h79xTTO)7_Qe4va*(Sx50K8 z6#e4~TdEvaL||)-wOufx4Yy#siHN>L?w5*eTf^2jnFoCw!}yAecWPU>1cdzq-9Q)M zWUiagCgve|xgR>F+Ol7&JtG=fWi5CtR61Imi@^7wrw%ld9+PCn7!-RW@2_Qe0=TKKxK~_pkdy0 zU`XH%pxk`na>_YYpW-XZvNl(G0^{>H(R*D#LFS+RU~!+b6lwccET>cEMs_+`Zz(FKOHrt z>B=tEP%5SqB4WtZ5ylUJG4ok3NwX@^QB@^>40BBn(abw(0#H@zj$fE7zf&elV^rwm za*H@i>}~U#0ER99hs18YdJJaGVRBJQ3rXm(U(G3+ z4iv-FCvP!x@ArEeEIQ*cVB+ep=~QH-Hc|F=C9vAte1a{gMC{GgPwztlnTZ7Nu-&79 z32TmkhG{w6QUi&=DJ5N1l8hpvDVew`T~9S;b6O1gAEII<&KVUwE@l@d&B|zhOmt%FWC>wJk{f! zAam}^)~@-O1q`gCTsEBSDY6*7`Z#Q{Te8rr75XlOa0+NAmM9JOM=b5(m3LY2a^UAM zx0kq-t_d%KIUs8(+5<|U?={yB?8Oxlj4L3|+I~&RZoBd~VD zjV!jV^kX#9us;|wf8;?rmCbkoOL+__9_7N17R`4CItTM=pXU3;MiB3bJ3)$1T#V(T4r6K@$&*z4qK$&OMhlyhC2hFT*wY+7)2-#RvRk^=F~5)LQ%u z^r?9Mj#%-1NzUN@fnq#gWu6p`_F@I3+f(e>=3W4%Wv&zy%*z#POJ!}3iL>Q4{?nMW zUB(QA!7XPzkrk5lKd&N096Sw=n8-AgBYqZV8;d{h3Ks__YHgtdNs+j>EI@7EYOJ+P zs`&(F!>JLtL?wumw2rOgA(V`>yOqBV4vK`^I7CU?~k@(oNUz%IvK0_`qwVJ<*R9 z@A#Z`s9rRJ8<`RxRKb!T)ElUrVgXb=X%3vyaXOm4_>d1Ds?OL345 zyOQnhh&uKOVvC5JAZAwz0-2%W-TZ`l;5A(EjBPyrqW?|qK?0`zuuEoTBc(^O`wb6a zPZKw7Hqi9j5n#JV1A#Ut*8s=uj=&hBX%+M2rP85#G!7-vp5ZRB5Ytm!h9v20w-t5=CLveEt9of!qMDK0F# zPhWSSZ_8D{uw&N1xY(yMD@!SDAx8D~QqE1O<9J|K{NWFyZv7e`dX(e|4gNORn{;mE1Si-&O0d~yUB{lzU&Yo0pv zAWEs8mYSMK6x8!98avxeiR{*j0b>8r*q}_!JnU@POif>RXBU#C{T$h< z{F7PiVOVXEj;qB3mE4j=k!U(hKFe!PsoSL|1ucLcG|I1aB*8efu$R909bh79NJv@UkDxVsfr-0cvNVy0;9GH&vbox+66g^Y2h<%Q??mm} z0gO%m0jS)a3#@WsrMWApn1)VW0gP++j)@Z!%VAC4&RWm7Am%hW7Mw-u)@v5P$?-c% zBjpk|QFMDBe#L*P6Qq8!sWn2SFKd)xvwGfYon;6ryY!pE2+#+;B?QT!$H3Z|oS$** zQ2-2dX4OV+r8#z`yG4;ya7|3Tly;kqWeWRtEx5r*z980I(FNOjA)wQJCKg~L2GD_B z6JQB$9>UYAp>4=D2}{lZ>+LBObPqXz0r$u$lUi&!ZxJJvgvG+FdAkmn@GO^9m(QpK zt2F=gAe=m&@nlx)iyhV~3x6vMTimWL85>;{5#WaAHd4}~xd>F?Cd8#?>sO4Pl`Ayr z?2vEaRcs^!5B}8)=yR(OXta|pA_Qd4 zDRN%-5d%>on>9mVj_d9LO#IRcsBEktRYp4e2vmP#z6sdR=RMf`FEN9COIi(#Q9nt56{;{s!JC=XffZq}mP_Bf)3f9UZdk-cGk_!Iy9JkLZb_B)$XQs>k{`LVQ? zwDB(x)4zoI&=1=DpT;2X(-SW8#%RWNy!bgu=Jcx=aVLw}%@#YcQVv$HxVRHH2iQ52 ziMn_Qnwm5)t2A}1%?iFqesN1 z_WUtT86{JDNlDH3(U#z{0wMC(`1$ z%!Xt;PqY~A2r@LhIy2BxJ8Mi8aD>!30oI2A&q<v0JR7I zL8TeT|Bg;6u4*aHaHF^>Q1~r*IR{HzWh{#gOsyJ2sClz!U){+#AU4ZMxnDs?To}o>o%Ouuiatbske=CQNyS)lD~1;w7fDGU~)4>g`R zjEX${!tgWTg_v1wL?1|f`lNIg* z_u-hZ^=w(Qcqyi`7CmcyR4>T?juokh)p1fC(BB)x6=V6JH1-Oy`E10BGZ#q1=KCKp zNHA(LwpgMma=U5;ghNp3fG4PcbJ_T&{f@k#OQ9x7s zKPZ_L*FUx5<~C`ZlFfAD(Uo|=y88!x&{jO6bKv50GEh`bKc)s(LVxm(?JKsIg?;!KZqauYK&35XSZAC9I=h%>q@|;WkX}Ux# zS16O;2@KEgHo!}>k~Go($<}DNK-m!f-b71IM;T8{q{y~F7Z^U7c`e?ag?0={{9uUS zsKUaxV8u=`&ZzZKJDI?wq#Nk3oF`6)+4&(UqCFk}G{&7rSCUuV2WHivpApMvebnK;dVVk;7n=AsJISJle;}l1_-zgRqxO<5 zBLjpEZ*k5eiMwiQ0Dq9(J+ELwMHC=5Ebl-Lr=n?Xa=ed02 z_;KSMFX#%%31Sqf~Yt3<&;_!Lnnp4fxs)IQDKAV2f`lw>r0F2jQh_t1wT7N{v%P-WEiec53nq@CyJ6Koz(hMX)+D!K zC`iA~!(i5(DhFmixlRHVthonEsTbvjq<+;Omed)8F;9VmdubDTW3=ROUV>xIz%1aT zY9FA}t(U;)X*UIh$81E(ElvsAc65YCnUWW{qy(*?cUIDJcq`|S!E3tyNvAM}sj#Fs zql_!kRRhDjzNANzvruvs;bNe!<~8XMW-7cjFL^)hF6zi|{XD8TYlXiI(XvjFU3w^; zfVnqE0Xx2>S--e7`o)mgED#`P*#>^Lqnu^f zOg(WNc}(v&oSR}5pWK2a`ztStAUq0Uf(l@LEe|Q!Yd&Vt{j2xGTlX{>XtcYJ29|eA zP{GFK131}!!&>rMaz}i{+rArYAwTW`Q>&^9VAjTCncNvhUBe8}F(&dTqs1Iv1gFFU43s>p4^Xw9I=P25K^)_}5{F_(d628_3iwreQE3?Oy%H{()@szB&-v%n%j6x&S$RFlS;hUZYXjW+HMuZw z_9jAXJcaYMy+l-y{as{1wv3|AoLUHu_ zEKuP_N+EM~%tyo>QY87=AX&3uscr8Y*fP=gOn`*}x9hX9`z_2O|Jg4-2y`6y8PK^w z4-63tTd7V9VQ$~OADU=wV!p-OrINm58EQtTVp5dzGk8Z0CjZBEl3@WMq0L>GGoFP2 zYqy^v^SFL``QM>{?^9PZz5JS=L8XNRB%7_K`+3x-(vG@=4}3;kKx9*FM_|EHb{kXn z`Gc#~?e$nF#~<|+{NdP@`M&w|XS@DqCwOrZA21l*jBR52ltQ4r{V`yC7ZN{dXEH>w z!W0B^{>6#F>dbS<$*8+zCBKi(G8=|bLL9`s7fd3XRvv;^UT8E>^}rrjH^C8g)3161 z%&zy7fF3tb0X^4*BAfCOvEm~io50w`Y5a)aVzKuk@2gt6*=?hn=cYJd;QD;DkjSce zV3vlZYb(|Ue-|X!KPehdW%mO9`4um*O6BBb@AM__JLNpX}T|8$3^$WUia2YzPA8${n>adY5 zy2GDS;AL1xbtC%JRABK9!Ra+;Ho+1fpTLM z_7DC9ws0cB(@dpo)>FmJBY~~IVHEujERUg`KP@#AdZE-^!YO6dJ;cq1mQrFu3apA- z$T7B_3|<9`o#9&sFLnAJom8uSLSUU|JJ;H@mJ6Q8tL95#Pac8QBq?u=45BwbhH}Jq zyq~!VHC=|>#1_cP7o0QCf6fXn5{ELYDt0m8piz*xGO2^2E0X9jj%sL>n#_=s{=l+X z5aMY3VN(u&%Z!yfF=KVj>~VFZO6+E{^K=&?TYa!zEE8!*v84xR-Umi@1tCC?B?Dn8 zc*<|Pe#UWy$Lcg-^6;)r=$ zu~Iu%Y+c45s*&uq( zKAVZ{jbGs3H6s9K&7A2#!*Z%7NPjg&tFhxOuFj>a4#J`o*ZBG9DANM^O-01?O_yNK zcyA|qjjW8ZsLUK=HC%$O^ES0$aeYw9+|F>R_x%Idc}Nqm=>x6|*$$?@qhHuY2tQs= zwC-a#BuI83LXrjZl01it#CXokXC-W@>mC4eN+92`RgKL)uu~{dzdS>z$YFcpVT=94 zQNa{pl=mJ3ESkdnre&TI#mfHDh+H~#Sq?Y1S5JWMb!0#92jmu?;a7m#oxOqTpK(kP zs&I+h8rW2tZ|S3>d<*;bvPi4^fR2}&cK(3*b}wdIi9g2{As07gq_vm`bJ{Q81B*_w z_+b%y{@3(*Lp_fLHjiejbrn|=xVuplX;-3a1r=?`=?0t2K;Oa4Yw{w|v{UXz!IFnP zeR4d+LxSsO{J|Lde5~?7uQY6b3P;ln=DhI7StzmVj|nixG?9{umbz#0V;B7`OCDEeHN%ZbnM6gy!6p>R4h+-ZNde?I)O9FR_7` z%l`O@pp3f*)hu=98tR&O`e@i>1PNFk3k*6V)-96%Xlu!v0yTjv;27oE2yF2k6}xU} zZIEiRI9#9_@&#PHEPrDj0{p291>^*aPsBLCz$X&FAOo7JzhnTv52@A!J6!--LV^P5 z)S`nYoU%Hk$(s91o%F+CNgT&)DCTK^%4zAq2LBA8_w#T*DVf|4J0sB8AF@=26PP5y z-9gj;vTXMDIHrRZk>NDzyHu9^&xCXPknR@l4@IvSk3IOnukQd08^>F`{Qz5mtze1F zI4yGArZ<_(L0meT_|0~h)6P@oKv(Q+$w=-G`DMFh4`K0X(F~|_;+WBJ?77Sm`{F}S zFjPt2M?48sjaFu#Mb@qHgF-XS7o$vAq>Knw4hNLF}#)vrKZ z(p6y4^hdx5BbQndOux%uNj^gfS{E+|_S`{PGG#O~<~7Go%%YiIwqv#xry!R>w+=tT zPq(y_nO)=7yuk&Q$rJ9m4@0VWS3FJ>;`gKl7uE=Lm4R?;J^;i&rO4^gSZ`nKUmCwATp zN1uwlYziR%f@jbzD`z&q(bIn14Vk=NBtm|>H` zJKBrf#fkH+$)i(5#lcA`F|bJOmxAN*rb_5MSQH6c81Zyp)U-yGZqAn>=NKHrceTQt zJ`8bhcY}bYtiB>y`|_vamZNEHd%&-6^98_$(hfk!_Dw*~n|D#OnrByl0mb!j(VdJZ znL>W4g++-IbC_1W%uA&l9#C+)Et-m;N*sT}x>rkTG{yBZ7(qSGo3mS9URTK5L5cPV z5b;AtdYL|BxYQkN4yrO&V2`^z(PZE65X_pPa~MNApc%skN1ou1mfy*g`+*4i1i6V+RzhDmj(u;&VJW-z{h} zczNPSA0u#d+EHMIG!hT?+Ljq$_VGB3JImic|{*O523Q93|CK5n#65tI8+Iiwa_wFfG0O+ z#^^qWQ{FyN|6jdDZ}A4jHx$i=YwYKfExlD9Qc*|BwVKYq0h>0jmA$d*1zkUulFRi^ z4bW}pVv;8+nVL+pIHzj!{WzF?ZLQzcT3q`X6wZzcOcATXK4b<|l{@+4Xww!Ubu%ej z3>&HA8@{;+3^6SLkrO9RC6PVP6~ZZAEM_Vly1?Alwj5Y*$4}~KV{QdWB^?nx*s0MV zddWWrd1Hdd$HfSsiSq-G1za8gb73) zDpsONgLodi2hh|PvWQ3RijojX9YC{nRvR#Oq9SyksJyc{^WcccIE7whp8B&cPm+xo7APie5^Eh znHA#3YzJketX;gGr{!qoTh*$GIqGnF1_slKse|EEJwFBLuKJu)1Yw&fo|F$*>Z-dx z0y{ho1KJKfX8w4)7B689XvNMnaLH%fTA&|!9n2TDhPlnzE`)rQ&kI;eHy?yYrMOO_ zgD)G|xEU04Qx38{OtU7(=lA&>nX|da@OGvOVEZPs+U0ss3_NvHwlK#*r$@ps?C?Hd z_P3N-#Y1d>4Hwx>>q;r;qmQ=&rnstrs=ynJ*6HuQu#9ln031KK9Z>V-VslA+zuOIK zz>#l&Asc!zbo8GrT!IJV=we?1gDY5%!Jp28w2Qr0q5!W^XH@=(b_3~lkCBV(s!*@s z75@wT3Cm*cS`ONYIxnu_z;UGFIclio3^J6*s@K3Ezn#Q+6ei)TJ7e7?V!BX+;<7@S zhT5Mjp?M#2Q7(0S&jpQX(zjvk;FY@$Fo5md6R3Qd6gqAx0!Dmv2bla-BQQnm2Tyyk z3})rVt>&`Y4d%cjx|*%kq_eYlW3f^4`T7+uxj`=cvzTJuXKX#y%M4if=oYrsB2eSRrXp-ic_^J@qtNetyvMy0Lw-wEpuz)QQW4Ji?gG$yem2nX zs3p*LxEzt19_<27=|+_zqV_-K$9Z8z`>rrE=mVuibKV>!I* z$5XayrbPn%j8{d5iq`QbEU+WoOyb>Wwndgg!y8K=39$t9fY{|9wJwM!!l1CCIMS74#%90{X8|j)pwtp6VS|kxAQSoF&%-5 z^?QNkhirjWA8o_pozpcRnANLa3i2wo>@<9HJ6hqjGf-^wOr}<_pFGlVy%ad9+kIf( z^E_a8hqj=<+j^=F!8k4f{@?tXBJglHXc7NN0bj+R9!$c%iT$2)w>}K|IfZK0q{F}w z@3Z1NHnEl2#gav}TWZB<(7*Y9*a9YS$fNx39Ozy8QwUsIJ!1=Mxc3a`^mP*4y$-p- ztTEE1#eoc9S}fl?uGF7_*>e-K8a1;mFne=nU}M@8nU}NF<+2GD_d(RKy>ByPevew9 zD~@rcE|Rp29ibW{PS0_-;`7dkk%Gb)4WSzwZF zI5q%a$~O59iB|gXC^qC&I&Xy>(hq&3P>PvqDY&r`p3#^;g4o%p2PS)IK$+s6_c+dO zbDH0^YeCYudvO<;w(%gmb;E|iCDeWeP}LIqAuvFV`3e^O50r|As4_a41}}yschnY4 z?B_*Xfw`)*6|xz;It%7(+g^fm+Fc(Ho4Z>)3$LB^2{3n6IIuYEIU=gU#I7K_@5lxb z;or+pfb6}O*mA5Nr^9XZ3SJNqV%G?BXk#t8S0P0WJOr!Z4>1lj63tPgKZ^5V; zy~E&^_c%pnX(x@hXaEmP-oZ|;&u86HPIvL3hwpEEPbMXv?rFCJ_?679r(vm*?$eUG zxf^;W=hnq=s@~5|u&4Wv#8232jF$UQjks?qwe}!nOOYLS0;#IxK(F4+t9DHkQ;9Nq z@h8Q)7u*VV2nkf@S^|sf@lnW^yMeuo_FO$f`DSV?xvU-de=}$ z&4S`C@Ty$%8?blJ63`*`KiuN1U;P6DK%UsoQ615_pxPObiqRK+P zI}USf9p=#Na4|L8N%8yBF~d{m@FmPa=iJ1ES;UbHGmok=Ho&>d*;Js`V=qYWpHl>L z?1=$Iu}k_S)KTVQKrVqelv|q<%SE>U;hfPJ+{QN=EM z8E$g2IZm22{74y*_=5vD&6GKT69LH|{UQofRL5(BN`60w05;AP8#*7#uYIwCDX?gZRvv* zz<`TivuIXl*#lICWC8Uho`{hgz~ZDWjsWKQwFfFWi-p6--{!;8)SBf~w?Cs`X2C=L z35!LxLe+$S~KC+TXqT->(%21#Ee(3_UHi${QpMDyc6al1-+pjXqf-dLMw$O z90rv-AJk(zm3*bxKMnD5hB{8q?iygZ;)G0tw)BAF*mm3t;*q&XYuqvR-k$pyNWHIG zWW=zR1qjvz0n;2f=CJW>00tbK2Mn@Al|xh-*zVeHXOHfs+ejz7o@Dp7-&a^KCKwC?K97$Z(Il*f9zXe$DvDso*Q#eVD$!jm^B|p^HYAS*c6ldc9KPa;xQCz@t^nsvnR6B zTsK|;szdjHMKzOmSy8ut)!)3)=E@&ag&LU9Y!{!xO1W0Wse~220_oWa>yNsb2x@h0eWX%;gAZLp- z%Uu)T({=;93vC{+h|!1dhFLyZEKGGdw@ns~ZN96w!fl+j9O(bcJf>p&ejVu`e@L#+ z9eM&dc~BX!s?|XH*CmPiaB^YgxZ-joTPb$2HT+FCs3I!IQbZNKtp-}Z)B-2EkqOcl zK4)zA${aY!H|2;aO0!~|-Pj&d&-zoLYY+HTyftINCN3ZH4dbY;`~ZvXVn?8U?mDm> zt{X7Cxyfmr_beHL$*VOQQgGnWM8#1VS?M`wYa zquoIf_4;~DMc}$2?=EmNmfS$yX6}C~zFD5kAJ3QH!$73P4QB?^BAvxXCuaoDaqTm3c>@>{>|OryI~be3i^?*eBFIjgDO{ zZM?9S_i8z86*a#B9d4!o9e1!aK6~Fin4tgZDy*@+cL7c7osf;(DCW?qd0Uv>wCE#2 zw}Y{8ikzk8gg{KSm^X+$z(sfaxf9^iy!%_A!I{f%*hXRKCbN`D6*F&J_+gDA8(wy| zqk-P&d$va+X-_}l4I+37xgVOOCW^T* zxa*kNh~g`dI7wyXn50G(u;k@J@I%>fv0&(6A{D(~b^!Vq9o|VypYKmFu2!vOWAe}A ztSTb5?t@UC4tk)nt)O^=`Rtn0$CH`Lnw3DmO`MtjY7F{B%-nfHwD1U}QoDFWt`W=?Z;s~(r zG?Q%c`WEt=b!sX%Ui;kP+tjGRfP3xX7i@iwG%>Xntu^bW7zei9{|sJkKaeotGv6I6 zGLEi?%vfhm8X=}9YZ8HNx9SmKHYXO zVgDo?4~Lk{Ej|ZZ-IE8vuv=sKvD8V8uw*1s*T{du)?}?^eZ^%S;>@YX)#LT7Vdw~Ti|XOhV(Acw2Jego$ghurj|hZz z`HNz)^jUXC8^ZIeNk2{!8Ih0SPi8|u!4=uE0phnTa1p{NrZ8vOL%su+KbQzq#XkZT zjq?S1bS78%1V>m}fk)*NMl+!#@vw*D+b-}bh}tL%fv$CA6D;9x9@D=--=9Cd-#;s} zb(S0h1nK*ZVsQ8SS!1|vgfc*FIv>e!e3IIZ9|toSr;XPj{(Q&IP?qpm8dsi zeH-WB8h?PLr8mWXgRuH=loVcp8=S( z!ZS>N%|#`lr-{6$fooL8Z5e*b_SgW+503*TSNKrWl;e#ErKCD}4^G{%BM>6HHAj;J z4;p~&uk91;VLg@8nobXuaMSGYV~uL1ANdo~lS0O{s1W|juLgm7)~DDQy)_+)k0(GD z#`RZVoSVD22`;vMA0ebdJ{V@-npMQjGk|`-tpzdsb5V3`=eZ7y$S|*pw$lpHX!{*2 zMYGQnm{8E3)im%R%o$naw!B?w%uVgAcp2^_^u6!P;ubW2NXLGU(qZxZmSZZPoI7;V z-@gP)c-Jw+??}D$+RuR6h5dk`!{(Uz%=GFN(3Sv7aLreBCGS zhq~+~!>yQbG+M7gE6-fp0h@q}E_?7Hoc84{Wz7sy?&{kpe1T^;le@~Z2ey*W`qr@N zW{iF(=z?!9hdpkZBjiF_E0(W=^E^wrrB1Tz(NUz|uxbe=N%S+UY+zMjPbzvGDLLaH z#%0O3$qd;GPXL{MIt*+cc?3mwea;OJzMaV5`lxO&XT@@PNH=w#{eOE{k$3deBZaKa zI`J}SGw=KspBV^|V zF$lue@OCPnM-Ny)u&s9IQz3=4&+!TH-w83}n2am3Y^4!iUt7Gfye`@0us3h4gMQs zp$ci@5;iMrTv-jb=_r6w3NGqOr{ItK%d|-Ri^cHiWWNLGae*8k;an&vUMlV@wV9EM zk2g+lklEnw#TT7e38~Ca+2N%K>@AM;S;VR{^-S3M*7A4lz$W5| zpuNYaUy$tT~$v6ZTPqka+3IIYgq#1VpD;YTyBN2dERD(mq|W#FY(w6T11ez z^-bUTm8A>`7#{TJXdvR+0HmO?8VNKW@y0+p=jZ@_xM)lmIv?fUB6v8*KBALa^O?wj z`aloy8({GzDX0n!5?1dn_nDN#Y=*7aOoD1gK)=O1p@+Rhh$wr(tv1u)l@@XysN7!& zbXF`x1sY48z=Fmt58$GR-Xdb;)v>~C50Z3V7F|6_CZSLAS5TKt2;U3;fPyh1p)1h1 z^ESVle|I-GHPn2z9J0vUn?51?FJXS(IQIf1QOardH|~v>fj$A>iq9FFYZQ3oPm4R@ z@?vHnn(eUh;9m8!$1G_0d}`jwS$_kwT}D!JY35`1c-i;|EOO}pYj`NHk-0U!w{R@1 zJ(!J9L3cvwpQE}%{~>GOR8;1NnywwEfy>lpWGBaS6djt!uVFUyVEYLx-V00!n-9z@ z+zAYI7zIpTwu{O2xUPqqVS8Sz2!=T2HURy`ld=3) z#WH9zFDHV;dPM>k?+K#C#i2JWhBgdlI<5z1uf^T%l3lnO%vREdYecQLQq~MS#ImLY zi!^HfGLOwX`mzzD*r9_{;2YhQ<%+-Z2691u@Q(PX1?L`Yu95izYcBwU#s&bxXJcC& zGLTv{2R4s(Lu6J^{Hoq?Lr`okqk#8T6cQeICu&Q1~q(d(@EAM7Q zfk7k1o`i^X-}0MrA$*`zh0PXn_&Gbj!qEb(=kEcvi(iU1R+kTj3G>sRv#-$cf)Es; z(-j0zil^CZy?G%Cq+0VAkH>3fN3i@1lbve-8k?WEEntZ45T!Api?+})De03j#kpZN^f z_&3phDktT9hO`kA>`}X{n3o*m77M-9Wj%*Da^IV=&| zrqdE7?&QgdjD%BlZYsOByuI|3Ls@bbP(tMGE3m}%J-9Wz z){-^g<66Mf5?#3*nGrMuK{DzO5wGq77Ty7W_)E^#L9nQ+cXNY{rR0C&CsElE7jAOu zH$?Z^5_+N}KP_^Wv#uT&WK_4lhA4IQ7T6!r{DKK(R^K(jB{*5)2jh$lmKfhlor9*s zF%nlv*y0|IVCXKUU)RE=s$>V+x%DwTwo10jI8PygV^mDY*P0D9=sPyF@Osu<__$g0 zRtz1+ALr>_aBFT@1JrpO2G-8l1GJmf6@?t%iDy{V8#Dgz*CsUIW+Q;s(h(T+;2BfN z>PjAOckUq2|H5G-oha+-waJg>z)wo>Y^ay<8t<4*$APi_KEa;swgmABb)x_nfL zs?~q~56lLWdHzyA|7_YY2-y`;GVvbN`+Fqy669Q|9`hn zl=@M;R|l})RsOgbXrsXr4Eo!%l-WL`sjxT6u zP>y*ez;-O&Tx z+s4MKI2sP#fFI=Mmsjxh-h`HjpwG{uJn^j~|IK|tpK%P-!C1y9ecZ+%tZHvxpv$4V zK#%tp0DXqKB9qv`VAnz{%chR|3a;6kqVd9@Q%HYK_j-D<3Hm>w=+-BbBr(%^0gDru zjB<1VaoebO8il%I_EELxl7jEO&ta9rrpmo(Tpl!czfK$3X z1O|Q33K;saXkK!0-(=G%4a9}Bem=yAA)g{qq0|cEra3dIfgg(!{W=0>FIx-~5f>Yi zMGt9|$c4$7Q~`rWd0;O@>MYTkvbE=+oag^Ikz^|Dc7Q+S!}l{-^{>Dde^SsDuc5fi z?)eg!e>Wd!GjIT3AO6%G=B$G*z?Svo)Q+#}fa5<@LdYs)qhL<&`+pdF>-Z>-u6;b& zWF!?PDaCL2 zUDt%?`#$gc*Dvt7cI+NGbLPw$XB&5Vei&5nQ`y1nCvHv&s<(tWVsSmtcxEuhvHU~x zUJHkch<-rTJ+jzvv4Pp?VkyjO*XzL8ehcW^u@kWR$xS5H-y;HM?IkvuKxc~E3=6hz z#bXLrb>e+-`i0{U>TCM!i{|!hqVg_BkfbVp&!>9p>UtapN;Lz?xy47sGEY@$IxJQ{ zrUBibkQjbEyN5Y+gBljEfpNf~AyW{K{49qOT?(ijG_A+0yON&`WC(I}+JiqK=GdWV zDH&$mM1Z8vE>paW^Wr3%_u`lMKEUiQJQ8RBjrN%tY7Li8PCvptxx+1)ou$;}1%-fZ zbAD~F!GsAGVxCQaB}ZIETYNbNW{ddNz_{oAfwryff$k|^FmY`}`~Nfw#jK@p&wS03 zjjAi>Ww2PTUC5w^_X5KoQUQy^`DRq1mPJbG;RVd^egW9@GZt9A?Ex@&+C*SlCuTx< zOK7JK6^uJz*Z{$pnd_=y%QG7aEVw!fYM*v1W*)ExJYqF7m0IA%i#>dvRkFW|3LlHN z9&DuO0UX4qy_|_9s%9o2U5KPfKME&reK9bhge=y@Kvm5BV&m2{&DvXNaHjYNC15(6 zs^1;#moq_M74lDSt{5A3ZG)>@R|+2YcMPFBmIUo9mfD87BZ!zcBEzDIPe1|$-96QV6NltaI2bt0!cma1UDK` z&yhgatgnIYH*$d5%U_{{2y7_vfi<`59AL%kTR_)8f;ck4f}?LSqtp7eMP-Ieg7yw} zS;T&2~_h86^7V{ z7sKM!0plM94B93VFVOn`|0fyO7L)C)C$9qRy6>#!z zQO7icdfY}$I3y96P%{=Nf1qRZDY9CUtuOVf;#;$U zLr+jnx!Deaz$f{F%D&n6jt69vRa%%^*jfQ~_gHw}nWV0v^DAK78`e?Q zs_DRC13Cj8)+Phx+r<)fYVc+>sg6U~#W~@EDx{^q3G`{h3;%*+$y*68?jcv@+d6U? zuHmK*7Ta3V!K2MEQKuf)$Z6VGs+0PmLPu5Z8qKchfB#8Z6VY_zj=Qq7L&XUJ%?U~< z?cxH?k8EfMb6WWy^v=k7jFfVtMF+3FFSJzsU9!Ap=d8v}xrVWrjK-X08M|3^)+Aaq z13dW?zH1Jek8$%E_{1)M4fGVV$bL0vVa`4o1#I88aSd~X&l}i$*VF-{B9;JE(=G!C z-XK}5?YPMX{m^K!nxLCMobgvZJA=Bm{H=l(n;F;m)8x7@e}b*~aiPS%Nc9~nA#@Yv zWVm>)CS#il=AsD+z?RQ>0G z8FD<$O{}1areMT^p2(S;X6QYNp>pSRf~DX%c~*7%JBkaJu#xniGD&2vc}i2*oDXjV zy51-R1|K`Xn~)`g70c&x{RT3lzwHZiNRJEub8JY;v^X!cQ>*@@l5W-zG!n4QGdreh zShI{jKAYykFX&GupWE-8$kCoEjNbB!n!%~O;vg__iVBh~wLO#Ya%~(k`nGGw!2Z)m zVnYxviVsaX0^dkqYhbiE0hxBi66S1i#xMTjF!ZdpWqhXGC2%F&HJ{l4{oRtFoGM4N zKeBzpHsfAMNv2QB_#}EGPo0A#N;+{+5JQb~#@JvtVl=|I`D~+H_a7S|SK^o!wgsFH zfV1_Oc|i5WEoP>2sL?yf4`D5RWiBp~yb5g_I&R78uVgNm?U}X!e%jq>X#KI%cZhMk z*8ddTbP4QPA}>8tTAIq0GMN>&WKzXwu@oefdhUD%^dB{520s)aIX4CXyN|mGC8V$09ofep9VC6G5WN|>_u!>GR0LG* z84Iio`We`Ma}cm({ySh*eK}AYw}lnyJ7OXF%D~7wa59eBjM~Zyr=p|GsDz8P*Gi6u zqBw~NiPmuee{^XaKj^-X2l|g2MkoDe%vZ>Tp}?q?ixrqi29>;!ePH(Uou)oGO!5)rw46E~E*`IRjqNq@L04Ei{Y&-2^R?Kz z3{rS?7BML+DFxc@`4Tv483l~uB$^YN{vd2|#f^^RMPKdTW4(nn&Q4hgP6)7{!ytxy zuJ#4$rN|^UskBrVBtH5#HVxZRzY|}T0iA0-fKle3fnf@4+KR}x-2~Z2-?Sn)Z%N)y4{7A7vZapSq^$7$Fz%~liemuTEJdtuIf zw+mRdMGkaZc$`)47at?y2+5x$v&Q7?s_WEXqAiA-nL{LHE?{%5OSc2YB(r;nJ6XdF zXqJ@A%&`ys^G`I?UTf5}{j_(?v5gNkH}q#YvV#f_4KTrXne9WctXB2cIMX7j(}`*j zA~8M%?zvxxe!if?CRmj7=Znk~ZaKz-pcy}+Q02xGmW24j&iRwH39 z*EN@Y9NR?lt^ejzyY^k!xIh_Nf9?N`eB;lgA#C1lC9v5K`x#a69=6BKrwdHIrH12e zVRq}n+{8V>$Wtk$ucta$^@SI3!ksnrmh+4l`t2|>x3NQ|SreSvQ#Pd#EibmhMx*j_ ziV4l0E! zL%^E1EHj--DG}z>Q=7~JXC+>tTeal&3 z@58ac@qP?lw2l(6t%*NS-FWcHef@CLP$^{5HSu9Y&tKR+noptfRHSeR)@E@a7@}HV39B(ZNiZBcc;o~6 z`FDMx5YM41a4KU}o1>Ge^fql+14i-pFvn@(UBI&;MkMAGaG`z*(G5scsI2pPn4 z&N`rX|K33D_5_Grp8lCY-`XGGcN;u{xkri--ZF@V{-&$;xGMWo#zHaPA?LU_8e6>G&dMO{@I5)6K`nOTqNF4P|7wr}Czy=X8hRFU z2~|)RV^!mwSzzWCYU*beuSt+0ZP*EVHC+k}wG0$R%C9%);aJt>&dhB?QsYWU)o7?j zQ5h^*v{>A*#Ql!Ab?!|W%0J#Xm!&9~1=Ov60eAh!Tl_jLGZH<%(quoJs*1adnmfps zeD#TsDf0BQs4-PcqRgzeu9YQ#VnJf`*RF_cZ>MSrY&wS3=~Nia@73vpg^=MTDem2n zM+n5bSK;sV?3u`aWc857s+qtSkP9+r!q2-cDVkZg9H_p_?i=m*hcC?9Ai}7Eu5e9U z=8YMLwDYXUg4B&-BDvUybITs@g7}`2;R95q4fJe<~nJelQ8_AabV1A6$Z1p02F z6pMS&6S6S`sibtF1kAbpEAw8bhdypAX`{Dt$|LmipCNe^Hz}u-Z`*=HN|yfubDK~* zp!&FA6Q5{SYUFo$G8f)3?+Q!7<$q#L`ldRuvc@H$Jg4jRtk@6~~n!2Dp=T?y)w}76gKh4Q^aP@A9r3lP+>z&5J zmi)DtNvN5y5th0y4ghU>vRv8y5`k{buqsF8+jBln`%<0tAJY|48H2xZ=nxrvipskH>%I64 zv2i%}$;DL+z#jJRB#Tkp$>choy_ox<(Lk@G1DRCH--}?eXzd9c)BGV&9pDF)r?TtF z7y%^$chmHH3QLR|`)K#abs)dSoti;NZ>E>gIa6lhE{&RX2ED1xwEJ*!z585TeAGnp z+SVHOs0UMlak0+abC|n7PROl*fc0=pc-J1-s{df1&qhi|-^x7ZEPPBK{zUjr=TEZ= z9|UMO^&+q!iJhx8mRpe9{7(cvNaLAAGlQQf!~aDsUsnBz)bFlbyy zOmjeD|9b^)VXX|n$X8~Twx;%YFvZbCj?w?vWpK2~%?7%D)XH!`E7hV97FAFsu;qqB zK#$52(FnboQLXizv7?beLIzV%6^*a}!$|5L;duQ8yM_876Z&26nQmlHO9aS&Jq}n~ zTMgyf{pfp`-G8^Dx8EgR92Ik%gm1pL4Bqv>`9WA~e=H-bv^Z908ZMR1xWnjOS7JE< zX^#>_aX`znkj76GU1zhqJQ*UEx~1$~Y;BR0OXuKw)y_O%yZdrrm#iqDU+_*~^1qbT zni*kWSHpqdM9HG0J&Zo1C%IaAA`3Wv=>p)Cqm)**&$obI_0Q=Z+IuuOAVIttmr}~A zD2lHETeZn$g;=Z|C?d2^*aw@}y#%0qI?14@YMlK^-C)6_%Emo`qqV07=s1YM^dl+6 z17&6Oj$ghVBfBOY8jx;6!!UCZX~H}cG?9#Xb_f^L_W>|ieTAVtLVkwD)8quuXUEmX z>hWF45dMxM_rl{Syhu57&{KTq>{JWV&FFPFRH8H{Ijf7Sl6tz50Vks9~ zM5IpdNF(<@DKk8r>KYU9k9)~oeTXse9>r@`@(W<|SJQwceN{l0zYI)Joim7H9%D?D zx!-aKUeRp@Zz)C?WnnQA$X`Rf)?4)s7=11Xn09d~zs)G{=ldK_t=VogvJJqjdNOO+ z#I?YTG4C-E)V5(HR*ULp4u?y_t>4j=yWFK-5mdMm7%?;eSlH)tRFh@sLzw$ny+s(m zlYcRVkn!xhBT~$P`OhG7L8yVwqMBUFbKs~;84^YNnECK~NFg5UNdrwqPn zw#>P0%YOXaGl4uC`O(YDM5#0lz*43Ox|gIM+~ArsVFrWvzV8J~z#t0VSW}j#D&+>y za&`u=uJ#uUW0Lp2FfEo!4_||es_Q?%3U>;#0=pl9rFmB&R{Smoi=6t;Fp*m;c+o&$ zFmo7H_DrV6uBcIMD7x}iHiw%&Pi&nGzW5B5aPJs=K6&d+m|Ip~Mk_Bfo`lxrURMP% zm%b3jdJWt-$E*6qv=QE_1FRYu(o}Bj_cK;C>3{rL7Qw>)H>Wm{{}mUIg`c zKxyPZ^MkpGN`ZYhv-iVlGn3V(yF)=7bC7LDzQTnR$?g~iORn~~?1OANs`0)aR`0wU zAVkb4tXi8($p*-Fsq~ZwJUs3tHD<8a1F9$y_GG=36C_V*t2@9pwrq($0T+P*%lnwA zTxC+|;VsB!j0szJ)$#jKf)`;U-Z8dspXUk@UqHhQc!obQ1sZ>x0?b`cf#TV7B_)Z^ z)&tCIMBDRlD_OD|*eX)+f@-9h3AVSYo#bYgIC$qKo6%S=8X>6)$C{g&H-VfT*a4pe znzm-G_%{6S=VC$>$t+9E*~JK>a7V9ThUbpRoZ}YN0TVKMG4b?iCt-2#a2n|4cO0nA zX`qs7v^SOe%W&z66xDMp?>$6d`H)lu$hmj{n7nQnamNCjF}0JjLK$bvFBWoJi_Q99 zVR1adqB^ft4SEvmUYdWEFL^I`rhn^OT(4%fqM`v^M-5Gp*1 z@5lbnpCpfEn@ODTBS_l(Q9fh(Y;IRL^*s>@ob09pdcJxO4C?mJ7r(Y;bIicZ1r{rz@vMl~QS9-I>9$NZ#>4`XD``Oje)^Xe={ zA5(1D5xANkWNT86YrM~(SUVPur7@J*6DK+YHQi&(I8zKfS`pTdC084u{3hv6ApTX9>tO|L}%{vTpv9}BbYIA55%mD+36DJH|8WG#3K|n{P zksk7YNZjh1WRp<5JddY=3)o7GRh?xPE>hHieoz5pqc_M*bdu9wH9{C53jay%&1^6d zP4at*z{QczfR#%Vf#IKj4UG2Qgw<_-$xcr><)~bUoH%{Kuufl{Ln5vV6JQRQ^adFB zx9BV5&j!(QzyVkua~y-yK6}{qt;ZDrwEyRQ~YR)jsPU zK9>pusGzgF3A2BfV0-Ynn7+ZbO_?L(lY(lfFB(fHARcQEhV$+p4h;TdwG8JiLn1CR z(v*(|xRqDtntDs=W`DqJ(}Mz4H>zBgxl{)t28qs&gZamD75~i`iq>6hQa(@_z2vn~f=;0?n`bmVv zZ}X-@5pE3vohCFv3A`O-D7<{tMn-4tfW9Pn=4P04OIdw|l~@yk&>8s?f=1#>Hq>jV z&;u2xkN@{RL67U3#VpWI0m!U5F7$nkm_p`J`72)18W^;UxeM7I!6@S6frWM4NLA%P zA>2Xz7Wtj>cMXy;46lHTar6k&k8`EC!m%=ImDD>V)HGVMdO|vm&ag3UFXf0w|B7t~ zd@5S^DPuX0F)dyY%MW*I1cB|#cH)DYp;0n5*dP=w5{2>E_7@zJH&9+x|8bICi|d1R zET+eiS8xmVYaH=~q_e(antl&#o5P|v82bVvbM_;bF})7K9P7<3VJT&UU~c&(D`xc1 zYk-!DW57|ZDJ&ho^9Fi4EN@IbdJ~iKzfV;(XvA0WN?XF0WgSU^B_3+eSQ(prJAv=wC5_Th>%6EFq9<;tng|+QIe*%yih)vn(zxI|Bp4R1_|; zZUL|){IVD2PTV>JgKO1UAGp+hS!U`h)rmKXJlA`{MR)xw&@YtATR_4qk}E1RtMP)q zZi`>QwaEQ2(0WKX&{38QbWdWZq>1Cii%%ulEY{&9ZyIYc^P;JbRN9VhRUI`&tifsh zO2MB2|0FSLLsbpDQq2znbKWt%p zVOC~P0J(MVEJz#jasoqL=?={3<%Os$5?Lo*wq|3_BlJ)=n6sYNGeW1!PGBXssVt4h zYjz^Oi&&1p!z6jIw~&w%G{<0x8Oh7GI#0O|vvrUyY3ZIyB|Z1-OJJau?ACl|A+WgJ z@0=7by}%Zx+Q@e4m_Y`L#5)9XDSiXxOmnkufSO~jKrgf1KyAdo%v0FT!N^l=Y$rGs z_9pt=Wu*u8TL%mm>OxxhA}na>kFu&0hj#>K4&=r_<;{3TQE`zH!F9R|(ES)Yv50*yNmt; zR*~GLOG3Mj9b&^I6K%`+)54cjSEpQqw4-*RK5i+N*9)()8I>()ykpL0h9zvS$~Hic zR;xvb$kFVoW5=HcW__W-#Ite|3vd0^9pG5c*Ff*jPN0y%!PMizIxPSy%!`0&TiJj* zB<{d=XUDsp$W``(LFuH=DHbwZ1_8SSBp}yL+ejI&3+;gUZEBe10^8P@y(rvBxz$C@ z2Iumk3aG9|gRzpd=Ptk^Z&=!>78QI&_HoJQ4g9e|4?*!VTR%)-(^7eUdSZ%JbkrMV%?rO~-?#sJE77zzXN#K)+_SKz*-SlmH4D#jJg= z6+m^E4TkSn`SV=Ms>^u33aB&)0X^o6hv=QuE^nwyM2&a`pF&qBpwaH3!rY;$33`;g z7*W!~C5e=C4fm+_*cP+FIsbDT=vh->E;b0p^=dqZo%S@2gE1SUm=$oV*^WSp&=1VE zzfjAgU77jPbPB}wmwv;#n{_vgkW8hJnInr8uA2J%N zR}NCZf*e`{owo2N+LU5Oer!CcjGcrX|Aw`N`~$FK5xWh8_j8zy4kOL1a4gPPKqWN( z#SSx$7g{V}b^5I!6DT@;&-jXd?FmcuAwH63Rpm^l$yu}E6krewVhJw~pwbhkcc4$s zSEn%(JnrCn_(wPe(n+4U8J74P8}WU@Y?^bv9ZwJIeHUTz`r8JK=x`(V{e z{Nz;ipv|kq316?Xj~JJKHis(4e(hympwU;91hFvE~$l{=31jgom61#^!O$WQ(6E zFLjq5h+?c~+Ia@SgvvqN=~jLF7Tg-Xc>tV}=?x6tyAK!<#Kt8*(s=$d$tMN2bidZX zAqA&^*<)%2wMzmh%{AlLeR__j+Kfq*q1!=*0JH9mQp9*<(tlkb74zyPBYDN7#s#s# z+jJ3VXR{C~Y6;UP6%2IxP$ zwka4{#eRe0#!?*f#hZ~QE`Q>Pu+H`PzIgbTXdMkHZL#Sf=JG_i#C0AAOo?d4?Y{-r zKVpDu=_(p}O(!uM;j}CP0o?E3W+r`88?U#wnr=tIqh7rcer~-*0d&0>FeZeo6L^D! zGd!edjv4d_7+*xrb!+_{DoghT=1e)D$@=>u94#J^!>TtY1ADfcYWne%WVQ86hL#Im zH)Q0|Pj#z+V(N(}OuEU;al6f1wy(l%*B~4`4^yi7)vp5Bd2=OyGyE6$+#J!xP;{om@~tv3q+_IDtcSgjr=!;kYa z5Bh6;iebqz+L#7P+1C;=Ibtz|N}1JQ_G$jbi=iWiY*_?zOai;LoMU-16C=)gQvdP@ ze~(9x|LafEZ(>smOv2u!{gPq#U$7*u+Q)=CG<8G{-NvC>CC~12fo&EX0D9T%q_;Ax z78cc0v5M2X>@+M^XIUvuYhSa$emE>Hy6`LM%+UIoTt3V!B(xDYskW0JrS! zQDokx)idNpGm+i6?_Sb17n2_tWo58#+J(i#*S0&gM#tyuE%UlV!Iw*piztirmqUR; zGp=xp>7UG5;5I8@_?{ua+$mjw4koEUjoH6I`3P=&2KDxT2b((LgB)v_t=2XZ>z)2VygonwJ(VcsCTbPqhD8J2 z+bjWh>PuFL)G{i4;nsGsc#yDaStnjpVznX5Ps&>A z-!XNA4>J_&I1-p_j=zSf0SiKPjYhaot1@n`>5zKEwDd||;q$gTgxndg37XNT=yJ=wo%+7t;;&i)r z0}Var0gWvo8Js265DspA0{Ehwyh{i?ipF0t^^@A)y#%xRQ3&(lR<{mS*m=|fIC&&5 zq?6ypj)*+RX)~PijG1CIQ`I{SHm!aR&}YIfV7O;z(>79UF56f9=pMjUMWWdT9vVxH zA-In084~0MtZxWr#N*8S!4erg1@f=ufCiW=yk`M>U-|`Ty^WmOFq)53`oA>7tn5kO z7EyX&$$obKmETY%4edgyY1_06J+Qa+4o0n5*cVO}<@31laI)uBEcmOoueu>T~=Z;Z^u9C!UMT`J8pSK)1%!R$J)#)FAJ`g?5ktrvQM(vkX|fhrkWz(w zwpCK?a0+$>bHtlZk-?G^x)PXnVhpmbESLnd<~xj2QNeAiK265y^_2QyBQ`Zk^~me? zN?Vn!X>;^=DYvI1TFYc8)#j3a`<%v|@_IQnqV&J_V_aX55r8hLo!GQrZRG@aw-gpk z`$EWNpP@|Nw_O0x|Lc!mga7?#$ zP)qAlj-YmJM~M~MV0X-|gPB|hz(3(33!D|>5A4@rFEApC?I5L!%2R$j=A>jfAO5v< zn*g)Qt_J9@qT~s3;9O~R54PfjpFf97TJ}2LHkV<~1`yEik*H_+_AJsdz3ebh)uIzn zS1S!Is-lLZE38IAg2e2#8hf> zi~08c(h;cZxE&bMcePMAR8nQg8Gc{*ECJ5VC-;_NKfBX9E>XLjVBW&N83c@0wx-(h zfB&S^$?h@>dntW$1p-+gkbpj)-vj#260?_4olbvJYvfrOaL(Bi!4*8arYuQtSRY{I zNls72RALgpiPY|(fz^svQ*3eX?@EXOFJkYwWi2a{JeM;ljjWq54#^Z`9t2Gz#Dn#T z)8@gu@C<8z%4uHdq8UlT`5f*K3~Zhzt3am3%e4vfjkq4yQi|4DkcMr=?OE~v~GQ4Lkj)&Agmoy7^1|DI)r7PT|hT1I^$FK=WM>(<`l--SDADQ z-nju53j+cv#Gpm_^rz^^l})$!9=GjgtZ%`ejE^fr{a*<$~Qm$t<#@96uIK_3Q%B z_VE_y#=82yh)pUp5kQ+a6!hXD=Er1zMdOoI>FxZ$9F=8iIH_M9Z=|T(Pp^=loIEOA zl{USA@>UpFfpI_Z*5hXVOyD$PN;EjFL0rh{eXSkZcu3xJ(aMaIccOnYUTlLz}@jvYdc)+tyma zwNnTMaW{1#LmbaXx>ZX{(SO-bUI~}TZ>kY8Wxgf&O{;6%@1d~WAo8W`RLm)jlJD1> ze=tj68Om>+2X?Uk7F~2*lsnA6Rbo&bRzDP$gys*#Wym|&J>-;B16xi-O9Ts^%7ew2 zby#MHJL^is)Nf%MFFfL7^J*%5A`VVQHWIpu6P2}7dxOSSBhP?dy?!S*xnFYu`o3R| z-1|=%q~H@h$eA&JB?imUk}W(ly?Kb(5szwMI=LUSmU)Aj&FjU1OQE@#f$%nI0*hbU z#lYZ0qQmzzNrT0!V+){h?s1@e-9MuE$&+rvRx*Q!$JEWb|7Y>gYm+-_OE-VDIo}GB zqOB4Us*eHBx;~QXW_5?9z*HzN&9%7E2y>e&Cm;g9DXay(&J_YCZT$n7l?hN=@atwq z^&@^gbC%G~glv<$n9^kY*?(A;^GjfkSjYTDe}58~ys!{^*GNSFo!6`z_>5|Bq1BgKw{6Oxd>7+VrN@ z@Q+GZ4NN%Qj~+fP@HiQ!&7>k7OIMo2Zp1Z@#PjIDp-a{5KpB1-LVSR3lOJM?iIp_} zC;T`fM};Xkm$Y`Eod2FQkQW!>9cjW4iDQ34_?(CG80t5W|3fA~ zPecT2)@9ay%3q(~EJXbTpDW}VVYqD{h6ukPrj^FGV~^=*>j(7eMSk&pebda+0tak- zslmmpodqn|N!~Bq!>|=TOJ(I~%)ZYs74QBi5KbO()*=O;&JKvc@D_`LApXiP;MHL= zrBOp-IM6*#sKoB~y1-JJ=M5|ya~Ie;&jtl;dVxJyh!=Z7?4g~-gjFYB!>4P`YsBkn zRsvFob;aZp#!$r>yfM*p!^clmq?$;&xLAG!21DC{CRFtlnBctusQ6|Cu;fhzs@<;N z7MR@{C~%{FgnE-|*MgCzFUBNBE2(LR+o)%!xs?czcXX8~T0u|++%${lz%Ag;HHHqW z6&w&7GZUGM?@om-S5AJO*y2y1?{qftpm9_`FeE=s-p#ceiGgkThe?=Jtv+%0Q`Vgu zjxj!uABIu7`vg(k%Ex2_Gv3?*s$)Eq2mq>}Vg2|TE-hCv^Fun2$sGsPGRzIkuiy$& z>pXOU-eDc!6xxP*L{@>Abx65GE>{oR&Bu||o0`F*IRu6R!Jo46B%Xc`tiD%(QmT)Y z{ipG&pWkK}{ft;{U+x!AOY|3G5p;B2Gjtsd^42g%rqLy?MIA7|-}k_x;bTA)RXYl! zitkM!o`zGD4b_;uV&o^4t@2X*9ra{*6iG-nCi0{63*g> z)o{{8QdkDRjt53N#Sy!{Bi{WRSoFf(b!FADf{BG;M^X| z5pLjwP@ww2e#YQ?r4mBMu#Yl6=HHv#@}phd8J5U_tQ4!E=`y*wH1=yRSe#6ljL-Rp z!14p@fxbz%P?I6vByyJg3XJwgMo@LgfuEl#8;*XK3>d2GMvuY*GUzyGj{3Y3U(ox<7QoCH zSL8$$!?x5}yrb*6cyFUf@De?|Pm=$CG8Ay-1!oSj-&lYTiX&%2^4m0Y#D{5Lu_ZZ= z-VSvC&4Xtek)&Q1WNu@FC9{BLY=`0Fr~t(tF+gLByfo9^N@i*>Q7GjKUj;H~qE$$R zRn%xIQ>Z-F`MpJ#qEV}1_Btj9Y9D;bf&}?8^G4?+&_=#aG#ID-ZD0wk78xEn7);U?sQbW%GP~i=9*f+QhS` zvUC+wFRnw#m7brGTY}mriAZBd{=x6-OW0wkpDqEqHS2_oL}ZWt55?qhWWZ+W3sL6r zy~(~o;yItNsaLQsCHi~zYH?GRnrfv4aUwsXrzc#353`7&-#!C|o9z^-#eEzGo6+fn z%o1C72j+t~X#?NDDPs;b5$kThGc&H&DIYa`zJv7i6*u2m3>N*8{VrZ;pf_N;nw%)eYF-GJ_q`#8H31(%y?biO+W26b}#%`iJ<&HzTc zQeBFR<>o)-cVzjJiA{kP<>XM$H|?46xDx+HK98T%AFe)!t^%V&*>V)h7+{jP^Rnbi zrqOViEic(j!TdpRItW{^H)VcEWV(noWP;G~j1wU8 z&~5c2agvVa0VBBh_2F~U)q2`2;OMKVkUZ+~WuRh+zBh@Vx^6l=(r{-ea@K5kOVGV} z>Q&@UXFUZTaVbH-)Lw^ynMs^;sAwgmlV811;*$+)5m!ok%(a+FxfAyxK;e8%XxY#!>GP*f9i0!?3ESdB5MNHo1i5zI~pnqdE=96J`TTcJ|$r%)(x zWnxk>ppgu(bM(^0;)uO%$yC*BxP2YsRqm zR!_vmML5DD={FyRYrqe!frdSpg+|U2#7lKu7g)p1YGNgD#7b)<>{bgIRf=M6`H9)hT}7awe~wF}*ZPb8!z=o#35YI$I5%7G%%JF(6W)}<@Y&u)hO~FgV|NSRUS9HX>uuW%L`D;Fs}zGRNR^sVUe96$hA(mMQ?|klj7`cc=jZ2G>MZu zF;8R$l5Z(!i4Qd^Ya2%eLn7d>$VdZbWU+71cu<81pFjzo_(%lG(UK$bhP48Ei`#Ma z`bkVt8AcXV7F+~&)l#^)jealU_lq{dR(RkYn6uxu4=@kgMxuJ290}Cj>L|mHf8K<~ ziS!Wn`LKo?{D2XKZaf(oH*f?~h)jx&%lP%PudE+hv|{+T>G zWyfTo#h~Xv+lv7VrMYkm7N51QW_$!(e%V~ae?n{#$*|}LKjTlBi$=(t`4eC(h$P#n zF8(CyL)|kNwy67*eVvx9fUcsA8PV8ywTWY>!W!g*AWP#)&1uPK&bjsqO)i34G+~W3 z`Hh_Ga+*C@bXgVIDs~XXW88jLeo>Am$ld1kR($3*>r1$JWF}w*(n5-fW<@2vSk5}VmjU9^*wH~c*hcp#26|=VIam&D=99w${K`Ql zOGz2|h9n%RONV2573HyaS{LL$Ab%swhB0E{C~^VIoxRE)SnBf>==?Rcj^K@l__e{K z2o~dl)&Fa2NpyEHjhbpg`B!iv52*chB*W{!X@%K@fYoH_q_g?JwA+!uoTo8BwT%SS zooq`KcSVF1Ttkjh4t0e~hI>ylPMA!}gt7)9`z1y(xV1Ki%%%N%9-|NG6o%ek2x-YM zo|>I}%^;xr)3)@EQ(S>1p$EI@^rZ?At@t161(UnS1Dy(1F_8Dd-=Pr%HPgT;-sQMV z;UJa%_`=N0%uyQSNF}K0l$jv9S8-R$Sf9WaG8K;JK5PxQmbfzr%-w`F8`bJB_OP*@ zqhaw$WRc>Y9cBW`#ajMUI7Y#(_TdSjjaXT69L3N5d_T><1a%etdP++YrNkl?SlXou z=vZA3G!$J28c!~V_E_|E1s+)}3vY!Ysjsu4L=Jrj%-nDczBP;4jvRNDpx)8l=2OO} z%y30TD0))wDQfpQ_Z609wSgrr|0>XWpO98AzeS-~>Y0~;?vYsty2+Gvlg6+k)twV_LB6Zl!|5M2-tidGzL?<(_w+y}JDod;@p<0NM+lw& zO9Ie6LWqZYn)RnhuF&u}eh_))Z?=13&C8wFk3 z9g3>#n{GhYnIux6!42!Uh$UvgHCS5*vTGWfRf8-9=mTL+sP4=}lmRxdw4BfkSH_ks zdJpqw;@L@?{*2wfB?gt4;u_K!9`f~Aalt3uY{*~M?Z*N0It>Jt*F^(8NAc9PHtBPi zgRf@;jo(qHOS+l^OdG+hTUGI^y2KQq`rA)~j^N)}(V>1&`Vj6qS+ZEyLheL%maJ|X zkmuMf7tBx|ysOKWs5)!Ops}m+%}nr0S=%-y=!t`G2yq#FvyPFOucM?YmLHeNttHD_ zs1At)@?HNPzbvc^Gz63Z7QniWf=&LL9;n&PyA2Vr+5TWT_qSn984ssH$d`NFVR_0^Si~W_*!yJTjUqUy z64^v7&h!9!g|Y#chBN8X_@6PgV>6S&&~Sr2d`!EW;^Di*s!{x~?5ADmTE<-=0d49o z0(H$4K;s6=_pCzEEGo=@ru-V$D;;k3f3sb?9AQ$Chu7hVnGbI4`~nKGO=t(vbtNqR z7Jj*Feg!Ji@|lcs3;UG%3D1DO^O=DE0(+1tYz_088U7a7&Fvv*U6YD|6{r|-6i)Gz z4g#|Vd5Ox-xv-30Z5GPl*unV;fAaQ5%H$qWvliRA1!EnVRF~)s^z*~bn7FP@3b(X_ zwfJW?y|&ZEDobIPey}tj*$;i2o48fqv-e3{tA@yfpZW5=jM%m4Y7(Wm#DkdEL4PO1 zI-E7WX?1rMu>F-HqhpcFfnO)c;0erDdf zH$|4Fl@HMC*-TI^ZdV~BUSS#AT~WOdpvvnbV6ht5k6(CtL4%b7a<4$k3cd1atu~@t zdxVHmHsQ9}=3T#r#q}~N77&&NRBWPt)9T@HMvywaH-Czz7s9P+eGD+<^$)<%w8lyI z*p2=S5T|j6V~R@#aN-k3V9Dr{?7lRsPQl{y-5#KEq=`(0M-BHqkePT$^4n=t1~Trm zn^vE}(uvr^qEI1AahBoGxa3C$^PBIS9zgPVcA!?yqvo;J>a zC5o3)9e#a_@15r_flqlN6SZvJk$9BcAXw@ruLe%3P6Dc8 zj{vLB7gAiRzkUL7=Q%^@mLYgU<>PHB!d<9Cae)Ri4zHVyC8-)r+X5#=b^@mK(*QFv zDb(C-Kb=c(PZvGDM`viQ$V7N;rSKNej%sP96ZQj9%p8e zIhAWw6cm7?InAm)~Rfomfq&uIwtbN#)1_epGZ~2omsExCaFe z-@y{5+zSG#-*p9QHunemyUxN=UdHKJ{Gi)O9}H$)eICO@e_PSm8MLfz!#81SdXb&H z=iTGFqJH%i^q+aQ>u}A&LJSjj)?q27`*C(6jt5Tz-Ltss)Y$Ec%-lxG7{K&09Vh^b z->o7w*6)OO%C}*r0qjCr}~ud zfkA(d1BMM`E!%b-4fKeF;sIgqagIdr-tm=)#>btje*UwEn~T`n#JrG=#2V1Ho~W>( z&9{)Bpu0~{xkinPAXJ!?I+&s|Ur&}R?rLQkCh6OeSzW|~s}_on%u3ljDpak1oQuev zf|*nQhCWc?Q3CK-|73=V`-Tjcd}#NzMGj#Yiw3s`J?Mz1c%#=zpVOFXjbaozA~ z!x%EM>-s01MHMbM#oBZ`KPWoKf=jhyFXKVuy4`n7byCfC7ADZ4GcYPzL+|+S#=?@& zb1Q_6QrjHn{EKXHwqM+l;l~k|GhsM4L_(EV{Im>aKixB#IT*R$4UyAOLti+C{?ZZi z1L2X>9TLCJ1(v>O3JfT|3Jm^N3yg43VE0g54$Zma*P6yjEz91cnK}+ViO8MqGS!e7 z^MJ~rm&{t;W6H_$@1R$suXRB82LiobiOXF@*`=7b=W+N)U7H7(9Sd%=Xye3Sn_X&u%Z=VqX*kGmi5T@v-ar!CVygC9vf5Yjlb( zFWp1|)e$@4=8>@!-}|nh9F`ZyFe~X}seKR04&f(P{eTuh7lAIj*=xJ*#3DV|zB&r| z3F^qsHhRP#SkH-_b`<93L$3iR?Iw@987_bf?khr&YOrBDTq4WG>a@}IEG$_Eo1j%F zVp}uO=1+e|d@Z|$G>WJJU8dqA+Z8HCGauJ9QK8ap5lTqdjFAW$lWBloi!9;qEOIFb)gTO)kiyvTG3?hHvM4jDQVMu(U5r`Kt_6nsgImSZSHQM;loy7e0@(d?52`Z z&bu){VW)0j<68YgcxikOaO~~v2E=N3;wqe?-|@TH^*QuNEc@E@<334!c0AmQq80*`ZyOM{v}7il z)|4NIz{MhkLwk$O-=d;oJ1vDv+(priLFNEPl|yy)QR!Zay>kX_x^@+wweMPHOhR=zc14m_l22k!OYGkxl4+3bN)3{r? z*w4$%(H0f3Xd_(prmVQ&lf#;t{4Yfcks-R!c~K~TLh>I-HTQ@LA*~eL32Ytz4rZr0 z6gleRW&gDcK&HU1s5kC#R}T10W@aY!wfW2R;|E-YW5@i(?IgFS)Z{@5H4B<$njpF7 zAA?I-YAw)W#BwtkekVNIg#`6sFNL-rZYy>yDMDGf1qGZeX+Dh6l)hq(<(fP0Zg{x zM_6LFU#2DXv?DCd0+4T+G;FLLET!4x?=t)DK;3jE?w_-(F#*M2zX*Ylb650A`Mo#@ zXmNNP=5)%2G2=Fg>^f}l0wUseDPIJOdXu=?Dcs~ZEV;*80j+y7ZvVr+!1|(ZkX!BJ zP9ke(S8nEuA9YuCX!6Hc^@?AxrTeri){B3utL5Ac^Z3> z*$=c8Yx_nECt0Ao)Z*DnR6~mwJlWWP?=ATIe3%CeYuyemk@-hpHjYcigI)1GDX~)h zBN=AXNpZMNR8r36j*uxUn!P6^c< zLi*@$GM;#sCkUVG(Ew~dW+WFt%JNcR=|1K(wq1t)$Wj?HgMi6TNy@y^nK%(*gKMQQ z$yMR@KjrbwnGEmneUuJ48`+sEHwZx+_GSPqBM(tdMjopGMdL3&g*kt$CunGSXC%x` zD&7OLLYPi3>pei1KI9F}_~Af*w;MQPhOQR#T~@dV`8W<(;rN*(pGZ1umbMpD-XWz) zutlEUkJ}(|sXI6mcd;>><%Mq`Z#>^{FcFq6?jACJ`4#FZT3isE&{cv*X@`|?alQK! zbVE$&M(YHbTL?i`a(oIxRK~mpS`={{UN2@voNm~G^~@y~u{NW2VX55PPewd373A`q z>=tGUY&{AvUV<(7bmLXb!T0)M@!uHt0j+Xq;wx$#34FY-NS`#U3JbBUZ zn>ET5l|~+JcI+6iconBQ6RX<;Egid};lbc|n61|Rmpq{7ysbbl9WTqnH8JLm3PiLf z3a-|tsr#yjvt4`GV-f&qpLh<7{wCTO?&s_w)RIj3TewxNtOC0K!7Xx_;p(#iw#c95 z=D1KtE=8MlhBe-vBB#8&Cu8znZ-tPU-ZkmPLB=#wc*&Ptp;uPNELc=xuFdM#D=<%4 z69u}c^>bm?oLUO>ym=F!g?~quh;Ai>QS4%8UL28hm)Xg9br3kFw+`rR@?KEy&3I9S z05R>Mo5-4!jE)!3d=(&J>iry3qhw*32NE_ldkOY;JZr`Qh1y%p?`aeB5tsJDPyEdP z;&NE(a5fZTI*jOkrYAnp3_D5hutf!Mit5=LaVaNWr<3RCKV_&d|954y>5o4{fWjoI zE^Uq<487}WYOW7@Yu$BZjlE@nUrt5~Vp=-$An5let_=>@Q`sRws) zs{>wfszM5OCY9ya8|TW>`=5iYgFQ#76MkVQQu2Cj{2(i-O2RxxnTDP|v> z^8*&u5KGClwy+r&o-lVpOP4xbYXWPtplK+VwR#}T?vMAd2!Fx0uXxOiO;O63JO|z?vsJ*tXJUS``uCNvxYRH{ z_aAvFtY+5jPlDQWFtjBz$$L7PGHA*Z#@55w43^KXF-^6n0yP!el}#$nCkfrX3i{W1 z*sA|k0JXn}!ClMmsR&w$OUi8@l7`Oau|UllyjYFRTDbJU5iC(OMue^n{}+Dczc7K2 z-65zR$&>`RuWYspcs7xKu)h4+Hh4^e#_- z1e{>y1=MUEX~uy^kXS>Cuw4YVj9URf*}CLHxru_+qPLLt58Yyt+=bwr`tS)4(}NTGAY72!cG5-<+R@D33Roj2#=mk36iwt z7Guml{2HR7a1ZDs)zq_jM24_$un)dU@7A`bP#Lc4SpV`iVx=bLehDm@>mCBLCq8Xd zSF|=92E{7^WR6gFns0_BtN8(-(q=0P>NM&%6eu`}LN&4|9>k7^R)X?0VWCsq8h3^% z>!9D6N@E?U;cd?;juQ6)uEtbSs z5;aDRJ@&3Kc8$G66H7Gl(Q{q1=KbFD`_Av|AJ@*@GtbofzNgRBu(rb+n173Ir-2%K z(U0<$-G?Ri*gSk_F|m}n^*I-aqy>uyOX3%9fOCd&t?9=zQl3PeGjV7HoE`3ke#*03 zF^Kv%-oPm5!;3kf@{697&pBRtz_L;AI35QK1*gtLx0^< zENUArUWcu$HU6M$dcait(=ht7v`{uDJ(dvznc>6q~Tl%B(F^QIvE1 zq(QX@KuS#IBN^p-N0>W~&jd!C?~VB=`Q~C#R#}5Ku$T*yry-?M$D$zrZgsTalfS0kf*A8raEnB0hKgj=dA@Octr$K`hM3 zFZPC|^$W^~*EE{-^<97=+jkqQVRFh&nW>+o-8%wQ&$ZNSy2y=;U$K&@b@_^<<``d@ zOU|3?kP_d0i$F0vcnl#a!0mKc^L{b`6#J*Esrr02zNg0VZM6;&;4%x}nbT0QBc^s` zt5Hrx6=x#`s`iZ-vV-jjpmTFFgUh>7K(~o0EMPDHhsb2pb1i|bA4VeLzTWKD79_M` z#C7Lkc28ao)ZIJ{F4vC;W2&RP)65h;D4m^$;gn~U$4`#!0haxpVy=W%mmHqIK?qIk zrixq|C}+*;iv*|SMpB37A7Bo(PaJ^y<*Y43=oDjd8P<=5Rndh_Z02ldhER~d9~rE+ zJ%=6nSuQ?&WuQ<^zR~=+fbO1?oM6!h@=+LlDH&Q{+W<^+5etn)s$%*o^`KtRe%p~3 zfMjacz>;}@EnK(BPT)uFBq|sEb2b9cPCncPjI#GJQ&K2KJL z=sLp^5+ehKUr+&adR<4u+_p41H%W1PFIJXH(>F! zqO)$E7~ATvI5H_AW_Li#Tk!yzA-_*Qk%ueoL2{2-A(-FKCmFT?)9Jv-uJ4JjA7kAM z9aG#~ZnXl0kyow(t#8c%+Kd(D;A?#biSye`1`b@v0#MEs)9VEznO@b+v5=NxJJCxk zb0^8uljR$d_6;!UH0lj+>f-ihB(dorY~nx@*(4g9acu8VyLg?o2Ku?#p+*xn>tIg# zhuqe*Pgh`vS1dl2m~(0&b}njO{d@iw5qXz0IKL3quwPgYvU+?m`AxaJ1n4>?7w8fA zJyPgpHX3Gw(^g=_ZY`L$%P4ilCwffEx}K;_>~bnlY3iyq=wRLKLYfRC$s2ZFF{SUJ;X%x=;;o$ z?m``1(e)BTifAq*ApW*3Xc;4ev9{-3nhtY7le@s!`B#8>`?|^+_mJ8=914s2(lC)P z|4I`Djdtg#i*YX1D3p~M$Z%Qc(w5tzT86_`K#xy-zgRMM;sERNr{1bTmY z4Cvo({J$&L(d|!ykn%hbn6 zF<5QNfU~C?)9*jN3$XACTfp(IMM!P&6H^Yc$^zXPY@9zuA;sq*Fh6(zu#@*fpxam9 z0zHNg5l0|=`+NsmL`UkC7;lW}a2KPcGc3U)$VzTrkANPNHv*gg_7%gO{ALR*_U{h? z)xlR)kUr=p4EVLOzv%8AKa3jPXEeW8X@4b6{j>o2G0YKz)mA-u4Xo|uRSfg5YTo-O zcH??kj-X$?Mdwuh@J+x|%IHK5n21XE#i3$cIQV6E zdX39xKR9LkuV{hGt6ss}E}6PTdtF=g#r^#^CVT; z2a12z&RamYaiSse*uNAO&rPR*5ea!$s|H0oop$%lF)`ZVh$=_&j7 zSzB2A&Vwkc#ZzrTnKYalsjvSOl#11;OEB9FV?R{gcpcOShGxBe8JgRaY&;ww8YJ&u z50O&*VlB8J^6d*1bPV+jI5wadU#dbs(7ln<8UCqfFwdI%Hz>jRcek1Lm&OGQ5Lxgn z#0)74aMu)kmDxK1=(*?z_|`4y33HI$8#+fme1%o<#@0$$Oij&ATup4C+OZQcx4@P8 z`+xnUARjk`5PqI*dD{9ez#Lq!X)bjrD2Lf+p|QcyjS<^vpu(NdkF~_cs%RY1MTxbJ z`JYD8W=uDHqB-Wx#OSPCk-o4CmqE&WKZK;5qFt~UbYg-az=YKwvYw>y+mwO$!ISAL zW1tVFkGrI91IaSH2-xT4JmC1NbwKq+<3WQf&Bg z+t3-BBgpClguPq@{B>lf@>g7 zJ{HqAK1Fxo7F@BLDQu$jfu-dKHjACJ&zX8jL*?X3pS%$eM&C!ZFlX#$B(}da02L?D zvPg&L`7AAOc^wVuWp7b2sRE$y+bB$xDoXHQ(Ot9IbVS*mK9{(64Wh_?AVQ1et zjeDUXoju5go(>y0{~e9zF>R#iLw58R?|qAZWw*!|BTLvzEBfU=4hB}V7d-8t5jPxo z?<1G^{dNf$-TyrIc}<#r8kSZAsl5B_VS#JE=?siJT5c{gm3d2X=T5+yET6~-vZtoO zk{jrXj^?mD)~QFQ+0$~z{55D|WC~oCJ<_RwwfB6Euy{6J0?+k?D+riu77E^C=tV{-{BP4 zp4pCmcLSK&@C7hKDg;{YxCwOndN0t;st7vNC#(Qw-wwk*4VA*l?}63^L~f&h53_g9 zcwqFf5Ik;Xv4kJStX>C9e8(sP_Pm47h=L%Pt*=W!pMgcpe#yK@Sgfk%0|!f5bbmZT z-C*`IWqHMR#q@^~%Kg?w9j{niHEy@^_soGs6?X-hYE;)wKwPZXqr)9FolnZrn8$=;rJJ3>|3@A;)|< zj%V~Lida1DCo!+%3z-gekzn-jcT}LUA6o)5lMbU_tE#PlxuVhN6{H_{j=YwvFnBsq7jimVv z6IT-*{u7pFJt_7v=5y)LE`XhU#p_P6RB!(QX!oRR`2S0({{Lu_)9+#UG_bo!Tiv(& zU{S7XY-FFtS8Krz{ttOp*GdY?Xbs2U+p}3xksszN9c9?YrNGlx9VVcIU^tfx=W>gU zz@}@g&}C_@7zneoe>g2%V z5sWEfr?J=m>I!H@ZLb2${vl)8wJ_dKm=kq%d}@`W5Bpv)q}rWG;oo z|0U`tB{SbxZK?m*!gGhh5Qbai`yH}U-MY^7gW|a4c!~N%yNcnbbZ?9aiQ*meWuXwi zIzHa!v2-Uw4(+f8_1O&1a+^!}H$&jHq=xM05pWwASY5|(L(XjxS!^2%T1zu0pvBZE zV8XX#sN~6u5MI{IRrFN5X*+_onLUUWrU;@b%VwAc{7NIylNZF@gZ3JBVz0`?no9G`p)DVG1(guchW0czh0 zF7R*3YSEh~5tp+6A2xiGIUj?Nl1Fe+47@t{0^{vs*@0EQWFwN|W%UdCl3o+oFxX5V z0E)KzQF;n^a*&5}H8Gd}vo|c{a(nnni4vzWtP54JSpPxE?GUyD=-{^ps7X+<;(StP z!s5Sx=Y%r+nAj}MSzvCL-ax0zV|izTdeUZC+;k{qJX-idl$mc6q4eKPXChn&*Fe*| z$K#<&^1Jpvn<@W^9aUmG9dFBPb7v$yRzn-(&$|CekWRQ8REQSHy9^?T7EpH$x(W3^yoUxc$ z$?nF|R}Er|HrX)Vv|94-jU#+6sA)+)&gRn+O}4M`F`L{_`YUWz3~e!HQ#kmoR2wO7 zGOHcb%2>7PM!fmYqwy|y4EAICg5SIc=0)i1J zB;Te7fLZ>DbSVAa!Sv%4srtYY(9}KLfNsGzfZkD}@$z209F}G{e}aP8S_iaQJR0bp z^gCnssH;WJph81NQzL|Bu%XC0)sI12rTz+wy-6(4^~hVGw(k{Dc`;94&_mq;F?w~1 zrI7fKG@cxf7)_nk)b$!R%H}pbiyFz7-$4@{EbaJI-pRG)D8%fa?BP#7%s5%_9NYuR z-W&o}R~Ob`BMu`n{&3mS4U{X2#A{C4xRYj zrVM$D7@Q_A6YSL?N78#;he+~VIGTTx9ZOxo; z6>9s(=V5a?Tm|&_(+n8f<`FRSdy0Fu$qQgXZ#H3`hra|?eyIRj=U)Sd8eCt?G#GAu zZUs`iR99fJueSQ2`$nUr*#kg?T$-)b+>M)EUuz5z8Fu;sC^YaozjQkIt$&FWgz)(NW_3VbEy`gWd1%33ta`5dYE>TtZ>yW zlKs_jWI-LN=N>N;>~vEPIV>`7@Vo`*;K^@Ad{KUrWO7R>F=iTw9&5PmL9oEFp0LZW zu#R09z6N@?d&dNLFNKt1-)yU4w1rPgM0U!Hr=jq*>s%G+-16(DJvQQtTzLtw_&#~2 zWHN=MCdS4zL>knN^MIN^O~{4*T^Ug{Mg$PcPTB*-T;OBnIIdQOH4^{~T(CBrz}4 z?w5}^#&0oy9eCFD#Mhwfq^rP$YhUuaHvf!*B`%%&Z{owDEP6=pzug3BNVhOkomBDN zpD@?pCFaJG`il!NtFPV=nMcRgW7K>IJCyJk(M2=3j)i-vIsq6UL_BytTaTulYk<~{ z#*5t3mU+VF^!y5AcW%d8liWrb+h$3VMp5<@n#T9h0Hi5zEw6+r?39cq&`tiY!uHng zfWP2@RI4#6zBCv&u8JWw>)D8Z{=Ru|iClaeD1UVn*ybLapwSPlfgamt37!bA_)Tz1 z$^AW`c57&X;`g1{o&oqJ83(FLse6n)R`DCoWh98&w0$-Jd34?~0A|-$D}b@t;!I?s&-bt-PTe9hR5OPu^k_-ZYSwutPv zGXtbNyr_ByHgykG5wIe5r@;-)}gObfOQy>>YR)#roRRB29*g+*r=hYxa0 zU!m8aT+BpGvU~+}y~d#RO~(Pl^P_>;zuiF(zy~_<7>hb`)evCQBzo@nkr^z&1~MC| zqH`9^PUlb$QqI$sMtG&e)0Vwgrw6IEI0~V9cOc zo?de@;w_-2=;(i+uL-cE0uS2y5*Xa6K*%I=p(^hLg6*N#%#v@>0{VHzerfDw z<~60PHPCJ}i_UGrcR)=GETY0w^0%-AO}GFI9)AF+T175tHTJAvt=0`EVe6o8Df2>s zS~E8dADKt}gd@U3=0|GJu8r6vl-%ZZIewwMa1qk8gDf0*=4+h3kegcIveY{)24%o9 zMqD6qkp^@6cUFLyv4Ul&9BLHM&JD)Ni|V_(5uU-tI3XRkZk-4>>EZ$gkQaXwdctNJ z6=V42>A?6vM>=GjUI>fgz%gKR-9BK&Ju~dS_xcK}LzYs~>;WKUoEl2Ms!{f^=zE3I z5Okd34Gcxa*LJa#!5tmr4>Ic;m%I>tHr`zGi^DlM+VDK91tGl33k zd|+0)VU7f&nv$d7ZLQuC#S!fG6&w3cyXEvsP{)KCfa*0n zp+`NFD_{;kW!xtcvq4M@q;9DPvFv;5B&W8tQtm^FpUwD zUHO-Di~P~%4O?)lVcn2lt1HZ}b)zy-J(@Q5XfvZe-T^JHZXSd#C(st=W>K_B%~dI6D@WyyG%tLpALK;%NV%78Hjd z(ZkVxeDz-!Z+kV-p+X~%PsSocBT2rEY~+6@1sK$rkrmJS0@&#qSdGdZ3eunz}Q+%fw_=>~f>;VQ+?7*Y(7$}4V}nG`{nZm`1#iqju~&GgHF z7RUPX<8i-M!{XiZCNOY{XmgYMGs<>XSY8(M#6AzJI&w#=+z%qYYivb)WLO?>k&@fg z$Y9IE?Fp7r$<8lfF7@jR)J`b`>ZTqNiAvbh1n%mz8b?e3;jp6k!GQ40&21$&^=5dp zlCtEJ@lhMYUEt6h1~9r8^}6O`TXQq)s*=)fkpibHDpA|T3}+GV9a7Q1*3y)KGcGjVv$Ihe5Rg73wr$2Ux7{EQpJ`0mWm!) zFf}t;UeDIX%z=)OmfxgwO^@tT(G)D3qQO@z@ zqnWgX&x;`rDG$Y@h|}a}@aFUG5I?y=)(Koml~S?v0njpz#jH7;36$U54OEuUweIy! z;ON6kxhK3a_D_%n+HUyo79j4SKfL74ECS}wr`{cPLJlmtO-ZhD9|#OyY+!=IKC9th z(w!ToRZ{w+nKBzwDX+?lo)3!D_4^5C|9Rxa0Od7gC}!bO)_6+0&SoY$@Ra`_uqpl_ z8@YRY2h_b;2lSn-1_pSHVCh0qW8RQ)GGvkcw9R2(;<7QY_i| zKVn4%CA?u5JGu!KPWd!HkXm(MhAi(K0jj5e5A-_ExqHPba#l{=Fks773SfYFQ$9

9+I)(5a3J+D)6xG-#@wg(eKwFcs;$Sj0`I@i|U6*$YuSQSYyTR=l0n zQI1F0Ay)gC#r_-g7z`9ST!p#au#rG@?Ftr!LNZi$V%WjmAinr-vOOQJ*@thCm^1PX zmCe`?vYO&&%n(V5+r8wFw-^#;|_j0F+! z{SJni>-!pI;9hP4QeZo0lA>Qy@kPHcmsu)tKkFG|9eIY4**zB$)SYLS`&i(hULhme1}!W{fVI52(YdSGZ>GoUg>Oxg{zXUdvf4C395YS(aX z08>9S#c)`&!vih>4?hCqdnW-CFU&=GrQIopS+SC$;j%WFx6gU>=p>3NR-B)SyW0p& zQDWh6K}+lTH#{mEY?!c7LD{g_IPZt9tv@sgJ<2I!dz`vkM_zjXAKq8m(qo|gMqJ%1 zoqk6$te^9Fw(e2p$m8C9HN0U0sEIf)@PJx-p@ z?@C?OA@Flx$M{fS-&2(Eyo&p1#={yLCotj%%b}qPKJs9D{@)SEtnv=e$*RkCz^{7K z*Fe98k&~c_1t4Z_p|BME%u;NF^(y$T zZy$<`>tC?9SMwPgLLV`UX?yqGvAYSUSNR5{mlZA1#KfSd@;;5t`{U+WspTxwl z&aVe7akE)SR!ceTaqoGK;vZg=#zHhIewXx!>wWA$3{sJVuSHTkp5OtJpz zJ+}@%LPkACDO%#9GRu1$YGsSvc>%vIhZ1P&$yPTn?l|#1WuV|>B2!YcZY(AsLPLKB zDg3NIIVM8304R^X1dN+|pT3$lG~=HYF000^c0Z9_CdE7ky1Zo7Yge8#)?aAFHlrbb zwF>ltx|_gJ&3*@lA4(Rb>iQGgVs)<|qsQPz8wFXukf)dshw`62Ongnb8@zd>e+Ity z&FTzumUI@FEf%`%O*5fUU7ZhsBEQDFFmiubj}z+^`=dZ<*w6`QzcPbC7i{Y6bhjA3IKcM}zg9pgS~gpzQ697s7oTe0|S!^Xl=(k>1qt-f{==767t z7L5LL1S~P)S=1Q3plXBntj5R`4wCl|^Wl(ogx@vu!)6f4^I{>QSU}wh-4To{wU{PK~)1jY(4TEgNpt_DN~|m&~yhmvnLWayiSyFW}Gc-*)y*3 zN#lI;3lLiCVObzWT&n>poLQt%4*uA{Vk0SYyTVrV!#}7#&qq|eUh7*61_%_-5og{R zjiyC8=O4yjJe7=ZJ%mcl@g|#TPiLyqkhsZo4t;qUmO{r$w7RMkIm}*Tsnq=1Eh1jE z2I_wiBSA%aTUZK?t^y`?`Uz;AB07!%N86$w8dAlSsPbk2TlNb9R^%-NT8Zau{0?hT zazU<_8EMSkCG1tj9>@kQ=POoXiF`WHdSEHtM@@)<#irdnpijX*VC0%K-fN^DaEX1n z0v|G+)lf^I*UIfc{k=)z7EZhUltH_@Vj$;qn>^%vDjU4#(xNR&$U<_@mmkg|51m74%TGLmIqfyKoV5vM0a@(%j%lfXI~A7P=2gJ5&Z2Xw_WKJK|0PUb#OA#S z*H?;s*}DWPuXw8lDFMg+hFlo&W=&|uLUv_H!1ph z54L`BYu~QUuBJ*6 z73B1Gr#gc()tz_<&I}ivbz)t`Yi1x*Eh?R44)#+06A2+{6~^7PdVL?kH<6nb$!sFA z#il9zyZ`Kq0!tor1m;$cO3+$qer>Awbg6~s4u6n!yCq=C@6k+8t9Nrvn@MB;x&>0^ zO-ht!f*eCNFu8BdY*>A-JQcC%&o!{q8uV85+hg+Y!_8{`bD-0OJYeLjE{$-C1|OQ3 z+BGt>Gcj{=hgQj2MA;|^V}TU^a0Xb?-T*A08x5?`kQeNFGhR*9_e_vie=}I(TRfp9 zb2f{+VZt(O=SrU(53_?Nm&!k|4CcU^4Zz6WGldk&Ct>b}r5XSFOVa?{(LCqBcZhP~ z&ixCDg<;@fU_iJE7#;Tq+N~JfUYVv`ia&!Hdt4=VwKYn-$+q`qCI%?6umJe$+4B{r zG|p~flM^1ye6s9*?+h(lgAG>bLJn#Se>RKifd+|En{&VoIQe8S(5H=Ym$c8Mxy+Vs z{Ui|evCDw%w!Q}@-G)9ww8b+*IG1C612q4Bt3;Cz-I2(BM^WD_RydldEpX*w>6cz+ zCXEM6aRd7?y!2sT;_O#Xt=1W2ys@4IW+)hGZ0Z2m5}x${_7evhtj79?y>xE9 z#?ZUhsBhquJascr8yz17bW(iPeBF%c)`4T(4TVaQIZjm#12Y4KI=g(cVa zcc40Pwj6szQDwn}EQz$opL4@)&OFf}E36GeX%yeo!KG6BnamzFdx|4}{Xgp{k3n~T z1IJ=Z;nP|WqpzUz?~mKhe`pEwc)gGsK-Wv1anMF*8;jt(G;x2s) z$JC7vfj$dx=N1C=^W`uMN3*|WQN)3m%Tx^$5wf z-rWaoqxOemL|Go)8|F5@Q)8&VWRZGRuwr!cV}X9w)Jm~k*g~YFzu{YyddU@*$n+wh zeD4t^Eh%L*EJL?{2aLUXj69pQzy_9_{fA{Hjin+N_HJB{uqNG4bN^8A0~Sxno<_hd z+dT|K<>dlPY$+ogeJ~Vnzy@7qf#F7pnoMq*XkIGDY^YXNg`S6*-ZUq30)oOfKM zsDas>oiD2(wB~;`1R+<`AI*(5;2!*%nsK^;6*3R9hjA_ ztc1MVR7y3wmI<}x+-np+alf^Sf4W0r*pgBk1TTs$X}~OTKU{733z&6_SyQdo_C%Sr zyL^M=$&dpDAf*&hhEko`bmY`DVmGuhql0NLsqG~?+qE7G^s5U8h6J7gDyDY?D!XI? zTSKrRG|}6EUdu^Wc%5fznq3#yp5J+e95`*($fcUW<6v|491nDTyb#TSdxuJxJ=ezI zYtLJ(Re2A4pl$?fC)Vj}pz0!exoEPkT0r!D?!*i32s=N99`1?WaFYpPuqgERfko@s z7P}4%f!U4Ol{`HdpYK2GK@aaf3``$&cp+|yL0`j!4R70Z<-q#I9zdVcKk4`T$)+PD z|KX$m(+jMJn44S8Bu0uR5Jd|8sn~#!;v7R_WqU(n=okh`yH10+ZQA4>c*kwz_<##DfT5jE(RcH1tkCLv zd=J7tgzCk4))JuZ<@dm-d-cGSm1e-|RaL-}hqgecHT=qFl&y$RN!1vRtsj_mNe}~) z?8Bdf6uIVa%wOd6UIept0~!-dFYk6R4U+7Asbt;IbYdVFJgkrfVX-|Cw9#H{_&l%p z(6iDzfZSlSWCSox&)Uf8OI_f(X)e%r3pJ77p0~ij9&)x-Q93UfxFzNWncc2eKcK6{ zcHpROZGofzU`m@MQuoJOkS&t3tx;L&YuHX^MX^(rwVfQ=bg`>xjMTRKQJ9AZF%^0o zs?tm0!-g?s5#7#$lu}qtOUWiqp0zwk33n2gh&d0@z#N|`<^YttUeecyhD&JDY$mg9 z3T>LsU0CvoqE<7v{0Um+)$71EcYg=AJK70o9~^~ny)JOFF4!Rhl#<>pfC*w!-SU7n z=b@Zi9RSIrIUf+z8ZyAiL3>0JX#tyq21&Ky}tYZ0yI>fycTd99Ll41=>E@2k7V5%gn@1i^r$0 zz*eFf2OJgD9+)(HHZV0V3E1ZKJ)n2!8(?%})o%k6kGPP#@2NK$$nlLFuygc zpcr>wBgLIdfP;`pBD4eE#lCo%h&986yp zi7SAb9Fh5eqdx1=`vilk9>x6FZ+9#D^gQ>e2-81Sz+SLH%yOwq4D{3L1NEeC zjyFRqN<;1wJGFti*dhk#*?SMr{~5VK@m93r%7u&hUHiLKGOkMQqV--%UQMh#fHYY3 zi=cDnBt2DR1nW#4wUs3G!9Rp1)Lva9x~*5P!Y%Z&92n8`IDIJ3vuIRriheovf&hBD|*v8gZ9Hx=Qu-#F_^c>Gh@S}^IRZ?O0gAu zO)+~do8;^}RF_3JaTp4B#pDm$0Gm4CwnE0ERL}{H9)h5q*B&3}7E?imjBA6jPBp}_7b(Lmjn;q>JHl;s%Q0-O)EF)<0@YPOcs z;`@~fF5$H!h%3W^?*7f$chEGq{C5vT_@C9Fr+>+(%33~a4ztyX*(h;Wd-8y;J{TCW zk6f$>)-up6A6`jc(_t@2?gf*8);H^TRAbV|)38(>=mzztJ~5KhI;h^<$5c^%-$7GB zca%|`Db|ZoM^?~huo!0D2WAfD85Ivn@f1@bP~3@WGLtYV9PR7}T=gmMjkR7eK+Kri z2)>hWKO0yOO%$?HJ&<4c#XW^3w99;8%*WBdxWLP%c~U{yA28Q!Um~~TPwHibgAot} z>w&jGR~3k30Og-iR^0}@0_q)|fC14|4Z#WHIWZGa5CKc(a&}#;`asZ>l3SyF{}!NI zccUbT?U+6tSlf|FGGNngJAirEGY`IdHyBvCu^Z5(JP26yH&u{TM@L}3E6cr5F%9MJ zHt8}@yHzwYhW06Ni2Q4{xfP$=X(F3x>L;aL8VaK71DoC2E1AGvfe~VqH0}aj-0F)6nv4FCZgZQUBd|kX6RpgKgujK#}~ zK`xZ$#3pQ_s5ft-DU zd1}_HFG&urcj+J3{o*c)qoR+Xa$+|zYGpSo9={VmNPfbKJ0ecQpg4RGc9{Z}JmC(* z$e-~Lmb%9*16}SPEVr0Y%7F?g=RK79 zAfS*bbdOoE?LP+|RDV#d8)C(1VNB{u^zhtD&w%8QtB|oMcs7<_ey`=PB5bc^t+?rlG{c^UC^3hQnH>JwzlL0t{L)}+UGy_Op2I1PpyVy z#JNSljN=rYR#P&7!&|Px+Eqy}s@L(0I|3c-zD4{lcSNh`y8jADI){Jy(*mEvFsnn|z>}DyMYL`TmV`&2Z&@tfhlawUUt|wVX~G8D^~N-e!M*QOfb@qS zh-+p_GDTZgTI&a*>hV)bl}`)y`NC?+Y~jDn0%wojvk7KRDj8VQ>OZeX>YZ4nf!!%c z@q^|9t1)R6D!D$}!%|S+A)gr16Mz+_*MP15ynXh;40#s~%$&OqZF1)6%P{wUK-K9`DMT*Jd^6*S+jv7P7vzlTj(OhPZ`cR4 zDA-9IJnjXR)_6Y^B*RtQ3!>dKj!hpqQ}?`%pJ!V9Afn9Nc7WD)G1cI@@Jh8HmNn17 z2-t1*FC6Y9yk{<}j}{x%nA=eHm-S1;fME2B3$SE=FEI?K)+~sO?{}iyEDw>>d|R3T zBX3T8;5$!$Ro?d1=1v)8Rmy(Q&(UYr1Hb8&RpWBv|? z?stz8mYqKYsQKm*PVV!)!Wnen+?o7~*ulmx>hg42)VnTx-}gO5ENOyJsJ(}t6rbz*-Dhag)!)G_c3>K2oN>}^LKy}OAosQZ7G%%c^MJbK z4fN^%c?KIk^k@y{CqWL+hz8oG&jhLsQ#nxb8^yjzu2+rBBmoz~)cht>I}z%jW7`12iU%NgmIp^+dZMpN}Dny|a3^qV47an7`C*n0M0)M~pxpyu>n z#?W+y9Yx36_t9)9nFO(KwdJh4jJH`K^_r^WKG1rf6%v0ORYpv87y9Vvnu3_qZm>R7X9P(t9uv|uUI3E+q`l_m*62w_P2Vds!5b*& z`hwbIY9i43G;810z#al_fiy1U1~@e{R&?Slv1#iq^~qHzK=>bmrVr zDAnB)dd_X58XboCLpw&k< z2C7%H!oscCl!Xti<@c2%R>6`w>KrY~Ouof{)GY`BQU4DH#a5U-_kbm4&^1(`+dwZ! zkw!ens{QT4|D5>bvHO8{rK z)y*6&&~3$!k7uY`bQH^70phWmaZ&N`SO3>MJgTheAX4ko|0PHr=TU)Lef9xdGRBPD zVOvLCkoGW((rsyb8(w>E=qoIQnrzNvu>bcK?D`!01QbK${(yQAR9%-t#Yj z_kp0k+Vw;HS-)_Ao$XB=G@8>bT_!7Gu5-9;`f<8sC+;=!uwB5>O>j?M0|pW8!=y!? z?#y6vFuRU9+)O(&oQ#%2jhlR8JD?Sn5;Mu_xxW_C--L8A@bc*4MwMYrE`HwiN!t-=Eb__KuuUQL{@}GAo59^YPK<8>|cJIpKPm&%t z$p?1T+2z2h%qzeeY(W_;YO>p-^!yMRG$R|CVkqynRT8H;?gC{?FLSUp7`t|fD!F8s$Y`*%k)UK5g( zv)aIC^J*&RvAsQk>Z_jvJ!Py-UB@HX!&TFVVNNVR0Q7Fj!~goSw#Zl1=>|4+(QSV> zv%!w{z#l50SEShZJSaqu?dUjS2II3W49q=)xzKevDE{US0xfXtSJ0T%ag;O9Al?KS z;irXJKAy@WH^w-$b4a|6G>5+$30kzjy{VU!U(RAwSB9ds#a+2=sPD_3fp_sv-YT{` zJzA+uYotL{onf|!PXUIVW!E7l`ZO@1F=Z;%Rwc{EUo2xU=!$WaT+$ogoF6lGpqWWE znyofoOl*OsKfI{LE7>3(}Q5G>HtYb1*;k{qZs^Q9FFi zcwg4=h632^I(PxS?})d>L5;9i!(Q;nP3Eq}4Nn?=7jMeuJpRd1QERood<~mc@wJid zv>X4Or}k_-6b@0!Hz@7w$>gw-c`APIF=;a%bYqQ2yHH@_<}V~!6+MRm>7I(W3A{Jl zflWV&jc?$Ddm`Q~tgGz18OTU%$BQI2DP)!8oLU8JyN;YPXk8WJ)14f@EfX1yuDY5t0C}6t{f5X{b;|TWi3}8k3&q!j^GPZF&lNufN3ceKQ$I()}m&NSR z_B|(Z{aRgwC1CTfz?5|j7`IK@Pw{XMXAuO?84b(`mA8e zj>l^_516jxSt zj&r!b+WX9NI4i_*b$V73%+>)6-L~xyKs#IVLa-I4&CwbplAYpaw39jDNyN{akXGcm ziZckGZDz%WwMa&xR(2wfSqx@5xIf`Y6Rh1!aJa8WHxL!CGlAKc**d#-i3RFpgMpDp zS(r^jZljzV&)@{ROSiUSJt&Dh8rxzLuzWVTup*Y4Q`4PV!pHkA=X8BvUc@C!?E6Tu zE=$N@sY};@vzn?8qZk`zzhQDyWb@dAs=nc7>V@<8s2Hryi>r)d#l0o*@vOY;I>G_cDGqyB2yX#mKPm)qGW zEz#U5tW0baa!YfmcRw=4xPE#D^I{n=dfPx?Y$x76;nuQ%dy}=JeqxxHD0A8g?9qFR z_r!c>-eImR9y_CKGwn2RP<+6oJyd}18(7q9Y=Q0aam#8c2QH+Sq0A zG!xaUAHD;Aik7f-_Khut`teH?S|O_bPb619>+q+ZO7pHY@KQdX+#A#61Ta07?5Vh4 z0c`#LlBrG_rO)Il_}oqSvUKWW&|ROef~dRMt~HjgzZdyN?}nuSq%XSDd`M_a$SBaP zZT|#Lp0E>z=cZ+6Fv|C;NU=OG0Jg-^CkO(D^jW_!Z^a465S2^+d^W8?=lw_vak~N! z3H#Uy@18o}7^PLa(IEOvyg|II1?pNEm(D`Ix&Z!*`evO-O#MrLxP@C^0!B_s!W9gq zyv)Z!8mD7B5_q>AP~IGGX@Jp_D#>YX=6n8KVDWG9RA$Ws4g*Bu-msxnmVZu53Q205y~Ca#iMvlg$^8;Bctb46=v1+pquYNV2BppfN*1kHmaf znz$arBFYlwt5i`Kn*X&AMKW;LVVG^A8Ue!+qloK|qn9$VT@+Z=X3a1ZPOuaCD>!s1 zu=+R)zP{WU=$Z2oKD|~;Fni-MWHTH@_Fx`b6r_P<>AwfqY|!UGb^TtT=cO-z`Y!^3 zfipVuod9shCSO={FWCd5J$B1%xmjFGh zIwIciY-8e6?o9_ReG~OZZZUi8Wq;=ZL*_H2(7D0D7H$pu@EBsH6DTv2@6?SjAyX{!AgQ>bI}{ zH)ANspI%Ff82sCJz=*@v{4{&%T3E{JIuloR0&h6mIEpQxo^j2LycE&v0vzT04D{b* z=>%9ZUDf~tOF7m__@j=SHk8S2MD3}HjR%3pT|b6msejQ6UR?h6pm+U8;v`#!6F2SA zr_43&!W6XsO938jdcg~3tIo%v!gaaH^cWRUhkUgjn0A-dn(^I1>}1Z|Uw}FOmVKXq()`j3v}zuU z0vNDnE_*#8w>q<(4s9wHL?gdjg~*yO*aDY`Nx1XL1dET-6Dr1suwm(Ka zs6)RHQy?Cj1|jn}6my+Dn-E1Ju%u-wvQg>DL4D1(LzvibmfRD48Eg0lYHxW@7Dd{( zC&6*bz4TUkssf{am(4$dbEDhbr`NVol=yc0s9i(<>>|FtLam{2N)_epJb|+AuVtyn zCu%s0-gwv;Se#76>S)@L?XXx|bO73A{Q=BQqz0iM1NUKoityjf~BTU0?;9$8dwl6rVv#(n!(cG+X|>wbEd&u z(mL;iE%DvF|0O|68Bdbd-tjdS>!itloBBzvE^hFyy)qvdH>Ek#nbVWUR&x$)14)jIC1jC-`jq#iKAMW41yq*}eQ4?C-dV3fb8XPlrmrxKI*#nC%FR zT|13+IQSsUQKl!%R0_E?=5h{f_9s~CK?_zOyr_-WV0M1m0_gquW>ihQ?su3gE~Nuo z~b z;=C6JBHN+m-9!SSD{SCsT^R(_oWtGP_`9|NsGB(z*re_jBTg0j#_X?P@Qixiv2IXzdok4+=s>kJqzwKf}`7{>i_P!0GT2_LSn5o}&Zy z(zDNHRb4`7`#~IiIV;%yxjv?5$xUE<1&zbZFwm6RDhI2Q7<81^w=$JdN^={Ik1DdL-aFQb zMQo?_2my01VUgECjM>v3n4GUgyFKhF1v7iw+)qJOeU*j*yNlywP_^dWxcAz>qJ?pg z5#%ry)X4HIU~D}{O4U2>Ase0%jLOdr7Xfg{5;xsaVfF94vSe^3i$zW1M{P1G@zxhS zf#b%w1Eb%3$G1~r4pVFsjrX=G-aDa!ap!~S4lsfRuGN6%aDNQcUGqT!W$j}D+1ne> za;R6_Fuvss23^U3J?xeX{_w0|Q|dYECa~DzEcO69zhoO0(@L~LNgkB>tR$vx%=vGi zM+`H<5MRj9o`@r&_d%AZ)l&3haUJ8=382Le+{4Wd3CFtOlO`*DfN7nW^Q@Rhz=AfD zfGW!Y@MAYx=qHyBE(}Gt*$*y>DR+R11uaR+S}_ZjQnM=@Xx2xt@8agrL8M!|cMzqq z{pHh0O?2op3vBo|C4Zo_M(#j2*k;aM2I0223f?Mb+wr9MsORhosV}4fJuN!}Lx&2Wz>>wWc@NamAxDub z@`;*(?~<%oTt(Zu0)4TF0`_k*;IK%2ro#^LZ;?#JV|nI-44Fuo$o8^s$~Qol_1^(q z1EvrcJp_8p$@q5&66A3OggCRkSgIQGSEZtFZ^6?iMc{t z1h?dC_)s*CF{UstcMz6_s&CfvGk+GI`W%+Y(40rS?L*mAygR^BEFJtK+`?y{LT2*^ zP)(~RY%nuX;k@YDpNv7dIc~%>vtT1n0~6*yd4bBz${d@-FksW4O<_1zKfZ#?kge2h z4F`?@9lPd2x2dlPHR7?LBgzAl!m+ay)+WrSl=s_kXpvHDCw`vt%}jjaUb+?N(QmRb zV(-#&SOetmiHX!aVY}Io1!vqu1?9T4-%%n?rpvEX>(PZo>*_)0hhY)J%`9!lpDOZkp01Top{ zDT38}oBc`Mc@D3K7n{$;pu~Fx8_e)MOmDQqOQ`9%Su2ff{BR`mS1^+8gyU~49&KD# z&K4SaPY4e{(1xS8AsOjx#do& zi#wVQp_Ct|7RPGLdD6=$fMOLlK2iL;GxV*Y+9^C*(5m+vjb|v>WyU_JKPf1 zihQwz=v%ppi4Cs4gsjHB?gN*y2PHtu^n)Td>eNR#3jsgkwPrDQ6?Sw0JVZy{;g@l_ z3d}8)ZW{`c$BA5EROn8Gl`KZMwa@36CQE&N7J+W@8+#E|;vO~ks@2GY$HJ!~4&7k$ z|7z}i7c1b;-)00DKjSo8Qx_k~Z16BjUBr-BU~CKaF`HDZF{bgrUh%KW^k$OE^Qqrj z_qhOUe~nv&9Nf8spmCJwj5eJS2Z!u6)iOP_j2pY36;&;PxsSTg{MSaH$Es!cPJ4vi zET8@<;D*RsGcluNVvdvR@~?jv@yYkZm_bUU`Wk0=b17o&29IAR+@ep8W?F1!oaVql z-TZrVGt8Vzx*ypWj6O~ss9Z&sv;1>AFwT=~UJy)GTJ+a0uv6(u)Qq)M9`+HW3XbW7IN{M}9%wG}*I^DJfdWK|w^w z;7{BfHLf!fggq&e{IkXk@X0G+Xsa#2^hKwTirhDYZ6SUfSclfw9 zLJqR)#t1Uv>fj-_@oHL>_grBa{gXK@He(o`OG+&3WU~S0=)p{9;+<{4)XmT6sqd2* zl*ngVKaiZmI|4(#W>rRq9G1D@wWy}8VJRFn2&lRi%`XyebU|Kh@3C!kaArryWAl5X zkiiWFh;!7_oXk8o^6LilJCGz8Gr$U40dewS z+I(S+e7VHl#8zf5N9V#s%uXYusLj{WRm%(OWK5#Z_qPy0lA4!briGwkkd&WyW{km# zpV`Vqer+)QcuvYTNN}o&H9!jmPdNj#{mLp7jeq%jyko9HTaeo<9^7G7nucQc&Vv$0 ziEXxk$6#v~Q0VJ-K<^FYvzQId@o9YLbeOy8&!b~9?yVEdP6Me6T->NubpdM`M1Y3e z5xsmaFyWLx!k*Od4bpE{Nxs(p^r@-uG0++bv+kb@;wYD8z=>0u0-erLZoCUKfx#n3 ze-e+>|3lYzfJJ$9ZNmb)3oKHkEwGdYc7dh$-g`&D1`2lUy;l@_P3%UE8a2jfq9&Hu zVoxlw#TYfV*kX+}YK)Km_dRRg@BOdu|G6&ioij7fJTqs`oHWOT`%(h8D?Uo2b$}X@` zcy4n8Rt-~PTv(&K1oybZYP7%!$Gm9$4KfrOfi-DSf2Z7#S(uT_EL5)}wGXdBxVhT_-LfG}$^~|-h z<`ghJ{UG}0k_2X@CbE)|luv1j#7AQY3vJ)FSS3ddmv2QK5rZ_vW6 zxO9{npo2*`2unE+Zq&8I$A2$N`iI-ZHz$x%WM7JPvf>k9s%=N0Je&MZ{X^_zDPBq) z*(y#*eH#XQ?8ICpe)S&az@V;cEsVx!f`b@RDCW3`I#pzC6~CTl)REB_*8`JYi0&il zpE+Py)@Uk=+>At)NA1VElGD$z;bkQ+keO6Sg%NoofzmB^P{vA$twQ?;z7mecvGg+; zsQ8wLMZ>%Hmxx%gRfV3`=`YctIlmbsGsh-FaSki^&0?9!`&U?V*&?!T>BCxz?sM7l z!`6PVOs<&5#Qd(Z$JgOF4LFz8HwHW_>)r&f_U*39aEpYk_8SmtwTW#%{rHOk72=1usab%+*S_lpfI>i?7m zW9!ovvLJ}SE~@=uUa7#MPex-5q8h*ghKa8?#Q9M&k}YZWWd0?L&8$n#n90og%@1CM z_pEq|xUye8mqTr@*}>26EF=5JOkw6TRxRSFI`;uYMTXCA?xJVQ@2Htn`Hz6^k%jc~ zzFi4LdKD5(F}2vN$9cYjB0~tg)wlvho)Ltf{ypEmLw^ zgsBo_*Zs*Tq2xUJ_oHBjboq(PmJw&j>ZG;(fOdI9PieFGEMXaKA8y4K%m3G( zR)UH7XgpRXGhZS9Q zc|YSZY1qZoJdkE>+yP|D@c2`qVA8O478g_|&B61TRh>}`JKR_wh8U{y8B9lB(8QnI z3%{cCEWJsS#r2E(G7EgJZQ>Ii(Zz5#0_y1I{+UP;K6w z%1Ku+*vu4@3c8uyaL(5Ri9{#wli68FX<^iDS-Zvo6`A6V)2#R|+mEV%UVU#;!t_OR z1)uesX>f;+{uwAwbOEY=Dg*}AT@vAj>BB+A`S$_(pJ4}}^ICx->GJo(UF5V3SQSBA z*zJ=Nqe4!969+QHZXXL9dG;0cOVpBZnM^HZ&FqD#iJV5Zb?cR4H=TCww~Uvs-wD5o zd&dIRGmk@3w7cRNVAwYIKL%rzk~dK+jkjWTI_rJc7x&?k@?}OfxHyTt+(oHM7NN# z8uP`i6&6Z(Hl6w$II)KV9PBb0ghgv%#-`1=0S%QIT@SBk%H2>7EIir+wnWlS)?mtfEzrZE3j|8{W)E|baA^h(LL}{Ae_j3l zExjCmwFIGc;I?kBJ@heeH5l6NP&>!n50D4u{>7vcV>wKQlix6~oidm?fX( z)E5Dh@AI9(hY~@Q&QBxJsnHkhbBr77yPbxqH*ch&r8d++aIxf|{dycoy^Jy)j002d zQUo?7LCVK>1NPBTF*<$q2B24%q;W~IpQDAG~3#paG?xI!vw09QPcZ?=@Fn@b(G zjX-4Q*IR(T2ia@+iTzEXzsTVZlYJP+-zQ&_pC12Ti#?f5jR>*rLY1pu*BKbTd$_3d zh@%=%Nd-PIe3R{IUF1D_0W28t5U3JI`&@5)E%Z`}HJeDy{hnw$okxU$@8e$HgOAsv z3tY;g((~8kLPPtnQo&nysu{imP38rafeij?H?aYO8WFWHb`3g%LhLd}zq@P^(E0lS zRD`+#%~c`!&L1r@n7NW#s6yQ4W4W$9+_p2#f$G7+!icQB4t6Z!LHu`|&)n}(xN ze=o9hV5b>uf~Zl)(N$SW)hUlbRF9#TYBB|4Ok*3M(>$RLT!!;DPh9koLA9H2%U3DK z4G?^3mH7iG=gFCTrRRj*oRSL~;t9XBcfEn74QpX?sjQpBZE(VirIht6;8y4&`9x87 za;&$E!y4Of1_6CkBRPoHJJ8Sz{GPfe{^osir3u91?^=ehh=6X7g_rc!d>FJ7dW+UF{ZgD3>t^W z>;eX`)oHFyL_kn&4`6U0xs%#*9Wbw!JhINe4OIOyibb&dZ8Qis*LToMUh8_n9rMpL z2vFQ^>fD0QFCrVxw~oQ>(dIPX>_18ZhPU1#%HLC@x2+Drl}E}ERh!df0Y4-h^#j=$ zSMeY z$}3b?wvTLqp@$ry65|To%-k^JTJTpfhTAop`Xa<(2KU<<=5}ER5#P5ZypreH1E<7x zMLmYzrZP%2e2hpIKR3ahZcFKG@o6B?^7&?<=a4fPE5nib3l`%{T%{rv%Q5oiN!)SK z;4RF(#@Vc0+uOr{x~b5%sIL`I&FyG}q;}`zSNc`a-F9nEy=G@4%saii_8ffoDmudhLK1U?N~HA5x9I!Y zKlp=*TnS)L9oWx*!bF54mTmiT%lSiytoh;@Q!7S4POgvNG$+* zZbQZ}jx5dq5n=usXo15nc%fGcFv{T&4ih;@DQCZ7mKE12s%^%5n8stjLNMI!#!HX= zo*o9Fo1&GQIDkWlxp4+O%HFex)$e10>VZr)u3b;!i6IX=II&?i zIB6rkduV6SEXb_u-3T%Ci{1~!^ga9b>C z3zXwqBG47smS!zQO;?FZw-7r|G#V%`B;4)+B6w~47^qcJ>-pv|o8ezjJ)}Qv02Y2T z0%B15-FI+Dt>Pzv;-W{uU0GHIcbx}|T~|Tju{uY~#p&ShOxmq$9~q=OTHH_*7=jTl ztW#_1i?TP7z;-dTJFRCihqfcKfcAwuA?W@|=8US8H}FTD%1c5gn$=LPfJ`FzXG{6ci&rSn)+&6E6BTOpeNNnXMd z8@mPW_=Nr7inWy5p&zKMi|2p=e=(PZr<+W(B>!BYii1Xc%wZ1J!86hkR$==P80SdS zLSauGQqtfK9CvaFItdr|>2T}cJQIdka6ZeH+?PFRegaEA=??X}*Res&pl;g{nYDwI zG~_+XKF;?9<g=kn76p z#-{=unt`;4-wDj{XhfIom-IE<(OKQdhf);{kC+^0A@zPCFy~V}aN6c0?9^Vh7bn;} zM`HFHJXqa_KL(R9j+Qf@i2;1ek^I_Io44>oXW)7j3rhHA)+k|Oq<+F;rfu2{%$v)? z7QSaiw;yh_*kkM2Kjjv@hSIUmCCi*Ij(|Wq|NRy|8WYjoY30;40dMd&rBv!(&-YaS zbb~+bT#hicQx6b3Q^#Juwhmn>I>8BSnyL-#zsH`jhhEavJ;CLsA1WMs2FS3e$;ZrC zlDrwrU=cPiDW#r=I20Omm1FK0r%Axn%FbrC*kqvC;3xy>5x{DWEQlu8rNkjrPZ_yv zIPESzOL^){T5)1)l6XA=6YEeZt>}{9)#m7cE&j${{*b)!KUu9 zIo4Qj8s1KWzFxZlzG0Y-g$hpkej13ZqiJm7SP~M;>*NmAT>n|M7P9y)@=PoD}wY;E3qD4z?KCaNXtK zKP9Xie9Vj$T#{V?K4{MKRX#5l1G_Eghw?ifVJGc5{VU3sQU z7;nv!~aM41zF?!E@o0>Cf_1==><%y z;53-V|D1^CH|{NmI58IM5ERpic`xbwk<8?s?2*)Pm+}_nT@K8UQ`R>a?X8gJ%=5y)qpfAwCECFh>M_fa8Nj|r zsO8)r3WFv1{WA~=rPMS@Cg*^o9IJtK@56zrGrL8C>O;cz&Pqr^?((jCA*i|}2H4un z7G`SOQ{CVW^nD^C$4%UZYtX6|ZG&I?otMaxbw`X1HL5qJDVf96;t2@N)71mZ2D3%9 z)aILdD$TvAHdp{3Znll7( zYKLku6`?K){2!Ypq3TxzOzra&xsUvPhP8=pGZ#xo6Bq6ZN*tKNYU2|M%!!Ma9nwv>h3e04K^f|MMQG#t-f(X}8C8msA z1x(k`1gLLn19VLj)vpct3dTkFA{ro7YO=fLl^A2Rzq<(R^8KAUE~4#WV9cgcV8z+1 z$hwPLKHM(f-@+7~m+VWp11A0=UOFHfME+4vpuIOngZRpnR66rC$W~Wg0J{vT15V3X zhf^1c_MGD!8`lv&IxlC=LMk7hU^2CVCuM1vv|deBk@`6eBX#n9S_B@m_yW(9CxLp2 z$~x{DD=PVi6F|$?@7rQY z)$QXTk!#I93~o`2BMbP@woi=GpO;Mzw`pk!9P_y!aH8xIaPlH*FvkO3fliKWn7&^Q z0ERz!3`|*X-1irGU#7zKZv51qrB;EBymfYCWj(OWc9xrj0_I)-23K$A!gNUT6h7WZ z2FzLfC(tf64XFN=wdcP{bb$fAz6B8?H?Gge|IAGu>Tzw5N__MX=3f38Yg6&XbTjti zEo#eoGkoaY2Z$HvN2A4IvmH=7meuY1#+lFfFZKlyaG2L31gZAo`P%7!!AIp%3v^qY zDj4hCV+S88H0~;myq#!mV(MrK4W}@5mrL;j9AT@}v>;Q;cDIKm?liXt6Zd+dgjal$ zKZQ5@8CjHn;1n&`l9!n>OC0vL!d#-IllpaAe3KVABAa z{+e#=ygU!}ggYX6HhOF?_bRv(yqbV11E?3$rtn?uvE@#VIc{!xG@P4)84hTm(V71l z-6scMN351jkD#Q(7cY^$GsOaA@`Q2l%t|K@vy0Y)#l`F1V126nL>6UO_A=n`P4PgN zd|@JJ+q;qL5#@=f@%WHuTndi=`cDwqE^Qd%-Tpi>Y;fLnY@~JyJd8t@D-imDpzqJ6DYYOwkP?1(;tNHvlhUh*6V=LJLf=a zW*+zPll*%#j{EtBSvM#{NY>I%Z`xc<~ST-=V$cBY3 zld&PT*msL^STbfka?+H_zQK1QyElErd@wtDK#B5S<5Wtt`3wQ_ue3nLV2C<6*P;@2 znx3*6rODcri2$c>77>4^*78m1$4G%Un5p1*%!uV~%9^q@Z;P#4Wr4bJO~qUXn*V?) z2#5~(9+=p*#EjRs7Qd!4Dr>5jS(r;bKUn}m{k0D0-LnqpYd;&9aC{=Lt!1cbwv;{8 z5AHgfFMxK3X$u5QGXX|!&c?+vadHi_6Mt|rye!0WNW+?|aNCpy0&|~R0ClA}iOHGn z8l#nD*b5UX7xfS`?iQc6*w0sI^rWt@xyU@*49?`dgKaml-_9c{+T5J9MK0D0AVP5g zl-HzP^MH!SRt#!;A`>#|b2o?y`qdiE&*YWo5X0((13d?rvSm&2{u#SXoOW#FLyEpX zz{@LW<$n*9_4RMy89M6#7^yhELx1Cu?$!Z!MB?{}@mhks9_YO-rOF!231Vqx zR1vJN&{OvjGpZwxdnzRTU?@j)n*}rASvdX+9DJ>vCRDpBbQQeRx<-+H#wiI@US$)^ z1jToh)E3?YOtq3>B5jl;8wzUDMOL}uVF;>O@umaQwZByeFI`_=*@nRk=H|i^C`tKo zY!*e1tb!sOBvwkc?_S|C_0(KW;Az*~6kL*M?IeD=3au+;S+-H%YAy|BSkN9Hbka#~ zw8zp9Qv3NYx`F+WmP)zgfB8C%`asw^h#7YWby$?O}TL7Y#&tvOpe`zexYe8F} z?^{luMyOvgQgkW1uDC7dxV&8LWd%96PumKwoSByFSF8%{L0J6C2AB8GF<^e-UZC>Q zVPIQ3=Gtw(s8b&mRk+XF&Oq&Aily&etj%JMa#{{v*tW(ThvB?8o#ktN{x0TEGP^;kc2>2npTP<@*9>9OnIV?33GrqIfr;`q90R)>%^w@|ibe~VGTqyenP z3JqTtU%)1ouvtv-yUDkK@H%^h9hh#`Ni#W4MFi-a;2Cj-&qqzga14U1+`v{nYE>C< z+~`W6SJapfiz|lP3qeP&b_Lo@-9Ws-`f;22nr*;iK;{3~>wz*q!Gy~5V@=TNdo1Fe5x588D8ybS$Jlizj_uHSUz6K*|d#00OJ!5#PU9@dOJyc0vl zPqbyH)e?;t8sn{CxIXn2BKVtZgGiU0n;~*$ZS@F#fj2!Fugss!bzas7n0rkPtX**w z=(KSRFtlqjBgMvDFwK$Vi+aN=yDvHv@FZLYqG6C5TA}s83b-}b_c6e87at7JvX2Uz zz85)4zH|U@x2*UBJ`+kGGLlWNY5Z|{-5-7)1F6S+yuFMfXqet0%ZK>x5Qi0#22t5J zufG7y$)V+6V!=8YozLWgYPgF6jczD&(+^+8P)K7JvJ_p0_A-4xP8$4a6$rIKW+4W- zQsD8WpbZ(!SAI|?GOv6jMq+h6yJC3m{J9ohUX@f#dROY4pvEF#dcNR;?J)Mj?(O~t z8iLqTx*gmNw13Se7PN35F!jVqVCmJVsJM#T3b;MSsMrN(mVE;v^T+*A*F}@qT2*1^ zkPTNQ%sJ$7Ke{+@F~(CY!NBQhvV%T}Po`0<3s#N5Bks28z@+U;VDT{8K$m9EalsW}*2s-O`77fh5dy1-5NI7L#Fl_1ECe>u^xyLOus=C3@a|ctwlb zEfcPhy_rAFVX(q&E`K^acZA`!VAd4h_Z_VM4R^P=h|_#eiD-Sp&io#|&e5%J6GO zVa>Fs0YdxMhZjbVjY|HJ0$8(VUyTK`FwPR@=;w>`BP z-xsE*aL4arQJv~LaY*m^?H^3atA-)|nk`5@aGPk0o@}W_kB;%!U2)sFAUcd>r!=9( z9H4pw>?!;vwvR`v$@b77pRgN*mM1)uu|e(_!IGyiGZ9)hqQOd*I5qG+bW!kFF}p2zl{04tZ8IOOub*VIf^2u+{S+8{{1afS(<_0UiiLfm|C#5D zA?_t2o-B~5dVxf-h zCx3}#ymIp4Eb`SJg-N1`xe^l)@$T2*(|+SjY{BrFNK?h9%92&UtEwgaf?~%1#~NSD zF$GJ~1K9rB6jPu&j`9O)HngJ%dhY!F--CtzEyQ|K6z*7Zl?v}qL!_c)iib;+*q0En zhURR9?+Re@OyV?;RMT|HOP&O`w+fRs(DEb5lW|_`y7giOETSt}5;Y}LD3#cO>trV0 zQfBZ&8BU-^x!*uo@);YTI=clE@YwbSgy+~>#9t}pq1!qE!=G}5VkM<2j~FlKDGeMA z?;)@Q%q1VcQ*bMb#agc41mk>mY$8qAM6rRtL&j)KX<9j+f;c%?P_#9&Qoha~Gp!Ja z2hqU7u;~aWp63B{{(_Cg`CDFl6g!7yY7+Ye{hb%V9d}$$=9PMqlOY~#-eG5H*~bOd zpuyy;Tf^NgaSnvZ=Pcd6pCkhfu2sOA8!>!yyR)oPpX=1zf#XGYQRFAOh-!ykcyOFI zHPYns>wxM0*ZD|`h*Kzq`*+Ny#`&}i-M>%7Y=-FG<1{FK!~5S6Z7VjDg=jgw6xdBmUrI`GpGKzUUTbX4%0$u8scLD0H2G6+_-;KUo(Z*s=@Q*` z^uKmUOV8gBYIT^cthKc*8bp3BnKtGMCDZ9$0Z@}D3Kr9R36e{g{|;VhGKiVKl)dr< zh~~4_fx((e=vQXO|09eaa0{%Pk!<^=3UOLEjsn*2+Xz$_T*Q12?=ti~KcBe@yluOJjj1@hytSIY-I*014DKm=Y`c%=)N5(% zhyUFkL&j)zDp)jrN*;Wge(H*tHvKtLuN|yQ4 zRk*7sk2CFz6Hju?IeA{E^lP=0R{u!$hLQbRo2E+sYww^C@o)CB5b1wrBcOcR5a5vB zJAo6%W|%{@XmHc-0J%BKfL8Y~n2`ql(lj>l+lL^i-Q!0~vgC5Xgtr~^73*#-1}m%|j}8!i|tL*@P&1@fQwnh#a75~H@0 z<7wi=P5LGd5c_^N7a8}QQ~aU+2E2r)A{xt>{N3P1fxrw}18!n|ze=*UdJk{+r(r;k z(RYo{czGY=Ym-Zvxvpd8107Gcg+>TDbCLn!i}s^5>8Sy<8d~i?$MDPS*_|;l4=Ecp z59oi2>OAu2aupecQJ4}&6wHT^5O`1cwIguqUzagD?%;nCg|gG1flrw1J2L~`khlC3 zP&VygUZM6|bR>IMTRcT!{a$Tw~_+!1=1N(fi16gIQ9HB+-$X$SN?Hk~_% z&8655{8FgJM5sF`l6TB);?oo^EAx4ICfXi!{-M9%?-lyccx{#M*&2{>gZW5a z|KD+sK$S^4+{&pZSf(^gng(MN>3(>*3_b^5yM1pBO|E-x%EThq96uVW#ir z;Z_$Ll*FrO0a)pi)l-}kDoW!uE)hAgcrtn?TS~J$ngQvaU&(B&rS@HQAoPFYpdiZ` z(T)X-TgQD$B=8^sU-m+rVty4i++SOh-nJS-%nIPRY%kob>ZtSqrz;9DNfOXM1d8+^8WYJPl=S>gdr7l^vJoL0^k=VoutwiNju9 z#YZA_J=W^+Zm%g&6sdP^!mSzj3o!EiBDsQ>7F$S3&A5@bCWscH=0%j~WKaRd3)y3B zGT`0z{b68x9rtL3>}O-CuBWE0`G-R6xs>(iTlEweeg%pV2QD33;PsZ6cm7ypBfO5B z3LpQUk-WpjVeruJxQ`~A(ZKsX6vyb(BJg9Nbv>Ekd2_kw(ojuv2xVqQD6cf}>2z9aI;ME}5V@N$_sBfLX;@-NgtZy zJhhJbVh1T_3)NU&&*k_w#neIHfTLao&Ecaf%(p}!DGpnsu6|{aW;Ges@H+TsL!dVOHJQTmK@$d z<>DjPb&tsa*N4>PdNH0!QnQ70%P0dn1hOdxriwwc{P`MDi2N8acCXCZg0Rlb`ry8< zq|sfOOvR2bpntsoVDpH4iNy>aPQ(NO#B49l+o131%e1FduwoMDyb{S3`p7{Q_Y{MN zhJkNExVl{j26VOrX1MeKRy0fk_CEO->%o(@H^E)q@>`&)J{M?jPoqyARH}f6Cf}rp zujAm8pD`HNLQkz%CFg7K#bxj;W5uWFVe>)*n5Vixmc1ck3NUCa^+L$0CBTGPa+#Nh zl=fE0tXUsMdTI?+9Hewt7JejC*+`zJ`Y{oGqX+zgCrtYwdyzkwo7q~RCm2e*5f>{D z;7@HEp*W^IK-~Pf2B5q66k*tb61byZxuNN%eiV%|<~8gyYOr4WIf!=2t^#__5MN9R zIY92@8O)hvr9G1wFD|QfIlTeynA<)Ka67@qlejn>nA3!%Eci`*46|8$#4iADWqBaG9`R16DkhN%`7Vekyu*#;hfp`DuCPR z)f}+Leehbi6JK62*6iTdKk-%8Z^pyd_j^ikTr6ceaqduH`%gFvV>69??bMq*%jKJW zm3s(vy`OQk9nKjxctIqlnWs`Qstadh?!XGA#1g@jKqB8*PKB(+To(<54T#A$YgxK zSOKEoRVSdzp&xMEcN92fw(0Y zQgU}JH?)L~Vfs14zZ22)-$STz9grWTCHxd@AS~vtZADdOCAG8|+Fpzubw%s1*t`|*wi{nsF@GsY?YVz%fb&;6o4#+9bRYl2_Z1sB ztyETZ4ROkb^fx|I`^5#cknvx$7AE(h+0bIUEwJ`gThx2^uAhP#Bdp8tM(W_CD%a(hUw`^1<*{nI()c)+tS z`g2rYb2t9zEjA%;pf3ei+4v6F>-$Qqn^jMo1^0xt)iMo?aff&icF{_pTW=4e=@D5n z8>Ft&LUSv7IKpE-;-D-hfxUzL=bOlT?G((up=guIK;86C=t5y=9-hfmk7S8FHZdaW2r!gs-9PUgl!Mbl4*aTo{QYMpUVk}{r8%g*kD6MCo%D(I5U%Zurgo$pRdZH`@)l5 z6H!^g{Vp>x#h^L-X}R|Ve}=a8KnL$V;R&A8Emg=Nr;Zgr~J4UAsT~5M1 zF*^Y0T}i9MH)l04e$cN>A#=kV5M2g$;23M`c)0cL3K@_X$YxRE!I~}^MV1BEdIIC~ z**?q9od-wTtXTuMb$UApZ<95}R(tY1AJ#vhYEP=y0moq{5aw>i8V_xUY#PG|2}^fi z!6bDf*_0Xhn&s}an|i@*kuW5D;;$Qpva@mwgiO`zJW!u;O{O%LiURr}V%~s_jDBS$ zP@mqD8yJu<|D*sv7cm)bI5E}Oqv2-H-=h&P_Dxs5TyuN^f1=-Fo*AaguZu}l^k5G* zHZg=FAD>g5K?DR-Unh^C@{-%SF+dS|m3b{+FFM$aqtzg)y37Q+{@op#PK{%8FjCb; zDzPl>wmkELq2%{`B;OKr@DkcsC&#-o6F+I($0|ISdm{^ICk}OZ4DBHlTS%DF)K?1A zH6bLzmz5cRKN8JHDS7-*&2(~7SQm<#R1$UZt}sU@E6&5q%jyoWN=571s+^6+&AT2L zU$MuGW_0c;3Se;)X1QR`i@QX0AN98ocMnJj_i9j8*)P~9S*43r7kMPvl5^u8i=BIV zGEg}Pb&OHWL29e9w-oBphwvDTt-=QOex_zPn!<%bD8=dml+<(=Rb=0Ne` zyXgMHypQwnMu@5pxu9N0N!F%y1xCL}Vcd*uKY_>zpxw}Nt43&F_bau~34#2wt-lmm zGX&`uUfBc1a}e8mUO)|b9AM3PNbHxisky-5&YUKOiL&c^2&>yJQNPVEnZ92qg*S>% zO;y~ZST$YiBj%(1o032^bT%jMoCox9onvl_>o%m|DLyDAZWl{9xCj2Zzlq^))p_!! zrH#R~Oe(98;I24e0kkzlDqLscx9F$9seo6_f{)xKD`HC4Z@aj-Km;LlCyoDKUI!X07pUNA0W z>W8_vs?;~|9yahQ&{e(y+zi^d6^3c(Jt~8=zT8xx*v*bPa>yuPNufW`-kj>hS=>XW zo(hWuv%A4l;iW%W12jz74V<`d4A8-<4N$jugqb;pf`OYILFM1o0b8^^io~lDC&F#x z7zzxS&<~2iaG@;|OzSxrxv4BiH;=+qt)uF%AJ-8WIO`j%8p*v_Aw^e*11);@Lo6I^ z9ex^A>JloG?n|;b)Lt70cXbtv6$s=HKl8^cS*SJd4nq*+dy_&M5?arY)EVD`7!p1n z(^A8mN>CH7$60s&;Uc&o{4)^6`P&$`*Eh>R`1tw(1Iw(CSBnja#s-r#Z6ca*2{yn& z9NzZA`F)o?AH(hSK+IF(;g~+RQ1+~oR`6|{Pv%cpe*_E%#t^t$8!azHSaE-C3Q;^sym$dFnOVM|q>aGBdHWlF9=7pdS1(=@+{w1sI!q+st0-dUGC6DrRtL~j|EmX z(Hha!9pNmh38xrMlqyud=1WG|LiUt(tuuXRx>NGK|B83lp}7R#8idg3LCjtCv`2{J z*_6hV!}<@vF$`?%j+x*J5z77gC}Z>q2X<_A9+Mg_f8B)J^A$B&20pKrBITZ^RpaWgRLYftdVT}ltK7re53{s(+*-MSImwgcLq z&St#2XWa4?Q^waPzdC}*SOb@rn^sB@t&l?tDd)*71Qp8I7(LheG4K9&VV+58IKFBj zspG`jP{=u!Gw~rh7DSsCEnez*n_AO*2N@K)4%rr=sUgNq0wNs0LK~s$L z;(6(#Kq-ERUa+yNrWWgDi3Q!}aOE8;2ofwB1_d4mrny=q!pp!KiDdzU=ch%VN1 zBAbQhZ%obmvn4=(?ImF3^Yxs%1cM^rt2>iicnJrd2>rC zwjvh_Dsi${87keo+vz1d2t zOJcK9{d55sTF7PU@VsYmN3~kaS1R(sFLP{33uMZr_8jU&4bKOe12Bporw#QAeh++Un3x= zaXgb(FL-N#qG5_ue+vB@hMS+wK&Z0w9-u?-0-%%3Q4}%o*JMWUwV-;7vK@-6kOE9X zB-@c}gr1vc8r7?J(lBH}JA`?Z&r9MH%JYLks6BSk{15xt14Lv;(Yhi}uT?mhn0sl^ zu+#i95D+kHHS-(!_=>{P)I^IzcT%)JdzaGR*>6wNYW;cqK|77r-+X=YP^>0>T{Mb6?9 z8%@PE6_-N({gVPFiM6rxFb^U3S(|B8)a>j5igEa@;iR=!u2AtjIY#Y6wI9Rj}b$C zDS$=FOlZw0IBkp`#my6_9La)py899xZ*In)jO4w5-Ad3jVZd1sag#216u?_fOK)=is$fqt)nshds!t&*n$hkni~=yC5M z&}-QNR+s({3UtsX)WQj$dZ6s`>}+bL!o_7Myx)>r2#DxJ^=#+Ds4n-%p+;Qi1;Oq4 zdKYWV+l!jQr!o$x?!vVU7RhtbNzew*RlvM{b-?@rVXjy{V!z?F+71{wLPdV|dP9xl zIk$`8ir<;t$Vc1?f9SsUnXJcRajaU|Lb~g zt%Xni_2te|v$_2xD zh0;Nav36l0(=*yrw7PuE1j-KS;T7+u0VW@=L3wc%69bw(jO9;20PHFYDWKZ}Qif*E zh!JFfDUqHV|s?H+OhyaPH zMK`p9UyT>5!TJUJB$X#`vG$RXLB5j@0QE;bjMAq_gN8ActkzQmCI(EwrW4EfJ3{?8 zRjsAGIQQ{DP*Bs}f5#)%C45WhfY0G=F}Ahfvtq?AP(>e&!+WX*H-}q0dmf`D_G!VN zl*w#Yd42n!RptjW!NR@vz+ij=6Nk47DU9)#XaW=+X315~fg)YcP2dw!SwcORI@$#| zX;U@Oqle&}|3xY~y?Zgd;`?8ql)qDpCwsfpnd&9$vy=I}o9!hQ#d~Ft93+J}LP-@| z95uccAlBN|Rf6w!Xl-+nHe2Q-9NNN$E5KUZF461EUihfbx}emvy~@%)5TY z(MfcN2>2+DKjLGS{ro6hMP2&jX?K@6s_oQ=b#ih)B3?Z@e;Ec)yx~UiiJzbqEEPBTf%KtLSmaWe0Sp6 zd;BSH)){^odaAs(hr0uvE?SA3+SE_N#Poyb)y?AR;6XG;5{|_HQ@z=Q{cwx|?w6t( zGfu>_8ghSWf+BBq`)?UOs-nsg73t$0#8+u|6(G9B`q{wBKfeNY)TIIqKW}1iW%zjz zR;pD%pPw>;!3Jk?Y=5npmA#!LKk#E!6rjtu<#4faKm%T0o~wNb(c%?o>M1LO?#VsAvo!m!qP;zVDk`{ z1*0G3gN(`fkx5z|W%qC6I|UEh9sCCkruhqR_;{>=S&eDI$Yjct;#wIax4H5KqD|CM z9NaAIsm3Fs&dQwRQsfg;8*?Wlg$g$}r4bwR5Mw5d6!X{wkz2JHV&1&DgM-w(;vbN{ z72T-7Q!Bq=mF4NVgSF!2T)f=M0S`-c&98%7z23cm+ry>3C^}|z(WX}U0L$Mk16Dq6 zKvAnkuz&Y|O=W1<%FZ&cpV;!O*rMcfbsK*~Qr6Q4BP28NF@}iw;nPinu=RB%K5-bg z?iF)joz@b;HZz1^=Jz-XqAsx~(0kKgK;PwWfdS)x1coj?0+ee<1Jf6l(SO<*p#Swo zuqI%}WfY>shtjD$&MwDuA)if{%igQF_gHil)!qXkAa)Sdsh8n7p|v-<%qZ8pG6%Go zD~nL3xS=@+NV97Czo%ZaBo-oj;dr2Wwb()&dijzJROCU-FPlkumvtb?TiOJ{9Os60kor_8$4 zvDkjsJ^{w|V8P-oX(M+i+y(5tdI(U3%Z(7zXEl;FT&ou;wNYMN$g+~s*GI!sJ{y)eDlp~*h{6XCNsL`gJ(kf}4eYXeyDS~`6qN+RW<8~_ z*{yAOTYmXeQ-4YQ&!PW5Ip*1$`YLM71T&LnVDQ1Yrdr9Ovn~9RMh*ZvUAV>wx2yP+6*%{|VIfnIq=n!ebPmip9p|Tyc%+_^0#XGXV$Apqt&c zL)C=hvIHZ(Vk`G2$maXc0qj{*7o zc}V0fv}7K9LuavO!c^mACgHfpI|9>TA%~dJ@OV~Vj5ZXQQM>_I_t_<&^85xe&}t8* zzHxXAP`&-he>Vu-Ga-70zK;=>DYh>~?V5%~AH95&zE%yyYvdwSh;}K2SAqHp~IWi7TQ1jaHr~t~HMkj{U@}56|$P5)7 zdGV5O5UsMTEp(+%63kP4F6LqjPQiqlKZS-*e$RSPUfTID&v8C!x0*Y0`DaAoGy*Q6 zd-$K2fj4NorEFUW%nkj6m~|bfT^k7u(FnDb_~me@(QZG{=B+u^6>@x*kWmB}3l9r#_UE>(&ueVzv*VU%+O&9kOT?XgaI9Dn1H0e$6jH4c1Ccr63cw zk62%fHj$yOG&PEwsZ8Jhh^->C1Y4rZJ>Y3EU>jp(j-|Qb@{$tf<|-zKEbjS%XjgC# z*fn50aAM_1pikURVCYOH88-eh&|={hrjf0405NvYE_6g;QuK;<*ajp#yt^O8lffFw4RWsOVF{ z3_GqbMNPRZ9s$&4lnO;5>4vz2{;N4U+mlL!*4HT1-3wxoDS?Z;`WK5vGs~#5L36azxF(^oB`3Dh%-6^ zi+5)*H5XrUEgO4V zO$UzlQ%1qpI&(PCW&jiL=@Elk_BqC?(|^|iIPnM-pHn>t4(fIv_9c5QyaqC+d?}Vh z8l+f!h6`QCxKv<=n2#|r;8_=}{LiVW0CO5A5#jlKcS@@P=uflk_=MuCSu*^nW0Qr* zfw_|U0;ceB{Hk9hBYUMDgeM*{Ym0bQK3@P`9Zmza6NJs=FZ%{Wbl6^?vM;R#E5~Rs zY0M%Cli7yfJ>e4;LxmT6nM}m&Sp92I#T~u^mX7LYS|AlPJQ4SIcI{t=R_;~#h%=JD z&zj6^oKR2Vl8(qFzhE^dE^iNP`?Pt}@aTx!_e^z?YHT>%HmPEjziH%j5TTzm0weC1 z0Og0tw8CR&fvrCq0&E=bZrT+Wt+#>OW9e7s7$soBe^Si5 z`@i}OM0hAf3{|_+28*&%x>%Ue^U77%}Ai&PBs`*HU?_hL2A2I zm=`Ygzf$c+P&^GkwgbxV8n5)qQ!PSl#oREyw8>A0pcoCy5pVlI++u6Mha9kmhYq!n z?LcwF9`W0nkN;o{di}NlzJ@RlV4}DdF>f{HtBamB*;Mxus23l%(WgEC_cU0>`X;8B z|BNl9`Z6o8emJ$g-S8R)czr{y+DS)&j=Y_Y-bfA$TIzM4wV-*%}F6(6fpv{x(@o?yfH-i+>*EGFuG;nuQ>dG0k z)P#XdCi7$JiITqc!1CkE>E+UK9UFw(@IUb>KD^@RU{K-dp0u{I%*KGIsLl8<4eH)L z2!0-;gt6^;fgcqOjJAST=){hq;l%hRLxHIMunkLrK2@FB<%8)QsDz;fy^-Hm#4C|n zfdksy+jv&j?z&k1Xc}3HBxDF9VSPOo}OXaOu&+RUe`JVC?j2b@7jz1CN z8?KcdhasfX&b#Q8y;qGh)~YT5wLSN23gi$8G;9Fd^a<-<6oa-_m4qj$#PMpqo2-^ zX_V45+g0!~Tq!cMwsMr}p0fKZ)sdC1D}?Q*{g?&zZTBM?>i3#cGZE1#s7s59v*@M$ zZV197Y(*!Xk$M$Gd8_#-g45b7R;K^{Vc2vl0(_NEW_!r}4FU;a`u+}xz-dpgO)Nwm z`=9Aj2ct+u?KzDaOYEJBR~FZ-MAVXogM4n%MNXc%?wbX#{Jyk&JB~vY;kZ=iVh~P$ zaNmdXk0arZ?lFT;lo(DT5$D1Eg>u0xNBSTRz@)H5(a}fzaFnqu=b1pLRC_D&pvGz2 z2SpTOW!%>jb&LJF%}g-{RgVdWC7EBDkJ)PvsWhIQLCF)c(((X>+jA&|-t(n#)En>) zoe|E0&-xyoDKoj(5XS$!qY z)U&Nmc+1zh-xKqkiWm&Lp*YJf(P*~pd=^2DtCYa#QxmvVx$vhsAmV;lhO+rQ=mocK z3ws#7(_Z3Non#%Q!jdCf3rB;aAtAcIL(+h`%^rx z5lf?nxnf-@W>rUc#T}|P^^ts^h$%{)$9WmIwMMzA{x$4`u;*M~gcXduouW@tPnrU5 z8sg8R`;1z5S-iVw6`A3Fmj%w&ilQp7#eY7(#~iD6H8t$bjh(asJ0v>FK;o_#o{8g-AY zFH>xxD-?Gqs8a?ahxp)4b#s0Q+hV~T`7e|~5Rp3`Yac+MXr{C#WQQ!*zO_kgEz zF9p7_cpECxwt`Jh^Wrk|<`r;)vhTI$2>fDvu8T(#3(12DEJIpKuDf+`dk*Ud^k4BB z7-YxsNMt@2(u#-Cws*6$18Vx61}3Kd2`riS1gMJ508Z>lH5~F=F5f3#kp#k3e0|Nw zAscRe&Rt;c7~Wj1ntm8=%>&#-!KzJYww}-A&xwG-D%ZIq%;h?T#dYOR42WGi9)v1l z6@o_(T?2QO%Os$i?zk}lkMDCq>b=COoPN!DK2$Q94WsN{I52EKl}3zmoy-ZB<)p=m z(x<-mG!2v*UR*a#l=AjnL zE9p7#*}uR+HM4=^H>IL8oUo!X%$n*EK;J9NfdSVUMeabRKX)?u$u{gQuxXz=Kx2Z? zs6w01hb6on<{ePY@h$k1Ar|%XZjf!_YT0<3sv>}zu?0ZyJ*7Zna-iG}e=z+ZF3v#- z{@#gS$L5GZVcE4==3Y|u@*$+P^)16UzFWtlt)wQhvWx6G%96mXcfKE&b`Y zY%j)LAlmd>2&_M`QRb$RCglv^CX0l)ji6<&dBUj(L)=-k3;Dl`LCVR_1Wx*KG><(h zCys1jBwK${J)&9Vf$f+PQ}P)kLH@1SAuAbs(bAbL{rp(IaR0NIt#W7 z&0)&K0J~HSz+Ks09H{55XM!J5!fX-UpbP{sv*X{t4L(rm@52yv{HbPNJsMEouk~!useu zm^)t>gvR0@x=MuazhWo-2VT^}DX!X+yXZ6avi&QgR?;P-*=blzGsN0iR$OQFc8!JPj*O#X%Vd_ zP9V&MgZiUH%gm?4tXgCZY-YvqYnF`!cKXE$I5P1)`j;_g^soES2sP?8WTA*rzpvs` zpJB|&5R~xm^5H9OE?+wE`ePe-PJf?S@w;6NOlr~+=sCs(Xy?Z_TOIbY9s3)FVo}qo zGc0ZLImS>g+zw}r?^#g%H0P)h7z#SeEYP)y4a=t8Cbkmi+GfBkw?NCV;s8Cmq)a}L99^tNaPh0$Wg3kAo0r4la-7XW8_?4dlhCLSrxB=x@XSdd%0IIM zX1qh6hE_7B89P8jvxZmIrSPr~NglqQ5=8wbt$_*SryZ49T1y#tdYv$}|jms!LTh16WRLkJr?eYQO zI2Bt&MGFheL$&qP%FOVhUdtaFqIN$?i5Ve|Lq)#XYh`Jvz$o7w`(~pORI(-*NFML` zshaEt6v3-z=zZ?0D-ALr$Epgp)XIoL;OK>vq;5|l(O%Rqz7Q$)`9*XOzHLjnwl1#{ zBmJxkj~n7H-#Ct`ue3-(^2RKiM$7nd-ysy!@i($?PS1M6lJTYhSpIu=pv|Niz-I3n z1FiasvUk2>-w@Z7?F_(oF<0ONV#ES{pxZmr;zyi@|Jr@z2b(gsy~ZKS=-~Ra4wm@Y zr$;fL+MHlAZ0LhTti72yz>cij2Xv`uURlT2_+y_kM;$s zcP=K$=LISrii)!rQlHoc12@dGF>je67&#)+XAfW*yyYCw;nXBVrVg!BnL&po|43d# zAHpGdyf-j)>`h>^Gd}#zwpBDNaq;ZX@hl?j*Xd#nP!q&XNq2#5 z#PDyB7_%n${to7>$b;%)A&na^HaEBrXV2^Lghgw$&YQtlosrOjB%AzH(1tosY})Yvo^3qbDsSG zZ29&P(6x>&*CXz*s2|U-EMb#pc4MG9{w%7ZeO5ATk0@z=guX2>^<^%(4{$~C1a&RK ztZL+$uQ1u=gy#Vc!b8@js|d&yuUXE7t;VK_2-f!HTG&Q=`~z(C?_gkcPq}%jWc|e$ zm^IcNSXM#nS&^Y-4Py65hNVp-YkMiv=!OozyvrF2YgAa%4%7mh{x}V2U;8&u*WH$B zjd0$~gvCZ411;&WBiD_y4)1}b_%k-=l4oCXMN)0>r$QKXWd}bhf7caG6C14r+6FLo z*Fi0S?oAxT-cNXO_Y^z2qPGgQH?b2%K-FOOlOw;c0FM5C8PI=aDKN4_Ah7+CFM;tp z=Q0MD`$J)IH6sV>e|iG+Tl5Vu#4^KDT)Gu~&>Ky`d$bC~5qAcf7fHodJ769s?j`pO z8^%zAoNtL@jPMmLCaWz)L+*-5U{mQW1wN`oY@qcw=P9j_P}X($+lJFQiHn)I3|$%f zYQ;ZW$QZ3olfBzhYulNAz}T1iv9UDtchZ@G+9NK zvA@&?>D3mO{P&Qg;m`(~w4p@~ZnrJdr}_o1q?pJ|K677aD^qrV?Jp|IF$f zw~npPt{*!+*A@-C38Lm7LddaM%P}5N)RNcIzq$@=IYvwlhWqh zV}UsqVX&=`68_pxTUzZF8PvLFQ{r$os2s#_l3{wrK>5VKrwd6U=`>HD}E|4N8dv`APod0fQ{GXQ4Ys zKS7*c&gL-tHA(}9510y!(ELMBv6o)JQvP@WP&0Ha>KPMr_ZlYkjGfuf%0IdR3$Cz? zJG6?$gLJwRLM;icqaX-1xc{^jssbEX<`=+!$JTGtt!WTeep zK%2T*9)I+&?_%_ZKgqj}G9&1X2g%BzgZWdt{FTkuwS@219yvT@+6j#BhOv~s-N!!DuP&_`Q4~bwbt4LJH^#<)MXqZzEj7Aeq!#ZmJ?*| za;e8-raWxwAz<|0AYg9UP^7RvDjsHiY(EyB-`n3o3K^&1`X&FQ^3QJ4p~6Qlc76w) zAhSed{|>C)B6PKyDhB4HWENxoxDSk*cmR5N){P{Xa|ev#_svts!cuD5z?BW>W6`kq zEz1KM`}?CQ;ee{j2ezPqTCiQh!!nplHlN^^Dq}-y{J5Mg+#45_;iL8}l;DUpLg&m% zPJk_U9V@Wq{d(ZI&A$N+9onG+(aA+_aKtz=E2yI^2s5kiDe|s0B8g#bQxakayG_|FXpG6EHmB6qI($WuRx?8SstXjzf*o7g50GKWKoeJADzZ zZ?`ot8|LQlIy4mTEd#7EPp8v^?mf_LcXyyRRy3X93oPWAIx&eDbMYSLdJ~@TYGPdV z{v#V@>eT)+)NkoGcCaKbYlrESygTF__4)$di{bs7P~ZITwgoLTc^@$RpfB?jH}ndU zQzWgXrSYmvk~yx??d8_;lR6ELQ# zfMevC{_S9iACv)9-z9H(t?7=Kf`4am$4?Tgh*_y#uyk@N0`_&Q0p@Kg0Or@e0lMbi z2C7$cvKUXBepQbg8m79jdU1J6kpDMKYn}~1R-HTy)TZ=c&!6&k7F{M{=>#42bPNwM z2hds%51~CMds+n-0SaHpkf0E9%9!`3!X2D|I%3P%_ z{}rgNCa>y7u0XD$p2zS3aZNqL_vzjoXqXbh6-*qJHXOOnZ^x!greZd(_BgZ&=be-= zZfhw8_4@6=5Va3|nLPJ`r88bHLvIq5(J*9}PrXK`gf`b@u9(Wp`xD+>a2FiJU+g9! z6iQp}VGurI4lm-ggtpcOuYDlWT^zi)4(!SRJl-uvClMJx1r7-&)=5IQkwDczQpzMwgvtSS1Raw*sT`Hh+ zVkzdgCyX?-f*hj!jRkBIK?WcAh>}~L@D7-;YYnh){dr(48WH$%Xg86il$1lTrDcw1 zAXf7tVbSg;b9gOmxMC6KTa|PR5^qq3lrx&*v!bEuH+mzZ`jh0M$e#Owaqpg@85GUj z1+%-l=)cNMsrCaQ{qv7#FmeC1W^hIAA0YlFl1+EqLI8W|rGMbXt`A3Gksow!p5EBO zpisaodq}ZJ&CndB7*EclCOLY+quP5VP+PlI1fgt46+oLB3-lk)tcIU>#<&tLKZ2!d z@ki(e?tik42X_1pn0t(#RQd7r)Mfp5s6xBYMznZbxd|8j;!UXG5CwJygBF$6ic^3E zI9uu}RaAa}2k#61K*NNQ@Zcb|a7zJC)h(dvBA>ERe3YZS!SIw1n}OKq&JJMY=AVGc zhh^A1k}vjrSKp%~Z1px3==`-cKQLZ62}|p;saT3Oo$bRM52g&XawUEECO4qRADcN= z*0;|=B*&qiaC1%K-aZ|Ucp(v9u`E^p zg_w;1Uk?qymLjE8bd@#I%tW3p^VlT{w|Xk2O`HAmWj+?tq!z4^sHC2#vb^3G_-)xH zrn<7GJo ziWjP+v{;n1>rpF6q#)e`cn<5jm%EB0uN5flu}|C$=TRSQu={<6{ zq=pA=U1#F1<3Qb-Kw!e%u`Knpb}Yt8Z`Mw*a-w1h6pj~qa7pd<rGZp8%}!FoQhN^_+;R2>yXXP5epGtvS(CRJ)uXt>xax z$}9@iF1MK)+vzM7k6WvNVSh2LCcF8TN?Y8!RFpo69zOdTsLwjd`otB(XjPNkL6P^` z1WahJVk)X|mk9Lkr*nbEZ3lqCJpw<)A3KQgWS?Clay?8e!X&k<0mgdqn_lW)OXk-ipKwPUiSC?`8Do14vo)Mk?74vrlBYPg0KwUPX~E!vr%`bXoiiNmMt-0X%oFp9fu3>L83lKLPp~yg z|2TU_*OOoyq}%111vW0>Rq5d%Mju-WjB5)GO(~7P&5VVQ<7x27ggx|KK9Y=O`m=@!$OlhD1=e5)a1GS^OLXt}?2gL}a&2w@+|4LAJYZlz!y zIXgCU07JE=NKNbhIWTAcGoW%Ev`pv)|MrK)w(%yeK#%`b=sKFQD?rn_WCOFsPVnjp zVj`(iZ~)bhgKR@1uTkY0-G>c*jDfwTrxm*zV>#9GxRTFQiccHoaI3&xkXq*5F&`!k zNMn(?M2!P#7C%4@#f~-~Tt}U6?f5}v| zK8eyqmvR3)I2GGJ237`>OYKK8?{3Ey13d!MfX47e{31L|RB%dLIcRN9$Izwk4WNIA zW57N-=F#H~1Po5vO#Zcjw=%aBeN$!l0+^d;e-E_2%&O^S$9Wq_1OqNKV>-V) zz#wCtuc7qXMRSd(@6NZ7Yb8T>Ba$}tH}R4C;F-h;ENA&mcFl=nDFM^$8=L!KI~kKO z`VkdJ=UKNAt*+5IylsMDeG9I0?@W*C3+SdaT}1~sIVb_GZSuDizxK0yfsKvKqI2g$ zVB~O7?Xf2&@jQk4O;e^$ckUFNGX1@vI_4FwXeg|{0p%Ed44H8lPF@o(1AUh;@(sbwq~vBPvB<%9N~h9$|R2QYQa24K(ONx;rC@_;s7T%Z+EgU7y*NMM}y z9V#YKMK6lGg3U_bRKU_YWjWARXOH$4G-W-da@$UzB;;5#HEqLZf~0+v(@^87FG)=N zNGVfvw373SBStoc_rL))z}RnFW8_}8Dhg)RsDUW1E_>LV0;UWTeMz{4=rg3ahi0)%1{Gd<3+y(Z8yj;>Y(CJ-W`h(GKa2s#zvw_;Grt8E4>~0?3zU?9m&2l2 z|M#cfJlJgs?7@d{e<682H{{`em0{J3{ZN~O6Y-FWVJCSxrh_Czi{fDi8LUN*>wsgo zpF|@_-uVj3w!M_sEkEZw_c=?EIOeZSSjKW~Q^X)5dhY^BVMV4_L}ma}m&UQ0GI!_0 zlDF|1Fwm(A7;8ZREuXRFQ;rp0VhoTnZ9P@sl!K3uNaZ8UOkz>|BpFzL`yS9+_7;i6 zThI%BXZIOr&&(>9vO0=&fk4;k%aJ9`=c|~W5YLYMNe?uKOHM>3Eyd@f;K6l&G0^SR zEDJjb@%RBR=#=yu#-x~M%ZQXHLfsaLmZ8q+McHd;V~IL|H{@WV7U4y&?F_DM^ZY2x z4nKVjvsct2nB$*P^7vf)254;R#ef3`F2bNMc+eS;!dqz(^VrUh#an6ny3sxEU?^Pd z=lue7_Ms-?+}jW6@sR_W@cI|Ph%ySRB;P&2(qm+TF+-S)`i^YTns1gcpr}_2D5Y*O zF#mJ1YGF4onU9TBwfYq->d$O|sTNo0x8s9;uxKA{{!{}YD%Q)OodH1GcdV%poeMB| z(i&MXva+3Q5&6gx*VEx3xF?1Q@`Vi}TVrz!6GzT^;$ts;e5bv9k_gNH87;MlB@u)lzXlz4m4-c0!CyItf0ormi8W z-%(WhEly(Zy0=#Kn~z!6HxurRzqzVxRSlCsEBW{Whh6-O#Yf3yNkJ=+^-G-BQq0Y>PaGhEZr zLHtpsvuzb-G9%gIK3i3+iFva=$X)H~R)-tfu=>`h|DD&1{nFh6ugObEuWvRS{mpbd zEdtw-gJ7(8v;d}*{6>tL^urWTBfRRx7MOC4#h!l$8wJ1z>w5CX zYpYl_G(4QiRuVq92Ykff5IzJ|_D|f%TXdYop+4I4|DGh(^_|L(_2=T?v8<>YihlAc zHk|^qpHV?oerB?8J6!Bl$Uyb;$%(N`x67@~KA6wZ;aOCLHCFp_{)}QExdmH!JNtis zlKSlslHJFUDSgi#1NyIT1Wf#zT58g-Ok7dMEVh2fzF(3PHvh;kg77plB&&iontPA3 zed6mDNST|Rs31*kJCL;g;7KWVV+Al#8V1pqdzP(GcN@iu<&+!jU&GAbiIw+3pTC4n ztuEpCepxaj$xA9jjLLHh;gB@c188%H=UCG6AM&cz!Zx3A3}Bo7H(az@&R~HZF!c*D zH|!d^w%W}j%?*;xu_C%B;{JAp3iN_A$2U-l9RV#vC3mHv_8+TU0isDj`vrE zFdIfJ`Lr@4`Og=fo$1>wBoqfnXE9hq+oqiBzNL#sa>L9Aa* zR`qPW66n*8wHLig2ULD#%`~)C9f4)o(#b$W+SkNYeOTWnn+4)Y+pNSq`Wtco5Zu~q zm;;^N|M@(Ug2UePC#Ld&%m$kbKzEIpT+z$1G=#aQFGY(A zIF$(xVVVSb$jUGv+2+!qWVw&OpxZq+Mxg7#%Sxn!)Pq`}~ zv#vYL<$v}D)}PxB^lX~|Oerr0X7;CgP``FIPX=>yIIqvvw;71#UIame`JuE3fU&;eL*IfY9L23K2nF>Y_i74d)&87w)gM*u@-_Qc_>1~xS?D=<;`Nt=cS2XHJGPGOupY9mgA_D~Lut~tNS4HpDxXB8pGjs0)oNvZG zGlm$r=|+jcOLV{qSQJ{SqFuAjA&Nc2mNRJT?`67~prtp#b`!k^9FfsY1?o>vXf^$n{Mu_gp zqvn-T&lWpzky6(s|G=BumGd$st`-Q4l{LZ@2G7YoIg`qW*D2o%uVi9d|G3<8j4~Vo zPO}eRCnj$E&h6$5NK6k27tIu(5DlgD@K=n?#a%Q%|J`K$nA4O+2|W&Q1erKBfLk%^ zs|JJSlEy}%{(J5JOsFO9i2@}hmV=(k_AKvs9CuXVy!u9%-MY;MdN#t!J|0doZ_TI- zg^iespuH_=i`=yWLZa$0n`nLaEF{*kj%8*F6>lfSyn(sQ<`S^Bd^22Ke;1oQHFFm5 zoSF6x%R205FJw5sg560W1|rxc`DH(t3ob!?8bcoY zqa*zI9X;o zH1e_Cva!G>Jx>6=&XfG-V^Q zM6P&#vS8~9m|NfQ26lPCfq-k`Sr$>q&)y6rdgKexLbf&)@rT}>Bz_AzW9dqc={_>B zt&^xJx0Q`yQRnU8P@Ws1C6h%eF8sovNM@F6W`*q#P=qY;>f2Ma8Rhrw7<@%2qj%Z7 z9O!mjwscB=_IZQZy4lY68khjAEDR}ZeLsSN7bVrifw!FYc*Q~d`fkl5Klbx+g zcbQx%gNA)r(am!;o+VmUgIR8pl6`bLQ4@7MNp@lx0lan7UAi z2j5v^S?H#{p)9=oy<31CR$YUV-{VWNqPxotU| z={I-47Y)%_N1|rY;=CxBwC2lzUUQk%;D$wzoH>8e-JqTWn(@+eU`F;cb8ji*NA89x zOnL=Mg=-DadDkz%fL*MPl4+OGYU}qTk$x9b890rRS^1r9S z<1LnYf?eonV%)DFQnEvIeMqEjC{0S_Hsi zv<`&cYqa^Hp|a%d{{%6mCLEY{Y#dPOvJ}{QbYtxPUMx)v`w7>%Opzwb{XlhiPeyZg z$zZNE;*h?n=S^H|kGIA%cado8SIzN)Lsuu-ocmG!xLMvpx_p)4P;yfIm?G8NJ9I8s z&>Pb?9*!qL((c_wyv_C(_UI-sL0sFGm$L!p+#zm2M>}@-T2E~3#Mio+4dXu_KVH=v zy@)~~)?kU;<=$TjRkz5HVj0G>slDPe;WY4-0mPhD{*dY}jmc5k6E)x!qc1x-Qxgip zl*=)|jPV~xF`s8?X060yHD`On>h|C&V$r@}ua-Tn8!*3a6|iL-JC?u>6i?A%kD0Cb z)#Qy7vlPzExab3sZEfQtAnE^P(~IfEAyBGU7hrz3bCyAI)o9`?PEgbGSw)$de`h2b zg56i?Fb4!QMoqyf@^YSyGk2Kbc{Vef#!||?J`Gjqe2kUn_WM0C;b3gd^o+h#2^`Ze z8#qZuomf5Q7%*^FOHp=lb=Zu6G=6RgMP7au@)~a(tO*izwoVU^F5mnG)SHAF826E# zalA1UC_m7FzRG`MbJB#?(BjkSHY`cg`k?G}-LBHtDArWsayI+inTf#iUhl!)R>$jM zR__d?-0*m528^x~>cNwdAgo6&~IBOcv zbu&*F<|I9Ux!L(9NUQqK(J+S{bqDId8xIT~!X!oB_L9pHpj^s1RBVBZ=5P{{&v*3f z=m1xBhfUyehyU;Ig4Rw!Nz zJg<0!{i&a)J9|jO(1sIo!H+EAKmJ7{U}ER>z?7>{U%)WEo4_)7LT3yBRex-Px%G)( zEihGv2`>9eUL540e}pWBe$EV-Rvx0Hk?N6!d{Y4?R@O-MZDzqG=*ltB!hg$Qc_q1S z14(g=wO7(nfk1pavQPt0emV^vQA$~q(tW$gYUa-h*sOQlWP)_7Sr(zw{m|ILuRe!4 zXKf!S^Le>@U{>Czp!EAqcr|4&hoz@?Akt)W`8L^dNJR&b^bU+I;s|S@W+A!Pc7WIe z;ArD5in5vLMhi_d;8fVr1z2IP1lkObVgIZik%XEEu!PUcPVRA5mXX za`I7rIES3><&%LrdBYmD&!eNTg?Z7i#@#&#e*jN7Pyf6P})A$#^R|0X@|u)-fM-IGk`&=8eU(o+_DvSkWT zH)lIg+2=VbZh`{~F;g7GE{dMSubbMh0ZG+abYPXbQqB#W`tUzv#jv2$aBlX^5^z+@ zAci`!;To)_({T43pUg#4ETz0o6X9eU+(D+Wmf8&WH}{e%wtvI$NB3m8X}2JKlHqd) z3#H0j3XA1kYOy)JEtGCnQg&2hBrW^QL-_ElCx8&OL#v*#R^}LM&(f((DmOU zo*(i%LSC`yPMP45WX~qzX*)|4qtD8(QSybohrmg5sv79K^aVrn??Kkd_+_W?mO7Gh zt!(=%@Ok65&7oqu%%6l0L#Mn3J+jj^VBA0^Def8diSCz{A(4|hu@0NeGr=5^f;NeU z{OTD2k&6D)KoZT|UB zL(m+*Rcw(qk9p=7_4I^nVRU0P1bgKHNBnLHbgSP5)W_`;zCy;AVt$7Fj2E$<%dllz zk7fW9VZ~U~N#>w`m_K{hEQURU zIWg)&fiWG%@pM<_h&8eR49SPH&K;Us0Nraan}k)|W+|W2uRDJ7lPPK#rYmt?H`RPT zJXWt0Q$TTI?_hk3a?IE`pK*eN`qmdfO=rpj&!3B!0KaFm`4eFh+?mg2ekrxgfj4V3YS%IHDT7FMohBD?LXkm9WxbTY&7r5iu z(AggR_K)E}({7}>B@7hUvXVz75&?&I5Ya`aA>kpiulTv54mVJ;# zqQ2%=(LS!q1qGek3DZIt8_Vawr_0fPK)1D7Bxys&q12G5nOQhBB#J(`x<-&vCoF=$ z>beoY-n(}KZMtRvD}y+k9)P#9K3JTWoW2S~MQQR_0|9$j1F_%Z7D$DZ_M{Y+^d(o3 z^Wn?tV0JsyaOO!}UGYiE;APD?3WeCpGzMP7Warh%4m=Oi%q;dSP? zrd@wnLT0fMM4V#djeqIJi(0ie_QK-5PV_0^huguDnmZnt)~+#7W$_m(Ox-H-zxhr7 zAhz=S5(-w$!cT9q2Ph1TB>q(mKgqZO?3wQhv~$_dZoR2(0^Qp-07Lzk%bZbWf%yr{E@>{M@li4g=mow^-QX?FY&5)9BSq z;H1y5nH#0X@pItW+v3xvkFf4J7`m2y_lz;AS{#MHnx52G)k|9gJ@X;zETsHiYhh6? z5$iIoqg%<$3Z;rKpVIUAo}!X|2TU(Yjr9kV8Ip%#Or;`_9RyTX4qCgd%-2Y)MYWJ~@15DMxumQ(`p0z!I znVD4fl~*q^-1a~Jj)}GDl1&?L5JSAW0Zj&XbbYZ z2vH#>&&C#3&Q4P760t4BMv7Cp!8Nb42-wAg?OjuHhmm+^^Xe@J$+zl>zau6T2LK@Z$~ zHhT9Ym~|&!@}o4nMzCZi4zs}Iztn7!1~!jqKN;q4{QGvNkNA~nz)DGli-eT8LttJN zeE2tKu?Ag~H)vRi3x()cbm0shuHe1JBK~Yo4A6bRS)gX#XJQr=stXoXbv4}g7%iKG z7gwyTZKN@k;qaq%u48n%!E75|YlhLHOk}s{vW)JryZ#2I{Jo2ml<7d7Qri%J>|AnC z;>pdx^nNda9+{#8@!oQc!9=dz3oWy z=J`SjM@jW+?q*2(rzu?AUabdeCKdp_7SgZNtF@?ceO?;|?vo2G62yShduUCVESGs= zkXMfbYE+a6+WA~c@O~eNJOupE2J|3v z(cuPp^Rw8qO)V@eaH(6!3D`0Zo&x4t_67DR8HF8a!~R)=58YmK*c&O14Vc`|Su}wy zuDb&=o@6lbXWB}ZfMNW7>>s04myA{inE%+T6sU@2?9EzdehpOb z>jhD2jNQo(fsUo9{iBrht_3K8>Uzyc2{$??#F1@)LXS#G;1l zpqn7+MpLs0yXHh+DMln$S0_n z>IBUfBJm?O!QEfaHY-1Np<&^cWm~MS=ZC2j3dYgbfCV@KgbkFw6t`8j+kv_*M+Li> zdUQp=Da(REOLGoG7oRzk-AJ1!a+zHKo}!uuOYRafLggrSHvWcZ5FzTAa3NN))c-{f z7Q2tlx`wI_EPM!G)iJTyH{ls^m_1j#1FxJ-UOidFm=*W}9)gqpknyL>d0@!Cd%(n< z|5$P-jnw++3RvxXaWL$BVU-0vx>?^8Uu%}UVcv7(IUshKznpPv8lJ=1e;K5t9~(N& zkrLGyb=wKtbB}6mnkSSA3{_*BYT!?GPY=dx?_USAslP4MoQkSGFsqYBFb&+U3Cp3j zpE?iy)t-ztxM9n7S+{fR>>?l=edpPQ|~4e%j7{UjmpC3z-sSf zIDXyckTcAUr|bl}W-xk>4-mvwQu;(@Df<$|NX>jQkk4B?VD!$epDx%(gbja^{Cp@| zPfg+X@X$DD1+uDF%V7@w?F}%y4I4z(nLJ=sBeJUd%u>8)$N?IASif_;NEwQI2D_faancK#V6tsGmfEpMrusnN?K`n@@+S zzW^QdiL9-lGy^cBJb8I zaKwef=jyp1LAKSq07v{74I$EUn?1~<#ytXdXub#DM_r`uV9Z{P0*z8nfjRzgHL$Sr zcwo_kT443!r?R#nZJ!TI-Nbi5ug5V!zo=~u7ZL^bc_0d5CDj9Yfse?sV#=Se>6TFl z=v6E+pYpxH5IdZ_K=PD{Y?kVOen8aP03ldP=8Xg?uvH!gZQ-A1z?`5u4^B-V<;h+7 znHwI;&Gg_1DQoi#tX%6R>*2-kTsg4kiJyQr6WIGDRi6fS!tM<`12>1o=i%Z5)QqA0 z4?D?7VhSiS;@Ud^)pJ%r;`lF2g*l?bMxf0yccAUQ3&3$VS|gm?wJR;maF|NlMNC@i zZwwH(V20lQi8UD|9yLfl&6-r0_5%kurfeT)b`*21&WbfKtCP<)OydMEFGI-(pHYGs z-Y@%ql)t39DGY1GY)d$}kH3Z=Sc9Ll&LfNcfU4^hwyiI+MhE;tVd#?ek(&_xf)BzH zBFD;bV_e~!fdo&A=nT@J&mw@@W*Fc9?;q|UphQXxr6QEE@D8x7=K|n>2&Jex<>5=P zS$VTF@r?f$eHE&8(dqw5Y1+E8a8c$yCH5L8z9~2m!qjJ641r#ytiqK9=qX&P$ZB3) z<{-oRH*BeX+3)Es(t8dpNiP}(35-RGkEfh z?LdoHR5PeRF~NU<6!+I#VEzNLQ}6rVnh%#WJKjO)`!47SN|4Jgeh{Ihr_A8#Xh@D< z&Vbq78Uq2aQa?5cm71ktJ(agDxhz?R499P!o{)C0fS&UDQexKkc?FC+z~YZ@l0jLX zAN%P4j=q}?O{RBSTW@$#OYQ%!Tkc?M5R0}AfTU2BY@@$c@33Fmvpi9Mbcab z@U~9BEPh|Lup`({cS_9U_)NYHQf5>QFy~l`NL17puoNVbd0c8w0NrG4b>6LqAQzF{ z*a>=>1p!CBe}I}A+ant5H611US8UFHz1E{Eh;aBG6&3x57^>8ooyHwDKF9v%=qj+~ zNk$T;uWzUYQ{72y2Fv<~O|EcwD%4QVZT^_SFeIJCAtyV@xVAA|)Ty^I`-e`{eJ@k0 zUQz;W91tnIgVmQ6}Ckow1dAvJ(dA#%$K^l5eiWz$>W=|f6=X)ASW$O!39$|JN zaEN@Aif%)hJ;)H1|NcHX*xENkgHa4BX&ZRU&hdAvgFh!2}V!Mx<@if^F5eFX_BQ(t7@0if^C~C?BTz)V;>M7)hV< z{jcGghT%EH!W43sVN)D1coDyi?jH)YX^$;Y(vVhLVb(Y?G~=HX6aMYTfyon3(ZAE> z!9bsDmDB(dW(dwr-b+Pa*Le^l^3JS;#dv_(P%fBCQjG)S4nIRNZZ)hQP~+$HUlDj0 z-2fpWm(5l=E%!gNuG^>vM)g{^O-xrIm`y^rX;T&kukJlN00VxEMT#r^*-l!zFjuxM z*>8?oz)E!SSL)AO=p5svOHk3pV`Ga@8)~5 z`qa+^PZjuOfo4^{5LkP>B~bO(ZeYtvWD1X?+=r`|?UTXcz2qSb(!sT zoSugV#(#AY(M@RGhN{Ky8$kCDXa)>8z@WnpYk-NZ&I6SX?g5LYcmvDEuSEn^Htcsk zbEVLj7;*?0bixg&NFXz}F#DP#0qcN<9U5-h-XQ8Dw_2J};WF)+FYa5;z`-2!dQcrcN9TdeZAyWqK)nR*qD}Q= zl%nnJqo8P=A0pU@{cB*3-Zmc?d+8ToWs3yh$WG@mlh?eMuReO5{S6eK^e=&i0sXO~rh<1jK})RMu0oxtB1bpS|$VEpgyjQ5ic^v%V@Yt|{==A*dMS=+e z)D3t2WX~7NW<@TJ@Z9aye8ys>slywKorD>@Y>jgjPfR0111Ct+Lg<756 z{yEHLlkL_;**khL^*$n&?IgQaO<4Dilh_(` zVm4TBGSN%o(}n!WSh*Q4s+513AKcb5c^a2fL&R7%#e)S~ZOI1EOE(i3p5BB~KXp2j zn%!qHu)}^Hz0~y0;di>LZVWW~8HHHlnjDl^`qG{a5*Ga(`3z=T zHu*K>@kq$%@#yFrqUI5+a4xUHHpA;f?+Jzte7R1CxErIF7S^%wb8Aw=NB0~%>PyWH$PjPMw|v6s1*6sCPm?>SXpn19?Uxm2_Iede*wLYjz)z37WsGIu;r zxu*$IWmShGbPT-}EQx&C}xxKn$GeuX51xa`ZW||-0+u7#puz^K{f4u zhPi~8e*#I$i{wm6@lNjDv;CIQySrUR1Tt*eq9$w#KW}L=!yUIVzD#qR*BYQI{Uy-z zF;n3AF%RhV(i-TUaRIVF;gvOtFTL$>P@FAa0W}_nP%U2dE4bw8wdWm3erGx``q=Fa zm%vqgz6r$eA#8VsV)jW2OFx*?hmWOPGm|Xmlj90~l7Q{L;BeUei-kzD{%_H$GH)yb z$=Y=}a8zO_Fuy1P*=Qv-*8EFm=&J?I`&%kpK~K*Bqw3Nud7}o_GV5TCKOs~~YtvaK z%WDo=1b+2Rmr`7Ya5NMAryOW9A0ZZOqdX&F>o%?csQYXqKQjJu7M7UQ)3l^cdIO%$ zupR-Da^^%4n(lCt_%)_MDmhF3!`S+j{{4Y@f2ISik3B(y8rb_5W{a;#KE>x)UcO^T zGeFZR)@z*YI1678Q@zb#Q?y{iw)XpfhBiH?cw*kgt&!EIJ8dI6?|`SsQ~PCZwz#zF z2`mL0&VlDjT#O9Zw%P*))N=O%I8-m#103YQ!pxk_Vl28mLKY3}`|=)f3eswb$ZFT# zwM?4h#>?>H-gy}Z&R!cj!{WVtDlj!*0I*cNwc!25eO`6vy`v9Eq3yc?W0%jdNJP}> z1K6mn#N`h;o6jH_HZ>PP(RRiv91662Hi{#nj0F_?Whf>E6P!fDc@O}~7;IO;6+R9J zfnKs9py-b5qt7!3_;L1`I{tLkuz_?tI)okT9bYsDPN!PG=LxQO&%SU|MUx*Z2hIUj z?1vo)^1a7K&}e;$?;?H`Z-JiV0JK*dw33TM6s&QE%qDvLiUyaFr~)PL`XOM+kmejP)*NGVv9;_?=8dYGyfF?#Ua967%Kusrq`t)>u4vX&(T=tJ}{S9W--BUny_udU!(|6Zk z3-0tU<}b{LB1=;6vEadn}nDeK#7san~Z%ssy0caxrbqFmKktyyB=-Me)1?fV31a5g~Oh?fZtZEfQBE*sd(20x@~oN}N2 zNuFyvVDV;6LwgT~m@^yTl3x>rq?bI-fM08SZrL)I#{KNb+3`tHWO47`6u{uVCq%;H*A0a&$9J!V zg=Lh~!fPa2{J864u&urzx)kFnp*h%JLg@t0w8FGUG%mM8OWi`LVHK=IL{9JS!fbSO z$1H2Wt_tQc>cb}f#9e&{zK#z{!q?6ZC{>Ia@9}K#(S9GjJF0tuSlv+KFs= zEh>X8&LWO!NH}^HmW;n2(K2~p0W8G_mjP`jbq0DHo{DdLdKzH!k9Z4C3H_UmBWEZp zx^U(QeyG{CQPH3UO6e7MKyS4v1K4A#&_Ok;$58h|S!nhx1lddM{MSEbZo<3bYA$Hp zrtcbYNO+yHrG6Oa)F!%E!aVjMdq?*rLY?-R-~>zH1ZQC0$!B1|;!C$-w(3l;dbel5 z&}(8m79B(RYBgI7+b8^ZA5}L-u@PwJ;R6Sk$?Oa?6J}D~HGTaVf-11M%B-kvIJkhSEa_;1GIgQWhQ5JdKBMwFMD093cs1HB$nb;z0;Ztg1;M^N_Kj9MxR zF6ht&hMKVF0Y<1zU0$R71{Acz2;2R06TIo)?G@g<=X|=vD99Ni4MpH(0|7PJ`)_DT zwOiKUEB9I_I(U{Z$7i0EAH?v6NrSj46(bn`&3oXK;4pxLR`twRuo&{zi{K4^kB6-& zT?-y``iz|B{IU~+3v5q@i*}v`EdRa*NkuPsRfI37)NlNDQCC z(vSZs7+8FUt4ns9uw0D_@wy69w93)?f0v}B*!bt>Ia1PwQu=6mU=@FCcCdk&yl%*J zR#MLWJ{D&FV8+N*AS%~lIuuPXNd`-V&m#IWJwhBwvuj|^`j!l3wR|xfN&GZt?iWgG zX8~F#b$4@bsbc9ge(v5WgFpJ3$OftCWBrs0jE}h3Kg5O2G4dtu@Ul18Lt3dGqn=EK zRP*zH0#BiL7|{h5eHHpd*nA3bIuRpUW#>=t295kli35?k#5X8v-JZSh>f_x8XnfbO z*Eng#L@-+K)B8v}U(OJt+V96qt%bSN=8@LT*yCPt@4dtu-#WbL{7#r&lnP*Nb24d(n z4J!dnWR7T|K`%tXL|k%*zm_pA%yV&Xr4SkO zZ)O4u%nksp!wxnSs9n83tnv-9K)V;Gfm(}TWWw{0lWddWra>UZ#a!oXNY)nCoO=f` z0P~g~V{sVE#7HslyDadu$!IB4;uPNEVQ4i$f$NY5tY&{9x@KtagX-~l`JW6#?I9+G zyhaRwCBzW?sfqw%%~nbd?x@aO83WbSRdRi4 zNm`WQC1_EhUYwwj*DhsBimycR{k@X!6WEcCbHt#gbjEL}y*7ayzga(JI}I$5Ff0fc zx7kIVQjo8+j^QXT`mmI_q7JJ+G=sm`y%%|hVS>vl-s9oY;s$HUWhnFD?mWJMYkhm= z!fM!@2&ouhsTTTE-T=XgrGtlA@L*hpiUneG%NH0Rr@ECsjd@g^^9a@@D^gDr`QXtZPGWouI}0@E(a~1x75KtKIH{h2pR8Wf=#5 zO;(Be=^!xUD*H6WjGBgoHuXOTtE&$g(OtYP>|^!~%!VO4b1Jn9}lx_5_{0dSK(e_H?g^yksoo(0RJIB)DTFrkxUc&fp6mir{aUS=q*fH z>*8Cm7$;KY3%WZ~A$D@0VPFJ==HvP{|C0zJ@bIR%{KxoD_Nqd(7WW8+MD2g z$v0sy_|8;)mBB`TkphyUoo4x$ZGk-mu1J4@aH>P(L!p_Q^hyy^%dlTSXwU(K5 zKEUP>o+0$*=$hvu$+0WWU;v=n&%VoXa0W0SgehC0y}NG zOJYR92*VUY6>2j309v8;=6OufKuR{~pA`J1;=Sh5xm~c^$UU0X={Im5GG!{(5SIjk zlF)>4l>8Wi2b3j8eHU1?VHBwemK})20d!v19yl=F5m+(Z9@w=b8->pnCM|F)8+Y*3 zYrv@2XQ93-hF^y{!!I1@K8HPqX3;J=dN3r~XVe?m)4oUo=GOHAmfT<=sw-?7swm?1 zMNGJ4-YX%olQor4?E@-V{`16qO4P;0u=p-QuK^vr=|ET_7d(~uDx~OlR!|n&YDa)H zuthRZ-K7qtrjoS%?0D3`w4psx7rPA;GSET(Sn~g|_15uG9#PwHY$YzlHpy;$H}0}= zR}!Lxkc8k6+_gX;2`)v7Q=rg7ky1*F7AvKtc%isMvEo+zhWENA^m*R*_kH`vwR2|X z9zEyGnYrhlL5wk*DuB`3UjjQm^aa|yfgDS!vNjxXHHvxS2xSP{Z?i?0g-pxl1BI)B zlkHhZ&3+63Fr|i&dCZPjkg$$Xf^d?R0o`0R;0upw1L5}5hlo`CZ&QFB$CH%;R~-dr z#;gS^$RC9^w?eD=hUla6Zj^S_nW;csOkDG3S*6b_kw(>B7Coyy^^xTy4(cA?uqE@l zt^l@fM_sPcZ)I_U3J!sY?0OX{ECq z1z6wUj3Rlv?t|OAw0TRs{7oE_EdFsJ<`bq4mUf4~#?Fgz+84I+$MQ(FA!LIOpJVEebiandx^8vZh_v{T|;E!8@ z5x++OEjmsHst(bf#tCm&&QeH0BeI&gJZQnpPljjg1(q{6-VIp#j+-#MOuuN9l_NR7 z*bXm`ciVY^gYSg~G)?4Z)A2aWmnb`~U??_oEVj7p0(4YxIW1-+1v#rk%;QE{m4XOf z%N`H;CmtBqGYptAWj*XivzXuD9=@GArKsmd6wb=>BO60ivcjIDuqY@UpMKcXK!p~a za1y9*#fC^;yTnLgE2Yhf6z!3dz5t#DH&zSEVQ&vq#&O0qCaMneK#*t91)yxlK@lOt z@XO}LF#Ve2X1zG;+-|B^PteQ~vtaH0<9s@z^$+~ZE?S9r?R=)y6n2+cDMQOp5`W{Bav|Ml#Owxm zN19&e-DI&V4uEisrG5?gisw28zfOib@oSbm|JGWd-Hn+*zuCeBh}e4@_lD{{$dkz( zC_$-%7hxsO{RwrTySoJREfCVIYqb{X1zrslU&gg^jz*C4A3Gt<>K*JP*&4hiKymf2 zCW2}e;|qhqboe;9-PYv+1A5$P=8L!?k9b&}>>^8+RMP{WKYWx5)+B<;jcx^0jjIB> zxR`&EB`;jC0j>Au1<>EdvpJQ}8?=1A?<6s(^9__apxqo%fWQL___p6|95>wiU;Z5t z!u>0N6}5eV79sC|o<6V>O(frka`aVXW-=NzY0w{VE7DLpDBmfSh*i}v1(@>Y5zw^H zIn+PwI+aa~%OIfZ_4OjdfVrHZ4KM5ov=@5|Rl`pr1P91D>qHEtQGbM~mVXHfQ_y~F z6;BT;rG|QPtNK0LLbLNWv-TKFy{z;3f`mo7BM6I&>ydZNky^O54{Lz>Cu_MGSAM@2 z2!*j3Fnc$=Pwa`t+be4l67M#+NnXo-`=i1uR3(ykWqJ6FA&^Zo0>8e8$6M#)@X* zXfRaNTMtpwm^S?oBXgJrIOOekpu>*SK>xebfpIvT1DDiPq`;j#<{;3_gDvegsne&P z_n0Y`L;`OvMnTP7r!b=)S6N>3#^L{sRGv|I6O8KvdsI`Htdy*7jUm;8YS~LZ;a!cD zBixzjwE?zrR?gQj8nX9aV`QbLGcZ_LE$SXoR}L!9VL57QCgmRV0j0QT4(!`$InX^s z5A?mX04h1iiY3j^?g!fMxGij}7T(|=&yy6>^7;3Gy}I21sv;{nYP**26a%j7cjUsd ziPYk?&vi)4&aw&a&P5q`yh}Ge*xQMTs8$w>a=F*c_}^u-X0DQJxg&lwqHN~)-9kQ6K#rp#ssW_-5^n0vn;GOYbMicfWax*1+BV}At3L_Pzy zUy}y3Xu1e-=)U+Uju~!v@f1FRE1E>v^}A++N|Z$2lj65Q$DP^fyKSGNXAEGf)wK%L3-|Pzra8ETv&cMFkjmMH0@4x)M!Z+ z+M;D5BRQQ*2H`S&DUNe6l48ewOV7$pzWf`rn4@lZM#tuYS68(})DDrOfDOC82C6@m*Yi@_gdC8Hyw;b9h~0o7MZ(tx&S}7-nhS+r}Jton$>W`QLTxof*+R2IViN~oGuo6 zo?ijs@7|L+X5y@02+f{;BvRIefauaQ1!#SmqV2HXA3W!p;mu%=GFI3>fI2Sm>IPte zSnnyiNk;J8a0%#@=L?MUCEF#h5^bA%^%dqlidmNMQr9>Gy$`c*wSD(OVez;=NrsQd z&=)tkSuwOPqohwG%Z~h-1+ubx0CX{~21dDEK+~qTrCb&KBBt7{8pxAH-_XnFJ{CQ( z{pp;xnb(~6E@R1qk3ToE!DLH$0}oq>7k3)dALMGGIwb#tn;FSMtV#L4Oh-CF9aEbV zD0m+RnO4PjQqcNhw2V1e_I8n6lIMYA+%Nxt*u9f?p@u3qBTge+j@L7q*90$w1nwv# zk+fw!|4O9R@YD2;Bd$*uUFY!LjT-`dx>Jr-_N73#{5L?q>%a4v3SNc>g>k%jQKp>_ zM9J;j(c)PzVEkP_Eq^TSD@CM<7A+BU?@>LSe4!jUIIm|eKT5W9WsOw)RrMMM{3w~7v zbz-@R$$OaQvq`k|J)y+8H^f5H?G_UO*-z}W^xHJ@)MZZpHEh5N-t`Ou*4NX14osBlv|p=ORc}-W6kmeqjAk{=%eeddAghtTV>Z zknkJz>_6?ldkVhVLBYaZvgFN|kV>)Zlet`>`0^Ob-Z9}bJTbNFPL$QXUksnF5|hOY zlh+`!&V&K8-7f%JiIe`a{#nbW=_HorHEnJn!29#RMN8`zwM8lc!xzC!2wq@?km%XX zn;*PgzBN%`4lGrS3uI!9*>*YKA6-??X7v%qX+h1 zW90w+7I1JZhd;;j*ro}Y^~?kjygm__k@z{LHe)`j!EL^_XW&!e-e_cyCMCDH1g{(? zGC{*MZ2W;$GOhxI&(4*=s5=&D0(}8hrsC-LaF4y*gENMZsC;;($QUX6*EBxY_>o0$ zZu|=v7Wg|xrD%iuMo>D*?PfDP>mGTmCWBnpIF}=|)1XmM%o_bsR3jvHBn)bO(;DoB zO$cU{ay2}msH)Wp*m)kUv_M}EYA>A=C0BoV3SVOMzv>=K*b7 zaFFpVrM}kA!I>BAQnXXkYw+NA#F| zsBrq|u~CNGEP5PkzgBoQqfm zj$Z*w=CIzXuqliiG)ZXn;6qPH727N@cE^9aVA|cDx0#c#X)9ph@9mpM)TFd;K$d#H z0=5&!Us`BB@>$mejs+eIFCf$Kh+0(AOp0<25d0fw+8JRvTYqFk`GW)eE8VVzpTij+ zNTRl@v)lkf9K1ukXP~NKB{YGs8zvK1Xi`a2sBIOxh4&9zJ~sijVT8l)$2n{ zPj@_$e}S{`!W>Px@NYz`E^LbkE;VgUV8KJ{T<4OHOe%IXF=}BWnGNSXXE`UysUH4S zK>x6#d^mDUe<%;xb@sj7cc7RlM;K&MhI*14~T-AKw!I^ZrH2SPMjrS`j<0< zt*3Gh;Wf7w=r@EKDcW)^Q9{1E^3mt}zvjgOYXa#GT)Z;P7 zrOB%~a7HfUcY(5YY>DJ!-!f+F;v6(mj4f@loWTyjCzjM4`vEHi zdK%mj-Js7b2i3`z9c7MVag3z#GlcoC&S6WaA5CxWt)uM`A#dask=2$BAlmK)i;tF6 z3ruiF1g2oFDGk(_F^kVLPV!NjoZZH7L>%2t4UFpF3D{}}&I3buxwzlH^P=If{JR_s zf-E`JokMtleKjACDjy)TL-DPpgifR3?bX0~`QBjzg-zpEZ5f+tD88NlnE)^Al3<|2 zTo+)}-S3fFdhR3>TV|BimDy%pI|^*M_bgCduvT(D!V2`qU^yw%+u-ypGM@!UCn!6l?gaZ8i|d$l>%Kb=CKXX zIj05>`FpSpl4kS)mK*nC8};tVI*mCg2fDb203(i2>6=fgMbU?)FM->_Cv*2J7ju^0{bEukWeZwX+=XVB~~-Vk>4$Z|G(2ydd+ot*rQeJ~6ev z?*v~*@d1!Jw|P0hcf&yV@r66I;saY?$Ox+L(rX65az$U@#7%90?#3s11Q;~p-8}c{YF2$4^Kckkwu&9^7s4QNi8=vHXU6Cc@R-qSNEU4DpVwkBqd>v=r znN-Db9vguJQ*Yu^MeTrd7~Q!(6q2}_waJ=F+g~}p1ZdGf>390`3!u8+7GTtfX-Fov zWpB9S@-)DOlJyKvT-3Oni!Ej61SFupsf`;Ah(aJ)b@OB`^@jKclw4iXkMzP$+=Nt2A~T-o69+ zNgN^MC&Wuy3%egdSZ;D>TKQq0kspdbHo(tTeFLaj(~I9~LHw4j0O{XvDp0lu)))pj zs~@xkGcR2I=AxY zg>YBD{hX1#f>;^dc~0wb%|rDmE@Wr*nFr6jH{`0a6JsH+k(DPgWy(D2$7hNylMqnc z?GD7IWCD*#vhJ7$A6x75Y@dLmG(F5ej)#{;f<2$8-?<2c>M~WYi;fnA+q9uVBD@om zLFs;fh-QQ%`5^}pMY=aIKbWGU@?RtllF>LF1f~14H`9waXJu+2$D1UXQi;<;22eCp z&n^RcO~1lrlfYq{K*XMB3WXK>fXe%9!}eozD0EcD1EwPT;}-vFOUa+6BPlnIhhBkq zWPdULoO^zlIEKnNIgk>j3sWd_Ev>q&!>52nqp1Bl+$K|b{zWmk> zVm%-t2X3!i>Ya$)SY%a7rS5mJ{@XDm6<*fkuxTAvVp}P3NDnvz>1n^aXQY75ICKQU zixoG)?gQ3ML@ZzPN7!ZKDMci*FGnw^2I@{zFU8F#Gp1f`0W4lZIWFtNGrqgej6_$u zr`fQa-f3Y7P+tCAFjZ%-o#1oD4l(Jr5L+Sa9JS{P%kukSF7mUL%Xyp)geK=~C>0L`vSM)OVVW!!@Q z&xH&oHp2YJiK<4d)Yub0!t#;rWge*&HVUjq;%6#lhTelusjYY?)_dfA5atO_AXSl( zH@Htq*6jnlGQ>vn;?{XMXvbJGvmGUB8hpf!sTsY+B%yr?&59N&>`Lv#1u_GL6_!;) z`d@$*tnZ;^@$6i`LZCW!sEpexOr(-`dIXlGQscEuTV|LlDL41$xAj^}$P$Rn+}ilb-`Wo81Tt-uZrjF^;0ZVml@iSUuam5<$g#46tBVeV6q%9sLw& z>$jgPKe5-AgOGhc#{}YzlBY2Ti$lMO+DvTW11iOry<>KK43irwZqCi>mxWas<+7uq zV^ntrAcE^}oK1N2KTDiW<)H2R=`5LKSF(xOt&VK`#w9dwT-H1Ux>qh`Rl<2EDTblq zO7LoXaX&{FBkDoLk7rD{Yf0+8aUIacdN;9YxDlA$FEtQE+^*9=MaX?7opvqp(_~z8k{RGya~>&&{X{j?@%lKR`49|;P!+2@gtkSL5@-{i9HB-`vtX9feDdEw zRVh}eFo-`408ua@3|KR9i{Zyrl4)ue3{(dY?!#Ct>%}<|wYHZ!V6{5Y8yFA1onEcTNp&2KC0(O7Z1j(@+ zGxt->hy=VLLBV1ojk!%brq2dMl1+IgJQd469c-ou9zY>VfwAnuXxy~{ZM$g} z%Qd{FCxbm5fNnSh8*CK8Q8f363OFphKXA+za!}2eWaqA5eFtmPxOL2 zE71&Cl)4(Ij9_Or-lh(*EVl%QxDA>Ocd)57v$XI!!hnGHXglXAKfvw$t0~ZB)g7R3 z3t^@NEUf{NVVuj8^EJQm%l+Ugibmu>7C7gtMDDgSOW`!mWv;mqj^2s7|G_Xq%05_S zjN`B+#Sb!O*0{C{VmPkthsM;rxeK>f7P}?xps*|QRaY^{*$))L>2%`LicQct#7It) z0oz=B&t%N6aP+Ww!A}JpZpgvoNT}{CgZw?$q7}>^lL@qsN`aA?O6;6bzgIF?AJ79{ z*)|uzx_Jc!^l~gUf>+?qIAHkPEP6$svqu4Q{VSoa`}S!gy3k?W4e_tSR)0k7`xclr z;1{6c`dpM_Y{CP$Z7xt+yyo)5&8Tl)8v00S?^u-Xz1)D~u5U!)-109m&X;UuUy0lB z{f@kcJ3Rh2_pFB>W~puN>;T&SO>y+SMHbPwJ;~QD7MDR=Cs2R~+T>g%T$&u_xdEqr+>bpzg;mjN{76tT%0q%lZSexg- z`LCxUj@vKpXmEY`Ai95w=9_iN_i<-nx%p*a#gB}ZDWK$z7M41?QDDPy(rfEqK%W>Ync$d9z_{Dr1Ctc@v8a=Lin^=-8#Qp5!o>Z!Q&Mt$ z&f`CVN=70esOLwfUN|`rMCs;6Fo5fTTd;53cI8n8gHhBy(8Um-wC1W5D*qxmHE%Lf zmuH+K;WWVlk9%0LDT5x=1Ealc@Rm{Ef!q`KPhW7C|KcZRm|K7PNogGmv0HF*>wAdM z!gvY_k+@Goe*0-wxB9QfO2lmNZv92T>da53dBev%76=jRRlm_gO~ z1PFJ1Fa~8|Ys60D*UFG-BeA?w(~!-gIyf^OhhgMV&l7Cu#9wWI6)BV!kF)cz%%VG3 zDMwsB?ANCbi(#;-usP_~BR~eA7VkwBc z@j(da6Zr_}e0wlf{rQ$~`wAozcovIGh!~d7oMWfkarr-KE;Vn^5-P9Y0W56tYg_bd zEBW%4I zoxc$WI>Yj<~KiM~a3s&)gKpC}VWFSxB3DzGI8MfUj zR)J0P^$7Bw!)Eq(WcNqx&N9l!HwaZPK&WT2pA+rh0L{M}h-PZ~Kno|JV(gQGNPrk*>eVR(=KSxpfnBwn*K8cwWZhcG_YveE1(|fVkbxkOSFyPBe4xvHKY;K| zr9I;*PNw#cdV?GW#CjmlXdJtbuUAjKH;k0ppL0W;PSd_L43+FB#K5h-`2eUfneyLT z!=TL^txV&dqdoihjX`&7mQWf4e>@0`=}X3!U9%BY?)c>Zh)|ubKm6<^T3{-#Du(Y7 zsyKduClW~%SNRn8-h}Nr?dmrmxU;>Qi>__SjNJ`;1I-%+dpX?l2H_uig)JB~-cMu_ zY!5XdDQ|nz)6~`qgo_%RfkAm3c!A+DYzt0|rBS8#3PNB)vxUWq8!4~#m?QY#X^ z0haD0YpJ6Xm5^-llib^NW8Ff=J0m2r{2+2PGh73Ay?F?10!`_#PofsxBFmVqZ#kVK zXw$UsP#LRRY%tfWxyA-gSUsHfFZddEb#_9$%vGFZk^3W*giPxAj(yet5mirs?Ga#P zz;R>DPqCR{EJuZmmCY}sGoITauxTROP&WTAFz(nEG)U!=@8OpJlh3kdJ$nKouanac#uvp|S*m&b#7N^#&hlQDA^NcYkddIOzU+$6#o7=18|M*wCo16+ z{g#atUvmbXnlgYsipmzi{0C-0r>BpgWD zn{qZl;hC2xw1+LPD)zoaWv89Fm(K<(dW&L2blAyfmV3~1YRy4IFUd8JHHaUdXUrj2 z_Uep?m}(&QkrbR|TNb981M9lJ#&?;v8LQw9%`E~(>ZnB0#svcNdmP8BqJqBo#-vyou&%7Rf` zC`1vB1A%gbx0H{x@iRmzO+84NkN%ENw~hY=gyX5ZsJ!;8F>nX}xW+`plcyyyhWtLY zlhR^1uw+aSu<7(OV2h5Mfes7AI&nZBW*YWe4KQP#csrY!OdfPkXDj&cv->0?$xUlP zrx;rUi%;4DOY_;8ZbPa>W@{Ru!5}x;AE;!_{vZcW8k7ti`+$Z^utzxKg&NP~Ut|bn zQg1dCD7$cvUWsQ;;&I0anl!$-T@jFE+GOY<$=$_DYSGclsA;ta*~RlPSw|Pknwk5s z=&gIRPM($=mVJMC$@H`Xr$J=#&5ri7L0rDa0WHu(cU=%eKlm}wVaG>UJ+6gh=Ab62 zdEAQlCk(O+qfRBqEshP<9DGB5=?e^>NDhy9CbzZ=FhoZv!JUSV=I%JJAjuIS=`a0& zy-&6WD&E(!2r9kVev~rzpvZFO4^ML_FY2b(a z!2Rp`ihJTnnMv1NA@zJi3CW$ZWUu*>7_{oBlI+w&lcUI&&kMos-` zME5Ey07gaW`5i@i%07lDqL=Zn@8Eq1!U-89IvDpvySfaALc>9JqpHxK8soPJ54tQD zX$S8g!*~UU9MPjrd#aF;vvaBl@)5UbWiK0zhH;zk!9Ky(mgr`4-DhP7q!Jw201P*Y z0A}2q3{?A?(Jg-oRCK)rEM7eb=zRS;GVtkY3AeuuTPkSIDPTy}4q&9Wm61Xzbw9rc zg!8<+KwXazV{ow)Uo?_4|Ag8$&}@YhCt|3t`iCFByY-rjXkI4WVI&5P(HnyWq{!Nz zP+0v-E7qyyNRCCO`U+s}H!q-`8c$!sJB_9XL*U~)^;@97!w8_PxEnC$!3QL(9PAHw z-Mrq$(9P0>KMr$`q4iYus^_J9z@VA8fe|&op*&d~#A}AUIL=lo)RxTF)4NVIpYK*V zJR?)*VPMcFPQz*fs*&qQHB@jc0697Ao5qpcwRJSSDr4BKrr0tKx%*-Q+?q*G#D}<{ z=ZB!^vfl*bb{dUYFI3G!e(f2&dMx54MaCF*lltax5LVU1Gnf3qrwn5xy|^bjMdCc% zeh-Zjhi~S|rWTnG;A7*(Q9yO*fk@F~$`MdH9Dx7@9y_)ajT}D&IzZCKs7#E^jO?X= z_TyP_eV56G9#ZRdHxX9ox(9;PYnV`(j(OA&s*haqMLe}FBnp-8VFKT<;^y%`;^Z@E zEn{P)Idqcq+^HyK=&0q47rSnQ%mvRWqm?U2p=p%cTd{T#dm2r6$%j-poBZkCb`j9?_C{cWLl8D9nB|jnjo$#wNoPU@?(F^&gMmQjLt=RHa5@P>_bWAeYDzDt zvzEQdTn>jdHVnowOOorYL_U@Fh$3J!6s!roRU`CuO?5pC znReUK5#rP)iNfcA^C3-N^Nr5mZp zAhJc~Qxi3wQtKorr+_H7iU&@VS^~`z#E9XrkwwvV?!%p( z{7DgQe}_-zYS!*C9{G0xK^*1NM0=;d>@4$>-ib=qLG1a)@I4 zLl(;`w|Ol#G?Lc2?9i{k_`lh_2@5~Koz##Ftk`l3XrboNFl9m-KBCH5ISKB>yVTZ6 zlPSawec4SeU$f2C53NK`y2lASBcPs*6ZkF?nED|Kn4ZPnEOGrDXg-1+*x0K*8(_Tu zWh0o4eof8eVC;$jB;+E+jaY#=nSW(NOXX>f;k{e;`EvB8yIgQ}aBUMSlksXWVyTC) z;6ATU8C#p0;xo4gcsGe$_8x<8{lUdhNw(|u!R^|y0lXJ)$(ECwQVxb}*a@_-*VCu! zv8Y1!`Fc=J-Hd^5;)1roBisLX-%j`tRw2?f*hFE5CDQ1**m{bR6i;SJOj~Gx16le%DQ(^hP&vt)#2wpx@x&rfB&jS`17h@nTohudzD;(MMZStp}o|e7Nz#Vp#T^_gN z1~7HgZD77es8L0q??ISP=w^gJn zm%+F810x*-zs3xwWX1f$hL)ZEnoq>zVtYq?>T(`l?tdj483ah7W^92tgH)jDAA1=q z+>Xjxwzf&MqoP{?sMZ4=7-ZoiHdu{aB$~%|US9;cXlfXgF`*Jf=E(|-4d!2y|DAsR z4CtJ(0~okZCsGSOlZ&BHwz7wKW1E|4jWESb@s7r=%l+n07{esuw+UlI0c#=c818rs|PGI`Y|CF6Rw(XttBmE`G&N26p0P6o!-l5Cog;;h4=- zLqMb+71d5~hCAnTcA-vujhZy;54hzYz61shkNxz%ICwqltlspe$jDvne%EH+6qI(- z91~$1>%#tI&Oz;~5I5|H^(0a=zW~uPQnZ|6Irhs@r*xAT#d-`imCMMVgz14JjGWJb z_LwQUH2tbjhuIo(r((t}VDG7c;6>Zi&%pWii>VnL&Ljf0(S_vE5`Vb!`uYORBgs@z zxV_#^N)0f_VCX)v07hf$DpU9?FIfRCT(JC!?B~DbpWEkP5&UpudGqB(-Y!Ch_3PL< z?Oi7@lGiwmsBySaB>FAZcrti4?$=7_Iqlsc7-#&$;}JQ2maxc*Itn3s&H6i)$$_D` z-wQ7W?^Bu`ZUFqJ~Kwnw^-G3-94H-o|P z&MW*_6xTD}@JbmKfZ^UNWenW1LA0>anx67JlzcNbWy=m!P~JHkP->;*quaT4w{dY2OT>uk(8}vR@EoJ^KrCQ2x2^v~J792mC^_0zv6YPV#scs~I?yi{e z|Lik$(j0}a+FS6Hx0NVq@SpE7h*&JzZs;M^%h`$}pH!n!Y$7T+_Bj;}WOF%t<$<}~ z8hIF`&RmZG+4(56yZ4EoM0LyfDNtnZ83>4Z%Oxi0$@5~yt-v8WJbG=o3}HcYDd?dm z1Nl&Va5oSc>L_5(VPpVZ@N@?F845lR=^O^Xh=(mKWlAGML%g@)5{O*tS+2vHe7==X zFsAcE5y?aBxXAc{YCr$v3w*cQdN=1QjdS9FK_8C+quNm0=IN-@f=^}xHi$0jjGd(lDL6GzG=@HVmrSO#Fi=ZPDIXBm=^0rfR@ge7Pku>ZF%viH z4#kPI=%QU~nTV$s#mjf;HlVhpR`e}6twVRv$=RKOZZo(Mz-`y3&uKm1ayTfS*_M4a z=9nvpu@es)*%(W%mpSgc{e2Amo)>D zHt*-9v7Xoai)#30C&M%PXak>@UsHgvpUUHTJs($yTHn{fOFy9lhDLd<;GFE=UNFR0 zla7##c4W&kJ1{ej);y&F;a10<59>n#kI&;~DjHeYA*Vp+y%8H`VutwPjcxMBt31=N zI+9Ab`t2TIP$XG21oDnP>xSKB5aO0o^FM8zl}l#l#GW><-!a_Eak(j*w%_(;z)+`u zfcmIWeDNp$d>@FG{ZF!>iq(_&*Wu1ZD8mZ%2!ynlgDHWr>d$i|n7MvR?Yfa!6P`FcdR`;2|$W=jm! zaL}l+$U+x6e;>e7cv@1$mG70rgUajT4Q%(QbT*m&h_UP{8ss zYJk3vD9swZN>Nk z@dZX}SDHN?h8Cki+^n`D%c!4*q4G)7ZZQ40GtIHbH%K?W8b9XZB3ln z4o1rmN3_;$;U(CXs@n*TS?q$zQ(k*22ItuzG7x zAJOzB&yyjYX6i)0{z|;0Zmsu=CfmydZT8J%Z|V+ zqO&DX_TVRA+OtMr_!Vp(q4r<}{96*lo z+T4N5jox?uU=BV7Vs={PYKWlFVc6t>?~MKk;-Pd(T>Xkoj;~oBr-nsnLD#c-_-LD; ziCv}6eaY&AlGAz5=9j{Aq}tsvq}4g4AZu zG8S^PMA$2e46#I4@`hWK%52F1-Tx%NsSn&?lD=X!(m#9^ykrMAf3oH>CJ!+&Xq|sIfN0x(0MHWO zdf;`|HFBm?M`7WpuN?i~iCR={Z-i8A7nXGA>xm#-WmA;CH$XDH)iIDni zzKYRVXusyy)sJ5YW`~G%yBt z3*!mJ;$0vdej@{@eXoDgs9r1o0PTD73Zv)-bo+k>&B)aw>D~7AQa*G0rHK+xNo@wP zGpjZY!JGN^?i@4%Mq^$KwHxKfM$zBqt$~G4kMUWTf1kk1XVMuGMIl=L6^pa{yY3qR zKIow;gALcZVg+msr&QW4PRnki0bL9Sn~0it8v64Y?>Scm>3fq+9lV?)R>a2-W;Vt$ zg+Ye6BQ@5)0iH#NdZOb8+Wdi`-LYg1zjZcQ0e`<>a4ZVfErOBCyor_6ib|7FKr>q* zXRdcniMMRN5mZZIi^W(Jjx|c;c4!;c5o{C&=~AM&CeG#;4g#9J2br#KD#arAZ{FLZ zJTMOKp&w779)U|JK!Hb}aafAD8;?&&xC_Ie1<1%z?4(YUg#By&JtQ1^Z#sH1xrFC> z1m*AK#-Xy6zrgJ<$j1nOjv?$n_n+&4NsZaSv=R<)`Q5l6;(neMQPh=gXw&uy^O=%U zcpQr1yX_Q-jA@6MNyg0I5KVn_7djyH+yuBI`b+|L+&UE4*{uW6MRfx+F*r0G{|0)k za-qQci?7a7XSalx!h0PsXig2w747v9oa$u!8g3Wm5r`F8*7g2N&~5=T)?S_PI|%Kx zR`_J+<2#TIrl#XHTQ(_peI$9!3}gMH%;z9Le}OwK zk}nJwU2U<1ex_ylj8MCbvmNIJTS&Nvwc@LyU?m$hY>QZUh-jk3DsW6NCONtFz@gYD zRVHc6_4rWF+RBvQ` zCQYF-12ylgCwsY+jAbNsP!<2Ya(D1A`y#uzBKTWi(mOApX~hTzn9emqTEh>UVl;63 z8BKzHVAVG0poDgRAXb6FF<|-kUjf}tx&b4XM1e&;Uq665aCK*3Nc$+JB(G!^=6zS7 zB-T?(MCMcWRso<|dSuId1H&_)d~ydRZjWZxPi4BPQb`-4#Q zn~9QOFaK+6P|oL8L5=wIP{JK}mYOJbCT*1DFDP-9t2i<{>?}vJ>iskY0%orTX8ijI zXgZNPf6NKCpG(SG%*mwq_FpvL9~(a!3nWl3R>KjPTsjv0TKt8|$juYSTfBu=jNLat z*(G*k{GYFJfU+ce7>;2U5?16rAHL%bZxZsTuDZsQ0>-iMvHhyBjFUdK72K`T^RWqG zu-H?SI*&U$DzL}{ULE@o82Brz5tVceohMt6)I6%|d;Ja1Bm;hzZR(l@w|Nwg&$sl| ze;TAp@u53-|AD3Jf9?JM^DjBRqNx$kUnWWz^#(IrEI>xv?KDz?i-YHg1;4&S+9N5) z2dt>tFCOI!mF<8#?&}CvsAc=V`F&X3wp#c_H*&n!SKuWb?8~laPQcHp;wmpMP&;)6 zkv=|#4`o;MG|ZBEO`@ic4hsUd-8B(t@l7QPRF=yQ@!jzr=(q45F#Jqw;=c!$cecJ>-MblYk z@8Z%zAs2B?u@ovtK+(uR)S!2CKDInHPF;Y3!+CK&{9Rt(Lp|Ikkg3#9W&@SpY;-eE znt`@%%bBsN$kLiw{m&2Mj4pZvB7|P$AeJzMjA}ZP_3>KEky~fV#*hb4N2RO3VVR1p zSRrN4i&QxQr`CXojhKYY6BbdcnO&v+wf&6B!>0@RI%AwCu(&H@hKr>QeUYP)L6(%N zT@SC!rO*pf?qQBupFL=cRi?4iRU8512mS`HGTmBmQu!BV%)51-2fXU`wnIbppTz83 zf?nb#OS$CHM2T;zFGcIb8aTrpn{^VJSnl^b+-6;=gDn4C3UtiCm!K%y+c6+w5}B>s z?v3by-rqd|rE9OE--+(P+!k$sF8lWby%Q+=ftsIyC9+Z2g3#@qglXGQgKhB9EZu^R zLh0k*vQryxaoewb2P?Q8F5}K7T#bH6WD-**4Br;3V9Q9J1xr{MZH^s?z?4r*j4}RC zK^Ek(2TG^f0BycaU_4)+Js?8&bpytJ%l=J&n+QuFV|ArS+u`0__^G<#)Drwq9-I}F z2OsxN9CR~X?U{%&e;^2l1}0MAwHKIi1>z2`1OI|>`Q{hCqwv?bfQWkO57d9AXLxEy zVXiFM2rot7EP7RLoWVy%{UCNwbY^3@K4LTJ4z?2|iv41ikybBd-w{THOA9uwra=Pc zp4-iQs?Q~XaBp)9Dok68?GreMEAUn^{DMCYWfn1k>4v3JN89hfVt!f-FgTVjxOqWq zx;>(moSX)19om!FMGN#1?~T)zromk^`FmjSX;Yy0!A?N`G8$F^ojD$apV$Sgl5PR5 zq8fne@KMZEz0C_mQ0#h9iEzi}cP+_L@Emr39M>tLRxw`YZSjuL$@K$5yq^~VwfaOV z3#Eyp6yB2=M!)R~Ok5rhRNh=c{1^^2A20=+JuYE6+?EYwUyJV4A?`svo7IEoofjf| zZ$*d^)N$Tqe)&)oNBJ@fWc*^0`K%T^u)d#E-Cx2JPMx}8I@9U z)hpI6KZJIbsW>9CF(UzPH$xbmxcqK@nlbjONcx_4!C>(#4`5c4FrR&I{<*N{?DxGS zOJ#I<2EXj1x0q$gbm|6&BO$;*NleCKD$779a?la@Mk0AW)?!R?lnMGWQN?^}rr!Xe z-n&#Zm^QF8H!4M3=_tcEY$casV`!?&&bW(KN&Ivq?9e)j{kZC@?B4j|8w^an(4T(} ze^Q4zE@U5hj6VeQTe9xsovxCFYQ!YF9L7Qnza91#X zQrt6&R%r|wrQDi*Jo&;R)X97EX<;nrV%Qp4?br;;?=Y8uB-nBTc9@Q8EH(NE^jvOW zCfs==P6DgeTmv=@y#;^sJCtN+dvW}Jc#A0@^jo?@$tR3r)#V$f0<#8%8Mc;`sSDvY zOQlR%w?bopQJQ`S5&5~^$j4MlQCH9}H9Y`+1@&`)-V@#d<0janG?`OV;BFcg2XxI3 z1gcNh0X64om4qz};lthUoI?Z1Zq<_L+5K0>EuRSf@pak+x87<11Dq^$NG$iL?fP*qx)0@=u(;g561y^8;`Y)>oFkhi}%b zYGAI-8^+Eq1Qs2(0CxNLI9hbPIPu=$>!YYntNc^g22uQ%FG6ihVu5zUSwZz^@y!CJ zR>K6R#4ejjRb61i!Jy~|FPK`g8O>|E8M;>JKSjr{xfK!WcJv~ac-#;waMuK=4{)|? zA%_y384cL*?pT1AOG*1%7@PY+H%|T>p8B`bp+8y%`-$5A`Hp`n{RbjM-Z7Dc(wEm7d&@{bwNX%&dlP0gG8x-Hvlm?+t7UI_{CzxD(n`tZ}h)Mqw~JkUT1!X**40nat z<>1nI5|wgudOS=S=%^A-nIWd=$3Z5>({H3JnG6Kd$a`;ahz&hs+ zivhZZb^^M0u>yuJdSN&~it0!cJKn>F*wiG<6lOE%7Arq7=vS^5?<|EosG=L!TlCR1 zrIQzNi@lv4N9(AVzahs3eZBZx^=vDcz zN`_77#MEoLhyk(pxhm{Jcei{-(blct;Ns`Q#?3mU0m|RAiAx8M2Ra`pZ&s(dzfzWJ z#di=c3-jSN3#Zsx!n}um`o;-X-PAGO;mYboRqVPL@wHsi+~Z&cdA-YXW&hn+{n0v zy_<7zoPnW}gOeNjYQl9##F>b5kzH|#u|4&qciDS1t)bLzYbt_5ZTf$ju0|ZKMfqZC zAJZ^shgT~f49`k(L$!}j6u4%$d ziRelp%c|Z1?7oh2I=Yq&k>K(bmWf*J83uRB-drPt7^$q0CR4dt1+bPMn^;KQyZ3?y zvUOq0xye46oL=wPgaNLYM>>iwHxx#Vr#2cf+dI`rg=Ye(XVag1WY9{687f?Mb{^P zirC|SL+t2nn0LU6o7LLHz({5yM@B$=uHzSY*$Y{D3_606bCUs zz}nQmdK~UoEotVECG@9O1I>S1%y`yKLz~lZTt{8*V#jGD{9Q|<80;VQ8GH-WNhG}2 zHiF2QZb2doJMS_gu$Ffq(YlUzFo(@E6YW9Q#JRVdTf4 z*zoOg2QgJi?VIoMGm+eV^SLmG%@X`czA6>M{Zgs%0wXsVbAT_M{R-5?VR}QIr26{{ zxHX-{%OOv1*xQIVst#OLRL#$p+wMt1cw-2e&Y^P_Fkp(;Cy|QjO0J4K{~j3c$HQ(a z(x1Q`+{OkNnNF2gl4EQbB$-817kkI;1BUjShH{11)iRFjJLJ@A^$oZ!=XL_tHIQK} zwvGZit{n$-+bCq!ea|75Em8qn$r)c5w7wyvEoF-eI|L-x34Oq*K~qN|xePZ`JQi`r zl}BZwzSuxuU}%Zbr60VDfD9WL zqYp;@;DW@*ASd_f!l3SaDkW$zP+#*N7vRMAV6VzODZpu8QKT~+*euGu!ZOhudj{jk zV{u}01|F-A4yVuH=uR5?+xYcbSgyI&>Mv%`7~(jT6ksulW*uL6>WI{w`1jepucV@B1Mg|Vm^h_-1!8K z&_@G*bsVS}I|4Qh-+$qP7|4}{q&U6^{*wlK8hS|TN;i>r^o0QUHR2FzB&!TTYX?{p z^EW2Lr|_&2dRfzj!=h&7N@f)7!;k< z8`wt%3jkku_4I-M3*QpYrz3xiK>z4(u=}#V?g>;(jrdQm_kPAGxqA=8d#o$>HKl#wS9>>~WgYW|tfxOLl%f8p z(AGBNweV|^%Qn=^9Vyr@XsKAd2;F|!*vuUdST&(0asRRhlLK?c)G-6EZR|ep5m9_wp>yVPOIT5VVAP>*hHa(zFfQ-3I(Np< zOKO}=+r}qu5>V^thpRepRe}9w#*G?_iJGkxTU-DtO;5fWnf(`V{KX?cf3fRbG3+AT zEjRtny**`pBhZY>O9h{{&47!OFCn;B$3tk1M)g^^EhB7zs(y*s27vQ-cYyGVvH}Jw zyYPV0|M^Kl3Vy$oc5);3#gs&or()7B0E9M&UvvqNBX68C_NI?;Kztv;%pYvnhxZ<*8qZq!ljRV*d_)t6OCC_$9>D1gYe*P|q z8*wT|)&d{CppB!sWR)Slw=c9M*Y+{!fy1a(xA}U-t@~PL@18!TIWhlTzaU27vsz$A zd|$|*cC>|Dd=rY^K7SM5nYXBVTA!auHn!;o_n325n0)8_x)kol=TvSgIT>GlL73XH z_)w<>u0Gw2DX1g9mc=H~!R*(hNnm&jT=l1hx>TGFV?o+_MPSmX4r%zG&QQ0xfTCfS zQtVT)c3>7kRn~B425{owZW!;PD>+bAOnm~Z>Mm9atw-);YOd3lqwZS$x2Q)fUS~oB zKXE|*BRZ|bpr0~$EPN^tkgx1@lw{BAgudQF?sI-U=zGV}#ut z+7$Hi$7FZnMDnWl zgMrW$$>vO0o-1<8w^A~$^3fOYQ%${!aMyRupJI8$h&4pNo@)^lwue}vZv{KF!n!@& zR)q?n(>*QFSrq_OYm%^(BB>8k8K+O32P}3N2`o9MLwl&(4uF#5+*b-zjbyGtKIEL_ zl=;BSoirA+4h{u6^-M)M0#DyyBzeObc(qz{3~2gmBp9;AkQhcX`3CIdGW`M2y&XkA zqWf-O_Pq|kIBmVyjh%YJ3`u#-W=Pm381E1^w|@MKcz8--fB0O9}3DxhN0JJXe!noS`HYPav0*7d%g~C^9 zzZTE53;h>v(^6PPTqaW>pZ zudjoBZ0k4?RXz>rR`(Xm4MbQftush=Me^!Q!2IKm_M?DudN zFBB7javPpE-nTQm(&1F|K8*pPOw+|~XLDMfv6Tpn>Ry3}Rv&0?cpm2no8o-|<;xje zB~(Fm_(VR{bSe#e8}+^qB2-PoJn!RP$@$hzaY1$1rE>VT*ZBe6e7*&SJk`@qiqxNi z97nFkIRLFN4?1}XLEXD10K>a0$=~4Fk-LzYBR#aeC9+F4C1=>HQtJaZc{|{B~ z0T$)ay${2}vI{JNNLyf+zDsXQ?@gLiDJm*<#ol{EL9DSwjj_e3QKQD*dyhRDdx_n| z5{*$~jPcR$zGr>&`+rr{RiFv#{IP$n0>JUt)J5~ z4ra~U6KonnpJqG3_9RU`;vI3TwzXwh*(PNMaKS_R1@Nhs< zDQ8c~a0IPs*GX_{l~l;gN+Pa6!>}ybNJ-S#`7zyG-jkeleHTMGEBHu-_)|#wo7MPm zNc>50ZS(nnq9SG}YTvkZ8slj?3bxBC-ht@RQ#YdnTN}ijOsBhsE{p%2QlL|T56D9E zEo+=xQ~?aR+?<<`zmw&fJR}OAfZQJcnDoHZufAQGq;}tX8lE} z8Q3{P6>lmB;ty4E)vb&c@+0?rYwCjcWq+S>$~+f$;5wP1y0xHA*( zz9W7G1{`>bEQ3cZGWK_Pwpg-_dl1g1Zu?t+>8Cq5#JpN$ne^r$TdD{;ol-Op5MIw zz=YQa;Zl&%8rV8BhDGqm_GF#`N80>1A{u)4G?&ZGtt9y}szEB-FS)!p{*D+y!rBGE zt>^?)8xVXstBoLvDPTbDgE*$BYnv;c$it$&%EZ#z7NCLxg_a$X%dB$vu#%b7X8wJQ zkshrms)L^n7wM!JZ@*6aNX~Je#9sG_(=b5TP#*p_*v*hBapl;C3Fw0X-c8`+_SYVu z@9v{OgJB(R&zEoO!EDMmu%Ld;+CyE6E)Y|E=lw@THuAmHD&nVi0hY{phoV<^tz{hd z*?g-Hck1-mVVWluzO0ft|FI+@{}2wY}N!I6m@^)S%A-D2t~6*ncxH{as|bnfR5)V#wfCxi_=5d41! zNz*&rhgaq%q2(7i41{G+7Yf9N6W?NQH*GEB7cPE^0pG=ef+%pB@#?y;?w4ePFbHQ! za5VITRCkf0-#uk%?PmwU&DDJ+P(PXjR{e$d^zisV#!QMnOpC?aas0_`!Q5&Sdv zn#}2@rBco=YVd_76M?I|#D7T0{Ky-!U34Za;G8%y&W_%(+J>8uR_AF)9|%Mt-JJ_3vbd zcADh~<#_Wk%&yJ7kcRtkN@pM6OF;h&7f9{I_udGj8~egsT%sHGFj0n!^ODvrLWpLa z+5lVKsRKG(oDK}Fp^}sH1M{l2uTcn>;={QL88;#eqo_?;}j|r zD!lx&fCLKgcmZcG{~tskAI~Hg66!F^;d(EGml z2}26vI)00;L+dB9k-aaGIRZzp{2}8I09PWiu*G`zP}8UkKaU;s@;PDiHH@cVF3rR%3QGDlpay5|s{l7XvNAZaeRO*GbP63)GW zIprP)P^V32II8G_I#AArb`w*HJa^uhSJZO>d}@=)i{5{12Fh39BRKqy-BZJy#^vP0 z;um3X5m7F*I ziVkt_m;e{|Uc-R$F=DN>&?X5%4Q_KRxI~eT!@~FgravAju!tY6MV|FbC+{dI}0qCA$W*t<@Qzw<(9p;t5Pv z*ZsOVwKz#JWGbx6@m9b}^Zvm4s~sTWoKn~YZZVufXpc3B<)%=+yN$VVvYDx`R)Ik`(ljG!naOJCAfU>rGxzMjr#VZ1N4zbMp?y_pV+HOI&MzTAB|1 zh|Za;a)VP~y>YduC}0b0wTY3afaCDFFgw30La3liuVI$2A}y&*jshKjo(%N*heL_C zSuWbhUJAfR3vwyE%~>Yj>cu&Dxyx*6@u?QGid=VhxRoW7th|1^MW0MugO8tr<}%ZmAJg6Et97Q^!g441g5r|@f8 zDZDOqLOM1jkI@2Zcam!UUAAU3al=W+&D&wNIx_`Wm%zSkAEBa4`$VAQ7Sf{nEq30J zu2(8fUZ7_8>fspI=QJ(p-*OrgEo%oX{JR9(oRw;-WaCcvqjy}(P!ZMgufuTcl3oN< z_am(te#`}`^6G{E6om`48P}bxX1qghMos+ZBP@*>FaRpLly5 zs+GNe5I3Q6^VTqwVhtneDlNztAU(LHydK0jk!!`B0Y+%#xcLO^#Vcwn#R|9=pJ^>nzI-ALTp15?7wox-Ac{j`BcgBu+kMis8Z?EI_(WA-ya=mm zDDpvnBbCLwDmmt!@5D566Ip-fMGmwCj^e{YP(&BH>5PV?Vhc@U)zyvTvE^!0owOc7bxPLXeW$;1sSotazyTC9>7^B@Wt%UbfR(Kt1;WKARf68B&(9}wMzz}qONp%o z;~$I!s>4;HyLCK(i*5D$%iyU0E0g*8kNyNpr>)C@4laJcO3zr_w&ZY!Svhv51c{&d z&;RM&CG*onV)aQ1jFm~xx*|YY1PQxm96M}`V>c|#P3+Pe=GYyJm`7YQ*Uz(tET1cI zwu&P+jJiOXpgr?7uu&R1R;toyfRk}i7xp7=llvXN4@6b{*Na`&u%EC2ijg+1Lp_T)Oy-Tbg9ynaDX*qV*l1XNDo zdVtNCm!HdMcc0zo@ct5rA-u&>rWobW2~LV7;?acC>_ZsgD@uN#k5||$_yndjBDNk) zoUuY=A%DmYY`%3I(A$?H&)+W=m^^kn2eG?cpLN~E3J3jG4vg`hVk}yf6^5-S-)Q(p z^#ix^Ps(je;%h$gh0Gxoj{*fUZ|AYy;pV*53aG9T0!lsnB2Q9g-Ux+T&c!B3BWutM z2F@0TRvm+XrDT~Ci>~vF_#WQTUD@XeksPzq!r9x+Pv2pLb{=wA+WnjiEIHqr`vq;B z*kkH1djVai;<$&#eVBZT zIGP+WROl-aH*--GrzUIxd@It4hd*?)$DkK6SM`q;QaQwu(g*R!A4GytRYEmPIpvK~ znqaZFa>F?|*SFdXY;Yo#xoB83{nRGRF3@E<(oA^C`7f+#_l4$IUQN=_Jhn2rMy}o< zQz@l@Gp{~}(!XWg@|hk8RozqYOKs3YSZb#`0^^U(1{RA`WeyE44C`)dyi5WO(qt7p z^#wlzgGY%OV|23ySVm_(1|}~d?R6c@F>Ep2(F1gKZS#LbTs4 zxWvVAGzj`NTjUjH$5wN3?gLa0dIOSULhA7ouz-q{?cbbj zlhrtN)a-5&=+*H+FMXcKVL^0*f5Z38f#I*$66;3>4hZs7#xD<=_Z*qbn@Y_9X4(i)71Ifg2gh_1Gd<t-p3KjsboTDqp(jugG*4$TqL^8C*-Q+KJ&qCa7ou!w6mdU0=; z;;t>sCC((^UiVeN+JFrZyS1r*A-r~d0U0Uw?kHxR`U7j6vw&??&^in_q&EerI`s!q ztPGzj3If&|Ro?L4*UU{#5#1o}*;NkqMA(WxY$DqV!MnPBZ2ag|*1!%Cr-3RLcjjd1 zDU(^_Z6){b&}PP{pCSun>aqydlpBKyh-RWQ>k2>XVi7w{eRbc} zq#R)O7BZD8X6Jts^a`!7@izs!<*z99GeeGv`ReRG{pY2@Y)p^wr;#~-Wg z2FOpFcG(EvvXb-|Igq+d)b9(xD4D(9!dzfV>Mxt5g^PcrAl-~{JL%y~S}Fd+kG-O7 zSs;42Y~lhqYJBJw+9OW5MMbzWvjoLhI8JQe6$xoRZ3Jb7)|A4fbx5mw!8-@Bf3*QG=l_ZGHY7y6JUBS?@4fN;UG$y zP|1>ZlurX%t!)KVm#>F7#XnBb&4XP&fCEzck&P%-&X&tCYetH}+#_d>QS|vP42G+2 zVlvCb;|n>XZowhH^fcPe?&-fUYxh;7rg&q-^#Mzpv}OcEkHusTL|z4npGV3+H!H0X z%8^tUy&(#Imc|G7?8eWB#losRu=KZ=Ko5Bfpf2Z{xoE)1mg8X^QrI6jEY$%xp`S0* z=Yf*v@5f>Dy0KA&OL_DjwwxSxHJYM`pIm~*&>Wxx_Rs24D0%__!FJTQPD+7vd1)4C|I9y{j+OE+&4-`m3hG|Hd=JB~?%HHvz2+mMTD)X;C_OF#EqgTsw&wM2Xo7hw zuy(F?=f=5y4(lHH-CAJKW_EmX%1UF$WbLKCQMW<|^uNFs4DpNuMvRVUDoqD(7FD#; zk{eWFrQUjC{{IMc&|P+(<1DJ@n#+gSgdrD=bDF5L$T&)M5RK6P6zR||bUE={C!j%g zPUc`ICBI$Gc+?()LZFt0*gk^AYnzZ- z{$I=lEwi6um;TOZ7G{G{TvOaIISQfL8d8AuAwL2`)B}Kq!`Fc+@4tpHD+>A=X6xv! zXx@>96yNQ+IesqYa+Xrg@Q<+M zi?x-~MpIy}ep~~zTSB>~nMUr&*>f0&?{kj1z#KT$85r4`Nz}AGgU{%opD*S>-fWAj z4EISFJ^G4e7`-7fPVT-dtezQKsv-@FKO*h^H_o47@9-CZot6XCVtv z9EB(Dt+X?6I83csTwzuKVuWgw=pB)xOF1G zdI-f!7cZmaY?~#DS8y$hBX-yU1hZ%~fwfGY&B06&eGY*YfAY~T8|MVLxULckaQLdd zutde+5>RyTiSK|(;-PPg@VCs;XUi}+1=(Z*Ey~k?`A@Qu$m9_xVU8Y25n@qIPO;m& z5yO+a+cKCvYYzgw_OrO&_ejCIzJFVqP!!@HJkxVG+_J>-hT_X_nUSUIcK*~R`y%z& zohwjWrTiC!Dit3r*!@Nc=GZkG=sJodTM%|1s4M{U?JNbpr#wy;cY z&U{Ex^Hzvh?bdbh(O>!ewYhx3_oC(VwjYLbmy10R(kl8sN*-|U%iFYFf|#z1-5|J%s%Si z0AR8rmHzSV$R?O83BCPA}E%fzKI{1`f{TxNC2?pxI+95^# z8RIK*p#>~i{EZEwJyQ&xC8^#;dipQOCCqm*oMLaR z1&x*AbcnswA!-cD?y)l%%9lQn?UudZ5GUG7avE`lI6a+x z00j;R8;zEMju$YS3k_MDhX8BeYz2DUOK0=@%)(;0A6S!?B`f2C(V{s~lcP zozJkvllyVGu8Ux)`=$Yy^H*P_tNd;|%#8=I_gxnprEJrlZ6z8wB9Dr1l7;~+(l-Jv z*JhL2dIZ93<#iC4`OPk90nJ;CLxGw<4L9#*t_=cy_~g4dQs2R zmA{Aut#)n{7zR8RL2{i(z(!xq=;)a?cjlyn&NJ47SO~fzFHO!^Qje?m)|^w?K8f zb;eDpPOHCy)h}ugFu1M&NwWOaZCAst>sa{T>@nYkx%%C;L#sv9cY&S|+i5rFv?u2?0Zyo*3YB!4ZJxSh4Hkboty}>{9(w;6TzoRc4xn#bM_A0yFo(DuN?<~$1KS~J z3WZ6oCtJMboH0}a+t}}d#dl;67OG(lRXA@vo6A}z?qUC0cf~;p8QyPng(cvcC(zKI zR9m_@7TD(kTg-DvU#9Q*p$6z>a~>EKeiZ0Ghr&iVk2M(GkK8(T(3e2{O>ZMb2l)mF zVla%z$AJ|5NpU8uTvv%i5McEf82#)G+_Q!*gE{NhDZrAaWxz50uK+8OI8rHoA(l5H ze?$a47imU2gz*!XNI_tGCk8!7Y9Ue;HcBu)le78StHBStK)_{4}=d4#`E z^ip@+hgY+9zo3mvWRGBWlYU{;0L6E(MBXcr<0~DkSjL=%D&Z?7^lk&SHcV=ExFtT~ zjS8ZKi?DR)j`bK0 zOnSnuxBIjT=#n`PXn`$WB+%OH9@1?8hSX@eH<|rpDT&#grnKQd!t(h^jDo@ECL>ss z_ZqNRbW6^a(T7V0!!0;;8hyIh!6&ihQl^~UnsqHL&jspcom5&`aTbg{M8nt|9xA;1 zJ3LyQa{`WNv;a81-YBWs{|!snQcIwPoFZk|zT3cY-X_4-j}I|%>rvUHmd0Lxib6Op zB00IgT`%6K3~hH`xF($=ofJAH0qd<+GG1`d7yM~qx*k)HsaE?i=(x{bDMHKRe?_>s zC&!s^=8_k{_VcJ~1UyLqdj?C`-^2ANuY19%_{cyC3b&F-SVAunv&|j?mHE^ft?rj# z__2GnlH+6IJ2qC zIpe8sIcdq7>aH5h*g2*maK3e{>&$~AF7J0k=mq_g z19$lY7F_W|39xn0k3frdV_DT^Roj5B-}s3wPThB7(S;G`8<=j~_5VE`nh@o3{ASokXkwr0Q}ELTuScuv z+D&i7m32&{1XH6d$uTN;+t|7Q;{tC0n|?e5%$1q|i#mw40#%Bb8>>3p7A;#ksRR5p zLo9_YxI!%PhTJeN-Np?j0mPf|3TlwRGAq_ty;7u;Yq<)3Wp|nbt#^z-iB!j)(LXJN z628)#aAFznJG?Y6*gn9_TT0XbXQRFc!k#jeGc{k zR^6VCNlV93%R~|C(@5`bFa3f3eb)oy-ryr~+$eY;5SGB+bZV8}1z3NoCpyFN+0QTs zjB5l8dTLr4VynH2;iz7n0rY!-#z#+FVL18T zBw*dt6Trs(NbjzPKQM#HaXK)pg(cZKd-(=XO3uFH_&na}mm?56u|KwE#tC1?fQ-#7 zB#L{g(;n3_2-_uk6=?t{(P_$WVcAIBdNfvfutW(s5h!jJVq^+p;I^#L41c^lCAigTq=hsk11Y9s`o@lY?=emVlxRm<_)zU3&l`i z-Io)AUQ@MbMDJfiVUBBCBMO!|HWIc1T?06$sGtaDowy}A?2K6Cj#=-7x$3B$Y(f9E zyKqb+K`mBrnXg8M!h4X)Z82gjI}re+%f~#kNpelFl_v znMmk`=|F?odw%a=aB`7ZY9z-ez2WBkj*R6N!9!({YsP?p69=>To3G9UW`)c)wq$nn zRTjQ#doF)G>?l{7{(1xBL4~FqBc{p&S5!blmb~9&p&28qdZEcmIwX*A+~;oQ7(ri) zP2EMqW_yOBvPI26f)IVTO_5sNLNTc3JADs}Vu%NQoOS#fz*^F@-Umkylg2>bvBkiU zA6WJ9bH;T9)e=T>8pV!iYU&G|tak%yV$O-|d~#H=T25E{nGU-3JGX z)g$d4Oy(eTXKxi*`z2x4g9pL~~U z+}y+?NQ&>l`sU1G-E_+Z@dO9{jMfcUA=cZ1#iiygCtiYoRm+vYA!jte;!honomR0i z3|710i-8V(IRg3DgaYHV6{vHvIaF%onlrQ?+{TTg98#yBGDh`#!McWa+>Y!LU$w%5 zW_?&MJQ$fb!4>Xy4dfVo3eB;LU&+jH8)a=JEdJF`fti~7Y=Wx9#-^E4-kSypUC(WM z;oC6SD;uncBe{V_uft^|ZTU)T6 zv-v&nuKSFoaPdy>0Y%RD7Zx!tA&05-Olu4$w~voNralWM85>16db5Hr#jw?aR&7M+ zgqOKoKTW7Nil=tA574lh$IY08$0TD=5!_EZj{yTrX3;BX1Xju*!1lO`YFNHyb534Q zu65j22I5oK?0}B!I$A6Iv#wh*R(0P|vQKrGVLe}ffVElX7>wKwP831({=MK9Jo>n> zg}4aDYI@xTVsh+{B!1<+V5ZS{ZWsROs(<20XIR_P%oGwKBMaIx$a70Gba&ZZ7le0h zm;%%%t^98`l0I1wc6KZUNr_uv-20FZg(_9s~?H`~xuf-+Abs$kSVikAK3+Tyx&l$k(-t z^S?#_<^1+QxA=8H-Opl#ipd-UOV(u@VC&`XAQ#QubeKKzqk!RAaX`a5GMQu{F=)}M zC>A!<1#5UQXIjEVetIr2?fwa1#cL{3R-1MM-N&B;>SUa}rH`FtW}=0n^%c`_ulY_i zwx;pVM)L5`-iC8n825UUhm?G72OE2cH+)R*`Pts>oRFk0r|%-LKI}R$aV-m&*R2Pz z^~>!*zxkbj5x2fF^^>wZykXAiq6Rkec?;#+`Pw5S87S__9M_fOfjX*2&ca}Ib1cO{ zg)haQataw#bs1|5IQnHb4kbV!$#eEHc7E)A<`nM|C2HZ^&Cyt!Yhq`_dlm5OO=CnA#YWD7Wx#yH4z{i581jU&Ospa6za(p^aX$t!_ny-c zmdt}&fsLk9fCf%DX50uRGsXQ)HO%1^#g)ra$}nx8OCUUq3pC&FC5q;~`NscN&jLb? znsoe1v22&Qi3cX6itH)`Z|Bexyfd;)oL141ExfK37<(x61G_ZLwvw0Eg>M=uYm2 zgiMV17H!%fjdq)oAkJF<_5|k6Ls?FBoVUnBJ)?keJV!2pV?aGIZ&fj{OwYpmo-0AI z!hO0KyEuICk^dxCbmh+o5Z!tdhOb!v+2Hj;oGyYkEUt!9XHVm;JRYT@i?3{fN92hZ zOm#A>hx7H1!gibB)Oq>`(7yFQ9;Ays<#2Iz*k#NrE6D-YoY4olDB)^54Ppw{sK}XT z_Uc8zv}HyAl||`E6{6DlAkyi*aNU0|0Y(jA|4O-ko`-jSUM$omO+hslNWpj7;u-Yw zk1c^;(1D+@Qv++_0&EaKn#NKXwpQH(TE^4>Jr_f$qc;>#MDVMSeQhkKGVHX`V2$s( z;h}0gh(DU#6(XGG)$#x9s1OzP;*fB$VO!Yo8wM=AN`7zLr5{ie>x-ZbD9q|$_F68uv&Pue5xpxI-!QrnL&vyLRf&8364=fbPZFWX zPhDWKFy47z<24zUCe`nNu9kz0ds9BR?i-UwJIa{o&5pp-(A~hG6QZ}Hmt6!Wb{wjO zQq=PWdB+igxB3M(~}$ zJ8T0-?1fXrx)Hzx@jzk5kvA|~?0g6;G93df`^2)S6op96?ZKM=`p$hFA7o-$e)4!e zkr2>mE2t%AbSZ*&6`SIjb4fGJPxWUqZ>TG{Xvl+pq10tUzWSH3V|%7zl4|AA8cv00 zInFxa1_8*x#z#ckdgoGjg{>zuMYL|jC)pYU+bB4vYhJ#x0n7wog zX`n7)Xx1045$F5|%sG=eHtC+Fw|JY&i1{vf>?KK6#flRr>otZF1ub52NOI^hesxAxIA2%Nc&v$0|e4s5>bHV~hr zpv|)%o`$)_r?Y5Jb+069BH3O*@IRs-97&lr(6`&gRdfSN*Kih(M1dobeU zOtptkZd<|6S?w8d^p!-@PhUzgpPGvaS;`fbvcxCS)Jv)oE0KYg-@qkwfHOvt@b3L! zZoZ5(J>mW&n608BL`$nbToAvm=3JgfL;XzZNa$IJ225{Q40F?^=@=00{yu07|KbFD zQ{H1bu;0G^2sY-^8JL|Th5#!De`4WmeAoh$>{LK)5j)POrwLhDmG!qsM%CpXIO=*t zVVWf+_%+B>dMTmIO88B(FN9xzhZJNR_$T`)#f^nZ-$z|EuVw(4ynH&T+p=Z*ti36qmb(wmJo~ zrPorR)w3WL*L49_JGhgTKleObwO=!|#|sYqp7mrPgZ4Lw;@Ayh+LG`TCzl{(^<^Z& z2s|+fe)@r}J?8em81&s;?{h9OA`C9_)!cbU%5hic!di%fb9j1dUjYU!ulD2M5^{r$ zFJH76!C*+7n+8m}fL#cgR9L|Aq2T6k#J^H;irBs%Tf%w6W}x0rENU5Ed4i)79>;Q9 zHE*snvQ`!U3u028;u=d2aYwJyn>@tui6rYA?AOXHR8n;2cvxbd4FhHl<}Hg>?n2(w zIj`ZWjr~5chvJTxHLNAiRZ|emdrlmCK)==Z(CD09#QTbP48`vVg`xS*=3>uEziJKlf|a# z;8hKDzI%}U?R_r>7Tw&_jI7(SoN8_2I?`$S8g`T8Kj%4uc%A25RVT3*3{PfbEKBii zfO%}^2{1eE_JrB_V-@be#HYT4<{697^j;2}y=Trdv$n>8i{1x}&H=kxF|#1QNAPWa z<`b~Id;qX|#h)OnCi!2$>=8n$^ZafFgNDR1q1fYrz;av(jd3cN7?ipjs2EA6)}Cb9 zy#9Fs^pBc=mgVT(dm*%E=$x26M7Y7okY^e3ef$ojoQ|8nNQd=%Se5)(mfdo7D6n=j>BD`)CF-iFlc>9ub*u-sI{m_>(C~HT zaEVwf1ICF%|65Z224mWI<~=%mv531={Z>A?scZVD!MqI9Ni~?V=^Lp7d1lqJU0^p8-?X+yzcJ z;{yuw-kS}x-bTdJ*CfNDXmNq@@|S&$UB_+G*z#j=^#1)89d*@S;_C{T)H}8toNew0 z13h0ZVvwDr`SfW?z&7HUFP$~tUJUSm4wqDmBf!EA%jtX61L*Q&2Vnfik4!l8Yq7Le zaQqntlj03*U2A*;4auUp1MF2t$>u(MDlo`vG|+JIHrqR;-+dlQRetv?+`8Das&19F zKuyq3BzWDZROkqJG}md^&y>`$M@3_5#-`VNG# zc9>v(?Glzxd)7jvtsgvx$t6Y4=Z~f1E%;fBH-@~ww=t&ei>)8{;Y}>~1&`x3@)l3Q zm=M-~=E6y{y9DU7jH9C8^XVell)`k_6jT3Zuz;P^l{)GJiRgbt{Wi9Epha*4zsI72}U%DQcdqn8Qs&|x1DSveZ`eK(8 zY`&6T?4l!Nm%Q7u2OYiX_+_hfx9_eI#Kyc6Kk)Ol>;taBVT?5>e;U1P|E{&Ve^M8P>y zOI^t;6x;7~b2^n6IzkFmEv*L^YL2XdcfdXs&=917MD1OC1SM5TtKp*V0ZOJ+c6B%I z*|oWgIPNoe+y`Hs=C3s4Z8q{zEV;s-tfRUx8|eSt0bur>ETCn{2*l|$)EeeS8unIT zn{6m}Wb0CxBZo4d#3`gBXA-f&qaNwQS5$L;Q1+ovbKMQlT#cZ4ob#$8!v)il>=xAm5SeO&q zvhflw^+0kiUEjm(ZE9Rv(`S-T4arqduH}9_z#jFcH}kd|vmdKdanGB<+u|IB*Vqeh zO}(WNKmG)|RwrIkn%Iz&5j3hNQ_Kx}g2q)oT0lj)pZLzpxDZ4Q9oB0ET76R6lQ6qgTmuIEEr#*PKW3OKWoEWg{C6yp;;aoLIfRg$ z-3L~(eBtMh!xGc>Cb}Yi8Re>WGVghl!aPZ5vCaKtq3G9Y1V$Sj+6=e;rFo=a$rh!J zGg-mi!vs4Pt>Rx^9bDXLC(N$hsu{x#H>u#q=UoQebX{VNQuDX}KGRC-{s|tAQ}zPg zYaTPuuel;n$atZvp$I$LnOVRiTkQwT-Te(vbLkhL&$KQ;T_ZBA-U58tNDAu0t4iYf zEaT@UL;h_HpWue4EP}G6jz436^Fpyzm%oIM%T+Gx7JS_l=H|Fd21g^_^aFM~GMhoY zN|x{^{0@Cm2eF8S->`0FJv*SiRh8@%!{#ED364Mh?@uc8`hXJ1-?5D?td}zdkF^hw zr@vVkoPt(gqf>BC9AQHLhWoP945uceAjvC9sX3vXlvG-dg1NQ}hv~YpSAaINzGB4a zCjPL*s;aSkF2z-|IPp`j0o|7@Fyp*Yzc7j6^eY)Du+OiwL|C%9qBCkJYSgc9)6Jt0 z6HR_481wux$69ZPaiBY&*N@V zs5=AMiZAj#hmAzj#JA*VmOiouSa8S^=;SWL;+NLurIFynb}&G~)&aoWj%=+R7cCm?#%pBo8JUASCw_-}ccXvY{i?&_`bE`?aG1hnN^%ubBS%<>8X=9rTWat@mSC$_Q%7Q8C}I_~+45rW1{fhBD3R@6B1!*GR{ zg(p_=?4+1OjF7cH1!%Rf84D2L=MD_tO`&2?{~(iD;IQIW88j3OZ!kRQXN4Znbl^OEg5Gg&YXq=T9Rzw$CMoM`@!c;6fbd&8 zWu!h9g|2uq8IGz;D}cp!?gC5Ocvn(YT=FK!ih{L5yHOl{hDv$s z1+#cFX4BVpz?`|8fR3+f(3h@OPB?ralk!@ z0ncB%4wmAe z=?vy$wU&cm((^00JTAp52fg7qf*(PsFPXz#o8Su!3C?3F!bXWfH+)qD+$>&pC;saR z%vB!+Htd=N8fnNV2D!U@Uj&zclVWT!lvScy(Y7PF2bgw!Aacji?B>R0TBom0eBSPI zdnQgpq%XEJZ7;R&HU|mxUu%mOeTM8HNu<1^OJ)ffKL5Z#sL93KvmjKJKT+0oJ4ex~ zitF~@3cuT{SAtD~7m@^%ZY=_)`8@+>cqf_3hkbFPX)P*3|tD zOWmZ4K=+=_fkC&If7bJ(GK?okbS;~kH^Ex76u5jfSFutnc{^v*zT|^WBPgw=w&F7gP>iGqXhdt~B1yo#^i_BUn75s4m+kUEBqnSqaI@B`q zOvnTQc6vg}%Fk7CQ3-q|liD32_jsVWlTKKw|cZJz4#g9q34{c_SVnd%^zf2}W z*X(067p+V|1GRe8Rb-R#B*<9!e(!Wx*9$u|2|*$^q{-}YUv<=8jK&F>B}^$T4n9K zrU>J5h%}|UeFBBbiauy+kn$Rwkf>Fole{{-i`^`EduY}&P#YB+r{y=?BD8P%X@eaSn0ySxPDrg8Ft|%y<0ystOrVwdLhfBT_&Ia*+W|*Nam?u zd2B@!`kox)Ewz!rZO1EYMrfLXJBiGN=O zPIf&Cy};%fH_awa@(|5n*Z4Ok8}PeW>X)}*Lw7r$fKIYLpAGX6+`8n7Gk%RQ=_>XY zfekOja*93F_0l9x3WNv7!%;HH#mK%q_{;uN*d#gU(dC_Xg0W?by5 znsR_SCtW>>{;ah93vsmKjHXA`L6|*lzNEMJ!t<~MM~H5cAK&;{rnvo*3}?SbtZsOm z4rrLN2@g^$CG8;sujlgcZmjeTS$^(X| zB7ugwShD5KeCX`)yBy%s%rr&{ z%c+{0;LY zxBg6C>B!NbYz_NIl}7$;aepMxaxh0X$55u1xUQ`XKNhD4e(tv%=ee-weYpWx*mN!A zaQEq952KrZqVAh!W(+ijtEm>OS&268*i$GbVZeLvoi!}E*B@2*Aqvl=VLetw&1oN&I zTBP5BBd{dBdj(AC#qlcVy782=)=g-vmr`Y^3E0+SFz5c_e5%&YcrMg$&K|MZz)DkK z1Ur4rhG;e)3Rk$~+msT$;76*7h5x(+PF_aRQb+aXRpXi`NCfNEWv?hrEYC2QYO0v< zbXm3+mZ6(YbGyU!?0fFx=w`TJc^KzqaX<2gTkzH&HP3aLczU7q$Yg@t~c0cW1b{FTVSK z$C$!S&X=h$wjK*1p>+vv59OhD+!qKIxvv{`e6v&~xZ7CW?k7B}iIgP$*FV88!e0S2 z99T{rDANpw5l}-*7Sv%5dmyG#2^_I(1~70z5-{{4nLMia6@%s;=U8ai$~wiLA)%+V zpcE=1vNBxT!UR~vzB zpML{K_bF3kpii%OzOm$UAOM4-ysg-1$%s40v@Gk{-#*tT0fWc5a*V=tWs%ZRg@cue zQeg&_wtgzt+v2Z~D-s<@o!0gZX!*u|tfKGAUx0z9K7ZM0u&*{VamRBD^H`Doy`F<; zTU=sw!tW0NMm}E07y1HCFdQ5I@MX%YCh*BQeiMl{^HIsdp`1*dCbRO8tUKID%J@cxD%TNkD%Ge;w zVeMW~DyaSUAV04kDLi%94M0DRY5*pQFLV@T7=>h#Q;&BP7tR+8KuqeQu52G1mhHfr zm&|4VSgoVn(~8el0*-9preWyQKse>jkVC~UIA8twsR!0pDta6QoxVvK3*a>H1TcEp zNpww$*>Gl;mr8k2KAA(9_N-{|lP6(z{FXf69_}Z)Hn`_Z*bJwLovnWdT1SirItPoo z3>yh%<-Q5_1+mRsb&q=!>NV7A{2~VZkJzoS`qtkJ9gYJTCGg6MuK+e~)`qRmMNh{&uKYtyVM1Bp+c-RdtfcxZEV=-e1KCFT{ zWXcer;RiNi(|L1%*}m+E@t4FJS@v_3(^=B>@A`Q##T>oJ}LJ+#b~$QLlfs&Sv;gDlZ8p6 zF7=0VV4y89;>V7_sJ84Y`8T54hVj2}K{jQzA9#Im>pJ+1uJ=O4yu^9y@Ql}takdYJ z$efl#{vY9+momcCQ&OC7jj+L1lv+vn1{fsbu!urg&FM!y_9v{RCSQ4=H}t$m$VLhd zV4x5)QbSj4iYTPuEXvZ{mOlUsZd>Bk*27YR>tfh)2C9k6`Pqr>!)Y+P&watZ^7}dw z^^<~2-ZIIUmg^~nvST|SL}}47tcJDPvkvB=_3we|-Y1ZYUeky2E%MJ7TN>~XUB1sKPae6iWtk|&2XUS=KVmgGO->SfAj+^3H9MZVTR6-xs7z38kfvYPOEcb zq1-;)hsC{904+X^=D`yE{02}ypY5GexeS;Sc^b>~mKUFHLct6_FdbIKR zmhipLxTGFEcs}>{p9@iUc@rX3UDN~H%=TvF4I-z|nJ%yxv~%zoc>cYs%)DU2dp1v5 z)9vu_Dk=ra7iH2Xe$Q%r1ZO#q#85l=CORh*H!XsV?oS4~+-9$Yb?gbb8+oA0%o?m@ z_an!b#^GYWOzmcZrgZ=MA=C0`IS@X&B~Q(`B@{J4E;9J(3V+gT(b=eN<9g6SL64si zuwCJIK)Z)y=n*_;fByjX_vI)y$(0@8x#}T{>@S|oG4wr; zt;z)BV;9ZlehdHNU+(h_$-?yuVJV$L;?dmYoopc8UxXSU@6r{HvBz`K>j?+g9eL4D zf$AA}LK-{Qd*;BRy`Tj8g|SYVlMb_CoN(DB`0;Ok-Iy>=D{}Cft?-Iu#y55OZ#=x+-Z3J*j7BV-tL{BGVyf#cygB$3dKMR!+i z`5Z5DbsL#W6Dh5d^1@;>MV0DePjXE5L_k|$9~=urpDvI2-oplBl|Cd#mdmDOO zLo24f=kzJ_5;piifg^F$nJc?nI7I^hu%MuPxpq0 zlQ4#lv4RMmY>@+VM8y&ct+eOuVNom=3ac`dBr*2rF|=wz|D#N#)74lw)tc@EHrzXa z+PS!FMxjD>)zUj6F`GZ~i*r9Sjl%%ZG@7ft+?Nv>kIj{cs{3vQMs$OBII7!g8M{VZ zir1>dpQNkdmMX@~Kg1L^d??jDw>!OnDHWf1j<5Bv^I@qQEmkreZVn& zAZ##4hnPkyfEn*7$J*3wF>NkccQ(MREnI>qK7Y;u`io71z%GN}9z5k7FmfkVG3&24 z0&9oY0Cg2}%oIu-NxsaHFLBm$NT}*%Bs|}*oq&D~B&hT(vaQ1z%l|$Zan0O;98x=X zWsx#kO@nvowy%KYj%2eTdN!jvF#r64qQ_fDi%V7C#qL z%C4&Q?U zgWzgc)diV{*^sqk*B2p{qm;MQpHjNu*l3_-Y#30pp)*h)+(az$85%s8rA3DER7S*4 z91$Y7{A}tYrOszhC|a|ylP}4!au645%Sm(Y`R8y_kJ}33cY9+Evv$*E(m1Zg_I-RD zcE4{Zlfr+U4eS*74|ek$-jkmKKaq&6|D{@G`(Ojm!DKryu0I<-=PWaC{`9t}u-|?j zWeF^1TO^uHU@4UkICQ%{F9AlTE(XRu^hBMtTPiWGmUU|^zE`bvLb>G9I>tzfVsVU4TUJ`8rYz@M)tB=P@8+FQp*b$oBY$tEk=Bt(d9lHJHA8{4?My9)tA z2wDj46i@I#u>z%7X^~Q(&;rFuaVu7!SbDmunxNyyPc(BB5sH^}y@}8XT^%lo#oByQfRqs&5 zm_9EM9`}Ad)rU^jBvB{`-2CCsH=@w>MBH8}kmO;8#ub8SEN3KNdJ%hM+tARUX ztq;&{fVeZ;@eYSH`I>xS+|{1I(p_X>%UiG!f_i^dL!5ZNc?0yWJ&%a!#_=+fK&gK4 zY_+4KqXYgN9h{_yCBq;ea_r7S3KV(DWNuJiTast}f)4`|XQ|7z&%F1U{s-D5pFeuuVE$hdwc+rA<80q~PhJ<#S| zILM%NqI&4DL{!$lQ%jOR_3bmh#mf2uDP*X+Y7Q?xpcB)vxu&6UhtO6@6`k;;s@1nl z6sl+?WT$e#90b;`uY~5*KJO^@7gtLi*KS6bW|22AuV-gqz%Nt|jI;cK;oFCS+Bui! z!|k@1da0+a=nSXHnC-)E1AR4oD!AnsVA;7akkM^WDcsQx_TsGxTS&*OUn#Nc3U10` zalUZ^Deq*n8|Z$6A}?(V1zhg=?!dCcWe|V95wH)S1co{UkH^915p)>j^1FKz?tl&H>IayT`VsWhHL5f+v%#+*o(G&6IUY2rSn9PPY? z1ykQ(_tN{P0pt7310fXMS_3U=NZg6ts4xd_dIOC9xhDj2?3jDhr;DCnH;ustBsC%` zm-hi?|G5QNfunRf+zsOjw~M%D9Ms48P87vE`!hjW{aI90Dml$zp*-&!ncP$w;QR+X z-r~OW`1~uNN_sgy^o6hjug5YUye@;8*G_T)rX;Zw7u;bkMMo=uCAwMQ9(4#C)^Z|i z;yQ0dGh=D1#FD+|c!kUccaM0p@w91twa3JLK>sN{X(Q1NnhrXGY^k=Zzi<$apBB#ikjj6=@EIqA5l%Y7TvG?v6r@)8*2M#UNz=lcuOxklDgTL)umcj681-p@a zAYUS%_TROY39ULar~FnOFv3Azt#97b5VCb1ULUe|4HCy@EM^kL?o2`aR>kB=mp?Hl zg~ZPMl5z5;%On;qG@3V0+>jmj;TD(iM>-&Jazi_&N_Cn5PsUd)bk@*?C|b@mvAWgi zmlOo)?LP%7W^DzQ-aiix){6TSOY7FjY%Qd5r`}?Y&{e(((E%6k{ig&(>QiKv*-}hv zf9wK`-Ln+237tnZH(hN{CwOhHu=~4g7zOlL5CD{aiyg#6NcnqC!tlBc`sv_>MTd2qBU%Ex1TmLNUQDj zfrD_zIIJ}KA;Sd$1AX5jQRo&5ShpL;X`=pMkCzf2)*~?Y?#Jj{7OQ=jOU+mF5L7pk zZK!#+1F9IizenfS@P~Dz01of^1=zhXiArWs@AKjvooDg_M8ErNs+grGfK}J|z7ARB zcAaS;vo=f+cP79<)Nuwyv(F-a3%HXeQSuj^tzp9Y-BgDL1=2{RclrwMm=XB= zCH|!13p3y?X}kbbr3E(!wm3f&DGg&jM_|VJJYdn`J*M^eyw_tWZ0$qI6D^-_VAkdS z?B@gfAI7yr)$YP#}x;C|m1y=IoL+dB0)9QO1&6aA!`wXzD3B<}2ZLKU=~6b@8ZRHwNC9Z&iJT@QHzwe`n=#?_I)#1ZT8aL!Ot$$4rS8`9Tz3)IZeOR%UY z@x@qSbXLbR>NK5iTqW0gs6J*xk zzso>F>0|}&iHE`{WzJfRs#{$QM5+n;d!W0Ey&42?yN@rj^AB@A?03Mg*OP-t6L7mX z@!>}_{#r%$Kxz7RWSz!&?ge^BZ{rK}2~LRc9qdZOfuRUAGnaz)q14P^DtbP|e+@;XpParzw9wy&tfEH{34Q`;s&VVD>9D%-l+JGQy7a#DS zhhh)hKCg>_Z3k_JBzOJz5Zr++g-ObIBo3a?eg<<#esCo8MIU&hgT7=3(8yPE|C@ei z6~cn%EE5%t{2~Uv0aLpJ{ic&meN}FfB z5H^vEZbMMU{BjVLjCmQtgt6ajL>3bcyoXJ#W-^78P(Ir znOn#ys?T>pSXc!NX)apu=7Y>DC+aqTEcTJqIu+Slw~E{BFrauWSpaXESx4wmZD%yV zdYO5gjFfp^DCBN0SMgE*9AAV5crOGY6jJykmM!A-KMGR|OMY8Ba%>s`d~g2B2UqbE z_eIehHQL?}H-}c?CPiXK4C?lqBV6~ra?aZF;p$&+!78IVbOb@F%MhpN)gF`${vMv9?9tz_ zbHo?p#t)2XIyYo#WkYhrS&*4B>ey6+BRHOT7cK@Gx2{L4h8G_|3&&sI#TbC=dRwfk14t+^X4^=;)*TatZ93H!AbjV7yR?(iT z2yMH0Ff*?GY9u`U^4S`iMRS3H4rNpuf>N)*6Ye7#GjY&$c*@o|06nhtMJC2}r}%ix zxg1eP#dH-_uUQ7vd+h-Fu3ZB3 zf4vGAc(i#hLy)+nBK*!QY|&KSp|r28c!8>__VWpAuWrc6@0>82XS`U8prUYIsoZKb z-By+?jYEqGK%a(gz-Y5e=8%GNsgs73FWhB~#O-6!uxw**#q#)l!!8|eIh5Gq94nCF zHpJ9Z%3pB?L1P!s0P4CbtU$;A{%|YWY7QaRbE$E-cPZgh+UR?b2k=L};C`N%uZzIj zrE7a4q-DA-WN28UgP94=2xX|=p?xhTUOm+~Ou)PA#;*uxxu?=pOq?MS`s@?4-pm)?*Lj#modc6vV*dYVTp zn<-?UH^Q@C=D;ma7HVzu_6NKSr*_m}gjs$nrp>Oq`KkbWAxttWCc>jsP(4Kza;7w4 zVw|&gJ_3`gS!|~fXd|h3URThq?&4@nm|IACak*q+rt_E0fyexGo25Z>WBo_*2%+CrfG0M*!nbq|2mUOh#@$Hx@G=cf{64!XQt1O{7B zg$O-MxguZWLuLZwr>+A5vIf^6uzY4B@^(&j0P5CVYUVG`wQOpy_@}^xdjlb>GRxV9 zwtvk5`Z-^tbjIBcKl}-5s7Eurk*zZzs5mPc9G-dPKe@!6F{* zvGBy{B=i%O{St*s!Ym4uw67Y0sx{aH0t;KIp$86 z<|ed#Isjh(2SO=O+$e@;C_al|FSVRpgHG#!%h|xlV>#p%I$Hw0_kIubd%~H7f9yp; zY5%o69~AK0JcMPh9>eN82cCe(bxad5s>?TM+obh;FwJ}?P;q-26KQu;HkZPX^T8IF z_-!9XBt-=xRo11`z;^Q##IhfNcJ)(0bEok_^YaUtCEgzT%Mm^k>FSBm0}IzyQBu-c zwr~4d9neBL2z30j6q3>Js?d@GM=`?q<0d{AH;;0z^!iW0@ncUSOYBbTtC8b88xA%o z-G2rdTA%lTG_yZN=63v!GSajD5YT%8ujq(N=D6A=d?G@$C(npN>6V>j)u4whXlyn; zI;+g=++f2WHx9{^%PIAp=D2V|<#c8_eYVFz zOLiWV$_VZLX^8OHcNZ8`mIJay40l6x^bZuT4#O{@Kz=PK!MnITfmUD`?qvC4mO+z~ z6lquA;y=r*%G8u2mwfjgR9$nJVnGc>*2|sSDj`K8VPQpymTH=*k=cJMU;56B=V^_f zK4qx2l>NK_q2-hR!h)N%irt~lY)*3>_HcWm`%)WRodWLkjYmwn(?WJEWqc?zuG+NQ zw5R0tTM%Mm>g*t_6?5-kyg^jvxNxR0NX<76#|3vnnv~Aux9SD=QQeQ~GU2xAJ`m{s z@-Qd+@rK)AzNGhG@yT*~O6K;Lb^*1)Dxe|%2sgMIuD^mu`Sa&YHC3#02i?jCzsIP* z0rzDd9LI>tvs|UEe1dJ+PH5&cpWqq4p&Z~XCcTs4=i|=o#GU#wXR8iwsHr3FdPFJQ zoUR~98`TA47Ea8-Z5ZkCpNT54fqbXBZO?bOfBWGug6?J)gz7*0jG;A}1*UP5WpCzE z+Uj?pjcf_fqd1Mx`pl8=BrJN3;^lo*0e8_L%7Ee@w*d_k23g{`3?@z_BW?+OZi_nQ zei{T(qZyED4&jbvuEOU?8gb7p@pJQr+e^lA_>d5aNK zkw}d$k_*Arc6G;`@@C$v7ms^50lfI|) zPTDLekUMfYJgsx?0L#pmab_F#hG~b!w{TkVaDRg7e%lXt3*uh0NG`HG(p_{tL`;`GMILE_ecut6AB9+b+Sy2T8B^$3-#| zd#U_m_8p5J?!XBn*d=54h)*4;I1b+BH~Jd!Rh85Ur8> z*?aVwP^t1RIm2mEf1p+>536J;;od}e)mV=B31*knYKrP{58D9kvh#qxhdHvU zuGh2B&b_%v?^<^XL9SmLfiaJlFrwtIlb}kg;^*|(o>+sJh*&k!wtlo8Zi{2&$?ki) z0p(30?4;;%A+yoB*)~NlrsC=HzwaZuYV<1<++{^8xOKNmnoZL3?kteg^d_LQhHoGG zvWw{;smt!2&`uj~k$E&{$&y~>V);*>hFN(#DRbCegyop519t6R3rt*GEhJw@SeViE|d#HLYNM|ZPE`AQ7C;CAqM0}Rv5!sef}D~WJV z+BOM&+&-}$Zr7nX!tk7TLasJ3gMA}xCF+RJD-9Iq(n}{lF%6YMq(;6xcF8zIC0LTa z`5Wp$ecv3uEwP$xobs*+sH_zR2hRqcr&A*z2Wf0FCcXS z+BkvV9jk7Bn&Lxmqmxo{f|f zUkuw_tF!E@Ezay@mf=&rg(v(OrvXVZ5DijZpZ&o4eD==?iI0Fz7E|a+U&5Z=aEpYB zlJ(%zF*oeZUCqqRq^tlanh>pDI)iI8=SAbjb%~`^Rjn506zdeWt>%!67>pxc7J&{} zdcnrPHaiee8Zr&;x`GU5)8!D^Upbd(=Sr^e47~z0yvH#sTzwF{Of77#i4^Vr1 zV6(9Wx`Xl7LxhBv9O6FXERSYech8Af?ZXJ6AW_?Xnv7j$-iJ6s7^n03P|ZU|hn>oU zC$kk_oHtevY*^cc5izMlAuY>C2O_A_^cu8{#xL15TK0Z5Nh6}e}DXzR~&jQ0vWO0Eg)!`*fNE002BFK1uE-=}Q4V7_(4OQ#J#Q7kM(2prE6;=yS7psx} zaC^8dhC8s4OcT28fXvrRDtu>w(W0N#F9@=pO3|pze2B)vcd9nNgwM}02k7s&4A{QO z3;3~B4bb_KJ;akv)=H4S2W3j+vX!Rq=Sfy628J0sO(yfjKl#6%h(){Y5TJX-M)I$9 zVxpkeb@0SmZIW4Fo;&>{Jf(k*Mw?U(i-X(k?T54I+GGoO1INyx?KSS|Q+Sdtc7h2o z`+7OtE`CE%FWu&j%+qsTXDTG#vqsZb*6$A_X#LX@Fitz^1>8;zWikvsnv^*fG9|aL z)8~8ov>Ajcj-Q@K_rnwt*3w`9{$PL2esTyc<<-s}Pb=cYaze(28Sr=%CIJ)ru#wyc z!32&yOgTcq3fTV&VHN5Dz`DDX^evmnwGrDVq15t3O591t6ky72a-1sm9I$$sP)Dox z?1rbQ?;c?BXDXRVj8xg@9*WTIkw5kqInMt=NL?qjfs3PI^KO7(QJX%4f~L2oBrv|< zNKkQn1Bl`@?-<;kmVc2Lnb*j-Ru6vzx=(h2O!W9|Bix2o-g1?hOlg68?>H{jeZjsp zDUfktTU>$h?i5b>!`YjQ6(E(=XPq_BC5fY@Tm5V^T5&ziu8ER)ttChLo@L`E;#(r7 zQhJju+|KgFFve&f6~pcIb_RJvDwTyb{KZ`;VzwnCGc2$)td>Dm9s^jDd{tr z!;=F*&4Jr;Gme6i_Ih9V^)tr+!^U(4MtSf?o3?LB`I;}=5Z}EPIV41oeJh9a4rC`^ zF(7;Wa)E7(59|8$`4y3V9coe7@R$j3NA6Su+ZKL}0iiM8mg>6n@B>F^`jxV58A0r4 z9~XBA+WxefL5_aY;Bm|9Oy-aL4#Erdxg)eCD6|D`|BH=GR?*o7h>VpV5c zgxURdDXeb61~L9bo*JlZo**F0=vzo6U;Z2TT(~cv+I+j{jm;IR886|D|xDOSL zsC>pOt7idYT3JC<$QKS3Jtgg$AHvFedt86Nrk zL%@Vmp)uKc2pf>ba1$*H7jY%RYW4BUvWq#KYqz;sn(`YKk z%dYq%RCkR-vVI>aU??v@3`|X5AAv9aU*4-_=rNc%nn_{e0=V418Hg(To})>hUYCJ^ zt-b?B+ScGpIk3v4Tw4Wi&iZk{DIed0o}e#T4HXmo)uEa(C)&_@mlxRyo>o6`@-YQ_ zpCOcbQYyN4oek9fC+X3_9&{eR( z=-#hn41@Dcvlix-QsPH!k6|N~xa;h$)D%V*3CoX0-VsvtA{Y4Lrmg{&{P7;|X?Nor zxE(bd2wc_YfsrXGXxmJu*^s$jmnrEYzQ+QIgOuCe2A=$&&weK=<2kkQ155ece-1u~E4>TK;$mO7gD|9l)xE9Qhvio|rY0^M z0Zcj88)%(MVc78v+umwy2uf=Ah}Z5pt`ftmi<+#b8H5E4nA2O8l%lXTYuIxeUwM%l z?t@9EWYg7nGI!}cxDAglF(M{CAD)61YiNhhbY+c;v-o!H<;yq=L_R_RKm1C%ubmL3 zTR&K+D;z44r$0tW_B?N3k=1(BzPPnqbj;B1e>36}vECiMzzC0gEc-#6rM;lVm~*jw z=E7kXV@wmvXYV+K*fb01+oJipFvF2g;EQW-;~0*;hS|b6*HVfYUkPtYchVr`#4upq z<5$d~uv`a^=EWEqM6s6nFB#1^Vj1H?53@yMckKY?{5F(9lg?8rl%4n;TD)@#89`^m zWohg|i8(7Xx5K?fbxc>}PnIZZv&ghY>anW;ZkOlWtE4F&E9`mhhuQLBkw-xS`QHsp zJDU6v@oXs7cQyDd*_`WYS=NQXK5EiCFWirLk6*;0#r}8*P~)^k>{Zlm`pGh83FDIO!1U}9cw6SH z1AI=|(vv@3?tFeg3X_-uKjR!9OqKDwwsp)PS8O_?Z> zReIvr6Yw-S-QtH!{@MLx} zl4|804w-sN9U3Eq1RJ%rkp=WMd$plfSRqx#R_@hG)gYRKkQO5gK6f9^J?U4EQhK= zlyOlc+Qb7C0-EI26lLgv9yNTa&pDm}_7A(q1l9`r#$A!Y zll72lNa4`cz^M3n!1SN)^3mLmhv6xG_Z+A`oq!^Y^cxGQT8hJlnD<$6sA`G(EkXRJ zLUi~hx(h<|jX;a0J<*!$CQ9$ch%5d57>y~_&Qzh=zS#t{iAIHS z{_@Ym|FgN(FC!aTff8Lw3LJNpd6x`1gIx6G)EWG~F9G(M^d&H0mI@d-6c<|KAoKou zc;fr@1m;+iUy4K9@adqoUZ_R7d=Fn$aiG1-q*e+^i@V>LkpL|PsAFzQD#_=({aN)l{+?e_Rp=nin(BX2&rNiCf`^^|@ zosY%9t##!XRZDL*5Qv7;XGZle&D{>eHs zQ*PIAxhy!-dU&$h8ODAx-obJAtZc-GQ|eRscH$28dKyPB7s@PWjpK$D+?7 z#Cbm>vxEo!2>SbLJQ&fcy_oV2IQ9}TN`Kfn5!mhWDX@jxX>WuD#Hg4q;{DgkBsKU~ zZ7#)bQ9 zSo~fFcjxUJ(6#KY9)a7%i()wZJS$O-yC-0?)}NaOk6+u1l&8TVNuqF3KW#u@#`12! z()W8&mCS*xT;stfz)4s3V>eYnBG-)Rc=caDw{)q;PUv2Xxj5;jL>Fy1Mrd=}evZ5oMI}bO4DiKVb<> z?YfLXZAB{&>oy)9-HLE(0$yQmxU~S1sGgD_u zKU@N(J41~aJ$>S1ITQ!DjL~h8GAix{Fm7-2saQ>2tXMXLkYtjSJ0xqC>>JEO%V&_R zip#}7<**JSGgWyNxWMDhMTA9r^1GZVPbf39yBz@LI8^~Pfv1rchuxo$C4vLkV|!eu zWS{7>o3~Y!z3L5*Z33(t7>-_1f`x5qg^m*O@^>d3V>E?E&8bT)Em1O)bi0=L^gzHI zUfGg8yo%yn`}7|?WSq8)n}+b-?HQzLsW5T+yqm;g4WKYnovmd=`wJXy)yot>O%o-X zcQ3)g9-BE8>30+%NyGX>mgQYI1-I?=(LiP6dtk|*9CK^zf<^tOnkg~pYEF|Mz0ACU znd;_6)iL=?;q#mD5EwRn3NR{?t=jrWl}v6XxlE&Y5AeDT481-Zs5ne^&Ysv20w(#^ zRrH~T->ITce&-BK^SuNt@pc7STzk9((ZjCYhC9;dYs@+R& zkUAb_!}z3O_77+WDd8^){>ye_O@hf1fIz8j3Y^7lKd)924mVf!*r^8Y{qW0oC`U24Vz64*0&syxknP_?qFYR|V_U7OO7M4KHbcE_Ocw6Z(o38_l<3yfKawHtyKD z*ygRmDoRJ>8?O~2EhRz$0%|*8GZ~4dJ<)`xz26Dm3;gIXJc>eIu~@z$2X6OOg19m% zx1T4xRhrGf`u?nSfvFgdU$Dbcs~=RY=nHdmS+5DY`8d z^9>xB(%Xpg<(z*9PhOG*hxcN$lkiw2ZwETfJ_qy|uo37R!nU@ay-Nn$x4vU{42=br z4hSlfaqO#Wdvch^6g2oS@Muw?rfsY{IAO9pT5B94d7uGZM1eLFX zLQ6D}+PNHQJy!WZC@GTJlhYo(C$W?r|AI$tISPdJ(zA2N-R}WRe}j3Tz2yIHAv}@4 zu3*~OH`n0t9`jg?$__7RKn(0TkWoPncM%mNT?J}z1O!2WLs*o=v5lxtxb=LvV?u@l zlOAOu#Ah`dp)6Vgs_uFU!l}bQMIk4s+RE&duxmJjQ@zt#0E2dRkRe^v)*nHG%pH8y zn3Zf1-IV5!@?=iurq=Aq;!~yZI}C_Q9nOjs?-~hotQiZ`hWm@x=&#u^Cc7U?SwHVP zcwBl_L)1n+euVu-by8XZIj^Ywbf8jvo4(@m*C3qx;Bg`YzhT=D6Qno<^j}XE&ko${X_$RkWv*%*IEmonJ)S zdY4i`DegkK>a)EG*hQRe30(6J+>zrBkqKf?T!ts!=?O`bvXs`Q+?5~m{ko|=%sJZP z+k%+#VTAc<7FLd6hJSsQ-t?)jm@21`oNYO1Aw9!<7h=Tm8^YccI7!6E%nLz~Dj0e% z0xM=2n69&y-QN3O(ZLP92CDcT{z(pJD8!v~k5L;ZU+7@?5PJPG3`3ePb6H%sy?kBz zSL1*dml}aye)Wisy-hM@h;Jfx#ND=zxOis-UlpsEf`~ZWEU!^w_a>b1{H1ijG7vr>nV?6U>NL+nz|mpGF}z}Y^jWy8 zTVjQLxTL*tneU5wA#+(T6Ko&v9D1?-D?G0=k zc?RgNO9Gbo=@_z~j5uKm<(vGySW~Ks90QN)`Av|y3Y=01UYwSle_Nn2KqiY#_0H&Z0&TbzP#sL)%mmkQ&}C?^?}Gqe6XF( zo%o2kmn${{)%R0?6ZTI9y7na5eJaWKai7!!759bFw<@>^9@XBVK$j(d0|QSs0z-W_^7 z*c)NJJ-#*dk~Hhnm>_U5dByXO0I1Wj9k=g=?b2wECmeTLJ=u+6-bv1Oa%%?>B)NAs z2WGS@mYIa(_Q4nMwD&j!lBw^7!EJNtG0^$WdNiOWWE$=rXx@=41uhLoMDVUa!Jm;g zzJoSrRWB?L4z65-kbI5Yi3AaQlKiObRVaMze#sZV@!wHsb)L8Ys7Z)0W652EC@w+< zVNinX@P+LS3kO+hGZU;o#kSy>SGXn*ShJQ)tDnQ+z}MUt7~n$+#SI+`QYI|=iq9uJ z*nk;Ihcs$*PAAA>zTt;adH+S@ICBXuMW5~{J^|A947tW)X$;W0b2RrcgY}P#9-cg1 z^Z;D8xj-1SGH!QAs`8*EKm}*&QhJv-8YPaRnH3uE-3`Eg37>%*M~=$y%aw zjQkVEnT+y61l7#of=8FrY=HVT?9P3o-BC8n6JNpY`kZCEMO;wdFH#>gMf0z27n0y>GW4Ep+HG`~15YcvA0 z``H5BCtf1%3t^@Ko@A1?R@Z=IZ8^kQe|rJwRoNF9*l-#c_WdDXNY*^z3%EYl_T}(Sl;|Je{+vNu3g2%CEOzM5^Gycf`v_e?X zcxv>yMQkYTDA7p5U`>fAB?gb2Vs(T)W}qyt``mCIQxP4 zb;Vb3ki>9nE$n4#N%4F*5|w#(1Nw!rZy2W^28NZArj`o|m^h< zlJX-aQVeT?C*McN`0kw;q&iNS;`MMIFmU8`khN+Cg^Amh{+!z>CH6bjk>x;ZkB&f% z#Um8gxac!7bL1grn9x=ZOx!U6nDqWN#Cm{b^VRtgJ0oOnSmXbSnnLS{0LzcD`COf`4zI>}y0!2aT*}bi{#94t zj_-7jFV8r^ZklHB71cjN{K{7zXpT;6x{c^!bqz;J^{o}~ z=&L`RXEJ86Q>Ru%@GNx~g&quURYPXbo)lwx@aWm_g#F5aJL&FJQ*Ue=uZO!tEJwFH zc7yKY4!}+q$rv`rZNM1%fNs>CLxVr4r(uOTuu^zS@#6dG3H@L-MOqJAH?ohu@kewn zpT}g>pp#aj>|dC%TS9L{ z=@f68RYH`nEejs;#}uW)TxGAols;t+MSgm#kAS^@qdHKq`7W^CP3EfEFQ#&CaiRoX z=M`w1u+gQ6Nfo#CD_%~4TfKn_MB``V?phj_Z{o&5>7o(2F(F}O3*GB>C z-Pnz-!uPU}Hovp`=+@2zh8+-%7O{0ANRbzHU5J;Wou43T!X8WP^K!n>fFgL#Wt)3% z4Fmf5Y@~K6#kZ)2uhShpP*bvu6Jj$9DSY-;_%nh|n>m4VYZniKd{}H+m1lW2JhZN zYP1^2LBw|OK475rYGCB?jby#-UvZO!64wSVQe*SEnUr_g3XxXDB)6{#DPib4Rbj*L zjDU`=N@f;2fQmtiCz~hL@hdP!oaY$0vpav!Xj^F_ZMd2zU(lyF4@Q*Uum|-p%sR_6 z`v{HBJcWUvLVSXpI)H*`B+mj1~MQ@vDM6aaSz zc{^aQ7vz-Sptit>*N1Vs!qU{5Q^S~lu8|z7Fnh%4hsKM3tDnyf5_I@mjIPF>A%df0 zy2kLEcbTi%R_;CC{@2NTJwIIBVt6|OF)>S7?ASx!iG>QgUhBX)ZXM5|?nS?`;GG)T zc=7hQ{v2i=sp$MOGfo36`Yc26_y-k0Py012QqYpE&C)b<)4D_ z5i`xmQ*KZv&XQdm4v)u}q1mGTzj>}ltv8!0f3mzG)eC?zg|Mx`xKR-S z!%@O)8z$N}5~FR&mPMG(XrA9d?qK;DByoxPEO3=-44bKO3^SZi8-PYv>d7nZcT-^4 z-ljR+;qqNnFKEjvgcNPLi>HiRI5;c!-vl+Q2GFfPRwGM7^zjHLddw{?9b(SHJ+xI1 zpw)sIK-=+O19e_xNsstERwd}hawv}&qDBlupi6@2=I%Uo51yn^o6x!$HD;#os^(@vivXA})Upvi35{tuZFWodT z_#37dSYQi8b2CV-%cvRkIITh+UPq~7`ag!_#)h3!vq5w2F@>>_EGCQgH0r2BZUZ`<8VuA~3+$2aDg~ib2+bF!!{Trb##r7_Nr_<5l3>td4nRomOpTV1uk`2rfp9skv|2^CV z-&4qHAJ+ndPw{&0vLQ)uTbZx=pDj^l()fYx5$8W@AKx9e=pAxJlO;u65oIwR#UoW; zh60@iJY$f?c%7CUtWfTvNKyX4URvQVY%NyW*)l8~`PzWJq0CM0h$xHv7v%N!sT7kD z_v@^&wZl{{?D0jQKw zwGiy6yvc@i|GpaN^Mc#z!+zcbcf<(_mB=Gw_#S(Wkoe?g>u*k{t1L`$??nhy=kEY! z;if#fRGe@bZl|Sc^iD%|78WEdrBE%1Bt>86IiuK_etb}V@oxl8>Bb&toWaFKN2#!N zIHTI7vDh7M?trnaTj73i@96Z+2+{Rqi+g@X*&LP1F)8Z^X;kfb4cIYqBhYHfOP~hp z(kP18l0NV#3@~Ei=iYR9id=Z!8g+F%gViYuN!i&_Fr;$gt!56YY|CW&7wGL!7*;WZ zoLCvKw8eVJ#Dde5Vm=d~B4UH@cwpL!kwB%zF<`DYWr(ta4Ij3>z-Bb60?8bE! zH;BC}IY}KErh2jfVVYnVRuq^`eFu-3h040jsL1L*dtdSKOLhFE_^ajZCd z5$L%6A<*5Pgb5Bh4h;S2L)VO`vTvqv6ffO2lblz4jOdtt&X9nu7tMo8o`5f6Ak+K< zK>K~GfvyJ*Q>^$NIt`ECd{!u~-dj{CZm<>TIw_Na(q;VxV8rVsHq9#oP$EoB^=fF} zrAZWYv!x?> zuSsmbFqAcM?G31ZDUU_#rM&P!qD(RCceqdG#$$0Wlq**K4=5J3#;1W26N&l;28GS}rOlFC7g#I?(ZVp~+rx+b`FeQAHf=k6mL(XEXZWGdXF zu}4rcd;oiV>gQHK_hpuRweby^*S$wB#Y$i=wrkiP808_iyoA!2{b-+Qpj0?(0G zT)>N?24t*3!%o3xb1{&wWa%Bw+y(j_g`NU^w26vpmbgTw*T$=G_m=E{g<}$BCQwU5 zzQ9MBND&V#El_L)1W{2nmqI%H%}+yw?p#8XP2w05*EoF%FyiTaE48-?7HIJwfA}(B z6oS)Uvmbu6pWP$i<_Tc(N;YZs019f0ThsuoGkGP3TesBazTp)@ZPe=_Nf|J}3Op3B z%oT3s$t%Fx#XkePY~bkMJ@66G*J%yW`CB$++y-`#UYpq;6SDe&SBXZv-%y4W>b70PK_OZOC z6DWSGwMNcm^sN>)$LYUe`-NopX4VP)GQr?!XIQkN-qdUp#zX@X|6MHe#ns^9LhgB# zBPgTKX>gGGFxgV$WQuW9-?oZ*7(Cx1C~ztj%*fI)$ZzVTw}{rZ6Z&rO78jJh@}3#W zQgphSPdH~zfya9@nME%p0Hep&<0>1|AyRzSZFqAMy=4YWZat>KBRcIcNUvB`1o9)#X)vd>vnNKRRQ}a3FL?C zya&S9!Om6|jb+$BJAp^X`d$UQJDue?=(qK~%nI_wW(7P^e)HI>@yl;A$0A2ZCYVd% zocw@wQs7iNN>nYad2t(W2bny%OQeBj)U2r`!K29{fjY$ASmJK zJehk-N$D4gN|k8XBE7Js71NRDzCc6$c3c;xwzM>9-hMBIO+CsiqQn)=xh-?JUq~6x zPFK^Bvr$d)eib$_aqz&q{~iNMM09?Ph$tngn{@32huGYm%ee2y@Khzf{)FAX@lyN@ za1fGYk0ra5FFXw_{joD`mT{45Xh-^M8EK*@q8G zW;R&p^lMG-%Pr{yEODW`c10t4TG)yQsB6BsaH8_^ZPQdqtD473MJ_nNTRP)v45A%V z5?SuG zZXE}7U;7T7Ga#)WSvk>y{i#q#g{PnHdti_QSvsQ4Gc;vXL^fU;o3;f5Os3x+QJj*~ zsfbTYQUKfjI~G}aG_L^}=dG4`K=9n6JdRy0)V;XlJl?3tIFBF;+hM>FRU?3nGjmaP zKOb^(>@;s+*7SYYa*;o(dCj6UoyL$+tL-7c-5baa9^bQw2?zTDb7Dx5@_ppfK{v9I zlVdmb50CN-z(_yVGA@(F%oS^zmeZ5rb~QR7rN7^JQ4Rk;3c;QMu3{pWeJT?PrbcRT z#jVby>4PQD@JtNa0TrZh#Z)nTw7v5gJcg?WP%yuf2Dw~I=8ntXWoFG|b{XWBp?MR4 zD*X@QMHRc^OnXUQO0kp1cPD8OAfv*S{U|kizTx$lx z(I!k?J9^~-cCGmB<9IDymuv}S=x%oyNgW5x1G@KmO>HXFt^}Uw4nF{6bJqeByV_t; zRAw&DhZ!r-}>M0T7=l{zRj5Irt(omg(mjA|4+)jFqemfhd~ zfN8p9Q_tEZd9s@%w_nOSD$o86k8;#~Dn5n%1L4toWici^vH5&)LjUdvO!zhfn3OUY zn3rO}Ri1^P*27(MdmGT=Kn&3FqzdRhZ371^zpP2zB!G-E*0LAn-g;zaqG};o9&Lll zN7_v^Yk|<%Nkw2+*XmHdF)pPTK~}xU7-Q=BKK&j_$Hv^F+f^oW zmJsB$x0wNP!61aKL8Q-FpD6PYD$`#NVd)k}#pn}_rA2*x~FC@6rv z^JCvo!?bodiQupkJAg46Yx#jdrbzkTFnW8Mr?9-ZN91{L$6}0tb@xCZ$179 z;;Q>MaG zw7(RhN!4yL+={!L-IgAs@m3?&S@nNViWyxkff3KzTUeUPI?7v^+1N@k)&r4k`Z#`A zq~>onO^uciblZ&(AUV4e@F8mD zLNS)q|ENKC?Qw!Mn$(+OxaH%w$knHTrdq!dokimZZC;L;oFWR(;-}0?w>nzr$4kF~ z$8Zn)kA72m79QUpsmG!8r$^u;YdRZzLF{V;XSst-(erZ}i_dxioq3&UH_PCGY zo8j^;4CTn@Y4d$#B@#_AP{XZOa1&AASN1=~^J33+i|e9-ifaw1V!8&3R`u_Y4NuTbmL=S>y~wQ5yNhWiJ}t$*pb>klwfA=_KfF`Y zNB3gB(W@_;SwgTSkIX=_EHkkh;qVtbli&LaV9++wFDKLun0KGFQoJWBEvEzR#6_c; z{CZT&YbmEBfwp`$a>ob?*R1L>OgdIR9dW)WOr^au29|)^mFO zU#HUTXTzqsu}Ly!(VhCS5vZKsyw%L61EqxH+$lh#^;lq7&1Du?{_(74eoeqvCc#A# zHHokRVp5PWP!3OZ-ZbEpY3+fkFTVsj=XHj()`(MwZd3XoBy7$MK_fY~vx8$=M51T= z<{gJS*lJ{R{%sym7F)hl^R11&H)GM*+nyiGjs1qKp4iZayY(|?dNYHSjTlN*wavGx z26l8uShV#9*cFoJHCsn>PqMVGjzUfF^26aCOo7Gne+)L7$|Z$|&?ZT|6Q(LL z&u5b#d1|!6w_opA!9-qLj@W&RH1La3L1Cz84GTa`N zR(=y6)wwdUg~92t4Sc$z&cKK;Hl5>Qv6sqB>!m!-32+GwS9= zU$cyHl}rC$!g)`RK~ShUhqBBcZ?K`N%%V;ENmgm1iJWi@81dWQbJ7@!>v147_p|%N z?jI&|w3k}7Yl{Nw#w;}Bw90eVV&p%f&JCE|w@d7WPO!>?Q?qci-!Z^6`u?#=% zj+=-_$cG^l#Y8pEr<%{_jen1@G)Eode{}jlVg2(!Aq4z-vBkpLQ&>c-UI`*Zjqn%z z?bwdx(=4~(+XGAnGq2itl>2sypQzcpJ*Qgev4#ZF->PH$|3lbY$47Z|VZ+HLD{&#V zNp_QsZCrNa?nVeP0)Y^$KyY_S2tiA6E5(XaTA(1_Hfj9|roBkq0Bfm!sda z2J^zdA)kH8I0tx6&Zq1R-13!81~uwE2QM6Or&Q@EkOPOAL(GDE-jVfj#aX~MAeD?@ z`&S?K1rGZ05KtdD9|mXC;Y{9W5`FzHNEz+OLdtZGU>4cr5dD&_5J&kfZf?tdnG8yv z=M`Xnv-2pH!yq5H{d0E^pC14gHgpHpjZ8B2lU$!IM5@5pUZ4c!aHt459{C@=6mppZ zhT_R>pywQZ$rvr7wZDcIhZ}q7#BPF6J@tK&-&J7S+Z%xG-qXf#p2pMx%RUCic-;gh zD0kx>WQC*}w--Luql>^C$0zuJpk-V3y!|hKLHfPSSx=vwUzA6QfR*hDK*s% z{pcx;+Qfubr}&Vu+H9cv8-AP8BkMT3%y$t^`mm&-b0DH1SGx;bVWPAQE zp#AT?k;*-G8y=eYumlwO(?<4C?o(O}g=;a%2ES;#@$_}qQU(fZ+scxg!Y)l5frMi;?-L4tn*776? zE>fs20x5jgY+&RRzGO+-$rG|UxlCr6I1#8RZUyw2Cl)y}EgRucyxc1alQlOLz7`vj zkfWtjINU||SeasRyxQ;EK!{yn-=;}Z$e$X7ggUVdDRVivr9Rk!jSYU1cIIf2TS12( z*e{(&{f@x$07}1Q>{g&l8-J9^uayJP=p2n%ov|0UwG_=K>y|mO4!#NXOdMo}`4D&_ z+=(M{Mf5_Th08M}bgjC^QNa+k3&LHd;HXolU524g`9{ob>(@L0$$flqlPr099ER8P z+ol@>bla1`i6JMOrWA?dGn#JSvnh%Xt1vuSiyM(_7EySdHiZFQUWI@gDvP?pt-Aa- zAMLfh5S~Qr=(Up4qf=!jrLZTnKx(mtVxRVv!RDxCKm>aIB> zASA36nlN<(ADuJ50oXC?JA_78_J?AQ88;G?7N1kNdtc_z?%K)+=pQBK*70UE!Qyw4 zZ=&(PE6sJa73NcG#xLg&On<+*3eJBXG+Y^=u9bAc|?uAs?WEtpg5dE|;0bYIHBcSid+ahV7Ot$%?Q=1?u zEsf7jJ4&j$tDuD9T_KW$?s^N4ydAa|%B2JhEi$Rlk7X-z`xNOFczM5)@zfKIA3oTC z;zQxzJcugB<+o*+H(mxo_+M546{qCD@)pmzNM&O>7@qc3G=}AiV)(3jg#eunL^7w1Jx~#?Jm7=H z5IjNK)Kf7(uNFy)PEvM!cV@dj34}-AF&!u$r~)Q!=>qgw z-4+;@Nvk2e)xxH-rC#d|Z_eN&K&y5=k=MtAure+MefkcR;Lj+!!OPhxk>&CK&N||k z&V=~4>|KYIGV3f3_hWy*%L$BobZazhR68~S-d$lT!%I=H>j@LHK#mF(-6?aG78iiZ z&fG5ohvQZoG@N_wJgN@)a!OFzHXo3(X8mHS!wqN;KpCHd#UXqI`JN>_eusu5IAZrt zeEHJCYAKt@+K#%pZs=v8|Neo%&^rOZn8Ej1wA7=No{#+vK-){9K$lfRf!ei|K*NYK zpyH&isa4uepyAc?9NVVHSzn;#PmJJMYY)_kdvmhItyzlGn?SKxw3u-csRG8{Mb9dw zNn8GeNB@pR$a%C1n74s7E4-Qo9Be!ftlvsLSKs1lkW32pV~=I5ISK53ie>AWss#?b z!NOD>uL4?o2xa3j9m)b9k-j_!w7B(4F=)y#+g=1;%F{Nc-cqZuOt{^obwJ<6nY1wc zLq@`r)O2BP(Fk%x-vnwUr{&x)*6zj0(6&Pc&0~p%BX%cOmosFHsHFcfQwL0HF z_{u`}{cuL>QD|BzCI20TSKM8-)D406zD5HoLZ!$9UkH{re!7S|<4Sv7VHb7Uwb=Ci zBx%ghe3`2QzNrhIfwElBj&a|$h8{!3Dw!MBBwL-Z#p3+GKa&XX#r$UI`42x{V)qL) ze9<8`^2A#Yfi^2*fkoD~(0t`x(Ff?;ezz!Bp%)GzB=L0uX({5q!7SY?Y*o&0y%0uf z%|x0Sannjk3v!Xy{8z}HalbnFs9`~%lx&Qe|UA?pM*t*m{ z2rS$31JGq1+0nD=9?<_Sxghpk)72(r;)}wg%g$rmj`tgfkeuQ%z@mzN*wNm~MHEv# z#1SOjRY#U1pgMzpq2|&2OMQSdA5w1Q8AMS3%wF>Q+&-BVBJ0`vskO8Isld%-c^WFUE<0K1@#pOz>dv2A z!yOuw$mWy}nvCQb%?n^n6bx_9nN4BRUW9u)vlx-rI|Ad+@oTotO}Zkg)koo=G~8z^ z>Mn|@R)`bkOt4r>vbQ07)s5a_dfIwG)5(2Hd4kt}+V=nMkeqrR6V>y*(*=+4ecnJN zlQi!ou<&eKJiF+92y5otj&%WNYq)-hi~Wna zv19zGIs_}nQLPv4V7VO(<+NzDAyio5w zQ#}<&S+MSC5aUy^9(!n%`10u~gt=MJFmn%ODT5SZjVydZitL>!dc@$h2Gsa{yMUhi zsX(IEP)g!|2nO~DvcLx{`goi$ecynU&zm5%?BW9~|KbHM)vc6lmMPeHMF9suw7WVV z7(SfJDDpMcSDgD3Tst1`+zAbu*NSC{`bMk@P4yD?hgZf((K%l279cF>>Iq=TD=uP` zSDMLeY^3quv!g8S$&QxaQEvr2Kh&f#uKyyFJ7LL(t)8}GE_SLHZ`w-*W^tb7w0ds< zI{(JWfahm;n+$37#8DaiXTHovP|XNVz7o^eQCT}&faN`DNBgW-i&(+MoW15a^dJs; z1?DO0ACD6g)=wo+Tn}x*oeP1>YuU9y&3H{nyZ2Nd`v|0feLA#j^Z+(X{S~Sa#owJo*>fJefX{V^ zSb@}*t5Ep(?*@XDm@o`8udI(&Vd*b>KUGKG@}X=Si;%7GIOzs6(h78{OiG*L1y98j zm1$SWYH2!SS?5q@-MyN&?j*KuVde>HZrDo(DjTTyT8H-sb}soG=$a$My(%AW-9LJu z{>xxCnErS6TJT_Y(fFk;fZ6^vzydEeSj*q^jAXHH3$XK8YRO(xmcbaZ@6LH<(8K#c z`Dhk6`N{t*ujQ=~EA*lAj*zXwnSPXj;?F-pw5szmdV;4_A`$`pZVJR@#yfzid4cVDM+w1W_U7lE&itriDfL$+SL6%ZMIR&wB z%1$hRx4)>9nYc-v9ad3^Yga`7&rWyDv&CKI%2;1;i?+)?QB|ESk8^=bTqskvsoPkG z{JY2Cv9P-bbiHtoBsVAabnJ-Fc})mMWJytYnE`2YxfudH@|QQgT^_p0`Xx#OmbXFl z2@y)5^Y$|$hI;X^rv01YErj5${0f2XgZ}|e8dU&PHv}*X-!4nQ3W2w5K}!DW2D&=e zZ9LqQuYLx!ikb`5Eb#&Q$Y9rFukcS{Oc%Fq1vPWZ5Y85wxBHzR(ilrs6=K#=X5xdh z5wFBHA&Y$j8NIP#0KzOysOB}|#esaH4JZlXT9l+8?x3@B7P2$*-0Fd@ZfA*i4?{{L z`(TwHc~lHJ0pp{6q6tE}F0lu?PZXJJc2FezX9lC8T6dp|Nwp^J9VsW?0%Q9$it+P2 zm2%-XLEMIA6*3ea@9F8lFpI0e%$ip~RichKlh(%g71UMkevi;Tns3=YJ~@8C5TEZ^ z^Q<4(DD^XUpoIR9s5ElBQ!JXFumq)*Er;>3?;Zo~bzH=A$ms^RPG3qq7!B0_8V6KP zImHHQe>N6Z{B@PjphvA|+<;;gTE$R>_C!NH{|4pAz0Ce7+!YS&(e)CrdCOWFP^IGI zw9b3IK~mr6%u>6WY-=J#bx$FfyEbk;~1Ez~B>iftj72 z0f(lOKK7rB!1`QvmZ5l|cvAj>^Y9g=TL8;nh+$Fng#E9^oCY_KTsFe+%P6yC-&J@F zU^QE?uu|T;Zv#V}eo{2U4-s>V+%Z&HG=2?ow<*t&os+%>-r{bz*GSP++2BG0YRmT=X;r5`Omoxc*27yGMZR)z5lbvC z-7?`(UuJQ=Uss3FXrj&(vZ!k^8ZY%1!_`96_ zq|{voX1*E%v>U|HQ*$>GmyJOeuPB4BC^`XH^TjD(m|-E%>KHl4{wP(5dP)ro;Gr3b zX7g^_7o>pU^KBI-rXS|Dcqsb#(=G_`Jbs44)@F_9QLXDkB#FF>L0Ai2fRD35{e+I( z$n2tXoe;lWFuB?85!+Ge%Cfjt1_9lrDZsb^{O)z9Yu(^(xv>)1c)nH^hUZ_$q!!br z2ygM6@W$W|wrYfywnf&?OL%VX7d`O}v6Ky`8MRdHW$G;%wG9Z4S?y0!(g8yAKXb4(5k_bjjA+3ObB{rg1ApNbdZ>27^GZEDFY>`y+!j;*>eo5ko5Po--$f=p2NVgv`j>+$jqTMr}irOik-(*PSXSN7Q#O+Q_ zQn+t_xaG5I&@9$6YFurcU^)6774WZ_N5^q5ZNymW zo6ID3czIeZf~@!b1Gj?wAmlZV(eG!|p1qG}V-(AcalzYoMp<6#5Vo{ZdbEdyM$j9mL2yKVZ(BbYPpI zEMv`D?xL@F{{u$i4i_ha;o^j5&u-bow<*S~|4zYMf zMs4<_FJ8)p-jDsDFT$EJb@Z?rVDZ@pg1=ks<`B~O=>k+f#w8l=xB}|L4y!p4EK_u5 zrh3np@PrQz2S!#4BPMYorMjhW7O=dCTGpaMEZ-=-KSC!LdWE8s)$5KUKx^`AQ?o=T z?obLBF5`-y^A17sjpr~#;|ZDX*T7pgZvi^GJR%Bik83`VSuliW*nMQ>d!KS{JQc}x zUWND;qS8K_g)=-(K(5?3iq-UPL!dEw1y(>JdN-rwjs1gl(iFlbLn}u9BJ`s|+;OKk zp2+n1UnC+%;i1#A0I201M@64&w{-w9FoDB&VD)HV%nwtzm0o_mX_+?jJk8)%9oZ{& zONfs0UzlCI|6Bege6ohTE^g;9>PJy2TQ&n2_;D8oM|!eljF*N2eM82Hu8899NsJQ1 zPJrlik!jS|$gCc}`2uyT3RwVO{V(wNPM8EN{hF%oqiAxm!=1iB&(W25tR_m>M+--ebfPEG=?Roi<3%x1)U=hFda3mnr?DBqt92|=dEe%!p%2Ri z#<{ZlRl4mcES6Z$leztK`!b`@=u${f{DpGPEXscrPpaBuK!mDerlM}1!KPSdM zLQY;uq7lRYIK;08JRs?jvvrwzpW|9u0iS)da`+FzrscAu|b< zoUi9oD%3~Hl_csd9#Q~FmTL>aa>)Jm2am%?z*#WOhc1|@DG_l1uBk{N{8QnSV#u?OalOa*%QP*eDxVEy#J zXvCUu`r(;oiHO~P592kf3juoh3sX0+g6*6&w**+RYZXx0)s8vWEOCcKbR5M#wfOTB zVBZgT{j+$D~w`_y7!$?ru#=S7+1?tshR!DGmLO+A=-i4&f%Wq+v)^_LhCAD*} zgEGaPcaj7>`VKKeCR}IJC-1+Bu_Q};!lHTF--uMbJ`)(NvBVrW`Sgbu>9C z*QIzXGVu+QHg7!(V&nD|b(6;<6;P8io5!lreUe|5KM0`{hA?K*XIM~&tXn$sPxso3 z9B+zaPFM@Uj=Ys$a#cTh+)0RZUX{?X9k@8}aHJ7c)fG)aPV!w;;aEmC1~U)kQDH?@ zsINB(Pu<0Lh%~i=^6op{QOJAjYIBq?-YOZi^oL8EB33SV4ev+peSw;DE0~whU-kU+ zZAXJK_~;yw*y2ii679N2g6MdV1Gv>lD(0w!Ye4;GTVSYZ(|0?J-^9X~aEPy25}v$* z+pmCJ)x7E}PUregKOypTHv3lm>t+R`c5%3;K0)%saZR3#M0V*%OqiH_IPymC$#OI zvGj??Fws$6MqE1pEc4D6l}Ymx)1$PGYIV1wY$(mW$0Ax-2QpyXoesd9 zVb7VJ=FuHt_QyGFKopgfBkv3STr)oq-0ZSpF&`D=cSNKvy-sc6vf?-}U|_X1OOMVF zKgoFOK8`p>5Bdb}aIB^5I2UGKX15%1hgYNm-L1a|A9+4u2?F|;DR6ZzU*#G++K(&;VPs8B%onH%#(NH^D4+{WJJWo9qW{`l!-8^xr7_ET2B#_#)ti>1zX2sUW za69dE7gJF8*op8ZROA4YUoQcU{gZmu-KUpm6TcN*zzku(Y!!w2`6_~1y&g^UWyfk|d60*G!7-cC8C;5+uMJs6{+x>SZtgoaOM59dymNgY? zg_tk+#{jJs&I3AsF-t`7{i*>h0iKevdxpy{uFu<9cAb%7`wS6^jV^iNyZ5!!AMS>FK1t_tn0fg9!JRH)2j0;W*PN5MbTC`z&8r|p(BR>xj< zh@+1BM;v+(Me)5m9&u8wgk{`f;btb@N}DwWV zH2QWHYO=#gplk2Fz<^nvW@btymSy81CfKL;R~)G7(%yI=OQ21lcx3XRrmfT>{xCcZ z0sVl+{a3{CmUe$GWxSAu9_;7r<>ZI_20paKY(Aj$?S5dzj-xy)4vmAO*ZB|N%Q%j&0?V=`C+RADlT*`(ZP}qj z{}Aa?7aha;mHugWxWgY(tXp1VnbZfSfd4#R?SfmkCl?q{h)vzdD)Ph)@t>H|PKKq- ztY0T1u-TFRK#kWSpkKpy)-9m+e$#?*++G-X=D0dFlu`O@pbC^P?IVhUcv-urgFg91 z8SIN-NqeOY>X*Ow251?}4>F^+KRYqu<^A+%$6nw{)fJ9%e(`Kr|3zZ^c6_`8!*#*8 zKr{3o4NO@`-H`fgF$dwUR^8D+4*s6VK4cY*4@JW@QITx1r)Hw7P%iH6p>(mkR>lkh zCX00@)nDn%I`LjTXsSNZz>#mbanbtjLO5zB`=OUCJyjxfe4k|qHEbDxMU>PSel<%sj zr;Mz;wFBYaGsK{fzoFvaUMbtU2?nJ47ZoG9PoqlGUNZ+8M?1pGjC)P#ReW?B*d_Z* zpkJE^V9+KXVC-KGrrDChO)QlZSOaass$|(fxiV^thuv1GMKYSq{T)N0|lgCbHWAT1XaoAP)Dr%5epPrC5A`=%&bi zM-!)s4>Z?A(j*G7I*hrK@~kPdP(3ddE$$%Rd#Sf}K?MKnotdBIKa7xIbBKQxohkcX zrlS6;$5b+XhyBAQ`E%O`l^Ng9(A0SY*hg-+oy}Ah);K|iJusN6csyYp1AjXUOzAxp zWl9-$jcZ2UQW+m$p~LFCsnmH)H6je~C5wA*+RTv9`D)Yme@aEIlECSe_SATdBO4gv zQ!b`Tfv?#SA@=OKDD@W%G0x;Cd<%w&AX3BWAp zSHQ|K7jc-OPpS+Tt&QF80ZQ)a8Vb4RFkwgNF0VpX`Wb(S*3w^l@nJksNWqJyB6if~ z7Z@(x7d14gaP7%8AZEYy;Ve6c*6wIqU)ZX!OR@{m0f{byLF;2+qmLJ_YxS6=WBy}I zDnRiS-_y?P;=-XM-gN+;Z1MUU+?Fd|0v-S0WrJ=n?!fI4G6tam@2oKQ&3*bgDDB=~ z0QSaJ$9Oq!a}sX9R=yk$5{I4xm#MnMnX%0}%)g6oarY9psp#HaCMn?gg{IO+ciB(o zRj3~zb<06-v0+nR=LmO_J@sV9a4NyH*)&v~PM={?r+?z%QGfN}1fKE0U+9YXwhysO zFl}5Qg2F781H+ec{K)!ZsLaG0M{tM26WYK{p2)(GcMWNxrECzD$7pc7OnnCB=k5E^OIY20>GrQC(6xBPsdtO< z-y^)0RxD193%d)ezr&M-AT@?~1AV@NnS{Mk8G+(&+dyL&#%f0!u<~=I; z=OV5V^jb@mmL1a!*rJ~wFl?0<(CC<8=H3ji<@>*YFaIA`bXW75FqzC%>Ld2=WyVZI zfOh8Bf}4E&-DU9Vd+lY`k#{*?kWUd)_T;(S;PDK|Wk__|Ko}!1h30htvFtOpRF|Or zreV@hZ%gdJD{(%@Xp=(?{Bs(`Z-M%*XO9K_oG6|YwLS#C_-gLJ$Bx0Q6^Joq#vQyE zS3E97$VWxL0&Q{`OFdECg%CHInQ4_xvkae8Y~aidUH&`QQ2el+F>(XlanV5NQkFON zD%-*`cr4KEhu6Sh4?QsCH3uZa)(4o%Cl9CMw7s|(=n(XbS*Uv?^DnSF+c04Q2ZbvA zdf?cimO$r4a-jdQ*J7P2z-R+G3i+&s<#0wlNLD-)l>Jr z!%TxN^h88W!AHQ*&3>XaI?6hcp&E@bJVZ9z`wv=_YlL-z67Y+%7##h<9w5QZ^Yp0icjxgO8CiFu~=r(9G6?qCMT7w6YAe{9>2c^L5TMjZJ>(k!cfg?T$X|~e$xt(O>C8l zDX;*H;nunfZ3_Eu_XDfv4}`XDj1U%uqS{}LC`9fBtH!X3FXNk5S16{DsMLDcy09GtVq0DOh&rH|V#pxaMJ zfIf2^Sb5xS**_fKV!bsqWMlbdxZ8Yjj?o^@WQV1nQ}PBDR>ix>1@zF++nnYnc`%o> zasyD?iMEl?8S-=Jv%%oIh{LsT$IXCP;f1lgfy!A^EaXmcb0<7SA^6%Sd#1&;$*5RM z1qa`Lo&$h>FQ*1Gjoe z6;RW5A+8(ekDb7G%DSsn&{q08E+UuE_x02{MN|<*$2@_xn|c7wRp zJz_nq*OOiSta;hH{;%8rvv&~3cxHA%SW@SFV7H5J(2lB!?&sLQ@?>Gs>+XZ3y{lmS?Atq)UDA2ULc>;D>qn>oCUEU z)pooB)XqC+##LYMzjEO7iFktt`8T7^vwIu}^!FLTydy^mg`GEpFIkJKY!Fhp*U9w# zdwlBdJUp>ZkAO+HxUiM4Sub<;lYF<>gA}In799|IdnJ7GE{v9cNxYOO9#{vDoh6%B zznhjz$POXq;SJgkyg*jKPfBQQ3DwX%ot-r)(Gw~|g;UlDu=$x9MV-5{X;P!@&1d@m zvJe=33Y&G9IJfCCl}Z!xj*T<>%FvO+Rjjnpv`|Xudjzw#ga_p3oN~^%sweCN`V~|5 zVpJ?%yzfRnttv?Tb-fscEr7ZUFKJT*+D0%ayzeQ*vpuyMSUtsyB#8z zw_Yz^It8Y!gVA7JsD@C->0crseqht)*WAg%%pSF&7usG^+L;!o6nd=^T|Bh#H_+lf z_NKfAhW&(q)Hb((j=C>V7pL(&ChN3=mC)9WVexhG@8I#j`aK>~8%6`iS|fJP)xG&$ z=7&wOv*&>3k-iwHD`+7n4`W@;Y)OvD*}&-MwDmL-(bPTrLTXKKVZ{ zmtx<*7Q=g|j^7}jzC|T4a_CpU*pYpK#f~$Oq|+Xn1rrv^ftq7qGeK+--qNVBd14I@ zty>pS4_N%X5$Glt#-#slaz)U-BGDV_d+;cVIDDwq%?5gPs6o{tvF98MT>VYh!S#>J z5zys}Ah5yE!R&eM2rMpwwfcO;OhWtjY~s+UWx<%eWlU&5Sj!*g1DzW9LLv7ai{Hhu z%5*4BpG}54KCGTLe9~gJX2CQxtqvb55}8I^Yzta+>lNJb6T6MWN2JtV|)B(pxxK!Q10;VMB}j3CIu3InqynB-*LQiKou;l6XEp_ z+YXE_`wf^pjy9I^Q*up-e-uirQ_w7m>^}2<)Fi}SI>y*OhdFS_sR*nlf5H~1-&+Qc zgWoI~*CsT-17-bz%25Y^Zp~l=K+FAT36DHe2z*?nIcf44uNbY{Okj(T&H{TmBr?G5 zx2-aBmE>`^q^W6jXQ_$9TS>t5ye?*8uwaxMteezD!@)d|otF(`%D_+9e(|Nx(fv7- zn)bSU)SO+LIE9^U_3d8v-H^psep$$ykftWt zbIv@oD@Z|cYtY`oWsxjLNM#PDc{w+uA$Gafsl$}1x6qXq$C-!qq{l$Nq1Hh8rvH5X zCVT2&%s6v8`~h-{fw73LJkBfNe7YraZO>=!L^5$;2#f$n9A>jXw0H;Vl8k|~faRvy zC_uaIY$5NyV}ZWG+gPWNt77sSFelWK6?wmaS{Qxs#|2~_-|HX5OdLIn#jaRMkyM{? zL`DhgXTT0koGlE>kQ{;7C2Tcg;&psfG53mGElvrYN5lq-?%B*^Rttjt?E<1 z08Md5tioi^;b_(B*d%6cGna!;qhkx;ga8+yI`c4=esT5LV-ERArXo%1Vn!>POS?!_ z;f2yPHe1j1UIiyX3YHfDlh4gUKc=@@$bgn(YN1ivB~nCOD-Ux_Nefy9Pi}&#EDZ%r zwu9JA9dZLC+e6fn!Ci&|Bev}Y#_a9}On;Us8mO23Z>C1cbr4h_cGh*OhSWydar{r5 z-Up3exs{ zEs9(0e*nH9T_~Ru^xy^tqTr(+{bym@ILVflP;{0WD-r1zl!)8vAMvKo^Z0%LH3QjyqiH9IL_()UezC}8F$OK=PKE%LQd!Vi?X%q7n_faPzC$IBXbFK79^ z;K-c0SliRuegk)|DOIG;0P2B|r{{r&y~UV5lwS{r+w#F;u%k`U#}L5A6E{I|Z`LGm zn#xG*zy05z4_HCC?~E;WD7d>>G^_qcI1HLusQ{_Cs#&pYvc;V7m`Tx(#>wLY1Kt@U00L z<U9g0P5s>@ zPy&x`1sXrE16n7rV=^AGI0X}^lN|Edk)Ay;t;NOHU)a#(!6F!&&dcEx(C0d3(f8+r zK#K*ejq5#gpy#@LE|wWhimVkT3Wdtl#Kt)pb!dC19Aag??h4|lNB#*N6BxvaUdYdG zO)MM#IqyQvd>0Rsv2f2E8SZ{@I?1smb{YB-hjRzDfhYN&L}073oop9{%}98%gE^9W z*YWAT=Y=io_ZNHD*l&@Ubvl$*>l^UJPhAPjR~-diLW8-ZP zkM1im`1<;dL_>o0bE)-WPLa>YkEIw!91_YjN{0gvh#>E?21I3NGxUFPD9yambTP`@ zx?^U76WXaYlR>L^eiN-fu=!U&-@Hp7crInabEX{~0IYw0A2_8p2k83G0ifqE2B7>L zS1EIOF+Nt|lmo?bkLuBJ1chX80fyT2M}(O3oS4VH5~h3J^ro_v&in?4NDWd8dv;QQ zIgi9fj*N%9U?9Gi&VO8mj9mYwxO#85XZOW9SHP2)2vv#0#o=u8QFb)xZ3PS1jf{ia zH*Bxq&ga|;;L_3yB<;%iB!!DZZpoWgfaE^J253CA7$|Q@2gW4~2j*YZ0$s;m1|}__ z_DUC9_&XZu9yaSL(82vQ(CvHjrEgFkuU8Mez7(GH4IO}0uV0Ji_c<&kMQ+FY^Wk3i zHX|%@2==7oU+eRf#F7v(xCZaxuxoXPe5{Gj6YCaaKYXMB>++Btu_r%e$`*PQmpEe8 zY?=maHbTfuEM+u0bvc9MFE%16vTI#L&J6I_48@qXA`ruhGJ8%FQ!6LmK~VWGo0&l0 zhZ-fRFZ-dz!|No~Zv6y1e5}(TCenD*TA=1?4KR2Bg;2Re2ee!{2sp}yO4#Dc5TNGE zrd0~>4c_qie?w6Xamxordk;hR#$O&UGm}fMPsrH%-!_6Zl6Hz|N3MHAlMY!JOYNCA zwrMG)eBVRUbS$+|r2Qj=$s4e=7&02#%MqlQ31on{@9Sw5TCWa-$9uK|q&0Bx6V@Uq z{1~bWeHC>2JNgyprz48BBRktgw@2&<*R+8`!+;}&T%w>F&f7TH=u9yO#p@_czZE7n zPM8)CW7pLOkkdR;SRw!4X8;4jm!fTB{4c=W{mO70%%3vn3EXzsFSc z%!IA48IrPLD+Vv$v90)&p3JXNynd*#=m@vvX|yaB!Un@i;ZO2tu@o)my>tN0fY{EI z?zn#3b64Uxm}yVm#&ll!xsaXCGaiu@wFMQhof5MTq4WHG-tnPPUczEeF|S9sON{|& zxD$t$;-*rfeja=(d>;&33yyvcxAUUj!07hPfN85vF!Wn5JaIfO=Xr+&UNW08h1Y6j?-MHYNA{cjS=uHczop9TaKygwEIg50dHDhKQy95AGi5liq-+n2 z7nc=O0`B^Af-BtJ$6x1qcBoSMlXlQawt2Z zSL!-o@FX9al}W>G(fRHQe~`2mUlMHtnA~Uh5Ad|dt_Q4C1o)DqToD0MOtbT{L=2WK znY~xLyPN_Pnb7H13uwp~FvR=4=* zKl_8QXG@5>b~(2pgq(T#K_C*el&s7fQNWzuZ-GY;vGkM@3*IRN>qO?a@Rzvau zQ!Ftkh0z@Q$2)|Cw-fSE^5uSbbeG71!QPzw%a2@xyLm1vRKDyZpbc(!GsOkcWI%md z4p82%byJ@g^#2LoBpVl?;(9TkRdy*017nKh;oJtqQAtDL`v0HC5j=Js?Q=f*AyB$Dv=-TX#g5 z&XKyJrT-mZ^~CPL@yT>+{I52p30qo?HjJ6ESbWZ=(;wRq*sx^`u)Hff%0d-@0_g0@ z;r8ipi#QJ^0aSIs=7D@#?4L$5C<1aa9szwlRuOxOH2}REQv}|;h-c)_m;$%*&VqoOZvvBc9%IA29qv9m3udS|`+`#pf(;c7HpRt^79o z*Ujx1(B0IM&(WQwPW8RM8tDJm4Ma*l`dBPkLM2hXA9;lkFH3%sD&_Ty|IgZYX+#Tz zT3on>bXIc$;C36Hi`j?HqYKbAaBG@R zWUyv%q^RG|>@&kIdzm&sYWpxAo-VU!kJ^Znehx}u>1gaWqv?Iq7?2)xlQ%MCCGG`7 zOSuhHdjaV<@Q2BQWEsVQqHxjxp!$KZ0<|a8;fep4CPvoRY|X;0M>t2*oaRciUN?&Q zBz*dYvYj%hSyQ)8Swux@o6p)6JG(M|Lp>|xKAF7WTf^+abXBZF+;dEOOCNVhpBGEyGFxp+;9q=uZ#_XyLmsXvS5t5#aFZLvxk8c7!ycRmd!hOqN^vH zHkabhk`WZAIbbMncA)j{`aV@=fzRNGo8E2CvWG%@h=DS38XH>iXcMqgQ9jVVCY zTUN|hx!x8Ym$?$q_vv@Q$X}`9TK;_jtXeDXOL0E;Jt*o@T*AR50d3cd(b$G0RyV188SUb$zED+Ps`twehle(_-0nJnS z8t7Hg73e=b1sE9ki1uHY`2arF`rb>>8ZT~wUQjPNfvfs4MUY{oI-(`$VV2ZJ#>U@) z%4@zryB6nw{d452;S?=T|B=8z zGcC9;cp9uzv_jOzXN=JNHaW!q^U=Vl4da3N;Z(JiYp};O1Ol_c96tSMF^p7+%{9U8 zwlT6tEP4c;oPKT}GphWD8AYAQ1u9M1yB>y34A9)_36GZvHM`ET1JL&#Dh`9rjcwu) zCpOUg+#$clEnS0M-m|f7=_aMawYS6^)bEmH=7_(MLs3L6hkd0@2%@)W`3gAh7$rNn zS1Qn$%!ehW1OoHit+`9SO!+rF7E>v|>TP>~K8Gl+5o^8$W<1^Y-_0v|3u{2iHtd%v zO(n}fE`ehal6?k%3rk|h1{9WW)!nq!MKr7*V5ZswM~m#WK8R|X8yE)`r8 z)vsLq$C*@trSoKL@8+rJp=&GD6Q~Gni^72(Z}MFWF#K6>rYnl1W-S+YMKu`M z&Ea;`E{4vIK>J7hE-Io0_+ElHLwSK|CWjvYA3Hy}3X;pme*uT?a0LeKn+uHC&+dy4 zwdNs-1kai9G<0K=Pg+z646Hl}G_0P0=9bdia~}<|EVM}m)%Hwhh+~k2I38{zrQYZO z(=*pa#fLUOI|?yM%6kCI3zATCe}xwAf?2<##mfA!A3z$QC%0M++zhlH5exJ?JqKv` z=OMQhD^0zfurJvel)Nc@p)`xHbMeQ`lUpCvQTy?U9y~~X8~dN}pXR_84eQNO$T)Hu zW^mC(XF0N_hm&uu>-z$I2CYLQ8@(1IH^m6Dfbx^^kT9fIKB69Nv-%|L8p(U*d3Z9m zKLKXVp)$%@Fb}AlGnbVsIq@|ruIn`5-=6l({}`cxHiLl{WrD+o=mRkYI3wBr+7Cnr zry0-_nr%nmF6yU&A{gh<42uR%2m6RsI87)OEvgb z?gn3uM5?^uiSo<>8nz4tH^x^#hda6M)qkc>$c#VSkuw1yWme7b_(^($C+k` zXSebvpleBz$W47IQ~Yb)*%G0HHNfcBHf%G+Bq{}K6?>^Dn8)hSoSQl1xKDuvjdS8& z7%`w(XWj!%pKAh?-x70>%!4GAboWC^Z3c+hfz#R1jI8V zN_YzAvPGPiz5_;gXpp&>O7h`iR+#YfaL|fQg+qG1-%?wqEWO2A*G;KHcQl{6AEYWx z0?^;~OJImAn>Zot6GlpwpMxj)$RNB(NeiYhTIO+oL-K$FaOZ3~&eui*W+J05XIFz_ ze`&F3{@U&EcnzVf7Our&uWW}@^rM(ghYuk8R2}6Q(x+Jh<;14n6ejYzW(}J6_C;a? zmd~@}BnGVQ$X%Yz+jD&Gev;FnlBu4+@-OUxfvc%NN$<8ULK`T0#SYH z;5L5yl9A*iZ^M&#VI;6*Wd`;w^cpl3`)NHMwiVo<`;qo#WCLqc^DEU~V<$N<*6SKh z`I$+*9Jj&e;zO1X&*4LQ+&KYMIB-Nu{w)~j(oHC8^%zdFwAXu!jQvKXp~L|{ZUrsz z{#9U~0M>QtnFgS>E2YKIjU!m}SJTnmF{>BI;7K_3H?2WMvkG`BRzw2Tzl8$JytW|U z5Xt*979|!tN-%9X{RG%&&=O$%uU&vPz4%T&^7n(#zA1%|X$TcY-ozGxu7L*-&?pYq zdD_rw30&+3;R;?x?WsCJGrU?Q0Yh#a0~-6W$KtX=aG+w6RAd<~Q$wXG9->a}DnC)f zfWiuV8lFO(e2leJ>6yGFighjNO(RCD7QCW8go%Vg(k;nH5%fu4uwM*alMumpdm_+k z0l#^xl*YYeS2i9=M!A9%@2JlcQ=!DN#sy=^0ADE2e-A9b(Z~f7&;CmhIkq|VMBKtr zsG@w9kvSJza=&vD53x9MTim_cn}zVdkxUvyA2}*7E&+8+x!Yl>P_kDXPW{Xp^>37 zx)Y>?7fl1kKJf!46gV(h2hT(BxEAxlY3n{k)DbOr;tpVs1Wq4Pab^?Namp09+n(Yx zonMC_jymHBmISb$fIlfa+>=?AmSNH*mpVl*q%XwbJikfWvbPdBRJ9*$S|&L@<%V6? zcj9Xen(%MMWRD!Ah@p{^d6@iMxj{@CR8tQ!m-@MKB#B#a1DT}#*?`Ym79JwE75x$e z^S?x;hr6`RO`x0n2Do0c=K$ORE^lQDm6X1ECOoQp8-T$>CNsbIIbXIIVbH1v za0zd|WbME%XtrRLOlB@AY;8nCmo2BDw>`jNrQ>hxHzy_C9!4Wd6#CB&xD78&Z0t&x2>ik)bXR?QB>jLvs!6x^Yk$W4a3 zQ!y9ECM%!sWLDl%{7WTFxvY(xLf4Fo;ydHM&%@yfC{uy+)lfZNdGIRhegSrNq7umO zxf5u0i)z8{)gg3|`itdod)kcwYL4Ag|DS{T2Z|IU?*2+_xe77IS5spoKdodhrrQO> zldaqbEWXx)!M$j$b>G4P*7{p9pojMSlW{}ecjjMM$b1CFyjB2npXLHvEK%@GyZV;s zoYn(1poK;R(Si)^P!5m6g%ue7!T?mq`iYAtJ&*IrJ!`qX)pN>F=A6B7I7rs}X#;o; z#2Z`C^ohyhKM3D%vXY`tZlj7f%SMct9=uP+?LZdXYKyK+Gqoe)x=G<>XW>))62VL> zHVuPEySEaNvsO__*In8I)Wigdj5FVJFsc|T)KXOf4ZQI4kzlEeycrBgq!^4d=awFi zDh?ptVr!^j=XPk+nA3lon^@aeOYuGjVN3eWxqt|vo%aCCZ<6cBU!`_!_KgAE&ihB8akICX z1B4{LF9ZU{M3=2EalBWt>>eta^Nu`TdzICyPh|7kq&NeeS9<_8MTEi$bZ}$k3yY7)*1eFu$h5-33GO zy-3M-5{vCSzZqL7y-iF0fv(5XP@mFzB$JNqEra76i0 zEf_o~-C4g#3aNgtsxAvAWy>#1p!lOTK zYi`Y_#j0Uo!|-V51gi7qTA+K|8~@H-G9#OoUfN$gihx+Lv8vVjYPdUXSb#!!{J5W~ z1MX0mjLr6#$J%)Y4z=}^raqR#WvHp@{#Q)nad8kdl4s*s!RJ-qHA9TJ zC6%%i=#}M5utfqER~~0r9q zvL*u~iSNh{UxD@A@dJpym&I<2=+khgmbL;~XlTP~zse@(qfjB?f54x!GypZWX7fF_GKZ)`;CQ@4SezKjGq)`)&z~{C-5@?;uAuXWCBXFDC z#1?bc8DgeX6j0ANyK6-m0_SXlFHPPYnBHkN(0V32$)Q{ebTchy^#c~|Y#RU4CVHWV z^ZS3w7X!5;iV!v^t^w$;&xFP?tPM6ZjSiRM7Sp^)td2%V(#Id6pK}9W!|k_dEHGuQ z1wzY~QY2a%*raw9LxApgUje<+X*TL#fo)ZiA-o2jyvw_Qmb)kgy}i7FR?%j_xCug{ z%WsLk4s?18T8!Og%(^UtH^OcCL(`(8yV(~_%i3Yf?)~pKQc70dM=Xc7lyudfA7e+1 zsZ{T>mMx!y%kFUu%r@Kf{ST5NyDwWov7dvtOY2B7`P}1h2QC$T9de`S!-O^RuOGX9Qd1e z%>=gSggw4k{Jppr9(8=vnV7&4e~Hd(cOwMU$`EF4F+Bps_ndb`Oy%{4@0l$A*9rt> zYnIcaczcz9rH(yi@5g&d(U(|-(O=P)Y;^q`WpuT947cmsL!7SYmfr!Xx-At<7cV~D zEBkAp&-`BGG~XF)ZNsx{q02CY#7`{&p~SJ4lT-CNCeuzQ8${?S9BH530Cx9V0CZEl zXF+1#lUd`R;y42`%$$Rb*fMFr*3lqNTssK{P|RZP#zuA}E%{zHtQlsV_lJrC#t33v zG;{(q7$&(HVkxs|DV2L4Z+@o9Y1d4+gZ#)F}SLeoBH=an5!K~t%2 zK7u==cqFj+^&z0!ValfdpbsA&a)b>XI)`;Oq%+t!WsuAk%PK$IgDz7Sx-^NH&R^(! zg={lZWzS+3{*RwAe#QwrCSm4HG>z(>7}Ih_uR}nGO03$yZVi2V{2T%4vYQe^% zp8_WolmfNCIWk>fyL@;;1HGHNBi5bq#-w)z)-Ch|dfSvS!Wd>B`XU@n78XhURNIH; zwaNGrXt8b?u-6oR2-RllVYq#EQP}(C1+ zE36Uhy7@GETiyK)3*~9C4J2Q2vvy$R=itTvhpX=ZkFtukO(vO=WYQpQCNq;V$)xw* zLwYBb5+IaNLhnUtfY3n@5EN;GAWc-7AXVu|l_E_f_cBuA}ErS(xhMi1BR^J~A6j_c>B7*{t(MZK_xB%HgRW4+g<%+sCseti&c0=kV4D z6gq!DoD>}=!L0p>74K8gjpEGrmRJ!EJ&e_23XH0&MXaL^51CF>#x!7F`Bk9mYw>P- z$H?ih`2QfJX~uhG`SN9K!Y(&h@#;W#pu?Z$d%jG!8CdB+`B*V|7BETS^p4Rg>lVZA zy0sI~U(6sy;0YLPtlgMthYjxk{z9)r)c9_(Uu9XO2{ z;#mcAy5kjKRvPcg#ip2#_Q7V~(gkR<E3>?L zGEjx}E|ff_C!%$1qVV=yOm|bG9VaQc!w|DkU%@4L220nc={U{5^YSz(8~v}K5_>;j z?b)YnXDMqh{9*Zan$%J35^LVACwz?2n8!k2lXT)w*fMvw1-ATx=BlvYfelGdE#J7#;gr9a3}`@I~9Y==2y}pIH+~qZ}@qruAEs#pM|H9^MNHB;LylW=n$XF5w&$bzZfDH=-Nyw96 zP8!dONtyjE7JahE9K?544X9pt3bV3&2&xE|a$r`+l;%V+z0GhjfJ2MZ9n&V<;@ z%Ex2zts!s{Hbo|t&qW3_oeKV?B;RqNG6nRUw}0TXQupgXbU%7`V8v8i_%?$DL44-6Xi%!YS#f==sW5vw1a+|A1xn`>|6_irUlwm+=!^fn9T_ zSw=|;>wz%mr1S=At%aVV%_u~c^tZIg5@vNk0#58fgI7L9>B2laz%&2TIdCbx#{y0q z&4nS=y``XLeRMOiPX?8V(x#pgf+g=r#EHig_#3nZU(jDlPy$u-hm8X?GG@`sUgSnx1^o`aSyiK@#8-tiQBNYSNAj+zi zjpk9N#~0j8s0(Ljo^mQ3nBmC6X1LpkoGHYG3r2A^BWj)jK8k?;EJD$pV-%t4TGqb_ z%Va8?i%OtRlodDXrL1oSkF1AX%><|4xq;KF5XQ?sgS*BZLf%%=9x3CtZ^PF~GB^fy zS^>;+Wa-Om<7ImAMvg)30E^9fg@#mC`5@+!!{^@-@hVb=rhpWv4MT^92U(uJ+dvk$ zj8q@~J|#^;$Sz=@J?Sej3hVti&l=mV2Ph`#bOhYotCs>}>pL;`C9&l84nLg-_IEo4 z)cn#&^)+ELg;4T)f0+}{{LKN@+%k5Rs?v)L(KJ)c?L9AmlkOO$rr$yGNb#gMjM?Fv zA+RK^Vuw<-r!%l)#s#c)xVI&#Mt2pOQuJ5k>x^mUmo&OeVrC|+oCxeDXMg1UJIms6 z;t(+8tP0{!Ow&pQKb#>w?stNF=M16eYjs^=DLU64sK3lvEV<-8=nY#f;Mlt-fTQ*| z6U|(7{w6}T_iO@sY)%9khAEh7<9e~@Aavn;5iV330KfP*meBWXZFZnFnvU!P2N^cr zr+cpjn0ikvI4r`Zjd6opoXuAdNEIP-VODPpXPmwn7txr(eg1$`#@$Z9?vCVom-APPUe5O=!O?(7J2j5EgV)*({4 z>;#*n!tEAhzyJ2FU>Q@*26NMeX(uCOai1=@)TWE+Bbaro-Yul-O%%|<6$3;GqLz>? zqL-5j63VVoaVoR<0v6lm*q(y)ySis#%GEHbmYE5<-VQrs&{hN3Vum$0Nc_I5&WP{*WhHRbE{7xhtaR^`j<`?#;4J@Uve@F8ed#mU zs^x5iq$Wz{ln4*Y?vlrX0U|D|QnIA)N>Yz;3jIx;4*)}B^MDy)B(#=>H^8pgAS;(@ z=Zs)-n&G#8HDMM2j#4-EMlScM2q#S(K}1wH^D~Eqz^pmUQ_EFrZK!pMKdJ2@9o(iSyg)PfKAQ=%sY|nW^%g1az{(NV z=e26dWYq0B#4hgpK2X!W=D&p!UH^fo3EkHZ#g5&O_U}XVX4%x?3f+Q&K^Op;+UeeH z$TU9^f>h4iBaYY((-~j8B&4py{!z$>e!NXx@4CxOu_a*?spF=7&cN?+V@jeMGn|RH z3BcmpZ6QV~TYZTqB2_vkisu#_~X&NdIu+?{{ql!H-RACWM% zGibiJ1Itt%(~8Zmj%!5W86^E23!MAGGY&{RR{6l9e--hsLJ$;AN(%`I1}0o4d895n z2uxl@Db^!)7fE7D_f4?44Q&GI>YD-ezrJ}_w}IWZqnrf+m_C3;xX_+I&i?ZdMl*LA z)NEYy*dvvc*$0T|dGW)MACOrCO(gf>b{& zV5~jU7ts=V7y;}T7$GdR3w4x*UQXF?O4!yFm{(*&(o=4~221JFNT7Rhqlhd+@ffyh zn_xyZ{UPPAafZ;l{eK++Ay9k;d&)6)m6r?VZ|8Oo{_4-fqfw1JPrx!|d>nV%X%}!5 zVwl+^B2A9@6Q35%e+0LpBSkWFOl`&9MSrne9r)*PcsSdNIaAGjA=N!|&669tC!|vS z5MCCe|2vauN3OcZpZKxMF`%0qnOp*xI z-i<_E_i1<3gyDx7)C?xD9}co+73PMq*KYq2m>exp$SfKDWKZF>buvDP?IBt5@qr1e zzJZ%&6k8&Hrx=$NxBd>6nhHvU&brZ-!II6{6quv;C0IGTWlGu3#jq(qq2f^?&i$zq znJ=GAv3oOYr_gg_YtA8=B-w5Fl*hlo68dJzS)!0|AHI=!3UNLPOUQ3uS=r)+NKIun zCW4`d@0$qMgiW6Tv%Xtw=`ZQ}C}5Tk5=5RbV;wAs_eTR$b9({(-mp+nkr$y!%Qt@k zb9(7MzK)R>O}UZZNdt5@V*1Kj@(8{_w)0HlIyY`Fnzg{p_x_H*Fh`N6Nb0^*MgXI0 z*84Zv$$6{Sz3kVo^$>9DrrFha&GC3ZKGkb7Cy8_R<}iLpW%1`GHNPTif`b2sVrm ztBazIiAvq>~yJyqwY}~1PGYA7l9+i zpc-jL4pZbNqsxx;9m%;P8EvqSK zRE6gi4vKVRj)^Fm?S{q68}s5w*4sRoNL$^7R{QL8mLYh1au-6B=-B;L?9@Vi&CZ=FT2`>gq z%2qvL9eHUPFnG?tH&w(x-)fmDB|H-=ZlygL`DpPpjCaFyM&fTTL{W=UTm-`Ov*-Cy z;+7UZK*);ei-B%=pP^6C)a59#pO(Ws$S;6YG zK|o_U+b7&^J23tUyUPH(hrsej_kk7Wv$d^`?2t9b)it{k-sywNTg;k#A)oTHLb!A% zexK#d&cG_t?NM4Sp=PZ|eKZOJMRPSVHqfeHOBVQhs;^sB$sua<<8s zrUA$HKaR=>(xKl3x%%1i%7@nVX$Uy(bBY3#0DKQsZ|{JCahoW%9;fInEFIR_(wL9ZFU)HP3r7wgJgn4@-~ zeDsF&-S2%8ZGW--z^(RM)RjK*;yY=D6NK-J>41b@bK#MClEN%)Vd4*6 zq2Umm5{^)1F7&H|S+AwE(8meyfX_(;Vc130+y+nm;BY&>Y4OPjIJ#Z@3FwtO@!bO4 z_tDI>HH+41JfQDR0?Kr z(TbFOI$Ras_)VEgMm6>RmWTH;otMLs)BhRqu}tP|khJqfBZmC^H3LKiH^D368Yv@V z6&b3gr%LUS0U_sis^SmZrT6gU-aCe2mG6>W zWX!DhSR9miQ8ReOEX1XppzG}6Q(-G@=m2S2)0Hxu_Ddcooq%@$1_5W*=Hl=~NU9Bm(o8=JgSSo4W?WoUn8Sfp(Lo|C)< zmp1!Z6OIQtvT^Uwmop=p;$C)k7S=Mkd2lEt1~NS-amBp%m)0;xpX;qc6G1<;lVMY4 z1DrZn9YZU7t!P438&{aj^cXUW6;nJtm3bVMNV%r4BWc$CDDI86d#HuQ^X4UUaQ!S3 ztkEkc;Dk=NloL<>$)7MASUhtyaP0V-zyb5^ukxC1z(l4Y{HBZj9Dn@E(Aet|%F;dplN zDW7*|1O-(jy`b+70Hd_ua0f)&1S}Fsje&CHQs4bHLzxiW|58FSw-svlN)7rrO@CC&gLpjhW19+=H9^(O-JZ zAFpea38q$J7A@fCmDU!P7-xl^7kkzsCjSY~+#yg}pvhb(rTVOx1@!+T2N>||ATVX+ za-injb-dPif^;$LHdiQ9yWV5B(XdE#5B6lQ_^#W5EoQ$47CaDpj^fn*$aTA-MR4k< zFv4ut>i|NT@2*AiD-{_{#pxdGJbO-s zDc(K`*lh1}gwtR86zqe~3}c-HAA0?E8_vExphV(L_NYcinYN9*TPoJ|-PawWN~`TF z#&(9@l&ik)kC%(_fi!+r9PH!Ic9U_Yp-V4*9Tdxa(?Jhwg1CC*6;Q13kX_N_?kj7>aA< z5Km*)e|_V`{>2F4w7U-I_5NKHICA_Hn3I~{0;4LA++<$ z|9hw@zb{xs(*HDvWeS`e%b)0{-b!m{a1I``PkJo$v#MXer;ou-%nf>dIhPl9CdWc{ zE2P{83c;>!?D4Wje+qN|Gh={`TMqy=W$#A+<2N01wovv_5DX^WjO=UUNQW%HXTU3sq+C=PPxdWS<9jkP@o z%3+My^wCCO%=H{#wptE!`ZX1(`zq$Y^#bHZ|6m6vsr+Wuk>T?moMy60aXWU^4pyCW z0vp~de-`8;bNyi(D>bMk{04ik#IaP%)BCa$?Qp&=zx6Tkd_}xwES%Jur*sPcN5>!e zPY)QljQpk?%&N*rAeFRxA$C!D*dK?b#mHJ<){y|CYL|e?;OvW?&=SP~>;c_XuaODOn^8<4c-0Fyh3xfa0-;gl%<%h7z=^Y{cKIHl zbTQ?;M!a}t^=vkSrOEb)WIBfSgy*#Gp1|l+bFJ+xT-8$HLNa{iC3d63e)7W}@Cg~L zVf%?_QB=nb%IdJ=CBWns6M*?kCjx8UtOky25;g1@wF4HNM~amtXEB$ff0RpogKTh4 zXy`8#A>$^o8}aytbR2LKIu7ns=#wStsDv^o?coR%QT6%=P&@t{Tnsyh(L4IuB`X~w ziV{e>c8jWp>H-B!$0i^Fek!}H$@a3?rzn*ImrJQWq-*VAzqp+r^BKf z(iNDsmpqd7XfUuLVJqD`F|L@5?O54~tKB9lJnwxId~DnpNqhJAfr>ElnYxoBbE>{V z!4}~<7o{$@ECs!FntIkUUoxsXQlJK$V0!X-xeVKJ@_kIx)$gj8;Q=TAm6Pcf`H2`n zp-JYjTPpf-5wJ;2&1>$si5w&isDfMedq+5+RZg*nrRHfp&~A)*LBp*CkFa1gm+Bx(Us(QTrvziT{%`^o!;+i8sA2prX8&p? z7+ce5Wv_F_5#yiWX!G@QR=u}PKOSrJJ3|gIz4Zo0hmOE`;=;;L(XaJ5)(tK>-`uwJ z!9}~~RU-F=KKyVsFXRdzI-U889!SX+6R-@zB4zHMF!!GBhbac*eU>g^$11KAC3X?y zS-uatD5gm5x{u?h1E)A5$h5Z1ZnHXe>!CmW42<}uGri+~q%Mt|s;IIEV>JRzc%VR0G^QKK1Y~5u7h(+~e3($9#;D02;|qL&KB+eErr`og z{MfI=9BzVh#(b7bw>6Ce8B=3N2P;+=9)Y(&X>imrWcf)JD{@9No}nt*eGeK$D~;%a zJI7FuHk`P~0MUJW!4ji|?f~Mb5qA#H#Lx|^)-Mh48CY~4=$_aXij4P03J{;?Un1uL z-PXb!Iw}WP`N|7Zkkg6|!|dWjo^~%LS$M@aW30xEbXZJon=yLCT|`Hy4e4e~#zrP) zna!*J_9QUr3)XGQtRa}}YU@tX&_AR(14_|9rYSK>m092t;20-T;g~MJKu*Lr zjAR*y<2oJ?W>-qW`i&&minwVQ4%xIE0khj^?oJ5!tOn+okVB{qg^O9&s#^jl!$N#5 z#W~CY=8tlqi?hHld1Go~`5Mj+$X7bSBS+8vtS*{kp}6v~EMd}8u`#a0SfK_`Y^X4H z?sEZoMSZ>5g^<2{hY_~Gf7ZhmG+qlVDbFI_tp$d>_#7D8bJu^G1Ujp@zxTtjxSvFv z@*{BE2-cK`>b4a%2jh7*NN`J%Zt{wFpyFj)b61=_9e1joP>zmjWXlkuB zS6=k<6)u)|CJj7=@;Em~IV>ze%TjDtnUx0$WpFXEpaEi|X>yNeP){-w$tVhO!n^u| z)i8VBh$lZXc>FZj1AC7K#%)OiCZ@`G(xeg(K-uEt^)NWO^(Qs>Ef;L*A6hRGco_?~ z5@+VL@lWP4_`o2`NGW1RC)}umqYeYDWLV!#?y!%c>v9ti!fsG2pz$yVfcYD$fki)j zM(;MaII2)~C;*oAB--AL0qWw|0S7c*0v7vT1*&5{21Xs}0#w)vHkAtAqxM~P;s%x4 z9yi9r(!a$zOK&_qX{Kx+_ut?aGx{N3SC=YX<}*oEofx!wk7y;R%h;AmkzZ14QMUC= zq_n<@{Xo5X4=nY`|DcDM`txN(8>aJvOW1BwLh?3NP)0a~bBTtEcgrbff$~5519P`i zDR3+v%~&Hx&4Q)m)c|1mr}nu0yLzD=%)P%PnVIggk-{(2w_*;(jbRyUI534{I2>6B zz6G1Bn3f1!Iv3^)2lhtg9>qXaJ0{oTM2)4dWc%qNm^JeXIm@Lr{X{XW-^L1#e*JC= zFzGop<$^mD8Z(9kVfxDTXE7A=%b#Ioi<$1k#6wj3O74hRqE0bf>KLEA4Z*!+e*l9P zxdCJR_RF+#sp2oH`jwGlEyZr(Dl?__HZ+5)`lm*qbA|_NKsz)PmXK>7it6YeE^0n$ zaw4Q^%j5&_Dj2sASn^vCaNzk|yba|l=b6nQPqIbiNr@jOM6+LLF@gGx>J!mpYR2A@ zS>qz_85`l2(eDzp@w{1J5G7d?{voX&0;8IbkTq*28*tFgQUn0VP85-jtLnB^T1h^czX+3gBEyq95a z7=h!uyoRlKstYhlT)vnc%dO`52iT;_wqjYLJmOoBlxJu^IOz{O5nU-RJ--%#xZTp1 z!&Q4@DlmT;1}k!DyxJQU&Gk(zNl;`f{-jlSz%6?*#a@9Ei9(&@LoRULRfqzi7r!QC zsOR_R(14N01?3lZ--Up!w5%(`RbDs{-GcpT!nhg0lA|&ze3L?tW347X`vRPL9;Wi+ zv5wLq&}*Ae2ZD}1f-UKO1TZUt4~=9!sb-cY-f9ge-}a>Ss7gw{q?-%5qpaMe4=m~^ ziaGTywsutx^WC#cHZ}@+sXRpsM2;l`#PufM$oF0|lTvz@FJR66={iuaPX(HSK1VG@ zbb1E!#6oW-?7j5@hg`;`)l@}Nx3KDR?4ANunU8^!zc&GOD?1|{xfF8Rk{`vk5mUIC zS!LYK+d`cId2OTH%qn!e_BFzLe-=TD=@PjtYeq08xl5Lj@gt`-(j)Qt4rHXtg|yP{ z0d*{|x_*q==fWIV;_~unNuD+umh{UkRaRXDC^GW-Vv+tB8#vi`#WSwqp|4;m{{~H_ zkW`mfz~XyOh>omIl^E*fETZhry*wFMGF}60SxOhRd)P*A`9++z8yt znf=56`IG9t-hy7w)Lp30pcS8>wMBG;*F0uf2o`Vm0C6ebZ^;{eQG2Wf)g%J)-c z{+ReKR*S~+ovCB!-i0VokK6aabwf%DpuF2iF=6*PF;MYA2L!Oa+8$;@bAwPiLcSgY zH|6@aKsN(9P18Py;}*{_Ygjr?*@B|>_~jwYc3(0#-A6qAZ`kkkvVk%=Y%?w$LhCt3 z!e4m}i*J@v+pjyp(#2vu(72*A@sHEukZGbW37Ps_Qq&iN*t0(+501Wji634EP3c2fJ!Qw&60}QNMmx{J-E^b~jjN|pkp% z9>F*1XGN2j;)!DrLu&;J#e`JkPXG1sKvRBOAtj<8uTt1Talu1miPd79)MhjDmVV+2 zd*F6Sf5GBr{UuNnE(CGtI#O5~Htj&2)#U+$`~LawSg>&Lhsa*fkoSR8Upm55`^nEh zqi#IpO!e2tVAi*Nw-eW3y9U;X>n-3F6QzbZ?i}xDEEo69_Bu8Y2Mc_^>;-`XT9~OrM9AZuAdFpsMqF26Fvg29KE8E^tcN`vm61VXNts__)YSXXU3p zWkCOp1qhO&=H0?+n|^s zf%nT|$BWxEvOXdE85Xn2LeH}iBDP!x#@@Uy>k1|sz8#jZ_&sdo7M({!Giw{M6`f1l z9q#bZd?p%EH}emXGu=ouf2Vef;nTEgBZm3<9cW!dA4K_U92+e**Pd&FMfrOvu&aV8 zYV*w!*RU>>yc~Gdd`c4^78HwNoVG_Yf+-9l73I`+jI-u17Rv6~??Bg=2Z5S(zXFX* zh5@tejlk+rJ%RNFC&dTV%tWh22Y@bXE0I&rTjq&&-Den&TA=RYHZDP>DOx;YHWc$k zw_drPtlViHV-2kA%a|gEW0;KJjH$I8d}p=p1;4y>Utm%GIiTImV1{$qUkHnv*G{0< zezrvLga_}2ePLf{VOJa`--ce{&04Wh4m@$7Iq*zG?%7TV!BguHAaRrn} z>e1wS!^(GCm7;omFSAlhJyLrkaM2kT;P9X-#ObNL#&TXK9hrg~VUF_Ei0ETl%tV2c zoBn+cKpkjq!kYn1@90M$uKZ1RVb*+33efs52bTOwxvp(h%VDXc`~DPj<%6?tYAJ2a zMR-l!$>#950RauhY<|O>-LzMk2rrYWhc?1j)ii`x6t}NnO2)m6H=yzp+~mnBEuM9p z@9?MsE{j}NZtekZO_q6YaLDET!Zoy+810nFM#?b1;D(d4m^FMrt~Flj$%;uRJ_Ad& zvIwZ(o+)w}ZN9TVaD*C(N1yPKHM5fHuMCI9RI9;5ToABQ+~BMDqO38}^6eLr@+k#| zz9C+uX|%3`ExLbU2XkD?aE4P|YY&TE<6c@OjNo1IZk_$nr}}+B=^hdE z1F)jU2o%5j%HHs;`-+_3|LR;!RCu+Gg*m#6+y7$P49CiF{`*hiqCCeMtr2HR;xEMi zE7SA4kO+!5J0Kdnj$>e+_96qQd&7&}qfWGgIYzx)fm;qNEREO#$2?aL|5h}2>+RiP z3to=lAvmh}2e1tLYzOzlr7|YP4nERq(`wy+y{oaP4DP1PC;T90r$YRkR>Cd5jO~~@ z>JKY)29ne7aum*ICr^@OtSo>}i}pVPD<+?kIp76h&kT{iO{b}F)JzIlBT$kDj&=ZZXMaFlS`nfjOt^Jz&XeZf#bZT<~4Qnc;AWs~}63UFyUfRovXq zpKb@J`vmkj4h&X}16J<-Q5N&YDi!yL>qQ2_2i|~lPIEEzx4GE}i+@}`8yV*y53#Z2 z6Ar$UWtmGza($)uFc_Jvdm?3mtw?VOqnj&$$tSwlYDuynH#f}R3|)^GM@qcUm$B`l}lh&***Msb`MGY z`zO_8vTqrCbtBMoqZ8^osEBDK&#q*ttLhwpb>_==d~Ve+D_9+LW*vbV3Tzu zRPSaVp>YCxreF>@G_nvbk-fU}g94K%$*6JcYQ}c20lJ*b2KroY6x9+G!%;^3{8y;L zvSIb4y~iegIrd|+e#mbL!0hvW@GkuLGDaCHspv{uD@8}FHXUEefK7MHsiu1=uF;ke z7Kab2E6B)o4OGXR!&n;A8WTq_sgGYkq?dF&3#akcOW+-_Ms)PicdB`nkEKFpYbj-J z`Uw8{`$8ykmFuu-gMoh=l19)$3a1L`7huDXQ$XLbe)RVJr|v(FiIM+prH;cpW}k33 zn?_QF3KES=dx`M5OGzOmPl&N4=FNqvEA3#*nv9ud48XKYv@m_nCQHNQ*MWs4R;}22on3UX$G4!HtnLU?% zoW|uk)(uVNpPI?5b{yP7em@AMG&E%a%#p31z(*(L_ZB^qXQv}1kAO?vktfEV@(J{C z{8r-GM~KwJ50MSMV=GcZWM@jk%w>0gdEyc$m;Qrc_V=79Q#Y6L4vKMs>&`w5Y$#~~ zFPBr>fIe@jT|^xw;TL2JO{)*?B(=wzI>Wel9Mc;lZ^W@ZFHFp3e8>)|@Sh!)-jd3H zDa_thCxOx9nbCH?{{aj!P{2ifV}zKA8TdWsG-HQTdgnbSN!FT9TKZvDXp@j)sF;MA za8<4y$?}bvJ{^|W($UcI<^4KRAC!+<4yO(WsaOUr4+qNc9c5TmD=eqWq|V0uERm0# zZ13yEmJb-s)|P*^Ml2Cb{Ivl#pWlxmJK?`~gW0oE4m9??$7n*+#9CQ$noNduYURK> ztS?|*>Rbl|Nt#H~N}I>-H}gkQVTt}dVD~@CAnD_oSW_hXR(o+tTG=p9@PeE4J+iOe zNH+BXFM#~2H=sV_CX4$);w?s_y_@cu4?cW45&qs^4Fvj*qL57(I|$;W=*2Ral_wSg z<7WR1%)Mw!m%SCtwC@lx+A#jH0dB#w=o5Ww3HA$G+MzB6oa&C{nj?~S!fAMfJPqO} z(aSf1>RUYB1(M0CJOq-gth#0ScBiEOBNL$ldU`T!^G0B~V!kXKv%r@Vu*GTuSc_s# zS$t8Do~Ad|0d49L#N+e&0*8J6w^GeAKFoUwlL~vLMv&HG{bpkKpHOsv?H;&f4`%<7 zmpmC*?sZ&5H*5#F)V_d4)K1MWtSO+Zt-zzkyG8KU9jrgX9=6vg-fs*r%<4Td?1F&?Vqp%HZ1)M=BbG)kI_Kxud88JUfU}Q=ydHSY;Fn7k#LA(1k72#MDp~ua=Sg8 zrk>`9n(upw4F~V>(qh<)=kdy<%5SGKQNw(!_fSwR7adsEq?@23Rj1z&uG(`rupop_ zb`Ny^2jaz4?;>VRqVJ4QTB|JFcyd1L8pj`pmce2F%9i2sw)&CHsdKz9TemMm(z=Y8b5LNMRR?YNHhEk?n+Kx zLcZxVhZlu~3}I)Nbb#`_a5!j0QkgmeHTyVm>3!Rd;U`fvSM;a`Huzxj4plQ_5G>`( z+W^FSwOc$# zhKJ}Hr%<{W13uyeKo3(o0E?Hz40l%6bIZSbHFaUk$i){JV(<9&kdlmUaQL22b9AjhmA<8$` z>wg1{Rf>1|Yw(;ljJ;FQTV&r9UMaJ-lMSBx7*v$z=Fdnm>4WNbkn>tf?U18~7w?G#kTG+vbzP*DMM=zNOQ7+>~_o-Ox+b$s%~ zjHhw>8#sm8leVH}tpLi`%mw;AvG`xtU4%}_hFeC}WGmd#jzz6d*aGMI0b?J(1}66) zom76X9av+?VczY;$1qCO1QMll6vhK6dB%^zFUM`0_|0$C8}C_^ zqzj%2IjFO;fCvjc%nE4X$i}ONR_%mSE6w?}ySgu&qJO{ZP~c{T1Eh9N7TCC_#_+sR z#hGlUG6xIWf3FO(>@+}jHuhEDhAs1CI#MIZc~NW;`-XbvaPPLM$4#MY1<5XobQTui!{`T* z=;0h?xNFwZLSfFwt1@_G9UCZ0-K)JP_}d|*1d`l-xduKiyRQQ^Yi1)(&8>YRlukW| zan@dAV|2UDI&Zb+AkcLqU1D1bWg*^g0xZclDZ(>$L`|`eTXg4dkQ=40QvX8+=bi}r`*g&Gqj8Z2Kv@ejLOr=ScWm@ zXo>B?UNP^c4=_J?Ca|6RUL>N!Srx?eOaZL^A`%Oyeu>dCZ1@UU_7j|vBW_@Dm!~Bk z_wecs)C|f(mi^zIyOE!XW*(J_e0VtyBBMK<{}I@{J^9A}pQ~t{h;i${e6j6q;8Hoq zn~R^V+mVgiK4!hBtMeF#eZWmb>{B2nNc{bNG0Vx~hFb`tT%N!nHrGy5sP%cJM}0Y$ zu*9yvx8c1$k?tOi%>eT27w`n`dx~9F{8DD>0$c3NlWz zwLU>l?ZPDfn09cHaLSZQ5a`sYl)*usIU;;ovo)x(w5FeMA&qKxI(+)P0KrI2i>a!( zB#I6#y{%dXTiM}bjI8_-S<tM&9dmZe zf8~dvE|u^~z)Q*q@VqMzJ!L z7JeuEP?q4mb7dAzQt05WaEiJ+m*bpbg&oF(|Ncomw>^Yk@}X2xzLE`mI-W?7LIN4N48CS(d3`7lAVhhXeJS*x&(?#Nd(ODyjOz zWfZ+QgW2m&!|d|1E0gpR6Sr~E z)OB)(3l<(6&5OKMD@kwa1GwB3Rq3{dmw@>^-v&2h5!~>pUxx{>1eskt{`E?V|Gu(qJ+a)GtIPw8J ze69(4_w_sjOTbl}6~RS_jY?RW4(ovKBX6-s(CED7*m4BbTc^Qv3D#^UeFfhzaZXyf z$qO|a{icONh2>sEoi%E;_^ll8hZ(%Ox#YE`qbgu|;AB3CY@444i;MGr*KK)xZQg+3 zFYdc29DRs6RBoX%QWn1i=yvrD&|s6t@vM$bDehHh;IUn zOg^CTI-|6oyB-$Z_PIb~?Mz_cajLL|&x&P1h(Bc;D#%#4-C9hPgs4en317}dbl|6% zPoTQB9^4LY<0ILbn7%3l)62g%Z)ME$Q^-7V1=mGNPP+-@Cv^++)l<&6k^~a%OEDFY z_}j0%S0H~E8@b-SBP8CWxk8jUJ2kMYFZ%JAEaZ)Bhoo)x7lL?8?0V&!gMm#4e*iaX z3KnAvGO}d&oOj?WZ70EN_%SUoxl1_EyZlF%HZZyZmJqk+X4x1KN2ZNYK9E_sN(n1U zQGsGT)Z+t>cZ#bCcdlZcB}DK}_LjW}UL_8S*d|p|ez>foMq-?JM%1sr-UpdUb!&oK zy9XTR1)UcQDRCzr%P;}gwxkSA#%DC zOI_GcEJ$~sv=epilOJMEE7hOG(5~nhuyPHVs7G8cpmP9(9p+$9Jb@)7zz>)n^}C=g zxm;4L4T3|(^aW_=F}p0GrjJ|1`I9N_C>vddlZ68dsc?pkdku_rT?A|)kAx=KUcLZk zbu1VN8E%^TKX;a!Mh{Rx65>ya{bx67CuQm~1Wmi*KwmEKGMiR*r?#l2sLP^kb z?mn8>`9t_kx;+`F-Asb;xp`YC4B>;%!ItFM6;z(Py%1zszWq8fQSpcxac57qlI@WI zpj((9%cM#D#G3mMCC#3%7|%m9kJU0Sy_ENNKZMf6^v2s;IQQjYJ_}&TAd`h} z9f|qx%-}vEPd&dd*E1O@e1{wSGsPv?wJwV=4>Bz23%KY$oDcN<^a{U-e?%RzK4c;Z zTvu}$4B#71C(}futp)h3Id|vDrLvpz;Mjf%D_}%#60T;IJ0tMC{iV2(KW=3u9ODjA z-OHaw&aGUA#YcoYe#lINF)lOZAX_^<4kHA@U$Kx9+8$Rysic@4-rGp*oIY#W#KN8~Cu9=N~ZZR+!hD0yTxOm4v$h zD{lKTaMgLTX#DWkh|^BWoi-V*>bRQ|9XOoSwwiAZk3Op5)}`q-%}`s~CnfOH zN7w$(K3G)O?4xir&C)2a!xm+z%VyIpnMK^ z1l-{j3ya$oMr2s`naG7t#d`5;{QEwG1P-6dpTxgc^Cy3ZBjkzl=ssHX-ARi^!)0L0 z{_O6nGrk43^CS7zeY^wc`B3zTxqVrcTII*A@YIy!fqhYRj@(Iv6{Rdz( z4PV#tSBYXo=CHTVJ4i8|Kc6aMNVf^Vl>6kny4xFoy&I^k;H3~yTGARGKP|5O2rkYK zB4GA;+=k>9S+o-v_dy`y9`?K)%<{jEi%a`8i$20APjldinJGPMpTN_r@H#Mj-F|SA zX)-qEptYoqok=FP7bM`&mnVRlxh59eyOO+?>9Yl5J~L}9%&KEz96HV?6PE1V24Gp^ zHK21mYu{@c^Iedc$tF4w=2+~)>7;d9pql}!PcUAGq1cxz!oh@CHY&$+>3VBE~XxJgyrire-P01 znI0IB5Q!`%CqIHYO>B^;@@azE!6g;w^7n3ZRHg@Pu;f-(%{AWoC@Zw>-uHm2x8zyZ zi|AW%W$YHv5yXgOIMxZSv7;Mg9*$DNS3IJg{D}=S5TcENPvi%m(vrAWka_9oO4?fI z?Z)E3L|h>=20>CCF;O686pe&g<3AV&Xq7TtOXqP;rm~U(z7x|85&g2@8}nurl#(Qy z)yQeq$#d^Wxx5GK$M;W`BBOvc(R*??XaSmhor480kwB81twF+p<2#Ap7|ks!CGMeU z{a!gsGn85qhUMdHg>Ph58zHkRO8TOzjeFVPA-?B@U(zmb*pj|sW2L=^?ijH;cle8? za@{r)jy{Vi2aMA^fTsKvB0!YQL)g-L2q};e*#Va9itm6Wqe6fo-49xNOW~ha!W`wq zv6(+=taAq}=GsbSxN-+#@aFHp=G}%OyCKhyitHsW8iv{~avlnw;^1=-?InjO7!$jZ zV>2x71GAotfQDA(y*yKRKS90T2B~c5{a51FTuclHsdYXFmmMG?T@0eF6>`Lf>xriZZ3w@H=KAG$zMT9SZK? zgswIGl@5Nfl_BAfE~bZ% zPfv4o1Z`af*PIFT@DW|JsL#=W*(6@RHFvt;Fhy}J4OW}X5hCQW_Rp@&EDJUVl z8`(0ah=U&Ohn({@7MPdZGlbGocApo?baXx@?$WtX!0aopkm4tLl+fbwc{wbmIprAA zO984QmOi-lGEgYGSr_c!RoKpf;iA7|+op`>o_Q_oCZjVF3-X`9AiiwPa!X1An*kGn znvNxW<%qj)93-!-K8zvh&(VTU!`A;nYn+;bp~y8K*gckado;D^472WSHOduzX{t(r z=Xb5;w&;5Q*&|c;m1-BUHS4BM1==b;2P)oHupum^iBImp>SnzS)vYeGcI4mtLyC~Mu}&{rHocJKWx*P^A9-zVv1ea%P1bLWOItDQ%O z!>K-5X~dfdE>UqzS6B7zp~)NYGgk^st^_A~X097YiK!#4ip+};PD zs(Wo{vE7?Y<*UWmR>(rZr#A5Md{O|^Jz50RpLYQI%cv>92-$F8(Iqc5ky<5$ ztKaOq*p!RN{2qNq;*XoPO}w3y{Frhhe~%V8(Dg%LRaH8Mc&^c;Hn%esNYb}ZEOqDi z{RU3Tb~Ay+xbqq*w>2_<`p37;L>@5cGF(e@t)MbFY)PY^YfCn=$M!5v5$V$@e&Pq$ zqQdfu?O`sSGz5~NU1*pH`w5k@z@Og&gU5(^NOFO$k3UJ_7y#E+pYb8R!o|^uVA@XZ zi0N493ht@D(G$@a4%H!ymxFoYD87;^iL#DOQ8Xg~*dhEVF!J?&CYJ2h7vitQz?YE6 z1@*5P^v~{S2fIZ{FuOHthIT@iZGPd^pfoS``ZQ;k7yp7Hy5RU(V5?@h8UHh>(+qFa zwa3y{aMCS%hD`dTTZ)#JfAsEPamsB2l!cPXBM_uxykMgAo?`kZ{ZIpQl-c?Vcok13 zgI5h339RXO1gKa6);Us}}`5v%URbJ&8{3EDE8hk0V0;LgTdRyJTy`QL)v(Fyi) zhG*6#?DP>IW_zuK-QiUq)SzM}`&CtW3kVYo0pcmDTP?c>w6#sg+%BG8WVfJM@@@or zcsH||o^+W%iW=%cnQhqOp{iP7WKFP0LQ^1@IfF#oy@I3hv=A=JcsJo!@~8_Obw2S7 zUy)>P+lm0nu6AoUnWI}#AOiX|#p2gSYV*}7xYpkN3aC632n-HsfxJhRuwCWSEV|cV z7=*b5<(Di^>4ZQuqgodSvwg}HpyQQXpj*WIg4uPSw1Lg^aXT!OV8|9|@dJxvbDEW` z`nv_t^^=c)`uLgVoK(^$u)IGoZAJqyqdV8ZJwE!3A8OVwhEquM_j2 z>URNiC3dyV=k^4xh2DAwb85vgpu+zNal&3;i@EtSC}R5Gc8gLNU$7mbk8TAf7b}3N zC;Nh+^4Cs-S<_n#ihNWe_ND-4A@Ao4@M#z{4_&9X@g~gKf2Uy`rUHBX9VJ^WYt1;| zYj8+R8aIWiS|*8-)dyK%O{xi3QM}zN1xApH!liaVpY_aL(yuRpEv%D)^_$jWMrA_U z0GP*}Vi?yl-u$V*B}9JmC+u6wei3q_ed%AY)IIzRXjs8a8%GHOFSqhEH+a?SzHrs; z?84j!gfW4LTUxml|DY7ypr_?FpikjLVBkE~Ld>~0n69b#vIJ)JP>LUy9y(x0|1~I6 z%+I8U^s~oA$?_H)hpo_SHqfcd8(>_pP!Ov7xxwP9`4ku*MJmiFVGeCh<%!B~$n48J zRXz!WqqEmk#O&YG0*#k&5;G=FQhEvJvpY!2dP>+5{}q-d$#kCzSjZ9cNGW__E7&4$ z4hCktU zJ%_n59(JS1j%{@nA!=RnU>@}GNMPMClB2PLWFP)A2iZ(DkuDTx?13ufQDED@8-YPy zp+I?IJuqzb}NxpkgXGzLg2~AiJNLlLTk; zZUOft^b&PTecU1Ik#Whk4jG z_Ow0J-(qyOO|sibv90SB%DD6+soI78JQJAta1Ahb7;CL|Evvv;&%Qje;A;j|{lNsA zB3=XS=Xd^3A9cScV)ASy_|wqwF8mFrQ5vb?AzNykiu|b?)d{HnlKVGZ9E;e^4cP-1 z`G!5zZ%XS9!_s#1Rbbo=9jaF0umt9oR>inD)MiUD%=UFBfcn;tIKPM-p^w(rqD`@w zIQSt3G3jgDUHpMhg0kVlwNN6|kc_3+u2a0|g0L zk^^(7yc&H#?{&RkPMev+Rm-~Y%dpfxCiS|F{1~lT5LN~~r2Nos2)@pa>;`Rr>i~2; zozLw0yIg=JxakJfJ^V=uwKW_jynX|@rukzn%-)kzh^z1fhEi%(a~x?-y0#KiR`%mX zE9n0eN?-Klhqx}^JWXSTr#n$a*q$gAKW>4qC$9Gcc5?p_IH<4}DE@>L7&;%ei1dGe zkv|5AHc7KP09%2}X6CK(feu-p(Q5*n0>631&D>Kb&_j{7fcZ!H_Nif=hf-zC#xi zn2`mK=!+)ELYb5@>U-Ey)+x9%HgF7Is+T|f8%|j-$m5Q)8-enhkOYYNi=D6};!%5r zl>T>5I<6OFnU{NoJ(RNl8K84GU%qN) z*MN+BZXCuug%$h(j|exjhM2f@y9^tc%j>{N+p{#DvaXGN~mkMB~+kGtGu9Ajz zo&<~9p4&(Ru81`VdE!1emFzMC%jP&iAQ;~#(Uy+u3bg4X=A~loVqmG?u?}cx@CQa@ zSOViq#8PG}C-xAo|9CTB9&c_#w72LiMtudcZJ^ki)-Lc@Z}$Ki_LE+`eFlR8yc<4% z+0^H-T#XY&V1;>-X!vC8yuxJ`q4nmS?8@vO2&OyvH9qn8y2M2C!p@)(Djj*du;v)Y z3~}=o0+S6}(6M%!ejH|-yVHT{{i9J>{h}}khVXkE`LWk+Uw9P%F-+#{fQ91sC}NUN zJmTtorjd14m_}jkHk>tJ*zU(~B208@dxnHPcFb+y6!9EkMQ^d4ro(|EhP}gw)Wh@h zVNPha0GRk@F)+RGcjBU1z;3R6fF9bTj8#(=hywUcgP=uA&$-2)hQ0hSAlMgQWMPrd{O|6L2r=o$|! zUhxsI+wOeaC*F`DX4Ey_dDLTYemludTt-5fsE~9c?;)hoVwY$Sf9KKcN2--%qUp^} zfh#ow9>JWWH7~-o`osX6>e)9yx5dMmb5r)mJR6bs<4w5b->XB#s4P0eTwZqpSZT-d z^bylRj(<#q*?kAZj$|Bu24;V6G3^(nW~C>m@iVn;6HxakkA)3gER?X6CW?;QjqDX| z{{9pgJmVxiY_t1CZmW29jUnh!26L+8kR8Y~h76PJtD2 z+{o@!{7Ip6+EaR!SyAVyKeqxn>CIE1>P8--X{xY+Ie0P;XYkXv58;^bZ7s7_=CU7t zWu}+Vr>fR%g50gaS!HLqP3iaz+PnVn9+(a5{sM*`V= z-j5rLX?T3x1J9Pd>4m3SHLo(&Ns;ZoGA)z3#;-IrV6~Jdq4_L$$?tSR!`)$NKqpoo zz$4+^9*UkF9a1kUf*x&0AbEB5L4^rk0NM2TZHjoiPp>U}D&Q;DU6zi`U7551ah)IR zVnD`IBYUnTASBiYEfHrQ>}5!+#te9ZN{#>{hO${Cnw;YhtauqMtC3dS*aniWag>xM z+f5DQrdT7E*W69oiI;14R4^s)QX!xEhGrFVXB^l@i}SGag684rVOCUr&etiHnjSNN z-oLR*gS=Pr@d7snBwC4rq>d0XgBj1JfD4(ce}O_!TI^zVG|i_}D5tkW;ff0_f&PvW zpaff81R4%ev4_fq1&}=W3_J?Qz5npAw1jijwa2=G-A;c~j_d}X<*PMmZH%hJe{)|X z7*qNc^nyK3CdW~4ebeRGw}VKAZ|=ix3{~zCWiCC`7th;NT>yslFfN29^wx5GUg9j~ zhf4H4P5q<_jTvI}sAjz2t=PDYL2}`AcwC2!UZ}AAmAB#P`7{)$J+m`3dH8f<5HQ49ilof;@Mg* zi?1O=>a5rQaKI49?k#Tc3p1WxpEc7NAMiLi2dMAz9HteR1PRDkBlm6zwuhvb~xAreU(Io9N2d|F#PHRrfYeV{g3TcO0-9E zIaux2k&+kO3CoLS_=X?`p6W2RHoItcsJ_)hfPpF71S7+eS)Sr|Y|~?PRF{U2+0}Lo zpkA9&cm>#Y)@xDD_a*S?o;{$-4Y~0Io}!5^%>)OPqFxci8&8*=`@w%fn%(v9@U(6} zi|p&s4;bK{AhWiSf_pZ>6K6&{CMns4lG1;;%*}s8WKMsQ{|7v*s`VP zY4%&z`|LrRRAh!jMI2flV1A;feg_roypBD-y3ROj=(%4oKZDkc+i})lKtU5!W>Cg{ zQS#*H4P3OyGpD*M`^^%KtCIs+GpS1k(^T&p$Um=7t=S-b#MXd_d9?8o{%RH}D7Ug& zTpWJ~HhB?!GqE=S4@G#d=Cc*=!a*E-BO5qzS#O}`bqxdbt*CaB?Bjt}8=Qb)zo>!H zrMy3z60YK)== zvZy4|8`v?L6m{%PboCf0sxxcF4jkjVC6A@p4KMj7lp>D2p7GoLU4i7heiKt$;eqo| z@}g-C%!FkNb^%u3e+Bd?KL+%>Un?`i+L2u+cnrP7N$aSR8qD3Y3y2y#+vrf6b8aMl z0hyUFVmB~@>u=^S|8%j>VoWOxCOsbJITE8z@Wre?x#$e-nI= zNgZ1k!DrRD79p`SdU3X-U;qWCMgLDw9w!SjMpNU!76Wamz57nw+ogTb%z}h&WI-!- zeFmo6>|@bGUd>@ZxcMFa$(I|uamDXt2vc7^Al8OL4v0n{d6HdO+Ke!uvbCr&s}UFA zaUJ>;nby^%h?~}bLaPlnk3nHe^Yx$?q|O3Gvo!++2#Cl4B_y;PFl?p=FfzIi*p9(_ z{DowAo4QjQXu1Rfqwe`xn&5aNVUwX2a=E3f`2AP}S?$#V8)v@YX3T)2jq^RZz^Xj{4B6%0r(L-kDC?&LonT@HT0n`S4y|!@= zaoNUA@K|)|1GKNE{HQN>LYboaRKuNknxUx*H=tt69@JvrQ%!I?XgkU9=h5{z6ZC$y z51yFLCZ;};e1b3y+l6O>RHFJ?W*s4^e@p(~4QB3|Dn8};&0GHIe#Xan_z!LxXe?1e zCrVp|qy%<8U(4$+)B)8>O!46h8o2Ll0(;y&-v~_;kW|R~4GKQ9TyOLcV7m#jZ-mm67IYga|q#`2ch^e_s59u z5yuw)&o@ye{aCARlREsYH1VFQ3M0q;x$B;`8e7;5%cGLI-p*OEPV$g&TBp_w)R zEk6cwzfvjb#%Dp~;}vMHmvlUX{ScRv9`yzQBI>}L(|$lr2OsU)wCq`0A{;mMgEOpik| zjja~H-Uhn1PlovVe0&0K-!}6xX3{UmZY!mf`)EH%b*+7Y?f;kn^o!yW7qnZ9=-69r zzbG?_mh{c*&8=wn2hE{nq#A4sp&2`D3EVcTKLV;9m|3s)3UFC|_z2uX7Ib1ZtWQyW zgzP#5jGDkmX?I#MAiMAqJi1FGfWDibaamXY(bw2K#P#No`zV7b?3ZH$Y>vU!kUF8 zA9dPR?kqQPwUwfteT69^Q!|-4N)zqKL3;}+=DPyKO;S_zvMxdoDJ8cBW5n3Y`*D8| z3x}>UinP;T8s^38+#XPUWbKeh+`C6$v_(S*D4u&Qf%;#EFjCmP9qvOTM; zYsff=k>N1i^%zpS2tkb;~X zT3}T@sf~J%WD98S{FuQ$`8VMSe9wM3!E+QzrHw~rCb$+geJ-|Tb+z+E$i#(nQ8s0V zRt$Hoq7qS;{^uy0SWO?&1&SxnX5*_>#hwj!o!8Rbb}nax;s57kxfK;1Vrz`!xLfKfj-VUE_yOkqvyBsO9*@{%}_;mYxg z`BvxkJ#YyM9`X^2Ferk$DSk-`(4wsbRNuI0Y!9AWy8JWbtuj1BK*f%YuxMHzzRm;i z?cAs{J;GZ8eQz&8j%sYO`SeCe4*tV?>44Ekw(y-v=@;Oc9Q6QL81MzKxYrn<*4G=T zGmWs}1lfOnlF!MWd`$k4=ob|sa>P^50BBi$zX@!mF|Q*;TJp{8CG`X1ln_>CLNd5~3QE|R zb^k7)L_ALdp{gxyE|=Ofz#4x?RM^;+p>PLjux28|M++`YPgBqc&Sx(>C-a86aknob zl+^SCRu}&!J~p>#P0icrJrgudLY>NJQQ*mh*Uva~PkI2wr;!x;15B=XY&8E=PrZda zjl0kpkEPFP1ZLI;0t?4FGD6j^AuuQ+Cy2hj%^G3a4@+zbw3%%vzh%HEV-w}EcYxcMfu1*J5q z?FwN0y+g1vaxXEoq^gx^jO1xO4ALNG-!-@IiF9N0($QQK{t#dI*x>Y&9}zo9pASq_ zvv$3T#sj@4%yr0G8g;ME zLTJkX`8CvMz?KPOyyDP9768@Yz;hSfOb#PNjTL$rw+-xMqR;w(pSkr~xb3}10-e{i z0eYQ$3k>>bHZY>g0igTh80crIC~_)1nu>-0W+y!N5(x4^b-?(~v@#Fqp4jE^RJ+~- z#`Nif7sPIaE|W?2Q%{2AXi3TOG6XVz`g8k{v4F3|STA%!AHgz(?n~Cc0++VJ#%pzu zp1#{VVm-H?WSF85aWa;mjVqjk~@>$tKo*k9vwdL3xh7v<_%D#}?@Q zrT`dVZ_VTaaqJC>w&(+3OsEx4#ETDM?_c8V!|;}MG#-kkM#$ti9CQ*5z{r*v3`x9X z15e5)4`GXBw_uYkz}Y`$Qt?YMCFw+VG)rZsu~P7)7Ze6j4R2SNxtO>~x#`qv`BSKX zRJeT=hqLx4rzCHA zsg6&1J{L1U{?}+AMuZxGvDZHVmMmEVbhl_^=Cf2i;K}-)x~$FTjGBEn4TwEHKy`AW z!bDu)C;1)`!Z&CvpNbhapO+29FXU$y!BXa$3~c+T4`WHAcQ^xW4^k?6M!rD18;Khf zY$V+mj;IQss$rmqEaX5vstYS5TD}L^GU}L_9};eS+m`8%?{gZ&DXFW0B_@BOZFd%% zPaU+!Kxtul1_gKife8x6!oA(MBltRXaecX$w79F||kM?{N z&}S?ACVhD~xsu|8Q_Z))-`!lS;@AXJNId8M^PLpunnLZ&K?*&tH?5PDGqT~Xa9|1p z5_nXXyX6VKAnE{YT2Cpa_dFD};BX}J?c)D8Vnu&#+&x$08P0e$>FoWxb}<8nIBodqA){o@~>>LXWZ}AZ@*0~2>l9@|EE?Yz)@d8yX_`;1;9`YA4d&>*^599B=7Z#t=hF_z$jrpFvc*J- zmD~E+NK}1D0k_AMZ7gBL&Iou?r?MveGux3AefR~ZJ z@30sc1Oah(sd5Y(*#ks3@8fK*t(%zr_L@a?oU(4R@k)(<;^Zp7KDk?Mjz!N!A1%dx9Z{ouoKIlclc2258ylC{P)=3fR(-D%Im# zSD<$DFQUl0R^o&QmLzy&AOa#j_?~IyeUC$H;H~@J)-+FQDA%A!qiffIQn2qFP~8H2 zMQ0GsK@Q@F?q33Ge8gH5G&_RTk{eHMSH5E|EE?HF0;gMu)q^l>!b9~$n?A*1{J65S z5@G3v?ZCo1vQblV6_y&gi-hA-*go?*t!J(*Rg>VcHr}qIc}w1E6-FTptD{tB{h0)u z>beO=r1pptpV6)RL6kH)R1WdVK8%ELQAJ)fWUzlac{yf(U!Z*nUme?W3Aby+&YDB9 zNqocsSk_54_FQM~;P8Dk5pMtUcY%R3hX4(8*x^N5oaDQFa^~^R@Zq?B`?vapI0U;~ zW~6}NT873x>xfZBhaM+E8k;-|LhCx%8*VS>5+g6Yp6`ZNUjLS=KY4U-K9s+@6KML< z>6AKiDL%TJ%)}sNP9O`i|BAtf^9|lqjcPyIeePY!Z}*vwa>T~d?kmpY9Ct8lAi8)g z@g#I%n$8!C8EfYYVE$}MNc(3PBFd!B;u{y|zs0~R=G)oW-;j6g5@QYg{vWe_oj95Y zq=dWnU~67fs9tJrSm}_CWZ*%nV36FHZeRv_S;inC^bp)EnQ<%)&EGy?udG4Nx9` zuj7uaq0Ns#@Oyw!sFxJ};TbfYoLx_uZo$w3gp6N)7#P3qB=U__=|R-7fdgNoEX8Nr z!rjXI0q}!sEVg&I)j(Z<574g!Lm$*c^fDAQ>vbMT)uV~dKh0u5K;#%RPJG8&Ss_CH zj9{$#7eCz(L$Aq=x+bIQG4>7R-)b~{zX6w^(in5Ee+=|a|A`&nBg_*+Bfp_mk-xxb z6DOLzOXj|Yj@{paHs+U87^AxBm=?%1%y8%lN*)Wkdr}#q8rw%|} zS~)NTH%95DP~7MN;kML@D$8FKXIg}>3C^QQPU=vB5Wh~;P$AERy%N@F4o~E@NMOA4 z?}(IQF6zZ&fg?yhf87L@e`N)%sALoD6v0MS6-)NE@54&yeZ3E`^y(H;sIBnQVZdXpi2M!J}K<78rnUwK3J@ zVVp`%`ROPkxb`e(I_kGM{PXNQkZIS2W1B7(pGOx!GBm$U`&YPqJ5vdS%;E4p<-_}Y z!mE@Os7qSQ)dbxyNq9k4SN1`<9W8-9>?xw^;i$4C-70JFMz0t?3pp|h~WG(6s6aU4b`5>EP-yBBa*w3HKt zD!0O!kMW4Ducbr;IDf%N^>Gx$0or>&UG+@CTtf^SN_@8q;w$(8-?)MmHi6Z&Otjsu z$c^jIVFRv+c9J-UbIAo>1DRUM5hb21{~`ja*8XP?xb>s`IqQTEtWmwzCN?;hl`^k< zwh!1iauyD3@wz@4ZofxDrv*h~{M!PfzJ9bzqkA->-KS4yALMJ5LJmc*vw$b2*LGk* ziVj%(1*QkXv4veskLmiH04>0U7HPn;E&o{qih4539J<%6(=hUAK&|}d#a3*vlrwv1wUj-&qv7Cv&gc=jc7|vcS@4<1PMK!;w zgaS5S0iVvcfT{WaaR#2GrHgG$#<)`sG&RW8ej=tAP{T=o{EC(}tTY?6@dG~ss!x0K%@Ipq!xL5c z1elOzoM=e5Wk!3|FoVPDo&l|0Dc?Rzrvua8zUPBkqq@P9U6zARPW3Vi?g7(7(7%uU z+8PY#e8>-5%Ut{LCKc`OAqdqSGXeUfQy)eyIe^@>sib+Ox1(?cO+5_^X=HJuURc7= z!2U_@1neUY&30Q!U9LGZ1{gMn{7Dn%?hd&%4DLw}c|3^v+Y#J@#@QrEzp5wbkr?4) zJ4#bE=2TU0H-OUhBKGE>pB`iURyC>TFCf+hQ9HYKnGAGOQo_94NC~+5TyUtGnmWyW zCD6B+{h>Z~Eo8#t(-|n}xYMmc30`=OQ5`@03NMU^;J{K5$uqL>t>Q9Ggva4SiH-2(#Os)V;&}!b=JAT{Hn)tQ09Ze`5BG$M{dia6gb29Pf~j8y zZ)*m+-(^y|6lfy;@ZIvK@RznK1ZrDy--uVbm;&`)GgBCO?L04F8s26`cSdlz3iMk! z322y0sWmcyqB5bg@(%ru z7^S=UyhZ%aKxbD87`iDMn9$-1pDbD!E=o226@|~^c_L6T(g)b`RE%kyRDVAc?)G&> zKs#&BkEthPP8OBo+zV9`7%z5x1&Z?!)B5j0c%P7oz{+nzftGiv54@kHpyon8r;!pi zoSkU2;;t&t+DvJo!4gKoUjxxjisP;!z$TyoX#1=L7_xW)Fm*E@%bqs~m@7{GR+-;{ zdq5CN1w!Aen_@5`iGKjFfwW!c>O#IJe?UDv7DxBfqjd-oYi|aV;dour#&a|%mD@gLSkDzh zU}lfr%i41t&UdCHHUUd6o&x&x7o*?6a&~MjAKe1>$YNJ!H_8fFvzss0&#b~NaHxb9 z*WoMe_!`*h#>Y@YmXB!SS^FFTrcJN}<_|Xjt9Mbb$6mAtHom4v8|*0~hA+-haIo2} z^HO+=Z!Mw%P=7~}i<-3_jW=ibILbkN=qzBIYp0}C+Zi6G?im- z?DqfVou&c9#pmOP{nHq`X}j zAQgVZ`mt_!0Bn5mHzQT^x(iQx<}gkY+FlVsYt(Yl1)$SGN@Aosgo!IsE8!^)Vs_iC zqAqk%Z3P;7o?&p^$>;EN3Y-p%K39sY#SFzViLI18>_>(d#4pD8#^JXXB0O>V5|XlR zJHgXaPaCH`lG@jI>sy`ykDv2bCukC<-RcD8 zWLZjmHs-1x*!=oSQ-5jlQ435_B+Vy775Ly(Cbf4S!-wrM;f|l@1kujBat4&D%~aAE z@qe?w%i8e)JkBj`fa**i+OMovN!=~bXjtOQln&MiOzv0?{-;?sv4}0@JwQ^J5TJI7*!@srzwzWUX$NC-` z52I>)6*)QVa3IjGkmjN;jHGfBZ*?GJ>ZKkehEx0p(&nxf+rnhyPtsDp|k<$`!)~E zOu4w5xh>AalmW7^Gn#+3@ft+X_dOx5X%9?HfiGv)8{qhS%*cW_;$8}`hqd$son4I( z`RWe9tYV6G*KfjrZt72fzN?CW0f+LSlyUb>ZWO0r(h7d!pXT{8qw??@pMyxs<|GlR zRsX#*cojP!AEwyH#O}mtS0A9y6 z`T+cKH|IX@fFO2~iqCEXbEmT1m-Rc3{>yiC9HT~#`UxauGFT6#BR+5_8(o8j)HbIR z0w(wR9OyB=oKG0fD)zT-1Cq+H5;(FoHMjLW1D|&3aRToP%y|S-^m7-aq3(?HC(vX= za|VG{;k6WB3Ag&IFWk+q%z^G}W&?G>v}nQ{&jZ_B9BG;*S@aY0>ozG`Ery`~`EhPq z{LEzH+g-fVemQlN8e4(k(XZZ$48&iuXQ!YD>>@apx@<9GxVGZ9(}e27Mz$-*%o5`> zgtY#vJy6qr15kU6U5$^pmrc338{BOQZJ^3L_RNPn;46C!EE9(Q4tJ{MdeisorQ(=z zV2q_A7^D`rL`C&jBdll{ZLi34%w6vu*kF(*Ic=j<_!Q3phBOZZ#yxWfrc|T@Tbm13 z6dJ#nj2ONSv?QlB!2Es29e9;*#jtSfDlLe1mJvYb@3#XZw^B!DuOy}5#|d1mu6r~9 zhl+QYa2s~B-2^_Ml(R1=5MTW{eRB$K&8lLs#B(*9e?aARPMpPkPic(1xf`f#dl_i8 zAO>iY?hDkMWJebpybRhPcK!FD$oC!65g~9$v~C(Lao`C0u}Ll98g}2-U8zKt(YgM+B*-lDgAiSV&>(D>J7G zZZ%G^VEZnQ90eY$;+BBc^V%k$Pk|QtEAYiNxRVM+@1FI7C!R~4t6t?++*{ z(b0)e3yNkc9%a|h3Cwb$R1}VNpBtmim4+DKu7aQ9`U>y7ODBs@bHZlsb z;LcdFAJ}%!3DcfZLBLhGTTWx6b=fop=vrG0)NRF-GA^g-JPV${Kipa5_$^KFsBTjj z+Q?X)(OXYh{W}B1g6Dqx%+y)xeD)Lc2SWzy!Q{T7j>xjwS|L_c%3ff` zN=j)-N7{A)xAnl31IB5_wSV$$6|Wb8W_6E3H@rQdQt_z~Hz4PSJ$uKjJ)u-vp$At0Omer+NRTBR3wJS;|u^As+Hc zTaZjrwisiUY+-+^nEnu0IqC#6<7%@N9`!?HP%imjqPzsm5v!enxZ56=wdBp>;XjjI zF=EB7_suL$>-#o97w7pvcT?0B2Ho8;Z-@d6bAn_TJ`>}V_`Qs5>0b}D*(MlmX-D~Y zoK71=myMMT{FSdWGr@6wp4IHf6@)0`y%Y$N3R%U`p<<{ zQ8yo%yO=03q8$ycHft$y1Bo8Reb z50qO{e;$RZ_C8k&x9`){ES7%z6Mk?KIp8rGM3Cnz(&7&r*q{;k!meSlBpR2e?^4c{<0fXeDjZG_d*#mgvE@S2w z$DbrD;7A&}Pi#a~T5Lm@+eg%|YR5vL&-p9Boa1D5)V-lflOT)?G4tJV9Gj!MaEl#g z47osMW)77?)v9rx4oi*SGwT}$B8$P_u0YK2T`QprBkla)u27np`ber%98Ren`XP=c z?{C4USQ+1wvJ%}D%t6!y}T3L zfi4`7*NLmIu0{I>T4DPZ8_|87?X zi|%t;p{0<*h6j^WJB|&+Qoa^x*x#m| z;W3Q|EbCN_|IAAoS{M%ij6O2rf9^Gq;wLgYeO^=P1dJjxqx&@gE5#L(AzSa8;n*+9 z_PiTt9;c`dLr<*%hBY3PnfOW7k^A78@{s)ZPwsDQ4e>r~9EG)6Xf!@^OO5C1MQnTq zVrkuHz(z4`HhwsZ;XdCT==sfM^cOMJbGY}es5Tv=!0zWiM1XBu_L>Q$*ZI9h)tI;N zbPsA2@@Ny01&IwPI0IUA<#AM3>N|?Mb#oHXw?l!Lc|os!neXw%_CBhfL`tHe&r4uF zY*%+FN3Vc8Pn^c(I>{6ablu1saJ2(@*=iP+zr&Vb^-cK;byWZf;XFpEW;Uig z@VT1bGK7Rx{)URqn-~Lk%a{R7tFpUsvT6J%md@uC+jQ|!B^ajNO*1Ug_Z6_KIr~AI z`6q!^dt8LYXfr++KHp?V9xmyh{tG+_e|G>Desm4kYON(kCRWql@-1Zpc^Q*~_dEnR z@5v-dy%UoqLU~@DV07d>T_x+FkqVD-fY$1sKl0G}G4o(o&+2fRKMklU*ee+9wYd?# zgk$7U+T%Q+{`bFt5knV>@QT?1*dJIYja^Rr%ya(lKu!2i;-9m*(j$ISQ2h?nL;h|B z3z6^}D^g)M9q58C4^8ShPKIZ0b$63N3^)A%7{6qjIZpC3mE>Dk=&}x}z$zy(@U7Wx zyxb0pVBL5f^PpRQm{v-YgZ$X1R}MXamsuNB)Ymo1-gwMv(R!eIP?&L1l$qkq6kfJ% zKu-N@9=N6`E@ckV=XL=px0O((&hOU1<7v;<9np#s8M)vhW2HqJ@FfGfnP;NY^N44| z(ZyFWOrJlDvqw(ope6Zks^|Exb}}F<=mA@cda~gkrK`P0L&L950_r!8m!bZ+)*B1JyxD;Inin70%e{MEEA%aew1@t$! z1$Mtcdm}8Cau?BV9wSwCu;yReMdYQXZS23sZg98#AcUL!h)KJ+YF^@#X-6q3nZiP8 zr;&+i@gAl+sUVitRKzKEp=rDM%8V_1LDu+(z}AItP0OX$`@a==)rs2o z$!v5ueY9C=;tMgdsg_a)Rw1DD$)D&u9M966a5_H$?^a9yUY>b$JxiUuKM6*k^NXh< zRgV|cGf~@anPy58qNl*^X4?|z;mnhaJ-rXZoqz0SVDU&=5FLVgG8Yl09`Gd3?8A{` zs)=z_kaw3hgy*WyA!?9(tB5V|YCPYH7wKOG@~!7=Z}+>Sfa=S}7ij$4A$8%uo&_yx;Z?A( z^4(^*o7VIJ29BH$jF8p>qvuoUMW4P!omIASC8ACU=>?Meu!raiG|JXuDl)h=d&sEE z-qt2==;cjJ1I%G;OGTS7?2D5$!zLnBzkD+D6OeKa9)r{h7;FFOnvIKLb69z8lrh7BF^w#;h$Y@RdVgtI>>#zQ(c0-e_l z2D-K%!gp$R3Tck&vH>*Z+$_?HpHh5pqq@u2TV0^h*J>`iJNG^Z8LV4$ z4<6k%wt?{Pa!5*wp+J;$IZcmq=tC4Qs0~Y!Z79Onz4*)D(YclNq2yUcaU80>s6ZC| zEkw)ebQF|~%0<|Fky{i5xBm+c0d11{0@ZB;RoJ0mJbqMto)ZI@1-%Aa0}cINEn>7g zG8$-op$S-dr!6peyD`gA7|!^8*?XWbORVo|j0^+YF44TEsEblx_%X8O-jn#-~|U z3~T1rL3rF=AELG5k+9x4;H+_d2deI`8el*zXW@&+Mj{V!Kd|iii&wT|bzgNd5 zH@FM#vZdB+VMZ)2dGOs0pIru1dsy0lH2#V;1EeKDYkNwI$E{lI3`U*(`;&Z?97pNX zQ)OmyoXd3wkrYqgi&EVF8a3f34gpKYR5Yxy9dl%EEu+?X3{{mR2~P8-#HCvvxGw8vs(-FTP7w!!mo?^E$PEHp_;|YtN!XB zFUZx(9+)A=Qo@6|%vZXG9dCn~C9peYxy+=9x-)R6c(5PxJ;VA)csdA}WB3MN_@`T( zgIm3Ev1p*4ZF|CJ*v;^mS8AFOxf8i_tk@Mv}TDt|Pz zl$W#s+D!XeBo;Vk419T8*Yg>zQ~*!G80JekN-H8nmV5+XWeCj!i;Q=iI2gZ|jm&d` z5*X@!8>qA#2vjxt0c#yQVJ%?X9ZoK^y+!5f{PE{Nw{IE8bL9i}x_nz;@nz`WNYzb{ zBg@plkbMrY+M+*b1A1)#H1NGjNr93e+C$XI-uI(=nr6C!+kf83DJU-rlb!EISMur))_$Sm2X}y?(+%2b(VcoaC z;H}Z8-hvW0{1louzGj&xjE}r+=LACrrBWDmn^2*W-;8&_*ww?$tgz9p@y~DIQ)P&b zLA{WtC3-Jm9~}8fXTCH(7jwK&11p5-So9(VLHeJ52UhOgL3hq>h(d5*_EZU%4d^U& zxKQ;eXJl+PuL9Bc(__Fyht}p|+Arli3|DI@b@6skBMaHq^UwOod?8fZz2LE0f;8~n zhH#z@d`|>SB0GgY6nVEifyFT5&!u!jt1*4zDJ_@ zqu*gUvNn~C-#M3Ew&&vOv?`<5eh5$8hheCz40ROTdDjfUx_#x0^!z;7X;8Al!dJXz zXe2wvqCRYr#l7{w0OdAd!GHtIV!=67G)@qCcN8?s`!S@2>`&!jB6crEnr7BgV!#Z9 zl^&u7avs96dYNA&KCA%xF1&?NNRY~!PbTbO`_%c1FN6HvUxBA^XbWIT>_*^-A6WRQ z?by}=mrMm3YCSP06g|kx+RTKvF>x%U$&fO|p|d%w+0Gg#{f;4JyQp9O=}yKTV*^R3 z^y3T5--wCP`d|2x0a|LGi6*@;R&ajuBe>`}-isy zmV?j8Wb4I)R~oxyRTs|jp&Y0`&m8TvX0Gj!BaXrEE=C5ZEF zQfy#-!W43N50b_4f7eO9C<+NB+hq9bHU1R3hDgf~;f{J!Wr0;1%z@^b7hwlvJJ1yG zMCK>%rG?|R0;7FstrkP!@polq#=hGQQIGTb8SZRlBPF2KJ9flX0qcS7cgJJXx1mAI zt4BH>0jazpn7Ew+J>m9i+;B1m+a@o-m$*ihIB7adV3^^6yUs(0C77%*<%77%S_<+GKX{TS}7qdV~8;EU5#94OY^sK0@MP}66N%K1bbE_!F1^LtmlRj7q)Sh() zrtWynV}>22vUs-7$~xAU;Xa#Wq}u^t)B_hs^uRc&RBk6^n*~IBQm!qm@SMX7Dd=i4O_68e~sigMDQ9CV{-sD3jn@j_6>jys$ zcQa>=CNEJ!X{MC+1SKu2uMp`cds&_4dfZa*fBQ-O@%0C$7Y7ER)dw$S1w@WX;nNwZ zbKuGBbp^e%WnvxNE@Jh?^T&4(42|v~DCM?+vS1Wh$Cb6vua|(7+inQ3*d6nY*m_hT zW;aIuv;z_>lN3QeiIU_V`Vt4Mjh6D4l^|}b7^*3cEKg3Y8iL75l~r$G;}|wRgZfJp zEFzuSPv0AD)k=!o|0_JvsvPtdD(pB_bP@9*ih(;pF3Z}1TCn(%6(>*qf<=kn83|AP zZc2$l-j_H}h}v?YIW6|~1IcM;dptM6>SJWJpEOlmSLVBo(vr~di)omYa&j*U*<&!3 z-slw&G-*oQT%i9nF^3mx+Y#GoGb;Lk)TSF%Zo6-v0YheZi834dPhwV5w~qtSYOMHz zt$lqFDyYT#*B~iu*uiEsTtZ=Um;S=;wP1y?dRt+=7#x+&2X-&vRi4hpINj(@Ju(}Y zlgea@r)5C!9!eIenW#(kFfEDN8yR>wFwF-K=e44AC=d1rmiHt-f=8@IXvhyNT<#FE zqjueQKx@?qpnpyVlL*&+&B=s{6`WLYpV*AkZzK<~-7H|+W>#g=phF1B+SwaTM{!3~ zYr-z7)`D_cXH ?jlOOf2%dr~He0veJTkk#Mma7ACX5e~x&?zO1OEE}sKimo7qI zZY`sbS^N9|RM)TPKDW?>2e1&WrHCy#AjW=?4r~ZY1UBu_0YfgN03(KDWe>a2ntb7D zV?*}#>cX@%%S5kSN$zLAUuWto<-E&*RCzbDnfkUo3XHkw1kB4=24O7TGZ?5cD+R@E z4V14G)7ZpmwTvuo)-XsJ&#`U?9;$D|A&R?N%ob=Du$>#~&9FTp;YS&sN_QB+VpnK) zAwa#M13l_LCh{+AVl-&+(tBLon!##FrE1=sVY94iK zp%h0Px(iS9I5VL83QDV&L|e!=mX%q(%|vGJf)nu?QL2oLOCaSuao|hq(^zHNsqKMb zKTZdRPaV#zMbGRZ^TAb>8J~hyX2E>=bZ3W9{gP8BiC=yRRNVXnIAvUWeCOwTVGExN zY5WbOiaGf}i%skh{XMYIju2H3bNJdU>4^@a`phu6r>=_tYLeN{MfceXOngGdB{%

b7Po%_x;_~V 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

VF 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 z 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

-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 O*z%W5nzg(~v;PC#ZcSJK literal 0 HcmV?d00001 diff --git a/eth/downloader/userDepositData/8453.0-9101527.gob b/eth/downloader/userDepositData/8453.0-9101527.gob new file mode 100644 index 0000000000000000000000000000000000000000..88f825e01ad52bbb543527b50d88ee5640728a2d GIT binary patch literal 3143206 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
Ca8#Q+xh8i6z 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 yXe34 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 z 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 L0Y> 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 H`Pdw&0b;tjjjO1mhJin^e&`fh@5{Sx> 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�mahpnSG&wXYBJ(YVH} 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%0D`qbZO-mDbz?@@-+k$=KC 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

    sZaF-Rc?Qh0Hd%|(fncVQR| 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%0A93r99Egs6+4cgQL}fUh{*8A7>R!Osq8l63d@iu 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

    d+{EO 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≤FM4j(1&ydyH0 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

    1. WCet6nmEu{IciZSF!&i*A3^;NW{olfFEs} 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
      rHc1sy-A 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

      KRPa*8SYXZW!lS_E& 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 q_Q<`@P-6^6L7}fG$=DI-qjq&)1=w(~3cpK|CE Date: Sun, 4 Feb 2024 14:18:56 +0000 Subject: [PATCH 194/223] ci: update image to default --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1ac6cbddaf..513ce63d4f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -71,7 +71,7 @@ jobs: type: boolean default: false machine: - image: ubuntu-2204:2022.07.1 + image: default resource_class: xlarge steps: - gcp-cli/install From 6f25e3427ecadaeba2c14d8568ccf0fad4cb21c4 Mon Sep 17 00:00:00 2001 From: inphi Date: Mon, 12 Feb 2024 11:15:34 -0500 Subject: [PATCH 195/223] core/vm: Allow precompiles to be overriden --- core/vm/evm.go | 7 +++++++ core/vm/interpreter.go | 13 +++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/core/vm/evm.go b/core/vm/evm.go index de94912f21..cae622cb7b 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -53,6 +53,13 @@ func (evm *EVM) precompile(addr common.Address) (PrecompiledContract, bool) { precompiles = PrecompiledContractsHomestead } p, ok := precompiles[addr] + // Restrict overrides to known precompiles + if evm.chainConfig.IsOptimism() && evm.Config.OptimismPrecompileOverrides != nil { + override, ok := evm.Config.OptimismPrecompileOverrides(evm.chainRules, addr) + if ok { + return override, ok + } + } return p, ok } diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go index 28da2e80e6..002701d648 100644 --- a/core/vm/interpreter.go +++ b/core/vm/interpreter.go @@ -21,14 +21,19 @@ import ( "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" ) +// PrecompileOverrides is a function that can be used to override the default precompiled contracts +type PrecompileOverrides func(params.Rules, common.Address) (PrecompiledContract, bool) + // Config are the configuration options for the Interpreter type Config struct { - Tracer EVMLogger // Opcode logger - NoBaseFee bool // Forces the EIP-1559 baseFee to 0 (needed for 0 price calls) - EnablePreimageRecording bool // Enables recording of SHA3/keccak preimages - ExtraEips []int // Additional EIPS that are to be enabled + Tracer EVMLogger // Opcode logger + NoBaseFee bool // Forces the EIP-1559 baseFee to 0 (needed for 0 price calls) + EnablePreimageRecording bool // Enables recording of SHA3/keccak preimages + ExtraEips []int // Additional EIPS that are to be enabled + OptimismPrecompileOverrides PrecompileOverrides // Precompile overrides for Optimism } // ScopeContext contains the things that are per-call, such as stack and memory, From e965f15396251313b166ebe504e4227ba8590d62 Mon Sep 17 00:00:00 2001 From: Inphi Date: Mon, 12 Feb 2024 18:17:19 -0500 Subject: [PATCH 196/223] Update core/vm/evm.go Co-authored-by: Adrian Sutton --- core/vm/evm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/vm/evm.go b/core/vm/evm.go index cae622cb7b..b02988c122 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -54,7 +54,7 @@ func (evm *EVM) precompile(addr common.Address) (PrecompiledContract, bool) { } p, ok := precompiles[addr] // Restrict overrides to known precompiles - if evm.chainConfig.IsOptimism() && evm.Config.OptimismPrecompileOverrides != nil { + if ok && evm.chainConfig.IsOptimism() && evm.Config.OptimismPrecompileOverrides != nil { override, ok := evm.Config.OptimismPrecompileOverrides(evm.chainRules, addr) if ok { return override, ok From ee56d67e0dc9638ccba2f23eef88a5b3ba1009c0 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Tue, 13 Feb 2024 19:10:53 +0100 Subject: [PATCH 197/223] Prepare optimistic Ecotone Mainnet release --- go.mod | 2 +- go.sum | 4 ++-- params/superchain.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 4f06756d17..c4f2d1e559 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240207091552-bfa80184df11 + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240213180600-05287996b949 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 309b50ade6..7253b51f72 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240207091552-bfa80184df11 h1:PL3cFhrsPcO5FR2+ZYw+/yuZXU4C5oE4r18AShIJbUY= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240207091552-bfa80184df11/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240213180600-05287996b949 h1:QKw8/XbFsmFQJsipKHP0CGWE1jJyO5qhhzPNZixoTRw= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240213180600-05287996b949/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= diff --git a/params/superchain.go b/params/superchain.go index 9444c54405..480632e9a7 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -11,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" ) -var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 6, Minor: 0, Patch: 0, PreRelease: 3}.Encode() +var OPStackSupport = ProtocolVersionV0{Build: [8]byte{}, Major: 6, Minor: 0, Patch: 0, PreRelease: 0}.Encode() func init() { for id, ch := range superchain.OPChains { From abc8821e68c89125740e2583d24566ea56ffee27 Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Tue, 20 Feb 2024 10:45:35 -0800 Subject: [PATCH 198/223] Skip genesis state check for transitioned networks (#245) * Skip genesis state check for transitionned networks * Update core/genesis.go Co-authored-by: Sebastian Stammler --------- Co-authored-by: Sebastian Stammler --- core/genesis.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/genesis.go b/core/genesis.go index 33282cffcf..da2b74ccc6 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -360,8 +360,13 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen // state database is not initialized yet. It can happen that the node // is initialized with an external ancient store. Commit genesis state // in this case. + // If the bedrock block is not 0, that implies that the network was migrated at the bedrock block. + // In this case the genesis state may not be in the state database (e.g. op-geth is performing a snap + // sync without an existing datadir) & even if it were, would not be useful as op-geth is not able to + // execute the pre-bedrock STF. header := rawdb.ReadHeader(db, stored, 0) - if header.Root != types.EmptyRootHash && !triedb.Initialized(header.Root) { + transitionedNetwork := genesis != nil && genesis.Config != nil && genesis.Config.BedrockBlock != nil && genesis.Config.BedrockBlock.Uint64() != 0 + if header.Root != types.EmptyRootHash && !triedb.Initialized(header.Root) && !transitionedNetwork { if genesis == nil { genesis = DefaultGenesisBlock() } From 2f105f7e23ba6f91ccc7f365ed26f42594dfe1cd Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Tue, 20 Feb 2024 10:46:22 -0800 Subject: [PATCH 199/223] Default to discovery v5 (#246) --- cmd/utils/flags.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 79b92e93ef..9c7938bdde 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -778,13 +778,14 @@ var ( Aliases: []string{"discv4"}, Usage: "Enables the V4 discovery mechanism", Category: flags.NetworkingCategory, - Value: true, + Value: false, } DiscoveryV5Flag = &cli.BoolFlag{ Name: "discovery.v5", Aliases: []string{"discv5"}, Usage: "Enables the experimental RLPx V5 (Topic Discovery) mechanism", Category: flags.NetworkingCategory, + Value: true, } NetrestrictFlag = &cli.StringFlag{ Name: "netrestrict", From 78436b6ae2a45a9c8449a9b0c93b062a37bd20da Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Tue, 20 Feb 2024 17:09:10 -0800 Subject: [PATCH 200/223] Add OP specific bootnodes (#247) --- cmd/utils/flags.go | 14 ++++++++++++++ params/bootnodes.go | 12 ++++++++++++ 2 files changed, 26 insertions(+) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 9c7938bdde..736acbb0d8 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1094,6 +1094,13 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls = params.SepoliaBootnodes case ctx.Bool(GoerliFlag.Name): urls = params.GoerliBootnodes + case ctx.IsSet(OPNetworkFlag.Name): + network := ctx.String(OPNetworkFlag.Name) + if strings.Contains(strings.ToLower(network), "mainnet") { + urls = params.OPMainnetBootnodes + } else { + urls = params.OPSepoliaBootnodes + } } } cfg.BootstrapNodes = mustParseBootnodes(urls) @@ -1123,6 +1130,13 @@ func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) { urls = SplitAndTrim(ctx.String(BootnodesFlag.Name)) case cfg.BootstrapNodesV5 != nil: return // already set, don't apply defaults. + case ctx.IsSet(OPNetworkFlag.Name): + network := ctx.String(OPNetworkFlag.Name) + if strings.Contains(strings.ToLower(network), "mainnet") { + urls = append(urls, params.OPMainnetBootnodes...) + } else { + urls = append(urls, params.OPSepoliaBootnodes...) + } } cfg.BootstrapNodesV5 = make([]*enode.Node, 0, len(urls)) diff --git a/params/bootnodes.go b/params/bootnodes.go index 5e2c7c2181..5bec6ae469 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -28,6 +28,12 @@ var MainnetBootnodes = []string{ "enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303", // bootnode-hetzner-fsn } +var OPMainnetBootnodes = []string{ + "enode://ca2774c3c401325850b2477fd7d0f27911efbf79b1e8b335066516e2bd8c4c9e0ba9696a94b1cb030a88eac582305ff55e905e64fb77fe0edcd70a4e5296d3ec@34.65.175.185?discport=30305", + "enode://dd751a9ef8912be1bfa7a5e34e2c3785cc5253110bd929f385e07ba7ac19929fb0e0c5d93f77827291f4da02b2232240fbc47ea7ce04c46e333e452f8656b667@34.65.107.0?discport=30305", + "enode://c5d289b56a77b6a2342ca29956dfd07aadf45364dde8ab20d1dc4efd4d1bc6b4655d902501daea308f4d8950737a4e93a4dfedd17b49cd5760ffd127837ca965@34.65.202.239?discport=30305", +} + // HoleskyBootnodes are the enode URLs of the P2P bootstrap nodes running on the // Holesky test network. var HoleskyBootnodes = []string{ @@ -47,6 +53,12 @@ var SepoliaBootnodes = []string{ "enode://9e9492e2e8836114cc75f5b929784f4f46c324ad01daf87d956f98b3b6c5fcba95524d6e5cf9861dc96a2c8a171ea7105bb554a197455058de185fa870970c7c@138.68.123.152:30303", // sepolia-bootnode-1-ams3 } +var OPSepoliaBootnodes = []string{ + "enode://2bd2e657bb3c8efffb8ff6db9071d9eb7be70d7c6d7d980ff80fc93b2629675c5f750bc0a5ef27cd788c2e491b8795a7e9a4a6e72178c14acc6753c0e5d77ae4@34.65.205.244?discport=30305", + "enode://db8e1cab24624cc62fc35dbb9e481b88a9ef0116114cd6e41034c55b5b4f18755983819252333509bd8e25f6b12aadd6465710cd2e956558faf17672cce7551f@34.65.173.88?discport=30305", + "enode://bfda2e0110cfd0f4c9f7aa5bf5ec66e6bd18f71a2db028d36b8bf8b0d6fdb03125c1606a6017b31311d96a36f5ef7e1ad11604d7a166745e6075a715dfa67f8a@34.65.229.245?discport=30305", +} + // GoerliBootnodes are the enode URLs of the P2P bootstrap nodes running on the // Görli test network. var GoerliBootnodes = []string{ From df0ed57f15d8011fbc1d45e80a2e68ce26ea2585 Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Wed, 21 Feb 2024 18:02:41 -0800 Subject: [PATCH 201/223] Fix bootnodes port (#250) --- params/bootnodes.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/params/bootnodes.go b/params/bootnodes.go index 5bec6ae469..2163ec2061 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -29,9 +29,9 @@ var MainnetBootnodes = []string{ } var OPMainnetBootnodes = []string{ - "enode://ca2774c3c401325850b2477fd7d0f27911efbf79b1e8b335066516e2bd8c4c9e0ba9696a94b1cb030a88eac582305ff55e905e64fb77fe0edcd70a4e5296d3ec@34.65.175.185?discport=30305", - "enode://dd751a9ef8912be1bfa7a5e34e2c3785cc5253110bd929f385e07ba7ac19929fb0e0c5d93f77827291f4da02b2232240fbc47ea7ce04c46e333e452f8656b667@34.65.107.0?discport=30305", - "enode://c5d289b56a77b6a2342ca29956dfd07aadf45364dde8ab20d1dc4efd4d1bc6b4655d902501daea308f4d8950737a4e93a4dfedd17b49cd5760ffd127837ca965@34.65.202.239?discport=30305", + "enode://ca2774c3c401325850b2477fd7d0f27911efbf79b1e8b335066516e2bd8c4c9e0ba9696a94b1cb030a88eac582305ff55e905e64fb77fe0edcd70a4e5296d3ec@34.65.175.185:30305", + "enode://dd751a9ef8912be1bfa7a5e34e2c3785cc5253110bd929f385e07ba7ac19929fb0e0c5d93f77827291f4da02b2232240fbc47ea7ce04c46e333e452f8656b667@34.65.107.0:30305", + "enode://c5d289b56a77b6a2342ca29956dfd07aadf45364dde8ab20d1dc4efd4d1bc6b4655d902501daea308f4d8950737a4e93a4dfedd17b49cd5760ffd127837ca965@34.65.202.239:30305", } // HoleskyBootnodes are the enode URLs of the P2P bootstrap nodes running on the @@ -54,9 +54,9 @@ var SepoliaBootnodes = []string{ } var OPSepoliaBootnodes = []string{ - "enode://2bd2e657bb3c8efffb8ff6db9071d9eb7be70d7c6d7d980ff80fc93b2629675c5f750bc0a5ef27cd788c2e491b8795a7e9a4a6e72178c14acc6753c0e5d77ae4@34.65.205.244?discport=30305", - "enode://db8e1cab24624cc62fc35dbb9e481b88a9ef0116114cd6e41034c55b5b4f18755983819252333509bd8e25f6b12aadd6465710cd2e956558faf17672cce7551f@34.65.173.88?discport=30305", - "enode://bfda2e0110cfd0f4c9f7aa5bf5ec66e6bd18f71a2db028d36b8bf8b0d6fdb03125c1606a6017b31311d96a36f5ef7e1ad11604d7a166745e6075a715dfa67f8a@34.65.229.245?discport=30305", + "enode://2bd2e657bb3c8efffb8ff6db9071d9eb7be70d7c6d7d980ff80fc93b2629675c5f750bc0a5ef27cd788c2e491b8795a7e9a4a6e72178c14acc6753c0e5d77ae4@34.65.205.244:30305", + "enode://db8e1cab24624cc62fc35dbb9e481b88a9ef0116114cd6e41034c55b5b4f18755983819252333509bd8e25f6b12aadd6465710cd2e956558faf17672cce7551f@34.65.173.88:30305", + "enode://bfda2e0110cfd0f4c9f7aa5bf5ec66e6bd18f71a2db028d36b8bf8b0d6fdb03125c1606a6017b31311d96a36f5ef7e1ad11604d7a166745e6075a715dfa67f8a@34.65.229.245:30305", } // GoerliBootnodes are the enode URLs of the P2P bootstrap nodes running on the From c545a4fe6a123a1a1eafe8d2968bddff4bd2f82a Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Thu, 22 Feb 2024 17:03:33 +0100 Subject: [PATCH 202/223] Update mainnet activation to Mar 14 00:00:01 UTC --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c4f2d1e559..a8a695582f 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240213180600-05287996b949 + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.13.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 7253b51f72..ca8b6041e3 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240213180600-05287996b949 h1:QKw8/XbFsmFQJsipKHP0CGWE1jJyO5qhhzPNZixoTRw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240213180600-05287996b949/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f h1:L2ub0d0iW2Nqwh1r9WxMqebgZf7rU+wHuVCv21uAGx8= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= From af32034eab8ac08cacc08a72b5ea92c3747bdde6 Mon Sep 17 00:00:00 2001 From: welkin22 Date: Fri, 12 Apr 2024 16:24:29 +0800 Subject: [PATCH 203/223] Fix go.mod and lost import items when merging --- eth/backend.go | 1 + go.mod | 37 +- go.sum | 1325 ++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 1240 insertions(+), 123 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index 86d6a3ef92..d05c5e3397 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -37,6 +37,7 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state/pruner" "github.com/ethereum/go-ethereum/core/txpool" + "github.com/ethereum/go-ethereum/core/txpool/blobpool" "github.com/ethereum/go-ethereum/core/txpool/legacypool" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" diff --git a/go.mod b/go.mod index 43b12e9c96..5f34984b75 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,6 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/cespare/cp v1.1.1 github.com/cloudflare/cloudflare-go v0.79.0 - github.com/cockroachdb/errors v1.9.1 github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 github.com/cometbft/cometbft v0.37.2 github.com/consensys/gnark-crypto v0.12.1 @@ -26,14 +25,11 @@ require ( github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f github.com/ethereum/c-kzg-4844 v0.4.0 - github.com/fatih/color v1.13.0 - github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.15.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 github.com/fsnotify/fsnotify v1.7.0 github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 - github.com/go-stack/stack v1.8.1 github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 github.com/gofrs/flock v0.8.1 github.com/golang-jwt/jwt/v4 v4.5.0 @@ -96,35 +92,32 @@ require ( github.com/aws/aws-sdk-go-v2/service/sts v1.23.2 // indirect github.com/aws/smithy-go v1.15.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/bits-and-blooms/bitset v1.7.0 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect + github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cockroachdb/errors v1.9.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.3 // indirect - github.com/cockroachdb/errors v1.8.1 // indirect - github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect - github.com/cosmos/gogoproto v1.4.11 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80 // indirect + github.com/cosmos/gogoproto v1.4.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/deepmap/oapi-codegen v1.8.2 // indirect - github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dustin/go-humanize v1.0.0 // indirect github.com/ferranbt/fastssz v0.0.0-20210905181407-59cf6761a7d5 // indirect github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.2 // indirect - github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect github.com/gtank/merlin v0.1.1 // indirect @@ -152,11 +145,11 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.14.0 // indirect github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect github.com/prysmaticlabs/eth2-types v0.0.0-20210303084904-c9735a06829d // indirect github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44 // indirect github.com/prysmaticlabs/gohashtree v0.0.3-alpha // indirect @@ -175,10 +168,10 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.20.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/grpc v1.60.0 // indirect - google.golang.org/protobuf v1.31.0 // indirect + golang.org/x/net v0.19.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.56.3 // indirect + google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go.sum b/go.sum index ca8b6041e3..39f6969b83 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,16 @@ +cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -19,6 +24,7 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -30,8 +36,18 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +contrib.go.opencensus.io/exporter/jaeger v0.2.1/go.mod h1:Y8IsLgdxqh1QxYxPC5IgXVmBaeLUeQFfBeBi9PbeZd0= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 h1:8q4SaHjFsClSvuVne0ID/5Ka8u3fcIHyqkLjcFpNRHQ= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= @@ -42,40 +58,90 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0/go.mod h1:c+Lifp3EDEamAkPVzMooRNOK6CZjNSdEnf1A7jsI9u4= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 h1:gggzg0SUMs6SQbEw+3LoSsYf9YMjkupeAnHMX8O9mmY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4= +github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= -github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= -github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= +github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/sarama v1.26.1/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc= +github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/aristanetworks/fsnotify v1.4.2/go.mod h1:D/rtu7LpjYM8tRJphJ0hUBYpjai8SfX+aSNsWDTq/Ks= +github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3/go.mod h1:KASm+qXFKs/xjSoWn30NrWBBvdTTQq+UjkhjEJHfSFA= +github.com/aristanetworks/goarista v0.0.0-20200521140103-6c3304613b30/go.mod h1:QZe5Yh80Hp1b6JxQdpfSEEe8X7hTyTEZSosSrFf/oJE= +github.com/aristanetworks/splunk-hec-go v0.3.3/go.mod h1:1VHO9r17b0K7WmOlLb9nTk/2YanvOEnLMUgsFrxBROc= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= github.com/aws/aws-sdk-go-v2 v1.21.2 h1:+LXZ0sgo8quN9UOKXXzAWRT3FWd4NxeXWOZom9pE7GA= github.com/aws/aws-sdk-go-v2 v1.21.2/go.mod h1:ErQhvNuEMhJjweavOYhxVkn2RUx7kQXVATHrjKtxIpM= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= github.com/aws/aws-sdk-go-v2/config v1.18.45 h1:Aka9bI7n8ysuwPeFdm77nfbyHCAKQ3z9ghB3S/38zes= github.com/aws/aws-sdk-go-v2/config v1.18.45/go.mod h1:ZwDUgFnQgsazQTnWfeLWk5GjeqTQTL8lMkoE1UXzxdE= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= github.com/aws/aws-sdk-go-v2/credentials v1.13.43 h1:LU8vo40zBlo3R7bAvBVy/ku4nxGEyZe9N8MqAeFTzF8= github.com/aws/aws-sdk-go-v2/credentials v1.13.43/go.mod h1:zWJBz1Yf1ZtX5NGax9ZdNjhhI4rgjfgsyk6vTY1yfVg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13 h1:PIktER+hwIG286DqXyvVENjgLTAwGgoeriLDD5C+YlQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13/go.mod h1:f/Ib/qYjhV2/qdsf79H3QP/eRE4AkVyEf6sk7XfZ1tg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43 h1:nFBQlGtkbPzp/NjZLuFxRqmT91rLJkgvsEQs68h962Y= @@ -84,159 +150,314 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37 h1:JRVhO25+r3ar2mKGP7 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37/go.mod h1:Qe+2KtKml+FEsQF/DHmDV+xjtche/hwoF75EG4UlHW8= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45 h1:hze8YsjSh8Wl1rYa1CJpRmXP21BvOBuc76YhW0HsuQ4= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45/go.mod h1:lD5M20o09/LCuQ2mE62Mb/iSdSlCNuj6H5ci7tW7OsE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37 h1:WWZA/I2K4ptBS1kg0kV1JbBtG/umed0vwHRrmcr9z7k= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37/go.mod h1:vBmDnwWXWxNPFRMmG2m/3MKOe+xEcMDo1tanpaWCcck= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= github.com/aws/aws-sdk-go-v2/service/route53 v1.30.2 h1:/RPQNjh1sDIezpXaFIkZb7MlXnSyAqjVdAwcJuGYTqg= github.com/aws/aws-sdk-go-v2/service/route53 v1.30.2/go.mod h1:TQZBt/WaQy+zTHoW++rnl8JBrmZ0VO6EUbVua1+foCA= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= github.com/aws/aws-sdk-go-v2/service/sso v1.15.2 h1:JuPGc7IkOP4AaqcZSIcyqLpFSqBWK32rM9+a1g6u73k= github.com/aws/aws-sdk-go-v2/service/sso v1.15.2/go.mod h1:gsL4keucRCgW+xA85ALBpRFfdSLH4kHOVSnLMSuBECo= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3 h1:HFiiRkf1SdaAmV3/BHOFZ9DjFynPHj8G/UIO1lQS+fk= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3/go.mod h1:a7bHA82fyUXOm+ZSWKU6PIoBxrjSprdLoM8xPYvzYVg= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= github.com/aws/aws-sdk-go-v2/service/sts v1.23.2 h1:0BkLfgeDjfZnZ+MhB3ONb01u9pwFYTCZVhlsSSBvlbU= github.com/aws/aws-sdk-go-v2/service/sts v1.23.2/go.mod h1:Eows6e1uQEsc4ZaHANmsPRzAKcVDrcmjjWiih2+HUUQ= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= github.com/aws/smithy-go v1.15.0 h1:PS/durmlzvAFpQHDs4wi4sNNP9ExsqZh6IlfdHXgKK8= github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= +github.com/bazelbuild/rules_go v0.23.2 h1:Wxu7JjqnF78cKZbsBsARLSXx/jlGaSLCnUV3mTlyHvM= +github.com/bazelbuild/rules_go v0.23.2/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M= +github.com/benbjohnson/clock v1.0.2/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= -github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.7.0 h1:YjAGVd3XmtK9ktAbX8Zg2g2PwLIMjGREZJHlV4j7NEo= +github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/bnb-chain/greenfield-cometbft v1.0.0 h1:0r6hOJWD/+es0gxP/exKuN/krgXAr3LCn5/XlcgDWr8= +github.com/bnb-chain/greenfield-cometbft v1.0.0/go.mod h1:f35mk/r5ab6yvzlqEWZt68LfUje68sYgMpVlt2CUYMk= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= +github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= +github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= +github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU= +github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= github.com/cloudflare/cloudflare-go v0.79.0 h1:ErwCYDjFCYppDJlDJ/5WhsSmzegAUe2+K9qgFyQDg3M= github.com/cloudflare/cloudflare-go v0.79.0/go.mod h1:gkHQf9xEubaQPEuerBuoinR9P8bf8a05Lq0X6WKy1Oc= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= -github.com/cockroachdb/errors v1.8.1 h1:A5+txlVZfOqFBDa4mGz2bUWSp0aHElvHX2bKkdbQu+Y= -github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= +github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= +github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= -github.com/cockroachdb/redact v1.0.8 h1:8QG/764wK+vmEYoOlfobpe12EQcS81ukx/a4hdVMxNw= -github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 h1:IKgmqgMQlVJIZj19CdocBeSfSaiCbEBZGKODaixqtHM= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= +github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= +github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= +github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d h1:49RLWk1j44Xu4fjHb6JFYmeUnDORVwHNkDxaQ0ctCVU= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/gogoproto v1.4.1 h1:WoyH+0/jbCTzpKNvyav5FL1ZTWsp1im1MxEpJEzKUB8= +github.com/cosmos/gogoproto v1.4.1/go.mod h1:Ac9lzL4vFpBMcptJROQ6dQ4M3pOEK5Z/l0Q9p+LoCr4= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= +github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/deepmap/oapi-codegen v1.6.0 h1:w/d1ntwh91XI0b/8ja7+u5SvA4IFfM0UNNLmiDR1gg0= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbzjuhfU= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU= +github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= +github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 h1:cNcG4c2n5xanQzp2hMyxDxPYVQmZ91y4WN6fJFlndLo= +github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018/go.mod h1:MIonLggsKgZLUSt414ExgwNtlOL5MuEoAJP514mwGe8= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 h1:qwcF+vdFrvPSEUDSX5RVoRccG8a5DhOdWdQ4zN62zzo= github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/dot v0.11.0/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f h1:L2ub0d0iW2Nqwh1r9WxMqebgZf7rU+wHuVCv21uAGx8= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/ferranbt/fastssz v0.0.0-20210120143747-11b9eff30ea9/go.mod h1:DyEu2iuLBnb/T51BlsiO3yLYdJC6UbGMrIkqK1KmQxM= +github.com/ferranbt/fastssz v0.0.0-20210905181407-59cf6761a7d5 h1:6dVcS0LktRSyEEgldFY4N9J17WjUoiJStttH+RZj0Wo= +github.com/ferranbt/fastssz v0.0.0-20210905181407-59cf6761a7d5/go.mod h1:S8yiDeAXy8f88W4Ul+0dBMPx49S05byYbmZD6Uv94K4= github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e h1:bBLctRc7kr01YGvaDfgLbTwjFNW5jdp5y5rj8XXBHfY= github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e/go.mod h1:AzA8Lj6YtixmJWL+wkKoBGsLWy9gFrAzi4g+5bCKwpY= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= +github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61 h1:IZqZOB2fydHte3kUgxrzK5E1fW7RQGeDwE8F/ZZnUYc= github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61/go.mod h1:Q0X6pkwTILDlzrGEckF6HKjXe48EgsY/l7K7vhY4MW8= +github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= +github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.2.1/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -244,19 +465,30 @@ github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/gddo v0.0.0-20200528160355-8d077c1d8f4c/go.mod h1:sam69Hju0uq+5uvLJUMDlsKlQ21Vrs1Kd/1YFPNYdOU= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -264,6 +496,8 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -282,6 +516,10 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -289,6 +527,10 @@ github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGS github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -297,19 +539,27 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -317,149 +567,479 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY41SORZyNJ0= github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.1 h1:X2vfSnm1WC8HEo0MBHZg2TcuDUHJj6kd1TmEAQncnSA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.1/go.mod h1:oVMjMN64nzEcepv1kdZKgx1qNYt4Ro0Gqefiq2JWdis= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= +github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v0.0.0-20170914154624-68e816d1c783/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/herumi/bls-eth-go-binary v0.0.0-20210130185500-57372fb27371/go.mod h1:luAnRm3OsMQeokhGzpYmc0ZKwawY7o87PUEP11Z7r7U= +github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e h1:wCMygKUQhmcQAjlk2Gquzq6dLmyMv2kF+llRspoRgrk= +github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e/go.mod h1:luAnRm3OsMQeokhGzpYmc0ZKwawY7o87PUEP11Z7r7U= github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 h1:3JQNjnMRil1yD0IfZKHF9GxxWKDJGj8I0IqOUol//sw= github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goupnp v1.0.2/go.mod h1:0dxJBVBHqTMjIUMkESDTNgOOx/Mw5wYIfyFmdzSamkM= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= -github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/ianlancetaylor/cgosymbolizer v0.0.0-20200424224625-be1b05b0b279/go.mod h1:a5aratAVTWyz+nJMmDsN8O4XTfaLfdAsB1ysCmZX5Bw= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= github.com/influxdata/influxdb-client-go/v2 v2.4.0 h1:HGBfZYStlx3Kqvsv1h2pJixbCl/jhnFtxpKFAv9Tu5k= github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c h1:qSHzRbhzK8RdXOsAdfDgO49TtqC1oZ+acxPrkfTxcCs= github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 h1:vilfsDSy7TDxedi9gyBkMvAirat/oRcL0lFdJBf6tdM= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= +github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= +github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= +github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= +github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= +github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk= +github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= +github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= +github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= +github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= +github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= +github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk= +github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A= +github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs= +github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= +github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= +github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= +github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= +github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= +github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= +github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= +github.com/ipfs/go-log/v2 v2.4.0/go.mod h1:nPZnh7Cj7lwS3LpRU5Mwr2ol1c2gXIEXuF6aywqrtmo= github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= +github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= +github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= +github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= +github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 h1:TMtDYDHKYY15rFihtRfck/bfFqNfvcabqvXAFQfAUpY= github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267/go.mod h1:h1nSAbGFqGVzn6Jyl1R/iCcBUHN4g+gW1u9CoBTrb9E= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/joonix/log v0.0.0-20200409080653-9c1d2ceb5f1d/go.mod h1:fS54ONkjDV71zS9CDx3V9K21gJg7byKSvI4ajuWFNJw= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/karalabe/usb v0.0.2 h1:M6QQBNxF+CQ8OFvxrT90BA0qBOXymndZnk5q235mFc4= -github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= -github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= -github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= +github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= +github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= +github.com/karalabe/usb v0.0.0-20211005121534-4c5740d64559/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/karalabe/usb v0.0.3-0.20230711191512-61db3e06439c h1:AqsttAyEyIEsNz5WLRwuRwjiT5CMDUfLk6cFJDVPebs= +github.com/karalabe/usb v0.0.3-0.20230711191512-61db3e06439c/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= +github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= +github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= +github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= +github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/kevinms/leakybucket-go v0.0.0-20200115003610-082473db97ca/go.mod h1:ph+C5vpnCcQvKBwJwKLTK3JLNGnBXYlG7m7JjoC/zYA= github.com/kilic/bls12-381 v0.1.0 h1:encrdjqKMEvabVQ7qYOKu1OvhqpK4s47wDYtNiPtlp4= github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/reedsolomon v1.9.3/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= +github.com/koron/go-ssdp v0.0.2/go.mod h1:XoLfkAiA2KeZsYh4DbHxD7h3nR2AZNqVQOa+LJuqPYs= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= +github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw= +github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= +github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= +github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU= +github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70= +github.com/libp2p/go-conn-security-multistream v0.3.0/go.mod h1:EEP47t4fw/bTelVmEzIDqSe69hO/ip52xBEhZMLWAHM= +github.com/libp2p/go-eventbus v0.2.1/go.mod h1:jc2S4SoEVPP48H9Wpzm5aiGwUCBMfGhVhhBjyhhCJs8= +github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= +github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= +github.com/libp2p/go-libp2p v0.17.0/go.mod h1:Fkin50rsGdv5mm5BshBUtPRZknt9esfmYXBOYcwOTgw= +github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I= +github.com/libp2p/go-libp2p-autonat v0.7.0/go.mod h1:uPvPn6J7cN+LCfFwW5tpOYvAz5NvPTc4iBamTV/WDMg= +github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ= +github.com/libp2p/go-libp2p-blankhost v0.3.0/go.mod h1:urPC+7U01nCGgJ3ZsV8jdwTp6Ji9ID0dMTvq+aJ+nZU= +github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA= +github.com/libp2p/go-libp2p-connmgr v0.2.4/go.mod h1:YV0b/RIm8NGPnnNWM7hG9Q38OeQiQfKhHCCs1++ufn0= +github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= +github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= +github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= +github.com/libp2p/go-libp2p-core v0.3.1/go.mod h1:thvWy0hvaSBhnVBaW37BvzgVV68OUhgJJLAa6almrII= +github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= +github.com/libp2p/go-libp2p-core v0.5.1/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= +github.com/libp2p/go-libp2p-core v0.5.4/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= +github.com/libp2p/go-libp2p-core v0.5.5/go.mod h1:vj3awlOr9+GMZJFH9s4mpt9RHHgGqeHCopzbYKZdRjM= +github.com/libp2p/go-libp2p-core v0.5.7/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= +github.com/libp2p/go-libp2p-core v0.6.0/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= +github.com/libp2p/go-libp2p-core v0.7.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.6/go.mod h1:dgHr0l0hIKfWpGpqAMbpo19pen9wJfdCGv51mTmdpmM= +github.com/libp2p/go-libp2p-core v0.9.0/go.mod h1:ESsbz31oC3C1AvMJoGx26RTuCkNhmkSRCqZ0kQtJ2/8= +github.com/libp2p/go-libp2p-core v0.10.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= +github.com/libp2p/go-libp2p-core v0.11.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= +github.com/libp2p/go-libp2p-core v0.12.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= +github.com/libp2p/go-libp2p-core v0.13.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= +github.com/libp2p/go-libp2p-discovery v0.6.0/go.mod h1:/u1voHt0tKIe5oIA1RHBKQLVCWPna2dXmPNHc2zR9S8= +github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= +github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= +github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek= +github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= +github.com/libp2p/go-libp2p-nat v0.1.0/go.mod h1:DQzAG+QbDYjN1/C3B6vXucLtz3u9rEonLVPtZVzQqks= +github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= +github.com/libp2p/go-libp2p-noise v0.3.0/go.mod h1:JNjHbociDJKHD64KTkzGnzqJ0FEV5gHJa6AB00kbCNQ= +github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= +github.com/libp2p/go-libp2p-peerstore v0.4.0/go.mod h1:rDJUFyzEWPpXpEwywkcTYYzDHlwza8riYMaUzaN6hX0= +github.com/libp2p/go-libp2p-peerstore v0.6.0/go.mod h1:DGEmKdXrcYpK9Jha3sS7MhqYdInxJy84bIPtSu65bKc= +github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA= +github.com/libp2p/go-libp2p-pubsub v0.6.1/go.mod h1:nJv87QM2cU0w45KPR1rZicq+FmFIOD16zmT+ep1nOmg= +github.com/libp2p/go-libp2p-quic-transport v0.13.0/go.mod h1:39/ZWJ1TW/jx1iFkKzzUg00W6tDJh73FC0xYudjr7Hc= +github.com/libp2p/go-libp2p-quic-transport v0.15.2/go.mod h1:wv4uGwjcqe8Mhjj7N/Ic0aKjA+/10UnMlSzLO0yRpYQ= +github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= +github.com/libp2p/go-libp2p-swarm v0.8.0/go.mod h1:sOMp6dPuqco0r0GHTzfVheVBh6UEL0L1lXUZ5ot2Fvc= +github.com/libp2p/go-libp2p-swarm v0.9.0/go.mod h1:2f8d8uxTJmpeqHF/1ujjdXZp+98nNIbujVOMEZxCbZ8= +github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= +github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc= +github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g= +github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= +github.com/libp2p/go-libp2p-testing v0.4.2/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= +github.com/libp2p/go-libp2p-testing v0.5.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A= +github.com/libp2p/go-libp2p-testing v0.6.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A= +github.com/libp2p/go-libp2p-tls v0.3.0/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY= +github.com/libp2p/go-libp2p-tls v0.3.1/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY= +github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSoMuyojOdjx73Q47cYD7s5+gZOlns= +github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o= +github.com/libp2p/go-libp2p-transport-upgrader v0.4.3/go.mod h1:bpkldbOWXMrXhpZbSV1mQxTrefOg2Fi+k1ClDSA4ppw= +github.com/libp2p/go-libp2p-transport-upgrader v0.5.0/go.mod h1:Rc+XODlB3yce7dvFV4q/RmyJGsFcCZRkeZMu/Zdg0mo= +github.com/libp2p/go-libp2p-transport-upgrader v0.6.0/go.mod h1:1e07y1ZSZdHo9HPbuU8IztM1Cj+DR5twgycb4pnRzRo= +github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelNoy5nm3tZ3/Zw30= +github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po= +github.com/libp2p/go-libp2p-yamux v0.7.0/go.mod h1:fMyA0CsPfHkIuBU0wjRGrCjTBFiXTXxG0k5M4ETv+08= +github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M= +github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= +github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= +github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= +github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= +github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= +github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA= +github.com/libp2p/go-msgio v0.1.0/go.mod h1:eNlv2vy9V2X/kNldcZ+SShFE++o2Yjxwx6RAYsmgJnE= +github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC3uRBM= +github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= +github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= +github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A= +github.com/libp2p/go-netroute v0.1.6/go.mod h1:AqhkMh0VuWmfgtxKPp3Oc1LdU5QSWS7wl0QLhSZqXxQ= +github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= +github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= +github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= +github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= +github.com/libp2p/go-reuseport v0.1.0/go.mod h1:bQVn9hmfcTaoo0c9v5pBhOarsU1eNOBZdaAd2hzXRKU= +github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM= +github.com/libp2p/go-reuseport-transport v0.1.0/go.mod h1:vev0C0uMkzriDY59yFHD9v+ujJvYmDQVLowvAjEOmfw= +github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= +github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= +github.com/libp2p/go-sockaddr v0.1.1/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= +github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA= +github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0= +github.com/libp2p/go-tcp-transport v0.4.0/go.mod h1:0y52Rwrn4076xdJYu/51/qJIdxz+EWDAOG2S45sV3VI= +github.com/libp2p/go-ws-transport v0.5.0/go.mod h1:I2juo1dNTbl8BKSBYo98XY85kU2xds1iamArLvl8kNg= +github.com/libp2p/go-yamux v1.4.0/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= +github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= +github.com/libp2p/go-yamux/v2 v2.3.0/go.mod h1:iTU+lOIn/2h0AgKcL49clNTwfEw+WSfDYrXe05EyKIs= +github.com/libp2p/zeroconf/v2 v2.1.1/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= +github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= +github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= +github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= +github.com/marten-seemann/qtls-go1-15 v0.1.4/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +github.com/marten-seemann/qtls-go1-16 v0.1.4/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= +github.com/marten-seemann/qtls-go1-17 v0.1.0/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= -github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= @@ -469,34 +1049,138 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= +github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= +github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE= +github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= +github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= +github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc= +github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0= +github.com/multiformats/go-multiaddr v0.4.0/go.mod h1:YcpyLH8ZPudLxQlemYBPhSm0/oCXAT8Z4mzFpyoPyRc= +github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multiaddr-net v0.1.2/go.mod h1:QsWt3XK/3hwvNxZJp92iMQKME1qHfpYmyIjFVsSOY6Y= +github.com/multiformats/go-multiaddr-net v0.1.3/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= +github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= +github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= +github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= +github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= +github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= +github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= +github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= +github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38= +github.com/multiformats/go-multistream v0.2.1/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= +github.com/multiformats/go-multistream v0.2.2/go.mod h1:UIcnm7Zuo8HKG+HkWgfQsGL+/MIEhyTqbODbIUwSXKs= +github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 h1:shk/vn9oCoOTmwcouEdwIeOtOGA/ELRUw/GwvxwfT+0= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= +github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/openconfig/gnmi v0.0.0-20190823184014-89b2bf29312c/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= +github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696/go.mod h1:ym2A+zigScwkSEb/cVQB0/ZMpU3rqiH6X7WRRsxgOGw= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/peterh/liner v1.2.0 h1:w/UPXyl5GfahFxcTOz2j9wCIHNI+pUPr2laqpojKNCg= +github.com/peterh/liner v1.2.0/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= @@ -506,92 +1190,235 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.0 h1:C+UIj/QWtmqY13Arb8kwMt5j34/0Z2iKamrJ+ryC0Gg= -github.com/prometheus/client_golang v1.12.0/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a h1:CmF68hwI0XsOQ5UwlBopMi2Ow4Pbg32akc4KIVCOm+Y= -github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.0.10/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/prom2json v1.3.0/go.mod h1:rMN7m0ApCowcoDlypBHlkNbp5eJQf/+1isKykIP5ZnM= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4= github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7 h1:cZC+usqsYgHtlBaGulVnZ1hfKAi8iWtujBnRLQE698c= github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7/go.mod h1:IToEjHuttnUzwZI5KBSM/LOOW3qLbbrHOEfp3SbECGY= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/prysmaticlabs/eth2-types v0.0.0-20210303084904-c9735a06829d h1:1dN7YAqMN3oAJ0LceWcyv/U4jHLh+5urnSnr4br6zg4= +github.com/prysmaticlabs/eth2-types v0.0.0-20210303084904-c9735a06829d/go.mod h1:kOmQ/zdobQf7HUohDTifDNFEZfNaSCIY5fkONPL+dWU= +github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44 h1:c3p3UzV4vFA7xaCDphnDWOjpxcadrQ26l5b+ypsvyxo= +github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44/go.mod h1:MA5zShstUwCQaE9faGHgCGvEWUbG87p4SAXINhmCkvg= +github.com/prysmaticlabs/go-bitfield v0.0.0-20210108222456-8e92c3709aa0/go.mod h1:hCwmef+4qXWjv0jLDbQdWnL0Ol7cS7/lCSS26WR+u6s= +github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 h1:0tVE4tdWQK9ZpYygoV7+vS6QkDvQVySboMVEIxBJmXw= +github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= +github.com/prysmaticlabs/gohashtree v0.0.3-alpha h1:1EVinCWdb3Lorq7xn8DYQHf48nCcdAM3Vb18KsFlRWY= +github.com/prysmaticlabs/gohashtree v0.0.3-alpha/go.mod h1:4pWaT30XoEx1j8KNJf3TV+E3mQkaufn7mf+jRNb/Fuk= +github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c/go.mod h1:ZRws458tYHS/Zs936OQ6oCrL+Ict5O4Xpwve1UQ6C9M= +github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20211014160335-757fae4f38c6/go.mod h1:ZVEbRdnMkGhp/pu35zq4SXxtvUwWK0J1MATtekZpH2Y= +github.com/prysmaticlabs/prysm v0.0.0-20220124113610-e26cde5e091b h1:XULhE6PdzCYSe5OEVFhuixNqL3mYVOq/3M+SUGnKr1Y= +github.com/prysmaticlabs/prysm v0.0.0-20220124113610-e26cde5e091b/go.mod h1:bFzDfaj4xtisRey9RPkMJOhOJVwmtH3FChV7NPKV1Nk= +github.com/prysmaticlabs/prysm/v4 v4.2.0 h1:87QoRT3Azs7c1Y6SnIq0+CNtQRbAt0sVKGj2OxRT1Rw= +github.com/prysmaticlabs/prysm/v4 v4.2.0/go.mod h1:PQrQtHJeeqTz4K3udN/EX1Gs2xhWR4j93gSj0OQZ1f4= +github.com/r3labs/sse v0.0.0-20210224172625-26fe804710bc/go.mod h1:S8xSOnV3CgpNrWd0GQ/OoQfMtlg2uPRSuTzcSGrzwK8= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/schollz/progressbar/v3 v3.3.4/go.mod h1:Rp5lZwpgtYmlvmGo1FyDwXMqagyRBQYSDwzlP9QDu84= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= +github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= +github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/supranational/blst v0.3.5/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= +github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4= +github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e h1:cR8/SYRgyQCt5cNCMniB/ZScMkhI9nk8U5C7SbISXjo= +github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e/go.mod h1:Tu4lItkATkonrYuvtVjG0/rhy15qrNGNTjPdaphtZ/8= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tjfoc/gmsm v1.3.0/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/trailofbits/go-mutexasserts v0.0.0-20200708152505-19999e7d3cef/go.mod h1:+SV/613m53DNAmlXPTWGZhIyt4E/qDvn9g/lOPRiy0A= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= @@ -600,12 +1427,33 @@ github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBn github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/wealdtech/go-bytesutil v1.1.1/go.mod h1:jENeMqeTEU8FNZyDFRVc7KqBdRKSnJ9CCh26TcuNb9s= +github.com/wealdtech/go-eth2-types/v2 v2.5.2/go.mod h1:8lkNUbgklSQ4LZ2oMSuxSdR7WwJW3L9ge1dcoCVyzws= +github.com/wealdtech/go-eth2-util v1.6.3/go.mod h1:0hFMj/qtio288oZFHmAbCnPQ9OB3c4WFzs5NVPKTY4k= +github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4 v1.1.3/go.mod h1:qiIimacW5NhVRy8o+YxWo9YrecXqDAKKbL0+sOa0SJ4= +github.com/wealdtech/go-eth2-wallet-types/v2 v2.8.2/go.mod h1:k6kmiKWSWBTd4OxFifTEkPaBLhZspnO2KFD5XJY9nqg= +github.com/wercker/journalhook v0.0.0-20180428041537-5d0a5ae867b3/go.mod h1:XCsSkdKK4gwBMNrOCZWww0pX6AOt+2gYc5Z6jBRrNVg= +github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= +github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= +github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= +github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= +github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1:m2aV4LZI4Aez7dP5PMyVKEHhUyEJ/RjmPEDOpDvudHg= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= +github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= @@ -614,28 +1462,92 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= +github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= go.uber.org/automaxprocs v1.5.2 h1:2LxUOGiR3O6tw8ui5sZa2LAaHnsviZdVOUZw4fvbnME= go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= @@ -645,10 +1557,14 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 h1:qCEDpW1G+vcj3Y7Fy52pEM1AWm3abj8WimGYejI3SC4= +golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -659,6 +1575,8 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -667,17 +1585,29 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -687,7 +1617,10 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -695,6 +1628,7 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -704,19 +1638,39 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -731,14 +1685,26 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -748,49 +1714,82 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191206220618-eeba5f6aabab/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= @@ -798,17 +1797,21 @@ golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -816,10 +1819,17 @@ golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181130052023-1c3d964395ce/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -835,6 +1845,9 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -842,12 +1855,15 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200221224223-e1da425f72fd/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= @@ -861,15 +1877,32 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= +golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -886,18 +1919,30 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -905,36 +1950,65 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200218151345-dad8c97a84f5/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210426193834-eac7f76ac494/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -947,34 +2021,62 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= +gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/d4l3k/messagediff.v1 v1.2.1/go.mod h1:EUzikiKadqXWcD1AzJLagx0j/BeeWGtn++04Xniyg44= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= +gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= +gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= +gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= +gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/redis.v4 v4.2.4/go.mod h1:8KREHdypkCEojGKQcjMqAODMICIVwZAONWq8RowTITA= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8= +gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -982,8 +2084,29 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= +k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.3.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200520001619-278ece378a50/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= From 42b621928e9cd592d25a60181a94ee8b17549551 Mon Sep 17 00:00:00 2001 From: welkin22 Date: Mon, 15 Apr 2024 15:03:04 +0800 Subject: [PATCH 204/223] rollup.superchain-upgrades default value to false because we don't need it --- cmd/utils/flags.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index beaa8a5a6e..40a0696a14 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -23,7 +23,6 @@ import ( "encoding/hex" "errors" "fmt" - "github.com/ethereum/go-ethereum/core/opcodeCompiler/compiler" "math" "math/big" "net" @@ -35,6 +34,8 @@ import ( "strings" "time" + "github.com/ethereum/go-ethereum/core/opcodeCompiler/compiler" + "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/ethereum/go-ethereum/common" @@ -930,7 +931,7 @@ var ( Aliases: []string{"beta.rollup.superchain-upgrades"}, Usage: "Apply superchain-registry config changes to the local chain-configuration", Category: flags.RollupCategory, - Value: true, + Value: false, } // Metrics flags From 6d7b45478bc5453562075bfb718516dff9ae50ef Mon Sep 17 00:00:00 2001 From: welkin22 Date: Tue, 23 Apr 2024 17:12:37 +0800 Subject: [PATCH 205/223] docker file use go 1.21 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6d20384ca6..7401d49198 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ ARG VERSION="" ARG BUILDNUM="" # Build Geth in a stock Go builder container -FROM golang:1.20-alpine as builder +FROM golang:1.21-alpine as builder RUN apk add --no-cache build-base libc-dev RUN apk add --no-cache gcc musl-dev linux-headers git From eaeee8a5ec9602455a9ecaf8eec165de2f1469e5 Mon Sep 17 00:00:00 2001 From: geoknee Date: Thu, 22 Feb 2024 12:55:53 +0000 Subject: [PATCH 206/223] get hardfork times from chConfig, not superchainConfig --- params/superchain.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/params/superchain.go b/params/superchain.go index 480632e9a7..83a5b47f5b 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -41,10 +41,6 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { if !ok { return nil, fmt.Errorf("unknown chain ID: %d", chainID) } - superchainConfig, ok := superchain.Superchains[chConfig.Superchain] - if !ok { - return nil, fmt.Errorf("unknown superchain %q", chConfig.Superchain) - } genesisActivation := uint64(0) out := &ChainConfig{ @@ -65,13 +61,13 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { ArrowGlacierBlock: common.Big0, GrayGlacierBlock: common.Big0, MergeNetsplitBlock: common.Big0, - ShanghaiTime: superchainConfig.Config.CanyonTime, // Shanghai activates with Canyon - CancunTime: superchainConfig.Config.EcotoneTime, // Cancun activates with Ecotone + ShanghaiTime: chConfig.CanyonTime, // Shanghai activates with Canyon + CancunTime: chConfig.EcotoneTime, // Cancun activates with Ecotone PragueTime: nil, BedrockBlock: common.Big0, RegolithTime: &genesisActivation, - CanyonTime: superchainConfig.Config.CanyonTime, - EcotoneTime: superchainConfig.Config.EcotoneTime, + CanyonTime: chConfig.CanyonTime, + EcotoneTime: chConfig.EcotoneTime, TerminalTotalDifficulty: common.Big0, TerminalTotalDifficultyPassed: true, Ethash: nil, @@ -83,10 +79,6 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { }, } - // note: no actual parameters are being loaded, yet. - // Future superchain upgrades are loaded from the superchain chConfig and applied to the geth ChainConfig here. - _ = superchainConfig.Config - // special overrides for OP-Stack chains with pre-Regolith upgrade history switch chainID { case OPGoerliChainID: From be00491f35169e08b5047933567edd19de50ce69 Mon Sep 17 00:00:00 2001 From: geoknee Date: Thu, 22 Feb 2024 22:36:55 +0800 Subject: [PATCH 207/223] remove RegolithTime overrides and rely on superchain to override these for us --- core/genesis.go | 4 ++-- params/superchain.go | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/core/genesis.go b/core/genesis.go index 7e7527e5ee..210d4c1d48 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -317,11 +317,11 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen if config.IsOptimism() && config.ChainID != nil && config.ChainID.Cmp(big.NewInt(params.OPGoerliChainID)) == 0 { // Apply Optimism Goerli regolith time - config.RegolithTime = ¶ms.OptimismGoerliRegolithTime + config.RegolithTime = superchain.OPChains[params.OPGoerliChainID].RegolithTime } if config.IsOptimism() && config.ChainID != nil && config.ChainID.Cmp(big.NewInt(params.BaseGoerliChainID)) == 0 { // Apply Base Goerli regolith time - config.RegolithTime = ¶ms.BaseGoerliRegolithTime + config.RegolithTime = superchain.OPChains[params.BaseGoerliChainID].RegolithTime } if overrides != nil && overrides.OverrideCancun != nil { config.CancunTime = overrides.OverrideCancun diff --git a/params/superchain.go b/params/superchain.go index 83a5b47f5b..4cc9f50070 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -42,7 +42,6 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { return nil, fmt.Errorf("unknown chain ID: %d", chainID) } - genesisActivation := uint64(0) out := &ChainConfig{ ChainID: new(big.Int).SetUint64(chainID), HomesteadBlock: common.Big0, @@ -65,7 +64,7 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { CancunTime: chConfig.EcotoneTime, // Cancun activates with Ecotone PragueTime: nil, BedrockBlock: common.Big0, - RegolithTime: &genesisActivation, + RegolithTime: chConfig.RegolithTime, CanyonTime: chConfig.CanyonTime, EcotoneTime: chConfig.EcotoneTime, TerminalTotalDifficulty: common.Big0, @@ -87,7 +86,6 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { out.GrayGlacierBlock = big.NewInt(4061224) out.MergeNetsplitBlock = big.NewInt(4061224) out.BedrockBlock = big.NewInt(4061224) - out.RegolithTime = &OptimismGoerliRegolithTime out.Optimism.EIP1559Elasticity = 10 case OPMainnetChainID: out.BerlinBlock = big.NewInt(3950000) @@ -97,20 +95,16 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { out.MergeNetsplitBlock = big.NewInt(105235063) out.BedrockBlock = big.NewInt(105235063) case BaseGoerliChainID: - out.RegolithTime = &BaseGoerliRegolithTime out.Optimism.EIP1559Elasticity = 10 case baseSepoliaChainID: out.Optimism.EIP1559Elasticity = 10 case baseGoerliDevnetChainID: - out.RegolithTime = &baseGoerliDevnetRegolithTime case pgnSepoliaChainID: out.Optimism.EIP1559Elasticity = 2 out.Optimism.EIP1559Denominator = 8 case devnetChainID: - out.RegolithTime = &devnetRegolithTime out.Optimism.EIP1559Elasticity = 10 case chaosnetChainID: - out.RegolithTime = &chaosnetRegolithTime out.Optimism.EIP1559Elasticity = 10 } From f320edb3dc9f0861f93535d5c5b4355817ef9feb Mon Sep 17 00:00:00 2001 From: geoknee Date: Fri, 23 Feb 2024 11:51:02 +0000 Subject: [PATCH 208/223] go get github.com/ethereum-optimism/superchain-registry/superchain@1203fe7 && go mod tidy --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5f34984b75..0b6b62e0ca 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.15.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 39f6969b83..7ba3915108 100644 --- a/go.sum +++ b/go.sum @@ -359,8 +359,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f h1:L2ub0d0iW2Nqwh1r9WxMqebgZf7rU+wHuVCv21uAGx8= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240222155908-ab073f6aa74f/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc h1:ELuRENfnx0JN/BeHVdXEOTzLQ/DLt5RP9oa245kAEyY= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= From dce355e58dcea76d978b2f2b25aa8320c00e30cb Mon Sep 17 00:00:00 2001 From: geoknee Date: Tue, 27 Feb 2024 11:13:55 +0000 Subject: [PATCH 209/223] update superchain dependency --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 0b6b62e0ca..f8304da55d 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.15.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 7ba3915108..f167ec7c86 100644 --- a/go.sum +++ b/go.sum @@ -361,6 +361,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc h1:ELuRENfnx0JN/BeHVdXEOTzLQ/DLt5RP9oa245kAEyY= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b h1:flvnJbgZHugwTlC8HsPvPwOZc7zGWjFlWZw3JOJ7wcI= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= From 4b4d5d655f962e44e45cf206bf0631da66240838 Mon Sep 17 00:00:00 2001 From: geoknee Date: Tue, 27 Feb 2024 19:13:59 +0800 Subject: [PATCH 210/223] Revert "remove RegolithTime overrides" This reverts commit d19ad5295dc29468947ab6bad6dfefbfd85e4818. --- core/genesis.go | 4 ++-- params/superchain.go | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/genesis.go b/core/genesis.go index 210d4c1d48..7e7527e5ee 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -317,11 +317,11 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen if config.IsOptimism() && config.ChainID != nil && config.ChainID.Cmp(big.NewInt(params.OPGoerliChainID)) == 0 { // Apply Optimism Goerli regolith time - config.RegolithTime = superchain.OPChains[params.OPGoerliChainID].RegolithTime + config.RegolithTime = ¶ms.OptimismGoerliRegolithTime } if config.IsOptimism() && config.ChainID != nil && config.ChainID.Cmp(big.NewInt(params.BaseGoerliChainID)) == 0 { // Apply Base Goerli regolith time - config.RegolithTime = superchain.OPChains[params.BaseGoerliChainID].RegolithTime + config.RegolithTime = ¶ms.BaseGoerliRegolithTime } if overrides != nil && overrides.OverrideCancun != nil { config.CancunTime = overrides.OverrideCancun diff --git a/params/superchain.go b/params/superchain.go index 4cc9f50070..83a5b47f5b 100644 --- a/params/superchain.go +++ b/params/superchain.go @@ -42,6 +42,7 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { return nil, fmt.Errorf("unknown chain ID: %d", chainID) } + genesisActivation := uint64(0) out := &ChainConfig{ ChainID: new(big.Int).SetUint64(chainID), HomesteadBlock: common.Big0, @@ -64,7 +65,7 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { CancunTime: chConfig.EcotoneTime, // Cancun activates with Ecotone PragueTime: nil, BedrockBlock: common.Big0, - RegolithTime: chConfig.RegolithTime, + RegolithTime: &genesisActivation, CanyonTime: chConfig.CanyonTime, EcotoneTime: chConfig.EcotoneTime, TerminalTotalDifficulty: common.Big0, @@ -86,6 +87,7 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { out.GrayGlacierBlock = big.NewInt(4061224) out.MergeNetsplitBlock = big.NewInt(4061224) out.BedrockBlock = big.NewInt(4061224) + out.RegolithTime = &OptimismGoerliRegolithTime out.Optimism.EIP1559Elasticity = 10 case OPMainnetChainID: out.BerlinBlock = big.NewInt(3950000) @@ -95,16 +97,20 @@ func LoadOPStackChainConfig(chainID uint64) (*ChainConfig, error) { out.MergeNetsplitBlock = big.NewInt(105235063) out.BedrockBlock = big.NewInt(105235063) case BaseGoerliChainID: + out.RegolithTime = &BaseGoerliRegolithTime out.Optimism.EIP1559Elasticity = 10 case baseSepoliaChainID: out.Optimism.EIP1559Elasticity = 10 case baseGoerliDevnetChainID: + out.RegolithTime = &baseGoerliDevnetRegolithTime case pgnSepoliaChainID: out.Optimism.EIP1559Elasticity = 2 out.Optimism.EIP1559Denominator = 8 case devnetChainID: + out.RegolithTime = &devnetRegolithTime out.Optimism.EIP1559Elasticity = 10 case chaosnetChainID: + out.RegolithTime = &chaosnetRegolithTime out.Optimism.EIP1559Elasticity = 10 } From 7bcce13686783090b72fe629d7870cf0519d13c5 Mon Sep 17 00:00:00 2001 From: geoknee Date: Tue, 27 Feb 2024 11:17:09 +0000 Subject: [PATCH 211/223] go mod tidy --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index f167ec7c86..f6f5a3fa00 100644 --- a/go.sum +++ b/go.sum @@ -359,8 +359,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc h1:ELuRENfnx0JN/BeHVdXEOTzLQ/DLt5RP9oa245kAEyY= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240223113841-1203fe72c5dc/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b h1:flvnJbgZHugwTlC8HsPvPwOZc7zGWjFlWZw3JOJ7wcI= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= From 21adbac9011e2d3207ed9b2ff075a2c019bcd76f Mon Sep 17 00:00:00 2001 From: geoknee Date: Thu, 29 Feb 2024 11:35:05 +0000 Subject: [PATCH 212/223] go get github.com/ethereum-optimism/superchain-registry/superchain@c2e25cc && go mod tidy --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f8304da55d..2380cac4bd 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240229113143-c2e25ccf4d85 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.15.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index f6f5a3fa00..ffb819e4cd 100644 --- a/go.sum +++ b/go.sum @@ -359,8 +359,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b h1:flvnJbgZHugwTlC8HsPvPwOZc7zGWjFlWZw3JOJ7wcI= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240227110823-11c73f54ad9b/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240229113143-c2e25ccf4d85 h1:LcLSF5IipKmjmxNmv/GdjprxCMC0P5JmiRvGOZ/rC7o= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240229113143-c2e25ccf4d85/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= From 22544d42ed0db5a9c0f71ceea6f5151a55925307 Mon Sep 17 00:00:00 2001 From: geoknee Date: Tue, 5 Mar 2024 12:43:36 +0000 Subject: [PATCH 213/223] go get github.com/ethereum-optimism/superchain-registry/superchain@691e409 && go mod tidy --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2380cac4bd..ad2cdb1d02 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240229113143-c2e25ccf4d85 + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240305124033-691e40929be7 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.15.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index ffb819e4cd..4144ba6aca 100644 --- a/go.sum +++ b/go.sum @@ -359,8 +359,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240229113143-c2e25ccf4d85 h1:LcLSF5IipKmjmxNmv/GdjprxCMC0P5JmiRvGOZ/rC7o= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240229113143-c2e25ccf4d85/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240305124033-691e40929be7 h1:KFZwsGgz56u/uHrU2cEhv5PyZqU1orNnurvGV16NwVk= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240305124033-691e40929be7/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= From 5ef5278a1b0109dbc7e20ef3cbc3eef71fc697f4 Mon Sep 17 00:00:00 2001 From: geoknee Date: Wed, 6 Mar 2024 09:36:28 +0000 Subject: [PATCH 214/223] go get github.com/ethereum-optimism/superchain-registry/superchain@c557df8 && go mod tidy --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ad2cdb1d02..fc3ab982d9 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/deckarep/golang-set/v2 v2.1.0 github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240305124033-691e40929be7 + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240306093353-c557df8e6f41 github.com/ethereum/c-kzg-4844 v0.4.0 github.com/fatih/color v1.15.0 github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e diff --git a/go.sum b/go.sum index 4144ba6aca..79c49ed7d4 100644 --- a/go.sum +++ b/go.sum @@ -359,8 +359,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240305124033-691e40929be7 h1:KFZwsGgz56u/uHrU2cEhv5PyZqU1orNnurvGV16NwVk= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240305124033-691e40929be7/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240306093353-c557df8e6f41 h1:WKJvsRyW/YNgyT0P2x5U530ITOY8Dv9TrZnbliqSXd8= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240306093353-c557df8e6f41/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= From b5a0d4a229712c698f6a3f4aed18d7cdbecf484c Mon Sep 17 00:00:00 2001 From: welkin22 Date: Thu, 25 Apr 2024 16:08:39 +0800 Subject: [PATCH 215/223] remove light dir which should not exist --- light/trie.go | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 light/trie.go diff --git a/light/trie.go b/light/trie.go deleted file mode 100644 index e69de29bb2..0000000000 From 6cc5d7f5b6b1f460838e13f84caddbf85a9e3c73 Mon Sep 17 00:00:00 2001 From: redhdx <136775144+redhdx@users.noreply.github.com> Date: Sun, 28 Apr 2024 15:14:06 +0800 Subject: [PATCH 216/223] feature(op-geth): update opBNB qanet config (#99) --- core/assets/qanet/genesis.json | 27 ++++++++++++++------------- params/config.go | 8 ++++---- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/core/assets/qanet/genesis.json b/core/assets/qanet/genesis.json index 8ef672c205..3148b03d45 100644 --- a/core/assets/qanet/genesis.json +++ b/core/assets/qanet/genesis.json @@ -1,6 +1,6 @@ { "config": { - "chainId": 1322, + "chainId": 1484, "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, @@ -17,6 +17,7 @@ "mergeNetsplitBlock": 0, "bedrockBlock": 0, "regolithTime": 0, + "fermat": 0, "terminalTotalDifficulty": 0, "terminalTotalDifficultyPassed": true, "optimism": { @@ -25,7 +26,7 @@ } }, "nonce": "0x0", - "timestamp": "0x659e0a56", + "timestamp": "0x662db38d", "extraData": "0x424544524f434b", "gasLimit": "0x5f5e100", "difficulty": "0x0", @@ -964,11 +965,11 @@ "4200000000000000000000000000000000000015": { "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000659e0a5600000000000b5296", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000662db38d00000000000597db", "0x0000000000000000000000000000000000000000000000000000000000000001": "0x00000000000000000000000000000000000000000000000000000000b2d05e00", - "0x0000000000000000000000000000000000000000000000000000000000000002": "0x3db93722c9951fe1da25dd652c6e2367674a97161df2acea322e915cab0d58ba", + "0x0000000000000000000000000000000000000000000000000000000000000002": "0xed201904d66dcf479bd75821e9e3e76d52818be4290e54cd723497dd404ff82e", "0x0000000000000000000000000000000000000000000000000000000000000003": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000004": "0x000000000000000000000000e309831c77d5fb5f189dd97c598e26e5c014f2d6", + "0x0000000000000000000000000000000000000000000000000000000000000004": "0x0000000000000000000000000f92e2e0cf3d30d0cd1862c9ed4b6008bc4fcdee", "0x0000000000000000000000000000000000000000000000000000000000000005": "0x0000000000000000000000000000000000000000000000000000000000000834", "0x0000000000000000000000000000000000000000000000000000000000000006": "0x00000000000000000000000000000000000000000000000000000000000f4240", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30015", @@ -996,7 +997,7 @@ "4200000000000000000000000000000000000018": { "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f100", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30018", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000004200000000000000000000000000000000000018" }, @@ -1296,7 +1297,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000003": "0x4f50424e4200000000000000000000000000000000000000000000000000000a", "0x0000000000000000000000000000000000000000000000000000000000000004": "0x4f50424e4200000000000000000000000000000000000000000000000000000a", - "0x000000000000000000000000000000000000000000000000000000000000000a": "0x000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f100" + "0x000000000000000000000000000000000000000000000000000000000000000a": "0x0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476" }, "balance": "0x0" }, @@ -15183,7 +15184,7 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30007": { - "code": "0x6080604052600436106101445760003560e01c80638129fc1c116100c0578063a711986911610074578063b28ade2511610059578063b28ade251461036e578063d764ad0b1461038e578063ecc70428146103a157600080fd5b8063a71198691461030b578063b1b1b2091461033e57600080fd5b80638cbeeef2116100a55780638cbeeef2146101e35780639fce812c14610297578063a4e7f8bd146102cb57600080fd5b80638129fc1c1461026b57806383a740741461028057600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d50146101f95780635644cfdf1461021b5780636e296e451461023157600080fd5b80633f827a5a146101bb5780634c1d6a69146101e357600080fd5b8063028f85f7146101495780630c5684981461017c5780632828d7e8146101915780633dbb202b146101a6575b600080fd5b34801561015557600080fd5b5061015e601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561018857600080fd5b5061015e603f81565b34801561019d57600080fd5b5061015e604081565b6101b96101b4366004611886565b610406565b005b3480156101c757600080fd5b506101d0600181565b60405161ffff9091168152602001610173565b3480156101ef57600080fd5b5061015e619c4081565b34801561020557600080fd5b5061020e61066a565b6040516101739190611965565b34801561022757600080fd5b5061015e61138881565b34801561023d57600080fd5b5061024661070d565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b34801561027757600080fd5b506101b96107f9565b34801561028c57600080fd5b5061015e62030d4081565b3480156102a357600080fd5b506102467f00000000000000000000000047c267d71e643db1e177371821e30fed4c0ba16a81565b3480156102d757600080fd5b506102fb6102e636600461197f565b60ce6020526000908152604090205460ff1681565b6040519015158152602001610173565b34801561031757600080fd5b507f00000000000000000000000047c267d71e643db1e177371821e30fed4c0ba16a610246565b34801561034a57600080fd5b506102fb61035936600461197f565b60cb6020526000908152604090205460ff1681565b34801561037a57600080fd5b5061015e610389366004611998565b6109f6565b6101b961039c3660046119ec565b610a64565b3480156103ad57600080fd5b506103f860cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b604051908152602001610173565b61053f7f00000000000000000000000047c267d71e643db1e177371821e30fed4c0ba16a6104358585856109f6565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104a160cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c6040516024016104bd9796959493929190611ab7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261135d565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a3385856105c460cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b866040516105d6959493929190611b16565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60606106957f00000000000000000000000000000000000000000000000000000000000000016113eb565b6106be7f00000000000000000000000000000000000000000000000000000000000000046113eb565b6106e77f00000000000000000000000000000000000000000000000000000000000000006113eb565b6040516020016106f993929190611b64565b604051602081830303815290604052905090565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000547501000000000000000000000000000000000000000000900460ff1615808015610844575060005460017401000000000000000000000000000000000000000090910460ff16105b806108765750303b158015610876575060005474010000000000000000000000000000000000000000900460ff166001145b610902576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561098857600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b610990611520565b80156109f357600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f610a12604063ffffffff8816611c09565b610a1c9190611c68565b610a27601088611c09565b610a349062030d40611c8f565b610a3e9190611c8f565b610a489190611c8f565b610a529190611c8f565b610a5c9190611c8f565b949350505050565b60f087901c60028110610b1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a4016107d3565b8061ffff16600003610c14576000610b70878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506115f9915050565b600081815260cb602052604090205490915060ff1615610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c6179656400000000000000000060648201526084016107d3565b505b6000610c5a898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061161892505050565b905073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef330181167f00000000000000000000000047c267d71e643db1e177371821e30fed4c0ba16a90911603610cf257853414610cce57610cce611cbb565b600081815260ce602052604090205460ff1615610ced57610ced611cbb565b610e44565b3415610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016107d3565b600081815260ce602052604090205460ff16610e44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016107d3565b610e4d8761163b565b15610f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b600081815260cb602052604090205460ff1615610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016107d3565b610fc085610fb1611388619c40611c8f565b67ffffffffffffffff16611690565b1580610fe6575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b156110ff57600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050611338565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061119088619c405a6111539190611cea565b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116ae92505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790559050801561122757600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2611334565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fc2b3e5ac0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000169063c2b3e5ac9084906113b390889088908790600401611d01565b6000604051808303818588803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050505050505050565b60608160000361142e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611458578061144281611d49565b91506114519050600a83611d81565b9150611432565b60008167ffffffffffffffff81111561147357611473611d95565b6040519080825280601f01601f19166020018201604052801561149d576020820181803683370190505b5090505b8415610a5c576114b2600183611cea565b91506114bf600a86611dc4565b6114ca906030611dd8565b60f81b8183815181106114df576114df611df0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611519600a86611d81565b94506114a1565b6000547501000000000000000000000000000000000000000000900460ff166115cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b6000611607858585856116c8565b805190602001209050949350505050565b6000611628878787878787611761565b8051906020012090509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff821630148061168a575073ffffffffffffffffffffffffffffffffffffffff8216734200000000000000000000000000000000000016145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016116e19493929190611e1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161177e96959493929190611e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461182457600080fd5b919050565b60008083601f84011261183b57600080fd5b50813567ffffffffffffffff81111561185357600080fd5b60208301915083602082850101111561186b57600080fd5b9250929050565b803563ffffffff8116811461182457600080fd5b6000806000806060858703121561189c57600080fd5b6118a585611800565b9350602085013567ffffffffffffffff8111156118c157600080fd5b6118cd87828801611829565b90945092506118e0905060408601611872565b905092959194509250565b60005b838110156119065781810151838201526020016118ee565b83811115611915576000848401525b50505050565b600081518084526119338160208601602086016118eb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611978602083018461191b565b9392505050565b60006020828403121561199157600080fd5b5035919050565b6000806000604084860312156119ad57600080fd5b833567ffffffffffffffff8111156119c457600080fd5b6119d086828701611829565b90945092506119e3905060208501611872565b90509250925092565b600080600080600080600060c0888a031215611a0757600080fd5b87359650611a1760208901611800565b9550611a2560408901611800565b9450606088013593506080880135925060a088013567ffffffffffffffff811115611a4f57600080fd5b611a5b8a828b01611829565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611b0960c083018486611a6e565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611b46608083018688611a6e565b905083604083015263ffffffff831660608301529695505050505050565b60008451611b768184602089016118eb565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611bb2816001850160208a016118eb565b60019201918201528351611bcd8160028401602088016118eb565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611c3057611c30611bda565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611c8357611c83611c39565b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611cb257611cb2611bda565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611cfc57611cfc611bda565b500390565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000611d40606083018461191b565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d7a57611d7a611bda565b5060010190565b600082611d9057611d90611c39565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082611dd357611dd3611c39565b500690565b60008219821115611deb57611deb611bda565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611e58608083018561191b565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611eb460c083018461191b565b9897505050505050505056fea164736f6c634300080f000a", + "code": "0x6080604052600436106101445760003560e01c80638129fc1c116100c0578063a711986911610074578063b28ade2511610059578063b28ade251461036e578063d764ad0b1461038e578063ecc70428146103a157600080fd5b8063a71198691461030b578063b1b1b2091461033e57600080fd5b80638cbeeef2116100a55780638cbeeef2146101e35780639fce812c14610297578063a4e7f8bd146102cb57600080fd5b80638129fc1c1461026b57806383a740741461028057600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d50146101f95780635644cfdf1461021b5780636e296e451461023157600080fd5b80633f827a5a146101bb5780634c1d6a69146101e357600080fd5b8063028f85f7146101495780630c5684981461017c5780632828d7e8146101915780633dbb202b146101a6575b600080fd5b34801561015557600080fd5b5061015e601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561018857600080fd5b5061015e603f81565b34801561019d57600080fd5b5061015e604081565b6101b96101b4366004611886565b610406565b005b3480156101c757600080fd5b506101d0600181565b60405161ffff9091168152602001610173565b3480156101ef57600080fd5b5061015e619c4081565b34801561020557600080fd5b5061020e61066a565b6040516101739190611965565b34801561022757600080fd5b5061015e61138881565b34801561023d57600080fd5b5061024661070d565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b34801561027757600080fd5b506101b96107f9565b34801561028c57600080fd5b5061015e62030d4081565b3480156102a357600080fd5b506102467f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d81565b3480156102d757600080fd5b506102fb6102e636600461197f565b60ce6020526000908152604090205460ff1681565b6040519015158152602001610173565b34801561031757600080fd5b507f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d610246565b34801561034a57600080fd5b506102fb61035936600461197f565b60cb6020526000908152604090205460ff1681565b34801561037a57600080fd5b5061015e610389366004611998565b6109f6565b6101b961039c3660046119ec565b610a64565b3480156103ad57600080fd5b506103f860cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b604051908152602001610173565b61053f7f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d6104358585856109f6565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104a160cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c6040516024016104bd9796959493929190611ab7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261135d565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a3385856105c460cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b866040516105d6959493929190611b16565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60606106957f00000000000000000000000000000000000000000000000000000000000000016113eb565b6106be7f00000000000000000000000000000000000000000000000000000000000000046113eb565b6106e77f00000000000000000000000000000000000000000000000000000000000000006113eb565b6040516020016106f993929190611b64565b604051602081830303815290604052905090565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000547501000000000000000000000000000000000000000000900460ff1615808015610844575060005460017401000000000000000000000000000000000000000090910460ff16105b806108765750303b158015610876575060005474010000000000000000000000000000000000000000900460ff166001145b610902576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561098857600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b610990611520565b80156109f357600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f610a12604063ffffffff8816611c09565b610a1c9190611c68565b610a27601088611c09565b610a349062030d40611c8f565b610a3e9190611c8f565b610a489190611c8f565b610a529190611c8f565b610a5c9190611c8f565b949350505050565b60f087901c60028110610b1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a4016107d3565b8061ffff16600003610c14576000610b70878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506115f9915050565b600081815260cb602052604090205490915060ff1615610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c6179656400000000000000000060648201526084016107d3565b505b6000610c5a898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061161892505050565b905073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef330181167f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d90911603610cf257853414610cce57610cce611cbb565b600081815260ce602052604090205460ff1615610ced57610ced611cbb565b610e44565b3415610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016107d3565b600081815260ce602052604090205460ff16610e44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016107d3565b610e4d8761163b565b15610f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b600081815260cb602052604090205460ff1615610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016107d3565b610fc085610fb1611388619c40611c8f565b67ffffffffffffffff16611690565b1580610fe6575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b156110ff57600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050611338565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061119088619c405a6111539190611cea565b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116ae92505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790559050801561122757600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2611334565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fc2b3e5ac0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000169063c2b3e5ac9084906113b390889088908790600401611d01565b6000604051808303818588803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050505050505050565b60608160000361142e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611458578061144281611d49565b91506114519050600a83611d81565b9150611432565b60008167ffffffffffffffff81111561147357611473611d95565b6040519080825280601f01601f19166020018201604052801561149d576020820181803683370190505b5090505b8415610a5c576114b2600183611cea565b91506114bf600a86611dc4565b6114ca906030611dd8565b60f81b8183815181106114df576114df611df0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611519600a86611d81565b94506114a1565b6000547501000000000000000000000000000000000000000000900460ff166115cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b6000611607858585856116c8565b805190602001209050949350505050565b6000611628878787878787611761565b8051906020012090509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff821630148061168a575073ffffffffffffffffffffffffffffffffffffffff8216734200000000000000000000000000000000000016145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016116e19493929190611e1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161177e96959493929190611e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461182457600080fd5b919050565b60008083601f84011261183b57600080fd5b50813567ffffffffffffffff81111561185357600080fd5b60208301915083602082850101111561186b57600080fd5b9250929050565b803563ffffffff8116811461182457600080fd5b6000806000806060858703121561189c57600080fd5b6118a585611800565b9350602085013567ffffffffffffffff8111156118c157600080fd5b6118cd87828801611829565b90945092506118e0905060408601611872565b905092959194509250565b60005b838110156119065781810151838201526020016118ee565b83811115611915576000848401525b50505050565b600081518084526119338160208601602086016118eb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611978602083018461191b565b9392505050565b60006020828403121561199157600080fd5b5035919050565b6000806000604084860312156119ad57600080fd5b833567ffffffffffffffff8111156119c457600080fd5b6119d086828701611829565b90945092506119e3905060208501611872565b90509250925092565b600080600080600080600060c0888a031215611a0757600080fd5b87359650611a1760208901611800565b9550611a2560408901611800565b9450606088013593506080880135925060a088013567ffffffffffffffff811115611a4f57600080fd5b611a5b8a828b01611829565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611b0960c083018486611a6e565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611b46608083018688611a6e565b905083604083015263ffffffff831660608301529695505050505050565b60008451611b768184602089016118eb565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611bb2816001850160208a016118eb565b60019201918201528351611bcd8160028401602088016118eb565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611c3057611c30611bda565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611c8357611c83611c39565b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611cb257611cb2611bda565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611cfc57611cfc611bda565b500390565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000611d40606083018461191b565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d7a57611d7a611bda565b5060010190565b600082611d9057611d90611c39565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082611dd357611dd3611c39565b500690565b60008219821115611deb57611deb611bda565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611e58608083018561191b565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611eb460c083018461191b565b9897505050505050505056fea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3000f": { @@ -15191,11 +15192,11 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30010": { - "code": "0x6080604052600436106100ec5760003560e01c806354fd4d501161008a5780638f601f66116100595780638f601f661461034e578063927ede2d14610394578063a3a79548146103c8578063e11013dd146103db57600080fd5b806354fd4d50146102c5578063662a633a146102e75780637f46ddb2146102fa578063870876231461032e57600080fd5b806332b7006d116100c657806332b7006d1461020657806336c717c1146102195780633cb747bf14610272578063540abf73146102a557600080fd5b80630166a07a146101c057806309fc8843146101e05780631635f5fd146101f357600080fd5b366101bb57333b15610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101b973deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d40604051806020016040528060008152506103ee565b005b600080fd5b3480156101cc57600080fd5b506101b96101db366004612372565b6104c9565b6101b96101ee366004612423565b6108b6565b6101b9610201366004612476565b61098d565b6101b96102143660046124e9565b610e5a565b34801561022557600080fd5b507f000000000000000000000000708538e43e86bfb9bec801c07d9df8fdc689f9785b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561027e57600080fd5b507f0000000000000000000000004200000000000000000000000000000000000007610248565b3480156102b157600080fd5b506101b96102c036600461253d565b610f34565b3480156102d157600080fd5b506102da610f79565b604051610269919061262a565b6101b96102f5366004612372565b61101c565b34801561030657600080fd5b506102487f000000000000000000000000708538e43e86bfb9bec801c07d9df8fdc689f97881565b34801561033a57600080fd5b506101b961034936600461263d565b61108f565b34801561035a57600080fd5b506103866103693660046126c0565b600260209081526000928352604080842090915290825290205481565b604051908152602001610269565b3480156103a057600080fd5b506102487f000000000000000000000000420000000000000000000000000000000000000781565b6101b96103d636600461263d565b611163565b6101b96103e93660046126f9565b6111a7565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff87160161043d5761043885858585856111f0565b6104c1565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae919061275c565b90506104bf878288888888886113d4565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004200000000000000000000000000000000000007161480156105e757507f000000000000000000000000708538e43e86bfb9bec801c07d9df8fdc689f97873ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b6106a28761171b565b156107f0576106b1878761177d565b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b50505050610872565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461082e9084906127a8565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c168352939052919091209190915561087290858561189d565b6104bf878787878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197192505050565b333b15610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6109883333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000420000000000000000000000000000000000000716148015610aab57507f000000000000000000000000708538e43e86bfb9bec801c07d9df8fdc689f97873ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b823414610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161017c565b3073ffffffffffffffffffffffffffffffffffffffff851603610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161017c565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161017c565b610dae85858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119ff92505050565b6000610dcb855a8660405180602001604052806000815250611aa0565b9050806104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161017c565b333b15610ee9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b610f2d853333878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b5050505050565b6104bf87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6060610fa47f0000000000000000000000000000000000000000000000000000000000000001611aba565b610fcd7f0000000000000000000000000000000000000000000000000000000000000001611aba565b610ff67f0000000000000000000000000000000000000000000000000000000000000000611aba565b604051602001611008939291906127bf565b604051602081830303815290604052905090565b73ffffffffffffffffffffffffffffffffffffffff8716158015611069575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b156110805761107b858585858561098d565b6104bf565b6104bf868887878787876104c9565b333b1561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6104c186863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6104c1863387878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b6111ea3385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b50505050565b82341461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161017c565b61128b85858584611bf7565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b847f000000000000000000000000708538e43e86bfb9bec801c07d9df8fdc689f978631635f5fd60e01b898989886040516024016113089493929190612835565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261139b9291889060040161287e565b6000604051808303818588803b1580156113b457600080fd5b505af11580156113c8573d6000803e3d6000fd5b50505050505050505050565b6113dd8761171b565b1561152b576113ec878761177d565b61149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506115bf565b61154d73ffffffffffffffffffffffffffffffffffffffff8816863086611c98565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461158b9084906128c3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6115cd878787878786611cf6565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b7f000000000000000000000000708538e43e86bfb9bec801c07d9df8fdc689f978630166a07a60e01b898b8a8a8a8960405160240161164d969594939291906128db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526116e09291879060040161287e565b600060405180830381600087803b1580156116fa57600080fd5b505af115801561170e573d6000803e3d6000fd5b5050505050505050505050565b6000611747827f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b806117775750611777827fec4fc8e300000000000000000000000000000000000000000000000000000000611d84565b92915050565b60006117a9837f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b15611852578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d919061275c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611777565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109889084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611da7565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd898686866040516119e993929190612936565b60405180910390a46104c1868686868686611eb3565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611a8c93929190612936565b60405180910390a46111ea84848484611f3b565b600080600080845160208601878a8af19695505050505050565b606081600003611afd57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b275780611b1181612974565b9150611b209050600a836129db565b9150611b01565b60008167ffffffffffffffff811115611b4257611b426129ef565b6040519080825280601f01601f191660200182016040528015611b6c576020820181803683370190505b5090505b8415611bef57611b816001836127a8565b9150611b8e600a86612a1e565b611b999060306128c3565b60f81b818381518110611bae57611bae612a32565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611be8600a866129db565b9450611b70565b949350505050565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611c8493929190612936565b60405180910390a46111ea84848484611fa8565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526111ea9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118ef565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611d6e93929190612936565b60405180910390a46104c1868686868686612007565b6000611d8f8361207f565b8015611da05750611da083836120e3565b9392505050565b6000611e09826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121b29092919063ffffffff16565b8051909150156109885780806020019051810190611e279190612a61565b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161017c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f2b93929190612936565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051611f9a929190612a83565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051611f9a929190612a83565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f2b93929190612936565b60006120ab827f01ffc9a7000000000000000000000000000000000000000000000000000000006120e3565b801561177757506120dc827fffffffff000000000000000000000000000000000000000000000000000000006120e3565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561219b575060208210155b80156121a75750600081115b979650505050505050565b6060611bef84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161017c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122649190612a9c565b60006040518083038185875af1925050503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506121a7828286606083156122c0575081611da0565b8251156122d05782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017c919061262a565b73ffffffffffffffffffffffffffffffffffffffff8116811461232657600080fd5b50565b60008083601f84011261233b57600080fd5b50813567ffffffffffffffff81111561235357600080fd5b60208301915083602082850101111561236b57600080fd5b9250929050565b600080600080600080600060c0888a03121561238d57600080fd5b873561239881612304565b965060208801356123a881612304565b955060408801356123b881612304565b945060608801356123c881612304565b93506080880135925060a088013567ffffffffffffffff8111156123eb57600080fd5b6123f78a828b01612329565b989b979a50959850939692959293505050565b803563ffffffff8116811461241e57600080fd5b919050565b60008060006040848603121561243857600080fd5b6124418461240a565b9250602084013567ffffffffffffffff81111561245d57600080fd5b61246986828701612329565b9497909650939450505050565b60008060008060006080868803121561248e57600080fd5b853561249981612304565b945060208601356124a981612304565b935060408601359250606086013567ffffffffffffffff8111156124cc57600080fd5b6124d888828901612329565b969995985093965092949392505050565b60008060008060006080868803121561250157600080fd5b853561250c81612304565b9450602086013593506125216040870161240a565b9250606086013567ffffffffffffffff8111156124cc57600080fd5b600080600080600080600060c0888a03121561255857600080fd5b873561256381612304565b9650602088013561257381612304565b9550604088013561258381612304565b9450606088013593506125986080890161240a565b925060a088013567ffffffffffffffff8111156123eb57600080fd5b60005b838110156125cf5781810151838201526020016125b7565b838111156111ea5750506000910152565b600081518084526125f88160208601602086016125b4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611da060208301846125e0565b60008060008060008060a0878903121561265657600080fd5b863561266181612304565b9550602087013561267181612304565b9450604087013593506126866060880161240a565b9250608087013567ffffffffffffffff8111156126a257600080fd5b6126ae89828a01612329565b979a9699509497509295939492505050565b600080604083850312156126d357600080fd5b82356126de81612304565b915060208301356126ee81612304565b809150509250929050565b6000806000806060858703121561270f57600080fd5b843561271a81612304565b93506127286020860161240a565b9250604085013567ffffffffffffffff81111561274457600080fd5b61275087828801612329565b95989497509550505050565b60006020828403121561276e57600080fd5b8151611da081612304565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156127ba576127ba612779565b500390565b600084516127d18184602089016125b4565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161280d816001850160208a016125b4565b600192019182015283516128288160028401602088016125b4565b0160020195945050505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261287460808301846125e0565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006128ad60608301856125e0565b905063ffffffff83166040830152949350505050565b600082198211156128d6576128d6612779565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261292a60c08301846125e0565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061296b60608301846125e0565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a5576129a5612779565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129ea576129ea6129ac565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082612a2d57612a2d6129ac565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612a7357600080fd5b81518015158114611da057600080fd5b828152604060208201526000611bef60408301846125e0565b60008251612aae8184602087016125b4565b919091019291505056fea164736f6c634300080f000a", + "code": "0x6080604052600436106100ec5760003560e01c806354fd4d501161008a5780638f601f66116100595780638f601f661461034e578063927ede2d14610394578063a3a79548146103c8578063e11013dd146103db57600080fd5b806354fd4d50146102c5578063662a633a146102e75780637f46ddb2146102fa578063870876231461032e57600080fd5b806332b7006d116100c657806332b7006d1461020657806336c717c1146102195780633cb747bf14610272578063540abf73146102a557600080fd5b80630166a07a146101c057806309fc8843146101e05780631635f5fd146101f357600080fd5b366101bb57333b15610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101b973deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d40604051806020016040528060008152506103ee565b005b600080fd5b3480156101cc57600080fd5b506101b96101db366004612372565b6104c9565b6101b96101ee366004612423565b6108b6565b6101b9610201366004612476565b61098d565b6101b96102143660046124e9565b610e5a565b34801561022557600080fd5b507f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d4785b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561027e57600080fd5b507f0000000000000000000000004200000000000000000000000000000000000007610248565b3480156102b157600080fd5b506101b96102c036600461253d565b610f34565b3480156102d157600080fd5b506102da610f79565b604051610269919061262a565b6101b96102f5366004612372565b61101c565b34801561030657600080fd5b506102487f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d47881565b34801561033a57600080fd5b506101b961034936600461263d565b61108f565b34801561035a57600080fd5b506103866103693660046126c0565b600260209081526000928352604080842090915290825290205481565b604051908152602001610269565b3480156103a057600080fd5b506102487f000000000000000000000000420000000000000000000000000000000000000781565b6101b96103d636600461263d565b611163565b6101b96103e93660046126f9565b6111a7565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff87160161043d5761043885858585856111f0565b6104c1565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae919061275c565b90506104bf878288888888886113d4565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004200000000000000000000000000000000000007161480156105e757507f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d47873ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b6106a28761171b565b156107f0576106b1878761177d565b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b50505050610872565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461082e9084906127a8565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c168352939052919091209190915561087290858561189d565b6104bf878787878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197192505050565b333b15610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6109883333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000420000000000000000000000000000000000000716148015610aab57507f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d47873ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b823414610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161017c565b3073ffffffffffffffffffffffffffffffffffffffff851603610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161017c565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161017c565b610dae85858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119ff92505050565b6000610dcb855a8660405180602001604052806000815250611aa0565b9050806104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161017c565b333b15610ee9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b610f2d853333878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b5050505050565b6104bf87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6060610fa47f0000000000000000000000000000000000000000000000000000000000000001611aba565b610fcd7f0000000000000000000000000000000000000000000000000000000000000001611aba565b610ff67f0000000000000000000000000000000000000000000000000000000000000000611aba565b604051602001611008939291906127bf565b604051602081830303815290604052905090565b73ffffffffffffffffffffffffffffffffffffffff8716158015611069575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b156110805761107b858585858561098d565b6104bf565b6104bf868887878787876104c9565b333b1561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6104c186863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6104c1863387878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b6111ea3385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b50505050565b82341461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161017c565b61128b85858584611bf7565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b847f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d478631635f5fd60e01b898989886040516024016113089493929190612835565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261139b9291889060040161287e565b6000604051808303818588803b1580156113b457600080fd5b505af11580156113c8573d6000803e3d6000fd5b50505050505050505050565b6113dd8761171b565b1561152b576113ec878761177d565b61149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506115bf565b61154d73ffffffffffffffffffffffffffffffffffffffff8816863086611c98565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461158b9084906128c3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6115cd878787878786611cf6565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b7f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d478630166a07a60e01b898b8a8a8a8960405160240161164d969594939291906128db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526116e09291879060040161287e565b600060405180830381600087803b1580156116fa57600080fd5b505af115801561170e573d6000803e3d6000fd5b5050505050505050505050565b6000611747827f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b806117775750611777827fec4fc8e300000000000000000000000000000000000000000000000000000000611d84565b92915050565b60006117a9837f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b15611852578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d919061275c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611777565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109889084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611da7565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd898686866040516119e993929190612936565b60405180910390a46104c1868686868686611eb3565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611a8c93929190612936565b60405180910390a46111ea84848484611f3b565b600080600080845160208601878a8af19695505050505050565b606081600003611afd57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b275780611b1181612974565b9150611b209050600a836129db565b9150611b01565b60008167ffffffffffffffff811115611b4257611b426129ef565b6040519080825280601f01601f191660200182016040528015611b6c576020820181803683370190505b5090505b8415611bef57611b816001836127a8565b9150611b8e600a86612a1e565b611b999060306128c3565b60f81b818381518110611bae57611bae612a32565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611be8600a866129db565b9450611b70565b949350505050565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611c8493929190612936565b60405180910390a46111ea84848484611fa8565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526111ea9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118ef565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611d6e93929190612936565b60405180910390a46104c1868686868686612007565b6000611d8f8361207f565b8015611da05750611da083836120e3565b9392505050565b6000611e09826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121b29092919063ffffffff16565b8051909150156109885780806020019051810190611e279190612a61565b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161017c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f2b93929190612936565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051611f9a929190612a83565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051611f9a929190612a83565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f2b93929190612936565b60006120ab827f01ffc9a7000000000000000000000000000000000000000000000000000000006120e3565b801561177757506120dc827fffffffff000000000000000000000000000000000000000000000000000000006120e3565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561219b575060208210155b80156121a75750600081115b979650505050505050565b6060611bef84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161017c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122649190612a9c565b60006040518083038185875af1925050503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506121a7828286606083156122c0575081611da0565b8251156122d05782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017c919061262a565b73ffffffffffffffffffffffffffffffffffffffff8116811461232657600080fd5b50565b60008083601f84011261233b57600080fd5b50813567ffffffffffffffff81111561235357600080fd5b60208301915083602082850101111561236b57600080fd5b9250929050565b600080600080600080600060c0888a03121561238d57600080fd5b873561239881612304565b965060208801356123a881612304565b955060408801356123b881612304565b945060608801356123c881612304565b93506080880135925060a088013567ffffffffffffffff8111156123eb57600080fd5b6123f78a828b01612329565b989b979a50959850939692959293505050565b803563ffffffff8116811461241e57600080fd5b919050565b60008060006040848603121561243857600080fd5b6124418461240a565b9250602084013567ffffffffffffffff81111561245d57600080fd5b61246986828701612329565b9497909650939450505050565b60008060008060006080868803121561248e57600080fd5b853561249981612304565b945060208601356124a981612304565b935060408601359250606086013567ffffffffffffffff8111156124cc57600080fd5b6124d888828901612329565b969995985093965092949392505050565b60008060008060006080868803121561250157600080fd5b853561250c81612304565b9450602086013593506125216040870161240a565b9250606086013567ffffffffffffffff8111156124cc57600080fd5b600080600080600080600060c0888a03121561255857600080fd5b873561256381612304565b9650602088013561257381612304565b9550604088013561258381612304565b9450606088013593506125986080890161240a565b925060a088013567ffffffffffffffff8111156123eb57600080fd5b60005b838110156125cf5781810151838201526020016125b7565b838111156111ea5750506000910152565b600081518084526125f88160208601602086016125b4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611da060208301846125e0565b60008060008060008060a0878903121561265657600080fd5b863561266181612304565b9550602087013561267181612304565b9450604087013593506126866060880161240a565b9250608087013567ffffffffffffffff8111156126a257600080fd5b6126ae89828a01612329565b979a9699509497509295939492505050565b600080604083850312156126d357600080fd5b82356126de81612304565b915060208301356126ee81612304565b809150509250929050565b6000806000806060858703121561270f57600080fd5b843561271a81612304565b93506127286020860161240a565b9250604085013567ffffffffffffffff81111561274457600080fd5b61275087828801612329565b95989497509550505050565b60006020828403121561276e57600080fd5b8151611da081612304565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156127ba576127ba612779565b500390565b600084516127d18184602089016125b4565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161280d816001850160208a016125b4565b600192019182015283516128288160028401602088016125b4565b0160020195945050505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261287460808301846125e0565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006128ad60608301856125e0565b905063ffffffff83166040830152949350505050565b600082198211156128d6576128d6612779565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261292a60c08301846125e0565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061296b60608301846125e0565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a5576129a5612779565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129ea576129ea6129ac565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082612a2d57612a2d6129ac565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612a7357600080fd5b81518015158114611da057600080fd5b828152604060208201526000611bef60408301846125e0565b60008251612aae8184602087016125b4565b919091019291505056fea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30011": { - "code": "0x6080604052600436106100695760003560e01c806384411d651161004357806384411d651461010c578063d3e5792b14610130578063d4ff92181461016457600080fd5b80630d9019e1146100755780633ccfd60b146100d357806354fd4d50146100ea57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100a97f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f10081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100df57600080fd5b506100e8610197565b005b3480156100f657600080fd5b506100ff6103b8565b6040516100ca9190610612565b34801561011857600080fd5b5061012260005481565b6040519081526020016100ca565b34801561013c57600080fd5b506101227f0000000000000000000000000000000000000000000000008ac7230489e8000081565b34801561017057600080fd5b507f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f1006100a9565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610287919061065b565b9091555050604080518281527f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f10073ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610383917f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f100916188b891600401610673565b6000604051808303818588803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b505050505050565b60606103e37f000000000000000000000000000000000000000000000000000000000000000161045b565b61040c7f000000000000000000000000000000000000000000000000000000000000000161045b565b6104357f000000000000000000000000000000000000000000000000000000000000000061045b565b604051602001610447939291906106b7565b604051602081830303815290604052905090565b60608160000361049e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156104c857806104b28161072d565b91506104c19050600a83610794565b91506104a2565b60008167ffffffffffffffff8111156104e3576104e36107a8565b6040519080825280601f01601f19166020018201604052801561050d576020820181803683370190505b5090505b8415610590576105226001836107d7565b915061052f600a866107ee565b61053a90603061065b565b60f81b81838151811061054f5761054f610802565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610589600a86610794565b9450610511565b949350505050565b60005b838110156105b357818101518382015260200161059b565b838111156105c2576000848401525b50505050565b600081518084526105e0816020860160208601610598565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061062560208301846105c8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561066e5761066e61062c565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006106ae60608301846105c8565b95945050505050565b600084516106c9818460208901610598565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551610705816001850160208a01610598565b60019201918201528351610720816002840160208801610598565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361075e5761075e61062c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826107a3576107a3610765565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107e9576107e961062c565b500390565b6000826107fd576107fd610765565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x6080604052600436106100695760003560e01c806384411d651161004357806384411d651461010c578063d3e5792b14610130578063d4ff92181461016457600080fd5b80630d9019e1146100755780633ccfd60b146100d357806354fd4d50146100ea57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100a97f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100df57600080fd5b506100e8610197565b005b3480156100f657600080fd5b506100ff6103b8565b6040516100ca9190610612565b34801561011857600080fd5b5061012260005481565b6040519081526020016100ca565b34801561013c57600080fd5b506101227f0000000000000000000000000000000000000000000000008ac7230489e8000081565b34801561017057600080fd5b507f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d4766100a9565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610287919061065b565b9091555050604080518281527f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47673ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610383917f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476916188b891600401610673565b6000604051808303818588803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b505050505050565b60606103e37f000000000000000000000000000000000000000000000000000000000000000161045b565b61040c7f000000000000000000000000000000000000000000000000000000000000000161045b565b6104357f000000000000000000000000000000000000000000000000000000000000000061045b565b604051602001610447939291906106b7565b604051602081830303815290604052905090565b60608160000361049e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156104c857806104b28161072d565b91506104c19050600a83610794565b91506104a2565b60008167ffffffffffffffff8111156104e3576104e36107a8565b6040519080825280601f01601f19166020018201604052801561050d576020820181803683370190505b5090505b8415610590576105226001836107d7565b915061052f600a866107ee565b61053a90603061065b565b60f81b81838151811061054f5761054f610802565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610589600a86610794565b9450610511565b949350505050565b60005b838110156105b357818101518382015260200161059b565b838111156105c2576000848401525b50505050565b600081518084526105e0816020860160208601610598565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061062560208301846105c8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561066e5761066e61062c565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006106ae60608301846105c8565b95945050505050565b600084516106c9818460208901610598565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551610705816001850160208a01610598565b60019201918201528351610720816002840160208801610598565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361075e5761075e61062c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826107a3576107a3610765565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107e9576107e961062c565b500390565b6000826107fd576107fd610765565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30012": { @@ -15207,7 +15208,7 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30014": { - "code": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637f46ddb21161005b5780637f46ddb214610116578063927ede2d1461013d578063aa55745214610164578063c89701a21461017757600080fd5b80633687011a1461008d5780633cb747bf146100a257806354fd4d50146100ee578063761f449314610103575b600080fd5b6100a061009b3660046111c8565b61019d565b005b7f00000000000000000000000042000000000000000000000000000000000000075b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f6610249565b6040516100e591906112c5565b6100a06101113660046112d8565b6102ec565b6100c47f0000000000000000000000002f159629a3cbc10d12f2196bae9d7e1ef38850fa81565b6100c47f000000000000000000000000420000000000000000000000000000000000000781565b6100a0610172366004611370565b610853565b7f0000000000000000000000002f159629a3cbc10d12f2196bae9d7e1ef38850fa6100c4565b333b15610231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b610241868633338888888861090f565b505050505050565b60606102747f0000000000000000000000000000000000000000000000000000000000000001610ead565b61029d7f0000000000000000000000000000000000000000000000000000000000000001610ead565b6102c67f0000000000000000000000000000000000000000000000000000000000000000610ead565b6040516020016102d8939291906113e7565b604051602081830303815290604052905090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071614801561040a57507f0000000000000000000000002f159629a3cbc10d12f2196bae9d7e1ef38850fa73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f2919061145d565b73ffffffffffffffffffffffffffffffffffffffff16145b610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f7468657220627269646765006064820152608401610228565b3073ffffffffffffffffffffffffffffffffffffffff88160361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c66000000000000000000000000000000000000000000006064820152608401610228565b610565877f74259ebf00000000000000000000000000000000000000000000000000000000610fea565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e20696e746560448201527f7266616365206973206e6f7420636f6d706c69616e74000000000000000000006064820152608401610228565b8673ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610660919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4c324552433732314272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433732312060648201527f6c6f63616c20746f6b656e000000000000000000000000000000000000000000608482015260a401610228565b6040517fa144819400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905288169063a144819490604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac8787878760405161084294939291906114c3565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f742062652061646472657373283029000000000000000000000000000000006064820152608401610228565b610906878733888888888861090f565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff87166109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f7420626520616464726573732830290000000000000000000000000000006064820152608401610228565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff891690636352211e90602401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a41919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324552433732314272696467653a205769746864726177616c206973206e6f60448201527f74206265696e6720696e69746961746564206279204e4654206f776e657200006064820152608401610228565b60008873ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c919061145d565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e20646f6560448201527f73206e6f74206d6174636820676976656e2076616c75650000000000000000006064820152608401610228565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018790528a1690639dc29fac90604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050600063761f449360e01b828b8a8a8a8989604051602401610cd89796959493929190611503565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f3dbb202b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071690633dbb202b90610ded907f0000000000000000000000002f159629a3cbc10d12f2196bae9d7e1ef38850fa9085908a90600401611560565b600060405180830381600087803b158015610e0757600080fd5b505af1158015610e1b573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a58a8a8989604051610e9994939291906114c3565b60405180910390a450505050505050505050565b606081600003610ef057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f1a5780610f04816115d4565b9150610f139050600a8361163b565b9150610ef4565b60008167ffffffffffffffff811115610f3557610f3561164f565b6040519080825280601f01601f191660200182016040528015610f5f576020820181803683370190505b5090505b8415610fe257610f7460018361167e565b9150610f81600a86611695565b610f8c9060306116a9565b60f81b818381518110610fa157610fa16116c1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610fdb600a8661163b565b9450610f63565b949350505050565b6000610ff58361100d565b801561100657506110068383611072565b9392505050565b6000611039827f01ffc9a700000000000000000000000000000000000000000000000000000000611072565b801561106c575061106a827fffffffff00000000000000000000000000000000000000000000000000000000611072565b155b92915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561112a575060208210155b80156111365750600081115b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461116357600080fd5b50565b803563ffffffff8116811461117a57600080fd5b919050565b60008083601f84011261119157600080fd5b50813567ffffffffffffffff8111156111a957600080fd5b6020830191508360208285010111156111c157600080fd5b9250929050565b60008060008060008060a087890312156111e157600080fd5b86356111ec81611141565b955060208701356111fc81611141565b94506040870135935061121160608801611166565b9250608087013567ffffffffffffffff81111561122d57600080fd5b61123989828a0161117f565b979a9699509497509295939492505050565b60005b8381101561126657818101518382015260200161124e565b83811115611275576000848401525b50505050565b6000815180845261129381602086016020860161124b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611006602083018461127b565b600080600080600080600060c0888a0312156112f357600080fd5b87356112fe81611141565b9650602088013561130e81611141565b9550604088013561131e81611141565b9450606088013561132e81611141565b93506080880135925060a088013567ffffffffffffffff81111561135157600080fd5b61135d8a828b0161117f565b989b979a50959850939692959293505050565b600080600080600080600060c0888a03121561138b57600080fd5b873561139681611141565b965060208801356113a681611141565b955060408801356113b681611141565b9450606088013593506113cb60808901611166565b925060a088013567ffffffffffffffff81111561135157600080fd5b600084516113f981846020890161124b565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611435816001850160208a0161124b565b6001920191820152835161145081600284016020880161124b565b0160020195945050505050565b60006020828403121561146f57600080fd5b815161100681611141565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006114f960608301848661147a565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261155360c08301848661147a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061158f606083018561127b565b905063ffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611605576116056115a5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261164a5761164a61160c565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082821015611690576116906115a5565b500390565b6000826116a4576116a461160c565b500690565b600082198211156116bc576116bc6115a5565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637f46ddb21161005b5780637f46ddb214610116578063927ede2d1461013d578063aa55745214610164578063c89701a21461017757600080fd5b80633687011a1461008d5780633cb747bf146100a257806354fd4d50146100ee578063761f449314610103575b600080fd5b6100a061009b3660046111c8565b61019d565b005b7f00000000000000000000000042000000000000000000000000000000000000075b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f6610249565b6040516100e591906112c5565b6100a06101113660046112d8565b6102ec565b6100c47f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a81565b6100c47f000000000000000000000000420000000000000000000000000000000000000781565b6100a0610172366004611370565b610853565b7f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a6100c4565b333b15610231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b610241868633338888888861090f565b505050505050565b60606102747f0000000000000000000000000000000000000000000000000000000000000001610ead565b61029d7f0000000000000000000000000000000000000000000000000000000000000001610ead565b6102c67f0000000000000000000000000000000000000000000000000000000000000000610ead565b6040516020016102d8939291906113e7565b604051602081830303815290604052905090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071614801561040a57507f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f2919061145d565b73ffffffffffffffffffffffffffffffffffffffff16145b610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f7468657220627269646765006064820152608401610228565b3073ffffffffffffffffffffffffffffffffffffffff88160361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c66000000000000000000000000000000000000000000006064820152608401610228565b610565877f74259ebf00000000000000000000000000000000000000000000000000000000610fea565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e20696e746560448201527f7266616365206973206e6f7420636f6d706c69616e74000000000000000000006064820152608401610228565b8673ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610660919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4c324552433732314272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433732312060648201527f6c6f63616c20746f6b656e000000000000000000000000000000000000000000608482015260a401610228565b6040517fa144819400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905288169063a144819490604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac8787878760405161084294939291906114c3565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f742062652061646472657373283029000000000000000000000000000000006064820152608401610228565b610906878733888888888861090f565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff87166109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f7420626520616464726573732830290000000000000000000000000000006064820152608401610228565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff891690636352211e90602401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a41919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324552433732314272696467653a205769746864726177616c206973206e6f60448201527f74206265696e6720696e69746961746564206279204e4654206f776e657200006064820152608401610228565b60008873ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c919061145d565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e20646f6560448201527f73206e6f74206d6174636820676976656e2076616c75650000000000000000006064820152608401610228565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018790528a1690639dc29fac90604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050600063761f449360e01b828b8a8a8a8989604051602401610cd89796959493929190611503565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f3dbb202b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071690633dbb202b90610ded907f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a9085908a90600401611560565b600060405180830381600087803b158015610e0757600080fd5b505af1158015610e1b573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a58a8a8989604051610e9994939291906114c3565b60405180910390a450505050505050505050565b606081600003610ef057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f1a5780610f04816115d4565b9150610f139050600a8361163b565b9150610ef4565b60008167ffffffffffffffff811115610f3557610f3561164f565b6040519080825280601f01601f191660200182016040528015610f5f576020820181803683370190505b5090505b8415610fe257610f7460018361167e565b9150610f81600a86611695565b610f8c9060306116a9565b60f81b818381518110610fa157610fa16116c1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610fdb600a8661163b565b9450610f63565b949350505050565b6000610ff58361100d565b801561100657506110068383611072565b9392505050565b6000611039827f01ffc9a700000000000000000000000000000000000000000000000000000000611072565b801561106c575061106a827fffffffff00000000000000000000000000000000000000000000000000000000611072565b155b92915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561112a575060208210155b80156111365750600081115b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461116357600080fd5b50565b803563ffffffff8116811461117a57600080fd5b919050565b60008083601f84011261119157600080fd5b50813567ffffffffffffffff8111156111a957600080fd5b6020830191508360208285010111156111c157600080fd5b9250929050565b60008060008060008060a087890312156111e157600080fd5b86356111ec81611141565b955060208701356111fc81611141565b94506040870135935061121160608801611166565b9250608087013567ffffffffffffffff81111561122d57600080fd5b61123989828a0161117f565b979a9699509497509295939492505050565b60005b8381101561126657818101518382015260200161124e565b83811115611275576000848401525b50505050565b6000815180845261129381602086016020860161124b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611006602083018461127b565b600080600080600080600060c0888a0312156112f357600080fd5b87356112fe81611141565b9650602088013561130e81611141565b9550604088013561131e81611141565b9450606088013561132e81611141565b93506080880135925060a088013567ffffffffffffffff81111561135157600080fd5b61135d8a828b0161117f565b989b979a50959850939692959293505050565b600080600080600080600060c0888a03121561138b57600080fd5b873561139681611141565b965060208801356113a681611141565b955060408801356113b681611141565b9450606088013593506113cb60808901611166565b925060a088013567ffffffffffffffff81111561135157600080fd5b600084516113f981846020890161124b565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611435816001850160208a0161124b565b6001920191820152835161145081600284016020880161124b565b0160020195945050505050565b60006020828403121561146f57600080fd5b815161100681611141565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006114f960608301848661147a565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261155360c08301848661147a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061158f606083018561127b565b905063ffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611605576116056115a5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261164a5761164a61160c565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082821015611690576116906115a5565b500390565b6000826116a4576116a461160c565b500690565b600082198211156116bc576116bc6115a5565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30015": { @@ -15227,11 +15228,11 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30019": { - "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f10081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f10073ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f100916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47673ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3001a": { - "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f10081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f10073ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f000000000000000000000000ae6c8365a5cf851d099392af192f6fb208a0f100916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47673ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "deaddeaddeaddeaddeaddeaddeaddeaddead0000": { diff --git a/params/config.go b/params/config.go index 09d18c6e75..d1c2bed9c1 100644 --- a/params/config.go +++ b/params/config.go @@ -32,7 +32,7 @@ var ( OPBNBMainNetGenesisHash = common.HexToHash("0x4dd61178c8b0f01670c231597e7bcb368e84545acd46d940a896d6a791dd6df4") OPBNBTestNetGenesisHash = common.HexToHash("0x51fa57729dfb1c27542c21b06cb72a0459c57440ceb43a465dae1307cd04fe80") - OPBNBQANetGenesisHash = common.HexToHash("0x1cba296441b55cf9b5b306b6aef43e68e9aeff2450d68c391dec448604cf3baf") + OPBNBQANetGenesisHash = common.HexToHash("0x580889547f6ac1d303d01d028f558d379284173e5ca1ebf38dbbafdef3e5d81c") ) const ( @@ -50,7 +50,7 @@ const ( const ( OPBNBMainnetChainID = 204 OPBNBTestNetChainID = 5611 - OPBNBQANetChainID = 1322 + OPBNBQANetChainID = 1484 ) // OP Stack chain config @@ -225,7 +225,7 @@ var ( } // OPBNBQANetConfig is the chain parameters to run a node on the opBNB qa network. It is just for internal test. OPBNBQANetConfig = &ChainConfig{ - ChainID: big.NewInt(1322), + ChainID: big.NewInt(1484), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), @@ -248,7 +248,7 @@ var ( EIP1559Elasticity: 2, EIP1559Denominator: 8, }, - // Fermat: big.NewInt(3615117), + Fermat: big.NewInt(0), } // AllEthashProtocolChanges contains every protocol change (EIPs) introduced From fa2ac3e2188fe7b1c51b49ca5d2184ad61ffe565 Mon Sep 17 00:00:00 2001 From: bnoieh <135800952+bnoieh@users.noreply.github.com> Date: Sun, 28 Apr 2024 15:52:06 +0800 Subject: [PATCH 217/223] canyon fork: revert disable create2deployer in canyon fork (#100) Co-authored-by: Nolan <33241113+nolanxyg@users.noreply.github.com> --- core/state_processor.go | 3 +-- miner/worker.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/core/state_processor.go b/core/state_processor.go index 4c18b48248..e29fb6f0f7 100644 --- a/core/state_processor.go +++ b/core/state_processor.go @@ -79,8 +79,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg misc.ApplyPreContractHardFork(statedb) } - // opBNB no need to hard code this contract via hardfork - // misc.EnsureCreate2Deployer(p.config, block.Time(), statedb) + misc.EnsureCreate2Deployer(p.config, block.Time(), statedb) var ( context = NewEVMBlockContext(header, p.bc, nil, p.config, statedb) diff --git a/miner/worker.go b/miner/worker.go index 30969aa84a..fd9fa7e043 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -1147,8 +1147,7 @@ func (w *worker) generateWork(genParams *generateParams) *newPayloadResult { misc.ApplyPreContractHardFork(work.state) } - // opBNB no need to hard code this contract via hardfork - // misc.EnsureCreate2Deployer(w.chainConfig, work.header.Time, work.state) + misc.EnsureCreate2Deployer(w.chainConfig, work.header.Time, work.state) start := time.Now() for _, tx := range genParams.txs { From c0a225ebad8f4f96ef062682cc3ef4c556487fdf Mon Sep 17 00:00:00 2001 From: welkin22 Date: Mon, 29 Apr 2024 12:39:24 +0800 Subject: [PATCH 218/223] regenerate config toml marshal file --- eth/ethconfig/gen_config.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index 76ab5d36fc..e9bf6128c2 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -29,8 +29,8 @@ func (c Config) MarshalTOML() (interface{}, error) { TransactionHistory uint64 `toml:",omitempty"` StateHistory uint64 `toml:",omitempty"` StateScheme string `toml:",omitempty"` - ProposeBlockInterval uint64 `toml:",omitempty"` - PathNodeBuffer pathdb.NodeBufferType `toml:",omitempty"` + PathNodeBuffer pathdb.NodeBufferType `toml:",omitempty"` + ProposeBlockInterval uint64 `toml:",omitempty"` RequiredBlocks map[uint64]common.Hash `toml:"-"` LightServ int `toml:",omitempty"` LightIngress int `toml:",omitempty"` @@ -71,6 +71,7 @@ func (c Config) MarshalTOML() (interface{}, error) { RollupDisableTxPoolGossip bool RollupDisableTxPoolAdmission bool RollupHaltOnIncompatibleProtocolVersion string + EnableOpcodeOptimizing bool } var enc Config enc.Genesis = c.Genesis @@ -84,8 +85,8 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.TransactionHistory = c.TransactionHistory enc.StateHistory = c.StateHistory enc.StateScheme = c.StateScheme - enc.ProposeBlockInterval = c.ProposeBlockInterval enc.PathNodeBuffer = c.PathNodeBuffer + enc.ProposeBlockInterval = c.ProposeBlockInterval enc.RequiredBlocks = c.RequiredBlocks enc.LightServ = c.LightServ enc.LightIngress = c.LightIngress @@ -126,6 +127,7 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.RollupDisableTxPoolGossip = c.RollupDisableTxPoolGossip enc.RollupDisableTxPoolAdmission = c.RollupDisableTxPoolAdmission enc.RollupHaltOnIncompatibleProtocolVersion = c.RollupHaltOnIncompatibleProtocolVersion + enc.EnableOpcodeOptimizing = c.EnableOpcodeOptimizing return &enc, nil } @@ -143,8 +145,8 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { TransactionHistory *uint64 `toml:",omitempty"` StateHistory *uint64 `toml:",omitempty"` StateScheme *string `toml:",omitempty"` - ProposeBlockInterval *uint64 `toml:",omitempty"` - PathNodeBuffer *pathdb.NodeBufferType `toml:",omitempty"` + PathNodeBuffer *pathdb.NodeBufferType `toml:",omitempty"` + ProposeBlockInterval *uint64 `toml:",omitempty"` RequiredBlocks map[uint64]common.Hash `toml:"-"` LightServ *int `toml:",omitempty"` LightIngress *int `toml:",omitempty"` @@ -162,7 +164,7 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { TrieCommitInterval *uint64 SnapshotCache *int Preimages *bool - NoTries *bool + NoTries *bool FilterLogCacheSize *int Miner *miner.Config TxPool *legacypool.Config @@ -185,6 +187,7 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { RollupDisableTxPoolGossip *bool RollupDisableTxPoolAdmission *bool RollupHaltOnIncompatibleProtocolVersion *string + EnableOpcodeOptimizing *bool } var dec Config if err := unmarshal(&dec); err != nil { @@ -223,12 +226,12 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.StateScheme != nil { c.StateScheme = *dec.StateScheme } - if dec.ProposeBlockInterval != nil { - c.ProposeBlockInterval = *dec.ProposeBlockInterval - } if dec.PathNodeBuffer != nil { c.PathNodeBuffer = *dec.PathNodeBuffer } + if dec.ProposeBlockInterval != nil { + c.ProposeBlockInterval = *dec.ProposeBlockInterval + } if dec.RequiredBlocks != nil { c.RequiredBlocks = dec.RequiredBlocks } @@ -349,5 +352,8 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.RollupHaltOnIncompatibleProtocolVersion != nil { c.RollupHaltOnIncompatibleProtocolVersion = *dec.RollupHaltOnIncompatibleProtocolVersion } + if dec.EnableOpcodeOptimizing != nil { + c.EnableOpcodeOptimizing = *dec.EnableOpcodeOptimizing + } return nil } From e0289dbe421f192c9054c3aac03a9e1983c1d037 Mon Sep 17 00:00:00 2001 From: redhdx <136775144+redhdx@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:56:46 +0800 Subject: [PATCH 219/223] feature(op-geth): add opBNB qanet hard fork config (#101) --- params/config.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/params/config.go b/params/config.go index d1c2bed9c1..b470593d9f 100644 --- a/params/config.go +++ b/params/config.go @@ -245,10 +245,16 @@ var ( TerminalTotalDifficulty: big.NewInt(0), TerminalTotalDifficultyPassed: true, Optimism: &OptimismConfig{ - EIP1559Elasticity: 2, - EIP1559Denominator: 8, + EIP1559Elasticity: 2, + EIP1559Denominator: 8, + EIP1559DenominatorCanyon: 8, }, - Fermat: big.NewInt(0), + Fermat: big.NewInt(0), + ShanghaiTime: newUint64(1714385400), // Apr-29-2024 10:10 AM +UTC + CanyonTime: newUint64(1714385400), // Apr-29-2024 10:10 AM +UTC + // Delta: the Delta upgrade does not affect the execution-layer, and is thus not configurable in the chain config. + CancunTime: newUint64(1714386600), // Apr-29-2024 10:30 AM +UTC + EcotoneTime: newUint64(1714386600), // Apr-29-2024 10:30 AM +UTC } // AllEthashProtocolChanges contains every protocol change (EIPs) introduced From c013d956242299e368d9b44a14c527a655cea897 Mon Sep 17 00:00:00 2001 From: KeefeL <90749943+KeefeL@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:09:52 +0800 Subject: [PATCH 220/223] add precompiled contracts for light client (#102) Co-authored-by: Keefe Liu --- core/vm/contracts.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 4253663a54..9c2c3d8d80 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -127,6 +127,9 @@ var PrecompiledContractsCancun = map[common.Address]PrecompiledContract{ common.BytesToAddress([]byte{8}): &bn256PairingIstanbul{}, common.BytesToAddress([]byte{9}): &blake2F{}, common.BytesToAddress([]byte{0x0a}): &kzgPointEvaluation{}, + + common.BytesToAddress([]byte{102}): &blsSignatureVerify{}, + common.BytesToAddress([]byte{103}): &cometBFTLightBlockValidate{}, } // PrecompiledContractsBLS contains the set of pre-compiled Ethereum From d46af0710e439bbb0a703efc6e4dcedfdc882c35 Mon Sep 17 00:00:00 2001 From: welkin22 Date: Mon, 6 May 2024 16:04:31 +0800 Subject: [PATCH 221/223] fork config for 4844-2 qanet --- core/assets/qanet/genesis.json | 29 ++++++++++++++--------------- params/config.go | 14 +++++++------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/core/assets/qanet/genesis.json b/core/assets/qanet/genesis.json index 3148b03d45..e1a336f165 100644 --- a/core/assets/qanet/genesis.json +++ b/core/assets/qanet/genesis.json @@ -1,6 +1,6 @@ { "config": { - "chainId": 1484, + "chainId": 2484, "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, @@ -17,7 +17,6 @@ "mergeNetsplitBlock": 0, "bedrockBlock": 0, "regolithTime": 0, - "fermat": 0, "terminalTotalDifficulty": 0, "terminalTotalDifficultyPassed": true, "optimism": { @@ -26,7 +25,7 @@ } }, "nonce": "0x0", - "timestamp": "0x662db38d", + "timestamp": "0x662e0406", "extraData": "0x424544524f434b", "gasLimit": "0x5f5e100", "difficulty": "0x0", @@ -965,11 +964,11 @@ "4200000000000000000000000000000000000015": { "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000662db38d00000000000597db", - "0x0000000000000000000000000000000000000000000000000000000000000001": "0x00000000000000000000000000000000000000000000000000000000b2d05e00", - "0x0000000000000000000000000000000000000000000000000000000000000002": "0xed201904d66dcf479bd75821e9e3e76d52818be4290e54cd723497dd404ff82e", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000662e0406000000000005b2ae", + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x00000000000000000000000000000000000000000000000000000004a817c800", + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x604a9f6a8572851437efbf9cf7e3c842875d05cefdb707d3b76396b595eb5d22", "0x0000000000000000000000000000000000000000000000000000000000000003": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000004": "0x0000000000000000000000000f92e2e0cf3d30d0cd1862c9ed4b6008bc4fcdee", + "0x0000000000000000000000000000000000000000000000000000000000000004": "0x000000000000000000000000bd6353a2e43a0d8eaa370b2eceb80481bc5c4094", "0x0000000000000000000000000000000000000000000000000000000000000005": "0x0000000000000000000000000000000000000000000000000000000000000834", "0x0000000000000000000000000000000000000000000000000000000000000006": "0x00000000000000000000000000000000000000000000000000000000000f4240", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30015", @@ -997,7 +996,7 @@ "4200000000000000000000000000000000000018": { "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b268829", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30018", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000004200000000000000000000000000000000000018" }, @@ -1297,7 +1296,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000003": "0x4f50424e4200000000000000000000000000000000000000000000000000000a", "0x0000000000000000000000000000000000000000000000000000000000000004": "0x4f50424e4200000000000000000000000000000000000000000000000000000a", - "0x000000000000000000000000000000000000000000000000000000000000000a": "0x0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476" + "0x000000000000000000000000000000000000000000000000000000000000000a": "0x0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b268829" }, "balance": "0x0" }, @@ -15184,7 +15183,7 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30007": { - "code": "0x6080604052600436106101445760003560e01c80638129fc1c116100c0578063a711986911610074578063b28ade2511610059578063b28ade251461036e578063d764ad0b1461038e578063ecc70428146103a157600080fd5b8063a71198691461030b578063b1b1b2091461033e57600080fd5b80638cbeeef2116100a55780638cbeeef2146101e35780639fce812c14610297578063a4e7f8bd146102cb57600080fd5b80638129fc1c1461026b57806383a740741461028057600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d50146101f95780635644cfdf1461021b5780636e296e451461023157600080fd5b80633f827a5a146101bb5780634c1d6a69146101e357600080fd5b8063028f85f7146101495780630c5684981461017c5780632828d7e8146101915780633dbb202b146101a6575b600080fd5b34801561015557600080fd5b5061015e601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561018857600080fd5b5061015e603f81565b34801561019d57600080fd5b5061015e604081565b6101b96101b4366004611886565b610406565b005b3480156101c757600080fd5b506101d0600181565b60405161ffff9091168152602001610173565b3480156101ef57600080fd5b5061015e619c4081565b34801561020557600080fd5b5061020e61066a565b6040516101739190611965565b34801561022757600080fd5b5061015e61138881565b34801561023d57600080fd5b5061024661070d565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b34801561027757600080fd5b506101b96107f9565b34801561028c57600080fd5b5061015e62030d4081565b3480156102a357600080fd5b506102467f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d81565b3480156102d757600080fd5b506102fb6102e636600461197f565b60ce6020526000908152604090205460ff1681565b6040519015158152602001610173565b34801561031757600080fd5b507f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d610246565b34801561034a57600080fd5b506102fb61035936600461197f565b60cb6020526000908152604090205460ff1681565b34801561037a57600080fd5b5061015e610389366004611998565b6109f6565b6101b961039c3660046119ec565b610a64565b3480156103ad57600080fd5b506103f860cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b604051908152602001610173565b61053f7f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d6104358585856109f6565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104a160cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c6040516024016104bd9796959493929190611ab7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261135d565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a3385856105c460cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b866040516105d6959493929190611b16565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60606106957f00000000000000000000000000000000000000000000000000000000000000016113eb565b6106be7f00000000000000000000000000000000000000000000000000000000000000046113eb565b6106e77f00000000000000000000000000000000000000000000000000000000000000006113eb565b6040516020016106f993929190611b64565b604051602081830303815290604052905090565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000547501000000000000000000000000000000000000000000900460ff1615808015610844575060005460017401000000000000000000000000000000000000000090910460ff16105b806108765750303b158015610876575060005474010000000000000000000000000000000000000000900460ff166001145b610902576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561098857600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b610990611520565b80156109f357600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f610a12604063ffffffff8816611c09565b610a1c9190611c68565b610a27601088611c09565b610a349062030d40611c8f565b610a3e9190611c8f565b610a489190611c8f565b610a529190611c8f565b610a5c9190611c8f565b949350505050565b60f087901c60028110610b1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a4016107d3565b8061ffff16600003610c14576000610b70878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506115f9915050565b600081815260cb602052604090205490915060ff1615610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c6179656400000000000000000060648201526084016107d3565b505b6000610c5a898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061161892505050565b905073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef330181167f0000000000000000000000008d3502cbef7f43c7b22bcaaafab4a7dbca181a4d90911603610cf257853414610cce57610cce611cbb565b600081815260ce602052604090205460ff1615610ced57610ced611cbb565b610e44565b3415610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016107d3565b600081815260ce602052604090205460ff16610e44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016107d3565b610e4d8761163b565b15610f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b600081815260cb602052604090205460ff1615610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016107d3565b610fc085610fb1611388619c40611c8f565b67ffffffffffffffff16611690565b1580610fe6575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b156110ff57600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050611338565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061119088619c405a6111539190611cea565b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116ae92505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790559050801561122757600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2611334565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fc2b3e5ac0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000169063c2b3e5ac9084906113b390889088908790600401611d01565b6000604051808303818588803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050505050505050565b60608160000361142e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611458578061144281611d49565b91506114519050600a83611d81565b9150611432565b60008167ffffffffffffffff81111561147357611473611d95565b6040519080825280601f01601f19166020018201604052801561149d576020820181803683370190505b5090505b8415610a5c576114b2600183611cea565b91506114bf600a86611dc4565b6114ca906030611dd8565b60f81b8183815181106114df576114df611df0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611519600a86611d81565b94506114a1565b6000547501000000000000000000000000000000000000000000900460ff166115cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b6000611607858585856116c8565b805190602001209050949350505050565b6000611628878787878787611761565b8051906020012090509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff821630148061168a575073ffffffffffffffffffffffffffffffffffffffff8216734200000000000000000000000000000000000016145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016116e19493929190611e1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161177e96959493929190611e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461182457600080fd5b919050565b60008083601f84011261183b57600080fd5b50813567ffffffffffffffff81111561185357600080fd5b60208301915083602082850101111561186b57600080fd5b9250929050565b803563ffffffff8116811461182457600080fd5b6000806000806060858703121561189c57600080fd5b6118a585611800565b9350602085013567ffffffffffffffff8111156118c157600080fd5b6118cd87828801611829565b90945092506118e0905060408601611872565b905092959194509250565b60005b838110156119065781810151838201526020016118ee565b83811115611915576000848401525b50505050565b600081518084526119338160208601602086016118eb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611978602083018461191b565b9392505050565b60006020828403121561199157600080fd5b5035919050565b6000806000604084860312156119ad57600080fd5b833567ffffffffffffffff8111156119c457600080fd5b6119d086828701611829565b90945092506119e3905060208501611872565b90509250925092565b600080600080600080600060c0888a031215611a0757600080fd5b87359650611a1760208901611800565b9550611a2560408901611800565b9450606088013593506080880135925060a088013567ffffffffffffffff811115611a4f57600080fd5b611a5b8a828b01611829565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611b0960c083018486611a6e565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611b46608083018688611a6e565b905083604083015263ffffffff831660608301529695505050505050565b60008451611b768184602089016118eb565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611bb2816001850160208a016118eb565b60019201918201528351611bcd8160028401602088016118eb565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611c3057611c30611bda565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611c8357611c83611c39565b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611cb257611cb2611bda565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611cfc57611cfc611bda565b500390565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000611d40606083018461191b565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d7a57611d7a611bda565b5060010190565b600082611d9057611d90611c39565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082611dd357611dd3611c39565b500690565b60008219821115611deb57611deb611bda565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611e58608083018561191b565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611eb460c083018461191b565b9897505050505050505056fea164736f6c634300080f000a", + "code": "0x6080604052600436106101445760003560e01c80638129fc1c116100c0578063a711986911610074578063b28ade2511610059578063b28ade251461036e578063d764ad0b1461038e578063ecc70428146103a157600080fd5b8063a71198691461030b578063b1b1b2091461033e57600080fd5b80638cbeeef2116100a55780638cbeeef2146101e35780639fce812c14610297578063a4e7f8bd146102cb57600080fd5b80638129fc1c1461026b57806383a740741461028057600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d50146101f95780635644cfdf1461021b5780636e296e451461023157600080fd5b80633f827a5a146101bb5780634c1d6a69146101e357600080fd5b8063028f85f7146101495780630c5684981461017c5780632828d7e8146101915780633dbb202b146101a6575b600080fd5b34801561015557600080fd5b5061015e601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561018857600080fd5b5061015e603f81565b34801561019d57600080fd5b5061015e604081565b6101b96101b4366004611886565b610406565b005b3480156101c757600080fd5b506101d0600181565b60405161ffff9091168152602001610173565b3480156101ef57600080fd5b5061015e619c4081565b34801561020557600080fd5b5061020e61066a565b6040516101739190611965565b34801561022757600080fd5b5061015e61138881565b34801561023d57600080fd5b5061024661070d565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b34801561027757600080fd5b506101b96107f9565b34801561028c57600080fd5b5061015e62030d4081565b3480156102a357600080fd5b506102467f00000000000000000000000011fd17e6fd1b5ec805edd78ea03bc9433f7c987a81565b3480156102d757600080fd5b506102fb6102e636600461197f565b60ce6020526000908152604090205460ff1681565b6040519015158152602001610173565b34801561031757600080fd5b507f00000000000000000000000011fd17e6fd1b5ec805edd78ea03bc9433f7c987a610246565b34801561034a57600080fd5b506102fb61035936600461197f565b60cb6020526000908152604090205460ff1681565b34801561037a57600080fd5b5061015e610389366004611998565b6109f6565b6101b961039c3660046119ec565b610a64565b3480156103ad57600080fd5b506103f860cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b604051908152602001610173565b61053f7f00000000000000000000000011fd17e6fd1b5ec805edd78ea03bc9433f7c987a6104358585856109f6565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104a160cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c6040516024016104bd9796959493929190611ab7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261135d565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a3385856105c460cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b866040516105d6959493929190611b16565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60606106957f00000000000000000000000000000000000000000000000000000000000000016113eb565b6106be7f00000000000000000000000000000000000000000000000000000000000000046113eb565b6106e77f00000000000000000000000000000000000000000000000000000000000000006113eb565b6040516020016106f993929190611b64565b604051602081830303815290604052905090565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000547501000000000000000000000000000000000000000000900460ff1615808015610844575060005460017401000000000000000000000000000000000000000090910460ff16105b806108765750303b158015610876575060005474010000000000000000000000000000000000000000900460ff166001145b610902576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561098857600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b610990611520565b80156109f357600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f610a12604063ffffffff8816611c09565b610a1c9190611c68565b610a27601088611c09565b610a349062030d40611c8f565b610a3e9190611c8f565b610a489190611c8f565b610a529190611c8f565b610a5c9190611c8f565b949350505050565b60f087901c60028110610b1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a4016107d3565b8061ffff16600003610c14576000610b70878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506115f9915050565b600081815260cb602052604090205490915060ff1615610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c6179656400000000000000000060648201526084016107d3565b505b6000610c5a898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061161892505050565b905073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef330181167f00000000000000000000000011fd17e6fd1b5ec805edd78ea03bc9433f7c987a90911603610cf257853414610cce57610cce611cbb565b600081815260ce602052604090205460ff1615610ced57610ced611cbb565b610e44565b3415610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016107d3565b600081815260ce602052604090205460ff16610e44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016107d3565b610e4d8761163b565b15610f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b600081815260cb602052604090205460ff1615610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016107d3565b610fc085610fb1611388619c40611c8f565b67ffffffffffffffff16611690565b1580610fe6575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b156110ff57600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050611338565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061119088619c405a6111539190611cea565b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116ae92505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790559050801561122757600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2611334565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016107d3565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fc2b3e5ac0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000169063c2b3e5ac9084906113b390889088908790600401611d01565b6000604051808303818588803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050505050505050565b60608160000361142e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611458578061144281611d49565b91506114519050600a83611d81565b9150611432565b60008167ffffffffffffffff81111561147357611473611d95565b6040519080825280601f01601f19166020018201604052801561149d576020820181803683370190505b5090505b8415610a5c576114b2600183611cea565b91506114bf600a86611dc4565b6114ca906030611dd8565b60f81b8183815181106114df576114df611df0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611519600a86611d81565b94506114a1565b6000547501000000000000000000000000000000000000000000900460ff166115cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b6000611607858585856116c8565b805190602001209050949350505050565b6000611628878787878787611761565b8051906020012090509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff821630148061168a575073ffffffffffffffffffffffffffffffffffffffff8216734200000000000000000000000000000000000016145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016116e19493929190611e1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161177e96959493929190611e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461182457600080fd5b919050565b60008083601f84011261183b57600080fd5b50813567ffffffffffffffff81111561185357600080fd5b60208301915083602082850101111561186b57600080fd5b9250929050565b803563ffffffff8116811461182457600080fd5b6000806000806060858703121561189c57600080fd5b6118a585611800565b9350602085013567ffffffffffffffff8111156118c157600080fd5b6118cd87828801611829565b90945092506118e0905060408601611872565b905092959194509250565b60005b838110156119065781810151838201526020016118ee565b83811115611915576000848401525b50505050565b600081518084526119338160208601602086016118eb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611978602083018461191b565b9392505050565b60006020828403121561199157600080fd5b5035919050565b6000806000604084860312156119ad57600080fd5b833567ffffffffffffffff8111156119c457600080fd5b6119d086828701611829565b90945092506119e3905060208501611872565b90509250925092565b600080600080600080600060c0888a031215611a0757600080fd5b87359650611a1760208901611800565b9550611a2560408901611800565b9450606088013593506080880135925060a088013567ffffffffffffffff811115611a4f57600080fd5b611a5b8a828b01611829565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611b0960c083018486611a6e565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611b46608083018688611a6e565b905083604083015263ffffffff831660608301529695505050505050565b60008451611b768184602089016118eb565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611bb2816001850160208a016118eb565b60019201918201528351611bcd8160028401602088016118eb565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611c3057611c30611bda565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611c8357611c83611c39565b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611cb257611cb2611bda565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611cfc57611cfc611bda565b500390565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000611d40606083018461191b565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d7a57611d7a611bda565b5060010190565b600082611d9057611d90611c39565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082611dd357611dd3611c39565b500690565b60008219821115611deb57611deb611bda565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611e58608083018561191b565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611eb460c083018461191b565b9897505050505050505056fea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3000f": { @@ -15192,11 +15191,11 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30010": { - "code": "0x6080604052600436106100ec5760003560e01c806354fd4d501161008a5780638f601f66116100595780638f601f661461034e578063927ede2d14610394578063a3a79548146103c8578063e11013dd146103db57600080fd5b806354fd4d50146102c5578063662a633a146102e75780637f46ddb2146102fa578063870876231461032e57600080fd5b806332b7006d116100c657806332b7006d1461020657806336c717c1146102195780633cb747bf14610272578063540abf73146102a557600080fd5b80630166a07a146101c057806309fc8843146101e05780631635f5fd146101f357600080fd5b366101bb57333b15610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101b973deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d40604051806020016040528060008152506103ee565b005b600080fd5b3480156101cc57600080fd5b506101b96101db366004612372565b6104c9565b6101b96101ee366004612423565b6108b6565b6101b9610201366004612476565b61098d565b6101b96102143660046124e9565b610e5a565b34801561022557600080fd5b507f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d4785b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561027e57600080fd5b507f0000000000000000000000004200000000000000000000000000000000000007610248565b3480156102b157600080fd5b506101b96102c036600461253d565b610f34565b3480156102d157600080fd5b506102da610f79565b604051610269919061262a565b6101b96102f5366004612372565b61101c565b34801561030657600080fd5b506102487f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d47881565b34801561033a57600080fd5b506101b961034936600461263d565b61108f565b34801561035a57600080fd5b506103866103693660046126c0565b600260209081526000928352604080842090915290825290205481565b604051908152602001610269565b3480156103a057600080fd5b506102487f000000000000000000000000420000000000000000000000000000000000000781565b6101b96103d636600461263d565b611163565b6101b96103e93660046126f9565b6111a7565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff87160161043d5761043885858585856111f0565b6104c1565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae919061275c565b90506104bf878288888888886113d4565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004200000000000000000000000000000000000007161480156105e757507f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d47873ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b6106a28761171b565b156107f0576106b1878761177d565b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b50505050610872565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461082e9084906127a8565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c168352939052919091209190915561087290858561189d565b6104bf878787878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197192505050565b333b15610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6109883333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000420000000000000000000000000000000000000716148015610aab57507f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d47873ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b823414610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161017c565b3073ffffffffffffffffffffffffffffffffffffffff851603610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161017c565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161017c565b610dae85858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119ff92505050565b6000610dcb855a8660405180602001604052806000815250611aa0565b9050806104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161017c565b333b15610ee9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b610f2d853333878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b5050505050565b6104bf87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6060610fa47f0000000000000000000000000000000000000000000000000000000000000001611aba565b610fcd7f0000000000000000000000000000000000000000000000000000000000000001611aba565b610ff67f0000000000000000000000000000000000000000000000000000000000000000611aba565b604051602001611008939291906127bf565b604051602081830303815290604052905090565b73ffffffffffffffffffffffffffffffffffffffff8716158015611069575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b156110805761107b858585858561098d565b6104bf565b6104bf868887878787876104c9565b333b1561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6104c186863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6104c1863387878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b6111ea3385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b50505050565b82341461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161017c565b61128b85858584611bf7565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b847f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d478631635f5fd60e01b898989886040516024016113089493929190612835565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261139b9291889060040161287e565b6000604051808303818588803b1580156113b457600080fd5b505af11580156113c8573d6000803e3d6000fd5b50505050505050505050565b6113dd8761171b565b1561152b576113ec878761177d565b61149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506115bf565b61154d73ffffffffffffffffffffffffffffffffffffffff8816863086611c98565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461158b9084906128c3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6115cd878787878786611cf6565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b7f000000000000000000000000a4a33a684eb6c6353eb1dffac1d05f3ec9d0d478630166a07a60e01b898b8a8a8a8960405160240161164d969594939291906128db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526116e09291879060040161287e565b600060405180830381600087803b1580156116fa57600080fd5b505af115801561170e573d6000803e3d6000fd5b5050505050505050505050565b6000611747827f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b806117775750611777827fec4fc8e300000000000000000000000000000000000000000000000000000000611d84565b92915050565b60006117a9837f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b15611852578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d919061275c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611777565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109889084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611da7565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd898686866040516119e993929190612936565b60405180910390a46104c1868686868686611eb3565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611a8c93929190612936565b60405180910390a46111ea84848484611f3b565b600080600080845160208601878a8af19695505050505050565b606081600003611afd57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b275780611b1181612974565b9150611b209050600a836129db565b9150611b01565b60008167ffffffffffffffff811115611b4257611b426129ef565b6040519080825280601f01601f191660200182016040528015611b6c576020820181803683370190505b5090505b8415611bef57611b816001836127a8565b9150611b8e600a86612a1e565b611b999060306128c3565b60f81b818381518110611bae57611bae612a32565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611be8600a866129db565b9450611b70565b949350505050565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611c8493929190612936565b60405180910390a46111ea84848484611fa8565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526111ea9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118ef565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611d6e93929190612936565b60405180910390a46104c1868686868686612007565b6000611d8f8361207f565b8015611da05750611da083836120e3565b9392505050565b6000611e09826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121b29092919063ffffffff16565b8051909150156109885780806020019051810190611e279190612a61565b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161017c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f2b93929190612936565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051611f9a929190612a83565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051611f9a929190612a83565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f2b93929190612936565b60006120ab827f01ffc9a7000000000000000000000000000000000000000000000000000000006120e3565b801561177757506120dc827fffffffff000000000000000000000000000000000000000000000000000000006120e3565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561219b575060208210155b80156121a75750600081115b979650505050505050565b6060611bef84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161017c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122649190612a9c565b60006040518083038185875af1925050503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506121a7828286606083156122c0575081611da0565b8251156122d05782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017c919061262a565b73ffffffffffffffffffffffffffffffffffffffff8116811461232657600080fd5b50565b60008083601f84011261233b57600080fd5b50813567ffffffffffffffff81111561235357600080fd5b60208301915083602082850101111561236b57600080fd5b9250929050565b600080600080600080600060c0888a03121561238d57600080fd5b873561239881612304565b965060208801356123a881612304565b955060408801356123b881612304565b945060608801356123c881612304565b93506080880135925060a088013567ffffffffffffffff8111156123eb57600080fd5b6123f78a828b01612329565b989b979a50959850939692959293505050565b803563ffffffff8116811461241e57600080fd5b919050565b60008060006040848603121561243857600080fd5b6124418461240a565b9250602084013567ffffffffffffffff81111561245d57600080fd5b61246986828701612329565b9497909650939450505050565b60008060008060006080868803121561248e57600080fd5b853561249981612304565b945060208601356124a981612304565b935060408601359250606086013567ffffffffffffffff8111156124cc57600080fd5b6124d888828901612329565b969995985093965092949392505050565b60008060008060006080868803121561250157600080fd5b853561250c81612304565b9450602086013593506125216040870161240a565b9250606086013567ffffffffffffffff8111156124cc57600080fd5b600080600080600080600060c0888a03121561255857600080fd5b873561256381612304565b9650602088013561257381612304565b9550604088013561258381612304565b9450606088013593506125986080890161240a565b925060a088013567ffffffffffffffff8111156123eb57600080fd5b60005b838110156125cf5781810151838201526020016125b7565b838111156111ea5750506000910152565b600081518084526125f88160208601602086016125b4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611da060208301846125e0565b60008060008060008060a0878903121561265657600080fd5b863561266181612304565b9550602087013561267181612304565b9450604087013593506126866060880161240a565b9250608087013567ffffffffffffffff8111156126a257600080fd5b6126ae89828a01612329565b979a9699509497509295939492505050565b600080604083850312156126d357600080fd5b82356126de81612304565b915060208301356126ee81612304565b809150509250929050565b6000806000806060858703121561270f57600080fd5b843561271a81612304565b93506127286020860161240a565b9250604085013567ffffffffffffffff81111561274457600080fd5b61275087828801612329565b95989497509550505050565b60006020828403121561276e57600080fd5b8151611da081612304565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156127ba576127ba612779565b500390565b600084516127d18184602089016125b4565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161280d816001850160208a016125b4565b600192019182015283516128288160028401602088016125b4565b0160020195945050505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261287460808301846125e0565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006128ad60608301856125e0565b905063ffffffff83166040830152949350505050565b600082198211156128d6576128d6612779565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261292a60c08301846125e0565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061296b60608301846125e0565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a5576129a5612779565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129ea576129ea6129ac565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082612a2d57612a2d6129ac565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612a7357600080fd5b81518015158114611da057600080fd5b828152604060208201526000611bef60408301846125e0565b60008251612aae8184602087016125b4565b919091019291505056fea164736f6c634300080f000a", + "code": "0x6080604052600436106100ec5760003560e01c806354fd4d501161008a5780638f601f66116100595780638f601f661461034e578063927ede2d14610394578063a3a79548146103c8578063e11013dd146103db57600080fd5b806354fd4d50146102c5578063662a633a146102e75780637f46ddb2146102fa578063870876231461032e57600080fd5b806332b7006d116100c657806332b7006d1461020657806336c717c1146102195780633cb747bf14610272578063540abf73146102a557600080fd5b80630166a07a146101c057806309fc8843146101e05780631635f5fd146101f357600080fd5b366101bb57333b15610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101b973deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d40604051806020016040528060008152506103ee565b005b600080fd5b3480156101cc57600080fd5b506101b96101db366004612372565b6104c9565b6101b96101ee366004612423565b6108b6565b6101b9610201366004612476565b61098d565b6101b96102143660046124e9565b610e5a565b34801561022557600080fd5b507f00000000000000000000000063996c6ca9c92e4add5ee8e9644dbaccbe0c09a15b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561027e57600080fd5b507f0000000000000000000000004200000000000000000000000000000000000007610248565b3480156102b157600080fd5b506101b96102c036600461253d565b610f34565b3480156102d157600080fd5b506102da610f79565b604051610269919061262a565b6101b96102f5366004612372565b61101c565b34801561030657600080fd5b506102487f00000000000000000000000063996c6ca9c92e4add5ee8e9644dbaccbe0c09a181565b34801561033a57600080fd5b506101b961034936600461263d565b61108f565b34801561035a57600080fd5b506103866103693660046126c0565b600260209081526000928352604080842090915290825290205481565b604051908152602001610269565b3480156103a057600080fd5b506102487f000000000000000000000000420000000000000000000000000000000000000781565b6101b96103d636600461263d565b611163565b6101b96103e93660046126f9565b6111a7565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff87160161043d5761043885858585856111f0565b6104c1565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae919061275c565b90506104bf878288888888886113d4565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004200000000000000000000000000000000000007161480156105e757507f00000000000000000000000063996c6ca9c92e4add5ee8e9644dbaccbe0c09a173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b6106a28761171b565b156107f0576106b1878761177d565b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b50505050610872565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461082e9084906127a8565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c168352939052919091209190915561087290858561189d565b6104bf878787878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197192505050565b333b15610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6109883333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000420000000000000000000000000000000000000716148015610aab57507f00000000000000000000000063996c6ca9c92e4add5ee8e9644dbaccbe0c09a173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061275c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161017c565b823414610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161017c565b3073ffffffffffffffffffffffffffffffffffffffff851603610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161017c565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161017c565b610dae85858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119ff92505050565b6000610dcb855a8660405180602001604052806000815250611aa0565b9050806104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161017c565b333b15610ee9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b610f2d853333878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b5050505050565b6104bf87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6060610fa47f0000000000000000000000000000000000000000000000000000000000000001611aba565b610fcd7f0000000000000000000000000000000000000000000000000000000000000001611aba565b610ff67f0000000000000000000000000000000000000000000000000000000000000000611aba565b604051602001611008939291906127bf565b604051602081830303815290604052905090565b73ffffffffffffffffffffffffffffffffffffffff8716158015611069575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b156110805761107b858585858561098d565b6104bf565b6104bf868887878787876104c9565b333b1561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161017c565b6104c186863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d492505050565b6104c1863387878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ee92505050565b6111ea3385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b50505050565b82341461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161017c565b61128b85858584611bf7565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b847f00000000000000000000000063996c6ca9c92e4add5ee8e9644dbaccbe0c09a1631635f5fd60e01b898989886040516024016113089493929190612835565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261139b9291889060040161287e565b6000604051808303818588803b1580156113b457600080fd5b505af11580156113c8573d6000803e3d6000fd5b50505050505050505050565b6113dd8761171b565b1561152b576113ec878761177d565b61149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161017c565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506115bf565b61154d73ffffffffffffffffffffffffffffffffffffffff8816863086611c98565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461158b9084906128c3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6115cd878787878786611cf6565b7f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16633dbb202b7f00000000000000000000000063996c6ca9c92e4add5ee8e9644dbaccbe0c09a1630166a07a60e01b898b8a8a8a8960405160240161164d969594939291906128db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526116e09291879060040161287e565b600060405180830381600087803b1580156116fa57600080fd5b505af115801561170e573d6000803e3d6000fd5b5050505050505050505050565b6000611747827f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b806117775750611777827fec4fc8e300000000000000000000000000000000000000000000000000000000611d84565b92915050565b60006117a9837f1d1d8b6300000000000000000000000000000000000000000000000000000000611d84565b15611852578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d919061275c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611777565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f9573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109889084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611da7565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd898686866040516119e993929190612936565b60405180910390a46104c1868686868686611eb3565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611a8c93929190612936565b60405180910390a46111ea84848484611f3b565b600080600080845160208601878a8af19695505050505050565b606081600003611afd57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b275780611b1181612974565b9150611b209050600a836129db565b9150611b01565b60008167ffffffffffffffff811115611b4257611b426129ef565b6040519080825280601f01601f191660200182016040528015611b6c576020820181803683370190505b5090505b8415611bef57611b816001836127a8565b9150611b8e600a86612a1e565b611b999060306128c3565b60f81b818381518110611bae57611bae612a32565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611be8600a866129db565b9450611b70565b949350505050565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611c8493929190612936565b60405180910390a46111ea84848484611fa8565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526111ea9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118ef565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611d6e93929190612936565b60405180910390a46104c1868686868686612007565b6000611d8f8361207f565b8015611da05750611da083836120e3565b9392505050565b6000611e09826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121b29092919063ffffffff16565b8051909150156109885780806020019051810190611e279190612a61565b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161017c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f2b93929190612936565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051611f9a929190612a83565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051611f9a929190612a83565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f2b93929190612936565b60006120ab827f01ffc9a7000000000000000000000000000000000000000000000000000000006120e3565b801561177757506120dc827fffffffff000000000000000000000000000000000000000000000000000000006120e3565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561219b575060208210155b80156121a75750600081115b979650505050505050565b6060611bef84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161017c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122649190612a9c565b60006040518083038185875af1925050503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506121a7828286606083156122c0575081611da0565b8251156122d05782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017c919061262a565b73ffffffffffffffffffffffffffffffffffffffff8116811461232657600080fd5b50565b60008083601f84011261233b57600080fd5b50813567ffffffffffffffff81111561235357600080fd5b60208301915083602082850101111561236b57600080fd5b9250929050565b600080600080600080600060c0888a03121561238d57600080fd5b873561239881612304565b965060208801356123a881612304565b955060408801356123b881612304565b945060608801356123c881612304565b93506080880135925060a088013567ffffffffffffffff8111156123eb57600080fd5b6123f78a828b01612329565b989b979a50959850939692959293505050565b803563ffffffff8116811461241e57600080fd5b919050565b60008060006040848603121561243857600080fd5b6124418461240a565b9250602084013567ffffffffffffffff81111561245d57600080fd5b61246986828701612329565b9497909650939450505050565b60008060008060006080868803121561248e57600080fd5b853561249981612304565b945060208601356124a981612304565b935060408601359250606086013567ffffffffffffffff8111156124cc57600080fd5b6124d888828901612329565b969995985093965092949392505050565b60008060008060006080868803121561250157600080fd5b853561250c81612304565b9450602086013593506125216040870161240a565b9250606086013567ffffffffffffffff8111156124cc57600080fd5b600080600080600080600060c0888a03121561255857600080fd5b873561256381612304565b9650602088013561257381612304565b9550604088013561258381612304565b9450606088013593506125986080890161240a565b925060a088013567ffffffffffffffff8111156123eb57600080fd5b60005b838110156125cf5781810151838201526020016125b7565b838111156111ea5750506000910152565b600081518084526125f88160208601602086016125b4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611da060208301846125e0565b60008060008060008060a0878903121561265657600080fd5b863561266181612304565b9550602087013561267181612304565b9450604087013593506126866060880161240a565b9250608087013567ffffffffffffffff8111156126a257600080fd5b6126ae89828a01612329565b979a9699509497509295939492505050565b600080604083850312156126d357600080fd5b82356126de81612304565b915060208301356126ee81612304565b809150509250929050565b6000806000806060858703121561270f57600080fd5b843561271a81612304565b93506127286020860161240a565b9250604085013567ffffffffffffffff81111561274457600080fd5b61275087828801612329565b95989497509550505050565b60006020828403121561276e57600080fd5b8151611da081612304565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156127ba576127ba612779565b500390565b600084516127d18184602089016125b4565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161280d816001850160208a016125b4565b600192019182015283516128288160028401602088016125b4565b0160020195945050505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261287460808301846125e0565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006128ad60608301856125e0565b905063ffffffff83166040830152949350505050565b600082198211156128d6576128d6612779565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261292a60c08301846125e0565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061296b60608301846125e0565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a5576129a5612779565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129ea576129ea6129ac565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082612a2d57612a2d6129ac565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612a7357600080fd5b81518015158114611da057600080fd5b828152604060208201526000611bef60408301846125e0565b60008251612aae8184602087016125b4565b919091019291505056fea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30011": { - "code": "0x6080604052600436106100695760003560e01c806384411d651161004357806384411d651461010c578063d3e5792b14610130578063d4ff92181461016457600080fd5b80630d9019e1146100755780633ccfd60b146100d357806354fd4d50146100ea57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100a97f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100df57600080fd5b506100e8610197565b005b3480156100f657600080fd5b506100ff6103b8565b6040516100ca9190610612565b34801561011857600080fd5b5061012260005481565b6040519081526020016100ca565b34801561013c57600080fd5b506101227f0000000000000000000000000000000000000000000000008ac7230489e8000081565b34801561017057600080fd5b507f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d4766100a9565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610287919061065b565b9091555050604080518281527f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47673ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610383917f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476916188b891600401610673565b6000604051808303818588803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b505050505050565b60606103e37f000000000000000000000000000000000000000000000000000000000000000161045b565b61040c7f000000000000000000000000000000000000000000000000000000000000000161045b565b6104357f000000000000000000000000000000000000000000000000000000000000000061045b565b604051602001610447939291906106b7565b604051602081830303815290604052905090565b60608160000361049e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156104c857806104b28161072d565b91506104c19050600a83610794565b91506104a2565b60008167ffffffffffffffff8111156104e3576104e36107a8565b6040519080825280601f01601f19166020018201604052801561050d576020820181803683370190505b5090505b8415610590576105226001836107d7565b915061052f600a866107ee565b61053a90603061065b565b60f81b81838151811061054f5761054f610802565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610589600a86610794565b9450610511565b949350505050565b60005b838110156105b357818101518382015260200161059b565b838111156105c2576000848401525b50505050565b600081518084526105e0816020860160208601610598565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061062560208301846105c8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561066e5761066e61062c565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006106ae60608301846105c8565b95945050505050565b600084516106c9818460208901610598565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551610705816001850160208a01610598565b60019201918201528351610720816002840160208801610598565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361075e5761075e61062c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826107a3576107a3610765565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107e9576107e961062c565b500390565b6000826107fd576107fd610765565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x6080604052600436106100695760003560e01c806384411d651161004357806384411d651461010c578063d3e5792b14610130578063d4ff92181461016457600080fd5b80630d9019e1146100755780633ccfd60b146100d357806354fd4d50146100ea57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100a97f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b26882981565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100df57600080fd5b506100e8610197565b005b3480156100f657600080fd5b506100ff6103b8565b6040516100ca9190610612565b34801561011857600080fd5b5061012260005481565b6040519081526020016100ca565b34801561013c57600080fd5b506101227f0000000000000000000000000000000000000000000000008ac7230489e8000081565b34801561017057600080fd5b507f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b2688296100a9565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610287919061065b565b9091555050604080518281527f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b26882973ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610383917f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b268829916188b891600401610673565b6000604051808303818588803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b505050505050565b60606103e37f000000000000000000000000000000000000000000000000000000000000000161045b565b61040c7f000000000000000000000000000000000000000000000000000000000000000161045b565b6104357f000000000000000000000000000000000000000000000000000000000000000061045b565b604051602001610447939291906106b7565b604051602081830303815290604052905090565b60608160000361049e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156104c857806104b28161072d565b91506104c19050600a83610794565b91506104a2565b60008167ffffffffffffffff8111156104e3576104e36107a8565b6040519080825280601f01601f19166020018201604052801561050d576020820181803683370190505b5090505b8415610590576105226001836107d7565b915061052f600a866107ee565b61053a90603061065b565b60f81b81838151811061054f5761054f610802565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610589600a86610794565b9450610511565b949350505050565b60005b838110156105b357818101518382015260200161059b565b838111156105c2576000848401525b50505050565b600081518084526105e0816020860160208601610598565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061062560208301846105c8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561066e5761066e61062c565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006106ae60608301846105c8565b95945050505050565b600084516106c9818460208901610598565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551610705816001850160208a01610598565b60019201918201528351610720816002840160208801610598565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361075e5761075e61062c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826107a3576107a3610765565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107e9576107e961062c565b500390565b6000826107fd576107fd610765565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30012": { @@ -15208,7 +15207,7 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30014": { - "code": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637f46ddb21161005b5780637f46ddb214610116578063927ede2d1461013d578063aa55745214610164578063c89701a21461017757600080fd5b80633687011a1461008d5780633cb747bf146100a257806354fd4d50146100ee578063761f449314610103575b600080fd5b6100a061009b3660046111c8565b61019d565b005b7f00000000000000000000000042000000000000000000000000000000000000075b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f6610249565b6040516100e591906112c5565b6100a06101113660046112d8565b6102ec565b6100c47f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a81565b6100c47f000000000000000000000000420000000000000000000000000000000000000781565b6100a0610172366004611370565b610853565b7f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a6100c4565b333b15610231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b610241868633338888888861090f565b505050505050565b60606102747f0000000000000000000000000000000000000000000000000000000000000001610ead565b61029d7f0000000000000000000000000000000000000000000000000000000000000001610ead565b6102c67f0000000000000000000000000000000000000000000000000000000000000000610ead565b6040516020016102d8939291906113e7565b604051602081830303815290604052905090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071614801561040a57507f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f2919061145d565b73ffffffffffffffffffffffffffffffffffffffff16145b610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f7468657220627269646765006064820152608401610228565b3073ffffffffffffffffffffffffffffffffffffffff88160361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c66000000000000000000000000000000000000000000006064820152608401610228565b610565877f74259ebf00000000000000000000000000000000000000000000000000000000610fea565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e20696e746560448201527f7266616365206973206e6f7420636f6d706c69616e74000000000000000000006064820152608401610228565b8673ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610660919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4c324552433732314272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433732312060648201527f6c6f63616c20746f6b656e000000000000000000000000000000000000000000608482015260a401610228565b6040517fa144819400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905288169063a144819490604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac8787878760405161084294939291906114c3565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f742062652061646472657373283029000000000000000000000000000000006064820152608401610228565b610906878733888888888861090f565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff87166109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f7420626520616464726573732830290000000000000000000000000000006064820152608401610228565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff891690636352211e90602401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a41919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324552433732314272696467653a205769746864726177616c206973206e6f60448201527f74206265696e6720696e69746961746564206279204e4654206f776e657200006064820152608401610228565b60008873ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c919061145d565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e20646f6560448201527f73206e6f74206d6174636820676976656e2076616c75650000000000000000006064820152608401610228565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018790528a1690639dc29fac90604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050600063761f449360e01b828b8a8a8a8989604051602401610cd89796959493929190611503565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f3dbb202b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071690633dbb202b90610ded907f000000000000000000000000a33085489c737bc0c9fd91f866664e663e47699a9085908a90600401611560565b600060405180830381600087803b158015610e0757600080fd5b505af1158015610e1b573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a58a8a8989604051610e9994939291906114c3565b60405180910390a450505050505050505050565b606081600003610ef057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f1a5780610f04816115d4565b9150610f139050600a8361163b565b9150610ef4565b60008167ffffffffffffffff811115610f3557610f3561164f565b6040519080825280601f01601f191660200182016040528015610f5f576020820181803683370190505b5090505b8415610fe257610f7460018361167e565b9150610f81600a86611695565b610f8c9060306116a9565b60f81b818381518110610fa157610fa16116c1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610fdb600a8661163b565b9450610f63565b949350505050565b6000610ff58361100d565b801561100657506110068383611072565b9392505050565b6000611039827f01ffc9a700000000000000000000000000000000000000000000000000000000611072565b801561106c575061106a827fffffffff00000000000000000000000000000000000000000000000000000000611072565b155b92915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561112a575060208210155b80156111365750600081115b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461116357600080fd5b50565b803563ffffffff8116811461117a57600080fd5b919050565b60008083601f84011261119157600080fd5b50813567ffffffffffffffff8111156111a957600080fd5b6020830191508360208285010111156111c157600080fd5b9250929050565b60008060008060008060a087890312156111e157600080fd5b86356111ec81611141565b955060208701356111fc81611141565b94506040870135935061121160608801611166565b9250608087013567ffffffffffffffff81111561122d57600080fd5b61123989828a0161117f565b979a9699509497509295939492505050565b60005b8381101561126657818101518382015260200161124e565b83811115611275576000848401525b50505050565b6000815180845261129381602086016020860161124b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611006602083018461127b565b600080600080600080600060c0888a0312156112f357600080fd5b87356112fe81611141565b9650602088013561130e81611141565b9550604088013561131e81611141565b9450606088013561132e81611141565b93506080880135925060a088013567ffffffffffffffff81111561135157600080fd5b61135d8a828b0161117f565b989b979a50959850939692959293505050565b600080600080600080600060c0888a03121561138b57600080fd5b873561139681611141565b965060208801356113a681611141565b955060408801356113b681611141565b9450606088013593506113cb60808901611166565b925060a088013567ffffffffffffffff81111561135157600080fd5b600084516113f981846020890161124b565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611435816001850160208a0161124b565b6001920191820152835161145081600284016020880161124b565b0160020195945050505050565b60006020828403121561146f57600080fd5b815161100681611141565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006114f960608301848661147a565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261155360c08301848661147a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061158f606083018561127b565b905063ffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611605576116056115a5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261164a5761164a61160c565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082821015611690576116906115a5565b500390565b6000826116a4576116a461160c565b500690565b600082198211156116bc576116bc6115a5565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637f46ddb21161005b5780637f46ddb214610116578063927ede2d1461013d578063aa55745214610164578063c89701a21461017757600080fd5b80633687011a1461008d5780633cb747bf146100a257806354fd4d50146100ee578063761f449314610103575b600080fd5b6100a061009b3660046111c8565b61019d565b005b7f00000000000000000000000042000000000000000000000000000000000000075b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f6610249565b6040516100e591906112c5565b6100a06101113660046112d8565b6102ec565b6100c47f000000000000000000000000bdaebb453f06c5dd1f9fab5dcb29153032c6e83d81565b6100c47f000000000000000000000000420000000000000000000000000000000000000781565b6100a0610172366004611370565b610853565b7f000000000000000000000000bdaebb453f06c5dd1f9fab5dcb29153032c6e83d6100c4565b333b15610231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b610241868633338888888861090f565b505050505050565b60606102747f0000000000000000000000000000000000000000000000000000000000000001610ead565b61029d7f0000000000000000000000000000000000000000000000000000000000000001610ead565b6102c67f0000000000000000000000000000000000000000000000000000000000000000610ead565b6040516020016102d8939291906113e7565b604051602081830303815290604052905090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071614801561040a57507f000000000000000000000000bdaebb453f06c5dd1f9fab5dcb29153032c6e83d73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f2919061145d565b73ffffffffffffffffffffffffffffffffffffffff16145b610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f7468657220627269646765006064820152608401610228565b3073ffffffffffffffffffffffffffffffffffffffff88160361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c66000000000000000000000000000000000000000000006064820152608401610228565b610565877f74259ebf00000000000000000000000000000000000000000000000000000000610fea565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e20696e746560448201527f7266616365206973206e6f7420636f6d706c69616e74000000000000000000006064820152608401610228565b8673ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610660919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4c324552433732314272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433732312060648201527f6c6f63616c20746f6b656e000000000000000000000000000000000000000000608482015260a401610228565b6040517fa144819400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905288169063a144819490604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac8787878760405161084294939291906114c3565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f742062652061646472657373283029000000000000000000000000000000006064820152608401610228565b610906878733888888888861090f565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff87166109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f7420626520616464726573732830290000000000000000000000000000006064820152608401610228565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff891690636352211e90602401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a41919061145d565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324552433732314272696467653a205769746864726177616c206973206e6f60448201527f74206265696e6720696e69746961746564206279204e4654206f776e657200006064820152608401610228565b60008873ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c919061145d565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e20646f6560448201527f73206e6f74206d6174636820676976656e2076616c75650000000000000000006064820152608401610228565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018790528a1690639dc29fac90604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050600063761f449360e01b828b8a8a8a8989604051602401610cd89796959493929190611503565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f3dbb202b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000071690633dbb202b90610ded907f000000000000000000000000bdaebb453f06c5dd1f9fab5dcb29153032c6e83d9085908a90600401611560565b600060405180830381600087803b158015610e0757600080fd5b505af1158015610e1b573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a58a8a8989604051610e9994939291906114c3565b60405180910390a450505050505050505050565b606081600003610ef057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f1a5780610f04816115d4565b9150610f139050600a8361163b565b9150610ef4565b60008167ffffffffffffffff811115610f3557610f3561164f565b6040519080825280601f01601f191660200182016040528015610f5f576020820181803683370190505b5090505b8415610fe257610f7460018361167e565b9150610f81600a86611695565b610f8c9060306116a9565b60f81b818381518110610fa157610fa16116c1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610fdb600a8661163b565b9450610f63565b949350505050565b6000610ff58361100d565b801561100657506110068383611072565b9392505050565b6000611039827f01ffc9a700000000000000000000000000000000000000000000000000000000611072565b801561106c575061106a827fffffffff00000000000000000000000000000000000000000000000000000000611072565b155b92915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561112a575060208210155b80156111365750600081115b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461116357600080fd5b50565b803563ffffffff8116811461117a57600080fd5b919050565b60008083601f84011261119157600080fd5b50813567ffffffffffffffff8111156111a957600080fd5b6020830191508360208285010111156111c157600080fd5b9250929050565b60008060008060008060a087890312156111e157600080fd5b86356111ec81611141565b955060208701356111fc81611141565b94506040870135935061121160608801611166565b9250608087013567ffffffffffffffff81111561122d57600080fd5b61123989828a0161117f565b979a9699509497509295939492505050565b60005b8381101561126657818101518382015260200161124e565b83811115611275576000848401525b50505050565b6000815180845261129381602086016020860161124b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611006602083018461127b565b600080600080600080600060c0888a0312156112f357600080fd5b87356112fe81611141565b9650602088013561130e81611141565b9550604088013561131e81611141565b9450606088013561132e81611141565b93506080880135925060a088013567ffffffffffffffff81111561135157600080fd5b61135d8a828b0161117f565b989b979a50959850939692959293505050565b600080600080600080600060c0888a03121561138b57600080fd5b873561139681611141565b965060208801356113a681611141565b955060408801356113b681611141565b9450606088013593506113cb60808901611166565b925060a088013567ffffffffffffffff81111561135157600080fd5b600084516113f981846020890161124b565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611435816001850160208a0161124b565b6001920191820152835161145081600284016020880161124b565b0160020195945050505050565b60006020828403121561146f57600080fd5b815161100681611141565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006114f960608301848661147a565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261155360c08301848661147a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061158f606083018561127b565b905063ffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611605576116056115a5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261164a5761164a61160c565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082821015611690576116906115a5565b500390565b6000826116a4576116a461160c565b500690565b600082198211156116bc576116bc6115a5565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30015": { @@ -15228,11 +15227,11 @@ "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30019": { - "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47673ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b26882981565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b26882973ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b268829916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3001a": { - "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d47673ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f0000000000000000000000002e04d3be9ae8942563fad403c987f4e53596d476916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", + "code": "0x60806040526004361061005e5760003560e01c806354fd4d501161004357806354fd4d50146100df57806384411d6514610101578063d3e5792b1461012557600080fd5b80630d9019e11461006a5780633ccfd60b146100c857600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061009e7f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b26882981565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100d457600080fd5b506100dd610159565b005b3480156100eb57600080fd5b506100f461037a565b6040516100bf91906105d4565b34801561010d57600080fd5b5061011760005481565b6040519081526020016100bf565b34801561013157600080fd5b506101177f0000000000000000000000000000000000000000000000008ac7230489e8000081565b7f0000000000000000000000000000000000000000000000008ac7230489e80000471015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a40160405180910390fd5b600047905080600080828254610249919061061d565b9091555050604080518281527f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b26882973ffffffffffffffffffffffffffffffffffffffff166020820152338183015290517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1604080516020810182526000815290517fe11013dd0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000109163e11013dd918491610345917f0000000000000000000000009b994b75f0b70d4e6b27fa358c12fdfc7b268829916188b891600401610635565b6000604051808303818588803b15801561035e57600080fd5b505af1158015610372573d6000803e3d6000fd5b505050505050565b60606103a57f000000000000000000000000000000000000000000000000000000000000000161041d565b6103ce7f000000000000000000000000000000000000000000000000000000000000000161041d565b6103f77f000000000000000000000000000000000000000000000000000000000000000061041d565b60405160200161040993929190610679565b604051602081830303815290604052905090565b60608160000361046057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561048a5780610474816106ef565b91506104839050600a83610756565b9150610464565b60008167ffffffffffffffff8111156104a5576104a561076a565b6040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b5090505b8415610552576104e4600183610799565b91506104f1600a866107b0565b6104fc90603061061d565b60f81b818381518110610511576105116107c4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061054b600a86610756565b94506104d3565b949350505050565b60005b8381101561057557818101518382015260200161055d565b83811115610584576000848401525b50505050565b600081518084526105a281602086016020860161055a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105e7602083018461058a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610630576106306105ee565b500190565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000610670606083018461058a565b95945050505050565b6000845161068b81846020890161055a565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516106c7816001850160208a0161055a565b600192019182015283516106e281600284016020880161055a565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610720576107206105ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261076557610765610727565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000828210156107ab576107ab6105ee565b500390565b6000826107bf576107bf610727565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a", "balance": "0x0" }, "deaddeaddeaddeaddeaddeaddeaddeaddead0000": { diff --git a/params/config.go b/params/config.go index b470593d9f..d35c0ce4ae 100644 --- a/params/config.go +++ b/params/config.go @@ -32,7 +32,7 @@ var ( OPBNBMainNetGenesisHash = common.HexToHash("0x4dd61178c8b0f01670c231597e7bcb368e84545acd46d940a896d6a791dd6df4") OPBNBTestNetGenesisHash = common.HexToHash("0x51fa57729dfb1c27542c21b06cb72a0459c57440ceb43a465dae1307cd04fe80") - OPBNBQANetGenesisHash = common.HexToHash("0x580889547f6ac1d303d01d028f558d379284173e5ca1ebf38dbbafdef3e5d81c") + OPBNBQANetGenesisHash = common.HexToHash("0xe182e685b1ec05ca55f2374cb3a190d1ae8f3e196acb55a69efd61536fc3983f") ) const ( @@ -50,7 +50,7 @@ const ( const ( OPBNBMainnetChainID = 204 OPBNBTestNetChainID = 5611 - OPBNBQANetChainID = 1484 + OPBNBQANetChainID = 2484 ) // OP Stack chain config @@ -225,7 +225,7 @@ var ( } // OPBNBQANetConfig is the chain parameters to run a node on the opBNB qa network. It is just for internal test. OPBNBQANetConfig = &ChainConfig{ - ChainID: big.NewInt(1484), + ChainID: big.NewInt(2484), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), @@ -250,11 +250,11 @@ var ( EIP1559DenominatorCanyon: 8, }, Fermat: big.NewInt(0), - ShanghaiTime: newUint64(1714385400), // Apr-29-2024 10:10 AM +UTC - CanyonTime: newUint64(1714385400), // Apr-29-2024 10:10 AM +UTC + ShanghaiTime: newUint64(1714993800), // May-06-2024 11:10 AM +UTC + CanyonTime: newUint64(1714993800), // May-06-2024 11:10 AM +UTC // Delta: the Delta upgrade does not affect the execution-layer, and is thus not configurable in the chain config. - CancunTime: newUint64(1714386600), // Apr-29-2024 10:30 AM +UTC - EcotoneTime: newUint64(1714386600), // Apr-29-2024 10:30 AM +UTC + CancunTime: newUint64(1714995000), // May-06-2024 11:30 AM +UTC + EcotoneTime: newUint64(1714995000), // May-06-2024 11:30 AM +UTC } // AllEthashProtocolChanges contains every protocol change (EIPs) introduced From 536ac5d65e4d27043c10b01cb2fd2f07e3891185 Mon Sep 17 00:00:00 2001 From: redhdx <136775144+redhdx@users.noreply.github.com> Date: Mon, 6 May 2024 16:47:16 +0800 Subject: [PATCH 222/223] feature: add opBNB V5 bootnodes (#104) --- cmd/utils/flags.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index ea4387bc5f..4c1b799daf 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1186,7 +1186,7 @@ func mustParseBootnodes(urls []string) []*enode.Node { // setBootstrapNodesV5 creates a list of bootstrap nodes from the command line // flags, reverting to pre-configured ones if none have been specified. func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) { - urls := params.V5Bootnodes + urls := params.OpBNBMainnetBootnodes switch { case ctx.IsSet(BootnodesFlag.Name): urls = SplitAndTrim(ctx.String(BootnodesFlag.Name)) @@ -1199,6 +1199,12 @@ func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) { } else { urls = append(urls, params.OPSepoliaBootnodes...) } + case ctx.Bool(OpBNBTestnetFlag.Name): + urls = params.OpBNBTestnetBootnodes + case ctx.Bool(NetworkIdFlag.Name): + if ctx.Uint64(NetworkIdFlag.Name) == params.OpBNBTestnet { + urls = params.OpBNBTestnetBootnodes + } } cfg.BootstrapNodesV5 = make([]*enode.Node, 0, len(urls)) From 83bf6cd99f15626b1718981c41fe2190711367e2 Mon Sep 17 00:00:00 2001 From: KeefeL <90749943+KeefeL@users.noreply.github.com> Date: Mon, 6 May 2024 17:30:20 +0800 Subject: [PATCH 223/223] add bls example (#105) Co-authored-by: Keefe Liu --- core/vm/contracts_test.go | 40 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/core/vm/contracts_test.go b/core/vm/contracts_test.go index 2557271736..9fd4c08710 100644 --- a/core/vm/contracts_test.go +++ b/core/vm/contracts_test.go @@ -18,6 +18,7 @@ package vm import ( "bytes" + "crypto/sha256" "encoding/hex" "encoding/json" "fmt" @@ -25,9 +26,10 @@ import ( "testing" "time" - "github.com/stretchr/testify/require" - "github.com/ethereum/go-ethereum/common" + "github.com/prysmaticlabs/prysm/v4/crypto/bls" + blscommon "github.com/prysmaticlabs/prysm/v4/crypto/bls/common" + "github.com/stretchr/testify/require" ) // precompiledTest defines the input/output pairs for precompiled contract tests. @@ -411,3 +413,37 @@ func TestCometBFTLightBlockValidate(t *testing.T) { require.NoError(t, err) require.Equal(t, expectOutputStr, hex.EncodeToString(res)) } + +func TestBlsSignatureVerify(t *testing.T) { + msg := "test_bls_signature_verify_precompile_contract" + msgHash := sha256.Sum256([]byte(msg)) + + privateKey1, err := bls.RandKey() + require.NoError(t, err) + privateKey2, err := bls.RandKey() + require.NoError(t, err) + + sig1 := privateKey1.Sign(msgHash[:]) + sig2 := privateKey2.Sign(msgHash[:]) + sig := bls.AggregateSignatures([]blscommon.Signature{sig1, sig2}) + + input := msgHash[:] + input = append(input, sig.Marshal()...) + input = append(input, privateKey1.PublicKey().Marshal()...) + input = append(input, privateKey2.PublicKey().Marshal()...) + + inputStr := hex.EncodeToString(input) + t.Logf("input string: %s", inputStr) + input, err = hex.DecodeString(inputStr) + require.NoError(t, err) + + contract := &blsSignatureVerify{} + res, err := contract.Run(input) + require.NoError(t, err) + require.Equal(t, big1.Bytes(), res) + + input[0] += 1 + res, err = contract.Run(input) + require.NoError(t, err) + require.Equal(t, big0.Bytes(), res) +}

    2. Rwe5mQNduVF*9o}2p z-LOG<^CAj$<$Pg&TQL-2*YVt-*q%_4kmkRl7NeIS&Gz=6v*;}7vF|SfKG&>}+$g0^ zJkq+nZw1RjCF5%F+a=YMCvd<|6t4f30@^Y^A3O}3jpWu7ULpiuWBYocJ*mC1lB7Ew z@!(Ekq5(5SbsZr#N2ht+$qw3|_(jgs%oI9iknWGh;S%6D98Uy=?HbO&7w1H!28O7x zhd2RPOC9+DVaFfnq-=eP+=l%NqR_oR?)?nJiFd@rcd&90T95L3Dp#z^u2g(`7iUBp5L<&HuZ=A6z1k*naI*5Drm=)kla8+edb-m$HJbBL{AbR zV@g;#|Pa=#e zJcP8t3&`XSFBh->pq%y+ng!m_)cCKy_^$yC>CE`gC)N}P4>FniYGp6BOV(*`MdmEQ zwJYoan})-QdMSk#=V8MPngt=C^(anD!uDNgc-M= zuv@ioFJCZ$aqDxX+9Oo7whS*$%irl4h?KvWMk42N_mH{UyDxl*;$6`hS^(ZhdEe3m z--3w-0MGcDkiUe?*vx#A$?(=la>&k8h{nrwyePgI1NiE>lsp1-odnt?bvCyxO>)2- zJm`g|H?>S$hj!Q9N2Sd}F+b|o+C63SdzPTL%z`Xcu6xmuQrx-i#%0C`ExR%AWS8WK zFMH}vRalA*xOSYh=PI0lIvqcxCo*$&L}s4I%tsYjhdv;4b|Q~PljQ#JT%W1lrcefe zvk7g9I4941J>fqTW~Ow6e>r(RnIVa5&na}~PAP>_ZqC92@i2R$_lKe-4~I1hG1>xr zhsO)pf>2x?u!+?vIj8;&13oUV>>5NqSpFQlj3WzHI?+=st=Zp%ihK4Mb z!<`OFL!K|6>3w8<7)1Oq0~M{Pro>S^Y-U@v*U24|St=0hG5};j{8=c5Vc(ReY3pUd zHdZn@N;c?l!1P^GJBqX&gk_%aBoc*MEtxFizl_GdvVk*oKhHFWv++iRuE+V{)2q)Y zT!{*u{SBY>51{Z{y%1@c$=jc`&7nWkvwbh$|KG~0YTI{!repPJM1mr!!vRGG@m|!a z4JCGGR%K6T%Bauas_NKSPb)~nZQ##S5fT4+0%kw^#xhnP6EQS&jw51ipZ?SCV$;$b4qfB&J7SN8x}JlrH6ZiY@`dyHDIGuHvXBVWQ`i}JWoo*>g#Oc<#m zt+X03vL#mFR!Do%%NK@7$f>H4YDbgldS+DB!%iuf#&UdiRw+D};!cI3?&h!?fW#JZ6VO5#Ww6f*oMYqef_uRM;qvkh;>S-kyl zEb<0I;p^?N>Mxleg(b9QqNNUILy4Py`)R=+uR0_D=q2tkZ1jJ)E~K zcN6luz8$CVFA^!?Xd;rfx1#hWe>UtvHkYuhk-r(!^YN z)SMK252lOD-9bfKTt-yV{t@WS@dkJr((vQ}2s3+;_wt@d3SYzXm+nRBv!7t&Yt?WJ zBHfIvSbiK`%W~R@?a8_a*W%vz8Z3p)sog_kc81{Hw2Tet+KNk!S>%8}Seik|_Gi#0 zo5QlGZX>FTsO=pVV+@WzjJ?d)sskWdb^Hs+4fkvc1#J(9FnGM-L8`81L?g;u8m#t&_lt)Th)NjKuPd z6VaPq#tR{D95x$zdO(6JnT6@O!V1VlcI`l+rp!0{9Ho*&YAJyF*FC})0{Vx2L9Sum zzY!YuoUNsjob{M&b@|&+(FhmqecydTxw;R;BmeaB!(e=*w=>D|mi7{<>fUP*r-476xSG%n8#-Ukrt8N9~r?W!Bc}BqQ6b_$DAE+=p7ojjSmCG4GS{&nBV&O$TVrXAHvF zW0@@`lOauzX8*B|9u5&;Y?r)!`yj$E)E#r3aQzTky!{65ocgm#TkAU)csTM6u3(+& zUdMK@@{`g)iCwV!)JP~?gx+H+VMt{b@`iOfjj~bY0?La+4gN*}znge&k!>`uFV7LU zruk17@lRKZ1ZAkA$h!wYu9-Hgr-jO}3Z@Sd4@b!j8o-84Z@j2A%k_1DwSm@gWZfAv zSF}>imJKtqalUIvnYS6!eEvpV+HObNhntMRs;h2sUveP(rN?+^oL;2MjYKxw7+z#y z{9lK#DXDBwb=dbWSe1iL!Ts@Da{72*&lj?h+##qm;N@&oYG*^q&AIkd7b$06BCcl_ zgv6qp#W+LWy)|9i;l(q~2={|F!JA;UAB1xi-6Wi8+dk*mjr};L5nRJqIF&q&#VTiJQNNqI7(ufGi#h4yIk~PMu3GaL^myls&}Y*vgz?Qk zBKPXs)WjX~Cy+J=tkH?Q@e`5OPH!kG7+JIqzwPa}GUEC5NOH%v%4@At2Z*TpY9&0` zpIXW|a(BLT0^sG0T84CNhB98~Z$ee{c`WD3(dVE^2`SbD-Lw05yRU`La~fgodVdhit8g5 z*u;Hkfk|M6rr*y9H;3flv*?C>o3QvkM3 z_qRLRb0+7e#`};3WoO2Ojw^x2x z7ml%b;%LO?S`5%J8dJ*hYlk@%+zm}EV{G@d29g-C7?ug375C#8wq};U?hb=(gWF7w zIjEju1M$1VdtQYlSU@>oC1qIl;u>;V%;EpaKXpN(=@~2)SZ6kyt%NuVqjK{mmY#>z z7)5;pQQeT@n*c3HtIH|5Dhk<~RP!qA5e(3mT>`0caUworVgi96X?!{<2i8_%i_%md zzNzLg-`GSn4qwXAr0ojoGgl9J(*{9@z5!)lt&fH~cif@Cj!fPc z8^X6+6-BJzMcU#u#a80Fu(Y5Q)B&vCK$kI|d=3CvgMipvgG!sU?k(#CkgekmjtjXw z4aB4OGW@jdGz!UfhKw-nUp>-|SLmbzKUhqaZJ}maNyXRsc--rGOZ2>sC^=>i zp1pYfhW(H3h)yZ)BGq0a+srn2QT=sSQ9BCzmB)>xa(%JvC3!D62@AIt;)5mm!I&2u ze@wdmKYL>eJ#ukeilq>+eTA&lr%=BSs3KR_AL01?+1Lr3n%Br8C;}@FUgU)oEk=(P zqsNe)9cwXD>?jtZE|^TIn;*hdL+9`Hx%j@DxO7!Cz8iKlyNe4IY#q#g7^pBHRk_Lt zrnrF}|NK#yl6jEeP>LMK<6c@pc9Fd7ouZH6HX}sYPRyy>-u;dvJ4OJF$?se{WNZ{j z-KX@z*f^(%9=scPiqajs#*_=yo?+t?+19qbYmM2`D4siNTmZa+)R1NG5%&0YiGlG5jJ4p#`qOy;5Z5BamuzRe z<><)5?Zmi;Kn2kBo~DZyJNzSYPfKS3UCPd5$^K3t&g`evhh)N!?II<)vukXxEp<`S z>v$^#ypx3L!pc!^e0=Uf$`(FI==l#X>Bi5-A=GTX!=VdY^iljE>_*bs1U!l0rS_pO zp?9V;k_sG1;kEN+ADPN`!_FqDj(MTAbnlZuZJ*TS zy>N>H<}s*f?=`eW)0k(^xf3qswfsW9{WqbA?h{J#Vp8hhOFXY&OE9-Cm?TUnW)!e7 z@(r^aYRktkup`U%RC!5__of3^K&D=`aT|WyJ=W?Ct1mSH7$_8QQASa<%)X?0<|C{q zS&gigCJ`7|OWQM;3^+p`Re(`weKknxLT!#Qjp5kIo)>t`)OT+fy+}y{p;el!B zS`(-fG;3^u-u~xDMbWRmMHrb&@RA)6h)nsB$MHLCFWaGrYYoFKRq=Q)#U%+WwBclbD+8eJ zZ3t(7uX>ADWmI^!2&Htv3wQwv&W zz8emMqB3|RN@(93Vd`fVW!Uyg^oN%7T$n-Cd%KK)d06XBiU7fuKW#@y)j>64sic3yNATlDQsl5`~`Lg|0LO}6^&h1 z2QTAqwZWRTi))A^&W8;~h6OwNb@geCY8x&lD8!{doW!LW6yA$hs@^3_Ax5neqt;_n zoo&Q48b3IK@ijk11D!gfcisEXgsCb){gMjNy8{MJ1n^IwftQ@{&Lb&X0iG5`zRf{d z@jH6So{(t&MhQL7jO+aJ)^fUvC2L;D^C(apD+WS)YsG z&dJ^yfwi3dY$A)|`S>GFzyx+!o#1sWR++=`|&?8tu!DL;m6{>i@tVFAetK1#etVv4ck;dTt}in|4&HI!sL# zHBvx|k`nfmU~IMqV*V}i27XZqnwG3?ze85%%Lg$g0Mod4cVWg^_zo8o66ZwG8$D&* zjlE6@W!QmCDf4wSI-?m*DRFQ<20YVM#)(sJF!!Zfz7e!kf+O^9H6_$ti#WYwN3brEybsC8Twm8SW@wsSo)j{ZT`eG z@tuUD<~IYWXIVDh`v~X;KYM5*o;@P}-Z#f(Z^T9y@+-(ViCUH)LMKtrnxC2Z22*ISxX@kAHA=zU`dxU(%`9AfAuvhXd2TO*mUYP|2As7! zPq0jl?%685q5f^=OX^93l(K~yp4NV_ym&}k3*bt*$M*uuu$H%?c!yoP5bDPFt$vT>4QJZ&{yJv~?(>EZL=x*U%@MlaTMJFSnvgC%3@iH{6!d5Qe>;9e zGbN8&o*Na;I)>i=?HFwO=Q5O*01R84D@6zP>Cp}#Ocy?1RsmPbVsmPp-%P67N!f+G`Gpp4LZWC}=F*ScO40wM<7Rv=#l9Mk zo4?8^Wh(Ezev7*+1Z~DhWHe()?=HW9oWm?Yk{uwc&PS4e;u(B6@H)4xB@DOf$+`*i zoE-yJA@n`WyJ~%i+kitC2hK3L-8zQJ0pmaY>MO+27gplvOA5{4eRWVv2b}Hbu3c7$ z7E9eiVBOFH;`(>Q_IuG8+ zybcA)_-AL!JEYr|$-I=@w=#w0cWty>$AZ!xG7Na$m|7p4kL)%tDQJ91_5Wxgl#Wf| z)LXea4jFItw#3R6wOgbbqa)|d0$<1N(^_<*XW>s6xPwAT{Me=_ZS@|q&eR&0nzr5r zSp?vS$9I>nLcANF%*u(c_-yM~Eo==L?Z{ip!ms`mG|-B{s+Vi{w@LW_2}!si3|g-VlIRfGCrprLBlSOM(3-a zF@W#5;Q>HW@r@~nDSozwQ`;_Y!P0Zi3m75M4uy1f>?g=!O}c`k#ipcsx=_{tglG0a zcm4Yh4LB5nVe*e7=f4-D1FDnPkV@pUTf!4e)3h^INY%{Rc4kzsl@>9cQ;QG=nXChu zm3C2s`^GbP^i^j)5o*l`DTQBO6B#Jj!U*F*mY_e4or{XaTkQV@CS81LBXP3Psh3S= zIagYx=>ym7Wd&J=AqZ3S5vy}d+hrLbt|RVJl9feo+mcXhuS*tobDCB z|C(H}nUV-PM_z?zf!KI$xh&h^kb3Q14C2seTrrdw1a)s|$0*>$*G-Xgz=}=)SZdQ} z5Q4)``3v&Hr{6Diuf#h^`1sy%N`BlCH)p$3w)`A6sLjgk?4{D%&k+nFK{Kx5$)+Uc>V@(xoM+o2J6l`0DBfk)@BvuCW z>Tw#1t9F#prLAm-xv}~hk`A32gwQb2RUu9;6ekynlZ&bO;BpLl?Mxab)yFjR-@8$A zrJ&{&Xq#g=t_IX-*GWw79+c6KJvHannZR&42^%@8ZoAdYNVX+DUw{mIVJLm?N^ z1MNwE#Tb6eap1HyqAopi5!J7Y7eKX!ZCq>jlCHav7wid}jq>q~Ht7G1fmZkgYP4c03a)6u-Q{j$YA)>4Q59jIf%*ilI|U+2vS~#j z3A|KuZfs}n@qo>&2CBLifT-wfR%)tfOu1vh?>11EW22?2^)QtC4gTM-threpEf(`A zc*)E+>{dV-&w1iSxFIWKBQ6jq~>3@rHX zP{r=y&j^gVcD>qw7?wcpvZ11ZUv1K@cgHs4{rn{S#gWgc(~Q%Fzw$!W5^GQcx$R2XuV3QPzN97^sm}U4&aK^YEN693~;>1 zBldrPFfIbafn6aX*wMHK+@`MNF$Eg~1}2{|j)6PJcYJb~kZ}ZI<`C9}3z*UO8W;}FVH8=W+-@%cu3UQkmr;c7}tScQ!q;9XZ$4y zv1?QI%a+y1>rypXi@yNPU&~+6wC8^A=76#6G%nQ2Nrtm3k9TnK{1hA`sq7kDP=R`r zpc*l-RT2`av^p?&ue_EQdyuE!SdG}1Ww|yOn5AZCc~uf3W%40 zW7C)?R!plUD8(&0RbhhRtY4Q|yZS;3gXR%X&7b5pHUzXURNqskAY#B|iuGQHo7oE} z;g7M%nGx_8dZ_DG3)EM)9G3pA5UJia7hPlKM%s%><{}H&brx13#QW<1+=tgu&9Sni zf#XnnuSrJq5at#iUB_vc(@dTj8kbZ|pukQH4z0d|-){30-*CNi4_q+?sfV3Xm_mKl zcO6v9-~Ob?GqA`d^-RZ=LC#fQYJ%&A({miWq4C(J58>pr7TDJM%U5AFW=S-z7_tfH z-Oc8nJNJRB%W6Q#)aK{Wu={aT9(oQVsZDi|-7F}ubSEcid+rg^Yt16jslu-bCC=yV zw$!{On(bjp?uG(h@TpY_i?&Am9$6Z@-NMW+{7ZqttoLKL$KoZ3D@lnvVZ?XiRxkxR zoz)O^^XbkHFuq>0qAMXBH7WI}_hegvfcZ1x|YZq}ZkB(EfSjg?yQ!4|yYTLaK}k z`Hh<*i=Wd>$?st-rnw1RQ<=2HRY-v*Z;-VvQKGsDl6$-xgRpg%4=`F*zI7|qHo>?{ zumxu$&wDi9w3@^)Mf3d`LQlC9Lj5;z`qucGQRFf{7wa~R?5{^7-owThUAYZ@&8#rD z^m}39VSyU9kj`b`rR%;XW+pT;HjE+9bDsdpeY-}OhKkn>cw9p@IR276gD9qq$-`-IW9+g8H(4sm z>oJrEqH|9>fTz{u)+*YJ=P#ms^TTEFDi4@jNjB21I!y74gVBR)N^o_h&h8BEtWNy0 zq+&Y*yDqSCCCf&)E}91RNt6rDNThyEDRC0-Gnz+xS&1)j0<)Q-r%Xh{V`gn&Y|h{W zT_Ulm9}2);v+|U}9Js&LW5X{1r<&dt@X=$GJH|C|$}VJ1h-V)C#!>L!)?lF092%H3 zdeUON@VftzyEAB(EXMu=YZOO8bjhX>)Uw|{c-!?ckO`cd_-$zfq{$)wH?D9*yPJ5W z@jd{W!AErq@-i6!OHnv!gVW6jO3E9BDRB_X`yk>~3%8hCK!T7n`o6n_ZzW!Sfb1Qj z3o&_}kjJomGN%05TIACWX1?w{rNGx!ND#Ip7hMrJmBP?9QT~``%4Jkc>NadLgk`MAJ+nIOi zGLrWl_3Q3t5P0K`tXTaK5&GvNO~r~QV#QOj;+a_S9Of~-3(&E6W#h)Uq_YE0NEeS~ z2-W?=!1<{GFRq&9ry!NDwW0#Q-|?bwC%lSL*VgB8Z}ogRLf<-&l6!teJU>fe*1ga; zzdaPItisK#o)q1Sq4emQ6iOqI*4ee0vAK1+BepMK_umH)J1~krnJ~e~0ZNL4)Z!*e zzG6V!=(HdTAbjYslU8Ag%gzxr~@$z3;*ZYqV7k7p%R}8&Sa=!$1I5NR6}p(em;&injE2FrzF6cfClWkvSuExeE5hCMef89 z=85N=0Ww8-hU;9j2ip)PR6<-8j8JdN`uPLTDnlNRXe*apEE6?oPIbhEPsI7U6r-W6 zPD`aC8r>C+5iBZ5Q#y*99WiGa-Zl-Ow0ca~J$^-2=eb**&qJ#Yhxjh*=i|w zHc(*_z&Px8s1PRKE?|kmv!0as71py+R_<;bn8+pxGIu5F z0w&MDme@gx|He_c?D9^)(T;=eISO;D4=H7M=Aqc*$>?0BEu^IIDv z4Qy|Nn{zvuBHJ?k*BN+B*$(v8;80xkDN8W#*=Er`ZkR{57TJ8(;y52$Ozj=uZ+q=M z#Se{j@pxmsbn`{HAGNzWHU8dJg|UM~$N!!&?&d7l|PVHO!74>R%e z_ix1^G&x_N!fK*ug` zyW=)MR)ZxSc*do^pyZs|Xyplzsu7Gf)c@-s^Ygu4=RrJeCN;Q-!(^$^a~gbtp@@^w z4SI*r!BW*!3i-e@ENS2ZAXNH#5Cb1oO^gB~cuP4Neg&K1m9CVoUV`1AEbRrpsWuoa zWf|(b#)j+M)n-P%hACw)Ovmd4NHAfV6!3R?H?vV<%Pzsy6;~;)Zsh9fgjf2^n+h?h zL`(wmn3|fwh-%e7O!PNFEKv&-+DpGx7Tse-_c-cyq7QboaZi0wyvAGuX0hfzoMaj5 zVaAvnaX;IiD^aG}WR;l%V1IXXkF3E7YBzxmp+h|;@>OjZUiubwMHs7U#hkqs8VkHA z?w*EX>n%5mujuwbeY^QbQwm%ViG+=Y0zZZCkqKly`{=I$OZeIgMn9Y>&!V=}fpqJd znmGUkNdUxB4&`bmhJQlFjL`Z@6DyNQ>f2>I=9VD}zOu!xLt@uqib!RSM=l(}*^ft` z8a5BZr1WtEigargV6~Zv~>Y|bfYCg+PulEL4LaSq!jY;u5$&s}v{qP;oN= zNYi_yU3gqJ70Fkq6Am!pR_Fus60Nrz&&G26^elE1p>suC{Kt0ui4DMVq_@yr?Ba*W z2J887C9M?|#GM4?Jk0YDq-;}vfJ8CRrCPwW3*oiPx#$} zieI|{$=7V4hEeJB-z^hHjXB0N{@i~MZE1v_C4xbr|`=pRA$a26Bmp?Vy z&eY(m0hHs+ypo?VYV=Pvg|LA;8k^S?*^p7AZpr;&scC$j86LaA>~%8L zYtNgibqgcKrtWEh2e&ye-wHZ`yu8oDI&=g%#4>;hoAUvox}OF;;%8A`5}(}Q^sN&7 z%&Z@SQSi4eknB%Il2$Op1D@8L8^Fcf-QZ~t6f*^CSR5^-ichSq=e_uE18|yvl&X4t zjeCoPiEWtI7BR`MTcfFG55UO8wzqip?UDdSoZsPiS%`-~h`KVup>r99Fs51`e0!o9 zWx1cmWAnB3rK&&4sW+2SVbKb_^RIx&C>SfIH7U{dC3l?5eMYG2Z?xuz1=QFGlpJw#_ci$*;MhYe5gq^s#{ zDw=dOF>#hCEQ3AZCiHuO`1DB&5W1-YkULE6h|X&R-*0|#?A0jpJxkE^K91{eihnst zwsWJrTicPo_%n{RvHDY&^FLL=%l}mE+{V0O!#4O_D<-V;H@k87i>2$t()IYa0ZOEm zkgG~3?^~^9F*HjI%_hA$PSMLCHxM9yMR!%-4%<~{ff_xx#RZ16ItiM9T&Cyq7vL>M zoV&&h*W88f_(03coe{c^e#p?&=H>%Dgr8!xE&jK^5f*nTM3}ykjgo5HkWw^QEE+5k z4VI$o$G$NY3HUS9iUjjsr2pxx5Nl?NHM7K;+2ph42l^w`?>j1VuYh#R+MAjrFsskM zjA@xB6D=`rc2?dcJ*YXU0z3fF6#O0R>{!Rll?o=4PuGK=c__b|ea=)Hl+HLeTAJ91geaW;`W zza9vUqIZLk);VM=Dg$+d{^RlFmkcQRwG^JDL)tTfR2+@dG+A|+`h49ELih-ct5pKS z>*Gk3HG`Yw(IpV6{NcnACg?U%UUm=006RTGqPa0 zL0`AR_&r>L1da{2VCg1aECtJ==*t=``|h2#V1*BCGFYx52|-v$zWV zqFG|6aN@cTs40sg2oL%waFTkxlepfQ;u_kZjJWQb5W4@HkI?X40~ul%!Jr7(c7#=p zkCdLCjTgO|;&@E4m>f))__6M6R8WuK_!Mc@oFaYIQN;Qz$VC|5sT_T0K@B^OL$^m{ zGqssJloIYU{oE|PCK1 zm|)Me(J`rMU-LV{yhq&-cI{dZqpnMb(o#n}#{8Tk^`_W6pHSVuu$aEQ2kwzSlJxo! z3NfZkDaMpjqYu0UGNv0Rd$S2o@nBc)2DhT3rxwTeqe)+LsOfLOBt(RO27C z!&HDIm9(xo)T4cn$7}8Y2-fQZ92H`0Z!xxy7~7Znp6ib{w$mZ;h!rxIeQ`xQ@xkWE zpA;4NJ8t^7p~UY+xY?Hq%D5I%H(UhyGwGi#)H(d9zT=H#MtuwVT{E2 z^(<3R3hvMvS;aCq>M76hRzbxt5-??=wKF)bI>au~+R(UUJjKf)Xi{-QUT*p~?-5%6 z>B5~caMNG>dN}iPR}ZH)3BzP72hv1&m}asf9_5PHpQ>W0La{yHMm zZ5a#+Qb_L|-iJvM1aW-LJ{1fM)({>wO<=yz%?8|AA9XAvws{j=*)~I`zfNMBs+W-K z2RAce<^eMms6_OM!^{*Z+`W-2R-#3iIfJp4j#p=6x3921Cp%|Q;MdPwE_OuJFIfITbQAgWK{9E?xdqccnvJT>wY?d;d0cfpgI zCXgTm6bxFSN|a615V<=DXr|rRPoWa2N5CVPoyyf7y|D-*V4Zcuh??5$+>9KCB$$w` z{9RN|q=cM*5fKgx?GOsv3E=uSZuVTJA>oe^uUdM^!UoWkbv>cJc!S9{zhqw+J;Cga z4;?4hf+HREA^6TYg9P0c-b5#RwjtFYuR(?6US`xv8w1n3LHk6|e)1Wz36?XD(D<6n zY*4RL@rI~z`odinwZs8NlH#wok+d+zRU7YJx7a{l{Vkx;J1V%^05OAKM@Ut(;mLrh z5Y?@TSQM(;AihAwjq4zZljan#HU_Was(PXk%YMKv5M1ee4iTS2DLk8DM%>#S(Dm(k z?h9c1pgk=R6WEHG?x}Sm5IUc~Y6dM&bTFx37GUgr)0tEbo82Esc5F>0?hV>`O0ngQ z*zy*M63*?wcebvl#$A)qaI*tc@q2Zt>MmJVgFq&bJkxY!(Z7DKa5NDsA5*{{29ZHU zPms%TGGrT2bJ^U6T;yQxSl7?hAj!fD3_W4pJr-$QuLsL^7*scYs9)Aca;K!(=w#{e z9rFBHC5vu>Kpz)(We$wX;1fvX(QGDv+V@)uwl7|O*qDkQdr}HpP1iJN(AkBkGCo?_FBZscvdCO14^LoFaaA=S2E<^ki|Znn>3?8 zWcYOLS34fFIr^;w@=TaTIhVM*gg;rY@aB4}=FBi|3%J#&x$DAz=c%E;4rboc6iPWf zK&tvm&iA*P+3;9_Q{%MCOfu2d1|K>)q#lyCTDc0J56#&Ql03=~h>xZD_dvW$Z6>v} zzXSbD0L!-lMOt6O(N*xdNSwKyteQ*dqt8oKCn^0CGkf1b#^oJc`LxW|a<~5f|6G0< zKBW5j=g<&C6N+?AU|pehmmw2YJqY{iPV$+#44+m_`3s8`yHV?)7T}=Tq+p*mWjtX! z#yqbYGlqu+f5*9wDs&c3v`krx95Yq-p#*P|3eQ9ILOQsV@&~2?q3pY@J1kM#OjBb# z5)7;{$aW;M1q7-IJOsdnM3pRQTEBVHDhEDeiN}kP!DW~>Qqh(!i^D3BzSgu1ixXio&UE!GZ zENAzJ1NHoT2u;M9xpg@&Wmucph8G#W6rJ{lpVJ(pVgIDK+FaQL2FyO(lEiB8zt(QW z+Nl+XS$4r)5{r9KYR?j6yT66f6BzWT?CkyD;wpQ870)&r9YUAY&IrTfSsgIy@2Q{; z;x`{cjPu`_#&3JA0x26#X#vatd(w|evW?UE_#BLQd;+dSDpfT@2DRTWWeRr24I$nL z!bYKWx?(B0!R+}Mv~4mjr&v; z$1+v;k-BO$4o2a1d&C)8FXBd0#-15q>UAvQ-AP+*yDa?n0~$O|1h;Wmr+O4=vlLZr zXGv*`n6>n*Ipux&42)sCQYEz}_4@4$x@w+=XUnsAy|6JE5)=wiiF#Au=V_qIA-1=U zhbML}obWWn;i4)#!0f-uxR30ksAZy|;9_PJtBWBlzwjUIo_^{Op1sN@L*+!G)kDi2$Nm|(1MTz2riY3WSZag-4yU4YQuy(kFTL|x*{q_@; zb7(+KlP!=zt$Av04*ZP)Nz;|BWq8q)t8JsA=nR}yIj`pp-VoKtQtY}ZcHI)YZsXW{ z*B!CzU$N`1*maM>nlZXj_^2JI1+{7Ue|9aD!n{olVO~UTw!foCQzGp!b~i4-qfpP5 z{LROn0Kkb2mLOB{R^A(j8@6F@%qIT{+|d!OS)@O2CAsH7naANhNZrN872}c5W76kk z1*S#b_fzOqMQ0ddz<~xp!;4;c=aCr7556PT$(A+A_d%K@K1`och zfpRfDjOz$gMqIV%J86YP1us{jMOIH3rA1Xdf8pt$uK@JAmBWEF6*!7Rk_;88+Ni6rCmg&giG|dt*-s{0Q z8kmElmLMErW9#2eNjWjNISBo^w}lMCt4Mzkd^xe;JT)o?T53h(jvU2{`cugEWfIEp zZOrV;L**>eN3SqN?SMaV&7t&W-I2&@|9*ttF1rDKV}9pJmVV|Rl=5~DrS%wx$I)y? z+hRI8wG~)(Xm!Mi0`9^VGhj401xTEFKtEV^s{tn^0LpgMIH5P{Zk9{k?=(er$A^%A zLaw-aS5WH0S`;7UiklT*sr}wtNa#2gMy;kIrlb>fUd9MV4;zqWve$aZI%NQPFg0Kk)y(>G0Bc>dqm=@R#X@_Jx=v>zR3 ziwR_$w|>Pexh|;c#&Jl~r&~Efj~kt3(GgR&EZGxaGH}nk|Fc8}b?c9q`qMF_lFx7o zci)e8gpI^i2E9@cE>h(-D)`P!hw#(y0aOYMFLAHRT><5y-^g`A7akO^zZM(+?O`Qc zz2jVHaRtYVQ6bbU9~S9hYw5BXTsd9&ik#}fN7*>0@5B4B$+@r!E~onO#EZ^`dt`Im zq^%|002p24ALWl;k1-t4xdbG;O$)}Vyk|avEO`aBpU8vR!G4cyqN0*21}a{Y!XbkE z5Q?%Z@YM20C0A+KLI!f>Qw<2Cai|X&L-^NpvHR}>dG-f!2%%XpjnjHQgA#D*Wh)Au zYea^EdI83JPID}!hAm5TPQXKj3!Mu zz_Hgs+^pG1@mEZ7v-T@BwGIInXfVHWcy))n(6QE)zEPEnyO`qFN8>SI24!5t?ks({ zPT8lov&v($mtM$IzwsNy8VV_O^(01fU5gOueqa@Mx^}0L-PLBW*pZ98tZ-K6YGJCU}m(E_9m(Nq7U%w%=YFGROCSZ$Eh z)MPoNq`|1^m=E+yc21%Gv9s_}Bep4o?^e(<9^avcVX1|$?E+*~EuQ}0hKrd8;tcWgifqT~BQCPZI3zEIeYNak;4VokSHVkj=`g&>PBtDYYd<-fioDMv?~94j zlFA=K$I0{ssje7#i7mIn#YuHFggf@j;&!089YpFyFky+EcxxWY7~$@N`DR#m8Sdi# z6=&~~PqGI_xm7oKe*>?v{M=I{Du2Y-j)%)5gtps{B6QsmY9Zus2(Fse1GpaLI}MQ` zBe+|l`t-%z9RvV2XfmalHAhrtjhW0Q0Bd4+8`;ExY&teZtViWeXbSn-drIPk6=j_& zLo>gAp}d0_I9a|$j;@TxyT66P(fR^w-oX*b`SHeur5oJ)S02xRepsB1JZ!mK=jT5xEFIzD zqXv#!llL=ZJN<}KJ1~lIznuCE4M2g`rdy4em{!vgZj4314=OnJ6fBPjNEa${2O^JgR$cF4HcA`RtIHgB}a2%;~gyU z(C{*^&4S%y5c>KZRS4_=LntbeskZ))VFtV-ZiXzRfI3W6N9;DHP>953z+)Cree!Fyn!1DPhF$I*b_hqtUP} z1g zca|q0(4dq^gT5sqc|hMoh^qAz*E4|7KM_@YNCr9Me5HdqESfO-LApN*WSD>UgGQ0~ z0gueN&rtS72)964n?*t&Z+OWw;Jn=KNn%IgF zGk;jTm#9n8MTAxz-yJ~lQo_<5$h}?HR2q_<+x9)G<6h?Pq`Kz&3!@4 zGwB~&t^giHV`_jgVQEEi>v(5e0-L;{f8b_gIF$|#L}vZN9CYvUsT3b}9*-SITtMjd z?-}?e$GX&POqGSU$bq_L=@H*M6NoUZ^ywC_l^iI1yc*b5;zJ$E+uNC%^{I`e<_(o! z(SJFxvBQjJj0j^l6zYjnFe|eb9!E@hOAb{9oqoX;?@*rm2}YgU#*_J8?~#cbjXp`y zIC8=oIM4{8<~^L=LiFU_2=r^rS!O=Nj8bZf4{q+AgAAVwa2_mtQon-UG7dUb$M?CM7 zN6o;5OtpB2GVV^LMtjY$f!QekbFD>o72Kn+jB!Rni3X?FIf^LlC3aRdca)&mW z1Nlt?1Lx;y@$(D}ZvH$=<9ar$SxsqbW~%(}M}DJh@#Q!mYo?U!ZRAi`#WF$edDJMR zmbW$^9KIIGJVPsD=Ha9_RCO6%ILXr9oV1zM9oL!NUqd9nu}KVv_|No zJ&h*b#w@!(AEj zLt&d4`~|)z!<#fyOIv~C^s6@Fsx76QWFF3)9~ABT7JKCAH;j73UjCOmTeWyTT!KZ+0=sCa67r0Z0efN9>~1>@k>hnumu$gdx% z_Y4Qo8*;i0z^Qh}aJ(O1mkDX-pG*D^)#LxZOi?e!45pd(;*B3p^&n+6Wfag~$!j+i z&jnu$e99D-wswpBM+Ww7@I51o?VZK;E|fmv13sNS43rOC7w`#*q>nyO?cucxv#gZ3?;x|&Tt9cICd^t0vzCaJg;}8qc+ag!U;YN!QsXia zY7S$rdjfnK^rf=cHV_*)TmSRRkLfBbxnal8fT-< zC5so5$D%cOWr%~5pxt*Vw()u(yw2yo8IuH!$fj^^OxtlUO9z z&MSu)a?%$|?qJ3vOu-rYH4JG)BEcSEPqrs7Z=o+a>r z+X*!q@Ck>AKz!xuPbuhF95|OM%rr?gm?C$$0sEA?uYzW%H{>T;)nOInJ~x;RWCMu- zV12C^_j6gh3F^8YOAq6|bG>^Ad+olACJvn+ihJLx=L+%hZxiwH1m$*L4(YFwwJ#tB z8EEaU6sAy-{H>*V)f>vU9FN3pkMjal**ci<6vX22J~9}BeAUF@>R^d&152!2Os~Kc z404@|HJtL#OQeIR!p1c2=5IKRN~au4R`0i|&EUpscP`6@CS2#UfvvB>dc0ud>Zqm< zV({fa9&`L9(QYFg#{O*4 z4DK|vJ;Q^cC5sWdKRIG<(;7@+l^1wyF>emyb2EX{<(B|n%F2$^XmSV16=#8eBe5Z& zDGx_<ff%#T3D4uaGQk|RqT#Ib`O)VU;9+_>q0!n>^^}4{`iA(PSrpQ z2Ib8}r0N3RtT7y?r`ObQcy>K4K>)BkBX!% z0PlpgeTx6ab%Gl2aYsXJLXDbA?lb-cW)};6w0#>;wzkz>g@cI*7c^Aw4gSd~3OE^$ z_+U7Sh5&yd!J-Gycf@#9G?7Ky7WGJP2{?&zv$A^w#fCgTy+Ys{10m<`5{Q96O)eBGRjf;)azW&injl>TIqf1)dj&iDaDY{SS zpioxF`DW`y;L0_K!xazl#JZAL8$b=e?2?;<-&`AXjcm9AdCt2)^in-HV8HJA;|id% zp>9%D8CmVc2@mE+d@VUjOqfGydw9EWtj^=(w&NW-$=4NJmlvHOrpgo6|8sy+GO33B zqUH-EiN5}YodU$b><~IRlYLD_1QcYvyYb_uMssPpix1D`Yn_*kWJ$ys1bzw@~^%*H(otGK}j7F~X2@Gv92Cl!$CUt1^ z`Tfu(`0^#NjC9EjP26CJQRNRlW+zK9!=Y6$h8XQsuooO=(W8D z0S(kHyDMm8pII3^^#|g4l9vY(S5A>||=xcivuwc&o$ZK`D>7L1n^S0rOXOe?iW>EyFIC2E2m& zMmAQ6pPu5U7lz^SeT?+BPCz@xe_`THGn!qj13ju_GBm9SvsrrDg=}hOBd4a6Nw=T? z6I3BSwk0N7A1>Md{; zzVH=TIHRV6g%kg-lbk72^FG~>rF<#&Z#iT-F4!M0*CMK@Ap=}(kEiA$dR<);5xpL} zZ}bLo-Ud7s@{040qp|AOK#$Ov_i&E0OVokLZztw{1@?Z!;lU1QuC2Ef0;t>tUoOEO zmHc@QUIj-nvpCGY52lXfcY(5c_TUYs*1r~_yg$0f0)n~&VCA4Uj_4^Pgu&r^3mSI{ zx=ZNNC`aB-JnrCdqT@@b-uPlX4(M?iXzZrNDA<1n8;T7YI|})nUQ+tyI7Akn*bK?m zA#Dx=vv>bg8`wse%$iPqZ7Ibe2??^3OAzKGi)e~>nAp4o7%+- z*GpAPz`bUC-}b;j^nu6l@7N7=78DX!7m+a;ywOjFfRbTOuxuu9j2F0f3|gLU&8&X4 zyDL*Lelr7QK?XrSl<|5nFmK3&gIezOFOt|94JEs!vkN2N;6zy7^u>}*_JRb3`}(Ua zBpj_igo>91z`5`WNFO#jY%b|2!5Jt!rOm#D&p)e=D~!@s?Ba(3m?jb<@UBZoqrz@8 zyO^^5A5%EbWjLVIlmI-L!c^2$2(Orn`2b7NtyTcf&R@JmZV&Y8DOrcZ!WCE1FjEIX zmD9gbbcP@5P@#j3(*Yg!}wy79-s*y=iNJB=8(tI$`0<323^8XmG}(h~FH z^+@A-Nm*pY6v^$w)Z^=Su1D&Az=Uu(DFSD+_%Eqy8adaF;N_t+Tv3`t$)afqd5z4F zMbDv_*LxcBYHPOOSG~Nw$H6mN-&d5NXpefWA4ti+-^IPWe4H>fE z@KkX5gV&jQR{{)ffRK;>*cU)Dxdp?U>?M;C_B3gNP&=Zrsfg=pBH~I#T(@utOijR` zW_aU*SyF$d2m41+hXb#W)-4;#>EI(pG{XE>=K=SCsK-g*Enw*OSYqt;#OvTp0?N$a zkM!1`jrgGd!UPZ{=0}0a2W>JSKH}T}6x-67vMU|rUUkSVAeOngsfSYWGBATNy`bqs z0oY<(79q^tejhPyrf!$2?veYH!)S+3?WI7(Zd?cRcr@x#c4Rx!>8hB=kzgH*1pYFg zM+|<`TdMj@?zbf#XSX?f7-Yp98-lOTa3l4gwn(Yu~~RYdr?{>ep(8ENb5e0ICDI5%8_auYnTv z3#bQ@pVWOn;xNd4wm~7B>fv*`q_*IRDydUU6JT52$|HH##)<9IK1l3dcQ!O`|NBu$ z@f~zgxaC}6KcliC9z}hh9)o!Ydx_OEohKW(`l;<;$rb<8PVGhFt|_xojB1gKxk&>h zy9XiHb1;~vSm3Fm%tc0FzD9#DAW7pb4G<1Lsz6EJ+kgj(fiEbsDj7Z2X9^8i&m@vA zdc1kEXbOg;0(vTXSNI_rbz6+OLph#f@w&*9SBU!tHe_h16RQv#TuhpgrcaK!Ni8<0 zVosWYE?mX%Ep8Iz{^!jyR&@9SMmZW?xQMXX_(KSt`ugzjsuR2XzgTaPE`Hz{HC$YP z8vV14Qa3Y8Eq%EvI%J(FTRc*Jdw zIB_NPJ1c={{F05N{^;0(@pMCjY6zcpa3LnHW0~zKWlMmC-ok(A&jZ&1a!6v^JfMnD0RK++!PS?>XE9Xv za_PWBpVX3PoXTpdB~0@FCxEA|9EonR7L5jrMnfpzcu(fn)~!yNNA@DEO<8NsQP_pM zLx1oI_Mg;yzu`NNmeT-7=Ce3|HZw!n_>pEn2f11{B}VUsBZ%~#XYsb=aCd|wu4RH~ zu=ei%Yb%NuT+{W?%$Vs61^}#PQS@P!zaF;`dVwP`H(VlU{Am?(s{6obX?18D2ahc> z@=+4LqVb0Jfmq_P+6^*>IyUbtnmY%QBy;LfUO31a$WR@CX)&!OOvnm9oRmk*9*@$S z!m8UWmhvhcLD32@Y^4zoa6P1~*F!ne+WV#&QFEWKnG*%n{|*e$YqdGnZcd7CA(bF)%f^*MU7Oy90S;AH7N(0n zTFFh^Ktl&bV;gjP>?jG_*`!MVYYvcdYA%3V(@|`CUT+Q;hGiQ>*+vTS#Zrccnz@wQ zytizE22N%;Dd)o%+eB#?X)F>UX&JtF2Ec|CYhM%QsNr&2PNs|>jGSvfN1BTKP?i;} zkD5l*l@&_pp0P4{UjW*5fF8{Q+!!V-Mmw zgzGSTvSr}SyJKYkHJ{1&l(X(g@Gn$C|Ak7ZcDS8F#KoXw?V=o|NPZ=fUyI~7BKa+K zxZe*2r*`Ozv1>GB3GOSR%b+Ew`m3!H-iELr?>&ru3U*zB@?F!(F%aw&z||%1a5^@U z{F0blXli;BXhkQ#F6afdg!3KdKp*{sk`?~AIUYcH$pJ`K2o*Ho&%_5~aR*)SYN?8B zp1wzpZ_udY_HBmO4mzQltS?u1g+u?shhvV zspHsnII08p<-r2eS_)xX&h`5e1*lnnVQZZKVOzX&3LhIjh>DI6LKW?&QNO0UF|s3U zn2d-@;!#Pc7l$+(AjEz03m7a;?o`}kEW;kVe|O@wLk=iykjVkt@DP04AB0h(34L*I zoy}-^F6bwyq1AtlQ1`wa!u&;y&G(&L4Rh9KON@-D2v1BCDQh`Jwf1LrStc{?Tz=T0 zf88R_;oh?$FHeJ_w?eFa3}T^ie4L^VCQ;AUJy31$7c^|GhKI!K#;V3}c4U$!DU&8lb+Ko@VsGb{e`H+jv5^OVx%HxdY zWt|_+$hZ9jMn7GzEJr^Cq@-in*IX|klrwDGJ4s6(vozSlMi!CvjvdCD87_~P#ieVo z>~PEq(=yS%7`a_C8G6DVbv_Ueiut6hzm46~2LUslk5y%4b#_%yG6QpC8L*@oaAmvR_*V8MQqJSV%C- z7=2bmpTocNo)puP4;ZGbBby8#Kw<{t9-TZ*MVm4U6L5sOd}a2K_cfS~8uCC4c_@ZF zB0qMK^*--;oe{dL7T~&y6rp;EZXi}fn4iHQ`ma7+w z)k|Op>NyG;0wa}UvL<6bs&qy%2w*x-dA908nSe>S{uw>6^({5bm;!pEQSBxY#Lg$c z>l7S80!tBAU%>{O4eSHkKrM5*P8d1g>rxX`p^0S10a{L(HN$WKYwx`lE4_gi4u{a< zteid|CQJG`V#R8{(8x!O$*N6iLZO9yWSUXab12k?#?JA@3kPpkg!+Alj7uOMY&krQ z^H+%3NhV@;GWlJKm6i1&p6^`^hC5A7Y6vjBcqKtDpS9^#L&qvi9O{s+UZ5nJ{7v<5 zA49WzuTawOY>VJq1f?P(zcZB3H4cBxU6L=SytqXb~OwD6x z?()o6_QYwzlX<^{zE&)UIVC%hVlPr0fMKoJjWntvKrHmkrCBgBj}2~9E35@SYe*yQdT->oBSHBU3`?>ChIWm6tHV_3z_^97J^%fnE{3)_T`K%Qq@Ju?=A2uYD*b%4E>9e zed6$uoa=E&5z(0m!-la;inOQz$|ctsLDuj7z@z5L9^hhzJr?A8m*8~s28>;ebCIni z@^3yDB`JSUI~9X@wc9Az31<-^o_Rj`u}Y=58-d%Hlqzsj+r+YsdfOBxr`5H;)-h6u z%{z!c)!oMzyHg}dz^dfo_x;J$DPbRZ1@klS%geN z*@#m;(Cqm4UC?aP>HJ~yHB2M?Inc3 z-LH|e9#}g1(cro}us(Y-w6Z(>lxcqaQqHtR7&PDu3Ywbk{crp{2Xn51k05d2 z_Rx?qMkjZkcMo$Oz~~v^3l>pj-6_D9)UO9CMD79$k-HE#Q^57s3ewEY#EG0u*{ix? z=tqXCP$tIvFNB?bGAn&#=PwYKO3>F^k;K|%5gRW zM`%z{`icA4H9FL9pdR3HXfpec4ZnrwHYvM=Gk+BRvdFy{21N2x@_E+`J&)LIfp+wO zmHE`V_-bGeD3;bS(==XI_OFM)_^eyM zc>J!Mkcqi+GO2=A0$x2cf9sA@A2je{XKHhr59I7B4Z^ku;t<*uKsgvavVV|>&5|bd zMO;RO1G2x}M!DDep_?1X)Cxz??>|Zy`Y(1{X@ffu1e<9ca=0$yRTQdWQZlqTg^%Ph zX}jc4XqJ1oU}`M>E)#Nzd%Iycj-$JN$9b^^4b)&Uj!&I}9ytf-piJ5+zJ}xlln@~! zXrqfl5;bej&}&$3FR3?aY=dO6buhT$YZs$v+uCFdgLydgP2Mub;?>;`PCd_4AJG*| zC{6bP3UTzbI10OVw}qo5QMQk46WFDI@&U|$Vxi4=1z1?+n`ICLLEC!yEJ>V)Y3z5# z6@q_lLg+i2r5gq5))df~ zpC`~ZQ*Y)DE2r2&5l4$wYqu?_7LGtc+YoXOb(ibuQE(5YH1f@F!M%BO#~^%j>MyGN z^%#+3a5a-KiYL>rTAd!{zuy#W9qCyO9rHQe#GEqN=S3i2WDJv41E8@|vlSEJxbrsH zv;Z#7t$7tCj5v?fJpmNjs3#_?`+}iT?PS=ZPD5IDeU@67&J56YIZ(o#p3}*xX#?C| z2QadEAXJpQkx$hDK(f#Uzj5c3d{!mCy`NeX+>>>jsI?&zLG9*jMc6Zx4WyM0{juKI zYXSzCctS$`v#>NmpE7FrjH29)5f@XVhO)0Z(=! z1iUr#;Z2ZWvzfuM`D8mZ7o0W?53tjgVuU^wW5F>$L}@GUgXd}!zY}q8bO~E9^e*eQ z#HUl2A&)RUPUFZ-50oQ{G_*it1GW!D*3f3m^p5z0TDGl3Cc{cn1~Q7I_Md|=Ao>8v z^n~r5@w-RKJ**h@3g{*$_p+zt&CEd_-U*;oF_|pV7_V?#@)c@DfL|d%6~OWm+YlK$ zx)5JjHh^3TTJqQ9w(8@3{YA3Ng@<88C|9nBT!W+x4$afXg4X*QH4EzV&e zn7s7KV_lkDJ4Fl-6j}p4cNqSD2HZH#r-=G&3U8#acyH94^peuLGRG+6L~m{ViJu_! zluqme(q?(!zY`?%7@w<--^MF&l{vM38wKA4o^ucDiTVA-{ECLgpkf?&+z0H{U{rhq zA$RGG30VYnyhTWRu2P7a2pv%qiCZCC+S z=pB!tX@JQKjl`@ zMf8$jM)UMHomyJwIM@8t8KG(hE@}Xn-nmep?OXt=%{wyC^;idD8RP3`cO0ebEu;=5 z4lvZWyYmYeC~uPChmcFN4QEmVD*4Wfd0=b>Zp9v@7lz*sOF_VAtXBT{+SO*@iKfKAx=POG2zGGHU z-7u&mRBNVS1)A*h=2c~p!D}sLPFtkj?a2|Xc?|6LGr`fXhZ<^bU5*stROn5P`MZF> zsarc3h>#B=KAZ-vO)Bs$LUv6fUb~tXfVmi%A51d%X0HTr4BbQMPi$wh z$T9m}*85(eLZ^0t_}GGi4nL40R_Nchq3TgvKXgXA6+ZIDZd@2|i!d#SVio z50|_D!jTeCegj#f2mV0GX}75A_GP?|fv;j0+{W_-zwKV1hCE*TM;1Q3EbNj;W7Hj= zq~LdaSSy5iF~hVv0gmw<7#raZd+*iAb#bo1#}J@_JQAV#dS0uJZSTuKPBq^#6*t1j zs}ZwgOvALgglVozKxI7(;;)gv%RRYv6tv=YQ_@-n22OCdgR5L%1GbBgr?l&owvks= zi#&mWCrYc&>kYtQyry@Du)F27ONg;Z<4qOKyhUkZ6=`;Cm&L_n;^J}g{tUz7Pub#A z4*A?~B&)y|$QXpY>Q=#$2ZhsVMYo zIkLwdU5ys5@TI1w7UDIhxfSF3gL^RsY-K$Kq1$jMy8&oaKjz)MZXqSTXUN?7`bhvR z+3_|-uCA3dP-?%)B|8k&Vtu~XPa#jjwi5_*&eg{!gaZ|TEd>XlPjEZ8v4P0Bq0^`V zW5_9M%kP+PG`*oKFOK~~-ZgA=6ESi-yeg!R zy(oo{Y0d@yJR0JbUV~B|O&&=_WKzypnBBcFJ$Ru(n!1^-Bm#fJGXldsyB<{tT@FH# zMzpSnGM^_YbVb#8%zKG0)=S7C)`$0wAy=OmT|2hth)VEAiTM3|{qT+`RG71YkM2${ zdtpdy{-Uh;B`EQ&6&2}fK#|BMt*GbyqhJ+A=BFb8h)i4!P)=#X4{COg_l#*wB2SCc z;_q-lMC!rm2K7bEL=iKok)02A$mA;KAVfetfu!Qe)XOFnD`eD?rzkmoaVQqHQ{W$R zV_cY+164j7D4F)=+RT6Ow7Ka!@rznM1BE5LdoN_mJl}#sEXS@UY%{AKss{NK^F_pb z6*1q8C?*3Qd`X(Omu#xQw}F*n{#PDL%dNu^`u5xpJKp5&#b`@SXBhur+rq0TuhTZi zEP(NN8@zza_~wIQp7sVyx?m%oO}N@iE9~@YmMVz{UX(FE2~d6T@^~qWJmX=(HBnbg z#ER2o)zKCE0~@7_{XsM$xH(P<(;4@<11dv*9Lw?FKge~BC}9tnZ!(qZFmh#gUwcan zmJGQrUa2cO{;Sdv9pPXxOD&16C&)APuCADrBPQjFNpRPb@}dnstt_bkW+*XHOCEhp zz$X$FJ1HExb=Vi}T2taqaGH!Mui+R8!r5(~e=kU77P~9O611Pe469bksWZg6dd*3y~`ukY0Ei8n*YU!s^#2S9OVxu&k*34z`>U@+HBS50MeAMH-LX2 z)joVWIvf6a6mIsC+J=$oQgAuoOKQkU{?D|09Wq-*@O7hsi7BYZ;W3%i@KNlkfj<+4 zDK*>7r&rXdXw3U)@bO3AqAs4>fJUfxozgNG!*0%#V+|>3j~VhMmw|4%FfKXPpjb*ds9vb?jY_gZ@-1$1LgRhw5-7LE4EF0K&F zNnnd@rq*k)$K-}9$=EYoPh5AM4gxHfQT@e-Nc++lCoWdcQxXaAyu|G=}9Oqxwb zl9T&6Hcd_5JVu5UMoHFk)LQ1npk@p%$q`0>ky#yv+IIV{Yb9)&`Rp9vvN$)15-VTJ z9qLkHRxXhC5l21HQu~+hWJ~B$9m)iJ@;J0Z5`zv#8zU|**K=i!HE%&{m_5%0${(3aB5RU5$?@_cE!*F7bKV^344MCr3d=5{S#|230 z2gAF}#xJtEK6QO|7+#FjyE@7u?Sn}BNE#^}M&%o(Qd6haay^Kw&VbofiS=vx$Ohkb zE!c-JXv`}{)e2ub<7T$9JIT!9zryEe_Q%T@1yhR$+Br}LP6B}N;p4DqoZLVhil(rw zygbuJ(6CCT47_u3$m>#Kf6#t#mN^i@xfY1-_No~Gc&?cEAoV&c}P~lXVEYZc0KIRIjLSCN7h%8w7uC ze<3=-nCZX2ipf&ljr5~C=$}II>Mm;qn32uzuhf@*22L7LO*0N0TW? z^$pXW+u%C#Rjs}yHYLnvHF$r`{5^T9Moh=*SJ(M~-+pfEae9Szn2b@3YyrwRb3IDA zE*gj%r0!ww#J{=CQ=PcEBch`%nf92pmSSpD%q1#)+*%4H^P*`;b7`~~ye_|KHvvf_ z47H-&_IpWczmLoc&LBO&vO7Yh-;CdCj*c6`cM!dWgWm?l4P31F1W`_3eo3*Up0GnNL`TF=gKN}; zgpa&WcX?6v)0N1P`@Dt1Rc9dCADRTbjsM8y;Yz3_wZ2Q91s$+Vr+$H?q%UvvfR$J9 zUArw75Z=Ybfwiz;qUZ?$b@;nOD#6O_M z$NXoj8k}jjSH%`@?sh=CjnvF(U}OFE$oa%G;|6Bl}eqn2uJRyVp)gd3ayCT z`PmlCP(|%#qgi$Z4u+f8o)Zf3bh~&8iAc$zc38!BFUfB6AX#BV9(ycx#h^4X zC|wN75Yk9WyK@u;$29xKJ{COft*{p@JW^1vZ5)rkPhdwm95l~c76De-<8dI{q(xYP z+0MmS+{1eJUimT<8hLmE_OBW`1H|OA)iwAsz_Y+a6-|4Zq z=RPKtg6HtxcP%PlfTdbM6M zzHB{S;J0hTc!VXt{zg?@sz>3sPhV&y{hUNTt4|@9&++4k3+i?nq2<^9Y~Dkz=`--= zru7c4bo&qOO8&?j@5XQ{3;@SSZd^|N2fxD)@7ZLzlNB+PKAod)`JmG12+%_b!njWSg@SOoO}%~sLjqW3|U00HppM{r2$}*S<3eR7?>`-iVzza z6@bvkyHK_jUyUhXBhVOZ%&Qdl<~8u1@}mhbO*uy)?*@af*xbGX{cwqB&xnU+(gcM5 zpZ-8N<`{F^*HLHx3{IH>6O*$V>b`C?-h#ixVF@QK^8iYEwiY`>I)|h5S+%TFK!snA z^Hs%LLXa<=n4)+SK|P8fvyt6CQ@=>YBGmR9a6ypYV&S(0|NQ}8z~e3uC!}uMineq; zUl&+nGsi61zX26)T#fu@m$ zH^SmMx2PH)F=-IRoR6sdH6Ab+Wy%M{Kevy zV6Dj4$k(PA6$I304r;`U6!fr<8ySj>uo@4{v*bkU5`~LMDahMZ-WyUpj!TJ?jVXA32aWjZJ)Bokq?25VqDBS9Twe0UACIjcq8k>r>K zGf+VO@JHKFuqc@#gLwU9T3B!o9H#SxITiO*fXhKm1~&xn!Xogu@|d?Rq?@neDcOBJ zE4P%kJc-)v4TPc#^|~+)#k}otVZf`71(f`Gq%5mx+~XJ6zD=(h^1Ob$2dkF9@kyU9 zl)1!Fav<-&wI}_s=O$7+icRMeJ9$_V#-m#np9)pG7!qa;E(JI+f6WlqZMrK)D6$W; zLI;ha@^oZ9Knr#b4hMgNcn-q80ijAng3?; zWCVZL`7akeq28wx4AFg@`v+L#k!$c;_)+YRRn{p227FT~1Wu&kZ|njk|Gdc~dE*$F zZ{zdU{o81qIM<;{QznaZ2XITL)i8GVQ}OQ|EOGdB>NJnP5irG3Hm^^S=TD%T$}=$2 zo`E&!q$C%;(K0mLybJ7cIc0^wwLsx#-yjc=p8`;{SPkY(1-s_AlWONvY&PU*xGyJ) za#vsFdPhsVgZyYawo9Yec>bll>uqGi04lB41&nlmtyEaRrGa!1)h6DLaejkI( z&5bc97BDHa1@K}i>_!j55i)#roYHqD7!zU*70+(5ls3TBiTy5i$Bw<@ zN&EwsG*p8Mg6>kwjBL~h(RB%#mT6^ypegY7^!m@p1uvcihI^ z^~?wdulKq_1&n{|T%P4-W7;9!YLPuc<)qCFE>5e6cH!pyS)K?6XHfZo_a-u2ceIdlwEc zX^|zFO2<)B>0fNbs~DYy^V+Tps5llpS&h43j=J%sg@Hl_Eoc?Ku;6Ch)0zlboH$fs$~$JrW13 z??FbhjiA%lGZ%SX2khk%Yo?*IWwn_U62o^9K$Sy+OT5wE%W;%PG+%_M(hYbvl4Ec+ zZ@zv5w_{6s-6OM4r@0R{$=ajH%^37i=XDgmZUSn^$CiuZQ?czn4a$tT&h%@S6(AWU30z z_uit`h?w@sRpLbn-EPVj^{H@>9j3%bzlW~)Y|LG(4uX_Q&yuWSZ=u09@5-^z?e=zL zKQn+-&>7#0lg@k_dF*};KGUECF(^?CN+RE|As_&Cwc^YXw?Z%vYM09(SYZJb(OxS; zh^^{?>NAhP7FYpa!qf5Mc-mY6Jw|xdC_ zb;;j#G+NpC0L8c)$#qDYJA>j~J7Xu?Jv&$r-d9);q9Gd{kjwLStic*GBMloMsx1_P zq>*3Ax<8}pPGu$teH0fky8a(VDu4%3>UOANNKaZ)EBBvB^qsR1VTdLPk)8+0&c7Y6 zwdD1!@Lpq0&7IDHi>==IN>9fb+UsdI$uI8`W+^lR0743bH`K5@cg$@yLkg$LqqW|9CcOR9fAnY3qkr~=?$^;rdWDQEWM2{ zms|5-H!ZJ$c0a5F)F3P~r(-eLkOAYz8Dglke-w9W02;kvB0ghtbSUa_PCvqHS~GQ&o;aH*&L)Yo z$>MB^IGYN0qs!3EHn=GcxQzD+0HW63pD{-bZOEx_V+C|rDelI6B<8qo;d84+n@Wf* zl*MBh;?+^3Z+d+o^B++`o&UPPXsGhvDv9|R%9H~N_*ZD$g`#G6!QhXXNgm(bWl{CME|frOF}~sx zE=en}!Ag(#2hUR~SEZsNWynQF(VSi~-=P12RE(eZ4YEi{#Ov6jp^^hR?O%*V?cA^) znghY0E+l7?RXCmqiUWY&a1p|ZnY;6zvey@+mzB<~)~(8;_6GEw?60pR%8V7Yb;HtWI~s52jjzHDQefj2GGKi;&wQr?)CTZ+=s`F2pMCWWpWYK^-g6JDfTCGHda0c z4=T+G?_>1&h__pF??3jM&#Ag_mF=hgDAn$xfSLYifn6|#OgM@kUhT-$Jy))8NWbR0hNAWxXrEDoAm}o=znxnb{{cE9Fu&YNO+y&F>Z-@Aq|pxou|Xo{7h>qgOsfXd zZ2)->fPC=HdJ6O%fgDL?_YgL-HmB=5U=xbd)}KeP;UE4`JwRu#I<~MdCr*Zcc zb!B1lj$*gjp_1k2sHEdJSTi`bOM_t~aMC-_kH9_1TRf$BN*KhuxnL)cfQ9D~{z@CD z=rn$=fMcF#JE3>u@b(t0x}F0-H+lds79(KdnGf1g(X@~Tbf19DY1(xGPmbxU;V7;A zmLRKb$V=oyG3#+XC~JV z7=Movd<^*JUdPGSGLXgiezP#-o)4bri#5*5eiUpu-x$E)ivK9Z zI*vh@IbX{<&TaxKcd*n4t!Mh|zIJv0@&)SB!Wj_Zov3tZxlOM0wW&uU@!Nx8yF)q z!GF?)@J#xYi6@J)TNnd0G&_+4HJM?)GjUE9ko)8D$llZ9B;Ib2TkseN&m#1h)^0zt z5%mgnR)Cgz>&duPmt!XW!YzC`fWnq%)Ley+={H$?KGTSD*8^P?65Q~P|DaX* z{iKiVO+(1>D6~nzatICJnF+0>?5qh~vdeC*Hi?;4kKeG%ZqqV+*U?Xn%>v&wx0&;| z(T&V98-}tD=u_48vDmHgss6kM$KK6E14G~o_vKd38TF?t>PcU1iZH{} z8(~P*aU5Tfj~F*DHF7{$UB3i7=m9xaxah*t*PgmBGnZhxKvho4<#1AEHQVG-7w zL^#*}2f3ZL!v(g4Q`$c}1Fs3U+!4ANti`nX?;7!Y9OG`zMr4n%Z4fG_$H{d;9Rvkn zRjgi(L%tZ!)R@37dBh!d*6WVNtgPumEnN73Ex7g)VR@znmeffaP%|4N>)V{v^Y$o2 zVozNaMb?Z$dxm+@sL+YX>DsIV!k7!2v4*=hW~>1=R>HHSc_T*?)fnvvb1#aca8 zP%^Ne+R7aM$PwTmN`rl<$R_}Jg2P8>qzQdLWN@Ai(JSWE_4PIgxF=9>X+7k0H>4J( z-Ov;`05MQx*%*3K=%?*VpSpmRhzR-<_G<Wn*pLpQ)4K$ z&>nj@Wxq4$D{jpGpVhC8WRW{st|cYEYXILMUXJ}*kW@+UWC$t);zbgU(xa2y_AS5npdj?6|}Fv(B{+fYXb zK8Tzb-@`I&Ri`QP+d#+z(Ngt7_(CkA2q_ztwXZ|=r>|+h?DXqAylAyWnFp~7-Fm|F zDY?~K0LGbDV<6h%wg)+88nb3iPz78AN$PvRg8IP^f^?)Gp8k~N{2VW*V(`RL%Fi*V z{XrgOy9s>SDvkGt%Mu#~h_C-db!&>rZ!sgM4Xr7rWD|bO-$@SFIwJ|f>fl~n+#M`~ z6UR{LdB}s$$B^yhK8&k~!?@UCr|{kd*xe$7hsOq2G%6^v^$2_YABD4K)-u*)EZ7VRE9}WUvumopra4d54FyGAAOja-3 z3ZAOvJ|>Tn7u`gmYs07@w+H}1GiWDv*8_3lAw(;W$ZORhuKov8o~~Odz8E}N%=*C; z#3~K_8(|AzN`7x?tV=LGJl&5$0GP!_-N>2y-Woa0+I9aQ-$_|rZNNqF56h;3+!z?^ zz%IyRvg;Va#I4p4ZRgf5#_!U_d;m0t#t&*3bQ57<@&Sa7a%@8-5Y+$w$C06W3So2@ z9dh;Hoi{f5B5r5~`d<1NtJS5!HHBzd0lyAj6*Y2Q0V*KjHrJj%oMp+~PVB^Qb*mH5 zmd7RCA)7_W77?;lglq$yVD%HOFD1CDT*h5j-iXI21*=O?z~e@gB!;|#(mUI%=^k!C z-RCVrysOSfNQ=|AFk7JME5;i8+v5C^y_-?>{2U;EkvTUoo&!NxWtpM24tKh7)eg&< zFVMkd1wepWZ-`ubTlh4EF8!a#8{3Y?{^HNFx#Tlb1vI_8Dp1P$ckb*TtxZG zLz@}a=Z{E7===$a=3e(H;Z&e@F(i+w!8l!wZAe)U*BrS?A}dfH+L%BjHb0&f-gouZ51<{<1?@u=yP~Ts-YoYav+iC02jDF0`QvNK>5W-ZrCi;bb?1T6s^^;kKS-2j zm6_v#eh!FYU~Yd9$Q34Y*j@h5=ge?P)CN=Z99~5!7YWU{uQsRLZN@;5S`7q=AU8;- z9(@_9SCv%A!ny<&MVHs%)#oyMNeMHY03Mtfh3(_xFzpLvnzcuwr*m6LjBZ6f8wcUG zoQS1QkXRl?=8?rnv`ZO+(Eo7^A}y*Zw8dKdh&V{8GdSk)26A5?t*9q@??m^`GuoIp z$rKH#GnhPo$a1h)kCXNEcw{|aNZDb5Sbk;0A|V~L9G8#Gj{eblI!1bqAUC&H@oeKy zL4HeXkk-v%2(QJRY`o6>_cqLu#LHIXJv9nk09AAoIkgj13OfO6L`?Vq2wAqVb|gY5 z;Wxka8(B=;{t{n4c7*biXQEMckHSvY5Ejw3)wuQ)dLE=vbv72;BgFPd9kCr24*&g; z=2SOHT<%CdUBMRlS%)$YFpn+#GPBCsbfeU|@c`yg51C_>UUZgQ=Q;F}Ld@@Z z`;un-T7@{%M4Sl~XTm69-ZTjpH#*c`4*=^mrIl1ZcM=zkZk2|TU01YC2ilrP& zZAVLHuSTCnZ90zHRku93E5hzJx&2Uqv0oYklv!4urcUW;_+jG+j}V)X(dET-S;v-K z8&xrIh`7xsMDJjVFBpd(TRV~C^(DFnAj-&5>m13Wmn)B3`2?hPO(C0I%TUVZ-8$}y z^YBc(G}-8Z1Jk5`fp*`y93P7RjcCB74(R#NQxEa&fYIcyw-XgKHlx5R|AOQgNAWga zQ8s=2NzBJ55j_OfF6+0y#prxB9838CL+@PK120PlM4uw z{$7L%&MyV2q>0@Q=lC_$WbbuU6c9yOuP(`n)^KZM4r@Bo;mwfU?)DvRD^ zyFHNE_}g&gE&Yk3I(<+V*$6!vK^Ef^_=69!`NF9G{psrBtInU}vB%t2Y*$3q^P#xh z4H#g%8Vg+miM4IC*5-cZRsdM3IX@UMrQmyA9r#!pX2h&G$5W@YZGn4^f>P8JyqHxN z++R_ov;sf+ZluJ%V1r6Wy5Q+bUT+}yf*a2`U010;?8@Gw3a2-)bgf4&*ZJV`{X=5m zn85)&2PwC24&u!JVqd#9S#|JRwM^@L%l%_dS+6&Rjpl`t@`>V)L`boel(8KnO48|Z zq-@}ZzG7j(Se6+n_@jUW&_iK}^1VM~t8t1ekctN!Kgz4eKZj2%6I=(kbCWCvHS{6R z^UoAw=^3%~tXO&u_mdBh#hSB_cAE7;D+c5o;sxudnrNU?husB$pzUb_Z>CQ917*?p zDzNYi-mrKxZ3e~!64f3yoWJuw-yp%Z?PQBV9_KX`G3vjyXKdJ+>3B)~X7U>XgqQum zYeW|F`AUHT9}2*$bHD4dzJk1r^I~Pxg*jUKH`(KC>B>|uyi zcRs2g9!zoG>}$R0F>}0r+(o9izZXlF%-nY2J65k5Y&y;wq6=Y15UH;ZG!j`8Fla1u zhEl*Irkq{GF<>T{lb-?97ya#)^S0n>1mYzDdg^hEJ=@sP8WZpxHEp5GadD34=~ zayF*s$U#{=GX;2B`3jP%gyGkbmNwi8p`*QpA*{K9C*UQ>Vi=|{*dc_~al=-9K_}A8 zDYC(GG^^iuJQK)zX&N%Bw+Cq_Y{YJV%#IwCNlA`2$bHI!TrQ2`R(L<(gj;GalGVe{ z$e-ahnL$_9B`|DA`i}c&`?KKu$5zT6^AhP6#K*5sqcjPZDuirFkh)RyzqQCQdn#p2 zjpssd-;i%}mM2u2pH(>oHh`2T<8vy;*ACi|D*vjMHhvQ2C~zA_@z{|9BPTdl7nVQLudpMMU?)yt}TR2`+!a)?7sHT}&odZ=kk- zbUTE>rsohQeD{`B=tBNj$qD|h)*(vscr)hZn7DSFd@Nva_4yr@wQ*G>!p+-=d9z^9 z;yJ62o|s2QYELmwP{gC1*d4w1;n`0~Goc10on244)m^cHi&bp;hQ(0Vn3un~dN}HL z>;6bmk;nbJ3Ndtp7`jmm-9&*$7$b1{K*=eP3lNj_`JlUaj4WiPr(8T*Ng}T$dHA)LME^z<{g*4CHfe1+^t9HfsD|*b`=W!Ua$aY^jwhv z2Jv@1KPa?iq3r2I$(z=oF*U(7KAA^Y84M;U_Fz>UUV?A_#Ih=1&PU3~BIdw4n?5xc z_G)48BJ5p-y_>Li7xo^)-c#6XguR!r_ZId(!roWd`w4r0VILsu1BHE%un!jYA;P|i zun!gXVYt+}QddumKY%ZF(XcLq*L%#|i*)fKgSY~rcC`ciDNm9?-c4QYJtzYk3WGsbuUoTxc9*D z&bG$WCWTTRR$-1G*2e?j*34Kd>-1StE5lAX<=#V7leyUnVdth@5SCTy$x2u{!Yp^g zQoNf_XS!Xv7A~sc|IL6pC3nNSx_XhWPL`pFeF)3SPB^xP00{;Vf>K z#m!E5iPiDOU@Xz#@uKtr)v}9<@;#m+W#l?0np6W8$!NICrx0$e*RW?$b9+g?59UE? z;O8_0W$PV;wvY{jQLDaGW_%Kb+-EOBm^`vClCL`Aae{w=YX0b`kM)q^GwLX7c8`o+ zhDjRp*}u3n+MIl*y2#?!J(!LE^)I?zT6h`9lNAkp zz$}VtAD(&B^{0N1QIlu}QxOJvDB6BDC3sfjwbC+A>mz90TfEpkX{(2G03g^c!4U6h z6(LxjPMzw5Ui6OcE;&<7n};Ypznna}!jh+AL?bHFa;jYl8TIiV^a#St6R=3Y~HLUDHid=Q_3UE(N=ob>*zH6{MB7;(oS;pw~_KWc}9 zVLuahpZP%bh=S*g-~ zSi0ohH*6;*(353txO}^my2w3L<^#ZSNIl*{jt61qgWKpxbB%crS66VNP{ZHaKMX}H8pzul`Qf(XVG{ml#6cWDFeYvsvD0MKSh z%nDF0ZJ~?11i%-K*$GEvV$Wi+X9=)^^~{bs)(ujiow5Zq{Kh@ZLT;a}JW5Sx9OLmZ zY1INR=AHKaM{w93FRP33GSFd6hxIu8yU1c^kk}cFI~hy?_nmH)gQ0KkL_PocgpyAA ze}X*m+%$#T6tF~%Gtv1QOQc)^Z^LccCTvA=+gt;_b^c#ue1=3*ObxeT8$D`yhh@k%N-2+KL58Gt3csgOEQTenEu^_5)% zKez@IVC*16)MH5$_`o%&DWiRbHqjo4!2)|AG!f!KqK8BLtD)6$lVEi3ndVL9| z*Hg)(U8p1~LdmZ_4mznG?osW^KOzrM?;fx4J(FjF2wl9tVLlqd8Prl12Cpxo?h_pu z!#VdJsaBWxuCKvg`M2x17TC2N76ZuTglgx-y~GH(Mtt?(NKLuHN*?z+L51r{FIlG% z1yt~y#2=gmy_>pZr-+ghJa0-ut64q4Mkuh@>H4eXFl-WR^~7&7Jq&yrY=2BiFUtQMj3H!5oxiBH>Tr? zOJJ0^8uJ82KQcngW(VU5q3TxO5oOwp2RtW3gE<&j)PyJc8mV)dB2v?%6SkkRIF=}m zB~iQ^Gr|*xcwrUiwA+c_uCJH`v|P0QH<(w|caX97)hG5r;MsH%=2!i`6q#M8Frn`T z*NWa$boVE|V0xP>|A>)lx6-)TAg=0~QO+qogp}JFV|JZ}-l)es8wJQ@Jiuhi|2h-#<@!^GY&bZ-umfzA55xQU6O--9E128O&yL%V{y7OGLhQvGD6pcEvUJ{HsJ?v1Lid3U z=vZHhp3J*u`V=y4>Z4ue?bs-5Z4{np>TJ&xh{I!YJ#ozdZAa4qsRt$DEB;d-Ba9a( z5N1Ik0?_H>7d;bmj2g9A{}b=|`V|P>ujE15O!TRtQMhzn7!*^~-^^whuc9I4jL%k` ztiTGi@A3iUfofC{V&bFvVli#$hNmo_tn&9UF{SDsilyk1!`rQBt09l~BvNm3#%qKP z^FJaF4MLbV9o$U04oqW?;8uBZT3LdzSO0CHU^`~F1eHSc(>~Z)$4L3vGShmz+kqqRhxts0=ry(c6Z$)5+A$=$!U?7$`G^tdophc2FEEB& zcHJIff84puj+!g#NV?j7fu~4b=QxAEE3*mvUJpfRe|p}34RKxmmHX)L?%?_G|@X0iDFM11B#rt0X4e` z6NJ9*2T(w6J`?fAFf%0jZ-Je@nO8(axCK)&Sy913-^}7Jx|A{cB635 zr^0`B!m$8*&t-DHc^imE!9hUIzY_I?`hZX$6ly3msSlIuo@rQi9#uRg0Z+a`*H^MP zB#%Yl&J9?tCkCt`FR$GIVLlfzP_-rG?tT(EUHy}xJD(5oLFVflOn$+c9{$K-KqdPu zcDXb_JBXgI2kMG7EyS9Z(9CRl?ipV;ptRp-P)`B$hnv&D6;|YR$z!UutfPj~kq5Lu z(szGCoBth2IiEVn07#V&Heg?lJ2VI1wdwI3q5a{52sPdHWpQ+^IJ%B{?qL*iywO;M zcKc#^RfGWE?N8J4tl|bTp^<$$ME0vgWp8cqlH2kvRIOFRKgifDX;qySY72OtTWf=) zpz76#i;6#m-wB6UDP*4?9)EJ!JfV(m0|ic;I&}d7o$p>k4)xc*y0yzh^Ku+JUMty= zdVKZg%4w?acmlm-H1T@TgIed@Cioa0IZw8YK4X#kn77FNZY2sEOGUmrM za11-&=A*JajQisJ<^>dJy}D84IX;rwDDQ%pI7B^vY{BuNu1EnE6MYI*yS8Q8t6gY6 zgqmMac!XE1^b$0vV3d1q*D3*6=ko`K>3>I$9LRJB))ttV@z=oG zsDi+G1sX4(!*iZIA4bXb6cp{^g1E^z@N;}O0K8OR+y-LLb6JKg7C-?y%j6mAvv;|I zu>Dnr;FgPM#JZ7?zRZMYBOt-pm6!iO6?I^85dJNm37vM(Buv*DUN@b#8WZv{klI>n zfc*L{8H#!a-dupt^DX;vir#+|8D?&z4rUNu%a-@3SeH2}y>>n3>GmPZs%?06jhTJi!{-GY~~%+fc@?awIxj_=!7*=IRK=JW4R-)tuO?24UM+CB(sI?ZJ-7 zTZe-xMyks+oI#lEs8x8$eZsdznEGXD!Gp!8O^CBJ)XKL#J#GMoh%p_+n2waO6_#xH zmLE<4(vc0**@w^P2KEj$QgB%ZSz5X-%ptR}V6ugJ;`s_ZVF~SkPa5kuGO@6_=^~aSuL#O6G zdCc7mXDS1xlICH3*+E?EPr1+FnnKoDLfyTYX%bSwi-M6!uR3HGx`ZVM(31+q|Io+Y z*O%9c(i;y1whvg%&#ZwZim4jj09|EiN%8x7;nitoZ;WtikP7-3={xwK>2~ue!q^zd z)^XtVOo!^Ga_0ycJYKIP=p@|7MGTv7!Xr=6ypHDvB}C6cy*r6|reDUaI^4OWa0IOLa&0En9>HDq&)APk_dA7B z?NS2^5OxSBJd)7UQBKQwpmYjMQSwLA<<{hvB!wm;Odt;UmsWC{nIy zFN^bk+fYE)5g@H&2jQ5OmIab&&ymO*I}gW&v|Nu$5)MnwWTs#oCg6%S&eN!ph?<~~#qRY89reQX(8fkGnT<=}_m5fNU4Vwh?|8dngyUYkWJN&gdb$Y? zLFYR&@H_ThN34~U*hiSgl(VRSQV0I$q9Uk@A&x2hX5kY~UlH0hR`CL|ud@>`-la-} zdBGddlsZsfUwsa*w;SzV=3HuFj}8gLcLe^l$@yTllsV` z=?PB#u^HsGgPoH2^*skrRUeA^_3z_(KyiuhQD#jtB?vZUJJ1Eb@F)KsHv2uW-__A^ zBDZzC4ovPb&aQgmjY-y{*)?AB9`>kHZs3_V`p~cJ+itIy8 zvkj2J@vaTDYr&0ab&yGw2J^}CP$zDb%~`0hGC*uVog4Q-jPt~CkWs?g6TY&?u0$up z&v#}dF;$w33Lo?#znW4Eb98uJCeo+a!)KE-t*i!um6sPuMQ)(S3fZQ zx#15G>0)RiC6im^PXp04jDdV6rrP}?QWDcUqUOUOaTYM2T5Wuktx$ZeC~ER?Oxu_g zJU~J{-tk)VeDD%mL-W3!LR`;AKQ+%7Y4E!6ix-e@4EM<`Y68CGzQ$1&z0oG$g;Qjx zwK?@RhSonk_2%Y+L4k@|!R%LGOfwhLU`=dvN*1^5#VrSlyx0>6O2Y0V+$C&4hXg*u zoeq1;wd;ggJo$7x{U6MZE@o8DweKuhw9gdnv#9@CJ{O&n8)MW`%=e>$o4An7a@uRe z+I_BLC}ERe+h9nS&qt5*aJ#81pG`Rhhp>Hp{^rI9e)$A2?>CFtr41fHd9^>PY3Kmf zj`#vU%H38?MJCfs7|ek~)`HPZbpr|4sc?_ht&qe*Tu-$J9@Av3PBUhPg&r_N4Y9NF z%pp~w1){v{FrnZh%~*^Suc`)=ki?rgWnxo&^sYTQMZu3mW0>+fWxyp+W84@;@wd34 zrGMt@%f%hrmv*M~;?{^Lx&a&+_sLyW2q$hr!a@e@8RrAIc~y4b0A+$GESQ@aIm#Aa z8w^6M#rP1sSEl_dr>n^R|1tK~VO4EU+&Ft5!oZ{j4jc}LIy6Xkmoy@x*dTW61r-%g z?C$RFu4{YkZm*r!)~jA?7QfFNzwi6JfBtx$v)FsDUTfB@nOU=Dp0UnrQcJ$mI;Qk44X6m{PbhRtV0=yE{g$iH%s$L_K_LhUbTG_PMxQT7o$r?`HX zfnO#?+%J$rOG#R?bq zgP-E}43>1Ad4WtA31bnXkxW@M1-(&YzW%9|O)ylA27Kp>Jg zQPv}d!U0xuK);(VNamS{?4N~Csj$q)C&CK8dWaGVe(~A;&%=o7s(y%@M`aa;c(&i= z0VD#=eIyyPS`x-nDCKQ4U6$;X8=#!g_2ybkSy$)g*rzpbQgP}tnOt7|)+=}ao-K=8 z!B}-)wqt^F&%H%4YP&$)`C;hICYX;lkI8BCRD6y+!IYvy{p)ar$JinB~sM+tVFH&*c4x6+SlZfa#;I`3v=q5jmKfEPbcu&#Perk-FaZ`uw&=KKUIi--P6Zaa8VOA3d2KnAi>^^*FqBk)5h1pl48hd3 z_E1G00guctP<9QG%hE#%z6Rko`40p_R zzFXX+$nLAa040a<{;b+}R|XZ}@M<+$FrrT#6jA-t1rc70pj}5JD7W-7-W=_4T^lV` zub*ioq$n#q<1OYYALVWMhitb1z2F1THCjb(u6Xi{qWYGD*pUSfvex3ATtj zQOGs2F{RzYWJn)iq#^)H;BsR}{50h2`T>dBUOp}B;W|lflnjb6vt+ki$B4QS)56N( zZV(GWJX5t3*^^$7^XbO;oO3{j?~6j5@G|Dk5vletnLN}n5jJHKw=3%H6?8JU4Y(3n zKZd$!#{e9yrnW|(RlVzCd#Zn&OygsJBN)fCSvc_#u8G1Gy3by^1C#uZSdOfY<69R- z%5?sqaOvSG)(%Q{vc0P?#EGod#tv@@^(zsY+D}8M_E?TEIAK-w$v^0*i z-pduDCSTM*9^qx88zE);#=3zFXu>;8_>Bv&!j28!hayfpqqAeL<0?E30&v<}NzR?# zBTea8##%AQe;|58Pl~sA0H(p^yEQ%ryj+GbbX^D3+X`5$72Huah~=SE2XE2G)f()! zU#8=VRmfr-y*;4Fg^Q3rsHiapBx*D;yfl9)hI{%t5Gf6DDq+9-3h;}NBVpH6j#3$r z!2o6VxNHLs*PTd9(eBF2ypjnJqtKHx)Tp-QhU~B zxqFXN<|g6Q=Wsk;8{ebAX;my6(UimA5q#y`2}Pt`bSogfN}D`9n|}GNH14D{(4jQ6 zEb@dC^3JrR;bUc>KOcSY^)T&!j0#?kMULvdXAwp=aYdqu?I`+tHV)o#EV8EyM(74w zeq$l!E#+&-gJ&>DV569VwmRwKbgm_Ec9hx_A5B`ULTGv-Q#ZY;PX!>RFhVsi?*qwN zJMxNi2!CQAH_(UO>44`ccptaE5G1XY?L9m@HD3ypC-QeuM8lb=c4T{N+#NI0hkO__ zX1V}L!kaBX0|zyyv149JoyhSG+zxyA2@ikD?SlTv`Yp-x$OI&eT*IeC)BmD8?LFLa zbocep7rRwrw}YP8t)|v~9bqHKA@?kRKvQtM4xAFih`?A87$*YbMPPymOca4hIDTS+ zJ+bEzH0G*X1M+eD2kD`u0FTqt%nT$K^&o32yyQt?BT~_!?tfBwk3Xc^BQ$6XkG0ajEtVP9j?4Bn@O9-u+6DQN zD`jMkussm=YKUfOT_5G5WYu=TlXVr$*fXev^Gb`6^weDfon}7c83s zo0|>7ShPJ;EZ1Ja>JZCtDUdw3et=#Hte2S?BWob;Jq1QlEWDa9D~NQ7o;-V7bW?jkHRJpvQAGv{E>8k7(`5A>wP5Y#ycW|!-C zMCWlaRHsMKe0Kqk2&3E>Pn6ub&t!aAoHfSQ<(@xlPq-k7k=*et6`d!wPQ8)&3(@WkcgrrtLIj|a-)pO)>RA(N< zOVoNx1BAnl+9Py?_b3P-HogY(iHK$3kK4*ZzRnwtBUh_;>>jJC{b4w8)l5m#E$s9p zHW-xe+7sv5eper&5y~@Ebk-TTS{<>E`{78;QftQV!vSLKv={@@{@kh%>j$D&zG+PK zn5#}A%&b2Iq3Mj@_`;#uRUiGvR6I?CMjhk@@c~n?pwvrvqwsyW4MUS~ZYG{fp2XsN ze(p8S9nz3N-0HdmUR2}Pve`GM*Y{=7#z8|_H|_x``kc#_q4J)(JsuQO`WjC(&FuOm z-Ap(hoWc0n=|A$Se}v1iZ&rkI96qkVSjB$gO=$4jJ_zkPs=0itE}0KUx@aFnLEhsA*_PygiAXx{lniwuyUD)XvbdCXcKkg=d|Q2EVqQg?qAAa zra4S}coC>aUSr3`E`ym?>fDo8W#+El2sIyfBJ}cY42_r|RH3Z~sCC|i?YHx0{I)bE zrR9^~vH~NRGT4YFx#}fhh7z)vVz)3j@_Wrhx98nS(-Eo^BGj9znlQs2YU_h$rvHcE zHwrz*$40GjY&`p_k%))Nhln@B&s@Y?kn1#Tuc9AYfcsk(*WLg?SHh9t2blTsY0BKD zF;qBibwZh{25#EB!Ax!Q zTuhv#X-g3YEYbF??tVa)q-bfG8$yBWV`!nFO0N-9=jn7u;;l8d9xE}B&T{I4zgq! z^1ZKRzen3X>4_1( zE75@cPrTl(?}o9&WgkuOno-Qq!#zyohCwy%M#k+3h~GLxv59rODIyR37zxhkZVcIENVU#7E`Zal$HkUjo;slRC z#-KXvAKY}W4m%X|~Sv`LPNdvVw%m+aK zZiHa3AJd~THOCZKx$6#s*Vy$P7J|j1K4MW{7dU{vs}M(W#gRNH$;BT9uyyvqUM^dM zowTkC)ruX+ZSyw8E_||^-93G6JaTNQFDM~9?T!tdm(s*uJ z4^hc%6is;6ZyhVD3GvQ8R&{u3(jEsDOeEA5w?-je=kCR^=72VeYp!^ z$HC2*cJt3ezBknU|8H(R9>N4Rt z(%Q6!;fp>nd{Ic=YDOlC8W{8ZjLgZY>k-=4%SGt*bEvEZ68CJ*%dboO|Jw5yb5=2x5PUoV&4_`E;wIlvN|DJnjAEa?KQR|JqZtKdxV*>rl8CuHpglkoFl;Jc z;UwCOyq@Gqag-Kt9Q}Nc+n?`o!=qb6WO6Jw)EDY4dZ3d{`_;pT#D*uiB@T+2U|lf% zb|X=1kR#=*S=*%jBd`s!MGvyq48^O)CIq8} z`-Jfbdm09yrDiW?;aThX2KqVmDD)%CmfCHHr?~}&dclklAY3noXCkS%jA9oRq6(Aq z?~ubHsTV4;&f^{0z1ev<_}=PA?&JLwda8zSYzT5i{M;>m?xB<-2S$-K<`5FreE?qv zj6_{$bOPM^54nWgp{Dy#XL=d+dCIKuxV_I1n!HKjPFvtUCAx0F_JtF!^I_VE%PRps zW?G#!nB+F)|C1tjn?6gb-2|t%m5MrOt#6w|hPcjoH__nkL)M|G6)^lJq#oo^&p~!I zghL#@9_LzsAJpPq3t_k1_vp3bp8Y0rh+21JOMk zOdfao!@&N_UXj$^%GF< z?Pzo^`PNcQ{C@+h*TC2~xK^|#U1C?M5@*Xb)kHft)-1>4U~MzH3fn-68-0-f~4 zBeDV#xToZG3sU#ma{@QT#~xy?&V>Gt%4f6c8ob9J%tzR9JX7o@KME0A_%1;hbEXgQ ztF&PrIbHo5@8SDQQ0K5WG{E!)UR7gq7=3#OjzJ=Q^QM%YwH!^UeEAL&;P1qwt92kx zk9~Xu04ZS+pKP3c4d2Loy31m6Q-m(ZJAUZVQE|O|1L*WH9&5HaC3-H=%VVT3iCpn%fq2M8E{VIl$Uo`=dKmR@9@kNHF$or<>;}F78pZv> z@MAK()M(D4bR`TJC7?#La@{6q{V(qh%F>_u`Z37obp0FRqECimRb=HcDHD>N1Eu%W z{5IGnTU~08FMUhc`sb*>r=U8M-6QbDrQQ};ahyoW_pfl}eL_ZI zWH$WTW;)C-Dcq^#A8;SCeHx8DSqA)-xy+u+eAWeFWpiBfFfgac@;c~A)IX1re^Dt_ z*$jkIfKBJ@-+QRqun75bXLsjLcSz(FXElLud1=;dGY~K{Cz9Brg@>|6b_c~c;0h9C zB}ahhmwr9f>r2s1`21_}d5ZtRI%_At!vV%Vz;Cakdy&#?$u)$Q%T96Wk#+`1G4Tb( zeZXcb9sGd1T1=K&PU7*8`NAT5RbWrU#(=u|Mx@#i#LT7{{Fz~?{KK^LLC|u+yqCuW z6u?HjJB?b1b9ntqp8m_jhmw zre}G+3v=RlET}F+J`y>W^Fk)gEa&2>a=|ZFfi#!{sF(|D)gf*)@r+* z`0c`PH^qg5osf3lq&8j6(Ikgy-wgF^bi9yy5^TCyZ$TLmlWc$%q%pCS_G>IisqDhW z7^k*%9T42)u!NQsp^45O2dVYOHm@(hIyo(3f>sXHWQ)_0j* zby<84(t)G{f1~>QtEqj^cy4ah{TI>zQu#%LUDYjZ$9Iz;?QAQU2Xf_|HS=+M{YE%P zk$zsH;TdmmqF^z-E52L0oAN&3a?qfdF&y%7^U&I8aCHVGFhq#oDtyJ1c( z^1Rs_o@G%E`U-e$!`q><*)b#IMtVL>2t+hB(Zz&3*F#Ljj8zETE8z(F)I-XuyAg#u zpX@CQrfu8~Pf?gd7@-=d(`Z!9n+PZzt`m8wCck82L45{_JhnYZJ32rTvoBLl*M3qI z4Qyn9IFrFV8p;}OX=3UrjK<~Xl)8B;k4AQEA-=|q>5hF}+Lul7u{MZ5yb!x23n7%f zLlL@;heloBOXNBea_N3HxJMcElS!$VtY%o2egF9kMnRj0=2^b@A3BFKMAb`o7%oRD zhYb(_;&e;(4qfW8>>m`U*|JI@k}rtliz4|FdFEflx0+pNaf>jl+ho*VdYjV5P0;}t z7{>;Ua7+;M8@jxnWWWZQ1m*sqr?-*P{{-yj)xof*9moA+@2`2lQ+_kq42^A!2W4dO zys0YKf|T>Xj|$PDud(RRj|#(D;Ct8Y$p~$VkD^`CpZX)u%IR1#$&fO`DtQ8|Rztz8 zl@Hd8*&h_MBp21K&!E&`&YQkNjd`(L2x!E*U7U^3cCj(qtI&nZbk7x;K*|N+mS^j7h76E9UANQ9V{vkAozGRg8>-sCU5uUe~4* zpjCtN>Le>_mts=_2^w!m?VbCf08M$8!p1>FO(K_>0~ro{ERJ&s37acCXJ+Af^sGdL z%FUL#;l#E8P1lpya4gIuP&Pi|Lc9 zBTy4E`~@B5yDXd8cw8Uy%j67^oQXT|d_QSED8Tu+`5U`|EibrUt^$;YWz5CcmO!#n z5&}8aOLmB|b1;5GDB)HZ?22|jBt?XeBmDiyWN ze&n*h3HIu^d%Wc1+w)rJy7LuM*}*r zaS(>A` zb4PUxHW>N|QiBxAo5#>lW(CiRlWDvASd1363?)3ZmSh5N<@e6fLNp~r~yFE zrG!lIpllEYYVSTaKN-SNZ)VZWpPLjA~6_Tw7G)NFn0VSB&L24Sr4l z-nr}}S~X`Lo5a>y!n2jAIxebkN8J4kmX-}A#!o=8tu+ynhPsct3?qTcgZBXM!At(b z_t5zB2ve55X0R!G*a8=o9Q?cCcB^Re28PG%l@ffp)r&xSpW-kKQ$yTf@5M+vs?S3J z=zM&FnQW6C(4+@5zk&Hri{>=aXE%~)?8kw{*$R@@-M&r(u`OO~OAy-FRoc}N2X%mSKjNOq_C|4(9q6Eb6KjC;nTsVLR zuarf1$QWZ@o=2j@&Pm*qjIe+BpOu*v6570~LfG744SE+Ycf)f~iKikJ6tsaonSJV` zTd*UQr$Lf6TR92Q>4y%sf$$n?9ka>)-LP@HyoiN@7Giy8RtcIc{UUxU^MIWgMX+mrGr&iji~V zulAULoOio1iftS7=BzH;3+(3nc`lwKzeCCmHJi(akmo@VRkUq_ugdP7c$DqmbgUyq zLS5TnIhGyy-@b^>goIs%aLc@#FVbmyL%l@IcuVdfTlB?VTRpK?DfZft&!l}QuF+14 zuRMu|V~t=DqoYCupVbq==P3GJ7kpgVi-s6-Wi|uWa%Gk$GSSZFi#}q+^uo2? z#w$=yz%|Nx$r|FKkUIZ)5(PSTb>a#Gj6Z>7h~5Z%Bf*|^!bYYDi~99PWy;*SycuHe zu)CWGY;3<~LtS)K^1{tpM*{i?>ndE)WpP))8c>J7BVLY5tHi@=J0tmGyaX+HwEEc_lI&SIV# zpH#wN>|`P_*`8{ESgNpUn)fU zX3j(LCc|)@iFLcu6|Mk8>2oS;h&i5of)q~oViD%1gaUd-ug{X9Fcq+f)K{*-&Vin> z1v&TU<>(8_3b@KI3}LT+s}c4noDFDpKl&Jb^(ux(<1`!+jA~2CjfRv> z#tD|=gr!hgsruCtQV9=SxeH=uLKr>bfh3h?N`1z>zqfg~lF%MUHNj~VSrLT|X&R0^ zrWqKM+ZHGg{sCjBUB{rou6=lEYme=KD-fuQhW%WDOS1`Ac}-f>J&4dfD#AeQ8v?Or zbJP)*It~PCE=)+X4#Mz#o6sDmU06F1o>@JFP)!}7V@d)$y+hsZDF9$+unM3Wa z>_c%K#~hK3vT4kpPx0c^Gzy`Yg(*V6b4)J4JyO~P8-PpRHO7b~K`gOWZYJfM{fb=F zuO62w*FF%|uoiKjMetF{Kap$h0*bEMj)!HvDcqcq>p-ILcdUjxq6vOYDL-WxQd=r` zXLOgcWDBujD&@WM20YpQ$=r&j*<^*DMIES1-^5!$GOsz8wUiL#z;h5{!JA+Fd`cg) znf+h-{c(@UKbs*`^2h_!YW^vOvO1U z+DLCG??4Xbe}K-Am9oE%xKN&FwE#!-C&G3UR%Z5AsNZrkL-Uvo%6^33V@fYwk7BIg z@d1amqmIdHz^%s*S=4pKICw9>?&*BZ-ar)BC=B#rawUDML46O#%=SBQr9q*W1E49L zi4xMz8Dq3Q>?XT_d0dIAmA;}0SfV%)FXMPTIo$)%k6zN)TV0Uaci$td0JDoo7^~kC zt=TjNzZz=ozFkt0Yr_)?Jt$vm2NoNMnFGblL3&~)M$K&dcI35va0S+HFrK`!B=|rE z6h^jz`K;O0&rnBGzF_J_^OSEGTVo>(?T**P>2OsbU3>dmdP_lJye)cQ;d%ir>0 zY<4Veqo@4U8n6F6qg0o#cz7K}Dw~{!IzvV1m7Z*jb4}b|zON7#N<9;D>HY+8*78|H z)KEN{$y#Oc#{X9h$UU~R4l-WxD3=cEjj;V3ZjY1q6r9yUG*dEBUv#h1Gk}S-uQjq* zH%+XYPF^E@6yleYp7`ZV$s=2G5x$xwQtft%U6zJ+ZSO~>0m|R<1&6H}vM@c}fWkUC zA*$4b#+(WP0^341`V)XUZAA+-4;RDr*g80m9NDEOAym!pBFiucx{e_`b{w;<&_bA8qffS1E-*aCt(4aa4j9DOCeD1Bi=2L4^(0!+zhQq-$gkJNg> zTyyjYa3erBHO$3n^`FStr94vH6ixNSgV_|ar49CX`?uLT?21fHBGBm2mQT@;9QaT) zv6ky(QS&Wjcz2passR^d11KRJUymi?7R_6Wa@WJ(8YzAz9RYn-5%nnOni&Sm6f#qo z)sKqD4ifzDSQHS~lA_Gjc$oc@aypqJ*7njD=qzJ+dM)8`!yoij4h8FVQ16^RXY65W1e&KB0~GNm%v;&8|j3@zB<$SO@C01VGZJZ#&p8Q(5Qxs zO&-tm^ph$`y1~|KDRS&ibX-}Rjdbmo_eE&Bo^iETej{0YUkFZX81JQnRvXH#p(4GM zajZvqlD>Ehd5m}rQt16c6nNn><>yU8Trbn7U`AD|!ZW}@uitBfV zQ(4gth4#bqpHRb#!{N95Rgt0WwjP{p_m2x6R0 z2J#Si|BS{8@#%9Ap>mv$;s0#Gy1>PUDD8}M^9+o?`6cW(vybA*HW#REEBBiIr9>Pl zkaV*@saBPOO=|$J?1#FIcg8SR`x5DO`x=M zE*vL?SMHL>CSJ5b$CE%Vgva+ovxameb?p`1R^qc0qTq()(Tq8Z;t78sRL060 zzbSCly}S6_1D6*p5aG558Z%{<6j{K^2U8|c`?(AqrtcCE+I~#}YU9IeELYggMDvyU z?Hc3lH)qF}7SSnE4tuP--{R8gJbK;T8Q0=u$5E8F{170#C}ufcP43aqzfYk|&7(<7 zrDlXP-|EzT3_|y1IQKd~6NX_-Fo5AZPh$#)LGnFpH-3945xx>3j#>c|kV|nQ3*zcs zG(I?wr{F?nje~lF9I8*TL5yy;L_)#sF)o3{^$>AAMO-gH_d^re1k%gvt)Tlln@ab* zMkc#1?Xmv-JO6_`s#fH9e72+}rv;sKowPg4d7N3`%#C7uvb;R)lmoa> zyrOS7AvV>4s~2K;yN{4${wMjqEGU__$FPU-Cf|9i0(IVATN-F;y*|!`h?-c zZ&mBk0bUq29 zDlkKz4-oPqp%nzFTq>2N@Cs7>+y@*`SHfPMQ#|u7+j2M}su3qx~@let$4>FzK@tq21DyDJe+WZ30b?t#)PyBjO!hGg=&t9eUyxxo(o7x~-$$Q>56ML@ZZK%b%c{1)0 zXO4=&x9nvc_t|zk@2rrVNxu_D}L~ zFaS+_RmL&It3|eKftO!*&{XBbk1%0|L~+}90ZZ)P3@@qR{idEO) z>>O&=N)3@RPoPahO?u8-$@ynjop= zZi>1(6N^4>@c=efZqYo7n`ISp3!*IamemXNQ)DWt@MJgj<~=7KQcyjZLH+q}y#5zek zA7CGT^96>iA_A-M!b&vk#B5yf*`cUcuRe9lW}MS(S!0Bnd%g6d{OTLPS9d+UI`^ah zfvw-3FUX}dqvYj`v?}UY0b2y5uEj@}?PTqyyWFWX8wMT~;|%W!!wVT1!YPPAl7c`8 z#AESLnoZ7OzPf>TJJd}f$~M56-bUEs&XmP^G|p}13~&d^t+3{Z%*yYNfcnRhPxGlP zEHYbEPxm=I<)!YTLB$weF5~9KK%?CL*I8gf-RT<^z5V$5Fty598b9=^>1+c%l>~7^ zi-LxdJ-M3zNr=r?DE(V~%yye8yw9jijUbBVKSMo3c%tFLc$+2fIy=#F8EVAWS(-f# zJ7A`FA@JYGZ5Mz({D0v0lT_b$_pt5V5)s4K!DYq)GAYXcO#!MmKSx|dO)FFu9oGol zN81o)tP)H(|~kvsf>J*9*Jyok=+qSTQrL(vwr z(HB!b8w83eUno?`)0$x>Al0m_VH=`hFGipRkuyrT{68xZ797`cn2CpRFoSL5H3goy zfrhl*HwMDslGLuKP5G1@_Ww{c7G^LH=XlgiUpQaG06=bcf}tur=Ls?-{e2GYcu+- zo?sZ!E{f%nUew6hU`*ZoSj{^>u@$~~Jkpn~;RY}3#WKv4C;%KJ*#WgyzQOM;_LSSv zNTohC1eNkwdpkXbl5EiF5Uj8KzihA?dVlRHWs+HH0n*v^Vyv06cPbk6&jHHZx&aAX z4bw3J+E>>RHNxN}`e0gAq+2Orx(oR|7gB7mQxK-bJ=Y@N!4XvS@&*=`H||DeDMa=Z zkv&ypPb24wG?Y-1>xU6FQ*Xkv+8T#X@U!4t_n0KwEGDm|Q)MGTo5(_W8PP%WS#X!N z=@2*ExeE?C+Xqo$_Ccw30d-lx(-Uh5>@96tqGwAP2X~|LZx^AGzE&}qr}+FhjEMOL zAc?@uh{`-q#jW?D_2CnEJ1sv%y)Cx6QtB^$dax64{Fr1`JTFIw2df1F{r1XJjDC09@`@ZE(0Q7FP<$Se^j!2!hg~3Rv8bTC}{N zV1~&H+E9T|%Xi`1zlH5Mm#NQ3{^vX4I}d{v)Gui+jS&a2FrM8m{a9P;99`Ai^clAIx zWF>p4v9xH0Xa7`4Ogx~SG6fWIyJ@IcHrr2H(+F8qIpA)rKcoA!S?&mvlbm^&!2Vyr zC;Q8gMc7{c%Sgi6CK!0KKekXIgOpU?TnM|we<5LWWgqTU*qFoUPLB={uM9*nadlfj zF0(5hzXTMvD-qkoo85@8O?$w}T?%`FnekAC$RNhN-8iq}2t~u>6PN_k5l9&HdM-XT zhXhoo`{EMtT?W(!r1NqPonyg9!@qbaEJY4B>Wr(VQteH$Jw5~SVW4V-9#EHqUrU_x zJmStcHWRY22jAlK@Tx2duZzMPqlAMFIlQ@g)c z$lakqg9D9*G`8hgZv9hN3_m8t{zx-L?HY(o+E?zvXqx||+@OD9AFJYrr({nfW?W$U zQxnuozbDrp>R^D9Ga|r^SfZ5ZL#IHICAECTBaP9yyPC|3-Xg;L{Swfe(NFqeA?Gdx zrmo!w%MzVoOt9Ku8>E&2WOnhhZZSvbvAO>dr?LI4*aZjF;6MP2B~_I;6zIN+@q+bN z6+)-!yhB&Rk{yJzv*sc+9gMvZ%6BuEkMy)Y&PU;)YZz0va;B_%4MFbu!3Iu&tnj4d zK#$*>R?6WsETy#Dz!nzL8ZAKTcVj6FG6tZrU{cn@b z6*rbW06H|nHL1pT$txX4Mcm-{b2NJ zrk$8+PrfnT^jT|Ng5AkuH@HFHuFH*aF!ST1q$1my)9}eVY6HTAd+!mZ>`!E9?lm548;JleKXNW zuMx%ql2=VD98Co5An(tMFwOM~F`VZrRHd`>b+Zdik+A9jv~vx=LQG!DMCR~6gMmhz_AOK3(lEL0 zd;sb8Tk^f*3|V6QmqLvF$g1jBIli z%Mey~kCcVcA+$B^KY%JEQg^;8oWzRR&|Jy1MsLFU;MbR8Q~dF=Yx@lKSQk)H>mNYF zrbY(T)pHBzX0w;ib?NNd`@jn#mP))6P`UR-XI%L$xo3$s**jCXq6)bOT%`z0Eu-p@ ze^Io#De4+Lm4U=LaXdn|dj66am_%XlZ>^%pt3adD%w3ch@R@mirQHgK8fS<-DkWa5 zPFFf2O#W;x^`;bQ1QI`=Kq-AcqSV&?baZ*%8&&}FnAaESVzQ&aQ6!i%Iq5NpVcgl? znl(sL68ZWU%M$wQ{%3ZX0%>01k%zLvhQ{KS5UT#=%(O{JU@9`FEL?~4-&AOb=u<|; z7*zXBMZN`Tm~FpLOhB5C%jfac3^S2L)Ms*wWI`juWGk?8-d{|&nKshd(J^ZW&`(^pfFD@CA{Dnahe8ZESU1P@k>x|-UNLDXykUNEdevWv&H+$ZV(P-a*1y5 zf8!rB+xZ-A7QGH%RfZ*X_2Tt}QFqh>-Zg5tFTN%{P5qrVx1c9pm8)#|@})`<4m&0m zFpY-nS|1O@XtU4hi^=V4&+C~}RLnKhH@6)*Zkh|8%`uMID5oP^6r#||NlBr**<@hB zGAij&jR?2o>G}#|2orr)b;PhFzjp(&^rhkL`eS6f%nbq=RY_`xGKhPckb3%bXtNr@ z&w%a_B=ln!K1&T7z;c*wN62I)^K+WBxCx!^3`PC|E9AaR9bJm?xu<~(TBE#s8_$m2 zycID0LP0+!$+cgwBW|V`oW-B(@%=)TVQQhx-WLgWSXoWDcLgTT9Z*9%%l9vy}I3yKJf^ z%l=77VHeDlnWLdIq)-l>Ct%juW4c>E$O^Fl4pagyY*6FpNY*|TT;h+85af--)$LGk z=2SEN;GX-bLeyyi-SRpr%J}MnbGl}Wcx!UIAFoq74o>#QG6CxOLTT5pBBHIdU#eY3 zj+>j~#iOPVP*mc#2B_-R0vxaYIawM)iMJv7ly07(l#V*>w=xsn@`l%Xu?$mL&$}@b z@%V$AP*8}x%h|Q`#1O?79p;v&@7samz9wU1EHl<=y+KTRe52Z62S22GKEMxDboG|t*A3}HL#D)xv=9i z9C)}xyj?q$lyUz%!${iWgCczWSv9BBeHNazM=t0rrnsk_!2Og1f06gcZ#txtpInRR z!p%*=U8>K&#IvUN97#lUCfAA#(4w9f++^{ov-s2nCX9Mvm>|h{h96W`p;FjSp$E$| zVZHe{v0E-BbYecE)om;G3t&7BZoIcL0(DB+uc(WwNTtiJAv&m#d)ey~Gjldwln5P$ zcGI;*)6zu}&ArLbsuW*MBAL&(-TDl1Q0!b$7j+nYpadrtQJg9y+wWm@5fuzk6zXvQ zfvFU?vdA|+6!9kMWZysH|7`XSe=r!wy~;<-!4*`ow*mt*>iSkm1&2_BQHa=ghJ3Fc zLA3b?N^i=0*1(8~00gUKruJLRXpg9WBdFze9E!+weo*PRI&z!ZH&9S_K`O8PpODHi z*+CZab4<{&`Ix%`_Y3&g`PXPXmx&&DR{i@?0gt`#CfN{RqkjTt3WV`GH)>~vo6;e$BXDdxW1{`K4Y)(BTOiggB)@$tks^KeOOP3vr;p&-EbA~r$CeCf1IL8HM<2wSu?H?&G}BVDAx4 zfv|iIGjt?v@`Qv%Gjp_DyB6@{&Yg3A-w`u>vl)2~;7k!+%OLbiNoD5qCDc{h1VYy! zw)ba{0A*tbp(8%4NTr1RM*~ARsWWZ=9eEs&K@#XWo;2FZRWPI!b{)gBhh8I zUF7tigje@;cZE18%T389jyrDabxT*Q>RcMm5A`83jd+Cg^%_y1V|5U(^0)y-5p2~+ z#mF0WSMIllQ9eaO(8A>9bqVv6GOJ3iorsBtO&xr+RTLqkw#*BmAM~gVDCe3zb{bg$ zbJBC(fYsKgl50zm(R5o2-rV^QPH_HG*ok#GjrO0>3wes+YQd7K_c1W2zNmFLDyBV~ z)^WIz%SgI)kHxq$=(zbOEcmu*q$f0OfuZIOlU4P}YmzmNHObq~1lwOysS0ELcPQCi zT=m-x=>KXAx>8@NB?|qEF>EwD=$4jeko_Ywyt+N_D2d_S$bT)%)1`V6#Tnu@B$iw= z-$cYaS>-|*%&)u#nQTUqrwcC=4fbe})k$P^hF-}Pd~pACKo&Rq37o8XciJSYfZR&U zffY<^bcX)`DZU zT%U8r{o#n(_ud0q8i$O^xwsmxr+@<^?NeO8TQv!GP(K5wNJq0F47$_?Hye7jZo}i3 z^^eSRxF!0K!tq%s{8k z;oF&|RB2lqgWS$9?W0qI&3$_WG>X9t>{ms6wgy%s8=Az2YiEneN1zJ+70o^SfRg%l z#lznNDYYN4ItWphNO&jh77q?$^&X(a;g!=Q*bdWUBxwQfK7gp%OvKv1D3==Q~wwsq2d(Jys6n%d~v+~Td?XnJ0F`+izSRdJM8)kp_@*;<8hv`TgIKs;O|Ur zyW-it(_WlRxzuegE9y|k6HItCU+}LXyHqiRttEfnL6UDz#pFHfXiT{s_~2PToz&hv zxj|l9(8^z*1GqvhPoX#I+e!0%3a z6e5wyJ014c{LxrnL@D(|lpR*L*$rTzH1$)=UQXK*OmJBL`zWK^0aBM5OSRP$>fRA6 zE8`)4kMMg8lOlZl?sjK9Zunb}OGTv=Ov!IAAklL(oV*WR9FD51k}jf&=B2;z?5Nf$ zV0fR%L&0_DP|?UnkQXbPhQPIe?i7u&loJK5H9)z!VfT^6Y}P&QeU6OTlJ!1N+e^!_ z-b|o+V-=Z=__Uom`CRd|33yR`9}QrHp#oAL`U%vIjNVT}rP`(B*A7NkBhn?j5PL!l+ffn5+YT*-vQ5e(hPpmIxrrrO=)ar;e$fOy+Mj>J+0(vyR z+RGx(3+V1HD9CH;#I^O}8XUGZY$wBpNOYs6C~omFia8O0Y$@}xc~Tcsh8DNK-}9NN z+nXS0pot1sXuUO)RMahlX%)+&z6h;yXK~Y10cW8Jg4>Xtcz^T#w~P^3 z98WM|?Y65N5|kel?Y0FiUeb+*b&Qtv!pQB_4a5%KJqDq}baO-Y0wzpd;9|Am5M++N zCaY2B7dVoV05)r^*LY3Th;YLRsv3DfiHf{V#bV4B>luN#+d`|b!66_{fQ z)P>9zDeTJMB0f>gB7jRvN!|4^#Qe=*4aY{93@mm*uDm-^?2e+Sc&1V2_9uV2F(kWjx0o!?ImsgxK4LN;s2t2qIgCFg9ykoB zPVaIXOW*loq=9j5l_)Mm1AVWtXwv*ERW;{nGx6jZ&4_Iy*9QY`lM9nQ7H2x)ljRJi zJ)O!+FoMqA=Sk2FXz{^N9Qek4Gl4U6rek_7nFy$NX-DOTEUI#u_yqp(`jFetK|B`P zOLcM21b5oE#<5!o$*hV7t;msU_nDCWyJe8fSzGDpS75N1j==>q%^J?7xj)Z9WDXaZ z6?(?NmmOeTQ5r$c{wsBCrAw)n?J4&~v99F&al}mt%uysciwd=s? zMPGtQ0vvtSauihYh*zU3O@;m0D+j#z9E$$yH9lo6XR@gKB_`@@AM9W{8rn*=`e5lD zgS;$-YOGL=6RPn-H9@E*3e_Z`nk-aPglei#O%tl=LN!CEW(w6Tp_(mJbA)QHP|Xvn z`9ifos1^#kti?C$dhh#oQg<5@PPDfwzUjk>y^;H!2*ajnW zFrQSnOW1Cp`cIu(s2Kn8*ySpR0shD&5##|D_4^%o>C=Xfs-0#SfUxu)#hzOXd$7FW zJic}-R3j|zD{#Ng)TK~IR;!Oa!^xJyh}0Lpaw$%2beu#&^<*UVz4}8#lhtT%XDt*?qAZ=nbh=K4yA35XE zQoxln`~X;!_U13_amxjHK6?tMqMOL1|1i$??az985M1k7fad^dd6+4N_(M#}oN%O} zYqBsXzVFHQuoD^&3DnJOec^UgxE;e5<9vT6$d}@`@H&n=UYKdGRAkmRIxg!q#XUsb z4x*B-H)ZG(Mn1yGR~Y&63;#iyLQXyIDP&yd&OW~cyOthoAE-@7))AI5zmtG;+1CXn zmJBWgVi>(|I~44%)41zh(WbzA6ivGED{$$~m6y$hcNj8#szC+^v%@ScbTs0PQqy;b zzKFP|CnD|}QB*`FOdd&d;qSJH0a6`y6rtPVx40>?lY&Dt(C?5l)a}z(C?0stujX^R zFqjR4)vD1Haf6MgI=mkw3-eDvayD!5{nAkCp4=OFPPu%tz8=h#l0zjK8tc`?y(IE# z{1rKpVY3?aRwO0gWGws)J`g)KK(+owd(h;NfIsluHBcv^33FP@b!Aibh*tROyr^7X zbb8G)3s?89vZd&q0C(SCFzU00Qt<6Wq>Y6>o8MtPOxlZUsrvzbE9V%J`=!Om?y>Y5 zZkUN@t`s%5}Mwi@cvfk5j7mpB1HTf5NXO6?{rOs-DGTsnrKiR{%`r0Mrt9C@Q{Mxc`(K;Qo zJej5G4t+`uKynF_0_YoEg?bBZ0M^GIuQFim?_eu5QW=C_Fq!AqM_%g|VF+zmnuGpZ%#Y<#ZJ0Z8 z7(Z5DnEYVvTc<~`d5Xm|CX;szPbkxgkHabC>m@M25t}~9u)(98{Chk75dHtEWLIq4 zhB0foe}hzek4CRp4GUxe3q_qXqRv@Tb=)V{R>F8*&yJ`~lgu@1`%QtOhc~6SY>tM0 z3AKmysuLXh@($Q)0oQHEX2|BSLDdcN_IEgq`4NM3vvCI6dOlb;n3{)f^l26tb+3%T zaGE?mr|XyLTpylZ`!myFav_q2{Phm(m5YXV@u+W4P{g9A&_1eU_zHbI2yxMmJu%KJ zev;BS?RSUx><=Et%BmWg>eaCjQN>s>Q6(I7WggRQ&r#@_x>4}_W02@dkw?LF>`q3> z(YTKuZBLq!b1@Qq?&iuuI)Y)p-5a&o*KP+2*ZtMbBHN7)s9$-eB|`PRsXCBxytD!x z(5KY9on^C56uQzKMdrWC$FVvy{AFcQ{ zPm!ExT+{i;;IyKpT)PRj19sgs5M8v;zkyWkxGhLIU@kjq?l~2SLIzDhc}bH=rPrYj zaFH-lp^d`Gfuf||u$Nic?vvc5l$;MG@nI+qJ@H4bMkA2bHzR`w+NBs83z*LEq55Ln zFfnd85L!fO6iThGq~PEecnDcQPMU>qzw1iw#!TmgSMmL_@(eOLYQdRJn~djwPGgQB z(*5xl+z7kAp2CbP(AbVP9N1D(=o4&yj@BD63LXY6FylQJvTIbWLw`w(h9&iDyO3G? z@IEl;%0txs=OpYqnmwQa<|_cZnX@0U4GQuIO&mYf1%`mlKJ!^u$)1vignYXh(o-)hkoPy;Fziv@wN9KCR>L)8j3k6H|S z3$Xdub&k{mmfA)DGBtN!0yR4w--Ek!z7z|aV$kQ#bc#pgohB$zd?Aztpbp&=+t{(| z;@Ayw>?VjSI7P>i!KIyy(QsvQ?A4+O{zKz6ln|6`-p7MrK@~gpQ@+lG@?RS3Etr6dj26#)adWEAVk15yTXbFo$ z`vBkK&oCgL7+M$h*ib!u4Zf_X$0~Kd`9aD~YX~k`8F0ivhi=KOFB263r#nJTA`zxf zU1?B^DZZ#$Wh?CT3@D+;Q@o|_w@294`#3_M`n3p4de4#3Nz3nZ@uD3!S|R2P7jr7` z{AMDx_@)1QDgD{Y0Z=mR#8}YDW6Pd1sayXXIfX3(%%t`gA#*M#i z66N_cMTxyr7fH1n$ZYB#oT%AGX8=mGdrakN#vGJI%xMvG297Ilp|8b|oEPsRx1-Px zXhn%{SV{XXJLB;WwQUlDaYwSWbsWJgA-*?Ki~cCfY58ahcFfkx18SJAOOJvM;kV zor?D$)UF-@ZxJ1-^_qETljDtP_@-&o*+>LE6G6}QM9_;yA_$Utv)j6(xP$|IGEU_XemLdv8S|K4rze25@_Yo`oj*I*N$vgSD2} zI{<6fY~Dh|7oWo6v~2rBg`$6IW5l|b(3lzz2%U>n43L$5 z=SdyN#`qbY-ST)-^f%3w94R7-w?nD2l9F4$(=l5h-Ja|JUJgiQ^6)QimwH6HzOatt zTbAw}?Q~4O|0X^SbJ#`k&!^zwWGv-QjYbYlgE{chE4-T;*noG93vx%~?tSDi`n67J z-@AKfpoGZVe2-z~E6R6g7Qlb{GT2P;Uk%4QpD1%XBh{aol+*e)x8QUTx4?9SGhS@3 zL!sQ3RJYzkX)CqPOeB2ujGUSs0IC|X*A>J^+PF20^WHzuq4HjXP9fJHB`+}|-hY$w zM5-dDX#;Y187GMyXQ2UShUl>NOi3s0jR)}Guhz4ol7xTp!LgMEMqCpEoe95J6r=wF z%WG^soUPZZre@n2--PA?NmB9;;Jwq-Zs0?-Nj-VF?nuDtLK5`5I_i__!!U&y;4cO= z$Kg$G@BfdfuKsn+;?w2ra98xr=_~Os=5RiDdEg(1^1fUc#4J; z`1B#FvR+K7?!boN7k1ImOGa3{>KT0%o_fOm3;BHBEr}OhL0Q*=1iCDNck;C8P!zj$ zlYDPp#O>%@9>(f@@Wm=OA)k5*`q087jB|`!SJ2hB?e2p5tewPEfkf==QMH6D)G7W(F?)k zN{^f22X}xO4e_jE>kkaR^EK+HWbu!EFKF;1j?rMmMb;CD3;-p?w53d!~|q0S8-ilJr3@fdaXCdwbSRjNd1qkK{rg+QrepWT-<*}#UDB#t9ro> zS>J+^=KSP1zger(Q5Kl5Upsi+8M(=s@8%u6P+bkh~s6BCk(^GeWhQkXw)~?;;)MLDDL#HX;Tb!+3xf zA61yW!|y$X-eHQ-_Z$_4cEVDU4gF#9dJVahQ^AO+DQFw2046u|#xwT=fxnicXOIVg zEPf5!l`LI?2uyQWUgL9+380{p-SO0E3eZ=Rj;OnR68IN?z)Qx8-Z-TlJhL-0X+P-p zAm2#H8N_QyPG5cpV_PM94THC&%@D!1d3_Su+V>xTmMc4v=e2xrlP@T+0~0wxGv=UT z$8gHt#v4^pj6F`GElwQfmby7+;wy>QR-%EaZ_F7z+{mPije&R?F0*!Bh$DV*4LI5! zpjfQ80+ganoqJegD(_90U$@5u1o;m1`*BCEP#ZgfJ1usVkmG-$W;nbB==?@Y&8|HK z{Z;k;0zTF@&K4R$>ZdE=HwbRV&jg@ld0J@NL2wAk#_+bw@i~jE@Lwb7uZ!8OfR264 zD>j@E9pfqd4U(%$hVc9ig*%Vl`p zi1DPfA&rsi&KAmP-5ymW>J=azn#A%%yY0NMdv*PZG~nNDa;=&-6nBBwsdtlqB{6j% z1S*rke9t1k@Usf>b*lI}4IBMQhR*IYc~ke1b>k2}0?0 zCDq+$7(Y!*Ok%`0uqKVqU@MK9un&#uw1t>1McqsV?M9j#4{U90hqH$R|NtpG0Ud%Q>Ot}fpf6l{Au*U+VF;Doob-aqoTQdzd z@U#P`a5M>8>MCy;%2A)d-I9Tud+MNp^b zLosD;PsmE<1sASpltchuReUkh|2e`DvW3YE5wLyY`(}`yNi^*vujL z0DcFl!$d0pQVhbAgR6zP^;zCf5@u1vGG|<*f2GnM2B>7D7dj}1I8*4~OHkP7E%@u% z!FZ84p0~tQdv+Fap*Lj=U|Hnz6XduPaz#eleoGF^g0=wLM)Q&gdA1196F6ZnvRN#l zv|4-cd9N`OvGM}$7lZxGXwGwLk4UE&!Nw|92y~5m&fU^2E#BUV^<5UhDN?)9n%lbpeUw6bA{_u_rt%kt42au-8OqYymyg-U0Z`Uuf7*z>K z8w)MJIpt72NWUP9*KnPcdiXowV#PH-H4TkN zlr)T4U_u0H&76J(gi+3y)+KN5d!Lv_Z;X<%xfj)wI=Nb1Ry;hMViM0^hLg_o|PrJA9mvp`V~(_ zRW`dB4+NY3M1{^*$$ZZaeph1Wg{Ngld5YB~-5g-v#x9hyO2k9+_bR~R2TXZ(|G%_X5Ou*xKCl)9z(vWKcA8`jQSO;P-VqsT2 zOg})$2n++KO8(S(%suSsYVT!oFPZG#GC^%0!Y$M`U2h=vKN0(%iv3_w_dlbU%pyEb zQ#mMVX6R**Ylk-6q?Gp?@l-u?B*-hb=e(n7v;8Hp=LQ9)@y<5NgqM5NRUXjp=kdEh zDU;YF%ffjam$xo?gBz#vV0;>^2e9Y9O5NZ_%^8a#ohRcrg@yI^ro}B3zqFdnn=QpFixq!!`@EhV)fYpi>4_oJ#gG{kQ0qU` zWeSi>oU#q8r0dY9Xp*N5Vv2S*se>+X+aaKu_Ma^Ns|lj;rJZ?)Jji0vzvC$VDYqBjUB;+^WSZ zgk8wkwjS4+hZckJ$ZIl_&@4zYZ zhY{3jRx;Y|b91b0C7#13wT=gJWwd2IkHqvjNIR{30${h=y%5(8!+U~CY?sjm*Z%L= zUyZ51f+`=SAjeR6A%nH!jE|5nrHx=xC?Yln?MS&y*(DC_=)WSNos>hPjxhSO%`Zd_ zH@}NWJuE@fYrZYb~C5ds~d_M;GZ^uhA!SBff@xa0UV8sDfq@DV|oJVwXK^&61a z-MKJPh*?LO-)`fspji^bOjD^IZj{+;^;y78VRgErF26shZ0l!8R~+Mh zawhlLLm<8N8_h5f)0!tiq`?9rEvx?FZZ{cRx@pn=IDc4QF zwbMJ0(E6m@#=xq1*V<4NT8KhRJu6fZ{Rfo5fB{uuNK+#l;`0~NX;l4rpqwHoas*SZ zMV}CQ;4fT!ZA&92GLCRL_Du%(r2Nx>o6&1nH6YtZh42@dMj(R^`s?Yzy=`*4ohWng z74;9&168f6844m9=V*S%hN6n+pGle?(4iKw4vyrrDOX?o6A93ykR?k{)C<(V zzm7_|P(#{|3H-^hVzvnLKcgj=^{)U?LfT30k7moF0v?jI!y3!tL|4#}@8WbTCG{&) z1nH4~A??%D8rnI9IZwFBg@<NyHl;kd~^XDEi6h1r8T+OWIe`&;8k??Af~%A zhcCiS@X*;<0{KhEDBypcI`2KpuR?#?alRG@fK&S)K+XLOI(|q&O@k1naiibnu^{qH<~P>rjUENr=pQ)aSRaA ztRAMWZ1_Di!)e_-FbM8;_82L9J!5pJpwb+b){LN@P4A*EZ7(waibH(-;n;MITu10{ zheg^aw5TF334_}HGnR_1{7ydApyVH0k*45;z6k!LCxRi|^*;RqIeWW3MjCbFAcK7Q z3R(Qft~o|Yvn_$Ba`&Ib_r6^x>oq@+sqortq|QAnrB+Z%h~{B0Y8=S_mB#=MDakh* z*|%3vb1j?x3_QfhDI@St&XH-Z!cEpY=F-inSa*ozGGH*ja^Jt;_i2+X+QO`$ZCkGE zPzmbVlR;U-{c!Q_Fgdk`<&h;8@9rXKsQHqt%3MK>evGM zG8)uTVA35JQK<;1t*1Nt$D%|jVU$jR-*wm^>B4V;bMi1_K>4A6flBiuf!O~f zJ2Q%?^$r)wb`&$OAKr~V97$AxyL^NHr2+kXDhKw64>)-ym< ztbce5@|_4#=euqcK96ZB&8ywADCm#)DR&@CmDG8ZvHh@AbD5OURXihMfAY2y*osPO zG0d7QA#L4v62-mus4%_hdOVl@e^el=(R>Q(GnVyC!}6!$-v1CKEZ66%ijA*g zoGgua)he&8()CSUs}X!>J#Yo1R)zDhP7dTbB^2P7(17`-#FAX3ncErHmrsOW*|F5R zxDw57@X-mlFI?Zy!lOrOPE#p4|`7y?;{H%@Ft#*oKu zU^>J8)#(vMl>aTMp>w?-xy>g(M5>PX?eIS(o857roMcBX3*&&hlp9C!>a?TW#qJ6) za#XMx0myNf0)2niKyIh|fW8+;Sf33DSyPUxLXn)iGyzJ96hav03dlb>HAJ_i| z+CQi_-OvS(9}J@wk8{v9*~*G~P3Zwtst)hPj;B2vd1L8hdY;23ofoFtxU{!3jKq~4 z;>u2OWfv6Q#g*M~eqI}uR;1Nti~gR0Oh#%Olck1vMz`><3Q=+$SKaC|mFcl@g8^G4 zmr}+C-LZaIj|RwJdmOcW&EgV=Gn6vt8Q2-uofBl?76MQm_5tPm+BOAVTPuDbE_7}z z9yGl^5v+>x@e!T=o2WY$Bx^t|K#zA6PWQ&;h;g}MTpl&;cnGs&;VbFRlhJ7&&diN` z{MAtJIKU&ir;gI-4;w+=+%tn`vz}nyP}vYCKF%?^68Y% zxMlj{@t<6w&*B(KJawkV6^qfP;lrC?AF|eCB_i$c?r3Y$civ*MY{OB(+YQv*mv{5b zkoj0JIetwbBkbY93o%9i3Lrl9B8IGh7%+$$eq$On z*8K-EPl|xgsrT#`jwwc-aad3 zM$25F{}s^JWc!%$y|=lmLX5yNgCS7-2;+qTI!_l< z%Da0oOr;^8$-2u2nZCt5*}*PFI7W&~E=CLH_Myc2>v6F;g;Kh%f(sz&)GBiM>Tjs$ z2#sWz2fhgfvEu`M*>Xf>Rh=V$;fFd>@6JQ&RE`yqfv+VxjmK&(SUZnf)u~)ZnONV> zLl*bRNpd0@-=&^`n6VQs=4R}Ig;5kDjesI|jDM|Q$#>+x1JQ)?cezfGb&j07fNYN zH*r?&#p}?=y*!fqZ?usi;fiRv3omW1rXls*Um}a1SWSU*N8na%-XGKzEDM%j1c=Qh z*D|mTs(IA>wk^o1fRPs^C1kE+Fw*UPryb0G5F;RM%_~>+7U}!>XS@yE4Y(R>#%0cWQ7Xb$=Mv}RKTlW z*s}m+3BFC~*-L+cm2)z8O?`N_z9b7rKdiUU>3EP@cP`SQh6BM7dws19iofOg0N!BC z*Eh!tuO2OsMjJa~jC#YnVQ)tYNns7=4ySwI#fbV!oUsO$q~T-cE2+rwJsy^vZGnZ@ zsVWGqb*rQ6h5Yi-p`JyhXC?o zAD=ZepLzE_%4T%>h_cTSP8!$`Lww%} z{wQofprq?u%letVQiv~2QPgkkEi5AeH(zbt6ryh_Hkh=J-%<8~IXT<@0M<~AzG{H; z9bx_y1kB14s4Xe<1~P2lN+ljl>BgS81t@cxZl{|X1(lxj#?#h;ICqxqd?~OQ!&i{~ zRt%_ZPa*B1)Cqr}{FOf`dKJ@EgJH|lz=6fc$*wDqb=bjD>~_9^rywVTR&1i-e*maX z^<$w~96q83M4IC(iLK6l{ZUw8FL->D{Ie+H))T2ICA{8*O4n|n#yf5SXY`)UoyfJ} z=~k8CxK1ya)U$ZGd!L5jRV>aDi?hYz9C+mC4Ip~*O-$s#+xXqVA})YXGWZcW-{{Wc z?0g3}2Ym^jhXzLM*@*9C5S69O(3y#4mJHyxZUuu;kI%FKq%lK!BG0H%lrW<$F4mY* z%Ie{0PODXiVNXER?cW6C8jxBoEAmJijCjA>_d^>0Q*ha>KrNI$Arb9)JVwtP=QW3Q zjo289=h}_?kj72DE*AjH!q*QRK&<2CdSo;WZ@?lK_f9yYfL;;&Fo<2F#jY_FcylD4 z59u}v<7u_}ly15}nU8CUVt4CNZ=*qY?K0>Se?@&C0pD<2Xb$3xWT2j6oBwd%XZ1Ka z87TXHCJHq>M`>r6PQ7nTgZ?hVYl}lVLRaf~SPGt*FjYbGZ9@D0kG1d@QbD{JFntk!J`+Lq!R@&DsXx9MPUpB#;6*uz08yOEdQy@ zV;a?`_C1TB0yny1m|TM;?mg}!1hnH4NP7v+h%e8l*ct=4R&KYZJzA}xeh*lv=YP-v zWlh>qvu|H%s}|2L}M`466tYRaSNHWSvLU})gBd{-2rDjdhNf_f}2Xm{zE zRCAQ9n>GK1)iXsto@UMNC|jCPQN~edZ5p=LQ^MafqpN70U$8#8RFDegHfR40y{FY`miT zGXP1_W}7!lYC`>}jRaR<=_c?)T^5DHO4P})1Mwy~JBNle--CT$Uuwu(vH#H8(F(hdPt z>cF@I$dc&ci!@~*AFa5p%`_5?XM2dob4260qVYTscFEITv;L+5HSNdq?e>EgW=Q5M zo^;QJIxWI6k9j*$A4AV5bU_sw;Io8!l(P{ee{F z#KDb{Ji4R4?U8V=vl0)3Y#8gf2ejtFkI+T6iL&AYr`9U!-)jTjIl41rt$aN1mxT)A zu2`AjOJ2Rz0G!D06Qu;wjf59{AmJwZd6+Y2>0wqs>gh~$MgB?mT*z~>eK-RlaGDg}dx*A%#fci{UzidR7>5Rl(cKpd65b%Ask@+0u zFRJT8ZcN7}R5gzIDliy)c^qR1FVO&YY6O|b z971-h1$~gVwq^Qt%-0Sm;(l`$^vm=qu5MF#FmzXskUMOg;k{=;4rbv6Hqz{ykPb_q z-cu9U6k=gD{N?T_H+B~8@{ZmGA8Nn(0V<5xUWRr>4`Ud2dIy*3=Tbc3m?NY52Tdco@5Z#u#MbHnhz+s2BBg0;?r!W65DcIA**eCKDuT=erG& z!To3j(k8(@KtvAx%sbYY&s~rz2j~tniqhC7y>IMAEMc2wdB3-|sJ-0)v`w!yL9GoO zsN!ZEYE=q<*~kbd@!0;)!V0uKkNm1-(8)Lt#H}YH-ie6!M(n{VG7mUiD(FKAU6MJ^ z14_LUi*IUzrt{veS*p`*=}z7?!)5VzA_ChCyvza&Rr(X8K2v@XT;*AqB@n}9&vCHl zdng4hYPb^M07|tr6WYzmNw>!xFX$){mWCJKZNja^lvENKUK!wRNe8b>%!8AF^6*#A6^vhJ4XKshTz?Sn~?Bf z6o|OBXBxs)?iN1fvN!?)050S65xJK%gMJ$5)e&)T^+en|N(niDuq>1xz?Rh>$5||< zU0^4RGuOqL8oj*SOt|124P zNJ`SuFx(wXK^n*^Q&PpT`)fDjmI{4Y6nl}owVR=6dYj<`R#g#Q48+bl2*^`c?5rnt z)~EberpIwn2k5|9IkjQlDlEt{?9!@;sGVJzu#J}6s(IGWO4s@Xw7 zB{|sXGaW(qO0TRb@9iik8Mqnr1Zo&JYYmE4zqkh8$mVqmT)X=FBh_a7g~O;lErIrp zF3EtYsOQ&!aC*Anr=-xTL5zP3&)mV7$V3iVZYZOi4`mAsm{*nub|ddSeC!`I^9bw$ zK#RwdMuthhpONr0216aY^c(oF^qiBjryb?h+YjzTX>gQLBd@Gq1Rwsx8v1VrCaWCU zqvc!h+e#gh*b|lCR3>=LpO))pE9%k$G_Ly${AN<_4#rk3s=lIamVd!>g`<&ZuuwEu zq%g*Sl6F52wtpUOC~+ho32a)05%sG4KcYmdKVfwU9=Og3WE!w+6gr}511$$E*XVm} zpdP)|2XCDBUim+TT&)?|B|X@JQQn(P<}KO5mD{?%^c8h#;J&7DFgxCLONMSxDIAu> z=kn$vEe@sD`yqjp?N*Y_Cfy?Pj$6c{m&oQIf#4TnI@FYS=ZhPmMaA<+k==DC+(tYt zRe-I@+5#7(DGvG)OF6xc2f^=u5{1^?B=x1d4ZH)DFPnzit=%c{E)Ppn8Md8G7g4#+ zhRP!E5}rjid4W+Vtb}E5)m#jAKhpI z`~XSUY&H}(p5nCg#y{f5Gf-kzoOz^%8knJg|Ho3kiS^U*gvrgBO*y!dIxn9NWMZCk z16iz&bHgHo_TyDvABtSC6&EGNWZsDtgKUGZbDsV4k-BZf0Exz%DPv0v^1N6^U2E}k zO{IaMh|Utx*&;dzfix&SlpiM~vc$Qt5jI+^j_X0#mK=|l8bI2G`|v1MFNnAazo}Z} z9aP&E!xT6kZl_t}IKqVmiph^CS1?;q)^RDwl~#vpa2=Yo4r%!CsTi}E%lKV^?cHSL zPW6Qj=^I=uT}Ij32&@a~!#}VKWSY->#uaXaQ|)ziWFuqU!e&qh6X0xi7Tt*oRg{(JuIMIr~3oC{{Mf}AQ z(%w1H{F_uFCP5(o;u5NO*{KT^PiqNodI>d~%2uy-A*{`>`necx2fc2z$F<)_ckB`2 zYe0ibaYNuG#}SLm1;-TTP$6B3z#AXg>llo@qu^Z*cwjyyb=ZiDov^@KqEoDOwFtyG zC0N|Yc9pY^nW}$%Nc-ZxtY=SA8<|M!8cjt73b5FQy|8)p<*{-6P{#=3A&C#Ql}DGc ze^OOFZx!URRE;Y)S`HQ@q{9dZKN@irT8qf*yrhnP+A zh&M-?lw^&o5V(fR)CmO}7it8u`S=xLXcrYIm9hxh7+l(T2vuiYmvJWTQ? z&sK<_)olmGuDFW!Pv1cOFHb`L+}E>#720iBh1v5yw^J62KZ?blDBt@YUfTBOEShz@ zWRczvC?}^E{3q2HdmF%-$j4u;FYdvmI8gh-=diufe*F(ye#U#Iv2C*%#G*Se9X!Aq zN*%n*x|jZ^NEOXLpgS#~;8Ym{NE))h8C}xeFO|eqKg#Lc2?f4%#le}yul+Q9t(5|S zG~#f`5jP9rAG_$hN;nT#1=#V)=PjvG(IP;+eh8UoasREmY)9($%$KLZYxHj1q?COG zHK1r*0QL^s`<_aHRNXxN?wiqGKQxtfuS zN8WjO6?Y8N##_do~wHd}bH?y5iRjpl_YldF?TO!J}JZs zIeR_41eG&)nOB&0%YN8yWtr|kTi*7f{Qq=&PUE2mfqC3+gV*&F;EQcD*}~KJJS1=* zp&AZxRu%e)+h>$BtsEYyN?`AAu5MX4*= zfCcQ>^dBq7XwSjE!m02Ex`F#`j#r}^WN8DWqk;xBW`0bvdpglyH!GU$_n9? zTN?WP11L37ro=+0OQK)Vr?zJVv;Ng^rRy2-+{ z0*h;|0kY?}V)dhz-mDPS?#(t#gOdvlnLk*nSqtH00y~QPEts@MT<3TCVqUS8o|soc z8BLg4&42z?_9aO)qtY=!3cZ>MfVMeROkAg4V|n%U6_l~a1Q#z#$z^^KO1LbrN7`z* zK2q~Dzx}^iRr~Vb4tUL5MMxYkL=;86urDP0e(HKd_|&;ln2HVFw(x4!%L&@ER=^cNdF$0B)xhp~eNq)Dt9( zDFsfeiyl}U#nFoG8N7J#j&gN60AG`+=yq2?h;0_6D`@he5mj=(NNV!v*TazwtZZEv@<+8l?d&X8y3|2nrfWFOl(yWYM!lJ0S3iP^tSz~QDkY&D zNLp98>)G5(Z0;>K_W@Jlz6GPIE}x0n&yV|M*6m%q42y0`wwRJ5rsPscJj1SK9CHe) z`$n?25m~+I$Dg&%gV3BJ%$ng%tF|`)6XT9A1t#%*@fuIeTb$-Wa4M`Y08V%LOI$kO5*}UfSsgB5$~&~50!3{cbJ=y&L-sYb1$>xI`vtv_7gCSu;GcD ziVwH*qjFntLBNE4Tv<}#TMEV0T-4=q`HmzM?pA)g zU(}*Ha0?=kIEs#*jaYDfzhX`Gg_)4MT_*R}(~UhZJJw-(qX;2%Q^|4ft=|$tKSU!y zZase(r&h_mWq9BIifr~tW05ADdaD2pOc`;k*yQHJbV$g|CsNG>N|^?(0Yt+rvN+?1 zA=f1Ik@42O-2!+iC~ra){rwaTU^Uq)1(Aw6DP)oM1Wvr+xC^=(_n_SjNR6w-qiEX* z3PAvyC|-2x=xcH$S4%OlfO73=^#1B~l? zP@!kq1cCIJ7#gh&Kws@gF=}u;oS_T6gG|bt3K`p^+VZIG1X1m{T;EUz!RX@{CL4NE z%CPfT2h}5ZIR)5$#8j#K+slUVy?Ah&Zn;?O`xQmhZ;=}6rZTmzUX0HSKVKl#e5Q!I z?=h`ejVboNQq~7s;P=n3PN>G_nn6QUuya412WM;@kzJ9u?Rjchrvxjc?dJe=)4eQ7 zt}U8>rRM$LLNCZ|#uqMcK?5=wp*c46Lh2k}f;2vLIu?cMnhji0*ESTE-{Bx03jENE zIPVECwn}B{!oiHiK8dG~<4aqnQ>@izTuhu#DOU=Z0_+$9o={fzCCj^YkSVkI>PdUnM=y$&JUObFgY$TgNlkXK{+N?Wo zk>mYWDmwoOw-q-T(Z^2w8)=c$3TZYBARxkNHdrC19u-re|C;h7Mygpz?W%as9hlM! zshj>|upVwteHFKGSM~KPCdu)?6L7eLF0)bv<{y*mYF|qdE*D{= zWQ}Z29c$}*fcGP}?wb@)86vA5Ob)rbH$v*O`vgQ^he%tymO`u>X(HB*B5mXmL$R|1 zBy1fKfM;hV1$;TiR=9EBU!hBXz9mcBxhSem&(_C&3^U}Q3%Iq&s;h&HLW5fX7sq$a z3=rxN&wF%Og4Cr2Gu9!UnXv3%a~P?Ao%X;Z@-pz`ZP~ZRAd@m6=-`R{@C{X6vU~|h zfmcB8Xmn9;WEe6lL8@6q_QebXZvR2#05>TJ2&tgpw=V!RQNH(NDEG8^OE!nwAd79` zGo-HD;}rTrb605YQOH1sOV5rJ`FIG_O`TnfkwMw`mLd_V*xJ%QMqlC#0?c%zm@-5{^GaARnIxTDMGz399J(@Cq2B9kR$E|n)4tX&JBVc>q z29I3s!I}^Itk3Xl=)5`V!xq!$L<>ngYYS!NH4J^4Wj+QXwLctp*ihPS9wn>wGE%>O z3*=ykHRtda)2_!_q?+)03K5hhg3=*J(mp_6+MJ^Tb$48dYc%*m2iU_qyX@jxy|;Il zp_i3rW~iGKk6HJiYr2FQ=GH^tGNU2eVW|vd zw@VN3(kGGWqtfMVA;}zZbQq?{rNC3C?7F`;h?X4tk$Bw{YUCu>Pp0;!)v|_Um(}FC z(*-Z$*12Nl8h1Z|>p)^{q4-&Rg5mnO5~*fbzErc9H2e0-A`5z+i7h?wG-eGmm5Jxy zAZ>a&50SSr|2o0r>i730odzUMc`9!savVS%oJiqWe4*nI=0%1dt3hnLW0VJ1qMja9 z31_bZ$h? zqO9V-0ATh)cZiX5k8Qw4?q;}hJmGJkK+V96gYRyV7if?N2oyPRE}75zrQm8a zw=-V5<;+#o!kJXy-)x|m9?+Dx%7^7-cOn&UBg}bWMW5#R>9&O&um>2Q zk*9FeW?dL+w(n1t*BLsT{Ad4<@TeY!BJABvg;cX0wa`wy%|Fu~;AEM`yJW^+Iwk6M zC49VW{eq!J?I0=7VzZI4fa@hAgj~9gfsy-D*wYcRLIYwb(gp;mbLm51JUxJVf5?3LVp{!!c^T;xgT$G#pBn*posw4cfqMBu2Kl2mxsY z&8^?3WUk--;LshR_fsGjDdA9tvdK7VywOlILt1F-@>2(oyh`syqJ3wB>4NxF5Bpzu}&sj(<--jUeY8Qbt;{?_n)O@7I@T*)s zsxcmErrDuhFe$~W@jrZwto(qnZI~kTA%nU6mOr59;iDlJEXHCty<=dx54u$z<^hS=^40P9D^EDG9mtw zP7Wihiem1g+d*h&HL;$(Nk7FYx#l&6vTAPT-dXaOta{klZ^mL_1+O zb^Dzus|bWtk>l4xwXlVN0%SU$oO1he(FhonK?krN6(uhL&jL~5pw<%s8G#$gya4iZ zWU-2Vfe-qhWfUB_v>Tu_a_0mTDtk=j9i1_ut;S!&E5`=B!8m$VDBvcO9CuXfA```L z!Vbyb%dm~Z>+HU~^SJ2Ekb074dVT1TV?zAb&cJ*c_r%g%&8m63yU^gE;Zg*}t^5lw z7Ocf@9VJ~+ad*vMHMhB1&3u%Yl@i_j+dk1bxRM(+K|dCW+RVN^<#MSl3USkf|hIb9b z)s^DvDkD8{bv0$QU&Uo#w?kS!e+f{p>OkJww|E@g=(y|!)zENCMo4Rt_UBM} z@2PmvaQJ3)C&oQUwy~nYmznIeJO}wV+(c|g5ULA-l$w4A4~xtZ;tz0DR=OX(^6+QJ z6H!GqEYPSpPCnUZktaB9B*Ren4`X~GX)dMZfaZ{HW8=KtopL_%qRTfP2;slQNG1SX zC-c(D&aKbm-`Ly?^|n5;5IV`lQV3p@wn#u~A3Xr6bNq79tLl5na8}~@4L*d1!jsf; z3=U1)<-R_VVf+vZAm&yA)e>MFw&v0wUV)QgLmu-WzA(Ud! z9S>WLYsHPo{`v_K0tW;^;4TNWB}c<~c<1LEq-j6tpb?;ilvt?fWr zuNH;7_d?dN`xLQ>#g7@2Njo|OlBko5>rlkonIK$;pJhLhxn~1VQ}jjlE-<79UaTMl z3SoNFdwd&xF=w8b1K$~Q7Er;c6hO^4a;m#QuvOTHU~@tfRWpF( zAo)pJ#0_p=@farO?fX9Bg;+t_YS?m}*j8V!E+wv;kBc*~b zTXf%Nz;jtVT8!E+{p5oW%^|#U$#X_(-N*zh%H>#p*%0LBWDkWfyQwG4Zjt7}23h1C zg^B&hYpBl8tTpmQ?tTxtvaut6PWqI5CKZEmbS!o0+J`Hgxm5?T#=MWWZGpo+`8JIi zl8@cfwhm|T9LjW~uT6v`URh9h{$rGm8c*>7ZE>+^F6C|+_1k6)oz3`jKOih8st*qT zDSsivL=v5)vNsC>arP=cm2)3+6f+)sk%{7&Gbz0xpU6KPOzAz+aq(yex!q?@H#8{( zV+|vneHVdcr6)7U;y&|F-eb)$7m;F46lLE4CqjM?)}x%B55*q8hrV_W<-k(yq{pzY zR}DlwhWa3LF7W(XZrAaxqk1&NlxxSv8;X-cPn@g~r}Pj44sPK`yh5&?@Ms9ak_`7+aVzGft1;M^Nw$YfIyqYyDT>}(iY8+pPvhA?>$(J&G> zmbZSXetBOy2)u1BmYjhrn@OhV@%-o1@=uNyD+k_>8i^D6t;3pXCG&Cq?%^*roBN}Xsn!-J1XOU+v$byfA0 zF=K_rys}#wxdM!>cTy)aux_&E61h#iqYFTh)09z2;lAI-t$m*C!fmq#+^A0b8NWI$ zu+ztQz(#2N51i2k^xgxYtnNSnc?Og`y z&Mv$JLQ)NzK|RV(VUE?^reVHQcJnY1^%HP_&SW-(N8H5xD6PH)EQZT8;^uIb+&s9RP46u7PU2k)_lESJpU+U!C( zLZHj()3P7NTmriXJ#2|uNzfjWZO$R`HPejdU6;%F&*tMwq_!#FbR{d9=(PX$AyO-4 z4!>UVfC)n9mtNQ(R5yI#nY|t=g;da&#&yD8EQcN<)p@8VDX8IWM((YSbG6-`^0us; z(!f}lJricn^=j@3vlqhbC46>--)8Y?VmP@c#^E^c4lJC`LsbQ$H@9Q8vE8^g_!~lV z@;Jn6VaSySuqm=`b_Cbf^EH@W$Nf1vkkNK^Fc3#Vao}_$OdNrK?c2SPM>Xw19a9q> z^#nNQKZ?FR7PThmufdG1(4c>=yq{E6`k=DmEx5IAeKHgZ@Bxv3a|%5Kk9FO211noI6sIxkpX!ch z!Z-K9mva&>qImD^myvp1*uimTwc3;VV(WRa^@1UeqY%*?H1MVs7{$O3l-=WB&iHMw zBEv>hy&#`L==OjJeaM_sQI!W$#~$EaP<62@N6bD0ECTSLfg z)23#N&L>M3#1;D)Cw|6LsM~qym^9ki0!radKC>a3!WaEJe8r#|RN~Ud`3dWSW*!}j zeK^W+6?)dPnqtyAqt1d)jFY{>>cK!Ek`jk*U}euuRg^J3hqcvSsHx+EvrKn+DUmO{ z?F9vVA4WsNKY9p7!kG=|>+x4v6)x}a2;691z?!DOy`CuWARj{`g&yomouY$(j}Nvh zOw59FEIfp|OQ-8tly76HKru#!NZ+l~7lj1bNt7r1KxhLkrZ!{9^7SHATXu7g6bEO2 zrMT`8pNw@PtJ0{$tR9%qkvk)>emYfpq4$pa7GaU{A8AIxyd+_ONEk@oiegz*M?=Rs zfOo>uR$Gxeez{YF7i#HnLL)PLj7DRfrD*QC0HDTG&y${^Tvu6Sl`EDe{>kL*>zsBRaC1HS1Zbj{5;6@dO!ult>mii) zh)JQ6p1C+EXyTDbL6tQP(0|Q7vO1c8Th*A!P?olV-SJ$>rW{k z&jPH^{Y3VH=5LWP(|sP7&CdIvugC0TZrM^i)%>?ox8^;j^u>|QP>Km^gYwll3pHi0 zSZ?u`46<2ej$(J!#lfpIW4t|eea?i5)3kmZ6Y}?8Elih1HSrgmnsb5Lc;HsQJx%}s z@^LuB0nHZ=ET!l~+R!Tsv17W}F+=Q_NrCHY;ft1?DZTY@xg*%W+1Ic)x~+Q*+9f*X zFp~=XOvpZ>3g2|3Ab>4H8F{?r>Ggh`4xVI1a{z^739vU%B{WY0DdqSUyzQ)JB-saE z-;mR8A)`>A=IwBk^Hv~ryx@q2s=(kXeFhl|6Ezx%F5&hn790qfTA|40)gD|yU!3iC zm>K|7vxG+P`G-f`>AR9aoYG}a2O8e89nOLZDKKL?ibT9H=l&{>gy1GzpC_wy>2dU` zRaGDOBe9qPYY6T`e%-M^bM3=^N?ph{m9e#U-4Q51!X?z6Oog~`Of4=Pr$$HG;EnaY zV!)TC)na`S87d;f6e2R5B4az@WYOWTqsXA_cfmj}QcnS66WDlx(Vj=;>CupisxKkf zrz6X$)9!cw&22zyXp$MFn{<#ncu>aUV^}p&58(X~jHlG&Pl|f0LXELkSWj){aca5t zU)UyZr@;q0qRU?US|QHGALRXJE{xRYiIwvyV7)?y22i>?i(MXiQt7PoC?Bqb!w~S0 z#gz9l9G z?m?RDSQsEKF$yMaLxnc<7Lg*jQ?W|G9M_YEfeqGE^R#-)?#|54|6 z8Npj=`G{)t!E;KHjO9K2-F>+Ru7Jb4US@P2BT=teIZg0{840VoQnVK4 z0#aXnDh!DOs*$RxvdapoW-@GfY`{`rgH;BZ>h=OiHrtpLBahuPvdL#@hC}_$NFALw z06e@;Ae`Q!BT(KuDi$3>l)sOlhfu%YTQAuPs!s6;1i0%e2&d=>H*~h|LHrJpbzCxP z&lxi97393eorzHQS5+JoCu(vqD(dtI zzsHmq!lKI!A+S=f2b}BQ<{=Mk(A9QQXUds14RchNEaos}Wq08Szw%s%sY8w#ubCE# z=kPc*Ea@Xsx1);{GT6<67PD~I>}d_smg?H*WA6=F&=^)N(r`)hrVOTj>qjCja)6{7 zE;2!HWNV}*)cey~G$McN11w*Q?;CZyl4aN)zG0!fe@kV@&Z58(OZ{p40M2Er(xOAvO6=Qy7+swMTKgvT|Y9MW%0Mv>nA zC(HF+sjA*2HeohL0MVZ4MivN_YbW3VbTcMS11C&|*oC||H-kk2gGX%H15`g{JQY4{ zfOTRyW(jIi2?~4 z`o%eFR(~-vs1;YattJ#5-y0iczlJGDLa5B46wuhw`6jAWH^Hwd#lj&V;947uJ$d_8 zvHcnat!5!}M^zrasBTU@@?CK2T*6z9rt&eEsaAo!IVJR6hy|Q-mt~u2o{W5)7OX*c zx$Ex7mP?`?B&1$UpR}1d6{*E3oy~>I%R886Y%u`U)m`M;b*S>)D11rt7fdd?DwKLP zqe-Lx+6aR$ndrk=K8~7TKh@Mi7T=%XMD3(I2Io3NF4qIWAaZcZ&Qm{1EosO?4%n^= zer^PRZe{kO{zpWjxxY@KSI?Eg&wP`;0B31iAi_G0h$H%FPp}Jkbjc+b0{Iy@)&&4t zO__)1=07ualZH{gItZUm*2$xe{!QsCkw{gNLBD^eGLSM`ERBeUubdiLol6<4iO5*iM3iZrFqr73Gw3Vsq z)=FNAgR+%CSN5^@aozQFJ*0V?8MkFUn~N#WkLu3i0T(pQVojJt&@I_Y9Lzg|1=42tFobfCI|N;&*f`my=0hI z@FEDM7znFC=pnjjwL6*ryIEJcV0ln_-<{BcbIxqbkDO2U!Xu~BaYkz1o`r=aAtOskl;iiWV4%F#Oos_Lrhs;+32^Vf2jh`Z}SyQcDLTQX9VhW{x+!QE8>=I<7? z#Ptj;e_wnfU3?4L|2Z;+j+uwHl#QjxRyzS?B9#(`Hr}02dMDti?$ss12^T!8Fo(9E zl+Dp$y-g>CH~<-wed$a68k5Z2$T?;On&4>;gei#6VV5ft!)Y3ch4^JQx74RE^9l>+ z9>D0gm`)Xge#NUU)Jqm+BIUgzf6Yqdck~94nzjom6T8htXu0VV-(kn+*>yNbh+-71 zR+X_DI{(S}xb6`@TF_BQLJ{h1cb!6yzUGUYF}-_12P7rBj|dTNp~oTgt?NA_9Cmw* z_5r5yZ|u*e_#JM-{OxkAGsjWwM5*kXDLKxnLbW4qPGwa6(;29{RmA-naBv$q8AT`l_mk9?lyR&Aci;G6dXtqRc-{Z%v&V6peg$JES-iF z?!nn-L_#{|D#&jyPTRp@c%bPK9Dy5?!I6|$_Z?YpH-Was1{9?&oMj{h=7X&zlL8AU z{%i#zQ~qVH`5O&sP2NE@Ty9{|^#2Sjnyr*NH3D1Fz>s;14sLz$LHORI_@J&U#h&I9 z%D$<%6wUnm@3y28yEKxFLnPx+v=o1&n>9z2@*iUn=Y&BCNxkU-3Q&0B$}ux-gFg)i z9Uh+W9g*b*eByN}A@9D-IWae-Kz}aYvpYq6%|ZsRWq}9_Ms*PyU~Es}1Vm&5?cbq2 z{zJ6t)dg%V7k5zL6W`G2gG|+EZPT&q$C9GBP`~@l1D^a35_*iEiY@!27u-c!!)S;w zZ8Np=p1_Bf-k-+(zpNPZAkZtAk8GYB|Dy)5A(t?)1Fl(FL?7W=z4QmW?0lxLdbGWU zF#EkF=HK3qS$-Oa>3VeTY8@n#Hm$)i(QPa)CO-IwLboo%oau)Afbtrv&!wMf^K*IU zCNZ(3c9;Ql(~+`^`J7gn!45|u2C;Mle>HEu6~IFrj39V|EOGe{0@Jn6DRIB6DD|j;YDs(6 z)<{av*E{H@wENHX&GuYm2hbCls6<`!CgGV(Nxkw=NSk6NNOZsQU49Y5?5TWB#~gxx z^Np~vwjaD7FeT9P$YYB|Lu+_vdWh_4et+RY$*&k_gJ8TmhB+a0ZFj?v@0v<~o}|!i zf1t_z%PHgP05EilpYZX}VIrJYcdsS)&uUTnRDgR{U3n8HY%@b*fZcc;7PH2!M{|K5 zPtZtj_>F=|+#Xi?4mhd5@FEDm!5S!&rr?=MV_U2ME^sQG28itPPHrfzagx?J8?-Q{ zIyKLrQsxW#(7wVKJuo7_dVeTc^xw$aZ9?QJC^NM_vl+i*a_%BDAJ3r<;&RN*r$Dqm zwvak3VPUc{+3p+2mAh!7pnx!;eZzEVLLOcp`9PaYS~(S$G@Sp#7p>0Gi0>}Q?`zQp za4FdG7}^?#JCSj7C@N+qN*=qS4MO*tLKtDSpt!q-@zpU%?0r=-srDJFNRhiS94y0bF$%$u3db%5$n3QIJn{@%9)!^T7r8uMWJ0WY6kc^J zw#W>62Es1se(ry=8=S~8$WV^_zkVUH|03t=HxTxE6HkVf4tE}c$>EpJyknPcF>-0v zGHKRwY1Rr*gU(0g4b{^20%?1pw7ny>%d)_DC|_IRlqr)8G5H{i?f=q?WpZEhevgK| z1c)K7lgoX`2v*_@fa{Rb?fcZFtut1?g*!Q%OfiB2GFzf>&UnMl3WMfWVwhSVIK++i z9Rw9XLsELS!Nh3pbwNthor5TI`8_h%S^N(exw<{aeMnnrhr*zhB}Mhzg{sZBK1MjH z-w5#4;GX!tjea4z#zg4<_nP$tI6UZBN6c|FR2HILDDJmCDEIJrs_}Y+FZ*67|G6|RCdT2pAT?ktX(l*jUK7) zU@EcE4<=!h_C)}-nsnt!@wPaNj$~h31)ya9ttIkn5A>5ssXe9CUhc3Jcf?RSSE6Qk z8{NDgQq@-r`G}hF<|yjRI>B(ypcj>0;ys%?cNtc3?n4Ls?quH>;jkGDS2XAJRRwJb zM(ZNy)0h(z5!17Ss8Plitw|NVvQ+Ntv17(f5;(f^mZ92a(yi>_ObaCp=g$U_w&!{zLL znG}XeKz38ZeS_{)0J{!Wux@wGMQ9;1=PKcp66(CsM*U^7_x&7?pV7=nn``SY&$?Km>01Bm( z&ST>3f5-C&MI2RPTz|D9mB|xeYZpL%sIC~#0ugu-mPV}rSQmW3YB9gZ;3e?x6Ewwl z0q$Q0GVaRV=LfMFbUa4rH&bk1Ml1ck@U|JVVH`r&6XOKwVi6?;L%kj2BHaH4p+n~w zsA5ec=PiqHpL4x5Vgm(?8O>AW22;#uapV>DtpdNo+tkPiEDL{l0L5gk=gCexS0%P= zLJk3p_2MgYPYLSGmPA-^yWyVhtO)B z3RBL4(QQ0;FvuqVvT4CIJBSyK(NG3h>5WN!K#4be8#Ak1097{I*mqo0^xXZl^n zN4z0VnQL#C>5EW1#8os0*Kp=x(a4Hitzi3Q)34-k9BRJ+z;FK(q%}HH%+CU-!+l9| zS&U=H0*Jb!EyutrfpXPgXfq3@2DV_%Mk{!z)DxhIVKYFo8A#^2j{4CkJ`{_DP*bL9 zx?Q2%D85RFC7~GK!$^)jhngm~xXTr4N^#{+Z7-?SDwx=94#bHg-9~6KvC8+T6CF^D z?eQ$0Q)Yz*Se$|t=aOX&7={tqeiQpClj_}Bd5qKoMNtLJ&`82L>R2`uL)h{FWiCiWMqNJ>(EzrVmpq1Hr&#qN1P z%Xmj3vEvb@@||u#M|ZF(WqngIP&q|*JxdYYH7^-qt+G^rLiujK%@8|^*Kx@+DD8@> zH!$|a@Wy(}L+lalH>lT3IX7`xyHy63yq8N43{#UY6mE9}nUwEqOju=CV2U0ZQIF-) zs;pGdc}M&@LYcw;?-@}D=2MwY=hpm zB*jQlEUA2#Apx=~lY#I_zE+g_{f)Jjpg+v2eGlUsZ4dZ03t20Ltdm04Q@|-##5w;3 z9~&LX;j@{{z+43<^)C_Ws+?;mZRuwqZRsy<8Gy}i=8Xo`yOaGRD-@kB6vI_vgbA8is)G54L1E)h>_B9g=WmIwV3Qmr8 zbMkrd#5Cps+jxiK=dearv`0KD>Ea)Q0$RV|g`xQhhQ50wcyRH~!|5sm{n8#(ZA9+#igt8a@ z)cpyq)}oNI*R3d_Pgh`a0Zn*#$j`XJfDQ*&Oh+LYOB31>|8cwiIsW%7-Y8D z7l%-Bnl19#U-rgtzbFr2Fx_aGUal2*Ar9L+b>#w_$jv+iq}$q@;V(2bO!NSDsrE+6 zfrrqZLG0YZb@n&W9;Au9H5yU*lv0~FMr`TwXiSj(KC-HP%>$>19ID?$%DqGG4FgVPCKh>|=F|o*CFgvK9QSh5eel(^zJqkL|uL(ZTvx`Y4^Mo+kvdcn3zonVyS;hI%S(@hgh3shNZ*Z9yyCP#UD8YOgRvDv~zvW`56vg`?D$3y^QZ z=nZ~^=P{)OUq)3gtH`3XP+y7mQI@gPE=+0{?rb2ni;&ty;w*LZJ2^gHvq24zT#+8l%&D#0D6Zox|b&M4QJU6h~bE9$#YO_dRRNXoe%4)7fr{vPXcP*rY z@1=tuC^e@LpA^(FgQ4~BM-e*J4+Jq8)TAYLum4m$(;)NQ(-=!2{p2R3>#mgOJL#|< zR%@l6YsmW@Ut_G!3q|AnJSeg4evHQTy<|nqg|^$or~KSb6A)Tm;NQ-F5C8u;C71=* zZ+%f9yjWfbCKk56f(wCoWYhG0jL=Wxh;T^Tdwgzu7>z-5-Gn3FId2M{umRZYM zBJ^@ku^UW;ZKKR?4Tv7*0u5|oF6laeCT>Jd3ckkR{&coX`gmCSctrYmlrnlQMaKT} zwg{D*erH#yDotCQjri;awaXxn8b+rBwidh-{!B9&Lna$t4SGjPQLWqP>eO9f1I zhvZ%Qw6uxzX&Ghya~fC&pn6jZI)Kyg-k&ES_d>?ep%)%tzLI_S{9LPd`^crt1!yhl zmU)67F_~Ns&6i6T#z_}yqzmJv3lqrgXc`VA84m2zbHJnSC~?sBkvI-`ZC%a1YcZc< zzBI?MZvUG~U;Zv+Q`st|5JeVcED=)$=Q8Di;%6MZvETfeAB;JKtU%PRC zuJDkjsK7N5UaA09rZ;6}EzlftIZle8{brb92+FSHBb)MVpuX|CfFtONpWY2+*3bYn zX>470q}y*>1_|>6(gs_@Yjj5%R5KW{PU`W3)Zc{?EK3LZb&o0j%QkGg zb6#kMVo5!8Mez^D z%35+Alu2h77kpN8sXrjN#p9;S6uTp|t zIAP3yE>J!77=HyIxb%7vmYUlxo-RlCYC$U9Nj_T`{G1Ag1Y;|jFFUGV zot+Lqs+>V7Ggn{sfH9SN%P0ME3&J!ulJQr_CJK=Z~6W+@hFX0E6`psF8j7gN=pnivsqsgP> zkPXR6Hy1~7sQ|2x5x77mgm=Z$jWm;R>d@Fg@nx6H(4#qpdVNMKdnw4~y(!mK&Buq7 ziAnwkp6ou z{r3jLYr)6epx(SN!zu?N>!@ZF{wy4?ZY@ElNTxd{p+tkb`k2MQRX;Gx8EzlcWRl&%X!tldB92t7M}N4H9f`g2UNCBjaR zj9FjJJT@CIwkMY}e$oRhu$&a4x3tlke1mSIzF6}uSmdMiH$Ah5%*T#b1<+4MiQ17g z{eHps+8Og@Qf#R~N6M`D!84Ja%3#vbk$1G$>Li2}Q*LuY*ADCPQuT?g#M`8?k<^6V zdl92v3(+CQ8m7CjtPVws7^AQ^Za~K!lxp;+@esJtnSwN*D~Y1LB^5M(fS1-yn2J$e zF&A|b6!aatgW)5U<&m4r%SgJOZYW*PXn1KVUC*Q*_6Jd-=F%Z3KS<6wl5?))+#a^U z(*c=EZt`LrxR+OS+fOzK9pyzbsU!mpa%lsFGC1B1kvCux(wJVL4MS_!UH;3ML-*)dX_sX?l)myM`FiDU1|jRae1&U|uT z9gO*n4;_y}PPU@n2a=Fq(}>J&_eK7g*K-hBB%kDgacII9aUyG3MP9sHiWoKxp-H(3qQex#fa|iqFurI1B=^As zu#>7EJp^g(x}F!9mkmfgp~+P8{kj#0=WN4{T-q11wRp?T&uKCf@3K15**ym4Hlq}4 z8NSNy{sYm%cdG0HX^!wanJ+Ej?AFuyDCRr_w?d_1$0+zDi&;`CahHDtevI8q_A}l< zZ0bQy3;)Bk2K~|&8cwj)bM+zkvE{&)<@`USc;!aazT_q_d+h$1SZg(cJIZylsFHV* zZgw}7ZuX$4EiEx7S>2`~p;PoRgigPkqjTNkU{678-3Th7U-XdMZ}T+Nt-~G3)YHHK zIRolpFSTYiQ%}}|ayT3xfG{cD0%3L+J~CwAiN+Zh27t(M@J09py9jp-;P3)or9*!J z4H>dg-Vb+(vZV((R50Ke;D-4iXr5yqTr!kN4RzR{Uae4u(8LdN$sj&m1y2GoKgoot zWl_MUr4Z#Zq2V1gBqG3?8RK~s%d!IAel4-9|NUgDKO}-+01%8>#?7({~WyX3=QOAGN}{VIEtCJ&C_V`a_}QX zw-Blh?v5XRI!cAk8yv)r;t}k7Neiy3!tMhQFm#4o7ljDY8HxP8RY;70pGMpt?gVx@ zA5kxDgsnj)eiUzygR*c+zYbPXsxcO$@TLn{rWPPc8}tYIA^Bur-8wid)lY}lp)bhN z;thGfu0XW%zyaI}cc|}&?7o^5gfS2@VR-WYVF;<6%?b|buGjIq2CObKiu`gPom2PU zBa{0}ZI;4S#aW=~tX2i!_1d-N)!?=1Il@eVag?fbl;|TP&sHtC%kk+a> z%ku4zO~JK&Cs(}b4#3Mzp*bE4@~P#ar;s`I$lv}I#s0+#uKS$uIFoue?&8?U8m5wN zJ@_*PGm+Ez!=Io?DqW;XSMuDk6<;-a4v8~ECaoMN8e}P4y9guRVl`E+9t{dy>F0@_ zIf+bPI-6w!NTj^@2N^MZji~73C_zo#>sldkz&geY&f(;Aibo`1AXDeAFQDnm*e^1; z3Sqk%R*Iovc!pEhc*eh@y5mkm=v^e%xiWV}Yw#Ix<2fqOmM`Zk;;wC18A+R`Nt>rj zn`daH%`;(>Vfrz6S-AlXuXoE(gkQKXWe(+y5;DXImFB_-V=SM|3tX3AwRRlmk0gs; z`U}-|cNSnf>dyaz(5>HQLAw8xJfEFFhUDV6LJ4U?`E2TRJdj1qkp~umc?BM58(v8( z&q5F67=E1pm+CtE;#8E|`;1J0xryS@p#s2S8$MZ|FVj-7<~Ryb4gZ8n!m2j|f+QYi zaynpLJX3*gPss977TV|k^eEUaA-%A~g&Z5o`J0EK%Xyok6;_1h&;M> zfJ?e$>01hgTY>QgpTi#;Fj#)(6(Vd3CRXJ@-0WlA4WGyFx`5KoOeKqtU3qOJk1R&F z{1m_(f+mJ0i807D?*3y`?`GG;ST5aahgnC)q2m}2y3Z%w<8owijR98_-1f(>5$iaQ zf^GBAySP($PSe;ai$xndQn}ZdKz$r|odJbr%2w=0P$T~BodF^pFX4ckdXU|<+FkY5 zGvA=r{+x|yd2C|59ov@|cSeyfR#|ATCLpeb(qud-RDuiOFy)qKg7j#&RY+Jh0H&i~ ziME#1XZCl*j_d6L#zoX5KIz2aG9*yZs3jnNRNtzBL0WVt&#O3-+kvk?Bo0&-X@>Md z=y@a+eK7f@h%$OT0V7-Z@*0@0k24IG9W^0mC#GKd$(Z>Zw=)xAy1;m~Ao>kIAJQwT4_vQ&f$>*yI5yBK|ld zT&wV(Qfk{XJ{TyBj&@I&D5WGwDT(C0;2#uk{+$9YkHMM^-FyrQj26WyMM}4qX(E0u+5NZ~=;CdQo<5(gdW~PhumQiIbS- zx3wA04Edsoe70?4$md@FW=#+(MtB>6tI6xY`L>Hp8q*ag)sVpcs3P+^CC{owp2}m* zg>z z_!}mrF&^tiW@2?Try4ewgs<{tD&}<%_P;2?(lt|g{{u8m=5;Tkap82xs-I99d;%ybiy~N@^EL-Ac5Ten1dU?UFR&r&apD1Za4FQ?_D}gHGQIc#c zbzaCfg(BeWej#de)ted(a`Q$Dg9ZYw1eH^aHVZ4femgiHyH|3au{ol2e3Nv1GkN(e zM{!M6l-5j(AMasSd<+|vRsyBO`m-gJt`8Y8TlFW^D&Co%!XGG0_^P0y8+jPq;AA5h z&l3_X$TsN=R=#?04ZMus0^!iS2@3SzPu)tcqX6sHRQlTv{IFk7W}&-KlBRnm&vn%F zXV^$F3wXVzS~f!wH44`IR28s949K!E^j(q9Wfr!@ya`PxWINmL&CkWto-AI&Bn_v& z9VwI6G?vzY4dtF5%XjnxejSSjxYba|3YKN&y}|RA!dMI}j2%Id35nQ=)-PEn&dwTA z7+jFDyWzu4QvZhWY1J)^c0QEAKsX7F?!#zUTJ&gQ&E|B{CJ@V-grMhuqJ zQ8N(f{`M(s*VvKgsSw0D4eNyYaE&@GgC|avDQN}v94fiLL*M23$l!Peqtued4o?D7 z44Cp4qQcHAc$qwb-m}_J3TrQgl5QIwrxjrvA4dxvkVa&!ByUUIyZC`Yqwe+?#k;LeK$!QQ!EX8O z7l6tWq+f6+R)U#U5QJM*(pGzEtC~^{C5Vk+Ib>`ZGDbGuhDv{1N%@WW&{NWzJFRhJ z6rk(JY7DLem7;+Ic^TYCREX_ka4A|}-GSfjOsvr3oaLj~_X;?PtHXFd6jSN0vqD1^ zS%2$-L9lyry~bA?f{RjAQ79HzMqg51d5NDtoNeRk)@o#Lif0Cf*=1$iI!gSj{>UQzt(b4bek!K^d0CzS{-E;1eM?yE!SQ}qyG zs5OJE9$`5BZl4Ju1FTiV_eM-S;gQJJy)$4y@m&ygqS6oB44U2js;KTIPi^=t+5s;yBDB2{rqnb+HK45QdEc#?wlC8oV|cfCaUKC863-=nY< zEg39iR-NMiYF6$;L4I$^eUTGRjb1y9P>|33SLl~*aR&;nFUMEOxCz^{22W+f;F?-Hkazqd6xN|DOn<^h-`3}VaCTSB z$g|~00C~@SKw*N38`fb96!On|JRe|N8ngxu;i-S)%ibHbU?5cVeS__z2xZ9)Zbtak zEaPh}o-XXDrrkShOn=;oDMoNC!9t3mS104cvC+2xTmo*6gd8!xGwK3tTl*lEaQPo(Y#Fiv?-Hc&hWr0!0ux9VbpLZkA#)krn{CI@+CIhjDwB>_kQiNQJFoe~l^S)qzl*SlSe1~m-#AEk1g8g^Js2}=) zgL%R%XA~npLtYiDP=NQ&dw8|jMY$D+@M?bKqP}%*WjwrouAMLhu~}?sMX>=gB1o() zi@>bD97^ba+KMRBUCX0&UDH+LHgX4;)_@x@Ki7A;njdd`^$j{ zedrEkDB~dHNP(9{_Wc$6{5ZBs!u>?C;fhFIgQg;vosxI0+F%qy*AGm^2ki~QvXAPG zr;H*_6$21t21g>Hhnxv$#p3bC2JNu~K<%kci*jhG8{z)!0ayvi4V7}k(0zEg%fkNf z{_C-fO~k3~Mu=!b+~5aj&#M~T~DX^ zcuCxHke9ISV5U{=7vvesjbs{wCWh3$l<|0@No2M^4oP-fIwRECL07B&XJF{^DR_17 zxLq#2o(J6hdOq209IqemtZD`U4M(U`)FgeP}xd94>lQl!n zV52+V1~*(9)0rjj0E`_B2f*)BSq<#!G zo20O#(XmXuO}tzqnoB0T$@&1)jDhPlWnT>?HSEa&1q}r?4U*!TGeS*&E0~C5A|la( zIZ9~(9S}RAI1OQvyAm|g=)AqW{MS(CC7c<^+@Kkcvd;|0!oj{LWyTG)*v+H3+qvZw z-cN-ezjioQTYMd#5l-ik zMMrloU%e*-tvq**fl|7SlQqRewF&3>i(13@ z+*~ZzFQo@F_iGjfDlQ|Bt20EYVUN_X7rvIOQ9JDGk;ANexRDryY@sgE__%I5 zLjtGgjD($Dz6C0=y3PDkJl=)4{{7$Ktf*Khb8u0}$b8^WW zDo8ViQk*T*8-L|f-@Z+;l?N($U0W3~4%gmF6r@Zim@fL4+u147oXt=9v>%GJq_A56 z`iOP?F$M-EYo%*-}vDqKHt=m|g$8Do6(u3X3;G_5ga>+R&NYigntTU^7Bs$BW zvrobeB_0(Xd(yS}shgBIr#-&7-J7&Idq%%&vGU~ZC6orR;}EzVOzs5k^qAU{IHI@7)n@RptM9F_Dj-DwKMgve!TKfK1Wzh*d@ziI&iQ+HeFfPJ3BDD=st%e6aRY-4Nq>uo{ayV!~bgPKae% zAtOzV)ZACTfFZ`$$mSEn%*;(X!HqijxS=-7xl9>&wRXiUH36Tt$#9X>XSc}mkmmV! zU)(MBymS$cUIfz+>QKHFdF^Laapy!D;Px5Cj2(3k)26y#E(-^m2vnUzvpt)T<8RBc zG73+@X#n=~Z(n(UtUny!|8#?9844{#L#W;U`azI-^r67|wip-hOL#6*>FhNCPIZ1( zAS7*08KXwkL%<|>6@;Y>k<6RxHOW*RcnBPHjz&@^H-i)%Y>VW)gA5f{o)?jA;z~YX z1zy_-6{g5xzoJPCTqyp^XVh}`3Q)(SKf%paFKLD%be8Xg9Ewz>VgTmm<0-&XNZETC zE1I`W=N89*twm>iR=6O4YQc3N+0;XCgi>6y)iHRT^O?+gw&jdw#|n|f;&LN|mP>#u za2cb+|4dG>q9+Cps%s*4i&OMPzUb_-7%+2zJ&mklNuL*#T$1^8kw2*&=u-0*zy2RJ z35yVOM7#gDUNmr|faz9v2|RHb{qi|RmXCknRnh(fYGv;Qa#ISs+74+If#e*`=Sb&= zuLNnV6XmZB zXKG6_xj()pNFO(l=4>pk%+4gQb&z2IfdDdS2eY7xz&&;7`dubzS`^mpG zLnehwGD6SYS5djL_8I54x9Ey7@Eu-_;#6x%wXz4$xqp)#$Ty_@C9ZOqJwmrNP(Vd? z@6&ALcEC~xY+6?f2V8z*3sC-FUh#(M@XJkh1v=(c5WcWIIaq(8AfZnhgNW)4(Kw~g zBipmA0fBGSLI0s*yX2dAfel(CCLq%OrPR+4u@2rx;fW@tZUJ_n^K-^#K|be@5ZoM3 z3ph{YD^D3`o+H7bzbDLAf2GQzwpe7o)zs%RpC)x*$#N=>vSPcQ8n7RCotq^?#(56TU!}U9I3FkI`u2XyzPRGy?r?voPS0Q;e4Oo zwOC(K&vx+|T@gTOsW_p4$q?8YWqW=yM=u)ZPddtulwVr9QR+S$ zsAvh!3!*rWCQMt6c(-olqI6#c3S>FJr_gTzo`F>52QIO!D_QhZ@kFT-qh%_e-_;GlXW3jX0MgAVuG2`_jo=RFZR7H1mEW zrS!N3?v42^3y#&gGfn7O0Dd)a>g#C!&#lo|EW5 zwJ?fwpSBxH9pl-lFS)FNaC%`qd9^%@Qkr;EpG0rK3D=8In7g!++?t;dq#L&==u}&# zyJHe-PyZDPU_0>%9@RMaIZQkUr0A-}kz?z3 zY3mPZD@j`=ax1@vuXC2amNzn$H>Qdg33v@z;Do|D`o0z=XyuD7M^bQ>6edUC^?00Y1sZd%8051LOwFRq+wOt`jabL$7S~s2L59Yd1!7RFSIpAW z@!MAMO-#6|Op-Nh1Hg!I$U@H45gEYS9)F#}&IA_!cMQHzte+u=dsYw@%1dHPI5_VQ z_f7d?x&igF>&Y{4)%S;Cza@0qH<3J^NRZGog^H0+|kz*}O|DF}0ZZ4IR6J?tQ|n}?A$?zX;Y z!vlyN1$`o8vYrY1ZfIlDj%|>Klsjz&rd7FC>iHP(z5@i91a?zXzPOE8x@@KBBbhA8FN9^4Kr|6k5W- zZ&-q8xn>(vg@BPCbD{KEe4Ko*UBY0fBPq77C$^jS%}ESy6816Z`sV zZVtP7hsB0Zt!cvc8A1@L)^y@rID56;x{FoX~V;^2X{P>l;j)G!GA~IwR4R~gX*NPH9gf(3T2<2q)*$%&5{)W@c zC7+4%8l7R>i$7EDT*edL zmYHj^d1TElFVt@yhxDnK!_ZD8sJ>(*g`C16TPQqC8EqOPm-X3P%xy~WNTJ~ZIfYn2 zS$P3mlK;iFcW_V}9ZCVtrB( z9lwl80z1(Xp<9bLz$>4~(|Q5kybHP_4C)Wn6CoVHt$rF_6F(gn+raX<9VI0h;=Pwy z4}|8?ccDWDro`PdcvA$!WV$`CCx;J=0iuMZ=+*Bb01%tI$Z?Sx_ndKmC<`Lkz69$4i#sa-1)0pZYZgp~6a#;6WKSl99u-5YP{AK$F#t0W8 zUPMeBo_OTU^x~1sJX48KGaSq#U_cWF*y&aj(vx`xp^I7e+V=wudiM>QRdyG@@zPQ6 zQNUoEDQHODrXlQq)al4wkm#mL0BzTS5rTAN9aS{=;QN$)e;_P?iy$a|&7tzW9q>9@ zc@Ux3NR}%%Z$&YF_wZwrH<`U*WTLvtq`&=eJ_1>seu>a>?K6EJvIAbA7-0ex-}Ht^ zVKB@%#DT-8U<#p0~4*!pe4xR9JdCBF>B%bxEyb0 z1N8c&j@OlVaSNKnyX5^lG~#MG2u zWf%}%|Afif+AFwKJif63^!X6*KT-@FVkr1?quf@uVpk9j!!Pj{MSZeRahYq5(6EQx zGCm>7r@BZ#@0*HcMI>~1i02VyZKy_4?$~1p9R^PaN2OaD^)=1}@$IUCA=$0tq^&hF zifeWU4c>p3lI*u*1eNy!L<>kbL(BxJm6Fth28)6(X*Mvr*4D%sN>Sg?IzuRu0=I}Q z&XIY;S0q`#dW6vZ1W5P~j+EibVLjl1IBQQEv_Qh+)uM9&9>i$4z zQK&>{dlF(IMnH~_xzeB``oltWb9e(xgF~ha$r}EvLatSytDSI5uZ0sbg{I%dYq1tK z;O65;pBFUhTs@dXX8$mtQ7wC|m$-!mpGD#@n5zV24Q^e1a802T`MIfB&*z4{RN?%f4Umb&LJ zyuKSvmD3nBO=>a}3>EVxDfq2>`&!HaA8!6_yk!5;6Sa%K(XdM1F~0Q-H^;~HL1>-~ z%Zj{OG!YrHX33K3K51?Jff98W;f=O%IK0JYJpY+PZO6O7c?DFJhJ&adzXWxMKc?9H zVfeA@1*}d_(5x!^kBOtLn48tl@)n z^}2NR24zQ0#cCQ7#W$?0*ZmFHY1Z+yeygZkx#NGy+JUsqV5Z1Z2f*DJbS1FJhJHrU zA~lySEz*#WgDdK9eUKc(7Xd_ejbQYVy2$-!C-Pdo$55DTBgH!h5$0W#-%pw_rjOPoFBu8(YB-|Li@6D#yC%QVO1Bm;-=6Uiaaua7to>- zN`$8h@N6TfZLb<+RowZ4kL?|QXM11WOb>$6c5ofa%nIGi$e*JTJ2V;@%_A|6=wPod z_}peQ6**M`R1_C<0LJORu^!{)ltPv@n~_x$iXEjz5kddjv*Ec&uULFD_at@kVQ{UG zshXi=V*{wu^B{lJ2Yg2F6g7UU(c%n!cMv(J<`T`I>3 zYEt%UhkauIj3?7gRwzi&z`g#vT|5fFkS*;2@BkKEemW;LW70UnDaI zYSXTHB9jtlN{O?i#9yF`#Oy=$j6boOTr_H#G$BixkS$HfA@lG*evYH^w8u}2lb(G$ zVh`sACe=rr7c~^3JVf znD0}r6HQ>9I)K_2Tp~1z-6}k2naxL6RDfY~?eW@j3wV^l?}Z zA3Wn7J_+5k0b$~eNxVDm_M_b4Q7FRb3Mv2MGn?C!?xOVUvGnW-RkZ6NbSG7p5poNu zaR}Jhp-XWqR9Hq4MPsp!B0~qE_<5eN3%h9_WCxnc7J{U{M&XP2Y@BBO55i9M^Wdas z_&XbbYZr2>JdL;zhc{4dv3qFqbB%yiZR+*kQ;4ArkU> z2)~TR&ag|R+FqJIHcVs5sQnrFG)CMbR`OgEBV%%;+F!GS1_|HsqY(%Au7n-Qx%*J}=xEA(y9?h~Twz!WzJ-Drs;=i+SaF^@a{66D`dWB3-?4Z8Hm*si_OfwQ9}c&!(S-5H{1byJx)QTX80m(6`s|&3$hOt zcs}QyUg)(Av))2Ur36a}(KMmP6@4@(SXV?@Q+gvy$iq;4+ZlFPI_FWz%lm+Ry}^+{ zveVzq^y}nAn{Rjbz`RDbQmT}+F2|A~0) zPZuKAVe(Z#F}K}(J}~P!U%v`M<9DErqRA9v<%l2k>6D#khP?SsPxN3Flvh)8vMVjY zstpaP!dUgf%=EfKDMR^q+d6p#+$xfK*K)jQ_n$O0*O%(B@F<|T+l*Pl7_x6N47k3< zA+q@Q0xGr{pNynr?P-uO8QuB#`sFF*?Q4vQGQC1h>vzkf^21X35%61LW*gcYNRyvR zlb=bGpHs+zRj4GY2Lst9nCvC1@vNbC^{mzvc{LeDE&7*YxATPV1;ogI^B45@%dVq? zq82=aq&glGpD|u2B@MR{z`K4*>X{*Ub$Y%RVWeY#3{11RurM}vDn+Lhh41G`4Rk*_riz%tl6dj5#1u4rwylsY!zJE|bT{kLQx>q4V)lxX((U_{LY!qT?l$e&jGt+;xR~#4fAjLx=UgSy(+<=XSjQ zf&w<6$HCC$2`{)yBbCBnh^Iay_I(Vc<>&{!@Tx5ilwC()^@x^l$*%8t z)DrHz0+6D55e!ZJ2780EDbl&KDMI}b9Nr2+5g^9a`2KIybTN@;6v-N2yyj;KViyu z1@50~*s>Ay>%*oP8#INFDnl8}f{ipXXaTkY$a_`3+`!OAYTrOkcYhjiiao^3HQDeP zTJz+0N{-!y4V9^CiQa!b12)SpH$5nGjJb$xp>I|q+n~u5RssGUK;L85-dh|&IZdmO z-1+=nSfuIvHUmXi9G`<2<*pkn9#)NoV~CSbZ?JvJpJm6N1;&Q&+_jiPQlD}J;tg&- zAHVx3JuwT~A5haA489jbLdElqvPMw+4{$ypsAzb_A1Hi$|6W}9*9%Sb5ECr~U&DyP zR+k|<-gc186T9uB4Jni>fvAv-d$r5gfhq#2bDqMFn4))eOYkhE$cPh|#ac&T2r-}q zna$@-X<_)2xPMmXi04z_%KM9cZPb z*hMZ+-pg7^tFY@W0+=eYJiwwAznoFXuI);GtAp_B;KTcG$g^xT-d#=O+$~wwy5uq< zWBN0pz6HZ^V;Fn$%`F^&Sl8EXGU=Z?(m!{>Ya7lKX2<7DUevCuk(ryR$)+)rE6%fP zVGylG^oUDr4Fpr7OCJp z2rbeme=p<7;>*266kYXqN4$g-Gw(DfifWHoLAyi|TO-$B6!BimV8kMsd_V32G)ljg z3MoNg{y;=}-lB2IJu%>(UA|&^!$RB;IqWhednMw>)8SCQY>OW<=m)l+hacZYlI4dK z)TIbxGENS=_J>7j5tzK*BRp7P*c^N$R~4LoZJ8`>nIdhODs7o2ZGmrvM<%ef2^|%3 z_|ZsAl1daXn6Mvm#Pr}vLc@BB@dn`}Y*Lc{g$%6lROdjvzIjghx(fYRm@i;*$$By? zKRC{9fflQ6ZX?BnQX5aih`fP6*_;F`q>laLfzYsx>KwKT4ZCpNGYvWpo5x|Ts@lQR zi1PMtBF;zJ-flR3gefVsK!>kOa1p5l_LT>;M6J)(fF8#oU&IxQ&}U4}59;_FgQHO7 z8wxlKKvlE)BQHZ%6jqX6-o6Y!lDCnSREnh+F@7svXZcaeg+2K3 zdMl-__!C7=s82u`6tWkQ!568z{}#L^Dw44{^2y1L6XQ$wKmlsv)s5KwijvJxuGNo( z(_&PN$pR}6+%GgskG?NWF zwOJ2k0q|f~+sh1aN_A2WLYlirV`vPhB65r+)8>*XuJFMu7=^mM!65g%4;6gp*T|JM z_cP|8`q)B9_zR%%H5Y7!rh1HvQNp>ZvfZ#+p@s`GIT8EF_*7k?Ry#3sm;*Hl35q51L!tyr^DT5YX z0HW~AEW+>fumF_u=_TbK_2zjAow`t_0)zGtp2JkMI}drx(*8hbJ6VBYQ}^7C-;TO2 z2wiSMRbe?a`K2bX-=LF991JPOm^Z@4E#&0qjVxY|`B;^DWHBP&&8AWpMjD|uIzdC> z!wnEQ0Ys?h4#63IfLbESaV2BwShJD%tzJ`)Mc#G``E-QnKZnBpWZ-RG$W*?vE$^fZ zzi@z^oFSgznUos50Qsmkbr#Jbgjn1GWk0+_T@%6G6D|Lw>ZLXKpiQt|GU(7~8D7Fl zeR)7fT2g+UAT<1nD;W&+gN!Tit$zn{In8WfkJ&vzgvQ+2gWnaGPJ&)DH|~kwij_w} zRKc$Y22JxO67*eW;~9t_(7^L+eQqm4dz=k1WVep8V+u^ljYlMl|n@_Ip;6%6p#754pABIKlX=B3(CJ`vK-( z0Xum>yd{AP&`M4Ccd==6@S&J{8>fwV zp%?5pZ#}1nQ?bHo87^n-XaNlW@i?;ex>*n6I%X>Gp!|XJ1tksm-VVRRA9lb1j(z1R zG<>JtP;;R`7N>M5&sa%5jZsu4-A9u$lUtbLyRwJW%Z8;n$5u{%A6jr<&kR*TB za>V%-m7=dvHI9He=SDgx(IQeqGMxPO7P??PlIQZ|^lE?*NtRAe0nu`L?F zrsgH4IPGQQ5LVBB&*98R5Yf~=eS`j4)|c>zxpd1glxD4yX04ZIZIEVd1em`(8?|*_ zx)G(A_oOjFyw6kz&#(+zs~jsApf^sDOMXY~3kOrx1E}R`Np%qyC7XkQGQYN(v;Wzg z3lBc_4og``>4v8}X*b+5HIS0B3|cobfo*1N6rV!uz6#ihHX^HUGx43nq`& z2d^YpGqm!j#1*`_eA3#X#x~cfL(+25MoqP99>wt?#*nZn`e6eY<6evWA@Ycx6w_q} z`jEY+JN8iF`tQh?;mIW8myu+3oB^0i6S!9x=Y@6jJ`p$6zKXZaN|2;M@s@?o-VNi;&0d3QNn;sVm!VVT*J!#)rOc=hyzVRAwCN=8-L zx3QJ9moKrTT=yQ@x`1Oj%xlbyynwJ%I*x#Fs5j@UAkF{(Xu1lpIFhE#%%XuPPJ-;R zi|yj>uE7aOAWj0rjkqTew~M>y;_iBJ_lxVr-QBAB-`aftK1?&y)7{frT~%EYN*u@oC zY2{97Tgfbf4kO|adcLf$XlX8b4J2>x!BF!(PVJ|S!N@A7k`g{=(n)#$Ie@KiLRYMX z?EWm(_+=60-Z;e`uB|^MaN)LXnM%}*DV0H*#3x!ZkX`(SicEO1*{pxzN zP+33Rgw=Q~aJH^8=SFEg-^yaNH;kt#*P;HF)8TS+-v97`hVt(6wqa^SqQPeW2Kzuh<#uTACU*z#f3^wl4nIw_k) zJ9f>)HH#WG14BbLjHgyjQgLJ5n*uIYAa$h<0)j?0$$H^Gm~7fly9_K|hDPqF$J zgiYZ+a#Nt#6a=_vk%kJ?3#PyzTiiIUiPr->%C{I-#&0q8hTLN}f z0k-So(O?FPYHWXYt2uLcjV@?)NH5CRkc9Q+@pB1OMx7zc)kG3MDk$PERLiAIcwMt? z9fafo5T>rA+y`oL$YhsAj-#S;STO zQ_uI05Nqw)50Q5JxiIIrkr2RlUwVesO#M!_VVO|BMZkwzP~e1}*fmm~xuE3p{c#PT zwE9A>X-)+vUI5H#6BZiUGjd;8#1NTt^EP)T)qKCbvY5veHHUmZ@$KByeubEPrW?B*b{Y7wofsH{@zqVEv|~9lOCc% z{aR7XV_-%Zq+W)87V3Kx^jL>NUD5UNCfUej4L?ZW&!zw4iRi~uZ~?YWZ7B(hpX6JR zgIUoGsz`UxwaIsw)KS*dpEHNsGqw^s8w{asB|Ng)e3%GGG%> zq$wXLi>N7R{Co{oTIBfI$l5p)R~ALp^2I|*60T$#{9!goL7OeC>!RxnIb(68Eig0k zTlp4^F;&7XGb2y_f7>B+uHMHy7SDDN{OEp?lD6d|&E6f<^*N3r5x>tHiH3Gy$m+XA zFM?Iv^CFuk<> zuOjX)`HsUf0LaPw#dU0#J_oBy)nPBv`Q-5OY#sdqp>EAWLvg+@4g}8kBcC2E6jqG@ z;OF(#Lpt5+mq_BAWyH!d+ASv(V!=hR;F4JIFHU-X!k(!VIh;+UtI~BnIy#?Si_% z5q^>1h_QH|J_Y#g1ya>8<&j8!4GxiXd=Pr{&2hX zGq~AnN$SQ!*@&N1#rWLJw??)GBI&L{8%lo1D56#4dw;gTEX_CYq`OVtjY#*|;DFjv zQW7v}Y>8d~iJJ$3j<<4t|GynL#A~slKJdV#j$_f1-9^+_Z@i~ITx`Hmm#D0PLk08y zrS)6QycAP^3aVzdLU~RKz>`zn7-M5CSe#fK%CA71wK5FbjBpYooGE(T1f+|37=w0> z`-$rpx%N)N_QF5m@PyQ_v2wjVG5FqIuvlbcBo1AI;$SUGxWKe?=Dbz-;QI#92sguH zr9Hzvk4BLQ!`G}sSm1RFVNu!wp3-)I&BsH~a7UhqO4ytm#kDMG&Rp1%OU#C_s{9+F z=9{Tu^=T$dbl=87_0iafI#gf7qgO$(oM%pnIPL@C{1VqI()At-Y38GL;@B~2q1Tl1 zESre5IcSp z&_oh776PBV&N%C@mDKWWq->NyN?U)u7$(nB_+32w0{dO8{avJ)xRK&NWGQsmO@jg$ zt4kF3IR}+)`wE<2y$-$d=1}k!G3s3woJQ&qT`{u_v*GS>J6AH~ zMGPX7>X++l{Dmj+1qTY4y;xEGP@qMU)hh~L%6!owvrYobv})#qd!>UGY?MFjBhsYm zO=rQ`d+)EvK1v4-;PFW0dTtU=7a*ZNI|3!~p_~Hu_d$H4wUgyK##EJk6sLi~CuCSd z>W*kNERqYK1LXd?DInNr(z?#U>KYY?^Uw{9e9b>kjova3&1e=ia{{f&g#>iyin)#j zowPrm0dYpgAZ|#H&fkGQ%_o~}tx zp7RnD!GNm2hIbv+Joe1!Ry6^m2LYh5CWtE-^O}(-i%4Swg#}X?eJ*++x^mtP)FkvI zPs*H+i3sznW+HRR@G?N7|}&H0_5y zC1ZW-|L0^o%;J@i8DWf)l3s4chpmhM;*Qa-V&-FUFu%y1vIfXkBexuEtHT!lmX$*O zKyLFY6tXCG!s^Pe;EC&dV>UFHPl7`b!nD;*+4-n_q2#Gxl zX2?(uNgo8OPYgz?p70(!vScJezozG87l6hIBT>+m`Q~7N8}bSFYcE_{a#u6h^*jyt zgcTF|QR?kZDE|6Ic))@Fg-l*U!G7=ijVvF1M>3azCPvk#^pMK8L1#n+9cOATDtH)X zc=VcqxbG0Z2-4)TDjiMQ(@HkVq|}j2?O*Z5w$&pmh8O3#kuK z#gMDd;FiuR`TYL?z30kklvVK^jCxrIv4@)$cua=PUQi9~?Qw5Ae;Ptp|7yS(kRy4? zc7S-Ixn z<8yh}98}qVl=pHEx=^$MGIxyWfHsR6_m6sJg^ZA7ihg+rH$&f%b(5ut*NmuSdrxlL z&hQ2w&kSFnXFTCCUmQt+u@!RZ;T@agG zmucvKeo~ipp#URLOv+jcx331`heZBc`ruui$rP|-gIxU#Z5p#55$SLam2e3+yIiPv zR3-}1IYYon5}4t^gD0Vs07$(~M|^6JT}XDhIeB!MYs&gfyk<##9{3_G4LdTe(IofG zpCM{FxfdRNrFF1je;s?h`%IkkSwOh#uSA776D`if01lmOZ^Sd15ln_X@%7nl?_ww| zF0MlFy-1p#!t@O z2MZ**6Ay`1M?SXJbu`BCL4>)R4QkQo5Ve73Ao%U?t7X}Q9R1g!xPk~Sp<;226byyA zI7I{`Oa03mBYmx&6bmg9n5=^DX+Y3=0qCOa7C66swi_6d#&EWgsqhWuPIMo9Lm^6x z?QpQ~^;(Bd+uuS&@W z1QpXdd8GgZhuH3z)8;=yN~+2y$db4?3su-!F2H$B@0<;O(PnHRJ5Hmr^qZ`o-u^QI zYz+?}vFjb2Q#ihHBTY23`-82IAhJ@G!OB0ng@phB0fk(T*isMVpJGk6#sD8S^RX@NLdxpSza-sSb38cVBFk?mv~XXkTXt#a1yK%|A9n zHt?j8KV?Zt&JRy;T9@OY0593#;;Kf&w=!!}xm7dhi+Xc`8B-MlC@^L@n&Qxr0()S~ zmKykiGTIGRSI9KzCrqK_UELutJj{fT8mwE}qdn?f^^Amupkbg9QB*hs%pcjrrVVwN zF&qHNp+^mbDKkCs5xWu|09Dvfv_JDIQ)UBC?n0=0*-#eOMu}^qDQE+qys36lesTfU ziA^W{j(a)SSXf`LrD%YL-hj0NuGpmw)Xl6LM!;%qdmKIJe>f|Dhw{{^We{FKa~nDB zlsZ#+U@{`xdYB>{c5nbf%l2yS4V$RicyPKiT*0)I>IkGIt@EhlNg{x!u4P|CaWKjN zR9@WC2AsM_FcW%S+sS(yy9bIoSb$n|Zw@8XPH?@r+(3-^8;7Ocjf`MylIOFnaW~FZ z_^utYncOCOha!9}cP--{LwbkEax1c0p%;g>?lu*10YAV~E~C)Od6=KxfG>$ZcxtIt z{<2V_$KqZ>;z3&2nNpihhVhx)kT&Sp{EZ-OB}(+&i%gq{bX>IxjxxAXh(sg#`ETZm&!5SUnY%-`Tc9-cJQv1+)*#LE8cky+mI`(NC z-sf~&jt#_aG6X4Mhw5+(lo(g^02P{>Pw}ua1)%2#tCcko?>=<`!p`mtj@(SaRy@Rc z{1!2N9lDqKPd++|nSBM1MHN;UL1z_XwyKI`SOEfhmQtH>;S;0bQGkzI9`|sfv8&Y} z3O&fpzdgnkqH?6I>sCWl9{%6Ji^?Nla{KbOm@yT=pDK^L0sJa!Kd}0vieJAG zuisL76pSvTFEilq0tibzZ-fI9TxEmy(493fHVOpX#mTMsY$6Jeh{B`BhP6cDF|>Y1 zIJe%8(sM4MWe>jM`bK5Pc|Zq0i3<;J;y{SE_9 zAgNPJ{qzm!0}M#A0ta8!%S?}dN>*Tth1ncs_zR^2rU-F4+g^UBl*0Ab=%MA zx3GbWF(G3|U52?ZX=)rfUNrxI{MXkCe%in67hnD%-_(96K=m#Z(PN+zUW8 zGh0xUT7k}p-V6;FX(IHs9gx9u`fX(BX-gp~5NxugX79lPlk2LXrEv=D+2xlz5@|Y2 zF%(fB+(pz!5%r0@QutH42nQ1ZN*%HsyJfK(yP&TJj@yhVvvee&oN62!Xi*5u&y;)q zAg?yd;El-UQx1jVw>2r|wK*F+j~&qovnb~>Bbp`47<(v7WY%FX=TEHi-gPmIe@WD+ z|Mx%pi<9yOh-?d4f=D)4)dsL|(j$=h6TQp0*IZsiV=0)D`^0H1Tfiz+la@?GNmx4P$u3tUGN$Xq(H6L0xqaU2R8hiZ{?5Ym5T{fCx{Y zrE;w3)))sf-k2$tkAHGXt4#=f${70yh#rTpS?VbA?mQsgE#~5yhig8mqT1rUdkJg) zCfxl2>@m@^HPUW818IJ1+`K$CXsg*?^W z5TEg-KSJ*|P}zQRjgK;PVj$fyL3#5sHiNdEhW5X zs>!}y2tv)+35uE`(H*Wm^|S7XX9j%{LeA16L7u0jH6mxbLbL|!uP@zk5JPPKWy@zu-XT{OuHd8d={e! zZkdyLvxqq2#He4x7!CDVdkgU{Y2kYKrhIeLu*AR~fbz33>vy;$u9NFFp!6n?yXA}- z@31{eFULS*X&5q?kY`{=bhvxeRA>W{@6EBGUoQ(Btu-I=8pT>4eTT5V**=6(qyI(L z&Lx!gN{yTUfTo$P!;0V^vtJlo!^_=k9N9NfS|LMP<9c$Yf*M?8lHO?+PQVR?P^EG5ulF+6;RPQwtcb#4UF_txpVG({QviM%}fpx@HqI$Kc zUPJL?&LK%tk2?s<44tr-w{K>K`{=g=A*$M<=>cS|Hrht@s4*iq# zWIZApt!6Oi+*OUR987O0uR2^c(hFgeTf?1*b%!jRX!Q>T&sE_`Gp>(9BsMmvo`7RK zZ$$V``wp*G)e~@3nrb))5tYTzR5wZo=V|z4JUU5#SztH}6bjfd~$Kz5(4UK zsy{acYgYU5id;vmK10KLH^Y*(KCq3afS<`W6e%~N#Psw0T>lO)TGwsc6zPVOPYU+951B%psp%DqDP%Thy7-eW;i1cy4A~C-g{=)T}Dv$ALoa3}Od^Gjg z2^4?bn$pglLS&nZZy*;p;z0pAvCXA3D9dg>S?B%BU-tOmBZ)2#NLL4XOB?OT&$BzS zDmGH1Znnr8qvm;(l~fO*@-EDu)NT)&EWIfn9UtnKGkOr@HpKk;8o}(P-85l0UD(Zl zeV#jpqCqc=FeTaQg;27s$D?YU&pklzjX1`Ale*s&-@0~+Jf-EpTe>zTFaPl<+1uxY zEbiVDcmJa#zkd+na=uh{ZcW`}S3J1Z-h$A#_F9Ene3|G(xf|zWklc6egb77dg&ae( z@ILZ@5`9zL1y@&Uv!t^6Rrej+f7MemHY~huC zyDvt|eSd~5N^yh`=?%qeDF>owapB`p=Q*~piuDBPhTi@G@LV2|i1M9wkn4uAvZ-ir zfwVRW3Q<)ds(Oj4-jq8g2UW6t%Oj*d#ab?ItJZ-d*h>`mhE*OHNWV!bm#Dqb5ftOH zh?HYqA&nOeV;%a&GV=he`tvb_(>;CvEM`2w>v@PIhAg7^BCrC;cNUw;@z*{>?JRy# z$+eD%4C*=(*i_*V-as2qd?OpXQOg8Aqi-{TWu@%m$@%$VJT@H4x}{BBUn0_c5UGs^ zNh(t3O=Iq_yG<06lb|}kTH>|AVX_o;s>`l{mEkTZf9)8xyKnc*k9<4P%|I_2lBeMZNY~ShXTo`+cCuELGDMQCdC7A z?^wQ*muBXoHNbzR_a5NLgSBSbj7A^N!YTfG8q>-d%zm8m4~F9jCNcIgB|2oW8AR=h z4nLKuk5dEKtO6vt%P_$Ca|eXQo6mBh@gotst(?Gh)GA*vXWUqfGNF*(EAcVUWLzoK ztWOnc(`kJ;lzp`36;kyR3TOc`Ua~wyu4^7ZsuVKyJ+aMV5xA!&7%4HIWD1;q9!VUd zpkjCqAMvesjX&aeYX^2eD+^c(B=8O(u59%~uYVAuNkvrJ(g(=)u%M4<~RneNJa!_=}UBh7+CIJrvEFhb!uY(J8FZubIKl3~VzPkku} zF;<4WkMFEoJQ1b>|TMsC~q-mN^;)87a|r zHzl2FjhDU7&jJtKXSEYbjv4KM+@s!8>#tkEIw;S%hMrQ5EyQS|Uz=`Fn3$Q7GC|GK zq5PBJB!l^kRV&EOsjUpv`|gKU;NYYiS;KWQzVyMJg{>pre?sfCSC;|fQZ<>ZpM2Ug zu$i$WN-T*c-9zZrimMC6)rI2fBJvx?@{pPTz@DChnwDyL3csZ;?q0ZY_kdAw#z`En zr=u8|JoZHc+QpH!c5P@(ipqghnEV(CjWM>9=R>bsC+2utP^R`SGAV0*u4N!hwxi}~ z(4QYE>qh-S^NSa)mF*!iQdbMO*@{N@%aoK9I_NcKtK{uOi5)$e)1N=-0ZOv}2vH8+ z7yAv=wJzp27RZ~FTmM^%gVA$DW5pM3UpwRL? zNLH!f#cx$rgwXc;Z0_pVTn!!?PF|06uWym+1Ns8e@rQZucHM3zi3T4isFM~mBD(8S zuuakup;92-cB1lvP$bc~)cez8!M9WK} z<-elkWzeZ{8^$4P!)s8@Mh99cYoG;)uv6^irS)nf7w$OTN;YPnZ4F;8!uBj9AzB-?48JiU-v*!y!|iaI zB8B$D)gOuha~Phuzp=xdw<6Ewvn0_IHt%iA5$pN6C;0v`I7$UoGL({P^Vd4TggcO~ z<&-p+IW5-qZ8^NX9-*$+A|r8ZVoh;uk~lUQQ1x^V%8N>6y=~dGdEo-Gfit9XXAJL8;8+cX(@P zY=DSDyn%+?zXRC?w~W-fe2i1F=iexy;@Ako4rXF9lCAAGacGc)by7^yU=V z2RL*3$oY)kHz}l?W%`}2)hNjL$rRn5apJ;5X1^nmy*U$+E<3-P7?=w=2@6ih$>bhWr7!@W#k)%= zAih&e-mP^?aMY?>Kq^9uPhnL=nehT_1N+9=8}X{_dMz}p zYuj5G58Ku}yEIK-*AOA6MaUTua#n<#GY}!?4Mhkn)`eW8X6Z7Lw2!M~3wSLF{8c*OZY1L{F!nXG>B2+~~kp~^^5pzOej}#5TH3#FfHG`fm={q2L<@HyX zEc&&>=oO8W#DRP&EoFwMdnV78_}&)~7Vduqda*YR{;gk{GazM*q8wW7$2*TL9kDrU za0q%B=x0G5d!Tb(!d|%CmM1aNk;7&#Gf%vh!5wpQ2xsFwFsU+&Sz}>KcB5|sDyZY9 z`gn}CWD3QyeS*ID1}nk=MI3L#Tx<=vBB^$9oyVH-u2Wg=|Zjk+?3z^=bog10|N_js{H|9LgK3 z`U1u8&&O!GPHuzwp!GE}jKeuXO{mpu1%@rXSVrCcj>P*$Z62f4mdY`Z^;J1cmlLsa zoS7Y{XbdSs#@B-W3sQ78?m!Vm8I1p?&Y-LUSmp<}acMgqC6xg~FVAvUggWbKnDX9Y zlaJWsOG&}GC}`(GDhz&#`D$~o4wAU8cmiZ#A-OI77oGtlQ9!;)8hWB+TQWnGsighZ zley|*%|WpS=xu&aEEjts?U*}oNEZYn+RJ5e6g+G7ZE$C_snBp3+6}DI=M?AM6Xmxx z@I=_P+7V#`;+@UsYC~9Wx<@fpY%wp@us%2A!WJrT)s2O<15<%x;!Fzi^|mGlkX{+e zTm~2~);pmbx2-GU+$M9`+6(rEVyTfVmIBdsTiuU$WY061c;h{O3_{mKdO=?8SCyey z(_5_RBi8g4Yx=To z`i2a$j@2`uv}F+gpKe$Sw(%Np6<@wp2&aa~t~tTv*}yi-0ELFXoQwOa`RHQUA89_S z4W4WRc-=Yf?WR{+Q~lclPrk-&8Lf*eIEgRMwS(nf6=Gf2MI(%zimeI^`>j-d3;aAB z%4+8VO9=-Ym%>vambL=pEAOXH6W`%R1Cb+_9mu9_^cFA}tp1|8U>L|XAHZM8T_f~A zs+jbdNrQiCQzxTVc&9F>oN^uq<)dq|tfug-5Al#t(hP}KH>Gj4d5ss2=A%FB6s}T9 zyCc9e>^%S+CSmH!?tMt7=r4(N&qx>UB#B*D$#**;q2qaI2;jd*>PeS$d6~AI6Mg2AiKp}TJ>xgxpxE-ij@16dLcX@Kg2oQpM zx#d%15nino5e6axW)mZD=Di+F!t*zbsek$ssro*-H{?Yg9zPr3j4Y<)I0li)6Bpsj zN6JBWnq>jgZPfQD8eljWn#Vj4&OL4-^ohQWBZPRrSR}~o^G%ARf^Bs$$5rtf^eGg% z1Gg7p^#>cg0%T0z_y!+%96f&Wy)3$F~@W05N zyD&LQT2>=XReu&}(pWf|3*R>w93wM{EfQ1wMYffZo%ju3#G~VYjp_yQZe7cNDFu9@Z2^`zr7FaE8 zU071(<&l7(R(k0a<@#bnP}(5%i&-%DA#7bt{X?WV?YM<*H>QM6JLI@Ls#vM_i};dh z?X-)F5VlX4hK^L~U?~d!gz_pyjcJcEI(MPe7h8GWD)&EwFFfF~r+LRx8Z6T@{4hQ6 zBfquv_`D!`!+X5zH{b>OKQ`|Z?uR|-B2_P?)+JN%;4oqmXYJSt=ZXtSndm z@cb+KD%@fQUbeOex+~k1l28BUc#OKmU@O+P7*(0LfHItq;W4Wzqlz)!jJA&0M#JB9 zfCRJZ*bN!6ZG8ec!{|9YPz^rn&-qm?+at~`q9Mn*)qbO>RojR{fAP7NZyd!p0bwdF zDWP1$d?f4LF&E)5<0_n|1lD03&)x}65)Odb=X{qpFlBvjFfX~$Ns)8#dgo>G2{gtF zYxPHjs%P`qkcSVP^@>^0+nt8m~VeWEcVR!Q9{>?^l4C;f<`dIWCzoxotreyQYB zzz9!-eSdCe_7rB%4Y6W`G;k@o{S1&wsKcbka=m)wa<~Rtm{ppd)oVwi3gfsvnjv!_ z<7jLKYCLiWa|4Phs6)vj=x{liXXu4)^rOuatYSWsMVVW7NDZk$?k?Or&rgHEzehMX zE_MS?5zo`Gs8%tN{3n$G0z}as#1)ubM>wF43h0_ugByPqhnI&F(D)|Wd00v9A4dX< zjT+1IxAP$CFs4%KLADne!!P!Pq^?|RD|tshQ;2(e#l3wB3i>t<8-z!X)<}@y1-tFi zvkV|WJ%%Cw>vrT)xQ99NzRp^3bP~=xD}bM^+ly--rFXA|Jn08=kn-_th&iU|F_J3n zB{VqTIuETatP>dcsn4PMgvjSb(yfEm{3_LSI`|IU`ER+jyxSJwc5WztKgC{#5#T zBak^IdDR0|+ItE`%x{Pk>FcRk5~E-0OKcR!%ljAfvoP9GZx7%UqGF<+ekx^se?Lz{ zmOt{}rQ-TzfJ0#c3utY%hf2S$V5NVW{d zwyV9rK}sf-BOKNRk=wGU|G_=~>AX4BzDa4_m*VD5cj|T&;~;ysrjd8RCzV55lY7v9 z{8~FOTk&%KhD6O;un=8%d!w^WW9zPyMk;tFv1YNvqH8bDPB#Lk^7LvNf-IQ zuPMiF#3KESdKqZX8C2`IfAlHDJ?kN`xOYS;9G{^BY#EB(N z5;bE65QZ*!xG;OW6i`BJ6iQwNlaZVCAkF3&5<-D#rJ;}>@$TxiO8`yRoj;&}J$LUq z6!hv05=0(s#d}8aD2f}RlS)Z*F3V74L)9+3mB?;QfsxTQF>UWqq|NvQuUMOK)5wXkn|9+i zCsI(o?Cc4kZx;w-=f4~|Jg&M0rDX=f>kcJcox=yB>%LKw z%g3S-;OX zE%TKlz#9xYh(um>^0BE5hZRg{6`6?@Wt6XCtZVSDFW{=Wv|_Ofw=O3Cvk>IcdL4*? zkXJ*IBB81cW<~4N%~JIV8tQ!kfWy<3?GU>Mf8qV6Yrh*v<+vZchR@;;1f}!LO2nxK zo`ftgFy9+vFs_dF?e*0P!vS0M7)q+MP?3pl7<;->#`Lj{W_W1t$4G;wSywX=<}bnm zL|C8*3ld?$A}mCNg^I8+5f)B5r#MqvvH319bx3Pe{o4hZoUBvp8RG~Qp7j3wFxP;U zxP(lAqGa!S)Kg0I*L6QCYXX=oJ7$u7_da|qrkxMNP;(!PxlbtM6mv)8 zKPi#z?>WF@7U&({yY=&8ORPChg7CKQvRASNju>9EM^1w$*zgB-Mz^GVWiOWQUnXOI z<@V%VtkvPGoc!K*g!c76@Zf9zVK5x^doi%!ma43iV7a>mfh!3+ z2AewI#jv$t`pMtPeozFSbVFxL;zTv@uqZ=gGq_C&7N_t%_k9%Z_yuF_SZIkQy@&(s@sFvS9+t7z~{z(-p$ORyg3C*xg{CYyd{!158i3oYJ>cV?8Jz z?cyl~=ZXm?28N>0vsPW6aCP*=cAw@D?$m`Jm&LC4-qhhsJ&dKR3k}&2Bvl`#!YLk7 z9F@1k1}Hl_LMiYOzN|S{su0T73V8aQ22jFaOw)Ve=?Zv;*hNbxwox$L*-)8DEm8qewwXAvI zR0$I?1Fipl%=0ZUd>3!^E~~vD*aWeff=#lRJX1`bMbV%C0Wy>Q4%7uk;piQOD18Z& z7%?|-8Yhh#OmVQbg(W=66JtE@B_vTB)P(`RaQAkT*j?HfLLaKh@Q&COl zl1d5A*>3+Q32iay#=(*OY0ui?v=>FM`h zIW$9mxB&dP!fGABf82kl$S&APv0$j)a!ROFy@c#LGo*AbSb@;>KmoVcrEE8kQAno% z==BxatVQFsBX-J2Fz{8WRQ(7x`k9Ui_~wBy@$pQB2h=JGK^vn2ZD~li--xz+{Kr_U z=J^Cek@pIKgyJf(#-(|Kp?vTF`*BUBhWcfI(2#v^lbx&wa~}Ia6HmZWvHvZ11Sauu zBXVSUQM+!8DbwXHd4w zR|cz%da($IdJjZ2+_2S!zBj{bUpojU%s?T{-ZD0B{qGip4X-mB@Xa~O`>+Netgua8 zS*}T4QwB@TN%f!=Qh0E!$H!tpcFueZ%3#Pro`11Nmtos%xa0}OtDtKr=3SHQDTr?wI})r1 zdpAZ|gCculeOPYNiwCJ60oND0Orgsn&B^(Aop|s*!nDJ87%lvV28jwZ^o?9pf|^);7X+t zr#N@Up`{3$9(jt;)-4>N+oMp}t$&?EdG-zY)lw)(LwkMtLexjKg`En7=JrGv>LMuY z8W&M9H)nH-n4o&qg?K3UQqZNF9|K01Y{* z>?5vEq#NHv7N>K>>0EMIxdRsMq08WYGY!SXOD_>7oLt4#@4M6-595{`0g~;x{*MG+ zP!KE0yC^kJ%|=V4Q8_NrgC7%zNtrce%fCk03X9Tm2eaHQa;?saYH2eX0sW(&n(YT)h}8 z!>kac)b}bt==k`$iD~Q~UkW~h7{G=0Wf+}o$XwBX7LogIh-a5(0l#qZN4#Z59ztb1 zwZf(sW>8)?wr;MT4{byBOe&bv98gWp$5lX)7phP~b0^BmVC5k!OBj*GXJ7Hk@juA$ zC-K`(gsGM9k?@KGgFoABW|$4JtvjwxUJ>ZQq`5LdGr zyI$`K&$dYoH zJAIIjH#6n?3K=Tg-kpX+x_Uc}-mwvjr{CKbT*dmAnJpRl;w3V-f*Ah1TWI^B&Ulm5 zj*m)r`%?3vY(*sj0!b-|uwP8!V69^dn9V%#vgrpAx~-YYg?Ti53!BiP<3}T^)Qp9; zEic{U7Xj@C^1sNP*U+g&EBK6}XeA}Z+Oj-+(q4asYz})5zrd|w(4_S5&+62ZA24-j-^|P?(QxMSFLAS1Av$W}yf;ec_6t*(5s0m798u|X5 zfKN)ZDX`{L)WRP8-w^FR6gFUG6U;{c-5A@(>@*$}o6`hyeUWLl@kjt+a5(^I$Dx%# z`aI#l6;jOWJ|MKb$dfO>$P)!uH=&Wm;MK_?K4jaOHzDQDWQC|@CTc-Y&fWGSS2%Id zUW{WX)bSr7%Z86s=sI7DA@_FuA>JGQ;hT&}73bQG3tc)IGo(fR7=62f`4Oo3QA%-0M?ajn2Gx{_=uYSj#U4OP*Qre2s(XW@gwc&{ZzNj41A%A(9*g%% z=5tu>)Jw&r_?$qUPA;c31y-|k6KFxX<~H6B7;THt<-rlm5G)l6j=zNGurgkD$v3uP z#8TY1aN(u3*e3-kttWv44JgUgGpqrWbiOTGqH7h33_fkXf;{v6%-Efj0e$obGDw^b zzwm9@RY#plc3=y2ygCqY4yi3az2p-8Mh(D2ki$5HsrObP)K;08h*@35tZwMJS>3Uh zB{rOoA~(IFyyN4Mz^Um=Sz%7TPuOx|pr1G1+5e>YZPu6vU`bx5&RtirKJgibYr2&< zQai7tm=^2{Cn=ffIm?rG(dBlA)6hQaXE*+wpm2-O^l&5DP@-XuJ3w7EA*QJ7_G8O5zkegWc52WzAwr0QFg=EBD#H*b^554uQL>8ntM_D!(pgL z^Vg|Bp;N~t<34v>5yHV88z6Kyyo<2sFGd9d7Ejer9_bWc^^gXqJw+%QlOC5uB4Ht%@%hi)`c3hJ*^>Y9i%z$b@9Kh{z zI|Wo@!4WxxY|ZvR!e$!Qu?RKxcc6hSzajIOi@DfmbzVhAVtcsQjx)jSk--%AVghP z^K5jgIT9|yA!2|i{IIH3?~faLV#eAC@*Dvviyo6GqWdy@FD;Fl8rMNn;bhcmL?L#Q z(1#6xEHrt@bEkP%52^Ytb@?9uYFgoS3vk|il67FBX{Bv&^ji{*UN075i63i{9{?X*X8Qq^B3^ndlm>|7wLsOWx z`6SMNMu%h`0@5$NpFl}vwXq_1N19SmRBNgFDB169#@~2$mB$sjinaq};Nb8l_x%lq zHn!_Kqw1UHJ)r3`6xT3vOudifjvr>%)H_5%9{doaJiP(qoPLt|N{=s-^ZoxR_qv|z zXegnI)O>U-61Ylr4TbGU)+zJqR}a<-Zjf)K4e+F}v%$z2_=sBO-^HoFGVLI5J}GTO zWN-|dzx~N(GTU|7187`76(f6pFbY%V{NTavYsrMyh-byJK?8Cd6l7?qsHLD{tEq@> z?;nWJx();8*nYh9lfRV$RHwh=CH_=JN@*aFwg3Il`2fUn;eBVV-vRBkn*b*I`KjQu0|9*suOeovUf6c7&h)5{8L(b?%|J?F%Iq>3oCB5 zDI&KG9^!AZ;>q%V$aT;W3=w_`AT;md(b4&fSV7En?H`U~sUs7gPH$NKJI%@wS#xgk zVb2d3ZO_XGWvd)DQ5F_e7-cb<`@ny!rGkBpQu&eTNS(Wv7g+Xm%xLM$b!s|z9oT2C zS8|ZkvTb|)myyZy>H-|qJ*M=*Wk~nPj$CsOgBPsHfm^Vkt(5T486;Hi&1KA^Q)^4) znkE$RTrVGDyC277|4^88i$5L#Q8Q?Kjic_1OtFN#g30>42H#h%_d+XD@9x5VS{^U! z+ps}&DhZG6+W=dUm1#6?fDVsdCR-3{4N4HkRhYqGd0zAsfV}*1_Ie1VT!O^|@-xT` z3$Q5+q+o}*dJt_YXs^~MDEKuVccJdY}Z$I z2Xgmh91g5_z>0|EtJ`zvXA!GhRsG2s&7|RYnax?Tr!EO`7=tjO1}j;!#7jko5Q1lGB{ zupJMi^B3VwX83CpJS*dJ|5V?{k;%yj-7$nwck-}WdnOxE*W(Nma#yC~Tfa2qbi7Q# zScuZf-o!{kMkAcbbjiWXG=GYC{th>p*QptNlbVw6JVrTUl8!2Bfdi4M;3q2!o`}j+ zh!z>bANp!MXdbu3iDh0Q_u%miG+k)}Ub$%v*&r45M6B=OASCm*%SPcA-6*`wk3oKP zC1t9@5%u;QWhNg$&uddb7*9A3P?z$Yn*?ZA=eY&W?62_L!YLw%R+FpbQ;oA>i2@CA zSR+%1ihoeJ^MWwUrHmhaaGzVBKi5mIUu^s074D<1r|^0%Ol4u6;_jd<M znZQ3Ftf~V^It~28k|GZe#6&GVi0e@GPiiogjby8a*Jn#e5VY?JRnuc?>bk8Hvb6Pe zgjt#LW_Gx@9e*03?)ewYS}zLvg%3jXL5@TFdhMj>=gGJkdY$^sWQ-bzu@Y(|rk&tFA_kIf_HbR4c>HQel{Ko^i-^hGw)&@q1zuSahP)QLxa)T^)* z#d^bzl6zldb}Vm*CFtJR6hji!fEye$a0rSURZi+&X6T^Wl<7H+=fK;i2Cgk0o)crrAuQhjF z6e2er^FXJ52$$Sz#MZT9>pD=zp^aEgzNgbl7)yowV$SQ;je9EmI+u`WLQ+R2Z zO+$;0NYx{O(!9a+S9T0$aZl}wP=#3ew^+Htn9`;>;KO$tQ{k}1$Y}hCY}WEJ@H0Pw zl1p#uJJ-sVAx2>MAP{+@De=KrWZ51=+NrRcJ7+j78{BUJaNd8%EC%X+P}lBoQgk>) z-dBesTWa4{5VReg_8kHV*~Se>V>w(Q{N~6w1S|iq2yG46F4T%pzX#f_pn&P0I6EU@?+?ZK}_&PzcYh!gHG|IX*pN!O#T_M8BhVon|rg z2wVLV-5#(+rUZpOo-?;NNfoe1jc$;(+y>gu66gWZA$YXZQh<2HT^+1_1^L@>ug1vW zxX+WL0zY0x2j;7JlW(TJjY?M7gL@}~x2JQ}VTP&2R*l%|2G1M;e1dVSKNTc#^KF%5 z5ju@)qn{2ghD^J;ZZ<}!eN@4_hi24JBYZ(5bQB4lD0v~6>k|A?HF3+p%ixq<2%``D zi^w5iFnP_}eYedFtz$9@cuE>md}nuTNC_wYsKuS`f~3a=Q^qeBBvM`5fY5yx937X& ziPHGmFc{$^JJzMBZ5=VbgD>yIcBFj3NU&A-^CQ>r zkA}j&pS!(+q7xlh6Q^Gqv>G({sPl<4$dk5=DZNp~L6`?NeJ0{Q*tc4WBh7}Ml1T4J zZR>nyv|0_O+m6g4W}dYN&@lO zr;7aU@-|gt6C5+K{fdNZgTY?y)NTq8`jQXqULrV{S5i_{B$Dlkp&lo0;W64^6&`yn zq8NICxildIS3_zUbOmiL?|c(@nisUoFd!QzFl$j;b{7v(rwVv*OLjBrJZzVqGVbff zQz3Hid~k*nZ}Xs2qi0yfvQZVa?83v{3g-O;Fe+tx$dj1E6ly}GjSM@)D_>CKmyPfu z)CKY}@@hB=d;+$a%T*mFWvizfrN*S2HG&HayS^5c4N9V@?mckRu>(cz|BRdNZq#tt z9o)R0L5_DbxNffS$Yf6beJwa&YlSTaQ{ znToO2lVIZ~Q}Yd%`K{SBlrKiSrjjGqk<-!gmHvCNHY%*LjIe6Vn`iTJEuazmi)CTB zvP0%p{VU09-B=JU4ND+QRYtougpr}B&yl7f$X zwa;LcX=Sun83QLFy-<$U(!x+wl7YP$`HmQdh`eA2^pRUbq-&akQ;;#g5SbQ)6Km;K z6}8%8i$js2znQgQwSDWK3ft%D#bA@KPgls*U?Qa-41`8$j>$RX`BsP2Gc)AsV?gm2 zhBEKL?%4@sR*#>E%pl^lHH{2Sjc~wV{rLgnRry2p2g1|UJlH+{MpXPtEIVo0a4PlW zecWjS54ZC~9=fP-Tf8b=N!eW|;IZ{6#=6}CabB*a`~vPXrxD=_NSskB#82S;!3SL1 zL5Q}!%RpVTJdcst=&LNQoow9%DGoT$P$M;Z!15Q~K@)pk1-ddSiDz9|4@y{_h?})D zsgvR|3b0!?mzP}l6efmZGs)fZE4q8QM17f%=;1(tlZq``wwpd=P>>3*o<0) z^Q!iX=dIAN8FhHF36I)7B@m07Kmqx@@nszNV~i|oOc4@&a-_UFe=$h5wcUZYb~6k0 zGtlwJ2EC51RL{_!(q=PgY&x8q=Au`|%IVP?;_a6ILUjTiTQmWAFpz5w8;asVN>t10 z%0qtRs^xHNL+eNp$O=26Z0NfGL}oLw8%q zyT~D_5HBnjY zTo3t&C}d+1-+%&VvN5s9RFFJU-UI5KU;@=H%^4i48AH2y!7=Qat|M(EQNIiMZLbf? z$MhUdZ-ZS*kY1ff1sB#yu!|iT!G(rC_{h#4lLB!tA?+MbEkYBeLK^LHSMsAk{{loh z0365H!QSF>u@0b152w@CG^>dg;>bM6V9XXeh*~T=w z<*6O$JJ+?06_h_&h3@DxvN8|D!Ow7E6sl2QlxgXJ?iR8iA6JTv$>R9AI-*r z(jrPSE&yiI!F@dPX1KQDZq4t+rwyP6ln3iG4Nf}Cc!iMN@T&Lydf-m_IK!`-&7!-U zSiQ45wqM^_E70OLu{FWgY`@D7$jMStu3avPn!91x@DQUB1(Ql37htvS|Co9U@FgK6BZMGvLN>`J8{N3Oy9*H{gdhPzaOWVwf*x?l!Qt-icDQr69Twc-aHl%&rCW=y0q6X$Q`S*0-3(yOolcpB@a6TITcW52a~KJ)~7Kt-nT)9uXW+# zpmah9>fvYw>4*o^53x<(Y9(O7TZUr|dx6X31#Ylk{2@O2I80dt?^MS3gz7%-{N-I+`oQY{R!bu9 z6Dfm1VHoO?-OOB2lZhYL>aZ=j@lhSpYxh9gzYJ*pcd%sN3%AFK87vTy`-@J+{);geg-LxC;7{?h+f4jKf0 zHje<}4>4EJ<+ut_ZoX6a37&=4ZD@oo_c*l0RSbXdOI)wWrJx(+J|+7Y2RNvfG{xJY zKmY$mk=yF^ZYn-dQ}l|LLrBJE6pR{Og%)bhxsswxD0(r3t&af~hg+geS+J3Y26mBjqh6wqff2#8?0j8|jG!g!=3 zA9^A+6{Xtw@|e^IotwRrOnWl04j8~Txjk2>VKr}{!DGiDulCv?q#hG9WHEcT1Q)H0 zLKY!TgtUff2j#+^KxxgJ;}dY|+>UQDqvZAl7>i3=Vchew3o4KJ3wT@(cu&90WU?(d zfdJY72 zvFXJarM4mwYuGZq4bMZs6Q(sB`%uDed;SzhgX5C0JV{O~*#B%8g4aQFYdIy}a7O+3 zX?*J33f=hEA9Tg4_0WQ+5W6$T^R9;*qtU#9LDbt*&g`bL16)G=AosKI5I%Gt1wNdL zT@dk^38a4dhcsat9dM#`}kfhd`M>!Y_1AUpJ!)=x-s(Ki&jR7_qA z;lb{0EctHq1Q8zol_|e6u*l!BZSqRKsjeiWh;I74u8i017UJg7VSoz82v8n3pD4-VBF-En_xjzp5v|8@+;snb*x%0 z)i0vaZCOUEK7B!9BeELkQ3?!oK=b-icB~3&xfQO@coIzCk3=a)mu;+2V}Eu8{Bw;F zidtB&tySnSy7m49G6bEjxWvlWy{7YNr}`O0wK9UsH2cu*$>?7pDN-*9&r;^WB=5!f?)78gm0$wsSy)_S$ zX`(Gko0&fU1>5aUd{C4Mg+nh23mGOS!&G1ug}nryU(TWC^R*&s*WS<~f?u9-Opyc(T<2ExsdV5rJP%lP4*0aiAKCcrxu5B>UT~a< z)nRFdo+*F{6j(^3j-f&C*$45!@3Cj73L^F`S?hQB0b8GSJ6KgOV)h1HiW9rhkub3uAcy+N|&la?_--(TrgvAD=|AP zG2U4lFN5I7J$VVmqQ|ljv-WZX#=*WRgQAeb&KPEY1S9wVoqFvIQW!!OmLhc9!CRFs zj6UpPKJ${2o-oWi*Byvz+d0%qn`VPlxo@nZfdQDkaS)n=Yk7q?g3o}qD603e{s{$9 za}F|PM5QD3r1}w*1TWzvo%u|;k7uJ~;rXN3n+;saY&j4imfMPeUqcg`+f;6VxZ5>U za{d?!w*A;y_Qz+hTYzpWQwQSo2^OgD09|Gjk{65;0IDNRd*QwP&q2Qb_83-F*Z3T) z=N=V$7=qtED?kw+k;Pg!*h{jEcxIz32|pl&2RuBW`Je=u43iVG-bx1;VC z+3|i3c91Co6T=P6Q9P(43OC?RqJdpVN`|FAQ11Mgn1v6|mfP*~Ko&B^pXER0RcGN@BRMnS~W{yB> z-AM!^!? zIW9HefZM*#2ha!O8x-882A``Lj;or2M?6BVXAoHi2$Xeu+5nSno6k{`mFr*W!*!|( z(ZQ8lwMWiwMQuYRV|G4+iTZmoTLGpobn zXH$h(`-fONO{|?xfoGRX4ir6(1tQb(D0wDBKBZLI#84*ypc=vmt#Lb6&e&3I%W|of zNbTjwQ|B8_QC@>kBSY5GK4AvTdP*S5yx1PO`F?}>jf2)(V;yIT4d`FNL@zwZvuljh zY=zbfoLx#R%M9(_MrcRJxe=2zA&va81455&!?4G-kjW}PkRgTngaLS%arF?=>O-F) zHSj#6&ktJLG14rvK8VS%=nPGxRoJwd?V-Pbk`=cOqp`wq8Gxo{TbCk7sbz87e^$Zn zy1oV*!vJP`u6bCm-5x;bJ(`1TIXuJ|s68}-s?rOZD#ykq_#?c+S!aD`z{0OPm zjNE?bmqhOlMqg))#5IZ%yKlq0{L(A2f}IT>;&I6>X2bcUGkDZp3eWXVdBoi)eGVgW z_fSS*CChQ-lN-IIzF&-SJJRX|s4~;fQ+UMfoP&|3IgZf|lDD!1UTb2-=Qy%+;sdza ze50Q5xhQ-tF@2&wXxISAJ|oKqJ;zp!yaAOQsT%Z7bqYQn(avz_e1n)eqVaotT4~K) zDW5vHGfH-P>>>%xU@}+n#;$1XF6(q9i>9Y=@$};Tmp3of*rAoS^ZeTI1Ft zZXr_p{(I1N^z>N%x?_}L(UynOc}NRvS@-{Z^hI?KQQcEi_Y&2;MRgxh-Io$fo-qql zIar4AXLD9uZG%WJ?ZQR72#os8@x1Y%0ecQ|o0CpBqGA*dPvVo9az;ljn@&4D?nl3Y zaJPaNCj@z#q!g3v#3Xyj94++Glf;QMqSXSPi}uXy*4WPG1FO&FR^S(Ne2)d5mAt03M!&YP&;E~+2Go5bX2g&})#nwC z^=km$0$|~+?NVx=S#muH(w6U;&g;MAKco&FVMExk134Ak!kv2VU%*3&rvX`A7VTgV zn*6Mu{XVpB*NF=|lp1hs3t>1C>({40>qa1EN#qqst)yyOitnF=!P(-2%a`(>YsGvH zR_0Clq{@WW|NDdXLi@?s2?&RA2)cqW*O_C*4$Tb)Q=~|hs;IL4KX{#e&;p(;U#$&h zK*~}D@V))p`s-A6btM3KD5-Cq)@A?e5Tb8G4{9qZx+kA%{uqbQY0uDnMT8RLDl7Lv zNLL2&j(K=LZqex@BUDZ3D$p3aUP58~JF6YLY@yJB5&Yag=?1=|`Epz<$baKU6m~ql zMZ3^D_Bn^UmJ0@hxntl9Al5ek_YP*uOn`z7bQ)maYX6aH%yWeyUar>lLjm>HGw3J( zA^zE2z0R0G(PSqjZ)wcum7Hhu*>OhpjWiVP(D*P9iSn?&0y_NAt7S*+ZkH}IB{0Y(d8c{8HdkX9}@R#nCOqp##urQm`4`qXe6m&jO^@nW`te z?qT}9?i*0|f6gM5+K3S#+vI?kWEpxEFBq_$N#;ZiJH2zAI9w9l%PHteBOw3irp%E0 zy&JWiE;48BJ> zX6P^Ahu(Obyh9z|LGO_Uk7J&lXFlatFuJz4sY9yiA1;T8V_PWX3KMHl9ob)H=v`L- zh=+5H_+His)B^##0$eDjn^f~k6!4Wt8vO;h^9(sHi@I`A*8w`$d*PZ8Gcibw2jMdc z@vg!n6n<#<$lkGS&UV@8e*ICVF9T)P2Qz=xd;-i1T1{ylA z0}p2Fo2#(PJJvnLLheqQQ}7jg={NHAH$y2{3TAv@ax|~+1f-qTFT!e(JP-qR7}L;> zjpDT9ZIF__u1k0m+nxT!1D7lrzgP+!KUrIcbqoI9n%vpvw9 zwbpjh;(S|F@eeY`8=JdR-lm>FCl%|sos?%~$h>=+#w@*#Os{MeLlE&=4GwS?uTk4q zF06>n-N3Rzn@)c`#hJz_15~K1hRGpMi|3fI$^@pn%;H%F>^R&`4>n|=Ra~AGBHCFg z#jR|B*Q^~&9Uy6kg~twDJ0Zk}lg1TQWU+2G4^+a*CSar#&&ro`yeT!6d9wGfQMYs` z$(X`yOl#(1`UdK%+zqqwAGJf{@wLAs*8E55qna?nk1k=NbZRX*t%^oZl7EiC?Z5v} zTJ&7pDsM4upvw8iog5s)u)i|Z50KdY&SP00(Ik3K(-l$eMO3+ti0VKQTOXs~2%r_v zE=F$@dX{2TBMQ7E?4-;d|`_9R{b2bN%ad{FDZT#uhp&RDRU#A z4?onzk)vZr89LNXyRxwEy{%zG^_hWM(Ad3LoMBCGqF7>whLo+Dg_>Wg$gCQe0MVlt zG9AsskHRjedm}G6?>dTT;CJH4QIK+0x}H3QPK#h&;dGRudi{ZAkYMu#Wp;d~@on50 zkry0`!yNa$Y=<-H{TMPgG2%M5=ZB&XM*NW~YKqlK$mW7 zu)E!%pf84okawq>V4%mmWJ1LK-WSB8JV&Kji4a9AbB}5lh;r67T^%*RtS0fSLhPL_ z_WlLOe03EJ7`x-DqJn!a=(Ni>aBWP;CyV8g`FH%a>?50Uiv>}-R`iEwZe^)BU3doI>AykoXkB0FUG5g`A@+g zm|*ky*iY&}LFR1v5cMShY3a+A$nSZM`>(RTBI9JGa^qk~9!=XwV$=zW4rO!HDZuoL z9nj6I>w~Dv0L-`S&Q5hvmDKIz?M5`X7u!PAU02uP4GS3*?mt(Yu^9D zbAA0W3fayZ)E|zYOjiJHIRrcgh$?6}S&E^G8C#%V;Mr@FBpzU6^j{BJvXz-37?lYJ zcA}x=l1MPuQVWOhUdY?QAS3$lD|BhbcU|hTc`fcWI(W;v?g;yhP={ZGsUmO_x~E)B z9-nXHyt`&GynZt~cK&sWU%;DXYik-B@&q-_Myh!kIjEX3g$7~^HYk2Ujb(kPay~@= zC7ncyvxjcBIoWEwkr8&3ZGh6VXh7+|zXgwy7%e9}{<(F8*qQDX>bjqGW9T=~K zm0bheNWO^c5(wlT{g4+`!F<>;UC3&8Arpu(d&lxS=DX3@O~)}uX1@oaZP(7Euj8e| z0`&MbyvMdKq8#_n`0?!xd4>7w>6nOD71&pCwhRVWJf+m+YW%o=iX1GI<`@u|LQ=csSbrg*PUBL+GC{q|~~@BT{*4*)we zZIKK1Yp9xY7SyANS^h7ndme$vBX=c{|c5WSw`^+ zQ)PYr1xx~*Y*5+0h(eeDU?s!Y_|~{z^q!Q>k{SZG{30n)!>Py|2T038Src&3Xm?WPO=#c!)RCvM#_V>fR6meonw&}=m2uy!H|)|xgW zmLT7W5P#Kcf$&<0GSRNw#Zcoq^fxoR9lkdqw^}>)EnM-I8#}1*%VcQ)sa-EHmi3WG zqknQk#4dx-6|x8y76~UgP<*rQn7yodlcoA2)Fu40tU$;z;4 z0F{5{@qh8xU!z>c_8y- z`{DMaS`z)rDREVM48ze}8hmLD`tHd7@S!~WM-VSx44Y@l8cEz8LdoTmFnpH|;W|vo zXCI-`^)hle(#=qq3|1(j;GW!M2-d}SW=%(JyCT<5b)ozi0zi@$kbib6Dl~sYJ|3^6 z3d;24^U1rH)HeJ-bWAz44tNotWM|k5Xxg=800tT!cH@qomNF=(`zsXwzLebjG-x|* zRuA;Ebuf-7auXNm;j&Lwk&_7#%@)pGy_TI+K(eQxxNtt{@Mx&`l z2^1a%NGatS!S(YOJk?mPmLYqpHt!7_8Vp;tP-MD#UQrl9({wXMpJOmG6W-Si01^>M z?ASCurX&pWME35l~>)>tyBWEQ!J zX)3?gOd*;6O$mADk*l?vUtv`1iJS_)?bRy^?q1J~i$ z;$Fc!!XN4Z2#)rW0^t7&JF4=ji2XhcIi@4v4M zvk)+uS6W735A@*;sDlp2!0WT3kQ4Ke9rkoHvNO(7!BCc%S{>Sk8L&NN#zP`e|8d)q zsjSxg>ZwegmlsLmnI(B&>VXFlX3V@O|3I1jCg8{Wo0M>UJ%2&~)Ji=laFVwcab%5W zj^?MMRGeCl*3B#VY+E zwUt_)%mV6eq2P0+-Plvj!t;7Ccej8OE$Q2ONOaQm_*VbM{1t_oGaN@#^Ro%s2u1vyatzt0x*@Chc+{cfvT@jpMDDu6QewNLQ5Snj;0=SZbFI8hDM7Z7MCM+Bn zmfOF1qU8fQXrpzwpI#`7p(6oGbQenE#t@1caTbihPL4(>>Kz*aw*vNNSo;~+$W3s;JTt0*}>0}Zu377vx0zo>Nt zlMs$KIHG}vu7$2WtYb#z!~GbT`1i7j zN!SHSN!ojx(#zIymoq!VG7a1J2(=sxvl480lR~XEHFATN${ZG26&Z-3QQcYuxBy9=p$;jWjN6l3c$UU@Kt+c9uiWBD`L`S>HgU-W93$ zMCyH!`aq;U6seEE7;WIGFA9Bh)GUk7e68jCD8mLY{7$gI2}arhznMGs(U@D{{mDV? z$mRMg10B(Mo#+g0hI)Xm(0pbjN35l+f#xXxX|^Ga*s%rO@HL1-8v6Q}Ex;YIxastJyvy!#TUESVX zwi971sq>&Z>`Bvp40i{t$DStj@9?v$Y+8Q@i064S^xZ0!Fr8Ppa2FafyiL^)IW)PQ zb6?c(+yuplCr!xn4U8h5$B^$FrZSsAH{(DL0F=RpLbx*tJI4W6C&C>86jtPaWSwxh zfpkXoEQiC)n+w_)hf{#ZnTuRFzQb%?oiO~c?me1kyApf~@EI?BK>5&7FJ(thO0F>m z^4(0a1DG?k#E!aOhFR-d8sG9LQ!SSF^ifv*@+_*mt~&~U6^O)hNPsCE`Q{BO)Tk-s z!4v!l*aJq_yf2OQo?=K?NOy2Mthbm__XZxABfoSO&0y$LsAsc1Ql`;ULy62*pHD*ieT12p6ep? zK-{OcseJr&o&^&E_-Gl_8QjBAMKXvPwO2mkviki6a7-@7M|hyz^OCre!R5_S<+qkk zk!JkdjdtE;Q+DQh+~#z3R=Db=kyA8I-%ZHJur)rwSJw$;8Xlm|lg8lIGGsAImfq_P z=aP_j-KC0u?RexhBOp>c`3I zZDt6h4tGYA?yi60chr(f)EnnWF&8>v0na~bO11Ns;X!gk#yiP5tnzmWy5vRNZ2ZTz z(3j8ZIS#*DfA+@WYU&Mj!$-PyjJXC)IEK{eF#I{Wd>1Z1pmkIxiN}c)dY+FAqiw3N zq%7M)ofa#ll=+UTx7>%wP%M0D;66%g=gwo53{Nce;~{!I$!=F2Y@$I#V8(&T8ZzY; z)Q96;2KB2)CATPw%<#k4SPW&5?bQ1NB3?PRf%}Z6+CB5zO11}bz0Ms@3~GjYWv?IL zJa0iY8{vsv{z)4DfeNv6yx0liC+ason#UFJ+DYvl1CqbJ^J>m%(ox%*Me8cuIX`I* z%>hiKQw@KKM>b$QJscfJ6oyv6xi#`Uc6L2EA{xC#- zr){Z7Rd&B4RW}{4{XlPMB8l%^$shg%V0kfz(&epk_x7Zm&(^p29JdvVG1zW9;Z&<{ zgZdikS=|Vq;buW*`N~YxM>^H2BY6>7?o-n3Cg+K&`l_)J2cw_bp(uyjxcyiPEKs}ua5673;&-O zn}7GAs$Uac>QVA?9+R77S}_vn7oARehU~oA%$@K)yA%Gr^6 zCQruKj7@-wOgtmrR@D=cw*Jt*NdlQSU+p55V2>|E{t@3GIHBpTL=|-Yvm#QR{qr-#4x}RkCAunAVcx9ulU(d z5=A0E$@5XWkxR2tm3`YD)pFAR`6HDFbN-OMdAm8u5}iP*n$c1%8_yJdLSB z3F}r7xV3fO$}Sg@wwd6@VS=}=FkTLKu@r2Ok5)Z=DfK&Zd9uERAkFU2ho`TGWVS_X zU8S4@uV}FHa(@hHJG>Zte%zz!Ry%rO9vV-eG0&P}FdY03$j~8l{g08Gf0LVv`YE8@ zteq+R_%O8BI*DRGvXYbP(pVI5s*lzZ`EJdDw|l%KkM3odxbOzh4Gx7Z;7`#BK1wXs z@VD61KR{~RVm5zqmm~k84fU5bx;}xhu#9Mb8*G#=UvPbGN;zLw;!QuHr*Vbho>#azJrYQTVnJT^QKzJL4AF{w?LhyaL#X0Do27#`qx0bAbI))>`UdO zI~YY!0_s`wwW2bS*buG6y;-E!L_50P1_Pnm6ln>;zBHf(rA+RCA9s8y<4B!CGJ%u% zUL}a;V@t|Dv21+CWNSA4$N6v@v)7a3FLqDWN#&<+CI85b}^ zc1z(4wo*1XAup5mELktuQVt4K)-y>b?@umpQ22vJ-;76V4l&CV!pIR1v)9{VEqNSU z#HUEHs8THI4tFK7=v?@I7I?I(q^KQCtdF-tbQmE2f3d!o!AH*7JBX43CxHLGhPq)N zo-vP$15wT6%^HPRZ7Eh;iPhE!!MF@Q=yOA_p@pA&sknb{1(?7M!clG#Z`6RWr5M+i zR@FdL`H!;j5sE+xm~X@QUCAre=f?q5Z8(jhm)2qdOs~O^OfrNZ~jK&gy1 zP^N`vmNaUkJ6XGW=IsGwjcmxgi~hN|^59d_Lc5yHmN5?r$C_oiaE1o{EjhJnD}!te z`_>DkGtonjKBHwY6FtMg)2bUrWrjLZ3U!^^3rbZ(?=YYWY#WVUsfSZUq7$4rN}c=T z8i3LKVg-3hrx&;JAuUdkdfH9yjPnEVi&{S>@5M|5L_K9tH8GMhQzj`?9)O_#IwHf; zj56Yyfw@1-Z7)!n%{SgWenrQTX1{HWj(y8bCfkPyiLIy8>=&TIBenE|*`XdK3uN&J z{=p>yLaJem_1BZ_%Z=w4V+Yhb~S$ zn!b~pLF*-8Lp{2s+D#qwlH_Rk*RLMTHI-}N?uem4`~qy5DvYCdAamvPArSy85}G;p z)}sw;%PB}b%lF9!;(h=;;Ng8Fb+}98eOj@DOZ&c8&`6@&H@x}4LHKoQVT!u>}&_g=5QrHg&}eJ?Qp67KG|BH#=1}! zMd*vbIU;bb2%IMZ=ZnAv*o{zl1D23F@F%3TPM7S-xo{G)qV8VCW*Y*}uIwBtFS`wv zO{-a6SRv7*zTbisI)D9%97u#iB6w%mPIkx2OJ9w{mGnA}a@u*ZEozYs0Eye~NpJ>Z zNfo=T&=uRg?4k?*C@#J$+=@BwU~zon$ZlB4M#@%2&2;Z0 z_yDQ3k6K>1&KeuDfJ_vSg+Mh*)s8hfOvw9b9vak{PI)7>i@e|(PUW&*F%7u@Q53f1 z7iT&(RhdFEoQh3JU<70GTZ$Jm$0&&ynhpP9arB@; z_4U2)wtGBQ42!&OL4 zSMWM;>h@Nv6;kHU$E>a!($T)^AL@NE1q?>3=|0G8zBq^b;uv}p?W&Fc@uV(w48rU;57X5#5Ks5F18{4Wq<{(G>HF;c4vN&e-tFFzetY zQsu(K_^#%A`PizgJHanpR|j~T*K#?2_p_Xg5z*WxrQdkmc5?9rdiLHkPX?bbP{pDt zr%t#K9k(3lTZHS2aHx5wuEYR)Y#N~}=8w@4^J}q~Viw9i@aML8Dn5KEJgu%X(9IUo zARgGO_o12(`D;}QB=KKiOxOoyR4!da-_DyAh(>;6J&6MX|S zccA?j$T-aH@@rsf>jfQ9Fse6D3l4){5IfWt_EQX%T=r_2n<0Hz8ta=&X<@-UA|5R} zOJa(koMpbKKJwqc86=)L!py?>pXJbd+5QUGYm`hn{tV5ec5cdapk}%uM&--~ab_d= z&8fxF!*2J#fIsT_XZ0)sM3Rdc{LZ;REC;2NL6R(H?h-S1Q@SUUUN2ihbud8IYe+Vm z7om<{-Ei)K8yxNHZJC&R&QgU-nY|j>DKZ(<>=>YVn757dm>bMpSuh z_A|p2VsR4Q0a z8`M&DVl)q#_PB?VDF2K4N45kF-<2H7_bNog5^Twm0d3LW(%$+gUAa64X;nBnNy_+@ z2C(lp&}jz9RN#UfO|!LNt8ZKb^)^^FNUcHEMX&h*)k&K#;A~^hP3VbIo&Q4zWF

    51%8SXvG8u1mftO)WWjpNVwM4qe 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 Q&t*d8ZZ1#= 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�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

BUlu*YmpL9FoEf$3g&@_?xj1~>XJ8%0Z+ETB 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%0DTvBvUquo^vS7 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