erc20-demurrage-token

ERC20 token with redistributed continual demurrage
Log | Files | Refs | README

commit 32ae98d581cd68a23229c9a9c640a675f0cff0e7
parent fb8d1e548c89495ed1229078c94642ea135ed2e8
Author: nolash <dev@holbrook.no>
Date:   Mon,  7 Jun 2021 09:36:31 +0200

Remove dead contract code in default distribution (single)

Diffstat:
Mpython/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin | 4++--
Mpython/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin | 4++--
Mpython/erc20_demurrage_token/sim/sim.py | 2--
Mpython/test.sh | 1+
Mpython/tests/test_redistribution_unit.py | 4+++-
Msolidity/DemurrageTokenSingleCap.sol | 7-------
Msolidity/DemurrageTokenSingleNocap.sol | 7-------
7 files changed, 8 insertions(+), 21 deletions(-)

diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin @@ -1 +1 @@ -60e06040523480156200001157600080fd5b506040516200339438038062003394833981810160405281019062000037919062000470565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600590805190602001906200010a92919062000309565b5085600690805190602001906200012392919062000309565b508460ff166007819055504260808181525050603c8362000145919062000746565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200016b919062000746565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508360c0818152505060006200020a6000620f424060006001620002a3640100000000026401000000009004565b905060008190806001815401808255809150506001900390600052602060002001600090919091909150558160098190555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a6200028f919062000609565b600a8190555050505050505050506200098d565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b828054620003179062000828565b90600052602060002090601f0160209004810192826200033b576000855562000387565b82601f106200035657805160ff191683800117855562000387565b8280016001018555821562000387579182015b828111156200038657825182559160200191906001019062000369565b5b5090506200039691906200039a565b5090565b5b80821115620003b55760008160009055506001016200039b565b5090565b6000620003d0620003ca8462000578565b6200054f565b905082815260208101848484011115620003e957600080fd5b620003f6848285620007f2565b509392505050565b6000815190506200040f816200093f565b92915050565b600082601f8301126200042757600080fd5b815162000439848260208601620003b9565b91505092915050565b600081519050620004538162000959565b92915050565b6000815190506200046a8162000973565b92915050565b600080600080600080600060e0888a0312156200048c57600080fd5b600088015167ffffffffffffffff811115620004a757600080fd5b620004b58a828b0162000415565b975050602088015167ffffffffffffffff811115620004d357600080fd5b620004e18a828b0162000415565b9650506040620004f48a828b0162000459565b9550506060620005078a828b0162000442565b94505060806200051a8a828b0162000442565b93505060a06200052d8a828b01620003fe565b92505060c0620005408a828b0162000442565b91505092959891949750929550565b60006200055b6200056e565b90506200056982826200085e565b919050565b6000604051905090565b600067ffffffffffffffff821115620005965762000595620008f2565b5b620005a18262000921565b9050602081019050919050565b6000808291508390505b60018511156200060057808604811115620005d857620005d762000894565b5b6001851615620005e85780820291505b8081029050620005f88562000932565b9450620005b8565b94509492505050565b60006200061682620007db565b91506200062383620007db565b9250620006527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200065a565b905092915050565b6000826200066c57600190506200073f565b816200067c57600090506200073f565b8160018114620006955760028114620006a057620006d6565b60019150506200073f565b60ff841115620006b557620006b462000894565b5b8360020a915084821115620006cf57620006ce62000894565b5b506200073f565b5060208310610133831016604e8410600b8410161715620007105782820a9050838111156200070a576200070962000894565b5b6200073f565b6200071f8484846001620005ae565b9250905081840481111562000739576200073862000894565b5b81810290505b9392505050565b60006200075382620007db565b91506200076083620007db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200079c576200079b62000894565b5b828202905092915050565b6000620007b482620007bb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000812578082015181840152602081019050620007f5565b8381111562000822576000848401525b50505050565b600060028204905060018216806200084157607f821691505b60208210811415620008585762000857620008c3565b5b50919050565b620008698262000921565b810181811067ffffffffffffffff821117156200088b576200088a620008f2565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200094a81620007a7565b81146200095657600080fd5b50565b6200096481620007db565b81146200097057600080fd5b50565b6200097e81620007e5565b81146200098a57600080fd5b50565b60805160a05160c05161299f620009f560003960008181610b5501528181610da6015281816119bf01528181611f210152611f5901526000818161103c0152818161196d0152611a5a01526000818161106801528181611a7b0152611ac0015261299f6000f3fe608060405234801561001057600080fd5b5060043610610239576000357c0100000000000000000000000000000000000000000000000000000000900480636ffa8a05116101425780639da7d8ba116100ca578063e3ab207a11610099578063e3ab207a14610700578063e54d63f714610730578063e809529514610760578063eda4e6d61461077e578063f2fde38b1461079c57610239565b80639da7d8ba14610664578063a2119e2f14610694578063a9059cbb146106b2578063b470aade146106e257610239565b80638da5cb5b116101115780638da5cb5b146105bc5780638f1df6bc146105da5780638f770ad0146105f857806395d89b4114610616578063983b2d561461063457610239565b80636ffa8a051461052057806370a0823114610550578063731f237c1461058057806379ba50971461059e57610239565b806331333487116101c557806347a505171161019457806347a50517146104425780634abfbba214610472578063573cc507146104a25780636787a9be146104c05780636a2d094e146104f057610239565b80633133348714610394578063313ce567146103c457806340452d91146103e2578063449a52f81461041257610239565b806318160ddd1161020c57806318160ddd146102da5780631989c6a8146102f8578063229ba1971461031657806323b872dd146103345780633092afd51461036457610239565b806301ffc9a71461023e57806306fdde031461026e578063095ea7b31461028c57806309f28f3c146102bc575b600080fd5b61025860048036038101906102539190612247565b6107cc565b6040516102659190612415565b60405180910390f35b610276610977565b604051610283919061244b565b60405180910390f35b6102a660048036038101906102a191906121e2565b610a05565b6040516102b39190612415565b60405180910390f35b6102c4610b1f565b6040516102d191906124cd565b60405180910390f35b6102e2610b41565b6040516102ef9190612503565b60405180910390f35b610300610b47565b60405161030d9190612503565b60405180910390f35b61031e610b53565b60405161032b9190612503565b60405180910390f35b61034e60048036038101906103499190612193565b610b77565b60405161035b9190612415565b60405180910390f35b61037e6004803603810190610379919061216a565b610c97565b60405161038b9190612415565b60405180910390f35b6103ae60048036038101906103a991906122c2565b610d8a565b6040516103bb9190612503565b60405180910390f35b6103cc610e3b565b6040516103d99190612503565b60405180910390f35b6103fc60048036038101906103f79190612299565b610e41565b6040516104099190612430565b60405180910390f35b61042c600480360381019061042791906121e2565b610e65565b6040516104399190612415565b60405180910390f35b61045c6004803603810190610457919061216a565b610fef565b6040516104699190612503565b60405180910390f35b61048c60048036038101906104879190612299565b611038565b6040516104999190612503565b60405180910390f35b6104aa611098565b6040516104b79190612503565b60405180910390f35b6104da60048036038101906104d59190612299565b61109e565b6040516104e79190612503565b60405180910390f35b61050a60048036038101906105059190612299565b61110a565b6040516105179190612503565b60405180910390f35b61053a6004803603810190610535919061221e565b61112b565b6040516105479190612503565b60405180910390f35b61056a6004803603810190610565919061216a565b61115e565b6040516105779190612503565b60405180910390f35b61058861123f565b6040516105959190612415565b60405180910390f35b6105a66113ed565b6040516105b39190612415565b60405180910390f35b6105c4611594565b6040516105d191906123fa565b60405180910390f35b6105e26115ba565b6040516105ef9190612415565b60405180910390f35b610600611736565b60405161060d9190612503565b60405180910390f35b61061e61173c565b60405161062b919061244b565b60405180910390f35b61064e6004803603810190610649919061216a565b6117ca565b60405161065b9190612415565b60405180910390f35b61067e6004803603810190610679919061221e565b611887565b60405161068b9190612503565b60405180910390f35b61069c6118b3565b6040516106a991906124cd565b60405180910390f35b6106cc60048036038101906106c791906121e2565b6118d5565b6040516106d99190612415565b60405180910390f35b6106ea61196b565b6040516106f79190612503565b60405180910390f35b61071a6004803603810190610715919061221e565b61198f565b6040516107279190612503565b60405180910390f35b61074a600480360381019061074591906122c2565b6119a3565b6040516107579190612503565b60405180910390f35b610768611a54565b60405161077591906124cd565b60405180910390f35b610786611abe565b6040516107939190612503565b60405180910390f35b6107b660048036038101906107b1919061216a565b611ae2565b6040516107c39190612415565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108215760019050610972565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108745760019050610972565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108c75760019050610972565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561091a5760019050610972565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561096d5760019050610972565b600090505b919050565b6005805461098490612762565b80601f01602080910402602001604051908101604052809291908181526020018280546109b090612762565b80156109fd5780601f106109d2576101008083540402835291602001916109fd565b820191906000526020600020905b8154815290600101906020018083116109e057829003601f168201915b505050505081565b600080610a106115ba565b50610a1a8361109e565b905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610aa8919061253a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610b0c9190612503565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610b846115ba565b50610b8e8461109e565b915081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c1957600080fd5b610c24868684611b84565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c839190612503565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d2057503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d2957600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610dcf9190612590565b905060005b84811015610e1657620f42408284610dec91906125c1565b610df69190612590565b83610e01919061264f565b92508080610e0e90612794565b915050610dd4565b50620f42408583610e2791906125c1565b610e319190612590565b9250505092915050565b60075481565b60008181548110610e5157600080fd5b906000526020600020016000915090505481565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb9061248d565b60405180910390fd5b60095460085484610f05919061253a565b1115610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d9061246d565b60405180910390fd5b610f4e6115ba565b508290508260086000828254610f64919061253a565b92505081905550610f758482611bc5565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051610fd39190612503565b60405180910390a3610fe3611c8a565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f00000000000000000000000000000000000000000000000000000000000000008261106691906125c1565b7f0000000000000000000000000000000000000000000000000000000000000000611091919061253a565b9050919050565b600a5481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef8100000000846110ef91906125c1565b6110f991906125c1565b6111039190612590565b9050919050565b6000603c824261111a919061264f565b6111249190612590565b9050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b60008060008061116d85610fef565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff16611196611a54565b6111a0919061261b565b6fffffffffffffffffffffffffffffffff1690506111ee600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610d8a565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061121f91906125c1565b828461122b91906125c1565b6112359190612590565b9350505050919050565b600080600080600061124f611a54565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff168461127b919061261b565b92506000836fffffffffffffffffffffffffffffffff1614156112a55760009450505050506113ea565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1691506112f482846fffffffffffffffffffffffffffffffff16610d8a565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516113d991906124e8565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060008060006115d0611d72565b975060006001028814156115ef57600098505050505050505050611733565b6115f88861198f565b9550600186611607919061253a565b905061161286611038565b915061161c61123f565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506116598261110a565b9250600083111561168e576d04ee2d6d415b85acef810000000061167d86856119a3565b6116879190612590565b93506116ab565b6d04ee2d6d415b85acef8100000000856116a89190612590565b93505b6116ba60008560085484611ea2565b965060008790806001815401808255809150506001900390600052602060002001600090919091909150556116ee88611f08565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161171e9190612503565b60405180910390a16001985050505050505050505b90565b60095481565b6006805461174990612762565b80601f016020809104026020016040519081016040528092919081815260200182805461177590612762565b80156117c25780601f10611797576101008083540402835291602001916117c2565b820191906000526020600020905b8154815290600101906020018083116117a557829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461182657600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b60008060006118e26115ba565b506118ec8461109e565b91506118f9338684611b84565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516119589190612503565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f00000000000000000000000000000000000000000000000000000000000000006119e89190612590565b905060005b84811015611a2f57620f42408284611a0591906125c1565b611a0f9190612590565b83611a1a919061253a565b92508080611a2790612794565b9150506119ed565b50620f42408583611a4091906125c1565b611a4a9190612590565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611aa5919061264f565b611aaf9190612590565b611ab9919061253a565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b3e57600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611b918584611ff9565b50611b9c8484611bc5565b50611ba5611a54565b6fffffffffffffffffffffffffffffffff16905060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611c225760009350505050611c84565b611c2b86610fef565b92508483611c39919061253a565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008060006001600080549050611ca1919061264f565b81548110611cd8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a02811790508060010260006001600080549050611d25919061264f565b81548110611d5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b6000806000806001600080549050611d8a919061264f565b81548110611dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e3057600080fd5b505afa158015611e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e689190612270565b6fffffffffffffffffffffffffffffffff169050611e858261198f565b8111611e9957600060010292505050611e9f565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b6000806000806000611f1986611887565b9350620f42407f000000000000000000000000000000000000000000000000000000000000000085611f4b91906125c1565b611f559190612590565b91507f0000000000000000000000000000000000000000000000000000000000000000620f424083611f8791906125c1565b611f919190612590565b905083811015611fa757611fa48661198f565b92505b611fec600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef810000000084611fe79190612590565b611bc5565b5081945050505050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600085141561205657600093505050506120fb565b61205f86610fef565b9250848310156120a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209b906124ad565b60405180910390fd5b84836120b0919061264f565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600081359050612110816128f6565b92915050565b6000813590506121258161290d565b92915050565b60008135905061213a81612924565b92915050565b60008151905061214f8161293b565b92915050565b60008135905061216481612952565b92915050565b60006020828403121561217c57600080fd5b600061218a84828501612101565b91505092915050565b6000806000606084860312156121a857600080fd5b60006121b686828701612101565b93505060206121c786828701612101565b92505060406121d886828701612155565b9150509250925092565b600080604083850312156121f557600080fd5b600061220385828601612101565b925050602061221485828601612155565b9150509250929050565b60006020828403121561223057600080fd5b600061223e84828501612116565b91505092915050565b60006020828403121561225957600080fd5b60006122678482850161212b565b91505092915050565b60006020828403121561228257600080fd5b600061229084828501612140565b91505092915050565b6000602082840312156122ab57600080fd5b60006122b984828501612155565b91505092915050565b600080604083850312156122d557600080fd5b60006122e385828601612155565b92505060206122f485828601612155565b9150509250929050565b61230781612683565b82525050565b61231681612695565b82525050565b612325816126a1565b82525050565b60006123368261251e565b6123408185612529565b935061235081856020860161272f565b6123598161286a565b840191505092915050565b6000612371600783612529565b915061237c8261287b565b602082019050919050565b6000612394600a83612529565b915061239f826128a4565b602082019050919050565b60006123b7600d83612529565b91506123c2826128cd565b602082019050919050565b6123d6816126d7565b82525050565b6123e58161271d565b82525050565b6123f481612713565b82525050565b600060208201905061240f60008301846122fe565b92915050565b600060208201905061242a600083018461230d565b92915050565b6000602082019050612445600083018461231c565b92915050565b60006020820190508181036000830152612465818461232b565b905092915050565b6000602082019050818103600083015261248681612364565b9050919050565b600060208201905081810360008301526124a681612387565b9050919050565b600060208201905081810360008301526124c6816123aa565b9050919050565b60006020820190506124e260008301846123cd565b92915050565b60006020820190506124fd60008301846123dc565b92915050565b600060208201905061251860008301846123eb565b92915050565b600081519050919050565b600082825260208201905092915050565b600061254582612713565b915061255083612713565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612585576125846127dd565b5b828201905092915050565b600061259b82612713565b91506125a683612713565b9250826125b6576125b561280c565b5b828204905092915050565b60006125cc82612713565b91506125d783612713565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126105761260f6127dd565b5b828202905092915050565b6000612626826126d7565b9150612631836126d7565b925082821015612644576126436127dd565b5b828203905092915050565b600061265a82612713565b915061266583612713565b925082821015612678576126776127dd565b5b828203905092915050565b600061268e826126f3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612728826126d7565b9050919050565b60005b8381101561274d578082015181840152602081019050612732565b8381111561275c576000848401525b50505050565b6000600282049050600182168061277a57607f821691505b6020821081141561278e5761278d61283b565b5b50919050565b600061279f82612713565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127d2576127d16127dd565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f43415000000000000000000000000000000000000000000000000000600082015250565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6128ff81612683565b811461290a57600080fd5b50565b612916816126a1565b811461292157600080fd5b50565b61292d816126ab565b811461293857600080fd5b50565b612944816126d7565b811461294f57600080fd5b50565b61295b81612713565b811461296657600080fd5b5056fea264697066735822122019f96e902334e758898b7e76d98eb448962ce048161c68e1d137a62e7762b08264736f6c63430008040033 -\ No newline at end of file +60e06040523480156200001157600080fd5b506040516200333838038062003338833981810160405281019062000037919062000470565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600590805190602001906200010a92919062000309565b5085600690805190602001906200012392919062000309565b508460ff166007819055504260808181525050603c8362000145919062000746565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200016b919062000746565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508360c0818152505060006200020a6000620f424060006001620002a3640100000000026401000000009004565b905060008190806001815401808255809150506001900390600052602060002001600090919091909150558160098190555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a6200028f919062000609565b600a8190555050505050505050506200098d565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b828054620003179062000828565b90600052602060002090601f0160209004810192826200033b576000855562000387565b82601f106200035657805160ff191683800117855562000387565b8280016001018555821562000387579182015b828111156200038657825182559160200191906001019062000369565b5b5090506200039691906200039a565b5090565b5b80821115620003b55760008160009055506001016200039b565b5090565b6000620003d0620003ca8462000578565b6200054f565b905082815260208101848484011115620003e957600080fd5b620003f6848285620007f2565b509392505050565b6000815190506200040f816200093f565b92915050565b600082601f8301126200042757600080fd5b815162000439848260208601620003b9565b91505092915050565b600081519050620004538162000959565b92915050565b6000815190506200046a8162000973565b92915050565b600080600080600080600060e0888a0312156200048c57600080fd5b600088015167ffffffffffffffff811115620004a757600080fd5b620004b58a828b0162000415565b975050602088015167ffffffffffffffff811115620004d357600080fd5b620004e18a828b0162000415565b9650506040620004f48a828b0162000459565b9550506060620005078a828b0162000442565b94505060806200051a8a828b0162000442565b93505060a06200052d8a828b01620003fe565b92505060c0620005408a828b0162000442565b91505092959891949750929550565b60006200055b6200056e565b90506200056982826200085e565b919050565b6000604051905090565b600067ffffffffffffffff821115620005965762000595620008f2565b5b620005a18262000921565b9050602081019050919050565b6000808291508390505b60018511156200060057808604811115620005d857620005d762000894565b5b6001851615620005e85780820291505b8081029050620005f88562000932565b9450620005b8565b94509492505050565b60006200061682620007db565b91506200062383620007db565b9250620006527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200065a565b905092915050565b6000826200066c57600190506200073f565b816200067c57600090506200073f565b8160018114620006955760028114620006a057620006d6565b60019150506200073f565b60ff841115620006b557620006b462000894565b5b8360020a915084821115620006cf57620006ce62000894565b5b506200073f565b5060208310610133831016604e8410600b8410161715620007105782820a9050838111156200070a576200070962000894565b5b6200073f565b6200071f8484846001620005ae565b9250905081840481111562000739576200073862000894565b5b81810290505b9392505050565b60006200075382620007db565b91506200076083620007db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200079c576200079b62000894565b5b828202905092915050565b6000620007b482620007bb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000812578082015181840152602081019050620007f5565b8381111562000822576000848401525b50505050565b600060028204905060018216806200084157607f821691505b60208210811415620008585762000857620008c3565b5b50919050565b620008698262000921565b810181811067ffffffffffffffff821117156200088b576200088a620008f2565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200094a81620007a7565b81146200095657600080fd5b50565b6200096481620007db565b81146200097057600080fd5b50565b6200097e81620007e5565b81146200098a57600080fd5b50565b60805160a05160c05161294a620009ee60003960008181610b5501528181610da6015281816119bf0152611f1e01526000818161103c0152818161196d0152611a5a01526000818161106801528181611a7b0152611ac0015261294a6000f3fe608060405234801561001057600080fd5b5060043610610239576000357c0100000000000000000000000000000000000000000000000000000000900480636ffa8a05116101425780639da7d8ba116100ca578063e3ab207a11610099578063e3ab207a14610700578063e54d63f714610730578063e809529514610760578063eda4e6d61461077e578063f2fde38b1461079c57610239565b80639da7d8ba14610664578063a2119e2f14610694578063a9059cbb146106b2578063b470aade146106e257610239565b80638da5cb5b116101115780638da5cb5b146105bc5780638f1df6bc146105da5780638f770ad0146105f857806395d89b4114610616578063983b2d561461063457610239565b80636ffa8a051461052057806370a0823114610550578063731f237c1461058057806379ba50971461059e57610239565b806331333487116101c557806347a505171161019457806347a50517146104425780634abfbba214610472578063573cc507146104a25780636787a9be146104c05780636a2d094e146104f057610239565b80633133348714610394578063313ce567146103c457806340452d91146103e2578063449a52f81461041257610239565b806318160ddd1161020c57806318160ddd146102da5780631989c6a8146102f8578063229ba1971461031657806323b872dd146103345780633092afd51461036457610239565b806301ffc9a71461023e57806306fdde031461026e578063095ea7b31461028c57806309f28f3c146102bc575b600080fd5b610258600480360381019061025391906121f2565b6107cc565b60405161026591906123c0565b60405180910390f35b610276610977565b60405161028391906123f6565b60405180910390f35b6102a660048036038101906102a1919061218d565b610a05565b6040516102b391906123c0565b60405180910390f35b6102c4610b1f565b6040516102d19190612478565b60405180910390f35b6102e2610b41565b6040516102ef91906124ae565b60405180910390f35b610300610b47565b60405161030d91906124ae565b60405180910390f35b61031e610b53565b60405161032b91906124ae565b60405180910390f35b61034e6004803603810190610349919061213e565b610b77565b60405161035b91906123c0565b60405180910390f35b61037e60048036038101906103799190612115565b610c97565b60405161038b91906123c0565b60405180910390f35b6103ae60048036038101906103a9919061226d565b610d8a565b6040516103bb91906124ae565b60405180910390f35b6103cc610e3b565b6040516103d991906124ae565b60405180910390f35b6103fc60048036038101906103f79190612244565b610e41565b60405161040991906123db565b60405180910390f35b61042c6004803603810190610427919061218d565b610e65565b60405161043991906123c0565b60405180910390f35b61045c60048036038101906104579190612115565b610fef565b60405161046991906124ae565b60405180910390f35b61048c60048036038101906104879190612244565b611038565b60405161049991906124ae565b60405180910390f35b6104aa611098565b6040516104b791906124ae565b60405180910390f35b6104da60048036038101906104d59190612244565b61109e565b6040516104e791906124ae565b60405180910390f35b61050a60048036038101906105059190612244565b61110a565b60405161051791906124ae565b60405180910390f35b61053a600480360381019061053591906121c9565b61112b565b60405161054791906124ae565b60405180910390f35b61056a60048036038101906105659190612115565b61115e565b60405161057791906124ae565b60405180910390f35b61058861123f565b60405161059591906123c0565b60405180910390f35b6105a66113ed565b6040516105b391906123c0565b60405180910390f35b6105c4611594565b6040516105d191906123a5565b60405180910390f35b6105e26115ba565b6040516105ef91906123c0565b60405180910390f35b610600611736565b60405161060d91906124ae565b60405180910390f35b61061e61173c565b60405161062b91906123f6565b60405180910390f35b61064e60048036038101906106499190612115565b6117ca565b60405161065b91906123c0565b60405180910390f35b61067e600480360381019061067991906121c9565b611887565b60405161068b91906124ae565b60405180910390f35b61069c6118b3565b6040516106a99190612478565b60405180910390f35b6106cc60048036038101906106c7919061218d565b6118d5565b6040516106d991906123c0565b60405180910390f35b6106ea61196b565b6040516106f791906124ae565b60405180910390f35b61071a600480360381019061071591906121c9565b61198f565b60405161072791906124ae565b60405180910390f35b61074a6004803603810190610745919061226d565b6119a3565b60405161075791906124ae565b60405180910390f35b610768611a54565b6040516107759190612478565b60405180910390f35b610786611abe565b60405161079391906124ae565b60405180910390f35b6107b660048036038101906107b19190612115565b611ae2565b6040516107c391906123c0565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108215760019050610972565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108745760019050610972565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108c75760019050610972565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561091a5760019050610972565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561096d5760019050610972565b600090505b919050565b600580546109849061270d565b80601f01602080910402602001604051908101604052809291908181526020018280546109b09061270d565b80156109fd5780601f106109d2576101008083540402835291602001916109fd565b820191906000526020600020905b8154815290600101906020018083116109e057829003601f168201915b505050505081565b600080610a106115ba565b50610a1a8361109e565b905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610aa891906124e5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610b0c91906124ae565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610b846115ba565b50610b8e8461109e565b915081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c1957600080fd5b610c24868684611b84565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c8391906124ae565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d2057503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d2957600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610dcf919061253b565b905060005b84811015610e1657620f42408284610dec919061256c565b610df6919061253b565b83610e0191906125fa565b92508080610e0e9061273f565b915050610dd4565b50620f42408583610e27919061256c565b610e31919061253b565b9250505092915050565b60075481565b60008181548110610e5157600080fd5b906000526020600020016000915090505481565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90612438565b60405180910390fd5b60095460085484610f0591906124e5565b1115610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d90612418565b60405180910390fd5b610f4e6115ba565b508290508260086000828254610f6491906124e5565b92505081905550610f758482611bc5565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051610fd391906124ae565b60405180910390a3610fe3611c8a565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000082611066919061256c565b7f000000000000000000000000000000000000000000000000000000000000000061109191906124e5565b9050919050565b600a5481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef8100000000846110ef919061256c565b6110f9919061256c565b611103919061253b565b9050919050565b6000603c824261111a91906125fa565b611124919061253b565b9050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b60008060008061116d85610fef565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff16611196611a54565b6111a091906125c6565b6fffffffffffffffffffffffffffffffff1690506111ee600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610d8a565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061121f919061256c565b828461122b919061256c565b611235919061253b565b9350505050919050565b600080600080600061124f611a54565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff168461127b91906125c6565b92506000836fffffffffffffffffffffffffffffffff1614156112a55760009450505050506113ea565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1691506112f482846fffffffffffffffffffffffffffffffff16610d8a565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516113d99190612493565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060008060006115d0611d72565b975060006001028814156115ef57600098505050505050505050611733565b6115f88861198f565b955060018661160791906124e5565b905061161286611038565b915061161c61123f565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506116598261110a565b9250600083111561168e576d04ee2d6d415b85acef810000000061167d86856119a3565b611687919061253b565b93506116ab565b6d04ee2d6d415b85acef8100000000856116a8919061253b565b93505b6116ba60008560085484611ea2565b965060008790806001815401808255809150506001900390600052602060002001600090919091909150556116ee88611f08565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161171e91906124ae565b60405180910390a16001985050505050505050505b90565b60095481565b600680546117499061270d565b80601f01602080910402602001604051908101604052809291908181526020018280546117759061270d565b80156117c25780601f10611797576101008083540402835291602001916117c2565b820191906000526020600020905b8154815290600101906020018083116117a557829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461182657600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b60008060006118e26115ba565b506118ec8461109e565b91506118f9338684611b84565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161195891906124ae565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f00000000000000000000000000000000000000000000000000000000000000006119e8919061253b565b905060005b84811015611a2f57620f42408284611a05919061256c565b611a0f919061253b565b83611a1a91906124e5565b92508080611a279061273f565b9150506119ed565b50620f42408583611a40919061256c565b611a4a919061253b565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611aa591906125fa565b611aaf919061253b565b611ab991906124e5565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b3e57600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611b918584611fa4565b50611b9c8484611bc5565b50611ba5611a54565b6fffffffffffffffffffffffffffffffff16905060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611c225760009350505050611c84565b611c2b86610fef565b92508483611c3991906124e5565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008060006001600080549050611ca191906125fa565b81548110611cd8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a02811790508060010260006001600080549050611d2591906125fa565b81548110611d5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b6000806000806001600080549050611d8a91906125fa565b81548110611dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e3057600080fd5b505afa158015611e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e68919061221b565b6fffffffffffffffffffffffffffffffff169050611e858261198f565b8111611e9957600060010292505050611e9f565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b6000806000611f1684611887565b9150620f42407f000000000000000000000000000000000000000000000000000000000000000083611f48919061256c565b611f52919061253b565b9050611f99600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef810000000083611f94919061253b565b611bc5565b508092505050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600085141561200157600093505050506120a6565b61200a86610fef565b92508483101561204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690612458565b60405180910390fd5b848361205b91906125fa565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000813590506120bb816128a1565b92915050565b6000813590506120d0816128b8565b92915050565b6000813590506120e5816128cf565b92915050565b6000815190506120fa816128e6565b92915050565b60008135905061210f816128fd565b92915050565b60006020828403121561212757600080fd5b6000612135848285016120ac565b91505092915050565b60008060006060848603121561215357600080fd5b6000612161868287016120ac565b9350506020612172868287016120ac565b925050604061218386828701612100565b9150509250925092565b600080604083850312156121a057600080fd5b60006121ae858286016120ac565b92505060206121bf85828601612100565b9150509250929050565b6000602082840312156121db57600080fd5b60006121e9848285016120c1565b91505092915050565b60006020828403121561220457600080fd5b6000612212848285016120d6565b91505092915050565b60006020828403121561222d57600080fd5b600061223b848285016120eb565b91505092915050565b60006020828403121561225657600080fd5b600061226484828501612100565b91505092915050565b6000806040838503121561228057600080fd5b600061228e85828601612100565b925050602061229f85828601612100565b9150509250929050565b6122b28161262e565b82525050565b6122c181612640565b82525050565b6122d08161264c565b82525050565b60006122e1826124c9565b6122eb81856124d4565b93506122fb8185602086016126da565b61230481612815565b840191505092915050565b600061231c6007836124d4565b915061232782612826565b602082019050919050565b600061233f600a836124d4565b915061234a8261284f565b602082019050919050565b6000612362600d836124d4565b915061236d82612878565b602082019050919050565b61238181612682565b82525050565b612390816126c8565b82525050565b61239f816126be565b82525050565b60006020820190506123ba60008301846122a9565b92915050565b60006020820190506123d560008301846122b8565b92915050565b60006020820190506123f060008301846122c7565b92915050565b6000602082019050818103600083015261241081846122d6565b905092915050565b600060208201905081810360008301526124318161230f565b9050919050565b6000602082019050818103600083015261245181612332565b9050919050565b6000602082019050818103600083015261247181612355565b9050919050565b600060208201905061248d6000830184612378565b92915050565b60006020820190506124a86000830184612387565b92915050565b60006020820190506124c36000830184612396565b92915050565b600081519050919050565b600082825260208201905092915050565b60006124f0826126be565b91506124fb836126be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156125305761252f612788565b5b828201905092915050565b6000612546826126be565b9150612551836126be565b925082612561576125606127b7565b5b828204905092915050565b6000612577826126be565b9150612582836126be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125bb576125ba612788565b5b828202905092915050565b60006125d182612682565b91506125dc83612682565b9250828210156125ef576125ee612788565b5b828203905092915050565b6000612605826126be565b9150612610836126be565b92508282101561262357612622612788565b5b828203905092915050565b60006126398261269e565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006126d382612682565b9050919050565b60005b838110156126f85780820151818401526020810190506126dd565b83811115612707576000848401525b50505050565b6000600282049050600182168061272557607f821691505b60208210811415612739576127386127e6565b5b50919050565b600061274a826126be565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561277d5761277c612788565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f43415000000000000000000000000000000000000000000000000000600082015250565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6128aa8161262e565b81146128b557600080fd5b50565b6128c18161264c565b81146128cc57600080fd5b50565b6128d881612656565b81146128e357600080fd5b50565b6128ef81612682565b81146128fa57600080fd5b50565b612906816126be565b811461291157600080fd5b5056fea2646970667358221220214e3585417a90159f70b8ae75d3438aac8e728c20d1c53f9e6532d9bcd5cc4d64736f6c63430008040033 +\ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin @@ -1 +1 @@ -60e06040523480156200001157600080fd5b506040516200319938038062003199833981810160405281019062000037919062000468565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600590805190602001906200010a92919062000301565b5084600690805190602001906200012392919062000301565b508360ff166007819055504260808181525050603c8262000145919062000727565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200016b919062000727565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508260c0818152505060006200020a6000620f4240600060016200029b640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002889190620005ea565b600981905550505050505050506200096e565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200030f9062000809565b90600052602060002090601f0160209004810192826200033357600085556200037f565b82601f106200034e57805160ff19168380011785556200037f565b828001600101855582156200037f579182015b828111156200037e57825182559160200191906001019062000361565b5b5090506200038e919062000392565b5090565b5b80821115620003ad57600081600090555060010162000393565b5090565b6000620003c8620003c28462000559565b62000530565b905082815260208101848484011115620003e157600080fd5b620003ee848285620007d3565b509392505050565b600081519050620004078162000920565b92915050565b600082601f8301126200041f57600080fd5b815162000431848260208601620003b1565b91505092915050565b6000815190506200044b816200093a565b92915050565b600081519050620004628162000954565b92915050565b60008060008060008060c087890312156200048257600080fd5b600087015167ffffffffffffffff8111156200049d57600080fd5b620004ab89828a016200040d565b965050602087015167ffffffffffffffff811115620004c957600080fd5b620004d789828a016200040d565b9550506040620004ea89828a0162000451565b9450506060620004fd89828a016200043a565b93505060806200051089828a016200043a565b92505060a06200052389828a01620003f6565b9150509295509295509295565b60006200053c6200054f565b90506200054a82826200083f565b919050565b6000604051905090565b600067ffffffffffffffff821115620005775762000576620008d3565b5b620005828262000902565b9050602081019050919050565b6000808291508390505b6001851115620005e157808604811115620005b957620005b862000875565b5b6001851615620005c95780820291505b8081029050620005d98562000913565b945062000599565b94509492505050565b6000620005f782620007bc565b91506200060483620007bc565b9250620006337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200063b565b905092915050565b6000826200064d576001905062000720565b816200065d576000905062000720565b81600181146200067657600281146200068157620006b7565b600191505062000720565b60ff84111562000696576200069562000875565b5b8360020a915084821115620006b057620006af62000875565b5b5062000720565b5060208310610133831016604e8410600b8410161715620006f15782820a905083811115620006eb57620006ea62000875565b5b62000720565b6200070084848460016200058f565b925090508184048111156200071a576200071962000875565b5b81810290505b9392505050565b60006200073482620007bc565b91506200074183620007bc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200077d576200077c62000875565b5b828202905092915050565b600062000795826200079c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620007f3578082015181840152602081019050620007d6565b8381111562000803576000848401525b50505050565b600060028204905060018216806200082257607f821691505b60208210811415620008395762000838620008a4565b5b50919050565b6200084a8262000902565b810181811067ffffffffffffffff821117156200086c576200086b620008d3565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200092b8162000788565b81146200093757600080fd5b50565b6200094581620007bc565b81146200095157600080fd5b50565b6200095f81620007c6565b81146200096b57600080fd5b50565b60805160a05160c0516127ca620009cf60003960008181610b2c01528181610d7d015281816119080152611e68015260008181610f8b015281816118b601526119a3015260008181610fb7015281816119c40152611a0901526127ca6000f3fe608060405234801561001057600080fd5b506004361061022e576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e116101425780639da7d8ba116100ca578063e3ab207a11610099578063e3ab207a146106d7578063e54d63f714610707578063e809529514610737578063eda4e6d614610755578063f2fde38b146107735761022e565b80639da7d8ba1461063b578063a2119e2f1461066b578063a9059cbb14610689578063b470aade146106b95761022e565b806379ba50971161011157806379ba5097146105935780638da5cb5b146105b15780638f1df6bc146105cf57806395d89b41146105ed578063983b2d561461060b5761022e565b80636a2d094e146104e55780636ffa8a051461051557806370a0823114610545578063731f237c146105755761022e565b80633092afd5116101c5578063449a52f811610194578063449a52f81461040757806347a50517146104375780634abfbba214610467578063573cc507146104975780636787a9be146104b55761022e565b80633092afd5146103595780633133348714610389578063313ce567146103b957806340452d91146103d75761022e565b806318160ddd1161020157806318160ddd146102cf5780631989c6a8146102ed578063229ba1971461030b57806323b872dd146103295761022e565b806301ffc9a71461023357806306fdde0314610263578063095ea7b31461028157806309f28f3c146102b1575b600080fd5b61024d6004803603810190610248919061214a565b6107a3565b60405161025a91906122d2565b60405180910390f35b61026b61094e565b6040516102789190612308565b60405180910390f35b61029b600480360381019061029691906120e5565b6109dc565b6040516102a891906122d2565b60405180910390f35b6102b9610af6565b6040516102c6919061234a565b60405180910390f35b6102d7610b18565b6040516102e49190612380565b60405180910390f35b6102f5610b1e565b6040516103029190612380565b60405180910390f35b610313610b2a565b6040516103209190612380565b60405180910390f35b610343600480360381019061033e9190612096565b610b4e565b60405161035091906122d2565b60405180910390f35b610373600480360381019061036e919061206d565b610c6e565b60405161038091906122d2565b60405180910390f35b6103a3600480360381019061039e91906121c5565b610d61565b6040516103b09190612380565b60405180910390f35b6103c1610e12565b6040516103ce9190612380565b60405180910390f35b6103f160048036038101906103ec919061219c565b610e18565b6040516103fe91906122ed565b60405180910390f35b610421600480360381019061041c91906120e5565b610e3c565b60405161042e91906122d2565b60405180910390f35b610451600480360381019061044c919061206d565b610f3e565b60405161045e9190612380565b60405180910390f35b610481600480360381019061047c919061219c565b610f87565b60405161048e9190612380565b60405180910390f35b61049f610fe7565b6040516104ac9190612380565b60405180910390f35b6104cf60048036038101906104ca919061219c565b610fed565b6040516104dc9190612380565b60405180910390f35b6104ff60048036038101906104fa919061219c565b611059565b60405161050c9190612380565b60405180910390f35b61052f600480360381019061052a9190612121565b61107a565b60405161053c9190612380565b60405180910390f35b61055f600480360381019061055a919061206d565b6110ad565b60405161056c9190612380565b60405180910390f35b61057d61118e565b60405161058a91906122d2565b60405180910390f35b61059b61133c565b6040516105a891906122d2565b60405180910390f35b6105b96114e3565b6040516105c691906122b7565b60405180910390f35b6105d7611509565b6040516105e491906122d2565b60405180910390f35b6105f5611685565b6040516106029190612308565b60405180910390f35b6106256004803603810190610620919061206d565b611713565b60405161063291906122d2565b60405180910390f35b61065560048036038101906106509190612121565b6117d0565b6040516106629190612380565b60405180910390f35b6106736117fc565b604051610680919061234a565b60405180910390f35b6106a3600480360381019061069e91906120e5565b61181e565b6040516106b091906122d2565b60405180910390f35b6106c16118b4565b6040516106ce9190612380565b60405180910390f35b6106f160048036038101906106ec9190612121565b6118d8565b6040516106fe9190612380565b60405180910390f35b610721600480360381019061071c91906121c5565b6118ec565b60405161072e9190612380565b60405180910390f35b61073f61199d565b60405161074c919061234a565b60405180910390f35b61075d611a07565b60405161076a9190612380565b60405180910390f35b61078d6004803603810190610788919061206d565b611a2b565b60405161079a91906122d2565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107f85760019050610949565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561084b5760019050610949565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561089e5760019050610949565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108f15760019050610949565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109445760019050610949565b600090505b919050565b6005805461095b906125df565b80601f0160208091040260200160405190810160405280929190818152602001828054610987906125df565b80156109d45780601f106109a9576101008083540402835291602001916109d4565b820191906000526020600020905b8154815290600101906020018083116109b757829003601f168201915b505050505081565b6000806109e7611509565b506109f183610fed565b905080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7f91906123b7565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610ae39190612380565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610b5b611509565b50610b6584610fed565b915081600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bf057600080fd5b610bfb868684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c5a9190612380565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cf757503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d0057600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610da6919061240d565b905060005b84811015610ded57620f42408284610dc3919061243e565b610dcd919061240d565b83610dd891906124cc565b92508080610de590612611565b915050610dab565b50620f42408583610dfe919061243e565b610e08919061240d565b9250505092915050565b60075481565b60008181548110610e2857600080fd5b906000526020600020016000915090505481565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9557600080fd5b610e9d611509565b508290508260086000828254610eb391906123b7565b92505081905550610ec48482611b0e565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051610f229190612380565b60405180910390a3610f32611bd3565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000082610fb5919061243e565b7f0000000000000000000000000000000000000000000000000000000000000000610fe091906123b7565b9050919050565b60095481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef81000000008461103e919061243e565b611048919061243e565b611052919061240d565b9050919050565b6000603c824261106991906124cc565b611073919061240d565b9050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806110bc85610f3e565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff166110e561199d565b6110ef9190612498565b6fffffffffffffffffffffffffffffffff16905061113d600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610d61565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061116e919061243e565b828461117a919061243e565b611184919061240d565b9350505050919050565b600080600080600061119e61199d565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff16846111ca9190612498565b92506000836fffffffffffffffffffffffffffffffff1614156111f4576000945050505050611339565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16915061124382846fffffffffffffffffffffffffffffffff16610d61565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516113289190612365565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461139957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600061151f611cbb565b9750600060010288141561153e57600098505050505050505050611682565b611547886118d8565b955060018661155691906123b7565b905061156186610f87565b915061156b61118e565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506115a882611059565b925060008311156115dd576d04ee2d6d415b85acef81000000006115cc86856118ec565b6115d6919061240d565b93506115fa565b6d04ee2d6d415b85acef8100000000856115f7919061240d565b93505b61160960008560085484611deb565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561163d88611e51565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161166d9190612380565b60405180910390a16001985050505050505050505b90565b60068054611692906125df565b80601f01602080910402602001604051908101604052809291908181526020018280546116be906125df565b801561170b5780601f106116e05761010080835404028352916020019161170b565b820191906000526020600020905b8154815290600101906020018083116116ee57829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176f57600080fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b600080600061182b611509565b5061183584610fed565b9150611842338684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516118a19190612380565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000611931919061240d565b905060005b8481101561197857620f4240828461194e919061243e565b611958919061240d565b8361196391906123b7565b9250808061197090612611565b915050611936565b50620f42408583611989919061243e565b611993919061240d565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426119ee91906124cc565b6119f8919061240d565b611a0291906123b7565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8757600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611ada8584611efc565b50611ae58484611b0e565b50611aee61199d565b6fffffffffffffffffffffffffffffffff16905060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611b6b5760009350505050611bcd565b611b7486610f3e565b92508483611b8291906123b7565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008060006001600080549050611bea91906124cc565b81548110611c21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a02811790508060010260006001600080549050611c6e91906124cc565b81548110611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b6000806000806001600080549050611cd391906124cc565b81548110611d0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db19190612173565b6fffffffffffffffffffffffffffffffff169050611dce826118d8565b8111611de257600060010292505050611de8565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080600080611e60856117d0565b9250620f42407f000000000000000000000000000000000000000000000000000000000000000084611e92919061243e565b611e9c919061240d565b9150611ea98260016118ec565b9050611ef0600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef810000000083611eeb919061240d565b611b0e565b50819350505050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611f595760009350505050611ffe565b611f6286610f3e565b925084831015611fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9e9061232a565b60405180910390fd5b8483611fb391906124cc565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008135905061201381612721565b92915050565b60008135905061202881612738565b92915050565b60008135905061203d8161274f565b92915050565b60008151905061205281612766565b92915050565b6000813590506120678161277d565b92915050565b60006020828403121561207f57600080fd5b600061208d84828501612004565b91505092915050565b6000806000606084860312156120ab57600080fd5b60006120b986828701612004565b93505060206120ca86828701612004565b92505060406120db86828701612058565b9150509250925092565b600080604083850312156120f857600080fd5b600061210685828601612004565b925050602061211785828601612058565b9150509250929050565b60006020828403121561213357600080fd5b600061214184828501612019565b91505092915050565b60006020828403121561215c57600080fd5b600061216a8482850161202e565b91505092915050565b60006020828403121561218557600080fd5b600061219384828501612043565b91505092915050565b6000602082840312156121ae57600080fd5b60006121bc84828501612058565b91505092915050565b600080604083850312156121d857600080fd5b60006121e685828601612058565b92505060206121f785828601612058565b9150509250929050565b61220a81612500565b82525050565b61221981612512565b82525050565b6122288161251e565b82525050565b60006122398261239b565b61224381856123a6565b93506122538185602086016125ac565b61225c816126e7565b840191505092915050565b6000612274600d836123a6565b915061227f826126f8565b602082019050919050565b61229381612554565b82525050565b6122a28161259a565b82525050565b6122b181612590565b82525050565b60006020820190506122cc6000830184612201565b92915050565b60006020820190506122e76000830184612210565b92915050565b6000602082019050612302600083018461221f565b92915050565b60006020820190508181036000830152612322818461222e565b905092915050565b6000602082019050818103600083015261234381612267565b9050919050565b600060208201905061235f600083018461228a565b92915050565b600060208201905061237a6000830184612299565b92915050565b600060208201905061239560008301846122a8565b92915050565b600081519050919050565b600082825260208201905092915050565b60006123c282612590565b91506123cd83612590565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124025761240161265a565b5b828201905092915050565b600061241882612590565b915061242383612590565b92508261243357612432612689565b5b828204905092915050565b600061244982612590565b915061245483612590565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561248d5761248c61265a565b5b828202905092915050565b60006124a382612554565b91506124ae83612554565b9250828210156124c1576124c061265a565b5b828203905092915050565b60006124d782612590565b91506124e283612590565b9250828210156124f5576124f461265a565b5b828203905092915050565b600061250b82612570565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006125a582612554565b9050919050565b60005b838110156125ca5780820151818401526020810190506125af565b838111156125d9576000848401525b50505050565b600060028204905060018216806125f757607f821691505b6020821081141561260b5761260a6126b8565b5b50919050565b600061261c82612590565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561264f5761264e61265a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b61272a81612500565b811461273557600080fd5b50565b6127418161251e565b811461274c57600080fd5b50565b61275881612528565b811461276357600080fd5b50565b61276f81612554565b811461277a57600080fd5b50565b61278681612590565b811461279157600080fd5b5056fea264697066735822122077c9b94d40827f45e314b14ad8a496fa67d711f3b3ee392bb74ce7be1225757a64736f6c63430008040033 -\ No newline at end of file +60e06040523480156200001157600080fd5b506040516200318a3803806200318a833981810160405281019062000037919062000468565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600590805190602001906200010a92919062000301565b5084600690805190602001906200012392919062000301565b508360ff166007819055504260808181525050603c8262000145919062000727565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200016b919062000727565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508260c0818152505060006200020a6000620f4240600060016200029b640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002889190620005ea565b600981905550505050505050506200096e565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200030f9062000809565b90600052602060002090601f0160209004810192826200033357600085556200037f565b82601f106200034e57805160ff19168380011785556200037f565b828001600101855582156200037f579182015b828111156200037e57825182559160200191906001019062000361565b5b5090506200038e919062000392565b5090565b5b80821115620003ad57600081600090555060010162000393565b5090565b6000620003c8620003c28462000559565b62000530565b905082815260208101848484011115620003e157600080fd5b620003ee848285620007d3565b509392505050565b600081519050620004078162000920565b92915050565b600082601f8301126200041f57600080fd5b815162000431848260208601620003b1565b91505092915050565b6000815190506200044b816200093a565b92915050565b600081519050620004628162000954565b92915050565b60008060008060008060c087890312156200048257600080fd5b600087015167ffffffffffffffff8111156200049d57600080fd5b620004ab89828a016200040d565b965050602087015167ffffffffffffffff811115620004c957600080fd5b620004d789828a016200040d565b9550506040620004ea89828a0162000451565b9450506060620004fd89828a016200043a565b93505060806200051089828a016200043a565b92505060a06200052389828a01620003f6565b9150509295509295509295565b60006200053c6200054f565b90506200054a82826200083f565b919050565b6000604051905090565b600067ffffffffffffffff821115620005775762000576620008d3565b5b620005828262000902565b9050602081019050919050565b6000808291508390505b6001851115620005e157808604811115620005b957620005b862000875565b5b6001851615620005c95780820291505b8081029050620005d98562000913565b945062000599565b94509492505050565b6000620005f782620007bc565b91506200060483620007bc565b9250620006337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200063b565b905092915050565b6000826200064d576001905062000720565b816200065d576000905062000720565b81600181146200067657600281146200068157620006b7565b600191505062000720565b60ff84111562000696576200069562000875565b5b8360020a915084821115620006b057620006af62000875565b5b5062000720565b5060208310610133831016604e8410600b8410161715620006f15782820a905083811115620006eb57620006ea62000875565b5b62000720565b6200070084848460016200058f565b925090508184048111156200071a576200071962000875565b5b81810290505b9392505050565b60006200073482620007bc565b91506200074183620007bc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200077d576200077c62000875565b5b828202905092915050565b600062000795826200079c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620007f3578082015181840152602081019050620007d6565b8381111562000803576000848401525b50505050565b600060028204905060018216806200082257607f821691505b60208210811415620008395762000838620008a4565b5b50919050565b6200084a8262000902565b810181811067ffffffffffffffff821117156200086c576200086b620008d3565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200092b8162000788565b81146200093757600080fd5b50565b6200094581620007bc565b81146200095157600080fd5b50565b6200095f81620007c6565b81146200096b57600080fd5b50565b60805160a05160c0516127bb620009cf60003960008181610b2c01528181610d7d015281816119080152611e67015260008181610f8b015281816118b601526119a3015260008181610fb7015281816119c40152611a0901526127bb6000f3fe608060405234801561001057600080fd5b506004361061022e576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e116101425780639da7d8ba116100ca578063e3ab207a11610099578063e3ab207a146106d7578063e54d63f714610707578063e809529514610737578063eda4e6d614610755578063f2fde38b146107735761022e565b80639da7d8ba1461063b578063a2119e2f1461066b578063a9059cbb14610689578063b470aade146106b95761022e565b806379ba50971161011157806379ba5097146105935780638da5cb5b146105b15780638f1df6bc146105cf57806395d89b41146105ed578063983b2d561461060b5761022e565b80636a2d094e146104e55780636ffa8a051461051557806370a0823114610545578063731f237c146105755761022e565b80633092afd5116101c5578063449a52f811610194578063449a52f81461040757806347a50517146104375780634abfbba214610467578063573cc507146104975780636787a9be146104b55761022e565b80633092afd5146103595780633133348714610389578063313ce567146103b957806340452d91146103d75761022e565b806318160ddd1161020157806318160ddd146102cf5780631989c6a8146102ed578063229ba1971461030b57806323b872dd146103295761022e565b806301ffc9a71461023357806306fdde0314610263578063095ea7b31461028157806309f28f3c146102b1575b600080fd5b61024d6004803603810190610248919061213b565b6107a3565b60405161025a91906122c3565b60405180910390f35b61026b61094e565b60405161027891906122f9565b60405180910390f35b61029b600480360381019061029691906120d6565b6109dc565b6040516102a891906122c3565b60405180910390f35b6102b9610af6565b6040516102c6919061233b565b60405180910390f35b6102d7610b18565b6040516102e49190612371565b60405180910390f35b6102f5610b1e565b6040516103029190612371565b60405180910390f35b610313610b2a565b6040516103209190612371565b60405180910390f35b610343600480360381019061033e9190612087565b610b4e565b60405161035091906122c3565b60405180910390f35b610373600480360381019061036e919061205e565b610c6e565b60405161038091906122c3565b60405180910390f35b6103a3600480360381019061039e91906121b6565b610d61565b6040516103b09190612371565b60405180910390f35b6103c1610e12565b6040516103ce9190612371565b60405180910390f35b6103f160048036038101906103ec919061218d565b610e18565b6040516103fe91906122de565b60405180910390f35b610421600480360381019061041c91906120d6565b610e3c565b60405161042e91906122c3565b60405180910390f35b610451600480360381019061044c919061205e565b610f3e565b60405161045e9190612371565b60405180910390f35b610481600480360381019061047c919061218d565b610f87565b60405161048e9190612371565b60405180910390f35b61049f610fe7565b6040516104ac9190612371565b60405180910390f35b6104cf60048036038101906104ca919061218d565b610fed565b6040516104dc9190612371565b60405180910390f35b6104ff60048036038101906104fa919061218d565b611059565b60405161050c9190612371565b60405180910390f35b61052f600480360381019061052a9190612112565b61107a565b60405161053c9190612371565b60405180910390f35b61055f600480360381019061055a919061205e565b6110ad565b60405161056c9190612371565b60405180910390f35b61057d61118e565b60405161058a91906122c3565b60405180910390f35b61059b61133c565b6040516105a891906122c3565b60405180910390f35b6105b96114e3565b6040516105c691906122a8565b60405180910390f35b6105d7611509565b6040516105e491906122c3565b60405180910390f35b6105f5611685565b60405161060291906122f9565b60405180910390f35b6106256004803603810190610620919061205e565b611713565b60405161063291906122c3565b60405180910390f35b61065560048036038101906106509190612112565b6117d0565b6040516106629190612371565b60405180910390f35b6106736117fc565b604051610680919061233b565b60405180910390f35b6106a3600480360381019061069e91906120d6565b61181e565b6040516106b091906122c3565b60405180910390f35b6106c16118b4565b6040516106ce9190612371565b60405180910390f35b6106f160048036038101906106ec9190612112565b6118d8565b6040516106fe9190612371565b60405180910390f35b610721600480360381019061071c91906121b6565b6118ec565b60405161072e9190612371565b60405180910390f35b61073f61199d565b60405161074c919061233b565b60405180910390f35b61075d611a07565b60405161076a9190612371565b60405180910390f35b61078d6004803603810190610788919061205e565b611a2b565b60405161079a91906122c3565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107f85760019050610949565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561084b5760019050610949565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561089e5760019050610949565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108f15760019050610949565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109445760019050610949565b600090505b919050565b6005805461095b906125d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610987906125d0565b80156109d45780601f106109a9576101008083540402835291602001916109d4565b820191906000526020600020905b8154815290600101906020018083116109b757829003601f168201915b505050505081565b6000806109e7611509565b506109f183610fed565b905080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7f91906123a8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610ae39190612371565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610b5b611509565b50610b6584610fed565b915081600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bf057600080fd5b610bfb868684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c5a9190612371565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cf757503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d0057600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610da691906123fe565b905060005b84811015610ded57620f42408284610dc3919061242f565b610dcd91906123fe565b83610dd891906124bd565b92508080610de590612602565b915050610dab565b50620f42408583610dfe919061242f565b610e0891906123fe565b9250505092915050565b60075481565b60008181548110610e2857600080fd5b906000526020600020016000915090505481565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9557600080fd5b610e9d611509565b508290508260086000828254610eb391906123a8565b92505081905550610ec48482611b0e565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051610f229190612371565b60405180910390a3610f32611bd3565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000082610fb5919061242f565b7f0000000000000000000000000000000000000000000000000000000000000000610fe091906123a8565b9050919050565b60095481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef81000000008461103e919061242f565b611048919061242f565b61105291906123fe565b9050919050565b6000603c824261106991906124bd565b61107391906123fe565b9050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806110bc85610f3e565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff166110e561199d565b6110ef9190612489565b6fffffffffffffffffffffffffffffffff16905061113d600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610d61565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061116e919061242f565b828461117a919061242f565b61118491906123fe565b9350505050919050565b600080600080600061119e61199d565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff16846111ca9190612489565b92506000836fffffffffffffffffffffffffffffffff1614156111f4576000945050505050611339565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16915061124382846fffffffffffffffffffffffffffffffff16610d61565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516113289190612356565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461139957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600061151f611cbb565b9750600060010288141561153e57600098505050505050505050611682565b611547886118d8565b955060018661155691906123a8565b905061156186610f87565b915061156b61118e565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506115a882611059565b925060008311156115dd576d04ee2d6d415b85acef81000000006115cc86856118ec565b6115d691906123fe565b93506115fa565b6d04ee2d6d415b85acef8100000000856115f791906123fe565b93505b61160960008560085484611deb565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561163d88611e51565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161166d9190612371565b60405180910390a16001985050505050505050505b90565b60068054611692906125d0565b80601f01602080910402602001604051908101604052809291908181526020018280546116be906125d0565b801561170b5780601f106116e05761010080835404028352916020019161170b565b820191906000526020600020905b8154815290600101906020018083116116ee57829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176f57600080fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b600080600061182b611509565b5061183584610fed565b9150611842338684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516118a19190612371565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f000000000000000000000000000000000000000000000000000000000000000061193191906123fe565b905060005b8481101561197857620f4240828461194e919061242f565b61195891906123fe565b8361196391906123a8565b9250808061197090612602565b915050611936565b50620f42408583611989919061242f565b61199391906123fe565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426119ee91906124bd565b6119f891906123fe565b611a0291906123a8565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8757600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611ada8584611eed565b50611ae58484611b0e565b50611aee61199d565b6fffffffffffffffffffffffffffffffff16905060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611b6b5760009350505050611bcd565b611b7486610f3e565b92508483611b8291906123a8565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008060006001600080549050611bea91906124bd565b81548110611c21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a02811790508060010260006001600080549050611c6e91906124bd565b81548110611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b6000806000806001600080549050611cd391906124bd565b81548110611d0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db19190612164565b6fffffffffffffffffffffffffffffffff169050611dce826118d8565b8111611de257600060010292505050611de8565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b6000806000611e5f846117d0565b9150620f42407f000000000000000000000000000000000000000000000000000000000000000083611e91919061242f565b611e9b91906123fe565b9050611ee2600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef810000000083611edd91906123fe565b611b0e565b508092505050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611f4a5760009350505050611fef565b611f5386610f3e565b925084831015611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f9061231b565b60405180910390fd5b8483611fa491906124bd565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008135905061200481612712565b92915050565b60008135905061201981612729565b92915050565b60008135905061202e81612740565b92915050565b60008151905061204381612757565b92915050565b6000813590506120588161276e565b92915050565b60006020828403121561207057600080fd5b600061207e84828501611ff5565b91505092915050565b60008060006060848603121561209c57600080fd5b60006120aa86828701611ff5565b93505060206120bb86828701611ff5565b92505060406120cc86828701612049565b9150509250925092565b600080604083850312156120e957600080fd5b60006120f785828601611ff5565b925050602061210885828601612049565b9150509250929050565b60006020828403121561212457600080fd5b60006121328482850161200a565b91505092915050565b60006020828403121561214d57600080fd5b600061215b8482850161201f565b91505092915050565b60006020828403121561217657600080fd5b600061218484828501612034565b91505092915050565b60006020828403121561219f57600080fd5b60006121ad84828501612049565b91505092915050565b600080604083850312156121c957600080fd5b60006121d785828601612049565b92505060206121e885828601612049565b9150509250929050565b6121fb816124f1565b82525050565b61220a81612503565b82525050565b6122198161250f565b82525050565b600061222a8261238c565b6122348185612397565b935061224481856020860161259d565b61224d816126d8565b840191505092915050565b6000612265600d83612397565b9150612270826126e9565b602082019050919050565b61228481612545565b82525050565b6122938161258b565b82525050565b6122a281612581565b82525050565b60006020820190506122bd60008301846121f2565b92915050565b60006020820190506122d86000830184612201565b92915050565b60006020820190506122f36000830184612210565b92915050565b60006020820190508181036000830152612313818461221f565b905092915050565b6000602082019050818103600083015261233481612258565b9050919050565b6000602082019050612350600083018461227b565b92915050565b600060208201905061236b600083018461228a565b92915050565b60006020820190506123866000830184612299565b92915050565b600081519050919050565b600082825260208201905092915050565b60006123b382612581565b91506123be83612581565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156123f3576123f261264b565b5b828201905092915050565b600061240982612581565b915061241483612581565b9250826124245761242361267a565b5b828204905092915050565b600061243a82612581565b915061244583612581565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561247e5761247d61264b565b5b828202905092915050565b600061249482612545565b915061249f83612545565b9250828210156124b2576124b161264b565b5b828203905092915050565b60006124c882612581565b91506124d383612581565b9250828210156124e6576124e561264b565b5b828203905092915050565b60006124fc82612561565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061259682612545565b9050919050565b60005b838110156125bb5780820151818401526020810190506125a0565b838111156125ca576000848401525b50505050565b600060028204905060018216806125e857607f821691505b602082108114156125fc576125fb6126a9565b5b50919050565b600061260d82612581565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126405761263f61264b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b61271b816124f1565b811461272657600080fd5b50565b6127328161250f565b811461273d57600080fd5b50565b61274981612519565b811461275457600080fd5b50565b61276081612545565b811461276b57600080fd5b50565b61277781612581565b811461278257600080fd5b5056fea264697066735822122069b6cd97967565dfb2e175d110410f789ea9f11b3ecaaf8389dfe61c7b06ff6264736f6c63430008040033 +\ No newline at end of file diff --git a/python/erc20_demurrage_token/sim/sim.py b/python/erc20_demurrage_token/sim/sim.py @@ -166,8 +166,6 @@ class DemurrageTokenSimulation: return v * (10 ** self.decimals) - - def mint(self, recipient, value): self.__check_limit() nonce_oracle = RPCNonceOracle(self.accounts[0], conn=self.rpc) diff --git a/python/test.sh b/python/test.sh @@ -18,6 +18,7 @@ done modes=(SingleCap SingleNocap) for m in ${modes[@]}; do ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_single.py + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_redistribution_unit.py done modes=(MultiCap MultiNocap) diff --git a/python/tests/test_redistribution_unit.py b/python/tests/test_redistribution_unit.py @@ -127,11 +127,13 @@ class TestRedistribution(TestDemurrageUnit): supply = c.parse_total_supply(r) expected_balance = int(supply * (self.tax_level / 1000000)) + expected_balance_tolerance = 1 o = c.balance_of(self.address, self.sink_address, sender_address=self.accounts[0]) r = self.rpc.do(o) balance = c.parse_balance_of(r) - self.assertEqual(balance, expected_balance) + self.assertGreaterEqual(balance, expected_balance - expected_balance_tolerance) + self.assertLessEqual(balance, expected_balance) if __name__ == '__main__': diff --git a/solidity/DemurrageTokenSingleCap.sol b/solidity/DemurrageTokenSingleCap.sol @@ -267,18 +267,11 @@ contract DemurrageTokenSingleCap { // Returns the amount sent to the sink address function applyDefaultRedistribution(bytes32 _redistribution) private returns (uint256) { uint256 redistributionSupply; - uint256 redistributionPeriod; uint256 unit; - uint256 truncatedResult; redistributionSupply = toRedistributionSupply(_redistribution); unit = (redistributionSupply * taxLevel) / 1000000; - truncatedResult = (unit * 1000000) / taxLevel; - - if (truncatedResult < redistributionSupply) { - redistributionPeriod = toRedistributionPeriod(_redistribution); // since we reuse period here, can possibly be optimized by passing period instead - } increaseBaseBalance(sinkAddress, unit / ppmDivider); return unit; diff --git a/solidity/DemurrageTokenSingleNocap.sol b/solidity/DemurrageTokenSingleNocap.sol @@ -262,18 +262,11 @@ contract DemurrageTokenSingleNocap { // Returns the amount sent to the sink address function applyDefaultRedistribution(bytes32 _redistribution) private returns (uint256) { uint256 redistributionSupply; - uint256 redistributionPeriod; uint256 unit; - uint256 truncatedResult; redistributionSupply = toRedistributionSupply(_redistribution); unit = (redistributionSupply * taxLevel) / 1000000; - truncatedResult = (unit * 1000000) / taxLevel; - - if (truncatedResult < redistributionSupply) { - redistributionPeriod = toRedistributionPeriod(_redistribution); // since we reuse period here, can possibly be optimized by passing period instead - } increaseBaseBalance(sinkAddress, unit / ppmDivider); return unit;