2 txs
3 calls
constructor
constructor(uint96 start_epoch, uint96 end_epoch, uint256 reward_amount, address _modulex_addr, address _rewards_token)
functions
CLAIM_PERIOD
viewfunction CLAIM_PERIOD() view returns (uint96)
CREDI
viewfunction CREDI() view returns (address)
duration_multiplier
viewfunction duration_multiplier(uint96) view returns (uint32)
getStake
viewfunction getStake(address owner, uint256 stake_id) view returns (uint256 stake_amount, uint256 modulex_stake_id, uint96 maturity, uint256 multiplier)
getUserInfo
viewfunction getUserInfo(address owner) view returns (uint256 xpoints, uint256 xtier, uint256 reward_amount, uint256 reward_rate_cumsum, uint256 stakes_count)
getUserRewards
viewfunction getUserRewards(address owner) view returns (uint256)
MODULEX
viewfunction MODULEX() view returns (address)
multiplier_BASE
viewfunction multiplier_BASE() view returns (uint32)
owner
viewfunction owner() view returns (address)
pool
viewfunction pool() view returns (address staking_token, uint96 start_epoch, address rewards_token, uint96 end_epoch, uint256 effective_xpoints, uint256 reward_rate, uint256 reward_rate_cumsum, uint96 last_update_epoch)
SCALE_FACTOR
viewfunction SCALE_FACTOR() view returns (uint256)
addRewards
nonpayablefunction addRewards(uint256 amount)
claimRewards
nonpayablefunction claimRewards()
extendRewards
nonpayablefunction extendRewards(uint96 duration, uint256 reward_amount, uint256 transfer_reward_amount)
renounceOwnership
nonpayablefunction renounceOwnership()
restake
nonpayablefunction restake(uint256 stake_id, uint96 lock_period, uint256 amount)
setDurationMultiplier
nonpayablefunction setDurationMultiplier(uint96 duration, uint32 multiplier)
setXTierMultipliers
nonpayablefunction setXTierMultipliers(uint256[] _thresholds, uint256[] _mulitpliers)
stake
nonpayablefunction stake(uint96 lock_period, uint256 amount)
stakeCREDI
nonpayablefunction stakeCREDI(uint96 lock_period, uint256 CREDI_amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(uint256 stake_id, bool claim_rewards)
unstakePerpetual
nonpayablefunction unstakePerpetual(uint256 amount, bool claim_rewards)
withdrawRewards
nonpayablefunction withdrawRewards(address to, uint256 amount)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolCreated
event PoolCreated(address staking_token, address rewards_token, uint96 start_epoch, uint256 scale_factor)
PoolUpdated
event PoolUpdated(uint256 effective_xpoints, uint256 reward_rate, uint256 reward_rate_cumsum, uint96 last_update_epoch, uint96 end_epoch)
RewardAdded
event RewardAdded(uint256 amount)
RewardPaid
event RewardPaid(address indexed user, uint256 amount)
RewardWithdrawn
event RewardWithdrawn(address indexed to, uint256 amount)
SetDurationMultiplier
event SetDurationMultiplier(uint96 duration, uint32 multiplier)
SetXTierMultipliers
event SetXTierMultipliers(uint256[] thresholds, uint256[] multipliers)
StakeUpdated
event StakeUpdated(uint256 stake_id, address indexed user, uint256 stake_amount, uint256 modulex_stake_id, uint96 maturity, uint96 lock_period)
StakeWithdrawn
event StakeWithdrawn(uint256 stake_id, address indexed user, uint256 amount)
UserUpdated
event UserUpdated(address indexed owner, uint256 xpoints, uint256 reward_amount, uint256 reward_rate_cumsum)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6101406040525f60c090815269021e19e0c9bab240000060e05269054b40b1f852bda0000061010052690a968163f0a57b4000006101205261004590600290600461066d565b50604080516080810182526103e881526105dc60208201526107d091810191909152610bb8606082015261007d9060039060046106c1565b50348015610089575f5ffd5b50604051612c0b380380612c0b8339810160408190526100a891610745565b33806100ce57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100d781610549565b50600180556001600160a01b03821660a081905260408051636a30a4d160e11b8152905163d46149a2916004808201926020929091908290030181865afa158015610124573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610148919061079f565b6001600160a01b03166080525f805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec805463ffffffff19166103e81790556001600160601b03841661019d4290565b6001600160601b0316106102195760405162461bcd60e51b815260206004820152603360248201527f50726f66697453686172653a456e642074696d65206d7573742062652067726560448201527f61746572207468616e2074696d655f6e6f77210000000000000000000000000060648201526084016100c5565b6102356001600160601b038616426001600160601b0316610598565b9450836001600160601b0316856001600160601b0316106102b35760405162461bcd60e51b815260206004820152603260248201527f50726f66697453686172653a53746172742074696d65206d757374206265206c604482015271657373207468616e20656e642074696d652160701b60648201526084016100c5565b5f6102be86866107cc565b6001600160601b03166102da85683635c9adc5dea000006107eb565b6102e49190610802565b905060405180610100016040528060a0516001600160a01b0316637c2fdeb56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610354919061079f565b6001600160a01b0390811682526001600160601b0389811660208085018290528784166040808701919091528b84166060808801919091525f608080890182905260a0808a018c905260c0808b019390935260e0998a019690965289518a860151908916600160a01b918916820281811760078190558d8801518e880151908d16908c1685028181176008558f8701516009559a8f0151600a55958e0151600b559c909b0151600c80546001600160601b031916918b1691909117905585519a8a16178a529590971617928701929092529190950490911690830152683635c9adc5dea00000928201929092527fdc04d80ebe596008505211bb5ef7b7b76945b378723c7fbc1dd952cd919394bb910160405180910390a1600954600a54600b54600c54600854604080519586526020860194909452848401929092526001600160601b039081166060850152600160a01b909104166080830152517fe111f67a87ace56a1496291914b8e0da23748ffddaa8bc98d0f4d4dfb51796a59181900360a00190a1604080515f81526103e860208201525f516020612beb5f395f51905f52910160405180910390a161051062278d006107d06105ac565b61051f6276a700610bb86105ac565b61052e62ed4e00610fa06105ac565b61053e6301da9c006117706105ac565b505050505050610821565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8282188284110282185b90505b92915050565b6105b461063f565b5f826001600160601b03161180156105e1575063ffffffff81166103e810806105e1575063ffffffff8116155b6105e9575f5ffd5b6001600160601b0382165f81815260046020908152604091829020805463ffffffff191663ffffffff86169081179091558251938452908301525f516020612beb5f395f51905f52910160405180910390a15050565b5f546001600160a01b0316331461066b5760405163118cdaa760e01b81523360048201526024016100c5565b565b828054828255905f5260205f209081019282156106b1579160200282015b828111156106b157825182906001600160501b031690559160200191906001019061068b565b506106bd929150610700565b5090565b828054828255905f5260205f209081019282156106b1579160200282015b828111156106b1578251829061ffff169055916020019190600101906106df565b5b808211156106bd575f8155600101610701565b80516001600160601b038116811461072a575f5ffd5b919050565b80516001600160a01b038116811461072a575f5ffd5b5f5f5f5f5f60a08688031215610759575f5ffd5b61076286610714565b945061077060208701610714565b9350604086015192506107856060870161072f565b91506107936080870161072f565b90509295509295909350565b5f602082840312156107af575f5ffd5b6105a38261072f565b634e487b7160e01b5f52601160045260245ffd5b6001600160601b0382811682821603908111156105a6576105a66107b8565b80820281158282048414176105a6576105a66107b8565b5f8261081c57634e487b7160e01b5f52601260045260245ffd5b500490565b60805160a0516123866108655f395f81816103b001528181610b4601528181610c2a0152610f2a01525f81816102d301528181610ae60152610b7501526123865ff3fe608060405234801561000f575f5ffd5b506004361061018e575f3560e01c806399c1e891116100dd578063ce4b5bbe11610088578063d93c04a011610063578063d93c04a014610470578063da540bbf14610483578063f2fde38b1461048c575f5ffd5b8063ce4b5bbe1461040b578063cfd476631461041b578063d6ef7af01461045d575f5ffd5b8063beceed39116100b8578063beceed39146103d2578063c96d6635146103e5578063ccc54f2e146103f8575f5ffd5b806399c1e891146103855780639ebea88c14610398578063b1da1b2d146103ab575f5ffd5b80636db08f251161013d5780638af6e880116101185780638af6e880146103285780638c793330146103625780638da5cb5b14610375575f5ffd5b80636db08f25146102ce5780637135cd6a1461030d578063715018a614610320575f5ffd5b806321241dfe1161016d57806321241dfe14610269578063372500ab1461028b5780636386c1c714610293575f5ffd5b806272c74414610192578063078b0fb7146101a757806316f0115b146101cd575b5f5ffd5b6101a56101a0366004611fc9565b61049f565b005b6101ba6101b5366004612050565b6105f3565b6040519081526020015b60405180910390f35b600754600854600954600a54600b54600c54610214956001600160a01b03808216966001600160601b03600160a01b93849004811697928216969390910481169491931688565b604080516001600160a01b03998a1681526001600160601b03988916602082015298909616958801959095529285166060870152608086019190915260a085015260c08401521660e0820152610100016101c4565b6102736234bc0081565b6040516001600160601b0390911681526020016101c4565b6101a5610708565b6102a66102a1366004612050565b61072f565b604080519586526020860194909452928401919091526060830152608082015260a0016101c4565b6102f57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101c4565b6101a561031b36600461207f565b61077c565b6101a561090e565b61034d6103363660046120af565b60046020525f908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101c4565b6101a56103703660046120c8565b61091f565b5f546001600160a01b03166102f5565b6101a56103933660046120fb565b610ad9565b6101a56103a6366004612130565b610d85565b6102f57f000000000000000000000000000000000000000000000000000000000000000081565b6101a56103e036600461215e565b611048565b6101a56103f3366004612175565b611054565b6101a5610406366004612130565b6110fa565b6101ba683635c9adc5dea0000081565b61042e6104293660046121a7565b61118b565b6040516101c4949392919093845260208401929092526001600160601b03166040830152606082015260800190565b6101a561046b3660046121a7565b611261565b6101a561047e3660046120fb565b611375565b61034d6103e881565b6101a561049a366004612050565b6113e8565b6104a761143b565b82811480156104b557508015155b6104bd575f5ffd5b6104f88484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061148092505050565b805161050c91600291602090910190611f24565b506105488282808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061148092505050565b805161055c91600391602090910190611f24565b5060025f81548110610570576105706121c1565b905f5260205f2001545f1480156105aa57506103e863ffffffff1660035f8154811061059e5761059e6121c1565b905f5260205f20015410155b6105b2575f5ffd5b7f36636bd3caf33bddbd656aadda2fc454e5093f7cec3de1405319ef0ef3aa6ba7600260036040516105e5929190612212565b60405180910390a150505050565b6001600160a01b0381165f908152600560205260408120600c548290610643906001600160601b031661063e425b6008546001600160601b0391821691600160a01b90910416611495565b6114a9565b600b5460095491925090158015906106695750600c546001600160601b03908116908316115b156106b757600954600a54600c5461068a906001600160601b03168561224a565b6001600160601b031661069d9190612269565b6106a79190612280565b600b546106b4919061229f565b90505b683635c9adc5dea000008360020154826106d191906122b2565b84546106dc906114b8565b6106e69190612269565b6106f09190612280565b83600101546106ff919061229f565b95945050505050565b61071061150e565b61071b335f5f611551565b610724336117a0565b61072d60018055565b565b6001600160a01b0381165f9081526005602052604081208054829182918291829161075b600282611831565b60018301546002840154600390940154929a91995097509195509350915050565b61078461143b565b61078f5f5f5f611551565b6008544290600160a01b90046001600160601b03908116908216106107dd576001600160601b0384166107cb84683635c9adc5dea00000612269565b6107d59190612280565b600a55610841565b600a546008546001600160601b038087169291610803918591600160a01b90041661224a565b6001600160601b03166108169190612269565b61082985683635c9adc5dea00000612269565b610833919061229f565b61083d9190612280565b600a555b600c80546bffffffffffffffffffffffff19166001600160601b03831617905561086b84826122c5565b600880546001600160601b0392909216600160a01b026001600160a01b0390921691909117905581156108a1576108a18261188c565b600954600a54600b54600c54600854604080519586526020860194909452928401919091526001600160601b039081166060840152600160a01b9091041660808201527fe111f67a87ace56a1496291914b8e0da23748ffddaa8bc98d0f4d4dfb51796a59060a0016105e5565b61091661143b565b61072d5f61193f565b61092761150e565b335f81815260056020526040902060030154849061094690600161229f565b81106109995760405162461bcd60e51b815260206004820152601d60248201527f50726f66697453686172653a496e76616c6964205374616b652049442100000060448201526064015b60405180910390fd5b82156109b7576109b7336007546001600160a01b03169030866119a6565b335f90815260066020908152604080832088845282528083206001600160601b0388168452600490925290912054600282015463ffffffff918216600160601b9091049091161115610a715760405162461bcd60e51b815260206004820152602360248201527f50726f66697453686172653a557365206c6f6e676572206c6f636b5f7065726960448201527f6f642100000000000000000000000000000000000000000000000000000000006064820152608401610990565b80545f90610a7f908661229f565b9050610a8d33835489611a22565b865f03610abb57335f9081526005602052604081206003018054909190610ab3906122e4565b918290555096505b610ac73387838a611b4d565b50505050610ad460018055565b505050565b610ae161150e565b610b167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163330846119a6565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610bbb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdf91906122fc565b506040517fd93c04a00000000000000000000000000000000000000000000000000000000081526001600160601b0383166004820152602481018290525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d93c04a09060440160408051808303815f875af1158015610c6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c939190612317565b915091505f846001600160601b03165f14610cd157335f9081526005602052604081206003018054909190610cc7906122e4565b9182905550610cd3565b5f5b90505f8111610d4a5760405162461bcd60e51b815260206004820152602f60248201527f50726f66697453686172653a7374616b655f6964206d7573742062652067726560448201527f61746572207468616e207a65726f2100000000000000000000000000000000006064820152608401610990565b335f8181526006602090815260408083208584529091529020600101849055610d7590868484611b4d565b505050610d8160018055565b5050565b610d8d61150e565b335f818152600560205260409020600301548390610dac90600161229f565b8110610dfa5760405162461bcd60e51b815260206004820152601d60248201527f50726f66697453686172653a496e76616c6964205374616b65204944210000006044820152606401610990565b335f908152600660209081526040808320878452909152902060028101546001600160601b03908116429091161015610e9b5760405162461bcd60e51b815260206004820152602e60248201527f50726f66697453686172653a4561726c79205769746864726177616c2069732060448201527f6e6f74207065726d6974746564210000000000000000000000000000000000006064820152608401610990565b8054610ee95760405162461bcd60e51b815260206004820152601c60248201527f50726f66697453686172653a4e6f7468696e6720746f20636c61696d000000006044820152606401610990565b6001810154156110145760018101546040517f379607f50000000000000000000000000000000000000000000000000000000081525f916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163379607f591610f619160040190815260200190565b6020604051808303815f875af1158015610f7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa19190612339565b116110145760405162461bcd60e51b815260206004820152602d60248201527f50726f66697453686172653a43616e6e6f7420636c61696d207843524544492060448201527f66726f6d204d6f64756c655821000000000000000000000000000000000000006064820152608401610990565b61102d3382546007546001600160a01b03169190611d76565b61103933825487611a22565b8315610d7557610d75336117a0565b6110518161188c565b50565b61105c61143b565b5f826001600160601b0316118015611089575063ffffffff81166103e81080611089575063ffffffff8116155b611091575f5ffd5b6001600160601b0382165f81815260046020908152604091829020805463ffffffff191663ffffffff86169081179091558251938452908301527f0dfde28ba1cfae98db642e3246355850b37332d75f04945da4676e38ad045386910160405180910390a15050565b61110261150e565b5f82116111515760405162461bcd60e51b815260206004820152601160248201527f43616e6e6f7420756e7374616b652030210000000000000000000000000000006044820152606401610990565b611168336007546001600160a01b03169084611d76565b61117333835f611a22565b801561118257611182336117a0565b610d8160018055565b6001600160a01b0382165f90815260056020526040812060030154819081908190869086906111bb90600161229f565b81106112095760405162461bcd60e51b815260206004820152601d60248201527f50726f66697453686172653a496e76616c6964205374616b65204944210000006044820152606401610990565b505050506001600160a01b03939093165f908152600660209081526040808320948352939052919091208054600182015460029092015490949193506001600160601b0381169250600160601b900463ffffffff1690565b61126961143b565b5f81116112ce5760405162461bcd60e51b815260206004820152602d60248201527f50726f66697453686172653a616d6f756e74206d75737420626520677265617460448201526c6572207468616e207a65726f2160981b6064820152608401610990565b6008546112ef906234bc0090600160a01b90046001600160601b03166122c5565b6001600160601b0316426001600160601b031610158061130f5750600954155b611317575f5ffd5b60085461132e906001600160a01b03168383611d76565b816001600160a01b03167f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e13378260405161136991815260200190565b60405180910390a25050565b61137d61150e565b611395336007546001600160a01b03169030846119a6565b5f6001600160601b038316156113ce57335f90815260056020526040812060030180549091906113c4906122e4565b91829055506113d0565b5f5b90506113de33848484611b4d565b50610d8160018055565b6113f061143b565b6001600160a01b038116611432576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610990565b6110518161193f565b5f546001600160a01b0316331461072d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610990565b606061148e82611da7611dab565b5090919050565b5f8282188284100282185b90505b92915050565b5f8282188284110282186114a0565b5f5f600360016114c9600286611831565b6114d391906122b2565b815481106114e3576114e36121c1565b5f9182526020909120015490506103e86114fd8483612269565b6115079190612280565b9392505050565b60026001540361154a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b600c545f9061156c906001600160601b031661063e42610621565b6009549091501580159061158e5750600c546001600160601b03908116908216115b156115e357600954600a54600c546115af906001600160601b03168461224a565b6001600160601b03166115c29190612269565b6115cc9190612280565b600b80545f906115dd90849061229f565b90915550505b600c80546bffffffffffffffffffffffff19166001600160601b0383161790556001600160a01b0384161561179a576001600160a01b0384165f9081526005602052604081208054909190611637906114b8565b825490915015611689576002820154600b54683635c9adc5dea000009161165d916122b2565b6116679083612269565b6116719190612280565b826001015f828254611683919061229f565b90915550505b600b546002830155815484906116a090879061229f565b6116aa91906122b2565b80835581906116b8906114b8565b6009546116c5919061229f565b6116cf91906122b2565b600955815460018301546002840154604080519384526020840192909252908201526001600160a01b038716907ff1da46a1ca3e37613208b2a3d7ec556866482d77a0005d6168d73270ced6b26a9060600160405180910390a2600954600a54600b54600c54600854604080519586526020860194909452848401929092526001600160601b039081166060850152600160a01b909104166080830152517fe111f67a87ace56a1496291914b8e0da23748ffddaa8bc98d0f4d4dfb51796a59181900360a00190a150505b50505050565b6001600160a01b0381165f908152600560205260409020600181015415610d815760018101546008546117e0916001600160a01b03909116908490611d76565b816001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826001015460405161181f91815260200190565b60405180910390a25f60018201555050565b81545f908190808203611848575f925050506114a3565b80821015611884575f61185b8383611dc3565b9050846118688783611ddd565b5411156118775780915061187e565b8060010192505b50611848565b509392505050565b5f81116118f15760405162461bcd60e51b815260206004820152602d60248201527f50726f66697453686172653a616d6f756e74206d75737420626520677265617460448201526c6572207468616e207a65726f2160981b6064820152608401610990565b611909336008546001600160a01b03169030846119a6565b6040518181527fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9060200160405180910390a150565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03848116602483015283811660448301526064820183905261179a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e04565b6001600160a01b0383165f90815260066020908152604080832084845290915290208054831115611abb5760405162461bcd60e51b815260206004820152602160248201527f50726f66697453686172653a496e73756666696369656e742062616c616e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610990565b60028101545f906103e890611add90600160601b900463ffffffff1686612269565b611ae79190612280565b9050611af4855f83611551565b83825f015f828254611b0691906122b2565b9091555050604080518481526020810186905233917f459d5aef2c549903c1eeb1736f5728845d5ccf82537ddd5bf8035795eee89263910160405180910390a25050505050565b600754600160a01b90046001600160601b0316426001600160601b031610158015611b925750600854600160a01b90046001600160601b0316426001600160601b0316105b611bde5760405162461bcd60e51b815260206004820152601f60248201527f50726f66697453686172653a506f6f6c206973206e6f742061637469766521006044820152606401610990565b6001600160601b0383165f9081526004602052604081205463ffffffff16906103e8611c0a8386612269565b611c149190612280565b90505f8111611c8b5760405162461bcd60e51b815260206004820152603960248201527f50726f66697453686172653a616d6f756e7420616e64206d756c7469706c696560448201527f72206d7573742062652067726561746572207468616e203021000000000000006064820152608401610990565b611c9686825f611551565b335f9081526006602090815260408083208684529091528120805490918691839190611cc390849061229f565b90915550611cd3905086426122c5565b6002820180546001600160601b039283166fffffffffffffffffffffffffffffffff1990911617600160601b63ffffffff871602179081905582546001840154604080518981526020810193909352820152908216606082015290871660808201526001600160a01b038816907ffb323914bfe99940926cd03fe7969535604dd9a3c82b28853e738744dd6f9aaa9060a00160405180910390a250505050505050565b6040516001600160a01b03838116602483015260448201839052610ad491859182169063a9059cbb906064016119db565b1190565b606061148e60208401611dbd85611e89565b84611ea0565b5f611dd16002848418612280565b6114a09084841661229f565b5f82611dfc611df984611df5845f9081526020902090565b0190565b90565b949350505050565b5f5f60205f8451602086015f885af180611e23576040513d5f823e3d81fd5b50505f513d91508115611e3a578060011415611e47565b6001600160a01b0384163b155b1561179a576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610990565b5f8151602002611e998360200190565b0192915050565b60408383031015611eb057505050565b5f611eb9845190565b905083602081015b84811015611efb57611ede611ed4825190565b848663ffffffff16565b15611ef3576020919091018051825182528252905b602001611ec1565b508451815186528152611f0f858285611ea0565b611f1d816020018585611ea0565b5050505050565b828054828255905f5260205f20908101928215611f5d579160200282015b82811115611f5d578251825591602001919060010190611f42565b50611f69929150611f6d565b5090565b5b80821115611f69575f8155600101611f6e565b5f5f83601f840112611f91575f5ffd5b50813567ffffffffffffffff811115611fa8575f5ffd5b6020830191508360208260051b8501011115611fc2575f5ffd5b9250929050565b5f5f5f5f60408587031215611fdc575f5ffd5b843567ffffffffffffffff811115611ff2575f5ffd5b611ffe87828801611f81565b909550935050602085013567ffffffffffffffff81111561201d575f5ffd5b61202987828801611f81565b95989497509550505050565b80356001600160a01b038116811461204b575f5ffd5b919050565b5f60208284031215612060575f5ffd5b6114a082612035565b80356001600160601b038116811461204b575f5ffd5b5f5f5f60608486031215612091575f5ffd5b61209a84612069565b95602085013595506040909401359392505050565b5f602082840312156120bf575f5ffd5b6114a082612069565b5f5f5f606084860312156120da575f5ffd5b833592506120ea60208501612069565b929592945050506040919091013590565b5f5f6040838503121561210c575f5ffd5b61211583612069565b946020939093013593505050565b8015158114611051575f5ffd5b5f5f60408385031215612141575f5ffd5b82359150602083013561215381612123565b809150509250929050565b5f6020828403121561216e575f5ffd5b5035919050565b5f5f60408385031215612186575f5ffd5b61218f83612069565b9150602083013563ffffffff81168114612153575f5ffd5b5f5f604083850312156121b8575f5ffd5b61211583612035565b634e487b7160e01b5f52603260045260245ffd5b5f8154808452602084019350825f5260205f205f5b828110156122085781548652602090950194600191820191016121ea565b5093949350505050565b604081525f61222460408301856121d5565b82810360208401526106ff81856121d5565b634e487b7160e01b5f52601160045260245ffd5b6001600160601b0382811682821603908111156114a3576114a3612236565b80820281158282048414176114a3576114a3612236565b5f8261229a57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156114a3576114a3612236565b818103818111156114a3576114a3612236565b6001600160601b0381811683821601908111156114a3576114a3612236565b5f600182016122f5576122f5612236565b5060010190565b5f6020828403121561230c575f5ffd5b815161150781612123565b5f5f60408385031215612328575f5ffd5b505080516020909101519092909150565b5f60208284031215612349575f5ffd5b505191905056fea264697066735822122017e2e67206177e9cff36aac764ad6f7b130c344e0ec4a0843e2462ca632ccf1564736f6c634300081e00330dfde28ba1cfae98db642e3246355850b37332d75f04945da4676e38ad0453860000000000000000000000000000000000000000000000000000000068512e9000000000000000000000000000000000000000000000000000000000685a691000000000000000000000000000000000000000000000000000000000165a0bc0000000000000000000000000debb1411896e15f1f17013e18444ada1795a3acf000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48