erc20-demurrage-token

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

commit 98c460dc2fc8df9080b29fa590d69b88615c2bce
parent 00bb87e3ec9ab2af34e04a8f35a21c2b45d5f8b7
Author: nolash <dev@holbrook.no>
Date:   Sun,  4 Jul 2021 12:10:01 +0200

Create demurrage calc from contract

Diffstat:
Mpython/erc20_demurrage_token/data/DemurrageTokenMultiCap.bin | 4++--
Mpython/erc20_demurrage_token/data/DemurrageTokenMultiCap.json | 2+-
Mpython/erc20_demurrage_token/data/DemurrageTokenMultiNocap.bin | 4++--
Mpython/erc20_demurrage_token/data/DemurrageTokenMultiNocap.json | 2+-
Mpython/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin | 4++--
Mpython/erc20_demurrage_token/data/DemurrageTokenSingleCap.json | 2+-
Mpython/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin | 4++--
Mpython/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json | 2+-
Mpython/erc20_demurrage_token/demurrage.py | 23++++++++++++++++++++++-
Mpython/erc20_demurrage_token/token.py | 20+++++++++++++++++++-
Apython/run_tests.sh | 33+++++++++++++++++++++++++++++++++
Mpython/setup.cfg | 2+-
Mpython/tests/test_demurrage_ext.py | 12++++++++++++
Msolidity/DemurrageTokenMultiCap.sol | 3+++
Msolidity/DemurrageTokenMultiNocap.sol | 3+++
Msolidity/DemurrageTokenSingleCap.sol | 2+-
Msolidity/DemurrageTokenSingleNocap.sol | 2+-
17 files changed, 107 insertions(+), 17 deletions(-)

