From d5de82198ceabd7809468c0e3d5c328522050b72 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 19 Feb 2022 19:46:53 +0000 Subject: [PATCH] Fix bug overwriting content when more than one declaration --- .../data/AddressDeclarator.bin | 2 +- python/requirements.txt | 4 +- python/setup.cfg | 3 +- python/test_requirements.txt | 4 +- python/tests/test_addressdeclarator.py | 51 +++++++++++++++++++ solidity/AddressDeclarator.bin | 2 +- solidity/AddressDeclarator.sol | 11 ++-- 7 files changed, 65 insertions(+), 12 deletions(-) diff --git a/python/eth_address_declarator/data/AddressDeclarator.bin b/python/eth_address_declarator/data/AddressDeclarator.bin index 4834db1..93f775a 100644 --- a/python/eth_address_declarator/data/AddressDeclarator.bin +++ b/python/eth_address_declarator/data/AddressDeclarator.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620021eb380380620021eb833981810160405281019062000037919062000991565b606060058190806001815401808255809150506001900390600052602060002001600090919091909150908051906020019062000076929190620008e7565b50600560016005805490506200008d919062000abe565b81548110620000a157620000a062000c1c565b5b9060005260206000200143409080600181540180825580915050600190039060005260206000200160009091909190915055620000ee3383620000f7640100000000026401000000009004565b50505062000cb2565b60006200010362000939565b6060600062000123328787620003c3640100000000026401000000009004565b9250600160008460006002811062000140576200013f62000c1c565b5b602002015181526020019081526020016000205490506000811415620002de57600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906200023d929190620008e7565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050620002f2919062000abe565b905080600160008560006002811062000310576200030f62000c1c565b5b6020020151815260200190815260200160002081905550600581815481106200033e576200033d62000c1c565b5b90600052602060002001859080600181540180825580915050600190039060005260206000200160009091909190915055600160046000856001600281106200038c576200038b62000c1c565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b620003cd62000939565b6000620003d962000939565b6000604067ffffffffffffffff811115620003f957620003f862000c4b565b5b6040519080825280601f01601f1916602001820160405280156200042c5781602001600182028036833780820191505090505b5090506200044a878762000641640100000000026401000000009004565b925060005b6020811015620004ed578381602081106200046f576200046e62000c1c565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110620004a857620004a762000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620004e49062000b77565b9150506200044f565b5060005b60208110156200059d5785816020811062000511576200051062000c1c565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000028260208362000544919062000a61565b8151811062000558576200055762000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620005949062000b77565b915050620004f1565b508282600060028110620005b657620005b562000c1c565b5b602002018181525050600281604051620005d1919062000a32565b602060405180830381855afa158015620005ef573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019062000614919062000991565b826001600281106200062b576200062a62000c1c565b5b6020020181815250508193505050509392505050565b6000806000602867ffffffffffffffff81111562000664576200066362000c4b565b5b6040519080825280601f01601f191660200182016040528015620006975781602001600182028036833780820191505090505b509050600085604051602001620006af919062000a15565b604051602081830303815290604052905060005b60148110156200078857818181518110620006e357620006e262000c1c565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811062000743576200074262000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200077f9062000b77565b915050620006c3565b50846040516020016200079c919062000a15565b604051602081830303815290604052905060005b60148110156200088357818181518110620007d057620007cf62000c1c565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014836200082a919062000a61565b815181106200083e576200083d62000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200087a9062000b77565b915050620007b0565b5060028260405162000896919062000a32565b602060405180830381855afa158015620008b4573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620008d9919062000991565b925082935050505092915050565b82805482825590600052602060002090810192821562000926579160200282015b828111156200092557825182559160200191906001019062000908565b5b5090506200093591906200095b565b5090565b6040518060400160405280600290602082028036833780820191505090505090565b5b80821115620009765760008160009055506001016200095c565b5090565b6000815190506200098b8162000c98565b92915050565b600060208284031215620009aa57620009a962000c7a565b5b6000620009ba848285016200097a565b91505092915050565b620009d8620009d28262000af9565b62000bc5565b82525050565b6000620009eb8262000a4b565b620009f7818562000a56565b935062000a0981856020860162000b41565b80840191505092915050565b600062000a238284620009c3565b60148201915081905092915050565b600062000a408284620009de565b915081905092915050565b600081519050919050565b600081905092915050565b600062000a6e8262000b37565b915062000a7b8362000b37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ab35762000ab262000bed565b5b828201905092915050565b600062000acb8262000b37565b915062000ad88362000b37565b92508282101562000aee5762000aed62000bed565b5b828203905092915050565b600062000b068262000b17565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000b6157808201518184015260208101905062000b44565b8381111562000b71576000848401525b50505050565b600062000b848262000b37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000bba5762000bb962000bed565b5b600182019050919050565b600062000bd28262000bd9565b9050919050565b600062000be68262000c7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b60006c0100000000000000000000000082029050919050565b62000ca38162000b0d565b811462000caf57600080fd5b50565b6115298062000cc26000396000f3fe608060405234801561001057600080fd5b50600436106100b0576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b3614610175578063ae47ece0146101a5578063b68e6f31146101d5578063d0e95db114610205578063ff7496b414610235576100b0565b806301ffc9a7146100b557806322168e4f146100e557806350e0c6d3146101155780637d64bf1d14610145575b600080fd5b6100cf60048036038101906100ca9190610fbf565b610265565b6040516100dc91906111a4565b60405180910390f35b6100ff60048036038101906100fa9190610f52565b610317565b60405161010c9190611167565b60405180910390f35b61012f600480360381019061012a9190610e52565b61039c565b60405161013c91906111da565b60405180910390f35b61015f600480360381019061015a9190610f52565b6103e7565b60405161016c9190611167565b60405180910390f35b61018f600480360381019061018a9190610e7f565b61046d565b60405161019c9190611182565b60405180910390f35b6101bf60048036038101906101ba9190610f12565b61050b565b6040516101cc91906111a4565b60405180910390f35b6101ef60048036038101906101ea9190610ebf565b6107b3565b6040516101fc91906111a4565b60405180910390f35b61021f600480360381019061021a9190610e52565b61080d565b60405161022c91906111da565b60405180910390f35b61024f600480360381019061024a9190610fec565b610859565b60405161025c91906111bf565b60405180910390f35b60006327beb9107c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ba5760019050610312565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561030d5760019050610312565b600090505b919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106103695761036861141b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061043a5761043961141b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b606060008061047c8585610896565b915060016000838152602001908152602001600020549050600581815481106104a8576104a761141b565b5b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156104fc57602002820191906000526020600020905b8154815260200190600101908083116104e8575b50505050509250505092915050565b6000610515610d5d565b60606000610524328787610b19565b9250600160008460006002811061053e5761053d61141b565b5b6020020151815260200190815260200160002054905060008114156106d957600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610638929190610d7f565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60016005805490506106eb919061129a565b90508060016000856000600281106107065761070561141b565b5b6020020151815260200190815260200160002081905550600581815481106107315761073061141b565b5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001600460008560016002811061077c5761077b61141b565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b60006107bd610d5d565b6107c8858585610b19565b905060046000826001600281106107e2576107e161141b565b5b6020020151815260200190815260200160002060009054906101000a900460ff169150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6005828154811061086957600080fd5b90600052602060002001818154811061088157600080fd5b90600052602060002001600091509150505481565b6000806000602867ffffffffffffffff8111156108b6576108b561144a565b5b6040519080825280601f01601f1916602001820160405280156108e85781602001600182028036833780820191505090505b5090506000856040516020016108fe9190611135565b604051602081830303815290604052905060005b60148110156109cd5781818151811061092e5761092d61141b565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811061098b5761098a61141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806109c59061137f565b915050610912565b50846040516020016109df9190611135565b604051602081830303815290604052905060005b6014811015610aba57818181518110610a0f57610a0e61141b565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283601483610a679190611244565b81518110610a7857610a7761141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610ab29061137f565b9150506109f3565b50600282604051610acb9190611150565b602060405180830381855afa158015610ae8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b0b9190610f92565b925082935050505092915050565b610b21610d5d565b6000610b2b610d5d565b6000604067ffffffffffffffff811115610b4857610b4761144a565b5b6040519080825280601f01601f191660200182016040528015610b7a5781602001600182028036833780820191505090505b509050610b878787610896565b925060005b6020811015610c2057838160208110610ba857610ba761141b565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110610bde57610bdd61141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610c189061137f565b915050610b8c565b5060005b6020811015610cc457858160208110610c4057610c3f61141b565b5b1a7f01000000000000000000000000000000000000000000000000000000000000000282602083610c719190611244565b81518110610c8257610c8161141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610cbc9061137f565b915050610c24565b508282600060028110610cda57610cd961141b565b5b602002018181525050600281604051610cf39190611150565b602060405180830381855afa158015610d10573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d339190610f92565b82600160028110610d4757610d4661141b565b5b6020020181815250508193505050509392505050565b6040518060400160405280600290602082028036833780820191505090505090565b828054828255906000526020600020908101928215610dbb579160200282015b82811115610dba578251825591602001919060010190610d9f565b5b509050610dc89190610dcc565b5090565b5b80821115610de5576000816000905550600101610dcd565b5090565b600081359050610df881611497565b92915050565b600081359050610e0d816114ae565b92915050565b600081519050610e22816114ae565b92915050565b600081359050610e37816114c5565b92915050565b600081359050610e4c816114dc565b92915050565b600060208284031215610e6857610e67611479565b5b6000610e7684828501610de9565b91505092915050565b60008060408385031215610e9657610e95611479565b5b6000610ea485828601610de9565b9250506020610eb585828601610de9565b9150509250929050565b600080600060608486031215610ed857610ed7611479565b5b6000610ee686828701610de9565b9350506020610ef786828701610de9565b9250506040610f0886828701610dfe565b9150509250925092565b60008060408385031215610f2957610f28611479565b5b6000610f3785828601610de9565b9250506020610f4885828601610dfe565b9150509250929050565b60008060408385031215610f6957610f68611479565b5b6000610f7785828601610de9565b9250506020610f8885828601610e3d565b9150509250929050565b600060208284031215610fa857610fa7611479565b5b6000610fb684828501610e13565b91505092915050565b600060208284031215610fd557610fd4611479565b5b6000610fe384828501610e28565b91505092915050565b6000806040838503121561100357611002611479565b5b600061101185828601610e3d565b925050602061102285828601610e3d565b9150509250929050565b600061103883836110d7565b60208301905092915050565b61104d816112ce565b82525050565b61106461105f826112ce565b6113c8565b82525050565b600061107582611205565b61107f8185611228565b935061108a836111f5565b8060005b838110156110bb5781516110a2888261102c565b97506110ad8361121b565b92505060018101905061108e565b5085935050505092915050565b6110d1816112e0565b82525050565b6110e0816112ec565b82525050565b6110ef816112ec565b82525050565b600061110082611210565b61110a8185611239565b935061111a81856020860161134c565b80840191505092915050565b61112f81611342565b82525050565b60006111418284611053565b60148201915081905092915050565b600061115c82846110f5565b915081905092915050565b600060208201905061117c6000830184611044565b92915050565b6000602082019050818103600083015261119c818461106a565b905092915050565b60006020820190506111b960008301846110c8565b92915050565b60006020820190506111d460008301846110e6565b92915050565b60006020820190506111ef6000830184611126565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600061124f82611342565b915061125a83611342565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561128f5761128e6113ec565b5b828201905092915050565b60006112a582611342565b91506112b083611342565b9250828210156112c3576112c26113ec565b5b828203905092915050565b60006112d982611322565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561136a57808201518184015260208101905061134f565b83811115611379576000848401525b50505050565b600061138a82611342565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113bd576113bc6113ec565b5b600182019050919050565b60006113d3826113da565b9050919050565b60006113e58261147e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b60006c0100000000000000000000000082029050919050565b6114a0816112ce565b81146114ab57600080fd5b50565b6114b7816112ec565b81146114c257600080fd5b50565b6114ce816112f6565b81146114d957600080fd5b50565b6114e581611342565b81146114f057600080fd5b5056fea2646970667358221220ae28d67ed718aa9371a0b367df98b507fbb1d1a653a6c7e8a30a2e4ad143240664736f6c63430008070033 \ No newline at end of file +60806040523480156200001157600080fd5b50604051620021eb380380620021eb8339818101604052810190620000379190620009ba565b606060058190806001815401808255809150506001900390600052602060002001600090919091909150908051906020019062000076929190620008e7565b50600560016005805490506200008d919062000a25565b81548110620000a157620000a062000a60565b5b9060005260206000200143409080600181540180825580915050600190039060005260206000200160009091909190915055620000ee3383620000f7640100000000026401000000009004565b50505062000cb2565b60006200010362000939565b6060600062000123328787620003c3640100000000026401000000009004565b9250600160008460006002811062000140576200013f62000a60565b5b602002015181526020019081526020016000205490506000811415620002f457600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906200023d929190620008e7565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050620002f1919062000a25565b90505b80600160008560006002811062000310576200030f62000a60565b5b6020020151815260200190815260200160002081905550600581815481106200033e576200033d62000a60565b5b90600052602060002001859080600181540180825580915050600190039060005260206000200160009091909190915055600160046000856001600281106200038c576200038b62000a60565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b620003cd62000939565b6000620003d962000939565b6000604067ffffffffffffffff811115620003f957620003f862000a8f565b5b6040519080825280601f01601f1916602001820160405280156200042c5781602001600182028036833780820191505090505b5090506200044a878762000641640100000000026401000000009004565b925060005b6020811015620004ed578381602081106200046f576200046e62000a60565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110620004a857620004a762000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620004e49062000abe565b9150506200044f565b5060005b60208110156200059d5785816020811062000511576200051062000a60565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000028260208362000544919062000b0c565b8151811062000558576200055762000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620005949062000abe565b915050620004f1565b508282600060028110620005b657620005b562000a60565b5b602002018181525050600281604051620005d1919062000bec565b602060405180830381855afa158015620005ef573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620006149190620009ba565b826001600281106200062b576200062a62000a60565b5b6020020181815250508193505050509392505050565b6000806000602867ffffffffffffffff81111562000664576200066362000a8f565b5b6040519080825280601f01601f191660200182016040528015620006975781602001600182028036833780820191505090505b509050600085604051602001620006af919062000c95565b604051602081830303815290604052905060005b60148110156200078857818181518110620006e357620006e262000a60565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811062000743576200074262000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200077f9062000abe565b915050620006c3565b50846040516020016200079c919062000c95565b604051602081830303815290604052905060005b60148110156200088357818181518110620007d057620007cf62000a60565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014836200082a919062000b0c565b815181106200083e576200083d62000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200087a9062000abe565b915050620007b0565b5060028260405162000896919062000bec565b602060405180830381855afa158015620008b4573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620008d99190620009ba565b925082935050505092915050565b82805482825590600052602060002090810192821562000926579160200282015b828111156200092557825182559160200191906001019062000908565b5b5090506200093591906200095b565b5090565b6040518060400160405280600290602082028036833780820191505090505090565b5b80821115620009765760008160009055506001016200095c565b5090565b600080fd5b6000819050919050565b62000994816200097f565b8114620009a057600080fd5b50565b600081519050620009b48162000989565b92915050565b600060208284031215620009d357620009d26200097a565b5b6000620009e384828501620009a3565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a3282620009ec565b915062000a3f83620009ec565b92508282101562000a555762000a54620009f6565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600062000acb82620009ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000b015762000b00620009f6565b5b600182019050919050565b600062000b1982620009ec565b915062000b2683620009ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b5e5762000b5d620009f6565b5b828201905092915050565b600081519050919050565b600081905092915050565b60005b8381101562000b9f57808201518184015260208101905062000b82565b8381111562000baf576000848401525b50505050565b600062000bc28262000b69565b62000bce818562000b74565b935062000be081856020860162000b7f565b80840191505092915050565b600062000bfa828462000bb5565b915081905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c328262000c05565b9050919050565b60006c0100000000000000000000000082029050919050565b600062000c5f8262000c39565b9050919050565b600062000c738262000c52565b9050919050565b62000c8f62000c898262000c25565b62000c66565b82525050565b600062000ca3828462000c7a565b60148201915081905092915050565b6115298062000cc26000396000f3fe608060405234801561001057600080fd5b50600436106100b0576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b3614610175578063ae47ece0146101a5578063b68e6f31146101d5578063d0e95db114610205578063ff7496b414610235576100b0565b806301ffc9a7146100b557806322168e4f146100e557806350e0c6d3146101155780637d64bf1d14610145575b600080fd5b6100cf60048036038101906100ca9190610e46565b610265565b6040516100dc9190610e8e565b60405180910390f35b6100ff60048036038101906100fa9190610f3d565b610317565b60405161010c9190610f8c565b60405180910390f35b61012f600480360381019061012a9190610fa7565b61039c565b60405161013c9190610fe3565b60405180910390f35b61015f600480360381019061015a9190610f3d565b6103e7565b60405161016c9190610f8c565b60405180910390f35b61018f600480360381019061018a9190610ffe565b61046d565b60405161019c9190611106565b60405180910390f35b6101bf60048036038101906101ba9190611154565b61050b565b6040516101cc9190610e8e565b60405180910390f35b6101ef60048036038101906101ea9190611194565b6107b3565b6040516101fc9190610e8e565b60405180910390f35b61021f600480360381019061021a9190610fa7565b61080d565b60405161022c9190610fe3565b60405180910390f35b61024f600480360381019061024a91906111e7565b610859565b60405161025c9190611236565b60405180910390f35b60006327beb9107c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ba5760019050610312565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561030d5760019050610312565b600090505b919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061036957610368611251565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061043a57610439611251565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b606060008061047c8585610896565b915060016000838152602001908152602001600020549050600581815481106104a8576104a7611251565b5b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156104fc57602002820191906000526020600020905b8154815260200190600101908083116104e8575b50505050509250505092915050565b6000610515610d5d565b60606000610524328787610b19565b9250600160008460006002811061053e5761053d611251565b5b6020020151815260200190815260200160002054905060008114156106ed57600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610638929190610d7f565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005805490506106ea91906112af565b90505b80600160008560006002811061070657610705611251565b5b60200201518152602001908152602001600020819055506005818154811061073157610730611251565b5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001600460008560016002811061077c5761077b611251565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b60006107bd610d5d565b6107c8858585610b19565b905060046000826001600281106107e2576107e1611251565b5b6020020151815260200190815260200160002060009054906101000a900460ff169150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6005828154811061086957600080fd5b90600052602060002001818154811061088157600080fd5b90600052602060002001600091509150505481565b6000806000602867ffffffffffffffff8111156108b6576108b56112e3565b5b6040519080825280601f01601f1916602001820160405280156108e85781602001600182028036833780820191505090505b5090506000856040516020016108fe9190611366565b604051602081830303815290604052905060005b60148110156109cd5781818151811061092e5761092d611251565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811061098b5761098a611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806109c590611381565b915050610912565b50846040516020016109df9190611366565b604051602081830303815290604052905060005b6014811015610aba57818181518110610a0f57610a0e611251565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283601483610a6791906113ca565b81518110610a7857610a77611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610ab290611381565b9150506109f3565b50600282604051610acb919061149a565b602060405180830381855afa158015610ae8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b0b91906114c6565b925082935050505092915050565b610b21610d5d565b6000610b2b610d5d565b6000604067ffffffffffffffff811115610b4857610b476112e3565b5b6040519080825280601f01601f191660200182016040528015610b7a5781602001600182028036833780820191505090505b509050610b878787610896565b925060005b6020811015610c2057838160208110610ba857610ba7611251565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110610bde57610bdd611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610c1890611381565b915050610b8c565b5060005b6020811015610cc457858160208110610c4057610c3f611251565b5b1a7f01000000000000000000000000000000000000000000000000000000000000000282602083610c7191906113ca565b81518110610c8257610c81611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610cbc90611381565b915050610c24565b508282600060028110610cda57610cd9611251565b5b602002018181525050600281604051610cf3919061149a565b602060405180830381855afa158015610d10573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d3391906114c6565b82600160028110610d4757610d46611251565b5b6020020181815250508193505050509392505050565b6040518060400160405280600290602082028036833780820191505090505090565b828054828255906000526020600020908101928215610dbb579160200282015b82811115610dba578251825591602001919060010190610d9f565b5b509050610dc89190610dcc565b5090565b5b80821115610de5576000816000905550600101610dcd565b5090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e2381610dee565b8114610e2e57600080fd5b50565b600081359050610e4081610e1a565b92915050565b600060208284031215610e5c57610e5b610de9565b5b6000610e6a84828501610e31565b91505092915050565b60008115159050919050565b610e8881610e73565b82525050565b6000602082019050610ea36000830184610e7f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ed482610ea9565b9050919050565b610ee481610ec9565b8114610eef57600080fd5b50565b600081359050610f0181610edb565b92915050565b6000819050919050565b610f1a81610f07565b8114610f2557600080fd5b50565b600081359050610f3781610f11565b92915050565b60008060408385031215610f5457610f53610de9565b5b6000610f6285828601610ef2565b9250506020610f7385828601610f28565b9150509250929050565b610f8681610ec9565b82525050565b6000602082019050610fa16000830184610f7d565b92915050565b600060208284031215610fbd57610fbc610de9565b5b6000610fcb84828501610ef2565b91505092915050565b610fdd81610f07565b82525050565b6000602082019050610ff86000830184610fd4565b92915050565b6000806040838503121561101557611014610de9565b5b600061102385828601610ef2565b925050602061103485828601610ef2565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61107d8161106a565b82525050565b600061108f8383611074565b60208301905092915050565b6000602082019050919050565b60006110b38261103e565b6110bd8185611049565b93506110c88361105a565b8060005b838110156110f95781516110e08882611083565b97506110eb8361109b565b9250506001810190506110cc565b5085935050505092915050565b6000602082019050818103600083015261112081846110a8565b905092915050565b6111318161106a565b811461113c57600080fd5b50565b60008135905061114e81611128565b92915050565b6000806040838503121561116b5761116a610de9565b5b600061117985828601610ef2565b925050602061118a8582860161113f565b9150509250929050565b6000806000606084860312156111ad576111ac610de9565b5b60006111bb86828701610ef2565b93505060206111cc86828701610ef2565b92505060406111dd8682870161113f565b9150509250925092565b600080604083850312156111fe576111fd610de9565b5b600061120c85828601610f28565b925050602061121d85828601610f28565b9150509250929050565b6112308161106a565b82525050565b600060208201905061124b6000830184611227565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112ba82610f07565b91506112c583610f07565b9250828210156112d8576112d7611280565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006c0100000000000000000000000082029050919050565b600061133682611312565b9050919050565b60006113488261132b565b9050919050565b61136061135b82610ec9565b61133d565b82525050565b6000611372828461134f565b60148201915081905092915050565b600061138c82610f07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113bf576113be611280565b5b600182019050919050565b60006113d582610f07565b91506113e083610f07565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561141557611414611280565b5b828201905092915050565b600081519050919050565b600081905092915050565b60005b83811015611454578082015181840152602081019050611439565b83811115611463576000848401525b50505050565b600061147482611420565b61147e818561142b565b935061148e818560208601611436565b80840191505092915050565b60006114a68284611469565b915081905092915050565b6000815190506114c081611128565b92915050565b6000602082840312156114dc576114db610de9565b5b60006114ea848285016114b1565b9150509291505056fea26469706673582212202b2faf629dd8ed0c1253030a53dc866c1429e8a5ff25d683335d4713c57d8c4964736f6c634300080b0033 \ No newline at end of file diff --git a/python/requirements.txt b/python/requirements.txt index 3ab6070..5a855d3 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,2 +1,2 @@ -confini~=0.5.1 -chainlib-eth~=0.0.10 +confini~=0.5.2 +chainlib-eth~=0.0.22 diff --git a/python/setup.cfg b/python/setup.cfg index e0e32df..0ad341f 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-address-index -version = 0.2.4 +version = 0.2.5 description = Signed metadata declarations for ethereum addresses author = Louis Holbrook author_email = dev@holbrook.no @@ -38,3 +38,4 @@ packages = console_scripts = eth-address-declarator-deploy = eth_address_declarator.runnable.deploy:main eth-address-declarator-add = eth_address_declarator.runnable.add:main + eth-address-declarator-view = eth_address_declarator.runnable.view:main diff --git a/python/test_requirements.txt b/python/test_requirements.txt index c1b90da..f60cca8 100644 --- a/python/test_requirements.txt +++ b/python/test_requirements.txt @@ -1,4 +1,4 @@ eth-tester==0.5.0b3 py-evm==0.3.0a20 -eth-accounts-index>=0.1.2a3,<0.2.0 -eth_erc20>=0.1.2a3,<=0.2.0 +eth-accounts-index~=0.1.3 +eth_erc20~=0.1.5 diff --git a/python/tests/test_addressdeclarator.py b/python/tests/test_addressdeclarator.py index 083aa2c..4864c59 100644 --- a/python/tests/test_addressdeclarator.py +++ b/python/tests/test_addressdeclarator.py @@ -183,5 +183,56 @@ class TestAddressDeclarator(TestAddressDeclaratorBase): self.assertEqual(c.parse_declaration_address_at(r), strip_0x(self.accounts[2])) + def test_three_first(self): + d = [] + for i in range(3): + d.append(add_0x(os.urandom(32).hex())) + + nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc) + c = Declarator(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + + for proof in d: + (tx_hash_hex, o) = c.add_declaration(self.address, self.accounts[0], self.foo_token_address, proof) + self.rpc.do(o) + + o = c.declarator_count(self.address, self.foo_token_address, sender_address=self.accounts[0]) + r = self.rpc.do(o) + self.assertEqual(c.parse_declarator_count(r), 1) + + o = c.declaration(self.address, self.accounts[0], self.foo_token_address, sender_address=self.accounts[0]) + r = self.rpc.do(o) + proofs = c.parse_declaration(r) + self.assertEqual(len(proofs), 3) + + for i in range(3): + self.assertEqual(proofs[i], strip_0x(d[i])) + + + def test_three_first_different(self): + d = [] + a = [] + for i in range(3): + d.append(add_0x(os.urandom(32).hex())) + a.append(add_0x(os.urandom(20).hex())) + + nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc) + c = Declarator(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + + for i in range(3): + (tx_hash_hex, o) = c.add_declaration(self.address, self.accounts[0], a[i], d[i]) + self.rpc.do(o) + + for i in range(3): + o = c.declarator_count(self.address, a[i], sender_address=self.accounts[0]) + r = self.rpc.do(o) + self.assertEqual(c.parse_declarator_count(r), 1) + + o = c.declaration(self.address, self.accounts[0], a[i], sender_address=self.accounts[0]) + r = self.rpc.do(o) + proofs = c.parse_declaration(r) + self.assertEqual(len(proofs), 1) + self.assertEqual(proofs[0], strip_0x(d[i])) + + if __name__ == '__main__': unittest.main() diff --git a/solidity/AddressDeclarator.bin b/solidity/AddressDeclarator.bin index 4834db1..93f775a 100644 --- a/solidity/AddressDeclarator.bin +++ b/solidity/AddressDeclarator.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620021eb380380620021eb833981810160405281019062000037919062000991565b606060058190806001815401808255809150506001900390600052602060002001600090919091909150908051906020019062000076929190620008e7565b50600560016005805490506200008d919062000abe565b81548110620000a157620000a062000c1c565b5b9060005260206000200143409080600181540180825580915050600190039060005260206000200160009091909190915055620000ee3383620000f7640100000000026401000000009004565b50505062000cb2565b60006200010362000939565b6060600062000123328787620003c3640100000000026401000000009004565b9250600160008460006002811062000140576200013f62000c1c565b5b602002015181526020019081526020016000205490506000811415620002de57600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906200023d929190620008e7565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050620002f2919062000abe565b905080600160008560006002811062000310576200030f62000c1c565b5b6020020151815260200190815260200160002081905550600581815481106200033e576200033d62000c1c565b5b90600052602060002001859080600181540180825580915050600190039060005260206000200160009091909190915055600160046000856001600281106200038c576200038b62000c1c565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b620003cd62000939565b6000620003d962000939565b6000604067ffffffffffffffff811115620003f957620003f862000c4b565b5b6040519080825280601f01601f1916602001820160405280156200042c5781602001600182028036833780820191505090505b5090506200044a878762000641640100000000026401000000009004565b925060005b6020811015620004ed578381602081106200046f576200046e62000c1c565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110620004a857620004a762000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620004e49062000b77565b9150506200044f565b5060005b60208110156200059d5785816020811062000511576200051062000c1c565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000028260208362000544919062000a61565b8151811062000558576200055762000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620005949062000b77565b915050620004f1565b508282600060028110620005b657620005b562000c1c565b5b602002018181525050600281604051620005d1919062000a32565b602060405180830381855afa158015620005ef573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019062000614919062000991565b826001600281106200062b576200062a62000c1c565b5b6020020181815250508193505050509392505050565b6000806000602867ffffffffffffffff81111562000664576200066362000c4b565b5b6040519080825280601f01601f191660200182016040528015620006975781602001600182028036833780820191505090505b509050600085604051602001620006af919062000a15565b604051602081830303815290604052905060005b60148110156200078857818181518110620006e357620006e262000c1c565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811062000743576200074262000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200077f9062000b77565b915050620006c3565b50846040516020016200079c919062000a15565b604051602081830303815290604052905060005b60148110156200088357818181518110620007d057620007cf62000c1c565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014836200082a919062000a61565b815181106200083e576200083d62000c1c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200087a9062000b77565b915050620007b0565b5060028260405162000896919062000a32565b602060405180830381855afa158015620008b4573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620008d9919062000991565b925082935050505092915050565b82805482825590600052602060002090810192821562000926579160200282015b828111156200092557825182559160200191906001019062000908565b5b5090506200093591906200095b565b5090565b6040518060400160405280600290602082028036833780820191505090505090565b5b80821115620009765760008160009055506001016200095c565b5090565b6000815190506200098b8162000c98565b92915050565b600060208284031215620009aa57620009a962000c7a565b5b6000620009ba848285016200097a565b91505092915050565b620009d8620009d28262000af9565b62000bc5565b82525050565b6000620009eb8262000a4b565b620009f7818562000a56565b935062000a0981856020860162000b41565b80840191505092915050565b600062000a238284620009c3565b60148201915081905092915050565b600062000a408284620009de565b915081905092915050565b600081519050919050565b600081905092915050565b600062000a6e8262000b37565b915062000a7b8362000b37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ab35762000ab262000bed565b5b828201905092915050565b600062000acb8262000b37565b915062000ad88362000b37565b92508282101562000aee5762000aed62000bed565b5b828203905092915050565b600062000b068262000b17565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000b6157808201518184015260208101905062000b44565b8381111562000b71576000848401525b50505050565b600062000b848262000b37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000bba5762000bb962000bed565b5b600182019050919050565b600062000bd28262000bd9565b9050919050565b600062000be68262000c7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b60006c0100000000000000000000000082029050919050565b62000ca38162000b0d565b811462000caf57600080fd5b50565b6115298062000cc26000396000f3fe608060405234801561001057600080fd5b50600436106100b0576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b3614610175578063ae47ece0146101a5578063b68e6f31146101d5578063d0e95db114610205578063ff7496b414610235576100b0565b806301ffc9a7146100b557806322168e4f146100e557806350e0c6d3146101155780637d64bf1d14610145575b600080fd5b6100cf60048036038101906100ca9190610fbf565b610265565b6040516100dc91906111a4565b60405180910390f35b6100ff60048036038101906100fa9190610f52565b610317565b60405161010c9190611167565b60405180910390f35b61012f600480360381019061012a9190610e52565b61039c565b60405161013c91906111da565b60405180910390f35b61015f600480360381019061015a9190610f52565b6103e7565b60405161016c9190611167565b60405180910390f35b61018f600480360381019061018a9190610e7f565b61046d565b60405161019c9190611182565b60405180910390f35b6101bf60048036038101906101ba9190610f12565b61050b565b6040516101cc91906111a4565b60405180910390f35b6101ef60048036038101906101ea9190610ebf565b6107b3565b6040516101fc91906111a4565b60405180910390f35b61021f600480360381019061021a9190610e52565b61080d565b60405161022c91906111da565b60405180910390f35b61024f600480360381019061024a9190610fec565b610859565b60405161025c91906111bf565b60405180910390f35b60006327beb9107c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ba5760019050610312565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561030d5760019050610312565b600090505b919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106103695761036861141b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061043a5761043961141b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b606060008061047c8585610896565b915060016000838152602001908152602001600020549050600581815481106104a8576104a761141b565b5b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156104fc57602002820191906000526020600020905b8154815260200190600101908083116104e8575b50505050509250505092915050565b6000610515610d5d565b60606000610524328787610b19565b9250600160008460006002811061053e5761053d61141b565b5b6020020151815260200190815260200160002054905060008114156106d957600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610638929190610d7f565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60016005805490506106eb919061129a565b90508060016000856000600281106107065761070561141b565b5b6020020151815260200190815260200160002081905550600581815481106107315761073061141b565b5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001600460008560016002811061077c5761077b61141b565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b60006107bd610d5d565b6107c8858585610b19565b905060046000826001600281106107e2576107e161141b565b5b6020020151815260200190815260200160002060009054906101000a900460ff169150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6005828154811061086957600080fd5b90600052602060002001818154811061088157600080fd5b90600052602060002001600091509150505481565b6000806000602867ffffffffffffffff8111156108b6576108b561144a565b5b6040519080825280601f01601f1916602001820160405280156108e85781602001600182028036833780820191505090505b5090506000856040516020016108fe9190611135565b604051602081830303815290604052905060005b60148110156109cd5781818151811061092e5761092d61141b565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811061098b5761098a61141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806109c59061137f565b915050610912565b50846040516020016109df9190611135565b604051602081830303815290604052905060005b6014811015610aba57818181518110610a0f57610a0e61141b565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283601483610a679190611244565b81518110610a7857610a7761141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610ab29061137f565b9150506109f3565b50600282604051610acb9190611150565b602060405180830381855afa158015610ae8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b0b9190610f92565b925082935050505092915050565b610b21610d5d565b6000610b2b610d5d565b6000604067ffffffffffffffff811115610b4857610b4761144a565b5b6040519080825280601f01601f191660200182016040528015610b7a5781602001600182028036833780820191505090505b509050610b878787610896565b925060005b6020811015610c2057838160208110610ba857610ba761141b565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110610bde57610bdd61141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610c189061137f565b915050610b8c565b5060005b6020811015610cc457858160208110610c4057610c3f61141b565b5b1a7f01000000000000000000000000000000000000000000000000000000000000000282602083610c719190611244565b81518110610c8257610c8161141b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610cbc9061137f565b915050610c24565b508282600060028110610cda57610cd961141b565b5b602002018181525050600281604051610cf39190611150565b602060405180830381855afa158015610d10573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d339190610f92565b82600160028110610d4757610d4661141b565b5b6020020181815250508193505050509392505050565b6040518060400160405280600290602082028036833780820191505090505090565b828054828255906000526020600020908101928215610dbb579160200282015b82811115610dba578251825591602001919060010190610d9f565b5b509050610dc89190610dcc565b5090565b5b80821115610de5576000816000905550600101610dcd565b5090565b600081359050610df881611497565b92915050565b600081359050610e0d816114ae565b92915050565b600081519050610e22816114ae565b92915050565b600081359050610e37816114c5565b92915050565b600081359050610e4c816114dc565b92915050565b600060208284031215610e6857610e67611479565b5b6000610e7684828501610de9565b91505092915050565b60008060408385031215610e9657610e95611479565b5b6000610ea485828601610de9565b9250506020610eb585828601610de9565b9150509250929050565b600080600060608486031215610ed857610ed7611479565b5b6000610ee686828701610de9565b9350506020610ef786828701610de9565b9250506040610f0886828701610dfe565b9150509250925092565b60008060408385031215610f2957610f28611479565b5b6000610f3785828601610de9565b9250506020610f4885828601610dfe565b9150509250929050565b60008060408385031215610f6957610f68611479565b5b6000610f7785828601610de9565b9250506020610f8885828601610e3d565b9150509250929050565b600060208284031215610fa857610fa7611479565b5b6000610fb684828501610e13565b91505092915050565b600060208284031215610fd557610fd4611479565b5b6000610fe384828501610e28565b91505092915050565b6000806040838503121561100357611002611479565b5b600061101185828601610e3d565b925050602061102285828601610e3d565b9150509250929050565b600061103883836110d7565b60208301905092915050565b61104d816112ce565b82525050565b61106461105f826112ce565b6113c8565b82525050565b600061107582611205565b61107f8185611228565b935061108a836111f5565b8060005b838110156110bb5781516110a2888261102c565b97506110ad8361121b565b92505060018101905061108e565b5085935050505092915050565b6110d1816112e0565b82525050565b6110e0816112ec565b82525050565b6110ef816112ec565b82525050565b600061110082611210565b61110a8185611239565b935061111a81856020860161134c565b80840191505092915050565b61112f81611342565b82525050565b60006111418284611053565b60148201915081905092915050565b600061115c82846110f5565b915081905092915050565b600060208201905061117c6000830184611044565b92915050565b6000602082019050818103600083015261119c818461106a565b905092915050565b60006020820190506111b960008301846110c8565b92915050565b60006020820190506111d460008301846110e6565b92915050565b60006020820190506111ef6000830184611126565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600061124f82611342565b915061125a83611342565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561128f5761128e6113ec565b5b828201905092915050565b60006112a582611342565b91506112b083611342565b9250828210156112c3576112c26113ec565b5b828203905092915050565b60006112d982611322565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561136a57808201518184015260208101905061134f565b83811115611379576000848401525b50505050565b600061138a82611342565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113bd576113bc6113ec565b5b600182019050919050565b60006113d3826113da565b9050919050565b60006113e58261147e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b60006c0100000000000000000000000082029050919050565b6114a0816112ce565b81146114ab57600080fd5b50565b6114b7816112ec565b81146114c257600080fd5b50565b6114ce816112f6565b81146114d957600080fd5b50565b6114e581611342565b81146114f057600080fd5b5056fea2646970667358221220ae28d67ed718aa9371a0b367df98b507fbb1d1a653a6c7e8a30a2e4ad143240664736f6c63430008070033 \ No newline at end of file +60806040523480156200001157600080fd5b50604051620021eb380380620021eb8339818101604052810190620000379190620009ba565b606060058190806001815401808255809150506001900390600052602060002001600090919091909150908051906020019062000076929190620008e7565b50600560016005805490506200008d919062000a25565b81548110620000a157620000a062000a60565b5b9060005260206000200143409080600181540180825580915050600190039060005260206000200160009091909190915055620000ee3383620000f7640100000000026401000000009004565b50505062000cb2565b60006200010362000939565b6060600062000123328787620003c3640100000000026401000000009004565b9250600160008460006002811062000140576200013f62000a60565b5b602002015181526020019081526020016000205490506000811415620002f457600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906200023d929190620008e7565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050620002f1919062000a25565b90505b80600160008560006002811062000310576200030f62000a60565b5b6020020151815260200190815260200160002081905550600581815481106200033e576200033d62000a60565b5b90600052602060002001859080600181540180825580915050600190039060005260206000200160009091909190915055600160046000856001600281106200038c576200038b62000a60565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b620003cd62000939565b6000620003d962000939565b6000604067ffffffffffffffff811115620003f957620003f862000a8f565b5b6040519080825280601f01601f1916602001820160405280156200042c5781602001600182028036833780820191505090505b5090506200044a878762000641640100000000026401000000009004565b925060005b6020811015620004ed578381602081106200046f576200046e62000a60565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110620004a857620004a762000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620004e49062000abe565b9150506200044f565b5060005b60208110156200059d5785816020811062000511576200051062000a60565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000028260208362000544919062000b0c565b8151811062000558576200055762000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620005949062000abe565b915050620004f1565b508282600060028110620005b657620005b562000a60565b5b602002018181525050600281604051620005d1919062000bec565b602060405180830381855afa158015620005ef573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620006149190620009ba565b826001600281106200062b576200062a62000a60565b5b6020020181815250508193505050509392505050565b6000806000602867ffffffffffffffff81111562000664576200066362000a8f565b5b6040519080825280601f01601f191660200182016040528015620006975781602001600182028036833780820191505090505b509050600085604051602001620006af919062000c95565b604051602081830303815290604052905060005b60148110156200078857818181518110620006e357620006e262000a60565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811062000743576200074262000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200077f9062000abe565b915050620006c3565b50846040516020016200079c919062000c95565b604051602081830303815290604052905060005b60148110156200088357818181518110620007d057620007cf62000a60565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014836200082a919062000b0c565b815181106200083e576200083d62000a60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200087a9062000abe565b915050620007b0565b5060028260405162000896919062000bec565b602060405180830381855afa158015620008b4573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620008d99190620009ba565b925082935050505092915050565b82805482825590600052602060002090810192821562000926579160200282015b828111156200092557825182559160200191906001019062000908565b5b5090506200093591906200095b565b5090565b6040518060400160405280600290602082028036833780820191505090505090565b5b80821115620009765760008160009055506001016200095c565b5090565b600080fd5b6000819050919050565b62000994816200097f565b8114620009a057600080fd5b50565b600081519050620009b48162000989565b92915050565b600060208284031215620009d357620009d26200097a565b5b6000620009e384828501620009a3565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a3282620009ec565b915062000a3f83620009ec565b92508282101562000a555762000a54620009f6565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600062000acb82620009ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000b015762000b00620009f6565b5b600182019050919050565b600062000b1982620009ec565b915062000b2683620009ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b5e5762000b5d620009f6565b5b828201905092915050565b600081519050919050565b600081905092915050565b60005b8381101562000b9f57808201518184015260208101905062000b82565b8381111562000baf576000848401525b50505050565b600062000bc28262000b69565b62000bce818562000b74565b935062000be081856020860162000b7f565b80840191505092915050565b600062000bfa828462000bb5565b915081905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c328262000c05565b9050919050565b60006c0100000000000000000000000082029050919050565b600062000c5f8262000c39565b9050919050565b600062000c738262000c52565b9050919050565b62000c8f62000c898262000c25565b62000c66565b82525050565b600062000ca3828462000c7a565b60148201915081905092915050565b6115298062000cc26000396000f3fe608060405234801561001057600080fd5b50600436106100b0576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b3614610175578063ae47ece0146101a5578063b68e6f31146101d5578063d0e95db114610205578063ff7496b414610235576100b0565b806301ffc9a7146100b557806322168e4f146100e557806350e0c6d3146101155780637d64bf1d14610145575b600080fd5b6100cf60048036038101906100ca9190610e46565b610265565b6040516100dc9190610e8e565b60405180910390f35b6100ff60048036038101906100fa9190610f3d565b610317565b60405161010c9190610f8c565b60405180910390f35b61012f600480360381019061012a9190610fa7565b61039c565b60405161013c9190610fe3565b60405180910390f35b61015f600480360381019061015a9190610f3d565b6103e7565b60405161016c9190610f8c565b60405180910390f35b61018f600480360381019061018a9190610ffe565b61046d565b60405161019c9190611106565b60405180910390f35b6101bf60048036038101906101ba9190611154565b61050b565b6040516101cc9190610e8e565b60405180910390f35b6101ef60048036038101906101ea9190611194565b6107b3565b6040516101fc9190610e8e565b60405180910390f35b61021f600480360381019061021a9190610fa7565b61080d565b60405161022c9190610fe3565b60405180910390f35b61024f600480360381019061024a91906111e7565b610859565b60405161025c9190611236565b60405180910390f35b60006327beb9107c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ba5760019050610312565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561030d5760019050610312565b600090505b919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061036957610368611251565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061043a57610439611251565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b606060008061047c8585610896565b915060016000838152602001908152602001600020549050600581815481106104a8576104a7611251565b5b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156104fc57602002820191906000526020600020905b8154815260200190600101908083116104e8575b50505050509250505092915050565b6000610515610d5d565b60606000610524328787610b19565b9250600160008460006002811061053e5761053d611251565b5b6020020151815260200190815260200160002054905060008114156106ed57600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020329080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610638929190610d7f565b506000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005805490506106ea91906112af565b90505b80600160008560006002811061070657610705611251565b5b60200201518152602001908152602001600020819055506005818154811061073157610730611251565b5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001600460008560016002811061077c5761077b611251565b5b6020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001935050505092915050565b60006107bd610d5d565b6107c8858585610b19565b905060046000826001600281106107e2576107e1611251565b5b6020020151815260200190815260200160002060009054906101000a900460ff169150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6005828154811061086957600080fd5b90600052602060002001818154811061088157600080fd5b90600052602060002001600091509150505481565b6000806000602867ffffffffffffffff8111156108b6576108b56112e3565b5b6040519080825280601f01601f1916602001820160405280156108e85781602001600182028036833780820191505090505b5090506000856040516020016108fe9190611366565b604051602081830303815290604052905060005b60148110156109cd5781818151811061092e5761092d611251565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811061098b5761098a611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806109c590611381565b915050610912565b50846040516020016109df9190611366565b604051602081830303815290604052905060005b6014811015610aba57818181518110610a0f57610a0e611251565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283601483610a6791906113ca565b81518110610a7857610a77611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610ab290611381565b9150506109f3565b50600282604051610acb919061149a565b602060405180830381855afa158015610ae8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b0b91906114c6565b925082935050505092915050565b610b21610d5d565b6000610b2b610d5d565b6000604067ffffffffffffffff811115610b4857610b476112e3565b5b6040519080825280601f01601f191660200182016040528015610b7a5781602001600182028036833780820191505090505b509050610b878787610896565b925060005b6020811015610c2057838160208110610ba857610ba7611251565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110610bde57610bdd611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610c1890611381565b915050610b8c565b5060005b6020811015610cc457858160208110610c4057610c3f611251565b5b1a7f01000000000000000000000000000000000000000000000000000000000000000282602083610c7191906113ca565b81518110610c8257610c81611251565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610cbc90611381565b915050610c24565b508282600060028110610cda57610cd9611251565b5b602002018181525050600281604051610cf3919061149a565b602060405180830381855afa158015610d10573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d3391906114c6565b82600160028110610d4757610d46611251565b5b6020020181815250508193505050509392505050565b6040518060400160405280600290602082028036833780820191505090505090565b828054828255906000526020600020908101928215610dbb579160200282015b82811115610dba578251825591602001919060010190610d9f565b5b509050610dc89190610dcc565b5090565b5b80821115610de5576000816000905550600101610dcd565b5090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e2381610dee565b8114610e2e57600080fd5b50565b600081359050610e4081610e1a565b92915050565b600060208284031215610e5c57610e5b610de9565b5b6000610e6a84828501610e31565b91505092915050565b60008115159050919050565b610e8881610e73565b82525050565b6000602082019050610ea36000830184610e7f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ed482610ea9565b9050919050565b610ee481610ec9565b8114610eef57600080fd5b50565b600081359050610f0181610edb565b92915050565b6000819050919050565b610f1a81610f07565b8114610f2557600080fd5b50565b600081359050610f3781610f11565b92915050565b60008060408385031215610f5457610f53610de9565b5b6000610f6285828601610ef2565b9250506020610f7385828601610f28565b9150509250929050565b610f8681610ec9565b82525050565b6000602082019050610fa16000830184610f7d565b92915050565b600060208284031215610fbd57610fbc610de9565b5b6000610fcb84828501610ef2565b91505092915050565b610fdd81610f07565b82525050565b6000602082019050610ff86000830184610fd4565b92915050565b6000806040838503121561101557611014610de9565b5b600061102385828601610ef2565b925050602061103485828601610ef2565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61107d8161106a565b82525050565b600061108f8383611074565b60208301905092915050565b6000602082019050919050565b60006110b38261103e565b6110bd8185611049565b93506110c88361105a565b8060005b838110156110f95781516110e08882611083565b97506110eb8361109b565b9250506001810190506110cc565b5085935050505092915050565b6000602082019050818103600083015261112081846110a8565b905092915050565b6111318161106a565b811461113c57600080fd5b50565b60008135905061114e81611128565b92915050565b6000806040838503121561116b5761116a610de9565b5b600061117985828601610ef2565b925050602061118a8582860161113f565b9150509250929050565b6000806000606084860312156111ad576111ac610de9565b5b60006111bb86828701610ef2565b93505060206111cc86828701610ef2565b92505060406111dd8682870161113f565b9150509250925092565b600080604083850312156111fe576111fd610de9565b5b600061120c85828601610f28565b925050602061121d85828601610f28565b9150509250929050565b6112308161106a565b82525050565b600060208201905061124b6000830184611227565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112ba82610f07565b91506112c583610f07565b9250828210156112d8576112d7611280565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006c0100000000000000000000000082029050919050565b600061133682611312565b9050919050565b60006113488261132b565b9050919050565b61136061135b82610ec9565b61133d565b82525050565b6000611372828461134f565b60148201915081905092915050565b600061138c82610f07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113bf576113be611280565b5b600182019050919050565b60006113d582610f07565b91506113e083610f07565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561141557611414611280565b5b828201905092915050565b600081519050919050565b600081905092915050565b60005b83811015611454578082015181840152602081019050611439565b83811115611463576000848401525b50505050565b600061147482611420565b61147e818561142b565b935061148e818560208601611436565b80840191505092915050565b60006114a68284611469565b915081905092915050565b6000815190506114c081611128565b92915050565b6000602082840312156114dc576114db610de9565b5b60006114ea848285016114b1565b9150509291505056fea26469706673582212202b2faf629dd8ed0c1253030a53dc866c1429e8a5ff25d683335d4713c57d8c4964736f6c634300080b0033 \ No newline at end of file diff --git a/solidity/AddressDeclarator.sol b/solidity/AddressDeclarator.sol index 9d821d7..466d54b 100644 --- a/solidity/AddressDeclarator.sol +++ b/solidity/AddressDeclarator.sol @@ -20,20 +20,21 @@ contract AddressDeclarator { contents[contents.length-1].push(blockhash(block.number)); addDeclaration(msg.sender, _initialDescription); + } function toReference(address _declarator, address _subject) private pure returns ( bytes32 ) { bytes32 k; - bytes memory signMaterial = new bytes(40); + bytes memory addrMaterial = new bytes(40); bytes memory addrBytes = abi.encodePacked(_declarator); for (uint256 i = 0; i < 20; i++) { - signMaterial[i] = addrBytes[i]; + addrMaterial[i] = addrBytes[i]; } addrBytes = abi.encodePacked(_subject); for (uint256 i = 0; i < 20; i++) { - signMaterial[i+20] = addrBytes[i]; + addrMaterial[i+20] = addrBytes[i]; } - k = sha256(signMaterial); + k = sha256(addrMaterial); return k; } @@ -77,9 +78,9 @@ contract AddressDeclarator { declarator[_subject].push(tx.origin); contents.push(declarationContents); declarationIndex[tx.origin].push(_subject); + idx = contents.length-1; } - idx = contents.length-1; declarationContentIndex[ks[0]] = idx; contents[idx].push(_proof);