diff --git a/contracts/RelayerIncentivize.sol b/contracts/RelayerIncentivize.sol index 9b7441423..25d325b02 100644 --- a/contracts/RelayerIncentivize.sol +++ b/contracts/RelayerIncentivize.sol @@ -40,6 +40,11 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { event paramChange(string key, bytes value); + modifier onlyInit() { + require(alreadyInit, "the contract not init yet"); + _; + } + function init() public { require(!alreadyInit, "already initialized"); moleculeHeaderRelayer=MOLECULE_HEADER_RELAYER; @@ -52,7 +57,7 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { event LogDistributeCollectedReward(uint256 sequence, uint256 roundRewardForHeaderRelayer, uint256 roundRewardForTransferRelayer); - function addReward(address payable headerRelayerAddr, address payable caller) external onlyTokenHub override payable returns (bool) { + function addReward(address payable headerRelayerAddr, address payable caller) external onlyTokenHub onlyInit override payable returns (bool) { countInRound++; @@ -89,7 +94,7 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { return reward.mul(moleculeHeaderRelayer).div(denominatorHeaderRelayer); } - function distributeHeaderRelayerReward(address payable caller) internal returns (bool) { + function distributeHeaderRelayerReward(address payable caller) internal { uint256 totalReward = collectedRewardForHeaderRelayer; uint256 totalWeight=0; @@ -120,7 +125,7 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { delete headerRelayerAddressRecord; } - function distributeTransferRelayerReward(address payable caller) internal returns (bool) { + function distributeTransferRelayerReward(address payable caller) internal { uint256 totalReward = collectedRewardForTransferRelayer; uint256 totalWeight=0; diff --git a/contracts/RelayerIncentivize.template b/contracts/RelayerIncentivize.template index 894f4e635..fde41848a 100644 --- a/contracts/RelayerIncentivize.template +++ b/contracts/RelayerIncentivize.template @@ -40,6 +40,11 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { event paramChange(string key, bytes value); + modifier onlyInit() { + require(alreadyInit, "the contract not init yet"); + _; + } + function init() public { require(!alreadyInit, "already initialized"); moleculeHeaderRelayer=MOLECULE_HEADER_RELAYER; @@ -54,7 +59,7 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { {% if mock %} function addReward(address payable headerRelayerAddr, address payable caller) external override payable returns (bool) { {% else %} - function addReward(address payable headerRelayerAddr, address payable caller) external onlyTokenHub override payable returns (bool) { + function addReward(address payable headerRelayerAddr, address payable caller) external onlyTokenHub onlyInit override payable returns (bool) { {% endif %} countInRound++; @@ -91,7 +96,7 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { return reward.mul(moleculeHeaderRelayer).div(denominatorHeaderRelayer); } - function distributeHeaderRelayerReward(address payable caller) internal returns (bool) { + function distributeHeaderRelayerReward(address payable caller) internal { uint256 totalReward = collectedRewardForHeaderRelayer; uint256 totalWeight=0; @@ -122,7 +127,7 @@ contract RelayerIncentivize is IRelayerIncentivize, System, IParamSubscriber { delete headerRelayerAddressRecord; } - function distributeTransferRelayerReward(address payable caller) internal returns (bool) { + function distributeTransferRelayerReward(address payable caller) internal { uint256 totalReward = collectedRewardForTransferRelayer; uint256 totalWeight=0; diff --git a/genesis.json b/genesis.json index 019e58000..50930f493 100644 --- a/genesis.json +++ b/genesis.json @@ -49,7 +49,7 @@ }, "0x0000000000000000000000000000000000001005": { "balance": "0x0", - "code": "0x6080604052600436106101ee5760003560e01c8063930e1b091161010d578063af400681116100a0578063dc927faf1161006f578063dc927faf146105d1578063dcae76ab146105e6578063e1c7392a146105fb578063f9a2bbc714610610578063fd6a687914610625576101ee565b8063af40068114610568578063bd4cc83014610592578063c7d2b02814610244578063c81b1662146105bc576101ee565b8063a413aff6116100dc578063a413aff614610458578063a60d770b1461046d578063a78abc1614610482578063ac43175114610497576101ee565b8063930e1b09146103e65780639dc0926214610419578063a1a11bf51461042e578063a3c3c0ad14610443576101ee565b806341b5f4e511610185578063572120951161015457806357212095146103745780636e47b482146103a757806375405d0d146103bc57806387c1830a146103d1576101ee565b806341b5f4e51461030b57806343756e5c14610320578063490dfdf714610335578063541333071461035f576101ee565b8063189d8172116101c1578063189d8172146102595780631b20087c1461026e5780631c6433121461028357806340b47e1a146102c9576101ee565b806308f2ec06146101f35780630c7320681461021a57806310e06a761461022f578063117048d814610244575b600080fd5b3480156101ff57600080fd5b5061020861063a565b60408051918252519081900360200190f35b34801561022657600080fd5b50610208610640565b34801561023b57600080fd5b50610208610646565b34801561025057600080fd5b5061020861064c565b34801561026557600080fd5b50610208610651565b34801561027a57600080fd5b50610208610657565b34801561028f57600080fd5b506102ad600480360360208110156102a657600080fd5b503561065d565b604080516001600160a01b039092168252519081900360200190f35b6102f7600480360360408110156102df57600080fd5b506001600160a01b0381358116916020013516610684565b604080519115158252519081900360200190f35b34801561031757600080fd5b506102086108d5565b34801561032c57600080fd5b506102ad6108da565b34801561034157600080fd5b506102ad6004803603602081101561035857600080fd5b50356108e0565b34801561036b57600080fd5b506102086108ed565b34801561038057600080fd5b506102086004803603602081101561039757600080fd5b50356001600160a01b03166108f3565b3480156103b357600080fd5b506102ad610905565b3480156103c857600080fd5b5061020861090b565b3480156103dd57600080fd5b50610208610916565b3480156103f257600080fd5b506102086004803603602081101561040957600080fd5b50356001600160a01b031661091c565b34801561042557600080fd5b506102ad61092e565b34801561043a57600080fd5b506102ad610934565b34801561044f57600080fd5b5061020861093a565b34801561046457600080fd5b50610208610940565b34801561047957600080fd5b50610208610946565b34801561048e57600080fd5b506102f761094b565b3480156104a357600080fd5b50610566600480360360408110156104ba57600080fd5b8101906020810181356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184600183028401116401000000008311171561050957600080fd5b91939092909160208101903564010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b509092509050610954565b005b34801561057457600080fd5b506102086004803603602081101561058b57600080fd5b5035610f12565b34801561059e57600080fd5b50610208600480360360208110156105b557600080fd5b5035610f74565b3480156105c857600080fd5b506102ad610f8f565b3480156105dd57600080fd5b506102ad610f95565b3480156105f257600080fd5b50610208610f9b565b34801561060757600080fd5b50610566610fa1565b34801561061c57600080fd5b506102ad611013565b34801561063157600080fd5b506102ad611019565b61019081565b60025481565b600b5481565b600181565b60035481565b600c5481565b6006818154811061066a57fe5b6000918252602090912001546001600160a01b0316905081565b600033611004146106c65760405162461bcd60e51b815260040180806020018281038252602d815260200180611953602d913960400191505060405180910390fd5b600c8054600101905560006106da3461101f565b6009549091506106f0908263ffffffff61104816565b600955600a5461071890829061070c903463ffffffff61104816565b9063ffffffff6110a916565b600a556001600160a01b03841660009081526005602052604090205461078457600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b03808516600090815260056020908152604080832080546001019055928616825260079052205461080257600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0385161790555b6001600160a01b038316600090815260076020526040902080546001019055600c546103e814156108c957600b54600954600a5460408051938452602084019290925282820152517f127fd0fd1fcf84c71c5c649625ef186be105a71ecc80c7cb3f96cd99ccae1e0f9181900360600190a161087d836110eb565b5061088783611398565b506040516110029081904780156108fc02916000818181858888f193505050501580156108b8573d6000803e3d6000fd5b5050600b805460010190556000600c555b60019150505b92915050565b605081565b61100181565b6008818154811061066a57fe5b6103e881565b60076020526000908152604090205481565b61100581565b66b1a2bc2ec5000081565b60005481565b60056020526000908152604090205481565b61100781565b61100681565b600a5481565b60015481565b600581565b60045460ff1681565b33611007146109945760405162461bcd60e51b815260040180806020018281038252602e815260200180611980602e913960400191505060405180910390fd5b60045460ff166109d55760405162461bcd60e51b81526004018080602001828103825260218152602001806119ae6021913960400191505060405180910390fd5b610a4184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527436b7b632b1bab632a432b0b232b92932b630bcb2b960591b602082015291506116169050565b15610acc5760208114610a855760405162461bcd60e51b81526004018080602001828103825260288152602001806118dc6028913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610ac3918585808385018382808284376000920191909152506116fd92505050565b60005550610e80565b610b4084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f64656e6f6d696e61746f7248656164657252656c617965720000000000000000602082015291506116169050565b15610c085760208114610b845760405162461bcd60e51b815260040180806020018281038252602e815260200180611904602e913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610bc2918585808385018382808284376000920191909152506116fd92505050565b905080610c005760405162461bcd60e51b81526004018080602001828103825260308152602001806119cf6030913960400191505060405180910390fd5b600155610e80565b610c7c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f6d6f6c6563756c6543616c6c6572436f6d70656e736174696f6e000000000000602082015291506116169050565b15610d075760208114610cc05760405162461bcd60e51b815260040180806020018281038252602e815260200180611904602e913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610cfe918585808385018382808284376000920191909152506116fd92505050565b60025550610e80565b610d7b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601d81527f64656e6f6d696e61746f7243616c6c6572436f6d70656e736174696f6e000000602082015291506116169050565b15610e435760208114610dbf5760405162461bcd60e51b815260040180806020018281038252602e815260200180611904602e913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610dfd918585808385018382808284376000920191909152506116fd92505050565b905080610e3b5760405162461bcd60e51b81526004018080602001828103825260358152602001806119ff6035913960400191505060405180910390fd5b600355610e80565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b60006101908211610f24575080610f6f565b81610190108015610f3757506103208211155b15610f455750610190610f6f565b61032082118015610f58575061044c8211155b15610f6957506104b0819003610f6f565b50600481045b919050565b60006101908211610f86575080610f6f565b50610190610f6f565b61100281565b61100381565b60095481565b60045460ff1615610fef576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6001600081905560058155600281905560506003556004805460ff19169091179055565b61100081565b61100481565b60006108cf60015461103c6000548561170290919063ffffffff16565b9063ffffffff61175b16565b6000828201838110156110a2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006110a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061179d565b600954600680546040805160208084028201810190925282815260009493859360609383018282801561114757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611129575b505050505090506060815160405190808252806020026020018201604052801561117b578160200160208202803683370190505b50905060005b825181101561120857600083828151811061119857fe5b6020026020010151905060006111d260056000846001600160a01b03166001600160a01b0316815260200190815260200160002054610f74565b9050808484815181106111e157fe5b60209081029190910101526111fc868263ffffffff61104816565b95505050600101611181565b50600061122660035461103c6002548861170290919063ffffffff16565b9050611238858263ffffffff6110a916565b94508460015b84518110156112ce5760006112738761103c8a88868151811061125d57fe5b602002602001015161170290919063ffffffff16565b905085828151811061128157fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f1506112c393508692508491505063ffffffff6110a916565b92505060010161123e565b50836000815181106112dc57fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f150506040516001600160a01b038c16935085156108fc0292508591506000818181858888f1505060006009819055925050505b8451811015611380576005600086838151811061135257fe5b6020908102919091018101516001600160a01b03168252810191909152604001600090812055600101611339565b5061138d60066000611899565b505050505050919050565b600a5460088054604080516020808402820181019092528281526000949385936060938301828280156113f457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113d6575b5050505050905060608151604051908082528060200260200182016040528015611428578160200160208202803683370190505b50905060005b82518110156114a757600083828151811061144557fe5b60200260200101519050600061147f60076000846001600160a01b03166001600160a01b0316815260200190815260200160002054610f12565b90508084848151811061148e57fe5b602090810291909101015294909401935060010161142e565b5060006114c560035461103c6002548861170290919063ffffffff16565b90506114d7858263ffffffff6110a916565b94508460015b84518110156115575760006114fc8761103c8a88868151811061125d57fe5b905085828151811061150a57fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f15061154c93508692508491505063ffffffff6110a916565b9250506001016114dd565b508360008151811061156557fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f150506040516001600160a01b038c16935085156108fc0292508591506000818181858888f150506000600a819055925050505b845181101561160957600760008683815181106115db57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000908120556001016115c2565b5061138d60086000611899565b6000816040516020018082805190602001908083835b6020831061164b5780518252601f19909201916020918201910161162c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b600082611711575060006108cf565b8282028284828161171e57fe5b04146110a25760405162461bcd60e51b81526004018080602001828103825260218152602001806119326021913960400191505060405180910390fd5b60006110a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611834565b6000818484111561182c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156117f15781810151838201526020016117d9565b50505050905090810190601f16801561181e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836118835760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156117f15781810151838201526020016117d9565b50600083858161188f57fe5b0495945050505050565b50805460008255906000526020600020908101906118b791906118ba565b50565b6118d891905b808211156118d457600081556001016118c0565b5090565b9056fe6c656e677468206f66206d6f6c6563756c6548656164657252656c61796572206d69736d617463686c656e677468206f6620726577617264466f7256616c696461746f725365744368616e6765206d69736d61746368536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520746f6b656e2068756220636f6e7472616374746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374636f6e747261637420686173206e6f74206265656e20696e697469616c697a6564746865206e657744656e6f6d696e61746f7248656164657252656c61796572206d757374206e6f74206265207a65726f746865206e657744656e6f6d696e61746f7243616c6c6572436f6d70656e736174696f6e206d757374206e6f74206265207a65726fa2646970667358221220481066251a3e0f024888291f9d865e19349bc84972446082c311518e612e279164736f6c63430006040033" + "code": "0x6080604052600436106101ee5760003560e01c8063930e1b091161010d578063af400681116100a0578063dc927faf1161006f578063dc927faf146105d1578063dcae76ab146105e6578063e1c7392a146105fb578063f9a2bbc714610610578063fd6a687914610625576101ee565b8063af40068114610568578063bd4cc83014610592578063c7d2b02814610244578063c81b1662146105bc576101ee565b8063a413aff6116100dc578063a413aff614610458578063a60d770b1461046d578063a78abc1614610482578063ac43175114610497576101ee565b8063930e1b09146103e65780639dc0926214610419578063a1a11bf51461042e578063a3c3c0ad14610443576101ee565b806341b5f4e511610185578063572120951161015457806357212095146103745780636e47b482146103a757806375405d0d146103bc57806387c1830a146103d1576101ee565b806341b5f4e51461030b57806343756e5c14610320578063490dfdf714610335578063541333071461035f576101ee565b8063189d8172116101c1578063189d8172146102595780631b20087c1461026e5780631c6433121461028357806340b47e1a146102c9576101ee565b806308f2ec06146101f35780630c7320681461021a57806310e06a761461022f578063117048d814610244575b600080fd5b3480156101ff57600080fd5b5061020861063a565b60408051918252519081900360200190f35b34801561022657600080fd5b50610208610640565b34801561023b57600080fd5b50610208610646565b34801561025057600080fd5b5061020861064c565b34801561026557600080fd5b50610208610651565b34801561027a57600080fd5b50610208610657565b34801561028f57600080fd5b506102ad600480360360208110156102a657600080fd5b503561065d565b604080516001600160a01b039092168252519081900360200190f35b6102f7600480360360408110156102df57600080fd5b506001600160a01b0381358116916020013516610684565b604080519115158252519081900360200190f35b34801561031757600080fd5b5061020861092a565b34801561032c57600080fd5b506102ad61092f565b34801561034157600080fd5b506102ad6004803603602081101561035857600080fd5b5035610935565b34801561036b57600080fd5b50610208610942565b34801561038057600080fd5b506102086004803603602081101561039757600080fd5b50356001600160a01b0316610948565b3480156103b357600080fd5b506102ad61095a565b3480156103c857600080fd5b50610208610960565b3480156103dd57600080fd5b5061020861096b565b3480156103f257600080fd5b506102086004803603602081101561040957600080fd5b50356001600160a01b0316610971565b34801561042557600080fd5b506102ad610983565b34801561043a57600080fd5b506102ad610989565b34801561044f57600080fd5b5061020861098f565b34801561046457600080fd5b50610208610995565b34801561047957600080fd5b5061020861099b565b34801561048e57600080fd5b506102f76109a0565b3480156104a357600080fd5b50610566600480360360408110156104ba57600080fd5b8101906020810181356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184600183028401116401000000008311171561050957600080fd5b91939092909160208101903564010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b5090925090506109a9565b005b34801561057457600080fd5b506102086004803603602081101561058b57600080fd5b5035610f67565b34801561059e57600080fd5b50610208600480360360208110156105b557600080fd5b5035610fc9565b3480156105c857600080fd5b506102ad610fe4565b3480156105dd57600080fd5b506102ad610fea565b3480156105f257600080fd5b50610208610ff0565b34801561060757600080fd5b50610566610ff6565b34801561061c57600080fd5b506102ad611068565b34801561063157600080fd5b506102ad61106e565b61019081565b60025481565b600b5481565b600181565b60035481565b600c5481565b6006818154811061066a57fe5b6000918252602090912001546001600160a01b0316905081565b600033611004146106c65760405162461bcd60e51b815260040180806020018281038252602d8152602001806119aa602d913960400191505060405180910390fd5b60045460ff1661071d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b600c80546001019055600061073134611074565b600954909150610747908263ffffffff61109d16565b600955600a5461076f908290610763903463ffffffff61109d16565b9063ffffffff6110fe16565b600a556001600160a01b0384166000908152600560205260409020546107db57600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b03808516600090815260056020908152604080832080546001019055928616825260079052205461085957600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0385161790555b6001600160a01b038316600090815260076020526040902080546001019055600c546103e8141561091e57600b54600954600a5460408051938452602084019290925282820152517f127fd0fd1fcf84c71c5c649625ef186be105a71ecc80c7cb3f96cd99ccae1e0f9181900360600190a16108d483611140565b6108dd836113ed565b6040516110029081904780156108fc02916000818181858888f1935050505015801561090d573d6000803e3d6000fd5b5050600b805460010190556000600c555b60019150505b92915050565b605081565b61100181565b6008818154811061066a57fe5b6103e881565b60076020526000908152604090205481565b61100581565b66b1a2bc2ec5000081565b60005481565b60056020526000908152604090205481565b61100781565b61100681565b600a5481565b60015481565b600581565b60045460ff1681565b33611007146109e95760405162461bcd60e51b815260040180806020018281038252602e8152602001806119d7602e913960400191505060405180910390fd5b60045460ff16610a2a5760405162461bcd60e51b8152600401808060200182810382526021815260200180611a056021913960400191505060405180910390fd5b610a9684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527436b7b632b1bab632a432b0b232b92932b630bcb2b960591b6020820152915061166d9050565b15610b215760208114610ada5760405162461bcd60e51b81526004018080602001828103825260288152602001806119336028913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610b189185858083850183828082843760009201919091525061175492505050565b60005550610ed5565b610b9584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f64656e6f6d696e61746f7248656164657252656c6179657200000000000000006020820152915061166d9050565b15610c5d5760208114610bd95760405162461bcd60e51b815260040180806020018281038252602e81526020018061195b602e913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610c179185858083850183828082843760009201919091525061175492505050565b905080610c555760405162461bcd60e51b8152600401808060200182810382526030815260200180611a266030913960400191505060405180910390fd5b600155610ed5565b610cd184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f6d6f6c6563756c6543616c6c6572436f6d70656e736174696f6e0000000000006020820152915061166d9050565b15610d5c5760208114610d155760405162461bcd60e51b815260040180806020018281038252602e81526020018061195b602e913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610d539185858083850183828082843760009201919091525061175492505050565b60025550610ed5565b610dd084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601d81527f64656e6f6d696e61746f7243616c6c6572436f6d70656e736174696f6e0000006020820152915061166d9050565b15610e985760208114610e145760405162461bcd60e51b815260040180806020018281038252602e81526020018061195b602e913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091610e529185858083850183828082843760009201919091525061175492505050565b905080610e905760405162461bcd60e51b8152600401808060200182810382526035815260200180611a566035913960400191505060405180910390fd5b600355610ed5565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b60006101908211610f79575080610fc4565b81610190108015610f8c57506103208211155b15610f9a5750610190610fc4565b61032082118015610fad575061044c8211155b15610fbe57506104b0819003610fc4565b50600481045b919050565b60006101908211610fdb575080610fc4565b50610190610fc4565b61100281565b61100381565b60095481565b60045460ff1615611044576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6001600081905560058155600281905560506003556004805460ff19169091179055565b61100081565b61100481565b60006109246001546110916000548561175990919063ffffffff16565b9063ffffffff6117b216565b6000828201838110156110f7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006110f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117f4565b6009546006805460408051602080840282018101909252828152600093606093919290919083018282801561119e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611180575b50505050509050606081516040519080825280602002602001820160405280156111d2578160200160208202803683370190505b50905060005b825181101561125f5760008382815181106111ef57fe5b60200260200101519050600061122960056000846001600160a01b03166001600160a01b0316815260200190815260200160002054610fc9565b90508084848151811061123857fe5b6020908102919091010152611253868263ffffffff61109d16565b955050506001016111d8565b50600061127d6003546110916002548861175990919063ffffffff16565b905061128f858263ffffffff6110fe16565b94508460015b84518110156113255760006112ca876110918a8886815181106112b457fe5b602002602001015161175990919063ffffffff16565b90508582815181106112d857fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f15061131a93508692508491505063ffffffff6110fe16565b925050600101611295565b508360008151811061133357fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f150506040516001600160a01b038b16935085156108fc0292508591506000818181858888f1505060006009819055925050505b84518110156113d757600560008683815181106113a957fe5b6020908102919091018101516001600160a01b03168252810191909152604001600090812055600101611390565b506113e4600660006118f0565b50505050505050565b600a546008805460408051602080840282018101909252828152600093606093919290919083018282801561144b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161142d575b505050505090506060815160405190808252806020026020018201604052801561147f578160200160208202803683370190505b50905060005b82518110156114fe57600083828151811061149c57fe5b6020026020010151905060006114d660076000846001600160a01b03166001600160a01b0316815260200190815260200160002054610f67565b9050808484815181106114e557fe5b6020908102919091010152949094019350600101611485565b50600061151c6003546110916002548861175990919063ffffffff16565b905061152e858263ffffffff6110fe16565b94508460015b84518110156115ae576000611553876110918a8886815181106112b457fe5b905085828151811061156157fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f1506115a393508692508491505063ffffffff6110fe16565b925050600101611534565b50836000815181106115bc57fe5b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f150506040516001600160a01b038b16935085156108fc0292508591506000818181858888f150506000600a819055925050505b8451811015611660576007600086838151811061163257fe5b6020908102919091018101516001600160a01b03168252810191909152604001600090812055600101611619565b506113e4600860006118f0565b6000816040516020018082805190602001908083835b602083106116a25780518252601f199092019160209182019101611683565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106117105780518252601f1990920191602091820191016116f1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008261176857506000610924565b8282028284828161177557fe5b04146110f75760405162461bcd60e51b81526004018080602001828103825260218152602001806119896021913960400191505060405180910390fd5b60006110f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061188b565b600081848411156118835760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611848578181015183820152602001611830565b50505050905090810190601f1680156118755780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836118da5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611848578181015183820152602001611830565b5060008385816118e657fe5b0495945050505050565b508054600082559060005260206000209081019061190e9190611911565b50565b61192f91905b8082111561192b5760008155600101611917565b5090565b9056fe6c656e677468206f66206d6f6c6563756c6548656164657252656c61796572206d69736d617463686c656e677468206f6620726577617264466f7256616c696461746f725365744368616e6765206d69736d61746368536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520746f6b656e2068756220636f6e7472616374746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374636f6e747261637420686173206e6f74206265656e20696e697469616c697a6564746865206e657744656e6f6d696e61746f7248656164657252656c61796572206d757374206e6f74206265207a65726f746865206e657744656e6f6d696e61746f7243616c6c6572436f6d70656e736174696f6e206d757374206e6f74206265207a65726fa2646970667358221220a6437cf9934266bc3d10e88a8412bb8c1d5270fb9bd4fc6e6d8b2ab90eff98ec64736f6c63430006040033" }, "0x0000000000000000000000000000000000001006": { "balance": "0x0",