diff --git a/python/erc20_demurrage_token/data/DemurrageTokenMultiCap.bin b/python/erc20_demurrage_token/data/DemurrageTokenMultiCap.bin @@ -1 +1 @@ -60e06040523480156200001157600080fd5b5060405162003c8b38038062003c8b833981810160405281019062000037919062000465565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600690805190602001906200010a929190620002fe565b50856007908051906020019062000123929190620002fe565b508460ff166008819055504260038190555060035460808181525050603c836200014e91906200073b565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200017491906200073b565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508360c081815250506000620001d96000620f42406000600162000272640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600a8190555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a6200025e9190620005fe565b600b81905550505050505050505062000982565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200030c906200081d565b90600052602060002090601f0160209004810192826200033057600085556200037c565b82601f106200034b57805160ff19168380011785556200037c565b828001600101855582156200037c579182015b828111156200037b5782518255916020019190600101906200035e565b5b5090506200038b91906200038f565b5090565b5b80821115620003aa57600081600090555060010162000390565b5090565b6000620003c5620003bf846200056d565b62000544565b905082815260208101848484011115620003de57600080fd5b620003eb848285620007e7565b509392505050565b600081519050620004048162000934565b92915050565b600082601f8301126200041c57600080fd5b81516200042e848260208601620003ae565b91505092915050565b60008151905062000448816200094e565b92915050565b6000815190506200045f8162000968565b92915050565b600080600080600080600060e0888a0312156200048157600080fd5b600088015167ffffffffffffffff8111156200049c57600080fd5b620004aa8a828b016200040a565b975050602088015167ffffffffffffffff811115620004c857600080fd5b620004d68a828b016200040a565b9650506040620004e98a828b016200044e565b9550506060620004fc8a828b0162000437565b94505060806200050f8a828b0162000437565b93505060a0620005228a828b01620003f3565b92505060c0620005358a828b0162000437565b91505092959891949750929550565b60006200055062000563565b90506200055e828262000853565b919050565b6000604051905090565b600067ffffffffffffffff8211156200058b576200058a620008e7565b5b620005968262000916565b9050602081019050919050565b6000808291508390505b6001851115620005f557808604811115620005cd57620005cc62000889565b5b6001851615620005dd5780820291505b8081029050620005ed8562000927565b9450620005ad565b94509492505050565b60006200060b82620007d0565b91506200061883620007d0565b9250620006477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200064f565b905092915050565b60008262000661576001905062000734565b8162000671576000905062000734565b81600181146200068a57600281146200069557620006cb565b600191505062000734565b60ff841115620006aa57620006a962000889565b5b8360020a915084821115620006c457620006c362000889565b5b5062000734565b5060208310610133831016604e8410600b8410161715620007055782820a905083811115620006ff57620006fe62000889565b5b62000734565b620007148484846001620005a3565b925090508184048111156200072e576200072d62000889565b5b81810290505b9392505050565b60006200074882620007d0565b91506200075583620007d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000791576200079062000889565b5b828202905092915050565b6000620007a982620007b0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000807578082015181840152602081019050620007ea565b8381111562000817576000848401525b50505050565b600060028204905060018216806200083657607f821691505b602082108114156200084d576200084c620008b8565b5b50919050565b6200085e8262000916565b810181811067ffffffffffffffff8211171562000880576200087f620008e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200093f816200079c565b81146200094b57600080fd5b50565b6200095981620007d0565b81146200096557600080fd5b50565b6200097381620007da565b81146200097f57600080fd5b50565b60805160a05160c05161329a620009f160003960008181610d0c01528181610f67015281816110f801528181611d73015281816123f5015261242d0152600081816113ff01528181611d210152611e0e01526000818161142b01528181611e2f0152611e74015261329a6000f3fe608060405234801561001057600080fd5b5060043610610270576000357c01000000000000000000000000000000000000000000000000000000009004806358b2833b116101635780638f770ad0116100e0578063b470aade116100a4578063b470aade14610809578063e3ab207a14610827578063e54d63f714610857578063e809529514610887578063eda4e6d6146108a5578063f2fde38b146108c357610270565b80638f770ad01461073d57806395d89b411461075b578063983b2d56146107795780639da7d8ba146107a9578063a9059cbb146107d957610270565b806370a082311161012757806370a0823114610695578063731f237c146106c557806379ba5097146106e35780638da5cb5b146107015780638f1df6bc1461071f57610270565b806358b2833b146105b75780636787a9be146105d55780636a2d094e146106055780636d5055a6146106355780636ffa8a051461066557610270565b806331333487116101f1578063449a52f8116101b5578063449a52f8146104d957806347a50517146105095780634abfbba21461053957806351b4541c14610569578063573cc5071461059957610270565b806331333487146103fb578063313ce5671461042b57806335b16eb81461044957806340452d911461047957806340fc89f5146104a957610270565b80631989c6a8116102385780631989c6a81461032f578063216ea5ec1461034d578063229ba1971461037d57806323b872dd1461039b5780633092afd5146103cb57610270565b806301ffc9a71461027557806306fdde03146102a5578063095ea7b3146102c357806309f28f3c146102f357806318160ddd14610311575b600080fd5b61028f600480360381019061028a9190612b76565b6108f3565b60405161029c9190612d44565b60405180910390f35b6102ad610a9e565b6040516102ba9190612d7a565b60405180910390f35b6102dd60048036038101906102d89190612b11565b610b2c565b6040516102ea9190612d44565b60405180910390f35b6102fb610c50565b6040516103089190612dfc565b60405180910390f35b610319610c72565b6040516103269190612e32565b60405180910390f35b610337610c78565b6040516103449190612e32565b60405180910390f35b61036760048036038101906103629190612bf1565b610c84565b6040516103749190612e32565b60405180910390f35b610385610d0a565b6040516103929190612e32565b60405180910390f35b6103b560048036038101906103b09190612ac2565b610d2e565b6040516103c29190612d44565b60405180910390f35b6103e560048036038101906103e09190612a99565b610e58565b6040516103f29190612d44565b60405180910390f35b61041560048036038101906104109190612bf1565b610f4b565b6040516104229190612e32565b60405180910390f35b610433610ffc565b6040516104409190612e32565b60405180910390f35b610463600480360381019061045e9190612a99565b611002565b6040516104709190612d44565b60405180910390f35b610493600480360381019061048e9190612bc8565b611228565b6040516104a09190612d5f565b60405180910390f35b6104c360048036038101906104be9190612b4d565b61124c565b6040516104d09190612e32565b60405180910390f35b6104f360048036038101906104ee9190612b11565b61127d565b6040516105009190612d44565b60405180910390f35b610523600480360381019061051e9190612a99565b6113a3565b6040516105309190612e32565b60405180910390f35b610553600480360381019061054e9190612bc8565b6113fb565b6040516105609190612e32565b60405180910390f35b610583600480360381019061057e9190612bc8565b61145b565b6040516105909190612e32565b60405180910390f35b6105a161147c565b6040516105ae9190612e32565b60405180910390f35b6105bf611482565b6040516105cc9190612e32565b60405180910390f35b6105ef60048036038101906105ea9190612bc8565b611488565b6040516105fc9190612e32565b60405180910390f35b61061f600480360381019061061a9190612bc8565b6114f4565b60405161062c9190612e32565b60405180910390f35b61064f600480360381019061064a9190612a99565b611515565b60405161065c9190612e32565b60405180910390f35b61067f600480360381019061067a9190612b4d565b611580565b60405161068c9190612e32565b60405180910390f35b6106af60048036038101906106aa9190612a99565b6115b3565b6040516106bc9190612e32565b60405180910390f35b6106cd61165c565b6040516106da9190612d44565b60405180910390f35b6106eb61177e565b6040516106f89190612d44565b60405180910390f35b610709611925565b6040516107169190612d29565b60405180910390f35b61072761194b565b6040516107349190612d44565b60405180910390f35b610745611b02565b6040516107529190612e32565b60405180910390f35b610763611b08565b6040516107709190612d7a565b60405180910390f35b610793600480360381019061078e9190612a99565b611b96565b6040516107a09190612d44565b60405180910390f35b6107c360048036038101906107be9190612b4d565b611c53565b6040516107d09190612e32565b60405180910390f35b6107f360048036038101906107ee9190612b11565b611c7f565b6040516108009190612d44565b60405180910390f35b610811611d1f565b60405161081e9190612e32565b60405180910390f35b610841600480360381019061083c9190612b4d565b611d43565b60405161084e9190612e32565b60405180910390f35b610871600480360381019061086c9190612bf1565b611d57565b60405161087e9190612e32565b60405180910390f35b61088f611e08565b60405161089c9190612dfc565b60405180910390f35b6108ad611e72565b6040516108ba9190612e32565b60405180910390f35b6108dd60048036038101906108d89190612a99565b611e96565b6040516108ea9190612d44565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109485760019050610a99565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561099b5760019050610a99565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109ee5760019050610a99565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a415760019050610a99565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a945760019050610a99565b600090505b919050565b60068054610aab9061305d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad79061305d565b8015610b245780601f10610af957610100808354040283529160200191610b24565b820191906000526020600020905b815481529060010190602001808311610b0757829003601f168201915b505050505081565b600080610b3761194b565b50610b4133611002565b50610b4b83611488565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bd99190612e69565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c3d9190612e32565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b600080600080851415610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390612d9c565b60405180910390fd5b838510610cd857600080fd5b8484610ce49190612ebf565b91508482610cf29190612ef0565b90508084610d009190612f4a565b9250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610d3b61194b565b50610d4533611002565b50610d4f84611488565b915081600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610dda57600080fd5b610de5868684611f38565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610e449190612e32565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ee157503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610eea57600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610f909190612ebf565b905060005b84811015610fd757620f42408284610fad9190612ef0565b610fb79190612ebf565b83610fc29190612f4a565b92508080610fcf9061308f565b915050610f95565b50620f42408583610fe89190612ef0565b610ff29190612ebf565b9250505092915050565b60085481565b60008060008060008060008061101789611515565b91506000821480611041575061102b611e08565b6fffffffffffffffffffffffffffffffff168210155b15611056576000975050505050505050611223565b60006001836110659190612f4a565b8154811061109c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015496506110b28761124c565b945060008514156110cd576000975050505050505050611223565b6110d687611c53565b95506110e187611580565b90506d04ee2d6d415b85acef8100000000620f42407f00000000000000000000000000000000000000000000000000000000000000006111219190612ebf565b868861112d9190612ebf565b6111379190612ef0565b6111419190612ebf565b9350620f424081856111539190612ef0565b61115d9190612ebf565b92506cffffffff00000000000000000019600102600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825416925050819055506111c78984611fdc565b50818973ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d38560405161120f9190612e32565b60405180910390a360019750505050505050505b919050565b6000818154811061123857600080fd5b906000526020600020016000915090505481565b6000606860ff16710fffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112d657600080fd5b600a54600954846112e79190612e69565b11156112f257600080fd5b6112fa61194b565b5061130483611488565b905082600960008282546113189190612e69565b925050819055506113298482611fdc565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516113879190612e32565b60405180910390a3611397612138565b50600191505092915050565b600068ffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004169050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826114299190612ef0565b7f00000000000000000000000000000000000000000000000000000000000000006114549190612e69565b9050919050565b6000603c824261146b9190612f4a565b6114759190612ebf565b9050919050565b600b5481565b60035481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef8100000000846114d99190612ef0565b6114e39190612ef0565b6114ed9190612ebf565b9050919050565b6000603c82426115049190612f4a565b61150e9190612ebf565b9050919050565b6000604860ff166cffffffff000000000000000000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001900416908060020a82049150509050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806115c2856113a3565b92506115cf60035461145b565b905061160b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610f4b565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061163c9190612ef0565b82846116489190612ef0565b6116529190612ebf565b9350505050919050565b60008060008061166d60035461145b565b92506000831415611684576000935050505061177b565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1691506116c18284610f4b565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c836117069190612ef0565b6003546117139190612e69565b60038190555081836003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff1660405161176b9190612e17565b60405180910390a4600193505050505b90565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117db57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600080600061196461165c565b5061196d612220565b995060006001028a141561198e5760009a5050505050505050505050611aff565b6119978a611d43565b97506001886119a69190612e69565b90506119b1886113fb565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506119ef826114f4565b92506000831115611a24576d04ee2d6d415b85acef8100000000611a138685611d57565b611a1d9190612ebf565b9350611a41565b6d04ee2d6d415b85acef810000000085611a3e9190612ebf565b93505b611a5060008560095484612350565b98506000899080600181540180825580915050600190039060005260206000200160009091909190915055611a848a61124c565b96506000871415611a9f57611a988a6123dc565b9550611ab9565b611aab87600954610c84565b9550611ab786896125cf565b505b7f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d67581604051611ae89190612e32565b60405180910390a160019a50505050505050505050505b90565b600a5481565b60078054611b159061305d565b80601f0160208091040260200160405190810160405280929190818152602001828054611b419061305d565b8015611b8e5780601f10611b6357610100808354040283529160200191611b8e565b820191906000526020600020905b815481529060010190602001808311611b7157829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf257600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b6000806000611c8c61194b565b50611c9633611002565b50611ca084611488565b9150611cad338684611f38565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611d0c9190612e32565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000611d9c9190612ebf565b905060005b84811015611de357620f42408284611db99190612ef0565b611dc39190612ebf565b83611dce9190612e69565b92508080611ddb9061308f565b915050611da1565b50620f42408583611df49190612ef0565b611dfe9190612ebf565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611e599190612f4a565b611e639190612ebf565b611e6d9190612e69565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ef257600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611f458584612705565b50611f508484611fdc565b50611f59611e08565b6fffffffffffffffffffffffffffffffff169050600b548310158015611f87575080611f8486611515565b14155b8015611fbf57508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611fd057611fce8582612836565b505b60019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600190049050600085141561203d5760009350505050612132565b612046866113a3565b925084836120549190612e69565b91508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90612ddc565b60405180910390fd5b68ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600160008054905061214f9190612f4a565b81548110612186577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166009549060020a028117905080600102600060016000805490506121d39190612f4a565b8154811061220a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b60008060008060016000805490506122389190612f4a565b8154811061226f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156122de57600080fd5b505afa1580156122f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123169190612b9f565b6fffffffffffffffffffffffffffffffff16905061233382611d43565b81116123475760006001029250505061234d565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b60008060008060006123ed86611c53565b9350620f42407f00000000000000000000000000000000000000000000000000000000000000008561241f9190612ef0565b6124299190612ebf565b91507f0000000000000000000000000000000000000000000000000000000000000000620f42408361245b9190612ef0565b6124659190612ebf565b90508381101561257d5761247886611d43565b9250710fffffffff000000000000000000000000001960010260006001856124a09190612f4a565b815481106124d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160008282541692505081905550606860ff1660019060020a027f800000000000000000000000000000000000000000000000000000000000000017600102600060018561252e9190612f4a565b81548110612565577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001600082825417925050819055505b6125c2600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef8100000000846125bd9190612ebf565b611fdc565b5081945050505050919050565b60008060008414156125e55760009150506126ff565b7f800000000000000000000000000000000000000000000000000000000000000060010260006001856126189190612f4a565b8154811061264f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001600082825417925050819055506126bf60006001856126789190612f4a565b815481106126af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154611c53565b90506126f8600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685836126f39190612f4a565b611fdc565b5060019150505b92915050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004905060008514156127665760009350505050612830565b61276f866113a3565b9250848310156127b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ab90612dbc565b60405180910390fd5b84836127c09190612f4a565b915068ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60006cffffffff00000000000000000019600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825416925050819055506cffffffff000000000000000000604860ff16839060020a0216600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282541792505081905550612907612912565b506001905092915050565b6000806000806000600160008054905061292c9190612f4a565b81548110612963577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549250600161297b8461124c565b6129859190612e69565b905082600190049150710fffffffff000000000000000000000000001982169150710fffffffff00000000000000000000000000606860ff16829060020a02168217915081600102600060016000805490506129e19190612f4a565b81548110612a18577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506001935050505090565b600081359050612a3f816131f1565b92915050565b600081359050612a5481613208565b92915050565b600081359050612a698161321f565b92915050565b600081519050612a7e81613236565b92915050565b600081359050612a938161324d565b92915050565b600060208284031215612aab57600080fd5b6000612ab984828501612a30565b91505092915050565b600080600060608486031215612ad757600080fd5b6000612ae586828701612a30565b9350506020612af686828701612a30565b9250506040612b0786828701612a84565b9150509250925092565b60008060408385031215612b2457600080fd5b6000612b3285828601612a30565b9250506020612b4385828601612a84565b9150509250929050565b600060208284031215612b5f57600080fd5b6000612b6d84828501612a45565b91505092915050565b600060208284031215612b8857600080fd5b6000612b9684828501612a5a565b91505092915050565b600060208284031215612bb157600080fd5b6000612bbf84828501612a6f565b91505092915050565b600060208284031215612bda57600080fd5b6000612be884828501612a84565b91505092915050565b60008060408385031215612c0457600080fd5b6000612c1285828601612a84565b9250506020612c2385828601612a84565b9150509250929050565b612c3681612f7e565b82525050565b612c4581612f90565b82525050565b612c5481612f9c565b82525050565b6000612c6582612e4d565b612c6f8185612e58565b9350612c7f81856020860161302a565b612c8881613165565b840191505092915050565b6000612ca0601183612e58565b9150612cab82613176565b602082019050919050565b6000612cc3600d83612e58565b9150612cce8261319f565b602082019050919050565b6000612ce6600d83612e58565b9150612cf1826131c8565b602082019050919050565b612d0581612fd2565b82525050565b612d1481613018565b82525050565b612d238161300e565b82525050565b6000602082019050612d3e6000830184612c2d565b92915050565b6000602082019050612d596000830184612c3c565b92915050565b6000602082019050612d746000830184612c4b565b92915050565b60006020820190508181036000830152612d948184612c5a565b905092915050565b60006020820190508181036000830152612db581612c93565b9050919050565b60006020820190508181036000830152612dd581612cb6565b9050919050565b60006020820190508181036000830152612df581612cd9565b9050919050565b6000602082019050612e116000830184612cfc565b92915050565b6000602082019050612e2c6000830184612d0b565b92915050565b6000602082019050612e476000830184612d1a565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612e748261300e565b9150612e7f8361300e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612eb457612eb36130d8565b5b828201905092915050565b6000612eca8261300e565b9150612ed58361300e565b925082612ee557612ee4613107565b5b828204905092915050565b6000612efb8261300e565b9150612f068361300e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f3f57612f3e6130d8565b5b828202905092915050565b6000612f558261300e565b9150612f608361300e565b925082821015612f7357612f726130d8565b5b828203905092915050565b6000612f8982612fee565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061302382612fd2565b9050919050565b60005b8381101561304857808201518184015260208101905061302d565b83811115613057576000848401525b50505050565b6000600282049050600182168061307557607f821691505b6020821081141561308957613088613136565b5b50919050565b600061309a8261300e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130cd576130cc6130d8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f4e554d50415254535f5a45524f000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b7f4552525f574f554c445752415000000000000000000000000000000000000000600082015250565b6131fa81612f7e565b811461320557600080fd5b50565b61321181612f9c565b811461321c57600080fd5b50565b61322881612fa6565b811461323357600080fd5b50565b61323f81612fd2565b811461324a57600080fd5b50565b6132568161300e565b811461326157600080fd5b5056fea26469706673582212202ff4b9928f19f40c461de3fa50c641d1efcca72ecf80eb4172a673b547cf1f6864736f6c63430008040033 -\ No newline at end of file +610100604052620f42406d04ee2d6d415b85acef81000000006200002491906200077f565b6080908152503480156200003757600080fd5b5060405162003c1238038062003c1283398181016040528101906200005d919062000497565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600690805190602001906200013092919062000324565b5085600790805190602001906200014992919062000324565b508460ff166008819055504260038190555060035460a08181525050603c836200017491906200077f565b60c08181525050620f42406d04ee2d6d415b85acef81000000006200019a91906200077f565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508360e081815250506000620001ff6000620f42406000600162000298640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600a8190555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a62000284919062000642565b600b819055505050505050505050620009da565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b828054620003329062000861565b90600052602060002090601f016020900481019282620003565760008555620003a2565b82601f106200037157805160ff1916838001178555620003a2565b82800160010185558215620003a2579182015b82811115620003a157825182559160200191906001019062000384565b5b509050620003b19190620003b5565b5090565b5b80821115620003d0576000816000905550600101620003b6565b5090565b6000620003eb620003e584620005b1565b62000588565b9050828152602081018484840111156200040a57620004096200095f565b5b620004178482856200082b565b509392505050565b60008151905062000430816200098c565b92915050565b600082601f8301126200044e576200044d6200095a565b5b815162000460848260208601620003d4565b91505092915050565b6000815190506200047a81620009a6565b92915050565b6000815190506200049181620009c0565b92915050565b600080600080600080600060e0888a031215620004b957620004b862000969565b5b600088015167ffffffffffffffff811115620004da57620004d962000964565b5b620004e88a828b0162000436565b975050602088015167ffffffffffffffff8111156200050c576200050b62000964565b5b6200051a8a828b0162000436565b96505060406200052d8a828b0162000480565b9550506060620005408a828b0162000469565b9450506080620005538a828b0162000469565b93505060a0620005668a828b016200041f565b92505060c0620005798a828b0162000469565b91505092959891949750929550565b600062000594620005a7565b9050620005a2828262000897565b919050565b6000604051905090565b600067ffffffffffffffff821115620005cf57620005ce6200092b565b5b620005da826200096e565b9050602081019050919050565b6000808291508390505b60018511156200063957808604811115620006115762000610620008cd565b5b6001851615620006215780820291505b808102905062000631856200097f565b9450620005f1565b94509492505050565b60006200064f8262000814565b91506200065c8362000814565b92506200068b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000693565b905092915050565b600082620006a5576001905062000778565b81620006b5576000905062000778565b8160018114620006ce5760028114620006d9576200070f565b600191505062000778565b60ff841115620006ee57620006ed620008cd565b5b8360020a915084821115620007085762000707620008cd565b5b5062000778565b5060208310610133831016604e8410600b8410161715620007495782820a905083811115620007435762000742620008cd565b5b62000778565b620007588484846001620005e7565b92509050818404811115620007725762000771620008cd565b5b81810290505b9392505050565b60006200078c8262000814565b9150620007998362000814565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007d557620007d4620008cd565b5b828202905092915050565b6000620007ed82620007f4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200084b5780820151818401526020810190506200082e565b838111156200085b576000848401525b50505050565b600060028204905060018216806200087a57607f821691505b60208210811415620008915762000890620008fc565b5b50919050565b620008a2826200096e565b810181811067ffffffffffffffff82111715620008c457620008c36200092b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200099781620007e0565b8114620009a357600080fd5b50565b620009b18162000814565b8114620009bd57600080fd5b50565b620009cb816200081e565b8114620009d757600080fd5b50565b60805160a05160c05160e0516131bf62000a5360003960008181610d3501528181610f90015281816110fb01528181611d9a015281816123aa01526123e201526000818161140201528181611d480152611e3501526000818161142e01528181611e560152611e9b01526000611d2401526131bf6000f3fe608060405234801561001057600080fd5b506004361061027b576000357c0100000000000000000000000000000000000000000000000000000000900480636787a9be1161016357806395d89b41116100e0578063b470aade116100a4578063b470aade14610832578063e3ab207a14610850578063e54d63f714610880578063e8095295146108b0578063eda4e6d6146108ce578063f2fde38b146108ec5761027b565b806395d89b4114610766578063983b2d56146107845780639da7d8ba146107b4578063a9059cbb146107e4578063ab28cea0146108145761027b565b8063731f237c11610127578063731f237c146106d057806379ba5097146106ee5780638da5cb5b1461070c5780638f1df6bc1461072a5780638f770ad0146107485761027b565b80636787a9be146105e05780636a2d094e146106105780636d5055a6146106405780636ffa8a051461067057806370a08231146106a05761027b565b806331333487116101fc578063449a52f8116101c0578063449a52f8146104e457806347a50517146105145780634abfbba21461054457806351b4541c14610574578063573cc507146105a457806358b2833b146105c25761027b565b80633133348714610406578063313ce5671461043657806335b16eb81461045457806340452d911461048457806340fc89f5146104b45761027b565b80631989c6a8116102435780631989c6a81461033a578063216ea5ec14610358578063229ba1971461038857806323b872dd146103a65780633092afd5146103d65761027b565b806301ffc9a71461028057806306fdde03146102b0578063095ea7b3146102ce57806309f28f3c146102fe57806318160ddd1461031c575b600080fd5b61029a60048036038101906102959190612a57565b61091c565b6040516102a79190612c35565b60405180910390f35b6102b8610ac7565b6040516102c59190612c6b565b60405180910390f35b6102e860048036038101906102e391906129ea565b610b55565b6040516102f59190612c35565b60405180910390f35b610306610c79565b6040516103139190612ced565b60405180910390f35b610324610c9b565b6040516103319190612d23565b60405180910390f35b610342610ca1565b60405161034f9190612d23565b60405180910390f35b610372600480360381019061036d9190612ade565b610cad565b60405161037f9190612d23565b60405180910390f35b610390610d33565b60405161039d9190612d23565b60405180910390f35b6103c060048036038101906103bb9190612997565b610d57565b6040516103cd9190612c35565b60405180910390f35b6103f060048036038101906103eb919061296a565b610e81565b6040516103fd9190612c35565b60405180910390f35b610420600480360381019061041b9190612ade565b610f74565b60405161042d9190612d23565b60405180910390f35b61043e611025565b60405161044b9190612d23565b60405180910390f35b61046e6004803603810190610469919061296a565b61102b565b60405161047b9190612c35565b60405180910390f35b61049e60048036038101906104999190612ab1565b61122b565b6040516104ab9190612c50565b60405180910390f35b6104ce60048036038101906104c99190612a2a565b61124f565b6040516104db9190612d23565b60405180910390f35b6104fe60048036038101906104f991906129ea565b611280565b60405161050b9190612c35565b60405180910390f35b61052e6004803603810190610529919061296a565b6113a6565b60405161053b9190612d23565b60405180910390f35b61055e60048036038101906105599190612ab1565b6113fe565b60405161056b9190612d23565b60405180910390f35b61058e60048036038101906105899190612ab1565b61145e565b60405161059b9190612d23565b60405180910390f35b6105ac61147f565b6040516105b99190612d23565b60405180910390f35b6105ca611485565b6040516105d79190612d23565b60405180910390f35b6105fa60048036038101906105f59190612ab1565b61148b565b6040516106079190612d23565b60405180910390f35b61062a60048036038101906106259190612ab1565b6114f7565b6040516106379190612d23565b60405180910390f35b61065a6004803603810190610655919061296a565b611518565b6040516106679190612d23565b60405180910390f35b61068a60048036038101906106859190612a2a565b611583565b6040516106979190612d23565b60405180910390f35b6106ba60048036038101906106b5919061296a565b6115b6565b6040516106c79190612d23565b60405180910390f35b6106d861165f565b6040516106e59190612c35565b60405180910390f35b6106f6611781565b6040516107039190612c35565b60405180910390f35b610714611928565b6040516107219190612c1a565b60405180910390f35b61073261194e565b60405161073f9190612c35565b60405180910390f35b610750611b05565b60405161075d9190612d23565b60405180910390f35b61076e611b0b565b60405161077b9190612c6b565b60405180910390f35b61079e6004803603810190610799919061296a565b611b99565b6040516107ab9190612c35565b60405180910390f35b6107ce60048036038101906107c99190612a2a565b611c56565b6040516107db9190612d23565b60405180910390f35b6107fe60048036038101906107f991906129ea565b611c82565b60405161080b9190612c35565b60405180910390f35b61081c611d22565b6040516108299190612d23565b60405180910390f35b61083a611d46565b6040516108479190612d23565b60405180910390f35b61086a60048036038101906108659190612a2a565b611d6a565b6040516108779190612d23565b60405180910390f35b61089a60048036038101906108959190612ade565b611d7e565b6040516108a79190612d23565b60405180910390f35b6108b8611e2f565b6040516108c59190612ced565b60405180910390f35b6108d6611e99565b6040516108e39190612d23565b60405180910390f35b6109066004803603810190610901919061296a565b611ebd565b6040516109139190612c35565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109715760019050610ac2565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109c45760019050610ac2565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a175760019050610ac2565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a6a5760019050610ac2565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610abd5760019050610ac2565b600090505b919050565b60068054610ad490612f4e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0090612f4e565b8015610b4d5780601f10610b2257610100808354040283529160200191610b4d565b820191906000526020600020905b815481529060010190602001808311610b3057829003601f168201915b505050505081565b600080610b6061194e565b50610b6a3361102b565b50610b748361148b565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c029190612d5a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c669190612d23565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b600080600080851415610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90612c8d565b60405180910390fd5b838510610d0157600080fd5b8484610d0d9190612db0565b91508482610d1b9190612de1565b90508084610d299190612e3b565b9250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610d6461194e565b50610d6e3361102b565b50610d788461148b565b915081600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e0357600080fd5b610e0e868684611f5f565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610e6d9190612d23565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f0a57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610f1357600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610fb99190612db0565b905060005b8481101561100057620f42408284610fd69190612de1565b610fe09190612db0565b83610feb9190612e3b565b92508080610ff890612f80565b915050610fbe565b50620f424085836110119190612de1565b61101b9190612db0565b9250505092915050565b60085481565b60008060008060008060008061104089611518565b9150600082148061106a5750611054611e2f565b6fffffffffffffffffffffffffffffffff168210155b1561107f576000975050505050505050611226565b600060018361108e9190612e3b565b8154811061109f5761109e613056565b5b906000526020600020015496506110b58761124f565b945060008514156110d0576000975050505050505050611226565b6110d987611c56565b95506110e487611583565b90506d04ee2d6d415b85acef8100000000620f42407f00000000000000000000000000000000000000000000000000000000000000006111249190612db0565b86886111309190612db0565b61113a9190612de1565b6111449190612db0565b9350620f424081856111569190612de1565b6111609190612db0565b92506cffffffff00000000000000000019600102600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825416925050819055506111ca8984612003565b50818973ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d3856040516112129190612d23565b60405180910390a360019750505050505050505b919050565b6000818154811061123b57600080fd5b906000526020600020016000915090505481565b6000606860ff16710fffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112d957600080fd5b600a54600954846112ea9190612d5a565b11156112f557600080fd5b6112fd61194e565b506113078361148b565b9050826009600082825461131b9190612d5a565b9250508190555061132c8482612003565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88560405161138a9190612d23565b60405180910390a361139a61215f565b50600191505092915050565b600068ffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004169050919050565b60007f00000000000000000000000000000000000000000000000000000000000000008261142c9190612de1565b7f00000000000000000000000000000000000000000000000000000000000000006114579190612d5a565b9050919050565b6000603c824261146e9190612e3b565b6114789190612db0565b9050919050565b600b5481565b60035481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef8100000000846114dc9190612de1565b6114e69190612de1565b6114f09190612db0565b9050919050565b6000603c82426115079190612e3b565b6115119190612db0565b9050919050565b6000604860ff166cffffffff000000000000000000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001900416908060020a82049150509050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806115c5856113a6565b92506115d260035461145e565b905061160e600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610f74565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef810000000061163f9190612de1565b828461164b9190612de1565b6116559190612db0565b9350505050919050565b60008060008061167060035461145e565b92506000831415611687576000935050505061177e565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1691506116c48284610f74565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c836117099190612de1565b6003546117169190612d5a565b60038190555081836003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff1660405161176e9190612d08565b60405180910390a4600193505050505b90565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117de57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600080600061196761165f565b506119706121fb565b995060006001028a14156119915760009a5050505050505050505050611b02565b61199a8a611d6a565b97506001886119a99190612d5a565b90506119b4886113fe565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506119f2826114f7565b92506000831115611a27576d04ee2d6d415b85acef8100000000611a168685611d7e565b611a209190612db0565b9350611a44565b6d04ee2d6d415b85acef810000000085611a419190612db0565b93505b611a5360008560095484612305565b98506000899080600181540180825580915050600190039060005260206000200160009091909190915055611a878a61124f565b96506000871415611aa257611a9b8a612391565b9550611abc565b611aae87600954610cad565b9550611aba8689612538565b505b7f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d67581604051611aeb9190612d23565b60405180910390a160019a50505050505050505050505b90565b600a5481565b60078054611b1890612f4e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4490612f4e565b8015611b915780601f10611b6657610100808354040283529160200191611b91565b820191906000526020600020905b815481529060010190602001808311611b7457829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf557600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b6000806000611c8f61194e565b50611c993361102b565b50611ca38461148b565b9150611cb0338684611f5f565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611d0f9190612d23565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000611dc39190612db0565b905060005b84811015611e0a57620f42408284611de09190612de1565b611dea9190612db0565b83611df59190612d5a565b92508080611e0290612f80565b915050611dc8565b50620f42408583611e1b9190612de1565b611e259190612db0565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611e809190612e3b565b611e8a9190612db0565b611e949190612d5a565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f1957600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611f6c8584612622565b50611f778484612003565b50611f80611e2f565b6fffffffffffffffffffffffffffffffff169050600b548310158015611fae575080611fab86611518565b14155b8015611fe657508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611ff757611ff58582612753565b505b60019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004905060008514156120645760009350505050612159565b61206d866113a6565b9250848361207b9190612d5a565b91508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290612ccd565b60405180910390fd5b68ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080600060016000805490506121769190612e3b565b8154811061218757612186613056565b5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166009549060020a028117905080600102600060016000805490506121d49190612e3b565b815481106121e5576121e4613056565b5b9060005260206000200181905550600191505090565b60008060008060016000805490506122139190612e3b565b8154811061222457612223613056565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561229357600080fd5b505afa1580156122a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cb9190612a84565b6fffffffffffffffffffffffffffffffff1690506122e882611d6a565b81116122fc57600060010292505050612302565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b60008060008060006123a286611c56565b9350620f42407f0000000000000000000000000000000000000000000000000000000000000000856123d49190612de1565b6123de9190612db0565b91507f0000000000000000000000000000000000000000000000000000000000000000620f4240836124109190612de1565b61241a9190612db0565b9050838110156124e65761242d86611d6a565b9250710fffffffff000000000000000000000000001960010260006001856124559190612e3b565b8154811061246657612465613056565b5b9060005260206000200160008282541692505081905550606860ff1660019060020a027f80000000000000000000000000000000000000000000000000000000000000001760010260006001856124bd9190612e3b565b815481106124ce576124cd613056565b5b90600052602060002001600082825417925050819055505b61252b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef8100000000846125269190612db0565b612003565b5081945050505050919050565b600080600084141561254e57600091505061261c565b7f800000000000000000000000000000000000000000000000000000000000000060010260006001856125819190612e3b565b8154811061259257612591613056565b5b90600052602060002001600082825417925050819055506125dc60006001856125bb9190612e3b565b815481106125cc576125cb613056565b5b9060005260206000200154611c56565b9050612615600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685836126109190612e3b565b612003565b5060019150505b92915050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001900490506000851415612683576000935050505061274d565b61268c866113a6565b9250848310156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c890612cad565b60405180910390fd5b84836126dd9190612e3b565b915068ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60006cffffffff00000000000000000019600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825416925050819055506cffffffff000000000000000000604860ff16839060020a0216600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254179250508190555061282461282f565b506001905092915050565b600080600080600060016000805490506128499190612e3b565b8154811061285a57612859613056565b5b9060005260206000200154925060016128728461124f565b61287c9190612d5a565b905082600190049150710fffffffff000000000000000000000000001982169150710fffffffff00000000000000000000000000606860ff16829060020a02168217915081600102600060016000805490506128d89190612e3b565b815481106128e9576128e8613056565b5b90600052602060002001819055506001935050505090565b60008135905061291081613116565b92915050565b6000813590506129258161312d565b92915050565b60008135905061293a81613144565b92915050565b60008151905061294f8161315b565b92915050565b60008135905061296481613172565b92915050565b6000602082840312156129805761297f613085565b5b600061298e84828501612901565b91505092915050565b6000806000606084860312156129b0576129af613085565b5b60006129be86828701612901565b93505060206129cf86828701612901565b92505060406129e086828701612955565b9150509250925092565b60008060408385031215612a0157612a00613085565b5b6000612a0f85828601612901565b9250506020612a2085828601612955565b9150509250929050565b600060208284031215612a4057612a3f613085565b5b6000612a4e84828501612916565b91505092915050565b600060208284031215612a6d57612a6c613085565b5b6000612a7b8482850161292b565b91505092915050565b600060208284031215612a9a57612a99613085565b5b6000612aa884828501612940565b91505092915050565b600060208284031215612ac757612ac6613085565b5b6000612ad584828501612955565b91505092915050565b60008060408385031215612af557612af4613085565b5b6000612b0385828601612955565b9250506020612b1485828601612955565b9150509250929050565b612b2781612e6f565b82525050565b612b3681612e81565b82525050565b612b4581612e8d565b82525050565b6000612b5682612d3e565b612b608185612d49565b9350612b70818560208601612f1b565b612b798161308a565b840191505092915050565b6000612b91601183612d49565b9150612b9c8261309b565b602082019050919050565b6000612bb4600d83612d49565b9150612bbf826130c4565b602082019050919050565b6000612bd7600d83612d49565b9150612be2826130ed565b602082019050919050565b612bf681612ec3565b82525050565b612c0581612f09565b82525050565b612c1481612eff565b82525050565b6000602082019050612c2f6000830184612b1e565b92915050565b6000602082019050612c4a6000830184612b2d565b92915050565b6000602082019050612c656000830184612b3c565b92915050565b60006020820190508181036000830152612c858184612b4b565b905092915050565b60006020820190508181036000830152612ca681612b84565b9050919050565b60006020820190508181036000830152612cc681612ba7565b9050919050565b60006020820190508181036000830152612ce681612bca565b9050919050565b6000602082019050612d026000830184612bed565b92915050565b6000602082019050612d1d6000830184612bfc565b92915050565b6000602082019050612d386000830184612c0b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612d6582612eff565b9150612d7083612eff565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612da557612da4612fc9565b5b828201905092915050565b6000612dbb82612eff565b9150612dc683612eff565b925082612dd657612dd5612ff8565b5b828204905092915050565b6000612dec82612eff565b9150612df783612eff565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3057612e2f612fc9565b5b828202905092915050565b6000612e4682612eff565b9150612e5183612eff565b925082821015612e6457612e63612fc9565b5b828203905092915050565b6000612e7a82612edf565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f1482612ec3565b9050919050565b60005b83811015612f39578082015181840152602081019050612f1e565b83811115612f48576000848401525b50505050565b60006002820490506001821680612f6657607f821691505b60208210811415612f7a57612f79613027565b5b50919050565b6000612f8b82612eff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612fbe57612fbd612fc9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552525f4e554d50415254535f5a45524f000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b7f4552525f574f554c445752415000000000000000000000000000000000000000600082015250565b61311f81612e6f565b811461312a57600080fd5b50565b61313681612e8d565b811461314157600080fd5b50565b61314d81612e97565b811461315857600080fd5b50565b61316481612ec3565b811461316f57600080fd5b50565b61317b81612eff565b811461318657600080fd5b5056fea26469706673582212200c621ad9197340260f2db5065b66bdbf9ec445dac0d063a7c0757ab6805f955364736f6c63430008060033 +\ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenMultiCap.json b/python/erc20_demurrage_token/data/DemurrageTokenMultiCap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_taxLevelMinute","type":"uint256"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"},{"internalType":"uint256","name":"_supplyCap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"accountPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"applyRedistributionOnAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numParts","type":"uint256"},{"internalType":"uint256","name":"_sumWhole","type":"uint256"}],"name":"remainder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionParticipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_taxLevelMinute","type":"uint256"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"},{"internalType":"uint256","name":"_supplyCap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"accountPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"applyRedistributionOnAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numParts","type":"uint256"},{"internalType":"uint256","name":"_sumWhole","type":"uint256"}],"name":"remainder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionParticipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/erc20_demurrage_token/data/DemurrageTokenMultiNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenMultiNocap.bin @@ -1 +1 @@ -60e06040523480156200001157600080fd5b5060405162003d0238038062003d0283398181016040528101906200003791906200048e565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600590805190602001906200010a92919062000327565b5084600690805190602001906200012392919062000327565b508360ff166007819055504260808181525050603c826200014591906200074d565b60a08181525050620f42406d04ee2d6d415b85acef81000000006200016b91906200074d565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508260c0818152505060006200020a6000620f4240600060016200029b640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a62000288919062000610565b6009819055505050505050505062000994565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b82805462000335906200082f565b90600052602060002090601f016020900481019282620003595760008555620003a5565b82601f106200037457805160ff1916838001178555620003a5565b82800160010185558215620003a5579182015b82811115620003a457825182559160200191906001019062000387565b5b509050620003b49190620003b8565b5090565b5b80821115620003d3576000816000905550600101620003b9565b5090565b6000620003ee620003e8846200057f565b62000556565b9050828152602081018484840111156200040757600080fd5b62000414848285620007f9565b509392505050565b6000815190506200042d8162000946565b92915050565b600082601f8301126200044557600080fd5b815162000457848260208601620003d7565b91505092915050565b600081519050620004718162000960565b92915050565b60008151905062000488816200097a565b92915050565b60008060008060008060c08789031215620004a857600080fd5b600087015167ffffffffffffffff811115620004c357600080fd5b620004d189828a0162000433565b965050602087015167ffffffffffffffff811115620004ef57600080fd5b620004fd89828a0162000433565b95505060406200051089828a0162000477565b94505060606200052389828a0162000460565b93505060806200053689828a0162000460565b92505060a06200054989828a016200041c565b9150509295509295509295565b60006200056262000575565b905062000570828262000865565b919050565b6000604051905090565b600067ffffffffffffffff8211156200059d576200059c620008f9565b5b620005a88262000928565b9050602081019050919050565b6000808291508390505b60018511156200060757808604811115620005df57620005de6200089b565b5b6001851615620005ef5780820291505b8081029050620005ff8562000939565b9450620005bf565b94509492505050565b60006200061d82620007e2565b91506200062a83620007e2565b9250620006597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000661565b905092915050565b60008262000673576001905062000746565b8162000683576000905062000746565b81600181146200069c5760028114620006a757620006dd565b600191505062000746565b60ff841115620006bc57620006bb6200089b565b5b8360020a915084821115620006d657620006d56200089b565b5b5062000746565b5060208310610133831016604e8410600b8410161715620007175782820a9050838111156200071157620007106200089b565b5b62000746565b620007268484846001620005b5565b9250905081840481111562000740576200073f6200089b565b5b81810290505b9392505050565b60006200075a82620007e2565b91506200076783620007e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007a357620007a26200089b565b5b828202905092915050565b6000620007bb82620007c2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000819578082015181840152602081019050620007fc565b8381111562000829576000848401525b50505050565b600060028204905060018216806200084857607f821691505b602082108114156200085f576200085e620008ca565b5b50919050565b620008708262000928565b810181811067ffffffffffffffff82111715620008925762000891620008f9565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200095181620007ae565b81146200095d57600080fd5b50565b6200096b81620007e2565b81146200097757600080fd5b50565b6200098581620007ec565b81146200099157600080fd5b50565b60805160a05160c0516132ff62000a0360003960008181610ca801528181610f030152818161109401528181611da401528181612426015261245e01526000818161137701528181611d520152611e3f0152600081816113a301528181611e600152611ea501526132ff6000f3fe608060405234801561001057600080fd5b506004361061025a576000357c0100000000000000000000000000000000000000000000000000000000900480636787a9be11610158578063983b2d56116100d5578063e3ab207a11610099578063e3ab207a146107c3578063e54d63f7146107f3578063e809529514610823578063eda4e6d614610841578063f2fde38b1461085f5761025a565b8063983b2d56146106f75780639da7d8ba14610727578063a2119e2f14610757578063a9059cbb14610775578063b470aade146107a55761025a565b8063731f237c1161011c578063731f237c1461066157806379ba50971461067f5780638da5cb5b1461069d5780638f1df6bc146106bb57806395d89b41146106d95761025a565b80636787a9be146105715780636a2d094e146105a15780636d5055a6146105d15780636ffa8a051461060157806370a08231146106315761025a565b80633092afd5116101e657806340fc89f5116101aa57806340fc89f514610493578063449a52f8146104c357806347a50517146104f35780634abfbba214610523578063573cc507146105535761025a565b80633092afd5146103b557806331333487146103e5578063313ce5671461041557806335b16eb81461043357806340452d91146104635761025a565b806318160ddd1161022d57806318160ddd146102fb5780631989c6a814610319578063216ea5ec14610337578063229ba1971461036757806323b872dd146103855761025a565b806301ffc9a71461025f57806306fdde031461028f578063095ea7b3146102ad57806309f28f3c146102dd575b600080fd5b61027960048036038101906102749190612ba7565b61088f565b6040516102869190612d75565b60405180910390f35b610297610a3a565b6040516102a49190612dab565b60405180910390f35b6102c760048036038101906102c29190612b42565b610ac8565b6040516102d49190612d75565b60405180910390f35b6102e5610bec565b6040516102f29190612e2d565b60405180910390f35b610303610c0e565b6040516103109190612e63565b60405180910390f35b610321610c14565b60405161032e9190612e63565b60405180910390f35b610351600480360381019061034c9190612c22565b610c20565b60405161035e9190612e63565b60405180910390f35b61036f610ca6565b60405161037c9190612e63565b60405180910390f35b61039f600480360381019061039a9190612af3565b610cca565b6040516103ac9190612d75565b60405180910390f35b6103cf60048036038101906103ca9190612aca565b610df4565b6040516103dc9190612d75565b60405180910390f35b6103ff60048036038101906103fa9190612c22565b610ee7565b60405161040c9190612e63565b60405180910390f35b61041d610f98565b60405161042a9190612e63565b60405180910390f35b61044d60048036038101906104489190612aca565b610f9e565b60405161045a9190612d75565b60405180910390f35b61047d60048036038101906104789190612bf9565b6111c4565b60405161048a9190612d90565b60405180910390f35b6104ad60048036038101906104a89190612b7e565b6111e8565b6040516104ba9190612e63565b60405180910390f35b6104dd60048036038101906104d89190612b42565b611219565b6040516104ea9190612d75565b60405180910390f35b61050d60048036038101906105089190612aca565b61131b565b60405161051a9190612e63565b60405180910390f35b61053d60048036038101906105389190612bf9565b611373565b60405161054a9190612e63565b60405180910390f35b61055b6113d3565b6040516105689190612e63565b60405180910390f35b61058b60048036038101906105869190612bf9565b6113d9565b6040516105989190612e63565b60405180910390f35b6105bb60048036038101906105b69190612bf9565b611445565b6040516105c89190612e63565b60405180910390f35b6105eb60048036038101906105e69190612aca565b611466565b6040516105f89190612e63565b60405180910390f35b61061b60048036038101906106169190612b7e565b6114d1565b6040516106289190612e63565b60405180910390f35b61064b60048036038101906106469190612aca565b611504565b6040516106589190612e63565b60405180910390f35b6106696115e5565b6040516106769190612d75565b60405180910390f35b610687611793565b6040516106949190612d75565b60405180910390f35b6106a561193a565b6040516106b29190612d5a565b60405180910390f35b6106c3611960565b6040516106d09190612d75565b60405180910390f35b6106e1611b17565b6040516106ee9190612dab565b60405180910390f35b610711600480360381019061070c9190612aca565b611ba5565b60405161071e9190612d75565b60405180910390f35b610741600480360381019061073c9190612b7e565b611c62565b60405161074e9190612e63565b60405180910390f35b61075f611c8e565b60405161076c9190612e2d565b60405180910390f35b61078f600480360381019061078a9190612b42565b611cb0565b60405161079c9190612d75565b60405180910390f35b6107ad611d50565b6040516107ba9190612e63565b60405180910390f35b6107dd60048036038101906107d89190612b7e565b611d74565b6040516107ea9190612e63565b60405180910390f35b61080d60048036038101906108089190612c22565b611d88565b60405161081a9190612e63565b60405180910390f35b61082b611e39565b6040516108389190612e2d565b60405180910390f35b610849611ea3565b6040516108569190612e63565b60405180910390f35b61087960048036038101906108749190612aca565b611ec7565b6040516108869190612d75565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108e45760019050610a35565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109375760019050610a35565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561098a5760019050610a35565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109dd5760019050610a35565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a305760019050610a35565b600090505b919050565b60058054610a47906130c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a73906130c2565b8015610ac05780601f10610a9557610100808354040283529160200191610ac0565b820191906000526020600020905b815481529060010190602001808311610aa357829003601f168201915b505050505081565b600080610ad3611960565b50610add33610f9e565b50610ae7836113d9565b905080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b759190612e9a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610bd99190612e63565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b600080600080851415610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612dcd565b60405180910390fd5b838510610c7457600080fd5b8484610c809190612ef0565b91508482610c8e9190612f21565b90508084610c9c9190612faf565b9250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610cd7611960565b50610ce133610f9e565b50610ceb846113d9565b915081600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7657600080fd5b610d81868684611f69565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610de09190612e63565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e7d57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610e8657600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610f2c9190612ef0565b905060005b84811015610f7357620f42408284610f499190612f21565b610f539190612ef0565b83610f5e9190612faf565b92508080610f6b906130f4565b915050610f31565b50620f42408583610f849190612f21565b610f8e9190612ef0565b9250505092915050565b60075481565b600080600080600080600080610fb389611466565b91506000821480610fdd5750610fc7611e39565b6fffffffffffffffffffffffffffffffff168210155b15610ff25760009750505050505050506111bf565b60006001836110019190612faf565b81548110611038577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154965061104e876111e8565b945060008514156110695760009750505050505050506111bf565b61107287611c62565b955061107d876114d1565b90506d04ee2d6d415b85acef8100000000620f42407f00000000000000000000000000000000000000000000000000000000000000006110bd9190612ef0565b86886110c99190612ef0565b6110d39190612f21565b6110dd9190612ef0565b9350620f424081856110ef9190612f21565b6110f99190612ef0565b92506cffffffff00000000000000000019600102600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282541692505081905550611163898461200d565b50818973ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d3856040516111ab9190612e63565b60405180910390a360019750505050505050505b919050565b600081815481106111d457600080fd5b906000526020600020016000915090505481565b6000606860ff16710fffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661127257600080fd5b61127a611960565b5082905082600860008282546112909190612e9a565b925050819055506112a1848261200d565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516112ff9190612e63565b60405180910390a361130f612169565b50600191505092915050565b600068ffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004169050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826113a19190612f21565b7f00000000000000000000000000000000000000000000000000000000000000006113cc9190612e9a565b9050919050565b60095481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef81000000008461142a9190612f21565b6114349190612f21565b61143e9190612ef0565b9050919050565b6000603c82426114559190612faf565b61145f9190612ef0565b9050919050565b6000604860ff166cffffffff000000000000000000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001900416908060020a82049150509050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806115138561131b565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff1661153c611e39565b6115469190612f7b565b6fffffffffffffffffffffffffffffffff169050611594600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610ee7565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef81000000006115c59190612f21565b82846115d19190612f21565b6115db9190612ef0565b9350505050919050565b60008060008060006115f5611e39565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff16846116219190612f7b565b92506000836fffffffffffffffffffffffffffffffff16141561164b576000945050505050611790565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16915061169a82846fffffffffffffffffffffffffffffffff16610ee7565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff1660405161177f9190612e48565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117f057600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806000806000611979612251565b995060006001028a141561199a5760009a5050505050505050505050611b14565b6119a38a611d74565b97506001886119b29190612e9a565b90506119bd88611373565b91506119c76115e5565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169450611a0482611445565b92506000831115611a39576d04ee2d6d415b85acef8100000000611a288685611d88565b611a329190612ef0565b9350611a56565b6d04ee2d6d415b85acef810000000085611a539190612ef0565b93505b611a6560008560085484612381565b98506000899080600181540180825580915050600190039060005260206000200160009091909190915055611a998a6111e8565b96506000871415611ab457611aad8a61240d565b9550611ace565b611ac087600854610c20565b9550611acc8689612600565b505b7f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d67581604051611afd9190612e63565b60405180910390a160019a50505050505050505050505b90565b60068054611b24906130c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b50906130c2565b8015611b9d5780601f10611b7257610100808354040283529160200191611b9d565b820191906000526020600020905b815481529060010190602001808311611b8057829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c0157600080fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b6000806000611cbd611960565b50611cc733610f9e565b50611cd1846113d9565b9150611cde338684611f69565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611d3d9190612e63565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000611dcd9190612ef0565b905060005b84811015611e1457620f42408284611dea9190612f21565b611df49190612ef0565b83611dff9190612e9a565b92508080611e0c906130f4565b915050611dd2565b50620f42408583611e259190612f21565b611e2f9190612ef0565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611e8a9190612faf565b611e949190612ef0565b611e9e9190612e9a565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f2357600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611f768584612736565b50611f81848461200d565b50611f8a611e39565b6fffffffffffffffffffffffffffffffff1690506009548310158015611fb8575080611fb586611466565b14155b8015611ff057508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561200157611fff8582612867565b505b60019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600190049050600085141561206e5760009350505050612163565b6120778661131b565b925084836120859190612e9a565b91508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90612e0d565b60405180910390fd5b68ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080600060016000805490506121809190612faf565b815481106121b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a028117905080600102600060016000805490506122049190612faf565b8154811061223b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550600191505090565b60008060008060016000805490506122699190612faf565b815481106122a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561230f57600080fd5b505afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190612bd0565b6fffffffffffffffffffffffffffffffff16905061236482611d74565b81116123785760006001029250505061237e565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080600080600061241e86611c62565b9350620f42407f0000000000000000000000000000000000000000000000000000000000000000856124509190612f21565b61245a9190612ef0565b91507f0000000000000000000000000000000000000000000000000000000000000000620f42408361248c9190612f21565b6124969190612ef0565b9050838110156125ae576124a986611d74565b9250710fffffffff000000000000000000000000001960010260006001856124d19190612faf565b81548110612508577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160008282541692505081905550606860ff1660019060020a027f800000000000000000000000000000000000000000000000000000000000000017600102600060018561255f9190612faf565b81548110612596577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001600082825417925050819055505b6125f3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef8100000000846125ee9190612ef0565b61200d565b5081945050505050919050565b6000806000841415612616576000915050612730565b7f800000000000000000000000000000000000000000000000000000000000000060010260006001856126499190612faf565b81548110612680577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001600082825417925050819055506126f060006001856126a99190612faf565b815481106126e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154611c62565b9050612729600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685836127249190612faf565b61200d565b5060019150505b92915050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004905060008514156127975760009350505050612861565b6127a08661131b565b9250848310156127e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dc90612ded565b60405180910390fd5b84836127f19190612faf565b915068ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60006cffffffff00000000000000000019600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825416925050819055506cffffffff000000000000000000604860ff16839060020a0216600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282541792505081905550612938612943565b506001905092915050565b6000806000806000600160008054905061295d9190612faf565b81548110612994577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154925060016129ac846111e8565b6129b69190612e9a565b905082600190049150710fffffffff000000000000000000000000001982169150710fffffffff00000000000000000000000000606860ff16829060020a0216821791508160010260006001600080549050612a129190612faf565b81548110612a49577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506001935050505090565b600081359050612a7081613256565b92915050565b600081359050612a858161326d565b92915050565b600081359050612a9a81613284565b92915050565b600081519050612aaf8161329b565b92915050565b600081359050612ac4816132b2565b92915050565b600060208284031215612adc57600080fd5b6000612aea84828501612a61565b91505092915050565b600080600060608486031215612b0857600080fd5b6000612b1686828701612a61565b9350506020612b2786828701612a61565b9250506040612b3886828701612ab5565b9150509250925092565b60008060408385031215612b5557600080fd5b6000612b6385828601612a61565b9250506020612b7485828601612ab5565b9150509250929050565b600060208284031215612b9057600080fd5b6000612b9e84828501612a76565b91505092915050565b600060208284031215612bb957600080fd5b6000612bc784828501612a8b565b91505092915050565b600060208284031215612be257600080fd5b6000612bf084828501612aa0565b91505092915050565b600060208284031215612c0b57600080fd5b6000612c1984828501612ab5565b91505092915050565b60008060408385031215612c3557600080fd5b6000612c4385828601612ab5565b9250506020612c5485828601612ab5565b9150509250929050565b612c6781612fe3565b82525050565b612c7681612ff5565b82525050565b612c8581613001565b82525050565b6000612c9682612e7e565b612ca08185612e89565b9350612cb081856020860161308f565b612cb9816131ca565b840191505092915050565b6000612cd1601183612e89565b9150612cdc826131db565b602082019050919050565b6000612cf4600d83612e89565b9150612cff82613204565b602082019050919050565b6000612d17600d83612e89565b9150612d228261322d565b602082019050919050565b612d3681613037565b82525050565b612d458161307d565b82525050565b612d5481613073565b82525050565b6000602082019050612d6f6000830184612c5e565b92915050565b6000602082019050612d8a6000830184612c6d565b92915050565b6000602082019050612da56000830184612c7c565b92915050565b60006020820190508181036000830152612dc58184612c8b565b905092915050565b60006020820190508181036000830152612de681612cc4565b9050919050565b60006020820190508181036000830152612e0681612ce7565b9050919050565b60006020820190508181036000830152612e2681612d0a565b9050919050565b6000602082019050612e426000830184612d2d565b92915050565b6000602082019050612e5d6000830184612d3c565b92915050565b6000602082019050612e786000830184612d4b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612ea582613073565b9150612eb083613073565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ee557612ee461313d565b5b828201905092915050565b6000612efb82613073565b9150612f0683613073565b925082612f1657612f1561316c565b5b828204905092915050565b6000612f2c82613073565b9150612f3783613073565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f7057612f6f61313d565b5b828202905092915050565b6000612f8682613037565b9150612f9183613037565b925082821015612fa457612fa361313d565b5b828203905092915050565b6000612fba82613073565b9150612fc583613073565b925082821015612fd857612fd761313d565b5b828203905092915050565b6000612fee82613053565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061308882613037565b9050919050565b60005b838110156130ad578082015181840152602081019050613092565b838111156130bc576000848401525b50505050565b600060028204905060018216806130da57607f821691505b602082108114156130ee576130ed61319b565b5b50919050565b60006130ff82613073565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156131325761313161313d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f4e554d50415254535f5a45524f000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b7f4552525f574f554c445752415000000000000000000000000000000000000000600082015250565b61325f81612fe3565b811461326a57600080fd5b50565b61327681613001565b811461328157600080fd5b50565b61328d8161300b565b811461329857600080fd5b50565b6132a481613037565b81146132af57600080fd5b50565b6132bb81613073565b81146132c657600080fd5b5056fea2646970667358221220fa11a5f958152eff7d70d797730b18f3d690cf25906af3e8f7a49ea02266ae9064736f6c63430008040033 -\ No newline at end of file +610100604052620f42406d04ee2d6d415b85acef810000000062000024919062000791565b6080908152503480156200003757600080fd5b5060405162003c8938038062003c8983398181016040528101906200005d9190620004c0565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508560059080519060200190620001309291906200034d565b508460069080519060200190620001499291906200034d565b508360ff166007819055504260a08181525050603c826200016b919062000791565b60c08181525050620f42406d04ee2d6d415b85acef810000000062000191919062000791565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508260e081815250506000620002306000620f424060006001620002c1640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002ae919062000654565b60098190555050505050505050620009ec565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200035b9062000873565b90600052602060002090601f0160209004810192826200037f5760008555620003cb565b82601f106200039a57805160ff1916838001178555620003cb565b82800160010185558215620003cb579182015b82811115620003ca578251825591602001919060010190620003ad565b5b509050620003da9190620003de565b5090565b5b80821115620003f9576000816000905550600101620003df565b5090565b6000620004146200040e84620005c3565b6200059a565b90508281526020810184848401111562000433576200043262000971565b5b620004408482856200083d565b509392505050565b60008151905062000459816200099e565b92915050565b600082601f8301126200047757620004766200096c565b5b815162000489848260208601620003fd565b91505092915050565b600081519050620004a381620009b8565b92915050565b600081519050620004ba81620009d2565b92915050565b60008060008060008060c08789031215620004e057620004df6200097b565b5b600087015167ffffffffffffffff81111562000501576200050062000976565b5b6200050f89828a016200045f565b965050602087015167ffffffffffffffff81111562000533576200053262000976565b5b6200054189828a016200045f565b95505060406200055489828a01620004a9565b94505060606200056789828a0162000492565b93505060806200057a89828a0162000492565b92505060a06200058d89828a0162000448565b9150509295509295509295565b6000620005a6620005b9565b9050620005b48282620008a9565b919050565b6000604051905090565b600067ffffffffffffffff821115620005e157620005e06200093d565b5b620005ec8262000980565b9050602081019050919050565b6000808291508390505b60018511156200064b57808604811115620006235762000622620008df565b5b6001851615620006335780820291505b8081029050620006438562000991565b945062000603565b94509492505050565b6000620006618262000826565b91506200066e8362000826565b92506200069d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006a5565b905092915050565b600082620006b757600190506200078a565b81620006c757600090506200078a565b8160018114620006e05760028114620006eb5762000721565b60019150506200078a565b60ff8411156200070057620006ff620008df565b5b8360020a9150848211156200071a5762000719620008df565b5b506200078a565b5060208310610133831016604e8410600b84101617156200075b5782820a905083811115620007555762000754620008df565b5b6200078a565b6200076a8484846001620005f9565b92509050818404811115620007845762000783620008df565b5b81810290505b9392505050565b60006200079e8262000826565b9150620007ab8362000826565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007e757620007e6620008df565b5b828202905092915050565b6000620007ff8262000806565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200085d57808201518184015260208101905062000840565b838111156200086d576000848401525b50505050565b600060028204905060018216806200088c57607f821691505b60208210811415620008a357620008a26200090e565b5b50919050565b620008b48262000980565b810181811067ffffffffffffffff82111715620008d657620008d56200093d565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6000600282049050919050565b620009a981620007f2565b8114620009b557600080fd5b50565b620009c38162000826565b8114620009cf57600080fd5b50565b620009dd8162000830565b8114620009e957600080fd5b50565b60805160a05160c05160e05161322462000a6560003960008181610cd101528181610f2c0152818161109701528181611dcb015281816123db015261241301526000818161137a01528181611d790152611e660152600081816113a601528181611e870152611ecc01526000611d5501526132246000f3fe608060405234801561001057600080fd5b5060043610610265576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e116101585780639da7d8ba116100d5578063e3ab207a11610099578063e3ab207a146107ec578063e54d63f71461081c578063e80952951461084c578063eda4e6d61461086a578063f2fde38b1461088857610265565b80639da7d8ba14610732578063a2119e2f14610762578063a9059cbb14610780578063ab28cea0146107b0578063b470aade146107ce57610265565b806379ba50971161011c57806379ba50971461068a5780638da5cb5b146106a85780638f1df6bc146106c657806395d89b41146106e4578063983b2d561461070257610265565b80636a2d094e146105ac5780636d5055a6146105dc5780636ffa8a051461060c57806370a082311461063c578063731f237c1461066c57610265565b806331333487116101e6578063449a52f8116101aa578063449a52f8146104ce57806347a50517146104fe5780634abfbba21461052e578063573cc5071461055e5780636787a9be1461057c57610265565b806331333487146103f0578063313ce5671461042057806335b16eb81461043e57806340452d911461046e57806340fc89f51461049e57610265565b80631989c6a81161022d5780631989c6a814610324578063216ea5ec14610342578063229ba1971461037257806323b872dd146103905780633092afd5146103c057610265565b806301ffc9a71461026a57806306fdde031461029a578063095ea7b3146102b857806309f28f3c146102e857806318160ddd14610306575b600080fd5b610284600480360381019061027f9190612a88565b6108b8565b6040516102919190612c66565b60405180910390f35b6102a2610a63565b6040516102af9190612c9c565b60405180910390f35b6102d260048036038101906102cd9190612a1b565b610af1565b6040516102df9190612c66565b60405180910390f35b6102f0610c15565b6040516102fd9190612d1e565b60405180910390f35b61030e610c37565b60405161031b9190612d54565b60405180910390f35b61032c610c3d565b6040516103399190612d54565b60405180910390f35b61035c60048036038101906103579190612b0f565b610c49565b6040516103699190612d54565b60405180910390f35b61037a610ccf565b6040516103879190612d54565b60405180910390f35b6103aa60048036038101906103a591906129c8565b610cf3565b6040516103b79190612c66565b60405180910390f35b6103da60048036038101906103d5919061299b565b610e1d565b6040516103e79190612c66565b60405180910390f35b61040a60048036038101906104059190612b0f565b610f10565b6040516104179190612d54565b60405180910390f35b610428610fc1565b6040516104359190612d54565b60405180910390f35b6104586004803603810190610453919061299b565b610fc7565b6040516104659190612c66565b60405180910390f35b61048860048036038101906104839190612ae2565b6111c7565b6040516104959190612c81565b60405180910390f35b6104b860048036038101906104b39190612a5b565b6111eb565b6040516104c59190612d54565b60405180910390f35b6104e860048036038101906104e39190612a1b565b61121c565b6040516104f59190612c66565b60405180910390f35b6105186004803603810190610513919061299b565b61131e565b6040516105259190612d54565b60405180910390f35b61054860048036038101906105439190612ae2565b611376565b6040516105559190612d54565b60405180910390f35b6105666113d6565b6040516105739190612d54565b60405180910390f35b61059660048036038101906105919190612ae2565b6113dc565b6040516105a39190612d54565b60405180910390f35b6105c660048036038101906105c19190612ae2565b611448565b6040516105d39190612d54565b60405180910390f35b6105f660048036038101906105f1919061299b565b611469565b6040516106039190612d54565b60405180910390f35b61062660048036038101906106219190612a5b565b6114d4565b6040516106339190612d54565b60405180910390f35b6106566004803603810190610651919061299b565b611507565b6040516106639190612d54565b60405180910390f35b6106746115e8565b6040516106819190612c66565b60405180910390f35b610692611796565b60405161069f9190612c66565b60405180910390f35b6106b061193d565b6040516106bd9190612c4b565b60405180910390f35b6106ce611963565b6040516106db9190612c66565b60405180910390f35b6106ec611b1a565b6040516106f99190612c9c565b60405180910390f35b61071c6004803603810190610717919061299b565b611ba8565b6040516107299190612c66565b60405180910390f35b61074c60048036038101906107479190612a5b565b611c65565b6040516107599190612d54565b60405180910390f35b61076a611c91565b6040516107779190612d1e565b60405180910390f35b61079a60048036038101906107959190612a1b565b611cb3565b6040516107a79190612c66565b60405180910390f35b6107b8611d53565b6040516107c59190612d54565b60405180910390f35b6107d6611d77565b6040516107e39190612d54565b60405180910390f35b61080660048036038101906108019190612a5b565b611d9b565b6040516108139190612d54565b60405180910390f35b61083660048036038101906108319190612b0f565b611daf565b6040516108439190612d54565b60405180910390f35b610854611e60565b6040516108619190612d1e565b60405180910390f35b610872611eca565b60405161087f9190612d54565b60405180910390f35b6108a2600480360381019061089d919061299b565b611eee565b6040516108af9190612c66565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561090d5760019050610a5e565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109605760019050610a5e565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109b35760019050610a5e565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a065760019050610a5e565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a595760019050610a5e565b600090505b919050565b60058054610a7090612fb3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9c90612fb3565b8015610ae95780601f10610abe57610100808354040283529160200191610ae9565b820191906000526020600020905b815481529060010190602001808311610acc57829003601f168201915b505050505081565b600080610afc611963565b50610b0633610fc7565b50610b10836113dc565b905080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9e9190612d8b565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c029190612d54565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60085481565b60008080549050905090565b600080600080851415610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890612cbe565b60405180910390fd5b838510610c9d57600080fd5b8484610ca99190612de1565b91508482610cb79190612e12565b90508084610cc59190612ea0565b9250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610d00611963565b50610d0a33610fc7565b50610d14846113dc565b915081600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d9f57600080fd5b610daa868684611f90565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610e099190612d54565b60405180910390a380925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ea657503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610eaf57600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000610f559190612de1565b905060005b84811015610f9c57620f42408284610f729190612e12565b610f7c9190612de1565b83610f879190612ea0565b92508080610f9490612fe5565b915050610f5a565b50620f42408583610fad9190612e12565b610fb79190612de1565b9250505092915050565b60075481565b600080600080600080600080610fdc89611469565b915060008214806110065750610ff0611e60565b6fffffffffffffffffffffffffffffffff168210155b1561101b5760009750505050505050506111c2565b600060018361102a9190612ea0565b8154811061103b5761103a6130bb565b5b90600052602060002001549650611051876111eb565b9450600085141561106c5760009750505050505050506111c2565b61107587611c65565b9550611080876114d4565b90506d04ee2d6d415b85acef8100000000620f42407f00000000000000000000000000000000000000000000000000000000000000006110c09190612de1565b86886110cc9190612de1565b6110d69190612e12565b6110e09190612de1565b9350620f424081856110f29190612e12565b6110fc9190612de1565b92506cffffffff00000000000000000019600102600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825416925050819055506111668984612034565b50818973ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d3856040516111ae9190612d54565b60405180910390a360019750505050505050505b919050565b600081815481106111d757600080fd5b906000526020600020016000915090505481565b6000606860ff16710fffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661127557600080fd5b61127d611963565b5082905082600860008282546112939190612d8b565b925050819055506112a48482612034565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516113029190612d54565b60405180910390a3611312612190565b50600191505092915050565b600068ffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004169050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826113a49190612e12565b7f00000000000000000000000000000000000000000000000000000000000000006113cf9190612d8b565b9050919050565b60095481565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16620f42406d04ee2d6d415b85acef81000000008461142d9190612e12565b6114379190612e12565b6114419190612de1565b9050919050565b6000603c82426114589190612ea0565b6114629190612de1565b9050919050565b6000604860ff166cffffffff000000000000000000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001900416908060020a82049150509050919050565b6000608c60ff1673fffff00000000000000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806115168561131e565b9250600260109054906101000a90046fffffffffffffffffffffffffffffffff1661153f611e60565b6115499190612e6c565b6fffffffffffffffffffffffffffffffff169050611597600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610f10565b6fffffffffffffffffffffffffffffffff169150620f42406d04ee2d6d415b85acef81000000006115c89190612e12565b82846115d49190612e12565b6115de9190612de1565b9350505050919050565b60008060008060006115f8611e60565b9350600260109054906101000a90046fffffffffffffffffffffffffffffffff16846116249190612e6c565b92506000836fffffffffffffffffffffffffffffffff16141561164e576000945050505050611793565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16915061169d82846fffffffffffffffffffffffffffffffff16610f10565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555081836fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff167fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516117829190612d39565b60405180910390a460019450505050505b90565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117f357600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600080600061197c61222c565b995060006001028a141561199d5760009a5050505050505050505050611b17565b6119a68a611d9b565b97506001886119b59190612d8b565b90506119c088611376565b91506119ca6115e8565b50600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169450611a0782611448565b92506000831115611a3c576d04ee2d6d415b85acef8100000000611a2b8685611daf565b611a359190612de1565b9350611a59565b6d04ee2d6d415b85acef810000000085611a569190612de1565b93505b611a6860008560085484612336565b98506000899080600181540180825580915050600190039060005260206000200160009091909190915055611a9c8a6111eb565b96506000871415611ab757611ab08a6123c2565b9550611ad1565b611ac387600854610c49565b9550611acf8689612569565b505b7f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d67581604051611b009190612d54565b60405180910390a160019a50505050505050505050505b90565b60068054611b2790612fb3565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5390612fb3565b8015611ba05780601f10611b7557610100808354040283529160200191611ba0565b820191906000526020600020905b815481529060010190602001808311611b8357829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c0457600080fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b6000806000611cc0611963565b50611cca33610fc7565b50611cd4846113dc565b9150611ce1338684611f90565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611d409190612d54565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b6000806000620f424091506d04ee2d6d415b85acef81000000007f0000000000000000000000000000000000000000000000000000000000000000611df49190612de1565b905060005b84811015611e3b57620f42408284611e119190612e12565b611e1b9190612de1565b83611e269190612d8b565b92508080611e3390612fe5565b915050611df9565b50620f42408583611e4c9190612e12565b611e569190612de1565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611eb19190612ea0565b611ebb9190612de1565b611ec59190612d8b565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f4a57600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080611f9d8584612653565b50611fa88484612034565b50611fb1611e60565b6fffffffffffffffffffffffffffffffff1690506009548310158015611fdf575080611fdc86611469565b14155b801561201757508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612028576120268582612784565b505b60019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001900490506000851415612095576000935050505061218a565b61209e8661131e565b925084836120ac9190612d8b565b91508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161161211c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211390612cfe565b60405180910390fd5b68ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080600060016000805490506121a79190612ea0565b815481106121b8576121b76130bb565b5b90600052602060002001546001900490506cffffffffffffffffff000000001981169050602060ff166008549060020a028117905080600102600060016000805490506122059190612ea0565b81548110612216576122156130bb565b5b9060005260206000200181905550600191505090565b60008060008060016000805490506122449190612ea0565b81548110612255576122546130bb565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156122c457600080fd5b505afa1580156122d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fc9190612ab5565b6fffffffffffffffffffffffffffffffff16905061231982611d9b565b811161232d57600060010292505050612333565b81925050505b90565b60008073fffff00000000000000000000000000000000000608c60ff16869060020a021660010281179050710fffffffff00000000000000000000000000606860ff16879060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b60008060008060006123d386611c65565b9350620f42407f0000000000000000000000000000000000000000000000000000000000000000856124059190612e12565b61240f9190612de1565b91507f0000000000000000000000000000000000000000000000000000000000000000620f4240836124419190612e12565b61244b9190612de1565b9050838110156125175761245e86611d9b565b9250710fffffffff000000000000000000000000001960010260006001856124869190612ea0565b81548110612497576124966130bb565b5b9060005260206000200160008282541692505081905550606860ff1660019060020a027f80000000000000000000000000000000000000000000000000000000000000001760010260006001856124ee9190612ea0565b815481106124ff576124fe6130bb565b5b90600052602060002001600082825417925050819055505b61255c600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166d04ee2d6d415b85acef8100000000846125579190612de1565b612034565b5081945050505050919050565b600080600084141561257f57600091505061264d565b7f800000000000000000000000000000000000000000000000000000000000000060010260006001856125b29190612ea0565b815481106125c3576125c26130bb565b5b906000526020600020016000828254179250508190555061260d60006001856125ec9190612ea0565b815481106125fd576125fc6130bb565b5b9060005260206000200154611c65565b9050612646600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685836126419190612ea0565b612034565b5060019150505b92915050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004905060008514156126b4576000935050505061277e565b6126bd8661131e565b925084831015612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f990612cde565b60405180910390fd5b848361270e9190612ea0565b915068ffffffffffffffffff198116905068ffffffffffffffffff82168117905080600102600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60006cffffffff00000000000000000019600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825416925050819055506cffffffff000000000000000000604860ff16839060020a0216600102600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282541792505081905550612855612860565b506001905092915050565b6000806000806000600160008054905061287a9190612ea0565b8154811061288b5761288a6130bb565b5b9060005260206000200154925060016128a3846111eb565b6128ad9190612d8b565b905082600190049150710fffffffff000000000000000000000000001982169150710fffffffff00000000000000000000000000606860ff16829060020a02168217915081600102600060016000805490506129099190612ea0565b8154811061291a576129196130bb565b5b90600052602060002001819055506001935050505090565b6000813590506129418161317b565b92915050565b60008135905061295681613192565b92915050565b60008135905061296b816131a9565b92915050565b600081519050612980816131c0565b92915050565b600081359050612995816131d7565b92915050565b6000602082840312156129b1576129b06130ea565b5b60006129bf84828501612932565b91505092915050565b6000806000606084860312156129e1576129e06130ea565b5b60006129ef86828701612932565b9350506020612a0086828701612932565b9250506040612a1186828701612986565b9150509250925092565b60008060408385031215612a3257612a316130ea565b5b6000612a4085828601612932565b9250506020612a5185828601612986565b9150509250929050565b600060208284031215612a7157612a706130ea565b5b6000612a7f84828501612947565b91505092915050565b600060208284031215612a9e57612a9d6130ea565b5b6000612aac8482850161295c565b91505092915050565b600060208284031215612acb57612aca6130ea565b5b6000612ad984828501612971565b91505092915050565b600060208284031215612af857612af76130ea565b5b6000612b0684828501612986565b91505092915050565b60008060408385031215612b2657612b256130ea565b5b6000612b3485828601612986565b9250506020612b4585828601612986565b9150509250929050565b612b5881612ed4565b82525050565b612b6781612ee6565b82525050565b612b7681612ef2565b82525050565b6000612b8782612d6f565b612b918185612d7a565b9350612ba1818560208601612f80565b612baa816130ef565b840191505092915050565b6000612bc2601183612d7a565b9150612bcd82613100565b602082019050919050565b6000612be5600d83612d7a565b9150612bf082613129565b602082019050919050565b6000612c08600d83612d7a565b9150612c1382613152565b602082019050919050565b612c2781612f28565b82525050565b612c3681612f6e565b82525050565b612c4581612f64565b82525050565b6000602082019050612c606000830184612b4f565b92915050565b6000602082019050612c7b6000830184612b5e565b92915050565b6000602082019050612c966000830184612b6d565b92915050565b60006020820190508181036000830152612cb68184612b7c565b905092915050565b60006020820190508181036000830152612cd781612bb5565b9050919050565b60006020820190508181036000830152612cf781612bd8565b9050919050565b60006020820190508181036000830152612d1781612bfb565b9050919050565b6000602082019050612d336000830184612c1e565b92915050565b6000602082019050612d4e6000830184612c2d565b92915050565b6000602082019050612d696000830184612c3c565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612d9682612f64565b9150612da183612f64565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612dd657612dd561302e565b5b828201905092915050565b6000612dec82612f64565b9150612df783612f64565b925082612e0757612e0661305d565b5b828204905092915050565b6000612e1d82612f64565b9150612e2883612f64565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e6157612e6061302e565b5b828202905092915050565b6000612e7782612f28565b9150612e8283612f28565b925082821015612e9557612e9461302e565b5b828203905092915050565b6000612eab82612f64565b9150612eb683612f64565b925082821015612ec957612ec861302e565b5b828203905092915050565b6000612edf82612f44565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f7982612f28565b9050919050565b60005b83811015612f9e578082015181840152602081019050612f83565b83811115612fad576000848401525b50505050565b60006002820490506001821680612fcb57607f821691505b60208210811415612fdf57612fde61308c565b5b50919050565b6000612ff082612f64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130235761302261302e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552525f4e554d50415254535f5a45524f000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b7f4552525f574f554c445752415000000000000000000000000000000000000000600082015250565b61318481612ed4565b811461318f57600080fd5b50565b61319b81612ef2565b81146131a657600080fd5b50565b6131b281612efc565b81146131bd57600080fd5b50565b6131c981612f28565b81146131d457600080fd5b50565b6131e081612f64565b81146131eb57600080fd5b5056fea264697066735822122080827cc6f04c69ccdcb44890f252e04ca327e092e253bb91e0be8303b52daf7564736f6c63430008060033 +\ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenMultiNocap.json b/python/erc20_demurrage_token/data/DemurrageTokenMultiNocap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_taxLevelMinute","type":"uint256"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"accountPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"applyRedistributionOnAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurragePeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numParts","type":"uint256"},{"internalType":"uint256","name":"_sumWhole","type":"uint256"}],"name":"remainder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionParticipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_taxLevelMinute","type":"uint256"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"accountPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"applyRedistributionOnAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurragePeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numParts","type":"uint256"},{"internalType":"uint256","name":"_sumWhole","type":"uint256"}],"name":"remainder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionParticipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin @@ -1 +1 @@ -61010060405264e8d4a510006a52b7d2dcc80cd2e400000062000023919062000785565b6080908152503480156200003657600080fd5b50604051620034b7380380620034b783398181016040528101906200005c9190620004af565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600690805190602001906200012f92919062000331565b5085600790805190602001906200014892919062000331565b508460ff166008819055504260038190555060035460a08181525050603c8362000173919062000785565b60c081815250506b204fce5e3e25026110000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836fffffffffffffffffffffffffffffffff1660e0818152505060006200022b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002c4640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600a8190555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a620002b0919062000648565b600b81905550505050505050505062000a02565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200033f9062000883565b90600052602060002090601f016020900481019282620003635760008555620003af565b82601f106200037e57805160ff1916838001178555620003af565b82800160010185558215620003af579182015b82811115620003ae57825182559160200191906001019062000391565b5b509050620003be9190620003c2565b5090565b5b80821115620003dd576000816000905550600101620003c3565b5090565b6000620003f8620003f284620005b7565b6200058e565b9050828152602081018484840111156200041157600080fd5b6200041e8482856200084d565b509392505050565b60008151905062000437816200099a565b92915050565b600082601f8301126200044f57600080fd5b815162000461848260208601620003e1565b91505092915050565b6000815190506200047b81620009b4565b92915050565b6000815190506200049281620009ce565b92915050565b600081519050620004a981620009e8565b92915050565b600080600080600080600060e0888a031215620004cb57600080fd5b600088015167ffffffffffffffff811115620004e657600080fd5b620004f48a828b016200043d565b975050602088015167ffffffffffffffff8111156200051257600080fd5b620005208a828b016200043d565b9650506040620005338a828b0162000498565b9550506060620005468a828b016200046a565b9450506080620005598a828b0162000481565b93505060a06200056c8a828b0162000426565b92505060c06200057f8a828b0162000481565b91505092959891949750929550565b60006200059a620005ad565b9050620005a88282620008b9565b919050565b6000604051905090565b600067ffffffffffffffff821115620005d557620005d46200094d565b5b620005e0826200097c565b9050602081019050919050565b6000808291508390505b60018511156200063f57808604811115620006175762000616620008ef565b5b6001851615620006275780820291505b808102905062000637856200098d565b9450620005f7565b94509492505050565b6000620006558262000836565b9150620006628362000836565b9250620006917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000699565b905092915050565b600082620006ab57600190506200077e565b81620006bb57600090506200077e565b8160018114620006d45760028114620006df5762000715565b60019150506200077e565b60ff841115620006f457620006f3620008ef565b5b8360020a9150848211156200070e576200070d620008ef565b5b506200077e565b5060208310610133831016604e8410600b84101617156200074f5782820a905083811115620007495762000748620008ef565b5b6200077e565b6200075e8484846001620005ed565b92509050818404811115620007785762000777620008ef565b5b81810290505b9392505050565b6000620007928262000836565b91506200079f8362000836565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007db57620007da620008ef565b5b828202905092915050565b6000620007f38262000816565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200086d57808201518184015260208101905062000850565b838111156200087d576000848401525b50505050565b600060028204905060018216806200089c57607f821691505b60208210811415620008b357620008b26200091e565b5b50919050565b620008c4826200097c565b810181811067ffffffffffffffff82111715620008e657620008e56200094d565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b620009a581620007e6565b8114620009b157600080fd5b50565b620009bf81620007fa565b8114620009cb57600080fd5b50565b620009d98162000836565b8114620009e557600080fd5b50565b620009f38162000840565b8114620009ff57600080fd5b50565b60805160a05160c05160e051612a4362000a7460003960008181610c4101528181610e910152611a9a01526000818161113301528181611a490152611b3901526000818161115f01528181611b5a0152611b9f0152600081816111d20152818161120a01526112820152612a436000f3fe608060405234801561001057600080fd5b5060043610610265576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e11610158578063983b2d56116100d5578063e54d63f711610099578063e54d63f7146107ec578063e80952951461081c578063eda4e6d61461083a578063f2fde38b14610858578063f83da35d1461088857610265565b8063983b2d561461070e5780639da7d8ba1461073e578063a9059cbb1461076e578063b470aade1461079e578063e3ab207a146107bc57610265565b80638d34855a1161011c5780638d34855a146106665780638da5cb5b146106965780638f1df6bc146106b45780638f770ad0146106d257806395d89b41146106f057610265565b80636a2d094e1461059a5780636ffa8a05146105ca57806370a08231146105fa578063731f237c1461062a57806379ba50971461064857610265565b8063313ce567116101e657806351b4541c116101aa57806351b4541c146104ce578063573cc507146104fe57806358b2833b1461051c5780636721d4ef1461053a5780636787a9be1461056a57610265565b8063313ce567146103f057806340452d911461040e578063449a52f81461043e57806347a505171461046e5780634abfbba21461049e57610265565b80631989c6a81161022d5780631989c6a814610324578063229ba1971461034257806323b872dd146103605780633092afd51461039057806331333487146103c057610265565b806301ffc9a71461026a57806306fdde031461029a578063095ea7b3146102b857806309f28f3c146102e857806318160ddd14610306575b600080fd5b610284600480360381019061027f9190612272565b6108b8565b60405161029191906124a3565b60405180910390f35b6102a2610a63565b6040516102af91906124d9565b60405180910390f35b6102d260048036038101906102cd919061220d565b610af1565b6040516102df91906124a3565b60405180910390f35b6102f0610c0b565b6040516102fd919061255b565b60405180910390f35b61030e610c2d565b60405161031b9190612591565b60405180910390f35b61032c610c33565b6040516103399190612591565b60405180910390f35b61034a610c3f565b6040516103579190612591565b60405180910390f35b61037a600480360381019061037591906121be565b610c63565b60405161038791906124a3565b60405180910390f35b6103aa60048036038101906103a59190612195565b610d83565b6040516103b791906124a3565b60405180910390f35b6103da60048036038101906103d591906122ed565b610e76565b6040516103e79190612591565b60405180910390f35b6103f8610f2a565b6040516104059190612591565b60405180910390f35b610428600480360381019061042391906122c4565b610f30565b60405161043591906124be565b60405180910390f35b6104586004803603810190610453919061220d565b610f54565b60405161046591906124a3565b60405180910390f35b61048860048036038101906104839190612195565b6110e6565b6040516104959190612591565b60405180910390f35b6104b860048036038101906104b391906122c4565b61112f565b6040516104c59190612591565b60405180910390f35b6104e860048036038101906104e391906122c4565b61118f565b6040516104f59190612591565b60405180910390f35b6105066111b0565b6040516105139190612591565b60405180910390f35b6105246111b6565b6040516105319190612591565b60405180910390f35b610554600480360381019061054f91906122ed565b6111bc565b6040516105619190612591565b60405180910390f35b610584600480360381019061057f91906122c4565b61123d565b6040516105919190612591565b60405180910390f35b6105b460048036038101906105af91906122c4565b6112bd565b6040516105c19190612591565b60405180910390f35b6105e460048036038101906105df9190612249565b6112de565b6040516105f19190612591565b60405180910390f35b610614600480360381019061060f9190612195565b611318565b6040516106219190612591565b60405180910390f35b6106326113d0565b60405161063f91906124a3565b60405180910390f35b6106506114ef565b60405161065d91906124a3565b60405180910390f35b610680600480360381019061067b9190612249565b611696565b60405161068d9190612591565b60405180910390f35b61069e6116c4565b6040516106ab9190612488565b60405180910390f35b6106bc6116ea565b6040516106c991906124a3565b60405180910390f35b6106da611834565b6040516106e79190612591565b60405180910390f35b6106f861183a565b60405161070591906124d9565b60405180910390f35b61072860048036038101906107239190612195565b6118c8565b60405161073591906124a3565b60405180910390f35b61075860048036038101906107539190612249565b611985565b6040516107659190612591565b60405180910390f35b6107886004803603810190610783919061220d565b6119b1565b60405161079591906124a3565b60405180910390f35b6107a6611a47565b6040516107b39190612591565b60405180910390f35b6107d660048036038101906107d19190612249565b611a6b565b6040516107e39190612591565b60405180910390f35b610806600480360381019061080191906122ed565b611a7f565b6040516108139190612591565b60405180910390f35b610824611b33565b604051610831919061255b565b60405180910390f35b610842611b9d565b60405161084f9190612591565b60405180910390f35b610872600480360381019061086d9190612195565b611bc1565b60405161087f91906124a3565b60405180910390f35b6108a2600480360381019061089d9190612329565b611c63565b6040516108af91906124be565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561090d5760019050610a5e565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109605760019050610a5e565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109b35760019050610a5e565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a065760019050610a5e565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a595760019050610a5e565b600090505b919050565b60068054610a7090612806565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9c90612806565b8015610ae95780601f10610abe57610100808354040283529160200191610ae9565b820191906000526020600020905b815481529060010190602001808311610acc57829003601f168201915b505050505081565b600080610afc6116ea565b50610b068361123d565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9491906125c8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610bf89190612591565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610c706116ea565b50610c7a8461123d565b915081600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d0557600080fd5b610d10868684611cd0565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d6f9190612591565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e0c57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610e1557600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610eba919061261e565b905060005b84811015610f035764e8d4a510008284610ed99190612699565b610ee3919061261e565b83610eee91906126f3565b92508080610efb90612838565b915050610ebf565b5064e8d4a510008583610f169190612699565b610f20919061261e565b9250505092915050565b60085481565b60008181548110610f4057600080fd5b906000526020600020016000915090505481565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda9061251b565b60405180910390fd5b600a5460095484610ff491906125c8565b1115611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c906124fb565b60405180910390fd5b61103d6116ea565b506110478361123d565b9050826009600082825461105b91906125c8565b9250508190555061106c8482611cf5565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516110ca9190612591565b60405180910390a36110da611dba565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f00000000000000000000000000000000000000000000000000000000000000008261115d9190612699565b7f000000000000000000000000000000000000000000000000000000000000000061118891906125c8565b9050919050565b6000603c824261119f91906126f3565b6111a9919061261e565b9050919050565b600b5481565b60035481565b6000806402540be400836111d09190612699565b7f00000000000000000000000000000000000000000000000000000000000000006111fb91906126f3565b846112069190612699565b90507f000000000000000000000000000000000000000000000000000000000000000081611234919061261e565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff1661126e919061264f565b6fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000836112ac9190612699565b6112b6919061261e565b9050919050565b6000603c82426112cd91906126f3565b6112d7919061261e565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600080611327856110e6565b925061133460035461118f565b90506113806402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff16611368919061264f565b6fffffffffffffffffffffffffffffffff1682610e76565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e40000006113b09190612699565b82846113bc9190612699565b6113c6919061261e565b9350505050919050565b60008060006113e060035461118f565b915060008214156113f6576000925050506114ec565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690506114338183610e76565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c826114789190612699565b60035461148591906125c8565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516114dd9190612576565b60405180910390a46001925050505b90565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461154c57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b60008060006116a484611985565b91506116af846112de565b90506116bb82826111bc565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060008060006117006113d0565b50611709611ea8565b9750600060010288141561172857600098505050505050505050611831565b61173188611a6b565b955060018661174091906125c8565b905061174b8661112f565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169450611789826112bd565b925060008311156117a55761179e8584611a7f565b93506117a9565b8493505b6117b860008560095484611c63565b965060008790806001815401808255809150506001900390600052602060002001600090919091909150556117ec87611fd8565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161181c9190612591565b60405180910390a16001985050505050505050505b90565b600a5481565b6007805461184790612806565b80601f016020809104026020016040519081016040528092919081815260200182805461187390612806565b80156118c05780601f10611895576101008083540402835291602001916118c0565b820191906000526020600020905b8154815290600101906020018083116118a357829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461192457600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b60008060006119be6116ea565b506119c88461123d565b91506119d5338684611cd0565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a349190612591565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611ac3919061261e565b905060005b84811015611b0c5764e8d4a510008284611ae29190612699565b611aec919061261e565b83611af791906125c8565b92508080611b0490612838565b915050611ac8565b5064e8d4a510008583611b1f9190612699565b611b29919061261e565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611b8491906126f3565b611b8e919061261e565b611b9891906125c8565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c1d57600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611cdd8584612024565b50611ce88484611cf5565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611d525760009350505050611db4565b611d5b866110e6565b92508483611d6991906125c8565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611dd891906126f3565b81548110611e0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611e5a91906126f3565b81548110611e91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555060019250505090565b6000806000806001600080549050611ec091906126f3565b81548110611ef7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611f6657600080fd5b505afa158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9e919061229b565b6fffffffffffffffffffffffffffffffff169050611fbb82611a6b565b8111611fcf57600060010292505050611fd5565b81925050505b90565b600080611fe483611696565b905061201a600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120158361123d565b611cf5565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008514156120815760009350505050612126565b61208a866110e6565b9250848310156120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c69061253b565b60405180910390fd5b84836120db91906126f3565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008135905061213b8161299a565b92915050565b600081359050612150816129b1565b92915050565b600081359050612165816129c8565b92915050565b60008151905061217a816129df565b92915050565b60008135905061218f816129f6565b92915050565b6000602082840312156121a757600080fd5b60006121b58482850161212c565b91505092915050565b6000806000606084860312156121d357600080fd5b60006121e18682870161212c565b93505060206121f28682870161212c565b925050604061220386828701612180565b9150509250925092565b6000806040838503121561222057600080fd5b600061222e8582860161212c565b925050602061223f85828601612180565b9150509250929050565b60006020828403121561225b57600080fd5b600061226984828501612141565b91505092915050565b60006020828403121561228457600080fd5b600061229284828501612156565b91505092915050565b6000602082840312156122ad57600080fd5b60006122bb8482850161216b565b91505092915050565b6000602082840312156122d657600080fd5b60006122e484828501612180565b91505092915050565b6000806040838503121561230057600080fd5b600061230e85828601612180565b925050602061231f85828601612180565b9150509250929050565b6000806000806080858703121561233f57600080fd5b600061234d87828801612180565b945050602061235e87828801612180565b935050604061236f87828801612180565b925050606061238087828801612180565b91505092959194509250565b61239581612727565b82525050565b6123a481612739565b82525050565b6123b381612745565b82525050565b60006123c4826125ac565b6123ce81856125b7565b93506123de8185602086016127d3565b6123e78161290e565b840191505092915050565b60006123ff6007836125b7565b915061240a8261291f565b602082019050919050565b6000612422600a836125b7565b915061242d82612948565b602082019050919050565b6000612445600d836125b7565b915061245082612971565b602082019050919050565b6124648161277b565b82525050565b612473816127c1565b82525050565b612482816127b7565b82525050565b600060208201905061249d600083018461238c565b92915050565b60006020820190506124b8600083018461239b565b92915050565b60006020820190506124d360008301846123aa565b92915050565b600060208201905081810360008301526124f381846123b9565b905092915050565b60006020820190508181036000830152612514816123f2565b9050919050565b6000602082019050818103600083015261253481612415565b9050919050565b6000602082019050818103600083015261255481612438565b9050919050565b6000602082019050612570600083018461245b565b92915050565b600060208201905061258b600083018461246a565b92915050565b60006020820190506125a66000830184612479565b92915050565b600081519050919050565b600082825260208201905092915050565b60006125d3826127b7565b91506125de836127b7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561261357612612612881565b5b828201905092915050565b6000612629826127b7565b9150612634836127b7565b925082612644576126436128b0565b5b828204905092915050565b600061265a8261277b565b91506126658361277b565b9250816fffffffffffffffffffffffffffffffff048311821515161561268e5761268d612881565b5b828202905092915050565b60006126a4826127b7565b91506126af836127b7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126e8576126e7612881565b5b828202905092915050565b60006126fe826127b7565b9150612709836127b7565b92508282101561271c5761271b612881565b5b828203905092915050565b600061273282612797565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006127cc8261277b565b9050919050565b60005b838110156127f15780820151818401526020810190506127d6565b83811115612800576000848401525b50505050565b6000600282049050600182168061281e57607f821691505b60208210811415612832576128316128df565b5b50919050565b6000612843826127b7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561287657612875612881565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f43415000000000000000000000000000000000000000000000000000600082015250565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6129a381612727565b81146129ae57600080fd5b50565b6129ba81612745565b81146129c557600080fd5b50565b6129d18161274f565b81146129dc57600080fd5b50565b6129e88161277b565b81146129f357600080fd5b50565b6129ff816127b7565b8114612a0a57600080fd5b5056fea2646970667358221220f1f61e9e705067d67f6a75c33d8917eaf632c4e22aed7b45d7d93381f2dafc1d64736f6c63430008040033 -\ No newline at end of file +61010060405264e8d4a510006a52b7d2dcc80cd2e4000000620000239190620007a3565b6080908152503480156200003657600080fd5b50604051620035233803806200352383398181016040528101906200005c9190620004bb565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600690805190602001906200012f92919062000331565b5085600790805190602001906200014892919062000331565b508460ff166008819055504260038190555060035460a08181525050603c83620001739190620007a3565b60c081815250506b204fce5e3e25026110000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836fffffffffffffffffffffffffffffffff1660e0818152505060006200022b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002c4640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600a8190555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a620002b0919062000666565b600b81905550505050505050505062000a34565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200033f90620008a1565b90600052602060002090601f016020900481019282620003635760008555620003af565b82601f106200037e57805160ff1916838001178555620003af565b82800160010185558215620003af579182015b82811115620003ae57825182559160200191906001019062000391565b5b509050620003be9190620003c2565b5090565b5b80821115620003dd576000816000905550600101620003c3565b5090565b6000620003f8620003f284620005d5565b620005ac565b9050828152602081018484840111156200041757620004166200099f565b5b620004248482856200086b565b509392505050565b6000815190506200043d81620009cc565b92915050565b600082601f8301126200045b576200045a6200099a565b5b81516200046d848260208601620003e1565b91505092915050565b6000815190506200048781620009e6565b92915050565b6000815190506200049e8162000a00565b92915050565b600081519050620004b58162000a1a565b92915050565b600080600080600080600060e0888a031215620004dd57620004dc620009a9565b5b600088015167ffffffffffffffff811115620004fe57620004fd620009a4565b5b6200050c8a828b0162000443565b975050602088015167ffffffffffffffff81111562000530576200052f620009a4565b5b6200053e8a828b0162000443565b9650506040620005518a828b01620004a4565b9550506060620005648a828b0162000476565b9450506080620005778a828b016200048d565b93505060a06200058a8a828b016200042c565b92505060c06200059d8a828b016200048d565b91505092959891949750929550565b6000620005b8620005cb565b9050620005c68282620008d7565b919050565b6000604051905090565b600067ffffffffffffffff821115620005f357620005f26200096b565b5b620005fe82620009ae565b9050602081019050919050565b6000808291508390505b60018511156200065d578086048111156200063557620006346200090d565b5b6001851615620006455780820291505b80810290506200065585620009bf565b945062000615565b94509492505050565b6000620006738262000854565b9150620006808362000854565b9250620006af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006b7565b905092915050565b600082620006c957600190506200079c565b81620006d957600090506200079c565b8160018114620006f25760028114620006fd5762000733565b60019150506200079c565b60ff8411156200071257620007116200090d565b5b8360020a9150848211156200072c576200072b6200090d565b5b506200079c565b5060208310610133831016604e8410600b84101617156200076d5782820a9050838111156200076757620007666200090d565b5b6200079c565b6200077c84848460016200060b565b925090508184048111156200079657620007956200090d565b5b81810290505b9392505050565b6000620007b08262000854565b9150620007bd8362000854565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007f957620007f86200090d565b5b828202905092915050565b6000620008118262000834565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200088b5780820151818401526020810190506200086e565b838111156200089b576000848401525b50505050565b60006002820490506001821680620008ba57607f821691505b60208210811415620008d157620008d06200093c565b5b50919050565b620008e282620009ae565b810181811067ffffffffffffffff821117156200090457620009036200096b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6000600282049050919050565b620009d78162000804565b8114620009e357600080fd5b50565b620009f18162000818565b8114620009fd57600080fd5b50565b62000a0b8162000854565b811462000a1757600080fd5b50565b62000a25816200085e565b811462000a3157600080fd5b50565b60805160a05160c05160e051612a7662000aad60003960008181610c6a01528181610eba0152611ae701526000818161115c01528181611a960152611b8601526000818161118801528181611ba70152611bec0152600081816111fb01528181611233015281816112ab0152611a720152612a766000f3fe608060405234801561001057600080fd5b5060043610610270576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e11610163578063983b2d56116100e0578063e3ab207a116100a4578063e3ab207a146107e5578063e54d63f714610815578063e809529514610845578063eda4e6d614610863578063f2fde38b14610881578063f83da35d146108b157610270565b8063983b2d56146107195780639da7d8ba14610749578063a9059cbb14610779578063ab28cea0146107a9578063b470aade146107c757610270565b80638d34855a116101275780638d34855a146106715780638da5cb5b146106a15780638f1df6bc146106bf5780638f770ad0146106dd57806395d89b41146106fb57610270565b80636a2d094e146105a55780636ffa8a05146105d557806370a0823114610605578063731f237c1461063557806379ba50971461065357610270565b8063313ce567116101f157806351b4541c116101b557806351b4541c146104d9578063573cc5071461050957806358b2833b146105275780636721d4ef146105455780636787a9be1461057557610270565b8063313ce567146103fb57806340452d9114610419578063449a52f81461044957806347a50517146104795780634abfbba2146104a957610270565b80631989c6a8116102385780631989c6a81461032f578063229ba1971461034d57806323b872dd1461036b5780633092afd51461039b57806331333487146103cb57610270565b806301ffc9a71461027557806306fdde03146102a5578063095ea7b3146102c357806309f28f3c146102f357806318160ddd14610311575b600080fd5b61028f600480360381019061028a919061225d565b6108e1565b60405161029c91906124a2565b60405180910390f35b6102ad610a8c565b6040516102ba91906124d8565b60405180910390f35b6102dd60048036038101906102d891906121f0565b610b1a565b6040516102ea91906124a2565b60405180910390f35b6102fb610c34565b604051610308919061255a565b60405180910390f35b610319610c56565b6040516103269190612590565b60405180910390f35b610337610c5c565b6040516103449190612590565b60405180910390f35b610355610c68565b6040516103629190612590565b60405180910390f35b6103856004803603810190610380919061219d565b610c8c565b60405161039291906124a2565b60405180910390f35b6103b560048036038101906103b09190612170565b610dac565b6040516103c291906124a2565b60405180910390f35b6103e560048036038101906103e091906122e4565b610e9f565b6040516103f29190612590565b60405180910390f35b610403610f53565b6040516104109190612590565b60405180910390f35b610433600480360381019061042e91906122b7565b610f59565b60405161044091906124bd565b60405180910390f35b610463600480360381019061045e91906121f0565b610f7d565b60405161047091906124a2565b60405180910390f35b610493600480360381019061048e9190612170565b61110f565b6040516104a09190612590565b60405180910390f35b6104c360048036038101906104be91906122b7565b611158565b6040516104d09190612590565b60405180910390f35b6104f360048036038101906104ee91906122b7565b6111b8565b6040516105009190612590565b60405180910390f35b6105116111d9565b60405161051e9190612590565b60405180910390f35b61052f6111df565b60405161053c9190612590565b60405180910390f35b61055f600480360381019061055a91906122e4565b6111e5565b60405161056c9190612590565b60405180910390f35b61058f600480360381019061058a91906122b7565b611266565b60405161059c9190612590565b60405180910390f35b6105bf60048036038101906105ba91906122b7565b6112e6565b6040516105cc9190612590565b60405180910390f35b6105ef60048036038101906105ea9190612230565b611307565b6040516105fc9190612590565b60405180910390f35b61061f600480360381019061061a9190612170565b611341565b60405161062c9190612590565b60405180910390f35b61063d6113f9565b60405161064a91906124a2565b60405180910390f35b61065b611518565b60405161066891906124a2565b60405180910390f35b61068b60048036038101906106869190612230565b6116bf565b6040516106989190612590565b60405180910390f35b6106a96116ed565b6040516106b69190612487565b60405180910390f35b6106c7611713565b6040516106d491906124a2565b60405180910390f35b6106e561185d565b6040516106f29190612590565b60405180910390f35b610703611863565b60405161071091906124d8565b60405180910390f35b610733600480360381019061072e9190612170565b6118f1565b60405161074091906124a2565b60405180910390f35b610763600480360381019061075e9190612230565b6119ae565b6040516107709190612590565b60405180910390f35b610793600480360381019061078e91906121f0565b6119da565b6040516107a091906124a2565b60405180910390f35b6107b1611a70565b6040516107be9190612590565b60405180910390f35b6107cf611a94565b6040516107dc9190612590565b60405180910390f35b6107ff60048036038101906107fa9190612230565b611ab8565b60405161080c9190612590565b60405180910390f35b61082f600480360381019061082a91906122e4565b611acc565b60405161083c9190612590565b60405180910390f35b61084d611b80565b60405161085a919061255a565b60405180910390f35b61086b611bea565b6040516108789190612590565b60405180910390f35b61089b60048036038101906108969190612170565b611c0e565b6040516108a891906124a2565b60405180910390f35b6108cb60048036038101906108c69190612324565b611cb0565b6040516108d891906124bd565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109365760019050610a87565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109895760019050610a87565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109dc5760019050610a87565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a2f5760019050610a87565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a825760019050610a87565b600090505b919050565b60068054610a9990612805565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac590612805565b8015610b125780601f10610ae757610100808354040283529160200191610b12565b820191906000526020600020905b815481529060010190602001808311610af557829003601f168201915b505050505081565b600080610b25611713565b50610b2f83611266565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbd91906125c7565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c219190612590565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610c99611713565b50610ca384611266565b915081600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d2e57600080fd5b610d39868684611d1d565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d989190612590565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e3557503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610e3e57600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610ee3919061261d565b905060005b84811015610f2c5764e8d4a510008284610f029190612698565b610f0c919061261d565b83610f1791906126f2565b92508080610f2490612837565b915050610ee8565b5064e8d4a510008583610f3f9190612698565b610f49919061261d565b9250505092915050565b60085481565b60008181548110610f6957600080fd5b906000526020600020016000915090505481565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661100c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110039061251a565b60405180910390fd5b600a546009548461101d91906125c7565b111561105e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611055906124fa565b60405180910390fd5b611066611713565b5061107083611266565b9050826009600082825461108491906125c7565b925050819055506110958482611d42565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516110f39190612590565b60405180910390a3611103611e07565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826111869190612698565b7f00000000000000000000000000000000000000000000000000000000000000006111b191906125c7565b9050919050565b6000603c82426111c891906126f2565b6111d2919061261d565b9050919050565b600b5481565b60035481565b6000806402540be400836111f99190612698565b7f000000000000000000000000000000000000000000000000000000000000000061122491906126f2565b8461122f9190612698565b90507f00000000000000000000000000000000000000000000000000000000000000008161125d919061261d565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff16611297919061264e565b6fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000836112d59190612698565b6112df919061261d565b9050919050565b6000603c82426112f691906126f2565b611300919061261d565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806113508561110f565b925061135d6003546111b8565b90506113a96402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff16611391919061264e565b6fffffffffffffffffffffffffffffffff1682610e9f565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e40000006113d99190612698565b82846113e59190612698565b6113ef919061261d565b9350505050919050565b60008060006114096003546111b8565b9150600082141561141f57600092505050611515565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905061145c8183610e9f565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c826114a19190612698565b6003546114ae91906125c7565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516115069190612575565b60405180910390a46001925050505b90565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461157557600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b60008060006116cd846119ae565b91506116d884611307565b90506116e482826111e5565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060008060006117296113f9565b50611732611ea9565b975060006001028814156117515760009850505050505050505061185a565b61175a88611ab8565b955060018661176991906125c7565b905061177486611158565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506117b2826112e6565b925060008311156117ce576117c78584611acc565b93506117d2565b8493505b6117e160008560095484611cb0565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561181587611fb3565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516118459190612590565b60405180910390a16001985050505050505050505b90565b600a5481565b6007805461187090612805565b80601f016020809104026020016040519081016040528092919081815260200182805461189c90612805565b80156118e95780601f106118be576101008083540402835291602001916118e9565b820191906000526020600020905b8154815290600101906020018083116118cc57829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461194d57600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b60008060006119e7611713565b506119f184611266565b91506119fe338684611d1d565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a5d9190612590565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611b10919061261d565b905060005b84811015611b595764e8d4a510008284611b2f9190612698565b611b39919061261d565b83611b4491906125c7565b92508080611b5190612837565b915050611b15565b5064e8d4a510008583611b6c9190612698565b611b76919061261d565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611bd191906126f2565b611bdb919061261d565b611be591906125c7565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6a57600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611d2a8584611fff565b50611d358484611d42565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611d9f5760009350505050611e01565b611da88661110f565b92508483611db691906125c7565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611e2591906126f2565b81548110611e3657611e3561290d565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611e8191906126f2565b81548110611e9257611e9161290d565b5b906000526020600020018190555060019250505090565b6000806000806001600080549050611ec191906126f2565b81548110611ed257611ed161290d565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611f4157600080fd5b505afa158015611f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f79919061228a565b6fffffffffffffffffffffffffffffffff169050611f9682611ab8565b8111611faa57600060010292505050611fb0565b81925050505b90565b600080611fbf836116bf565b9050611ff5600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ff083611266565b611d42565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600085141561205c5760009350505050612101565b6120658661110f565b9250848310156120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a19061253a565b60405180910390fd5b84836120b691906126f2565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600081359050612116816129cd565b92915050565b60008135905061212b816129e4565b92915050565b600081359050612140816129fb565b92915050565b60008151905061215581612a12565b92915050565b60008135905061216a81612a29565b92915050565b6000602082840312156121865761218561293c565b5b600061219484828501612107565b91505092915050565b6000806000606084860312156121b6576121b561293c565b5b60006121c486828701612107565b93505060206121d586828701612107565b92505060406121e68682870161215b565b9150509250925092565b600080604083850312156122075761220661293c565b5b600061221585828601612107565b92505060206122268582860161215b565b9150509250929050565b6000602082840312156122465761224561293c565b5b60006122548482850161211c565b91505092915050565b6000602082840312156122735761227261293c565b5b600061228184828501612131565b91505092915050565b6000602082840312156122a05761229f61293c565b5b60006122ae84828501612146565b91505092915050565b6000602082840312156122cd576122cc61293c565b5b60006122db8482850161215b565b91505092915050565b600080604083850312156122fb576122fa61293c565b5b60006123098582860161215b565b925050602061231a8582860161215b565b9150509250929050565b6000806000806080858703121561233e5761233d61293c565b5b600061234c8782880161215b565b945050602061235d8782880161215b565b935050604061236e8782880161215b565b925050606061237f8782880161215b565b91505092959194509250565b61239481612726565b82525050565b6123a381612738565b82525050565b6123b281612744565b82525050565b60006123c3826125ab565b6123cd81856125b6565b93506123dd8185602086016127d2565b6123e681612941565b840191505092915050565b60006123fe6007836125b6565b915061240982612952565b602082019050919050565b6000612421600a836125b6565b915061242c8261297b565b602082019050919050565b6000612444600d836125b6565b915061244f826129a4565b602082019050919050565b6124638161277a565b82525050565b612472816127c0565b82525050565b612481816127b6565b82525050565b600060208201905061249c600083018461238b565b92915050565b60006020820190506124b7600083018461239a565b92915050565b60006020820190506124d260008301846123a9565b92915050565b600060208201905081810360008301526124f281846123b8565b905092915050565b60006020820190508181036000830152612513816123f1565b9050919050565b6000602082019050818103600083015261253381612414565b9050919050565b6000602082019050818103600083015261255381612437565b9050919050565b600060208201905061256f600083018461245a565b92915050565b600060208201905061258a6000830184612469565b92915050565b60006020820190506125a56000830184612478565b92915050565b600081519050919050565b600082825260208201905092915050565b60006125d2826127b6565b91506125dd836127b6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561261257612611612880565b5b828201905092915050565b6000612628826127b6565b9150612633836127b6565b925082612643576126426128af565b5b828204905092915050565b60006126598261277a565b91506126648361277a565b9250816fffffffffffffffffffffffffffffffff048311821515161561268d5761268c612880565b5b828202905092915050565b60006126a3826127b6565b91506126ae836127b6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126e7576126e6612880565b5b828202905092915050565b60006126fd826127b6565b9150612708836127b6565b92508282101561271b5761271a612880565b5b828203905092915050565b600061273182612796565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006127cb8261277a565b9050919050565b60005b838110156127f05780820151818401526020810190506127d5565b838111156127ff576000848401525b50505050565b6000600282049050600182168061281d57607f821691505b60208210811415612831576128306128de565b5b50919050565b6000612842826127b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561287557612874612880565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552525f43415000000000000000000000000000000000000000000000000000600082015250565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6129d681612726565b81146129e157600080fd5b50565b6129ed81612744565b81146129f857600080fd5b50565b612a048161274e565b8114612a0f57600080fd5b50565b612a1b8161277a565b8114612a2657600080fd5b50565b612a32816127b6565b8114612a3d57600080fd5b5056fea2646970667358221220a05805516603df124489787db617c41878e13744c9a77eccffdff95f9456f41964736f6c63430008060033 +\ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.json b/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"},{"internalType":"uint256","name":"_supplyCap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"},{"internalType":"uint256","name":"_supplyCap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin @@ -1 +1 @@ -61010060405264e8d4a510006a52b7d2dcc80cd2e40000006200002391906200076c565b6080908152503480156200003657600080fd5b506040516200333b3803806200333b83398181016040528101906200005c9190620004ad565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600690805190602001906200012f9291906200032f565b508460079080519060200190620001489291906200032f565b508360ff166008819055504260038190555060035460a08181525050603c826200017391906200076c565b60c081815250506f4b3b4ca85a86c47a098a224000000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550826fffffffffffffffffffffffffffffffff1660e0818152505060006200022f6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002c0640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002ad91906200062f565b600a8190555050505050505050620009e9565b6000807cffffffffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200033d906200086a565b90600052602060002090601f016020900481019282620003615760008555620003ad565b82601f106200037c57805160ff1916838001178555620003ad565b82800160010185558215620003ad579182015b82811115620003ac5782518255916020019190600101906200038f565b5b509050620003bc9190620003c0565b5090565b5b80821115620003db576000816000905550600101620003c1565b5090565b6000620003f6620003f0846200059e565b62000575565b9050828152602081018484840111156200040f57600080fd5b6200041c84828562000834565b509392505050565b600081519050620004358162000981565b92915050565b600082601f8301126200044d57600080fd5b81516200045f848260208601620003df565b91505092915050565b60008151905062000479816200099b565b92915050565b6000815190506200049081620009b5565b92915050565b600081519050620004a781620009cf565b92915050565b60008060008060008060c08789031215620004c757600080fd5b600087015167ffffffffffffffff811115620004e257600080fd5b620004f089828a016200043b565b965050602087015167ffffffffffffffff8111156200050e57600080fd5b6200051c89828a016200043b565b95505060406200052f89828a0162000496565b94505060606200054289828a0162000468565b93505060806200055589828a016200047f565b92505060a06200056889828a0162000424565b9150509295509295509295565b60006200058162000594565b90506200058f8282620008a0565b919050565b6000604051905090565b600067ffffffffffffffff821115620005bc57620005bb62000934565b5b620005c78262000963565b9050602081019050919050565b6000808291508390505b60018511156200062657808604811115620005fe57620005fd620008d6565b5b60018516156200060e5780820291505b80810290506200061e8562000974565b9450620005de565b94509492505050565b60006200063c826200081d565b915062000649836200081d565b9250620006787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000680565b905092915050565b60008262000692576001905062000765565b81620006a2576000905062000765565b8160018114620006bb5760028114620006c657620006fc565b600191505062000765565b60ff841115620006db57620006da620008d6565b5b8360020a915084821115620006f557620006f4620008d6565b5b5062000765565b5060208310610133831016604e8410600b8410161715620007365782820a90508381111562000730576200072f620008d6565b5b62000765565b620007458484846001620005d4565b925090508184048111156200075f576200075e620008d6565b5b81810290505b9392505050565b600062000779826200081d565b915062000786836200081d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007c257620007c1620008d6565b5b828202905092915050565b6000620007da82620007fd565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200085457808201518184015260208101905062000837565b8381111562000864576000848401525b50505050565b600060028204905060018216806200088357607f821691505b602082108114156200089a576200089962000905565b5b50919050565b620008ab8262000963565b810181811067ffffffffffffffff82111715620008cd57620008cc62000934565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6000600282049050919050565b6200098c81620007cd565b81146200099857600080fd5b50565b620009a681620007e1565b8114620009b257600080fd5b50565b620009c0816200081d565b8114620009cc57600080fd5b50565b620009da8162000827565b8114620009e657600080fd5b50565b60805160a05160c05160e0516128e062000a5b60003960008181610c1801528181610e6801526119eb0152600081816110b80152818161199a0152611a8a0152600081816110e401528181611aab0152611af00152600081816111470152818161117f01526111e701526128e06000f3fe608060405234801561001057600080fd5b506004361061025a576000357c0100000000000000000000000000000000000000000000000000000000900480636787a9be11610158578063983b2d56116100d5578063e54d63f711610099578063e54d63f7146107c3578063e8095295146107f3578063eda4e6d614610811578063f2fde38b1461082f578063f83da35d1461085f5761025a565b8063983b2d56146106e55780639da7d8ba14610715578063a9059cbb14610745578063b470aade14610775578063e3ab207a146107935761025a565b806379ba50971161011c57806379ba50971461063d5780638d34855a1461065b5780638da5cb5b1461068b5780638f1df6bc146106a957806395d89b41146106c75761025a565b80636787a9be1461055f5780636a2d094e1461058f5780636ffa8a05146105bf57806370a08231146105ef578063731f237c1461061f5761025a565b806331333487116101e65780634abfbba2116101aa5780634abfbba21461049357806351b4541c146104c3578063573cc507146104f357806358b2833b146105115780636721d4ef1461052f5761025a565b806331333487146103b5578063313ce567146103e557806340452d9114610403578063449a52f81461043357806347a50517146104635761025a565b806318160ddd1161022d57806318160ddd146102fb5780631989c6a814610319578063229ba1971461033757806323b872dd146103555780633092afd5146103855761025a565b806301ffc9a71461025f57806306fdde031461028f578063095ea7b3146102ad57806309f28f3c146102dd575b600080fd5b610279600480360381019061027491906121c5565b61088f565b60405161028691906123d3565b60405180910390f35b610297610a3a565b6040516102a49190612409565b60405180910390f35b6102c760048036038101906102c29190612160565b610ac8565b6040516102d491906123d3565b60405180910390f35b6102e5610be2565b6040516102f2919061246b565b60405180910390f35b610303610c04565b60405161031091906124a1565b60405180910390f35b610321610c0a565b60405161032e91906124a1565b60405180910390f35b61033f610c16565b60405161034c91906124a1565b60405180910390f35b61036f600480360381019061036a9190612111565b610c3a565b60405161037c91906123d3565b60405180910390f35b61039f600480360381019061039a91906120e8565b610d5a565b6040516103ac91906123d3565b60405180910390f35b6103cf60048036038101906103ca9190612240565b610e4d565b6040516103dc91906124a1565b60405180910390f35b6103ed610f01565b6040516103fa91906124a1565b60405180910390f35b61041d60048036038101906104189190612217565b610f07565b60405161042a91906123ee565b60405180910390f35b61044d60048036038101906104489190612160565b610f2b565b60405161045a91906123d3565b60405180910390f35b61047d600480360381019061047891906120e8565b61106b565b60405161048a91906124a1565b60405180910390f35b6104ad60048036038101906104a89190612217565b6110b4565b6040516104ba91906124a1565b60405180910390f35b6104dd60048036038101906104d89190612217565b611114565b6040516104ea91906124a1565b60405180910390f35b6104fb611135565b60405161050891906124a1565b60405180910390f35b61051961113b565b60405161052691906124a1565b60405180910390f35b61054960048036038101906105449190612240565b611141565b60405161055691906124a1565b60405180910390f35b61057960048036038101906105749190612217565b6111b2565b60405161058691906124a1565b60405180910390f35b6105a960048036038101906105a49190612217565b611222565b6040516105b691906124a1565b60405180910390f35b6105d960048036038101906105d4919061219c565b611243565b6040516105e691906124a1565b60405180910390f35b610609600480360381019061060491906120e8565b61127f565b60405161061691906124a1565b60405180910390f35b610627611327565b60405161063491906123d3565b60405180910390f35b610645611446565b60405161065291906123d3565b60405180910390f35b6106756004803603810190610670919061219c565b6115ed565b60405161068291906124a1565b60405180910390f35b61069361161b565b6040516106a091906123b8565b60405180910390f35b6106b1611641565b6040516106be91906123d3565b60405180910390f35b6106cf61178b565b6040516106dc9190612409565b60405180910390f35b6106ff60048036038101906106fa91906120e8565b611819565b60405161070c91906123d3565b60405180910390f35b61072f600480360381019061072a919061219c565b6118d6565b60405161073c91906124a1565b60405180910390f35b61075f600480360381019061075a9190612160565b611902565b60405161076c91906123d3565b60405180910390f35b61077d611998565b60405161078a91906124a1565b60405180910390f35b6107ad60048036038101906107a8919061219c565b6119bc565b6040516107ba91906124a1565b60405180910390f35b6107dd60048036038101906107d89190612240565b6119d0565b6040516107ea91906124a1565b60405180910390f35b6107fb611a84565b604051610808919061246b565b60405180910390f35b610819611aee565b60405161082691906124a1565b60405180910390f35b610849600480360381019061084491906120e8565b611b12565b60405161085691906123d3565b60405180910390f35b6108796004803603810190610874919061227c565b611bb4565b60405161088691906123ee565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108e45760019050610a35565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109375760019050610a35565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561098a5760019050610a35565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109dd5760019050610a35565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a305760019050610a35565b600090505b919050565b60068054610a47906126cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a73906126cc565b8015610ac05780601f10610a9557610100808354040283529160200191610ac0565b820191906000526020600020905b815481529060010190602001808311610aa357829003601f168201915b505050505081565b600080610ad3611641565b50610add836111b2565b905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b6b91906124d8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610bcf91906124a1565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610c47611641565b50610c51846111b2565b915081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cdc57600080fd5b610ce7868684611c23565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d4691906124a1565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610de357503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610dec57600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610e91919061252e565b905060005b84811015610eda5764e8d4a510008284610eb0919061255f565b610eba919061252e565b83610ec591906125b9565b92508080610ed2906126fe565b915050610e96565b5064e8d4a510008583610eed919061255f565b610ef7919061252e565b9250505092915050565b60085481565b60008181548110610f1757600080fd5b906000526020600020016000915090505481565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb19061242b565b60405180910390fd5b610fc2611641565b50610fcc836111b2565b90508260096000828254610fe091906124d8565b92505081905550610ff18482611c48565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88560405161104f91906124a1565b60405180910390a361105f611d0d565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826110e2919061255f565b7f000000000000000000000000000000000000000000000000000000000000000061110d91906124d8565b9050919050565b6000603c824261112491906125b9565b61112e919061252e565b9050919050565b600a5481565b60035481565b600080827f000000000000000000000000000000000000000000000000000000000000000061117091906125b9565b8461117b919061255f565b90507f0000000000000000000000000000000000000000000000000000000000000000816111a9919061252e565b91505092915050565b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000083611211919061255f565b61121b919061252e565b9050919050565b6000603c824261123291906125b9565b61123c919061252e565b9050919050565b6000606860ff167cffffffffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b60008060008061128e8561106b565b925061129b600354611114565b90506112d7600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682610e4d565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e4000000611307919061255f565b8284611313919061255f565b61131d919061252e565b9350505050919050565b6000806000611337600354611114565b9150600082141561134d57600092505050611443565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905061138a8183610e4d565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c826113cf919061255f565b6003546113dc91906124d8565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff166040516114349190612486565b60405180910390a46001925050505b90565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a357600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b60008060006115fb846118d6565b915061160684611243565b90506116128282611141565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806000611657611327565b50611660611dfb565b9750600060010288141561167f57600098505050505050505050611788565b611688886119bc565b955060018661169791906124d8565b90506116a2866110b4565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506116e082611222565b925060008311156116fc576116f585846119d0565b9350611700565b8493505b61170f60008560095484611bb4565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561174387611f2b565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161177391906124a1565b60405180910390a16001985050505050505050505b90565b60078054611798906126cc565b80601f01602080910402602001604051908101604052809291908181526020018280546117c4906126cc565b80156118115780601f106117e657610100808354040283529160200191611811565b820191906000526020600020905b8154815290600101906020018083116117f457829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461187557600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600080600061190f611641565b50611919846111b2565b9150611926338684611c23565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161198591906124a1565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611a14919061252e565b905060005b84811015611a5d5764e8d4a510008284611a33919061255f565b611a3d919061252e565b83611a4891906124d8565b92508080611a55906126fe565b915050611a19565b5064e8d4a510008583611a70919061255f565b611a7a919061252e565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611ad591906125b9565b611adf919061252e565b611ae991906124d8565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b6e57600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807cffffffffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611c308584611f77565b50611c3b8484611c48565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611ca55760009350505050611d07565b611cae8661106b565b92508483611cbc91906124d8565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611d2b91906125b9565b81548110611d62577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611dad91906125b9565b81548110611de4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555060019250505090565b6000806000806001600080549050611e1391906125b9565b81548110611e4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611eb957600080fd5b505afa158015611ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef191906121ee565b6fffffffffffffffffffffffffffffffff169050611f0e826119bc565b8111611f2257600060010292505050611f28565b81925050505b90565b600080611f37836115ed565b9050611f6d600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611f68836111b2565b611c48565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611fd45760009350505050612079565b611fdd8661106b565b925084831015612022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120199061244b565b60405180910390fd5b848361202e91906125b9565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008135905061208e81612837565b92915050565b6000813590506120a38161284e565b92915050565b6000813590506120b881612865565b92915050565b6000815190506120cd8161287c565b92915050565b6000813590506120e281612893565b92915050565b6000602082840312156120fa57600080fd5b60006121088482850161207f565b91505092915050565b60008060006060848603121561212657600080fd5b60006121348682870161207f565b93505060206121458682870161207f565b9250506040612156868287016120d3565b9150509250925092565b6000806040838503121561217357600080fd5b60006121818582860161207f565b9250506020612192858286016120d3565b9150509250929050565b6000602082840312156121ae57600080fd5b60006121bc84828501612094565b91505092915050565b6000602082840312156121d757600080fd5b60006121e5848285016120a9565b91505092915050565b60006020828403121561220057600080fd5b600061220e848285016120be565b91505092915050565b60006020828403121561222957600080fd5b6000612237848285016120d3565b91505092915050565b6000806040838503121561225357600080fd5b6000612261858286016120d3565b9250506020612272858286016120d3565b9150509250929050565b6000806000806080858703121561229257600080fd5b60006122a0878288016120d3565b94505060206122b1878288016120d3565b93505060406122c2878288016120d3565b92505060606122d3878288016120d3565b91505092959194509250565b6122e8816125ed565b82525050565b6122f7816125ff565b82525050565b6123068161260b565b82525050565b6000612317826124bc565b61232181856124c7565b9350612331818560208601612699565b61233a816127d4565b840191505092915050565b6000612352600a836124c7565b915061235d826127e5565b602082019050919050565b6000612375600d836124c7565b91506123808261280e565b602082019050919050565b61239481612641565b82525050565b6123a381612687565b82525050565b6123b28161267d565b82525050565b60006020820190506123cd60008301846122df565b92915050565b60006020820190506123e860008301846122ee565b92915050565b600060208201905061240360008301846122fd565b92915050565b60006020820190508181036000830152612423818461230c565b905092915050565b6000602082019050818103600083015261244481612345565b9050919050565b6000602082019050818103600083015261246481612368565b9050919050565b6000602082019050612480600083018461238b565b92915050565b600060208201905061249b600083018461239a565b92915050565b60006020820190506124b660008301846123a9565b92915050565b600081519050919050565b600082825260208201905092915050565b60006124e38261267d565b91506124ee8361267d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561252357612522612747565b5b828201905092915050565b60006125398261267d565b91506125448361267d565b92508261255457612553612776565b5b828204905092915050565b600061256a8261267d565b91506125758361267d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125ae576125ad612747565b5b828202905092915050565b60006125c48261267d565b91506125cf8361267d565b9250828210156125e2576125e1612747565b5b828203905092915050565b60006125f88261265d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061269282612641565b9050919050565b60005b838110156126b757808201518184015260208101905061269c565b838111156126c6576000848401525b50505050565b600060028204905060018216806126e457607f821691505b602082108114156126f8576126f76127a5565b5b50919050565b60006127098261267d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561273c5761273b612747565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b612840816125ed565b811461284b57600080fd5b50565b6128578161260b565b811461286257600080fd5b50565b61286e81612615565b811461287957600080fd5b50565b61288581612641565b811461289057600080fd5b50565b61289c8161267d565b81146128a757600080fd5b5056fea26469706673582212205d06e18992135f6fef2320a6a1e02ee11de4a95d9a97ba191c6b77f0365bb50964736f6c63430008040033 -\ No newline at end of file +61010060405264e8d4a510006a52b7d2dcc80cd2e400000062000023919062000784565b6080908152503480156200003657600080fd5b50604051620034073803806200340783398181016040528101906200005c9190620004b3565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600690805190602001906200012f92919062000329565b5084600790805190602001906200014892919062000329565b508360ff166008819055504260038190555060035460a08181525050603c8262000173919062000784565b60c081815250506b204fce5e3e25026110000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550826fffffffffffffffffffffffffffffffff1660e0818152505060006200022b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002bc640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002a9919062000647565b600a819055505050505050505062000a15565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b828054620003379062000882565b90600052602060002090601f0160209004810192826200035b5760008555620003a7565b82601f106200037657805160ff1916838001178555620003a7565b82800160010185558215620003a7579182015b82811115620003a657825182559160200191906001019062000389565b5b509050620003b69190620003ba565b5090565b5b80821115620003d5576000816000905550600101620003bb565b5090565b6000620003f0620003ea84620005b6565b6200058d565b9050828152602081018484840111156200040f576200040e62000980565b5b6200041c8482856200084c565b509392505050565b6000815190506200043581620009ad565b92915050565b600082601f8301126200045357620004526200097b565b5b815162000465848260208601620003d9565b91505092915050565b6000815190506200047f81620009c7565b92915050565b6000815190506200049681620009e1565b92915050565b600081519050620004ad81620009fb565b92915050565b60008060008060008060c08789031215620004d357620004d26200098a565b5b600087015167ffffffffffffffff811115620004f457620004f362000985565b5b6200050289828a016200043b565b965050602087015167ffffffffffffffff81111562000526576200052562000985565b5b6200053489828a016200043b565b95505060406200054789828a016200049c565b94505060606200055a89828a016200046e565b93505060806200056d89828a0162000485565b92505060a06200058089828a0162000424565b9150509295509295509295565b600062000599620005ac565b9050620005a78282620008b8565b919050565b6000604051905090565b600067ffffffffffffffff821115620005d457620005d36200094c565b5b620005df826200098f565b9050602081019050919050565b6000808291508390505b60018511156200063e57808604811115620006165762000615620008ee565b5b6001851615620006265780820291505b80810290506200063685620009a0565b9450620005f6565b94509492505050565b6000620006548262000835565b9150620006618362000835565b9250620006907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000698565b905092915050565b600082620006aa57600190506200077d565b81620006ba57600090506200077d565b8160018114620006d35760028114620006de5762000714565b60019150506200077d565b60ff841115620006f357620006f2620008ee565b5b8360020a9150848211156200070d576200070c620008ee565b5b506200077d565b5060208310610133831016604e8410600b84101617156200074e5782820a905083811115620007485762000747620008ee565b5b6200077d565b6200075d8484846001620005ec565b92509050818404811115620007775762000776620008ee565b5b81810290505b9392505050565b6000620007918262000835565b91506200079e8362000835565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007da57620007d9620008ee565b5b828202905092915050565b6000620007f28262000815565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200086c5780820151818401526020810190506200084f565b838111156200087c576000848401525b50505050565b600060028204905060018216806200089b57607f821691505b60208210811415620008b257620008b16200091d565b5b50919050565b620008c3826200098f565b810181811067ffffffffffffffff82111715620008e557620008e46200094c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6000600282049050919050565b620009b881620007e5565b8114620009c457600080fd5b50565b620009d281620007f9565b8114620009de57600080fd5b50565b620009ec8162000835565b8114620009f857600080fd5b50565b62000a06816200083f565b811462000a1257600080fd5b50565b60805160a05160c05160e05161297962000a8e60003960008181610c4101528181610e910152611a560152600081816110e101528181611a050152611af501526000818161110d01528181611b160152611b5b015260008181611170015281816111a80152818161122001526119e101526129796000f3fe608060405234801561001057600080fd5b5060043610610265576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e116101585780639da7d8ba116100d5578063e54d63f711610099578063e54d63f7146107ec578063e80952951461081c578063eda4e6d61461083a578063f2fde38b14610858578063f83da35d1461088857610265565b80639da7d8ba14610720578063a9059cbb14610750578063ab28cea014610780578063b470aade1461079e578063e3ab207a146107bc57610265565b80638d34855a1161011c5780638d34855a146106665780638da5cb5b146106965780638f1df6bc146106b457806395d89b41146106d2578063983b2d56146106f057610265565b80636a2d094e1461059a5780636ffa8a05146105ca57806370a08231146105fa578063731f237c1461062a57806379ba50971461064857610265565b8063313ce567116101e657806351b4541c116101aa57806351b4541c146104ce578063573cc507146104fe57806358b2833b1461051c5780636721d4ef1461053a5780636787a9be1461056a57610265565b8063313ce567146103f057806340452d911461040e578063449a52f81461043e57806347a505171461046e5780634abfbba21461049e57610265565b80631989c6a81161022d5780631989c6a814610324578063229ba1971461034257806323b872dd146103605780633092afd51461039057806331333487146103c057610265565b806301ffc9a71461026a57806306fdde031461029a578063095ea7b3146102b857806309f28f3c146102e857806318160ddd14610306575b600080fd5b610284600480360381019061027f91906121cc565b6108b8565b60405161029191906123ee565b60405180910390f35b6102a2610a63565b6040516102af9190612424565b60405180910390f35b6102d260048036038101906102cd919061215f565b610af1565b6040516102df91906123ee565b60405180910390f35b6102f0610c0b565b6040516102fd9190612486565b60405180910390f35b61030e610c2d565b60405161031b91906124bc565b60405180910390f35b61032c610c33565b60405161033991906124bc565b60405180910390f35b61034a610c3f565b60405161035791906124bc565b60405180910390f35b61037a6004803603810190610375919061210c565b610c63565b60405161038791906123ee565b60405180910390f35b6103aa60048036038101906103a591906120df565b610d83565b6040516103b791906123ee565b60405180910390f35b6103da60048036038101906103d59190612253565b610e76565b6040516103e791906124bc565b60405180910390f35b6103f8610f2a565b60405161040591906124bc565b60405180910390f35b61042860048036038101906104239190612226565b610f30565b6040516104359190612409565b60405180910390f35b6104586004803603810190610453919061215f565b610f54565b60405161046591906123ee565b60405180910390f35b610488600480360381019061048391906120df565b611094565b60405161049591906124bc565b60405180910390f35b6104b860048036038101906104b39190612226565b6110dd565b6040516104c591906124bc565b60405180910390f35b6104e860048036038101906104e39190612226565b61113d565b6040516104f591906124bc565b60405180910390f35b61050661115e565b60405161051391906124bc565b60405180910390f35b610524611164565b60405161053191906124bc565b60405180910390f35b610554600480360381019061054f9190612253565b61116a565b60405161056191906124bc565b60405180910390f35b610584600480360381019061057f9190612226565b6111db565b60405161059191906124bc565b60405180910390f35b6105b460048036038101906105af9190612226565b61125b565b6040516105c191906124bc565b60405180910390f35b6105e460048036038101906105df919061219f565b61127c565b6040516105f191906124bc565b60405180910390f35b610614600480360381019061060f91906120df565b6112b6565b60405161062191906124bc565b60405180910390f35b61063261136e565b60405161063f91906123ee565b60405180910390f35b61065061148d565b60405161065d91906123ee565b60405180910390f35b610680600480360381019061067b919061219f565b611634565b60405161068d91906124bc565b60405180910390f35b61069e611662565b6040516106ab91906123d3565b60405180910390f35b6106bc611688565b6040516106c991906123ee565b60405180910390f35b6106da6117d2565b6040516106e79190612424565b60405180910390f35b61070a600480360381019061070591906120df565b611860565b60405161071791906123ee565b60405180910390f35b61073a6004803603810190610735919061219f565b61191d565b60405161074791906124bc565b60405180910390f35b61076a6004803603810190610765919061215f565b611949565b60405161077791906123ee565b60405180910390f35b6107886119df565b60405161079591906124bc565b60405180910390f35b6107a6611a03565b6040516107b391906124bc565b60405180910390f35b6107d660048036038101906107d1919061219f565b611a27565b6040516107e391906124bc565b60405180910390f35b61080660048036038101906108019190612253565b611a3b565b60405161081391906124bc565b60405180910390f35b610824611aef565b6040516108319190612486565b60405180910390f35b610842611b59565b60405161084f91906124bc565b60405180910390f35b610872600480360381019061086d91906120df565b611b7d565b60405161087f91906123ee565b60405180910390f35b6108a2600480360381019061089d9190612293565b611c1f565b6040516108af9190612409565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561090d5760019050610a5e565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109605760019050610a5e565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109b35760019050610a5e565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a065760019050610a5e565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a595760019050610a5e565b600090505b919050565b60068054610a7090612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9c90612731565b8015610ae95780601f10610abe57610100808354040283529160200191610ae9565b820191906000526020600020905b815481529060010190602001808311610acc57829003601f168201915b505050505081565b600080610afc611688565b50610b06836111db565b905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9491906124f3565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610bf891906124bc565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610c70611688565b50610c7a846111db565b915081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d0557600080fd5b610d10868684611c8c565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d6f91906124bc565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e0c57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610e1557600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610eba9190612549565b905060005b84811015610f035764e8d4a510008284610ed991906125c4565b610ee39190612549565b83610eee919061261e565b92508080610efb90612763565b915050610ebf565b5064e8d4a510008583610f1691906125c4565b610f209190612549565b9250505092915050565b60085481565b60008181548110610f4057600080fd5b906000526020600020016000915090505481565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda90612446565b60405180910390fd5b610feb611688565b50610ff5836111db565b9050826009600082825461100991906124f3565b9250508190555061101a8482611cb1565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88560405161107891906124bc565b60405180910390a3611088611d76565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f00000000000000000000000000000000000000000000000000000000000000008261110b91906125c4565b7f000000000000000000000000000000000000000000000000000000000000000061113691906124f3565b9050919050565b6000603c824261114d919061261e565b6111579190612549565b9050919050565b600a5481565b60035481565b600080827f0000000000000000000000000000000000000000000000000000000000000000611199919061261e565b846111a491906125c4565b90507f0000000000000000000000000000000000000000000000000000000000000000816111d29190612549565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff1661120c919061257a565b6fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000008361124a91906125c4565b6112549190612549565b9050919050565b6000603c824261126b919061261e565b6112759190612549565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806112c585611094565b92506112d260035461113d565b905061131e6402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff16611306919061257a565b6fffffffffffffffffffffffffffffffff1682610e76565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e400000061134e91906125c4565b828461135a91906125c4565b6113649190612549565b9350505050919050565b600080600061137e60035461113d565b915060008214156113945760009250505061148a565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690506113d18183610e76565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c8261141691906125c4565b60035461142391906124f3565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff1660405161147b91906124a1565b60405180910390a46001925050505b90565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ea57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b60008060006116428461191d565b915061164d8461127c565b9050611659828261116a565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600061169e61136e565b506116a7611e18565b975060006001028814156116c6576000985050505050505050506117cf565b6116cf88611a27565b95506001866116de91906124f3565b90506116e9866110dd565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506117278261125b565b925060008311156117435761173c8584611a3b565b9350611747565b8493505b61175660008560095484611c1f565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561178a87611f22565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516117ba91906124bc565b60405180910390a16001985050505050505050505b90565b600780546117df90612731565b80601f016020809104026020016040519081016040528092919081815260200182805461180b90612731565b80156118585780601f1061182d57610100808354040283529160200191611858565b820191906000526020600020905b81548152906001019060200180831161183b57829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118bc57600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b6000806000611956611688565b50611960846111db565b915061196d338684611c8c565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516119cc91906124bc565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611a7f9190612549565b905060005b84811015611ac85764e8d4a510008284611a9e91906125c4565b611aa89190612549565b83611ab391906124f3565b92508080611ac090612763565b915050611a84565b5064e8d4a510008583611adb91906125c4565b611ae59190612549565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611b40919061261e565b611b4a9190612549565b611b5491906124f3565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd957600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611c998584611f6e565b50611ca48484611cb1565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611d0e5760009350505050611d70565b611d1786611094565b92508483611d2591906124f3565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611d94919061261e565b81548110611da557611da4612839565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611df0919061261e565b81548110611e0157611e00612839565b5b906000526020600020018190555060019250505090565b6000806000806001600080549050611e30919061261e565b81548110611e4157611e40612839565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611eb057600080fd5b505afa158015611ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee891906121f9565b6fffffffffffffffffffffffffffffffff169050611f0582611a27565b8111611f1957600060010292505050611f1f565b81925050505b90565b600080611f2e83611634565b9050611f64600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611f5f836111db565b611cb1565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611fcb5760009350505050612070565b611fd486611094565b925084831015612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090612466565b60405180910390fd5b8483612025919061261e565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600081359050612085816128d0565b92915050565b60008135905061209a816128e7565b92915050565b6000813590506120af816128fe565b92915050565b6000815190506120c481612915565b92915050565b6000813590506120d98161292c565b92915050565b6000602082840312156120f5576120f4612868565b5b600061210384828501612076565b91505092915050565b60008060006060848603121561212557612124612868565b5b600061213386828701612076565b935050602061214486828701612076565b9250506040612155868287016120ca565b9150509250925092565b6000806040838503121561217657612175612868565b5b600061218485828601612076565b9250506020612195858286016120ca565b9150509250929050565b6000602082840312156121b5576121b4612868565b5b60006121c38482850161208b565b91505092915050565b6000602082840312156121e2576121e1612868565b5b60006121f0848285016120a0565b91505092915050565b60006020828403121561220f5761220e612868565b5b600061221d848285016120b5565b91505092915050565b60006020828403121561223c5761223b612868565b5b600061224a848285016120ca565b91505092915050565b6000806040838503121561226a57612269612868565b5b6000612278858286016120ca565b9250506020612289858286016120ca565b9150509250929050565b600080600080608085870312156122ad576122ac612868565b5b60006122bb878288016120ca565b94505060206122cc878288016120ca565b93505060406122dd878288016120ca565b92505060606122ee878288016120ca565b91505092959194509250565b61230381612652565b82525050565b61231281612664565b82525050565b61232181612670565b82525050565b6000612332826124d7565b61233c81856124e2565b935061234c8185602086016126fe565b6123558161286d565b840191505092915050565b600061236d600a836124e2565b91506123788261287e565b602082019050919050565b6000612390600d836124e2565b915061239b826128a7565b602082019050919050565b6123af816126a6565b82525050565b6123be816126ec565b82525050565b6123cd816126e2565b82525050565b60006020820190506123e860008301846122fa565b92915050565b60006020820190506124036000830184612309565b92915050565b600060208201905061241e6000830184612318565b92915050565b6000602082019050818103600083015261243e8184612327565b905092915050565b6000602082019050818103600083015261245f81612360565b9050919050565b6000602082019050818103600083015261247f81612383565b9050919050565b600060208201905061249b60008301846123a6565b92915050565b60006020820190506124b660008301846123b5565b92915050565b60006020820190506124d160008301846123c4565b92915050565b600081519050919050565b600082825260208201905092915050565b60006124fe826126e2565b9150612509836126e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561253e5761253d6127ac565b5b828201905092915050565b6000612554826126e2565b915061255f836126e2565b92508261256f5761256e6127db565b5b828204905092915050565b6000612585826126a6565b9150612590836126a6565b9250816fffffffffffffffffffffffffffffffff04831182151516156125b9576125b86127ac565b5b828202905092915050565b60006125cf826126e2565b91506125da836126e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612613576126126127ac565b5b828202905092915050565b6000612629826126e2565b9150612634836126e2565b925082821015612647576126466127ac565b5b828203905092915050565b600061265d826126c2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006126f7826126a6565b9050919050565b60005b8381101561271c578082015181840152602081019050612701565b8381111561272b576000848401525b50505050565b6000600282049050600182168061274957607f821691505b6020821081141561275d5761275c61280a565b5b50919050565b600061276e826126e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127a1576127a06127ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6128d981612652565b81146128e457600080fd5b50565b6128f081612670565b81146128fb57600080fd5b50565b6129078161267a565b811461291257600080fd5b50565b61291e816126a6565b811461292957600080fd5b50565b612935816126e2565b811461294057600080fd5b5056fea2646970667358221220506af7cce8538f8bf81ce72a793781d256501344a476482cd8afe1722dc273ba64736f6c63430008060033 +\ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/erc20_demurrage_token/demurrage.py b/python/erc20_demurrage_token/demurrage.py @@ -1,8 +1,14 @@ -# +# standard imports import logging import datetime import math +# eternal imports +from chainlib.eth.constant import ZERO_ADDRESS + +# local imports +from .token import DemurrageToken + logging.basicConfig(level=logging.DEBUG) logg = logging.getLogger() @@ -36,3 +42,18 @@ class DemurrageCalculator: logg.debug('adjusted for {} hours {} -> {} delta {}'.format(remainder_minutes, amount, adjusted_amount, adjusted_delta)) return adjusted_amount + + + @staticmethod + def from_contract(rpc, chain_spec, contract_address, sender_address=ZERO_ADDRESS): + c = DemurrageToken(chain_spec) + o = c.tax_level(contract_address, sender_address=sender_address) + r = rpc.do(o) + taxlevel_i = c.parse_tax_level(r) + + o = c.resolution_factor(contract_address, sender_address=sender_address) + r = rpc.do(o) + divider = c.parse_resolution_factor(r) + logg.debug('taxlevel {} f {}'.format(taxlevel_i, divider)) + taxlevel_f = taxlevel_i / divider + return DemurrageCalculator(taxlevel_f) diff --git a/python/erc20_demurrage_token/token.py b/python/erc20_demurrage_token/token.py @@ -343,7 +343,15 @@ class DemurrageToken(ERC20): tx = self.set_code(tx, data) tx = self.finalize(tx, tx_format) return tx - + + + def tax_level(self, contract_address, sender_address=ZERO_ADDRESS): + return self.call_noarg('taxLevel', contract_address, sender_address=sender_address) + + + def resolution_factor(self, contract_address, sender_address=ZERO_ADDRESS): + return self.call_noarg('resolutionFactor', contract_address, sender_address=sender_address) + def actual_period(self, contract_address, sender_address=ZERO_ADDRESS): return self.call_noarg('actualPeriod', contract_address, sender_address=sender_address) @@ -507,3 +515,13 @@ class DemurrageToken(ERC20): @classmethod def parse_get_distribution(self, v): return abi_decode_single(ABIContractType.UINT256, v) + + + @classmethod + def parse_tax_level(self, v): + return abi_decode_single(ABIContractType.UINT256, v) + + + @classmethod + def parse_resolution_factor(self, v): + return abi_decode_single(ABIContractType.UINT256, v) diff --git a/python/run_tests.sh b/python/run_tests.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -e + +export PYTHONPATH=. + +#modes=(MultiNocap MultiCap SingleCap SingleNocap) +modes=(SingleCap SingleNocap) # other contracts need to be updted +for m in ${modes[@]}; do + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_basic.py + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_growth.py + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_amounts.py + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_single.py +done + +modes=(SingleCap) # other contracts need to be updted +for m in ${modes[@]}; do + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_period.py + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_redistribution_unit.py +done + +modes=(MultiCap SingleCap) +for m in ${modes[@]}; do + ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_cap.py +done + +#modes=(MultiCap MultiNocap) +#for m in ${modes[@]}; do +# ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_remainder.py +# ERC20_DEMURRAGE_TOKEN_TEST_MODE=$m python tests/test_redistribution.py +#done + +set +e diff --git a/python/setup.cfg b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = erc20-demurrage-token -version = 0.0.2a1 +version = 0.0.2a2 description = ERC20 token with redistributed continual demurrage author = Louis Holbrook author_email = dev@holbrook.no diff --git a/python/tests/test_demurrage_ext.py b/python/tests/test_demurrage_ext.py @@ -2,7 +2,11 @@ import datetime import unittest +# external imports +from chainlib.eth.nonce import RPCNonceOracle + # local imports +from erc20_demurrage_token import DemurrageToken from erc20_demurrage_token.demurrage import DemurrageCalculator # test imports @@ -19,5 +23,13 @@ class TestEmulate(TestDemurrage): self.assert_within_lower(a, 99.69667, 0.1) + def test_from_contract(self): + nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc) + c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + self.deploy(c, 'SingleNocap') + dc = DemurrageCalculator.from_contract(self.rpc, self.chain_spec, self.address, sender_address=self.accounts[0]) + self.assertEqual(dc.r_min, 0.02) + + if __name__ == '__main__': unittest.main() diff --git a/solidity/DemurrageTokenMultiCap.sol b/solidity/DemurrageTokenMultiCap.sol @@ -61,6 +61,9 @@ contract DemurrageTokenMultiCap { // (this constant x 1000000 is contained within 128 bits) uint256 constant ppmDivider = 100000000000000000000000000000000; + // demurrage decimal width; 38 places + uint256 public immutable resolutionFactor = ppmDivider * 1000000; + // Timestamp of start of periods (time which contract constructor was called) uint256 public immutable periodStart; diff --git a/solidity/DemurrageTokenMultiNocap.sol b/solidity/DemurrageTokenMultiNocap.sol @@ -56,6 +56,9 @@ contract DemurrageTokenMultiNocap { // (this constant x 1000000 is contained within 128 bits) uint256 constant ppmDivider = 100000000000000000000000000000000; + // demurrage decimal width; 38 places + uint256 public immutable resolutionFactor = ppmDivider * 1000000; + // Timestamp of start of periods (time which contract constructor was called) uint256 public immutable periodStart; diff --git a/solidity/DemurrageTokenSingleCap.sol b/solidity/DemurrageTokenSingleCap.sol @@ -56,7 +56,7 @@ contract DemurrageTokenSingleCap { uint256 constant growthResolutionFactor = 1000000000000; // demurrage decimal width; 38 places - uint256 immutable resolutionFactor = nanoDivider * growthResolutionFactor; + uint256 public immutable resolutionFactor = nanoDivider * growthResolutionFactor; // Timestamp of start of periods (time which contract constructor was called) uint256 public immutable periodStart; diff --git a/solidity/DemurrageTokenSingleNocap.sol b/solidity/DemurrageTokenSingleNocap.sol @@ -53,7 +53,7 @@ contract DemurrageTokenSingleCap { uint256 constant growthResolutionFactor = 1000000000000; // demurrage decimal width; 38 places - uint256 immutable resolutionFactor = nanoDivider * growthResolutionFactor; + uint256 public immutable resolutionFactor = nanoDivider * growthResolutionFactor; // Timestamp of start of periods (time which contract constructor was called) uint256 public immutable periodStart;