From fb8d1e548c89495ed1229078c94642ea135ed2e8 Mon Sep 17 00:00:00 2001 From: nolash Date: Mon, 7 Jun 2021 09:28:08 +0200 Subject: [PATCH] Add sink address in token sum to total supply --- .../data/DemurrageTokenSingleNocap.bin | 2 +- python/erc20_demurrage_token/sim/sim.py | 10 ++++++++++ python/examples/sim_noredistribute.py | 11 +++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin index af8d604..73fa169 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin @@ -1 +1 @@ -60e06040523480156200001157600080fd5b50604051620031e6380380620031e6833981810160405281019062000037919062000468565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600590805190602001906200010a92919062000301565b5084600690805190602001906200012392919062000301565b508360ff166007819055504260808181525050603c8262000145919062000727565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200016b919062000727565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508260c0818152505060006200020a6000620f4240600060016200029b640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002889190620005ea565b600981905550505050505050506200096e565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200030f9062000809565b90600052602060002090601f0160209004810192826200033357600085556200037f565b82601f106200034e57805160ff19168380011785556200037f565b828001600101855582156200037f579182015b828111156200037e57825182559160200191906001019062000361565b5b5090506200038e919062000392565b5090565b5b80821115620003ad57600081600090555060010162000393565b5090565b6000620003c8620003c28462000559565b62000530565b905082815260208101848484011115620003e157600080fd5b620003ee848285620007d3565b509392505050565b600081519050620004078162000920565b92915050565b600082601f8301126200041f57600080fd5b815162000431848260208601620003b1565b91505092915050565b6000815190506200044b816200093a565b92915050565b600081519050620004628162000954565b92915050565b60008060008060008060c087890312156200048257600080fd5b600087015167ffffffffffffffff8111156200049d57600080fd5b620004ab89828a016200040d565b965050602087015167ffffffffffffffff811115620004c957600080fd5b620004d789828a016200040d565b9550506040620004ea89828a0162000451565b9450506060620004fd89828a016200043a565b93505060806200051089828a016200043a565b92505060a06200052389828a01620003f6565b9150509295509295509295565b60006200053c6200054f565b90506200054a82826200083f565b919050565b6000604051905090565b600067ffffffffffffffff821115620005775762000576620008d3565b5b620005828262000902565b9050602081019050919050565b6000808291508390505b6001851115620005e157808604811115620005b957620005b862000875565b5b6001851615620005c95780820291505b8081029050620005d98562000913565b945062000599565b94509492505050565b6000620005f782620007bc565b91506200060483620007bc565b9250620006337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200063b565b905092915050565b6000826200064d576001905062000720565b816200065d576000905062000720565b81600181146200067657600281146200068157620006b7565b600191505062000720565b60ff84111562000696576200069562000875565b5b8360020a915084821115620006b057620006af62000875565b5b5062000720565b5060208310610133831016604e8410600b8410161715620006f15782820a905083811115620006eb57620006ea62000875565b5b62000720565b6200070084848460016200058f565b925090508184048111156200071a576200071962000875565b5b81810290505b9392505050565b60006200073482620007bc565b91506200074183620007bc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200077d576200077c62000875565b5b828202905092915050565b600062000795826200079c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620007f3578082015181840152602081019050620007d6565b8381111562000803576000848401525b50505050565b600060028204905060018216806200082257607f821691505b60208210811415620008395762000838620008a4565b5b50919050565b6200084a8262000902565b810181811067ffffffffffffffff821117156200086c576200086b620008d3565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200092b8162000788565b81146200093757600080fd5b50565b6200094581620007bc565b81146200095157600080fd5b50565b6200095f81620007c6565b81146200096b57600080fd5b50565b60805160a05160c051612810620009d660003960008181610b2c01528181610d7d0152818161190801528181611e6a0152611ea2015260008181610f8b015281816118b601526119a3015260008181610fb7015281816119c40152611a0901526128106000f3fe608060405234801561001057600080fd5b506004361061022e576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e116101425780639da7d8ba116100ca578063e3ab207a11610099578063e3ab207a146106d7578063e54d63f714610707578063e809529514610737578063eda4e6d614610755578063f2fde38b146107735761022e565b80639da7d8ba1461063b578063a2119e2f1461066b578063a9059cbb14610689578063b470aade146106b95761022e565b806379ba50971161011157806379ba5097146105935780638da5cb5b146105b15780638f1df6bc146105cf57806395d89b41146105ed578063983b2d561461060b5761022e565b80636a2d094e146104e55780636ffa8a051461051557806370a0823114610545578063731f237c146105755761022e565b80633092afd5116101c5578063449a52f811610194578063449a52f81461040757806347a50517146104375780634abfbba214610467578063573cc507146104975780636787a9be146104b55761022e565b80633092afd5146103595780633133348714610389578063313ce567146103b957806340452d91146103d75761022e565b806318160ddd1161020157806318160ddd146102cf5780631989c6a8146102ed578063229ba1971461030b57806323b872dd146103295761022e565b806301ffc9a71461023357806306fdde0314610263578063095ea7b31461028157806309f28f3c146102b1575b600080fd5b61024d60048036038101906102489190612190565b6107a3565b60405161025a9190612318565b60405180910390f35b61026b61094e565b604051610278919061234e565b60405180910390f35b61029b6004803603810190610296919061212b565b6109dc565b6040516102a89190612318565b60405180910390f35b6102b9610af6565b6040516102c69190612390565b60405180910390f35b6102d7610b18565b6040516102e491906123c6565b60405180910390f35b6102f5610b1e565b60405161030291906123c6565b60405180910390f35b610313610b2a565b60405161032091906123c6565b60405180910390f35b610343600480360381019061033e91906120dc565b610b4e565b6040516103509190612318565b60405180910390f35b610373600480360381019061036e91906120b3565b610c6e565b6040516103809190612318565b60405180910390f35b6103a3600480360381019061039e919061220b565b610d61565b6040516103b091906123c6565b60405180910390f35b6103c1610e12565b6040516103ce91906123c6565b60405180910390f35b6103f160048036038101906103ec91906121e2565b610e18565b6040516103fe9190612333565b60405180910390f35b610421600480360381019061041c919061212b565b610e3c565b60405161042e9190612318565b60405180910390f35b610451600480360381019061044c91906120b3565b610f3e565b60405161045e91906123c6565b60405180910390f35b610481600480360381019061047c91906121e2565b610f87565b60405161048e91906123c6565b60405180910390f35b61049f610fe7565b6040516104ac91906123c6565b60405180910390f35b6104cf60048036038101906104ca91906121e2565b610fed565b6040516104dc91906123c6565b60405180910390f35b6104ff60048036038101906104fa91906121e2565b611059565b60405161050c91906123c6565b60405180910390f35b61052f600480360381019061052a9190612167565b61107a565b60405161053c91906123c6565b60405180910390f35b61055f600480360381019061055a91906120b3565b6110ad565b60405161056c91906123c6565b60405180910390f35b61057d61118e565b60405161058a9190612318565b60405180910390f35b61059b61133c565b6040516105a89190612318565b60405180910390f35b6105b96114e3565b6040516105c691906122fd565b60405180910390f35b6105d7611509565b6040516105e49190612318565b60405180910390f35b6105f5611685565b604051610602919061234e565b60405180910390f35b610625600480360381019061062091906120b3565b611713565b6040516106329190612318565b60405180910390f35b61065560048036038101906106509190612167565b6117d0565b60405161066291906123c6565b60405180910390f35b6106736117fc565b6040516106809190612390565b60405180910390f35b6106a3600480360381019061069e919061212b565b61181e565b6040516106b09190612318565b60405180910390f35b6106c16118b4565b6040516106ce91906123c6565b60405180910390f35b6106f160048036038101906106ec9190612167565b6118d8565b6040516106fe91906123c6565b60405180910390f35b610721600480360381019061071c919061220b565b6118ec565b60405161072e91906123c6565b60405180910390f35b61073f61199d565b60405161074c9190612390565b60405180910390f35b61075d611a07565b60405161076a91906123c6565b60405180910390f35b61078d600480360381019061078891906120b3565b611a2b565b60405161079a9190612318565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107f85760019050610949565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561084b5760019050610949565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561089e5760019050610949565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108f15760019050610949565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109445760019050610949565b600090505b919050565b6005805461095b90612625565b80601f016020809104026020016040519081016040528092919081815260200182805461098790612625565b80156109d45780601f106109a9576101008083540402835291602001916109d4565b820191906000526020600020905b8154815290600101906020018083116109b757829003601f168201915b505050505081565b6000806109e7611509565b506109f183610fed565b905080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7f91906123fd565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610ae391906123c6565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610b5b611509565b50610b6584610fed565b915081600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bf057600080fd5b610bfb868684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c5a91906123c6565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cf757503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d0057600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610da69190612453565b905060005b84811015610ded57620f42408284610dc39190612484565b610dcd9190612453565b83610dd89190612512565b92508080610de590612657565b915050610dab565b50620f42408583610dfe9190612484565b610e089190612453565b9250505092915050565b60075481565b60008181548110610e2857600080fd5b906000526020600020016000915090505481565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9557600080fd5b610e9d611509565b508290508260086000828254610eb391906123fd565b92505081905550610ec48482611b0e565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051610f2291906123c6565b60405180910390a3610f32611bd3565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000082610fb59190612484565b7f0000000000000000000000000000000000000000000000000000000000000000610fe091906123fd565b9050919050565b60095481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef81000000008461103e9190612484565b6110489190612484565b6110529190612453565b9050919050565b6000603c82426110699190612512565b6110739190612453565b9050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806110bc85610f3e565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff166110e561199d565b6110ef91906124de565b6fffffffffffffffffffffffffffffffff16905061113d600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610d61565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061116e9190612484565b828461117a9190612484565b6111849190612453565b9350505050919050565b600080600080600061119e61199d565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff16846111ca91906124de565b92506000836fffffffffffffffffffffffffffffffff1614156111f4576000945050505050611339565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16915061124382846fffffffffffffffffffffffffffffffff16610d61565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff1660405161132891906123ab565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461139957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600061151f611cbb565b9750600060010288141561153e57600098505050505050505050611682565b611547886118d8565b955060018661155691906123fd565b905061156186610f87565b915061156b61118e565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506115a882611059565b925060008311156115dd576d04ee2d6d415b85acef81000000006115cc86856118ec565b6115d69190612453565b93506115fa565b6d04ee2d6d415b85acef8100000000856115f79190612453565b93505b61160960008560085484611deb565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561163d88611e51565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161166d91906123c6565b60405180910390a16001985050505050505050505b90565b6006805461169290612625565b80601f01602080910402602001604051908101604052809291908181526020018280546116be90612625565b801561170b5780601f106116e05761010080835404028352916020019161170b565b820191906000526020600020905b8154815290600101906020018083116116ee57829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176f57600080fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b600080600061182b611509565b5061183584610fed565b9150611842338684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516118a191906123c6565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f00000000000000000000000000000000000000000000000000000000000000006119319190612453565b905060005b8481101561197857620f4240828461194e9190612484565b6119589190612453565b8361196391906123fd565b9250808061197090612657565b915050611936565b50620f424085836119899190612484565b6119939190612453565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426119ee9190612512565b6119f89190612453565b611a0291906123fd565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8757600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611ada8584611f42565b50611ae58484611b0e565b50611aee61199d565b6fffffffffffffffffffffffffffffffff16905060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611b6b5760009350505050611bcd565b611b7486610f3e565b92508483611b8291906123fd565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008060006001600080549050611bea9190612512565b81548110611c21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a02811790508060010260006001600080549050611c6e9190612512565b81548110611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b6000806000806001600080549050611cd39190612512565b81548110611d0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db191906121b9565b6fffffffffffffffffffffffffffffffff169050611dce826118d8565b8111611de257600060010292505050611de8565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b6000806000806000611e62866117d0565b9350620f42407f000000000000000000000000000000000000000000000000000000000000000085611e949190612484565b611e9e9190612453565b91507f0000000000000000000000000000000000000000000000000000000000000000620f424083611ed09190612484565b611eda9190612453565b905083811015611ef057611eed866118d8565b92505b611f35600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef810000000084611f309190612453565b611b0e565b5081945050505050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611f9f5760009350505050612044565b611fa886610f3e565b925084831015611fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe490612370565b60405180910390fd5b8483611ff99190612512565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008135905061205981612767565b92915050565b60008135905061206e8161277e565b92915050565b60008135905061208381612795565b92915050565b600081519050612098816127ac565b92915050565b6000813590506120ad816127c3565b92915050565b6000602082840312156120c557600080fd5b60006120d38482850161204a565b91505092915050565b6000806000606084860312156120f157600080fd5b60006120ff8682870161204a565b93505060206121108682870161204a565b92505060406121218682870161209e565b9150509250925092565b6000806040838503121561213e57600080fd5b600061214c8582860161204a565b925050602061215d8582860161209e565b9150509250929050565b60006020828403121561217957600080fd5b60006121878482850161205f565b91505092915050565b6000602082840312156121a257600080fd5b60006121b084828501612074565b91505092915050565b6000602082840312156121cb57600080fd5b60006121d984828501612089565b91505092915050565b6000602082840312156121f457600080fd5b60006122028482850161209e565b91505092915050565b6000806040838503121561221e57600080fd5b600061222c8582860161209e565b925050602061223d8582860161209e565b9150509250929050565b61225081612546565b82525050565b61225f81612558565b82525050565b61226e81612564565b82525050565b600061227f826123e1565b61228981856123ec565b93506122998185602086016125f2565b6122a28161272d565b840191505092915050565b60006122ba600d836123ec565b91506122c58261273e565b602082019050919050565b6122d98161259a565b82525050565b6122e8816125e0565b82525050565b6122f7816125d6565b82525050565b60006020820190506123126000830184612247565b92915050565b600060208201905061232d6000830184612256565b92915050565b60006020820190506123486000830184612265565b92915050565b600060208201905081810360008301526123688184612274565b905092915050565b60006020820190508181036000830152612389816122ad565b9050919050565b60006020820190506123a560008301846122d0565b92915050565b60006020820190506123c060008301846122df565b92915050565b60006020820190506123db60008301846122ee565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612408826125d6565b9150612413836125d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612448576124476126a0565b5b828201905092915050565b600061245e826125d6565b9150612469836125d6565b925082612479576124786126cf565b5b828204905092915050565b600061248f826125d6565b915061249a836125d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124d3576124d26126a0565b5b828202905092915050565b60006124e98261259a565b91506124f48361259a565b925082821015612507576125066126a0565b5b828203905092915050565b600061251d826125d6565b9150612528836125d6565b92508282101561253b5761253a6126a0565b5b828203905092915050565b6000612551826125b6565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006125eb8261259a565b9050919050565b60005b838110156126105780820151818401526020810190506125f5565b8381111561261f576000848401525b50505050565b6000600282049050600182168061263d57607f821691505b60208210811415612651576126506126fe565b5b50919050565b6000612662826125d6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612695576126946126a0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b61277081612546565b811461277b57600080fd5b50565b61278781612564565b811461279257600080fd5b50565b61279e8161256e565b81146127a957600080fd5b50565b6127b58161259a565b81146127c057600080fd5b50565b6127cc816125d6565b81146127d757600080fd5b5056fea264697066735822122003fb019d7811739c279d137bec1f0186f205087b4b8c8eb9b409d82a0bb92cef64736f6c63430008040033 \ No newline at end of file +60e06040523480156200001157600080fd5b506040516200319938038062003199833981810160405281019062000037919062000468565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600590805190602001906200010a92919062000301565b5084600690805190602001906200012392919062000301565b508360ff166007819055504260808181525050603c8262000145919062000727565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200016b919062000727565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508260c0818152505060006200020a6000620f4240600060016200029b640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002889190620005ea565b600981905550505050505050506200096e565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200030f9062000809565b90600052602060002090601f0160209004810192826200033357600085556200037f565b82601f106200034e57805160ff19168380011785556200037f565b828001600101855582156200037f579182015b828111156200037e57825182559160200191906001019062000361565b5b5090506200038e919062000392565b5090565b5b80821115620003ad57600081600090555060010162000393565b5090565b6000620003c8620003c28462000559565b62000530565b905082815260208101848484011115620003e157600080fd5b620003ee848285620007d3565b509392505050565b600081519050620004078162000920565b92915050565b600082601f8301126200041f57600080fd5b815162000431848260208601620003b1565b91505092915050565b6000815190506200044b816200093a565b92915050565b600081519050620004628162000954565b92915050565b60008060008060008060c087890312156200048257600080fd5b600087015167ffffffffffffffff8111156200049d57600080fd5b620004ab89828a016200040d565b965050602087015167ffffffffffffffff811115620004c957600080fd5b620004d789828a016200040d565b9550506040620004ea89828a0162000451565b9450506060620004fd89828a016200043a565b93505060806200051089828a016200043a565b92505060a06200052389828a01620003f6565b9150509295509295509295565b60006200053c6200054f565b90506200054a82826200083f565b919050565b6000604051905090565b600067ffffffffffffffff821115620005775762000576620008d3565b5b620005828262000902565b9050602081019050919050565b6000808291508390505b6001851115620005e157808604811115620005b957620005b862000875565b5b6001851615620005c95780820291505b8081029050620005d98562000913565b945062000599565b94509492505050565b6000620005f782620007bc565b91506200060483620007bc565b9250620006337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200063b565b905092915050565b6000826200064d576001905062000720565b816200065d576000905062000720565b81600181146200067657600281146200068157620006b7565b600191505062000720565b60ff84111562000696576200069562000875565b5b8360020a915084821115620006b057620006af62000875565b5b5062000720565b5060208310610133831016604e8410600b8410161715620006f15782820a905083811115620006eb57620006ea62000875565b5b62000720565b6200070084848460016200058f565b925090508184048111156200071a576200071962000875565b5b81810290505b9392505050565b60006200073482620007bc565b91506200074183620007bc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200077d576200077c62000875565b5b828202905092915050565b600062000795826200079c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620007f3578082015181840152602081019050620007d6565b8381111562000803576000848401525b50505050565b600060028204905060018216806200082257607f821691505b60208210811415620008395762000838620008a4565b5b50919050565b6200084a8262000902565b810181811067ffffffffffffffff821117156200086c576200086b620008d3565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200092b8162000788565b81146200093757600080fd5b50565b6200094581620007bc565b81146200095157600080fd5b50565b6200095f81620007c6565b81146200096b57600080fd5b50565b60805160a05160c0516127ca620009cf60003960008181610b2c01528181610d7d015281816119080152611e68015260008181610f8b015281816118b601526119a3015260008181610fb7015281816119c40152611a0901526127ca6000f3fe608060405234801561001057600080fd5b506004361061022e576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e116101425780639da7d8ba116100ca578063e3ab207a11610099578063e3ab207a146106d7578063e54d63f714610707578063e809529514610737578063eda4e6d614610755578063f2fde38b146107735761022e565b80639da7d8ba1461063b578063a2119e2f1461066b578063a9059cbb14610689578063b470aade146106b95761022e565b806379ba50971161011157806379ba5097146105935780638da5cb5b146105b15780638f1df6bc146105cf57806395d89b41146105ed578063983b2d561461060b5761022e565b80636a2d094e146104e55780636ffa8a051461051557806370a0823114610545578063731f237c146105755761022e565b80633092afd5116101c5578063449a52f811610194578063449a52f81461040757806347a50517146104375780634abfbba214610467578063573cc507146104975780636787a9be146104b55761022e565b80633092afd5146103595780633133348714610389578063313ce567146103b957806340452d91146103d75761022e565b806318160ddd1161020157806318160ddd146102cf5780631989c6a8146102ed578063229ba1971461030b57806323b872dd146103295761022e565b806301ffc9a71461023357806306fdde0314610263578063095ea7b31461028157806309f28f3c146102b1575b600080fd5b61024d6004803603810190610248919061214a565b6107a3565b60405161025a91906122d2565b60405180910390f35b61026b61094e565b6040516102789190612308565b60405180910390f35b61029b600480360381019061029691906120e5565b6109dc565b6040516102a891906122d2565b60405180910390f35b6102b9610af6565b6040516102c6919061234a565b60405180910390f35b6102d7610b18565b6040516102e49190612380565b60405180910390f35b6102f5610b1e565b6040516103029190612380565b60405180910390f35b610313610b2a565b6040516103209190612380565b60405180910390f35b610343600480360381019061033e9190612096565b610b4e565b60405161035091906122d2565b60405180910390f35b610373600480360381019061036e919061206d565b610c6e565b60405161038091906122d2565b60405180910390f35b6103a3600480360381019061039e91906121c5565b610d61565b6040516103b09190612380565b60405180910390f35b6103c1610e12565b6040516103ce9190612380565b60405180910390f35b6103f160048036038101906103ec919061219c565b610e18565b6040516103fe91906122ed565b60405180910390f35b610421600480360381019061041c91906120e5565b610e3c565b60405161042e91906122d2565b60405180910390f35b610451600480360381019061044c919061206d565b610f3e565b60405161045e9190612380565b60405180910390f35b610481600480360381019061047c919061219c565b610f87565b60405161048e9190612380565b60405180910390f35b61049f610fe7565b6040516104ac9190612380565b60405180910390f35b6104cf60048036038101906104ca919061219c565b610fed565b6040516104dc9190612380565b60405180910390f35b6104ff60048036038101906104fa919061219c565b611059565b60405161050c9190612380565b60405180910390f35b61052f600480360381019061052a9190612121565b61107a565b60405161053c9190612380565b60405180910390f35b61055f600480360381019061055a919061206d565b6110ad565b60405161056c9190612380565b60405180910390f35b61057d61118e565b60405161058a91906122d2565b60405180910390f35b61059b61133c565b6040516105a891906122d2565b60405180910390f35b6105b96114e3565b6040516105c691906122b7565b60405180910390f35b6105d7611509565b6040516105e491906122d2565b60405180910390f35b6105f5611685565b6040516106029190612308565b60405180910390f35b6106256004803603810190610620919061206d565b611713565b60405161063291906122d2565b60405180910390f35b61065560048036038101906106509190612121565b6117d0565b6040516106629190612380565b60405180910390f35b6106736117fc565b604051610680919061234a565b60405180910390f35b6106a3600480360381019061069e91906120e5565b61181e565b6040516106b091906122d2565b60405180910390f35b6106c16118b4565b6040516106ce9190612380565b60405180910390f35b6106f160048036038101906106ec9190612121565b6118d8565b6040516106fe9190612380565b60405180910390f35b610721600480360381019061071c91906121c5565b6118ec565b60405161072e9190612380565b60405180910390f35b61073f61199d565b60405161074c919061234a565b60405180910390f35b61075d611a07565b60405161076a9190612380565b60405180910390f35b61078d6004803603810190610788919061206d565b611a2b565b60405161079a91906122d2565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107f85760019050610949565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561084b5760019050610949565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561089e5760019050610949565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108f15760019050610949565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109445760019050610949565b600090505b919050565b6005805461095b906125df565b80601f0160208091040260200160405190810160405280929190818152602001828054610987906125df565b80156109d45780601f106109a9576101008083540402835291602001916109d4565b820191906000526020600020905b8154815290600101906020018083116109b757829003601f168201915b505050505081565b6000806109e7611509565b506109f183610fed565b905080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7f91906123b7565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610ae39190612380565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610b5b611509565b50610b6584610fed565b915081600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bf057600080fd5b610bfb868684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c5a9190612380565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cf757503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d0057600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610da6919061240d565b905060005b84811015610ded57620f42408284610dc3919061243e565b610dcd919061240d565b83610dd891906124cc565b92508080610de590612611565b915050610dab565b50620f42408583610dfe919061243e565b610e08919061240d565b9250505092915050565b60075481565b60008181548110610e2857600080fd5b906000526020600020016000915090505481565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9557600080fd5b610e9d611509565b508290508260086000828254610eb391906123b7565b92505081905550610ec48482611b0e565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051610f229190612380565b60405180910390a3610f32611bd3565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000082610fb5919061243e565b7f0000000000000000000000000000000000000000000000000000000000000000610fe091906123b7565b9050919050565b60095481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef81000000008461103e919061243e565b611048919061243e565b611052919061240d565b9050919050565b6000603c824261106991906124cc565b611073919061240d565b9050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806110bc85610f3e565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff166110e561199d565b6110ef9190612498565b6fffffffffffffffffffffffffffffffff16905061113d600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610d61565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061116e919061243e565b828461117a919061243e565b611184919061240d565b9350505050919050565b600080600080600061119e61199d565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff16846111ca9190612498565b92506000836fffffffffffffffffffffffffffffffff1614156111f4576000945050505050611339565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16915061124382846fffffffffffffffffffffffffffffffff16610d61565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516113289190612365565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461139957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600061151f611cbb565b9750600060010288141561153e57600098505050505050505050611682565b611547886118d8565b955060018661155691906123b7565b905061156186610f87565b915061156b61118e565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506115a882611059565b925060008311156115dd576d04ee2d6d415b85acef81000000006115cc86856118ec565b6115d6919061240d565b93506115fa565b6d04ee2d6d415b85acef8100000000856115f7919061240d565b93505b61160960008560085484611deb565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561163d88611e51565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161166d9190612380565b60405180910390a16001985050505050505050505b90565b60068054611692906125df565b80601f01602080910402602001604051908101604052809291908181526020018280546116be906125df565b801561170b5780601f106116e05761010080835404028352916020019161170b565b820191906000526020600020905b8154815290600101906020018083116116ee57829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176f57600080fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b600080600061182b611509565b5061183584610fed565b9150611842338684611acd565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516118a19190612380565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000611931919061240d565b905060005b8481101561197857620f4240828461194e919061243e565b611958919061240d565b8361196391906123b7565b9250808061197090612611565b915050611936565b50620f42408583611989919061243e565b611993919061240d565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426119ee91906124cc565b6119f8919061240d565b611a0291906123b7565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8757600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611ada8584611efc565b50611ae58484611b0e565b50611aee61199d565b6fffffffffffffffffffffffffffffffff16905060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611b6b5760009350505050611bcd565b611b7486610f3e565b92508483611b8291906123b7565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008060006001600080549050611bea91906124cc565b81548110611c21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a02811790508060010260006001600080549050611c6e91906124cc565b81548110611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b6000806000806001600080549050611cd391906124cc565b81548110611d0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db19190612173565b6fffffffffffffffffffffffffffffffff169050611dce826118d8565b8111611de257600060010292505050611de8565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080600080611e60856117d0565b9250620f42407f000000000000000000000000000000000000000000000000000000000000000084611e92919061243e565b611e9c919061240d565b9150611ea98260016118ec565b9050611ef0600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef810000000083611eeb919061240d565b611b0e565b50819350505050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611f595760009350505050611ffe565b611f6286610f3e565b925084831015611fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9e9061232a565b60405180910390fd5b8483611fb391906124cc565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008135905061201381612721565b92915050565b60008135905061202881612738565b92915050565b60008135905061203d8161274f565b92915050565b60008151905061205281612766565b92915050565b6000813590506120678161277d565b92915050565b60006020828403121561207f57600080fd5b600061208d84828501612004565b91505092915050565b6000806000606084860312156120ab57600080fd5b60006120b986828701612004565b93505060206120ca86828701612004565b92505060406120db86828701612058565b9150509250925092565b600080604083850312156120f857600080fd5b600061210685828601612004565b925050602061211785828601612058565b9150509250929050565b60006020828403121561213357600080fd5b600061214184828501612019565b91505092915050565b60006020828403121561215c57600080fd5b600061216a8482850161202e565b91505092915050565b60006020828403121561218557600080fd5b600061219384828501612043565b91505092915050565b6000602082840312156121ae57600080fd5b60006121bc84828501612058565b91505092915050565b600080604083850312156121d857600080fd5b60006121e685828601612058565b92505060206121f785828601612058565b9150509250929050565b61220a81612500565b82525050565b61221981612512565b82525050565b6122288161251e565b82525050565b60006122398261239b565b61224381856123a6565b93506122538185602086016125ac565b61225c816126e7565b840191505092915050565b6000612274600d836123a6565b915061227f826126f8565b602082019050919050565b61229381612554565b82525050565b6122a28161259a565b82525050565b6122b181612590565b82525050565b60006020820190506122cc6000830184612201565b92915050565b60006020820190506122e76000830184612210565b92915050565b6000602082019050612302600083018461221f565b92915050565b60006020820190508181036000830152612322818461222e565b905092915050565b6000602082019050818103600083015261234381612267565b9050919050565b600060208201905061235f600083018461228a565b92915050565b600060208201905061237a6000830184612299565b92915050565b600060208201905061239560008301846122a8565b92915050565b600081519050919050565b600082825260208201905092915050565b60006123c282612590565b91506123cd83612590565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124025761240161265a565b5b828201905092915050565b600061241882612590565b915061242383612590565b92508261243357612432612689565b5b828204905092915050565b600061244982612590565b915061245483612590565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561248d5761248c61265a565b5b828202905092915050565b60006124a382612554565b91506124ae83612554565b9250828210156124c1576124c061265a565b5b828203905092915050565b60006124d782612590565b91506124e283612590565b9250828210156124f5576124f461265a565b5b828203905092915050565b600061250b82612570565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006125a582612554565b9050919050565b60005b838110156125ca5780820151818401526020810190506125af565b838111156125d9576000848401525b50505050565b600060028204905060018216806125f757607f821691505b6020821081141561260b5761260a6126b8565b5b50919050565b600061261c82612590565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561264f5761264e61265a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b61272a81612500565b811461273557600080fd5b50565b6127418161251e565b811461274c57600080fd5b50565b61275881612528565b811461276357600080fd5b50565b61276f81612554565b811461277a57600080fd5b50565b61278681612590565b811461279157600080fd5b5056fea264697066735822122077c9b94d40827f45e314b14ad8a496fa67d711f3b3ee392bb74ce7be1225757a64736f6c63430008040033 \ No newline at end of file diff --git a/python/erc20_demurrage_token/sim/sim.py b/python/erc20_demurrage_token/sim/sim.py index 103d2f1..1c3b95f 100644 --- a/python/erc20_demurrage_token/sim/sim.py +++ b/python/erc20_demurrage_token/sim/sim.py @@ -148,16 +148,26 @@ class DemurrageTokenSimulation: def get_period(self): return self.period + def get_demurrage(self): o = self.caller_contract.demurrage_amount(self.address, sender_address=self.caller_address) r = self.rpc.do(o) return float(self.caller_contract.parse_demurrage_amount(r) / (10 ** 38)) + def get_supply(self): + o = self.caller_contract.total_supply(self.address, sender_address=self.caller_address) + r = self.rpc.do(o) + supply = self.caller_contract.parse_total_supply(r) + return supply + + def from_units(self, v): 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/examples/sim_noredistribute.py b/python/examples/sim_noredistribute.py index fa9833a..f1393e2 100644 --- a/python/examples/sim_noredistribute.py +++ b/python/examples/sim_noredistribute.py @@ -19,6 +19,7 @@ settings.demurrage_level = int(decay_per_minute*(10**38)) settings.period_minutes = 1 # 1 week in minutes chain = 'evm:foochain:42' cap = (10 ** 6) * (10 ** 12) +#cap = 0 # instantiate simulation sim = DemurrageTokenSimulation(chain, settings, redistribute=False, cap=cap, actors=10) @@ -62,9 +63,9 @@ demurrage_delta = contract_demurrage - frontend_demurrage # difference betw alice_checksum = 50000000 - (50000000 * frontend_demurrage) + (200000000 * frontend_demurrage) # alice's balance calculated with frontend demurrage print("""alice frontend balance {} alice contract balance {} -frontend demurrage {:f} -contract demurrage {:f} -demurrage delta {}""".format( +frontend demurrage {:.38f} +contract demurrage {:.38f} +demurrage delta {:.38f}""".format( alice_checksum, sim.balance(alice), frontend_demurrage, @@ -72,5 +73,7 @@ demurrage delta {}""".format( demurrage_delta), ) -balance_sum = sim.balance(alice) + sim.balance(bob) + sim.balance(carol) +balance_sum = sim.balance(alice) + sim.balance(bob) + sim.balance(carol) + sim.balance(sim.sink_address) +supply = sim.get_supply() print('sum of contract demurraged balances {}'.format(balance_sum)) +print('total token supply {}'.format(supply))