618 txs
601 calls
constructor
constructor()
functions
accTokenPerShare
viewfunction accTokenPerShare() view returns (uint256)
bonusEndBlock
viewfunction bonusEndBlock() view returns (uint256)
canWithdraw
viewfunction canWithdraw(address _user) view returns (bool)
depositFee
viewfunction depositFee() view returns (uint256)
fees
viewfunction fees() view returns (uint256)
hasHoldTokenLimit
viewfunction hasHoldTokenLimit() view returns (bool)
hasMaxStakedLimit
viewfunction hasMaxStakedLimit() view returns (bool)
hasMinDepositLimit
viewfunction hasMinDepositLimit() view returns (bool)
hasUserLimit
viewfunction hasUserLimit() view returns (bool)
holdToken
viewfunction holdToken() view returns (address)
isExcludedFromDepositFee
viewfunction isExcludedFromDepositFee(address account) view returns (bool)
isInitialized
viewfunction isInitialized() view returns (bool)
lastRewardBlock
viewfunction lastRewardBlock() view returns (uint256)
MAXIMUM_WITHDRAWAL_INTERVAL
viewfunction MAXIMUM_WITHDRAWAL_INTERVAL() view returns (uint256)
maxStakedAmount
viewfunction maxStakedAmount() view returns (uint256)
minAmountToHold
viewfunction minAmountToHold() view returns (uint256)
minDepositAmount
viewfunction minDepositAmount() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingReward
viewfunction pendingReward(address _user) view returns (uint256)
poolLimitPerUser
viewfunction poolLimitPerUser() view returns (uint256)
PRECISION_FACTOR
viewfunction PRECISION_FACTOR() view returns (uint256)
rewardPerBlock
viewfunction rewardPerBlock() view returns (uint256)
rewardToken
viewfunction rewardToken() view returns (address)
stakedToken
viewfunction stakedToken() view returns (address)
stakedTokenTransferFee
viewfunction stakedTokenTransferFee() view returns (uint16)
startBlock
viewfunction startBlock() view returns (uint256)
SWAP_BOX_FACTORY
viewfunction SWAP_BOX_FACTORY() view returns (address)
totalStaked
viewfunction totalStaked() view returns (uint256)
userInfo
viewfunction userInfo(address) view returns (uint256 amount, uint256 rewardDebt, uint256 nextWithdrawalUntil)
withdrawalInterval
viewfunction withdrawalInterval() view returns (uint256)
deposit
nonpayablefunction deposit(uint256 _amount)
emergencyRewardWithdraw
nonpayablefunction emergencyRewardWithdraw(uint256 _amount)
emergencyWithdraw
nonpayablefunction emergencyWithdraw()
excludeFromFees
nonpayablefunction excludeFromFees(address user, bool exclude)
initialize
nonpayablefunction initialize(address _stakedToken, address _rewardToken, uint256 _rewardPerBlock, uint256 _startBlock, uint256 _bonusEndBlock, uint256 _poolLimitPerUser, uint16 _stakedTokenTransferFee, uint256 _depositFee, uint256 _withdrawalInterval, address _admin)
recoverWrongTokens
nonpayablefunction recoverWrongTokens(address _tokenAddress, uint256 _tokenAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
stopReward
nonpayablefunction stopReward()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateDepositFee
nonpayablefunction updateDepositFee(uint256 _depositFee)
updateMaxStakedAmount
nonpayablefunction updateMaxStakedAmount(bool _hasMaxStakedLimit, uint256 _maxStakedAmount)
updateMinDepositAmount
nonpayablefunction updateMinDepositAmount(bool _hasMinDepositLimit, uint256 _minDepositAmount)
updateMinHoldTokenAmount
nonpayablefunction updateMinHoldTokenAmount(address _holdToken, bool _hasHoldTokenLimit, uint256 _minAmountToHold)
updatePoolLimitPerUser
nonpayablefunction updatePoolLimitPerUser(bool _hasUserLimit, uint256 _poolLimitPerUser)
updateRewardPerBlock
nonpayablefunction updateRewardPerBlock(uint256 _rewardPerBlock)
updateStakedTokenTransferFee
nonpayablefunction updateStakedTokenTransferFee(uint16 _transferFee)
updateStartAndEndBlocks
nonpayablefunction updateStartAndEndBlocks(uint256 _startBlock, uint256 _bonusEndBlock)
updateWithdrawalInterval
nonpayablefunction updateWithdrawalInterval(uint256 _interval)
withdraw
nonpayablefunction withdraw(uint256 _amount)
withdrawFees
nonpayablefunction withdrawFees()
events
AdminTokenRecovery
event AdminTokenRecovery(address tokenRecovered, uint256 amount)
Deposit
event Deposit(address indexed user, uint256 amount)
EmergencyWithdraw
event EmergencyWithdraw(address indexed user, uint256 amount)
NewDepositFee
event NewDepositFee(uint256 depositFee)
NewMaxStakedAmount
event NewMaxStakedAmount(uint256 maxAmount)
NewMinDepositAmount
event NewMinDepositAmount(uint256 maxAmount)
NewMinHoldTokenBalance
event NewMinHoldTokenBalance(uint256 maxAmount)
NewPoolLimit
event NewPoolLimit(uint256 poolLimitPerUser)
NewRewardPerBlock
event NewRewardPerBlock(uint256 rewardPerBlock)
NewStakedTokenTransferFee
event NewStakedTokenTransferFee(uint16 transferFee)
NewStartAndEndBlocks
event NewStartAndEndBlocks(uint256 startBlock, uint256 endBlock)
NewWithdrawalInterval
event NewWithdrawalInterval(uint256 interval)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardsStop
event RewardsStop(uint256 blockNumber)
WhiteListAddress
event WhiteListAddress(address whiteListedAddress, bool whitelisted)
Withdraw
event Withdraw(address indexed user, uint256 amount)
WithdrawFees
event WithdrawFees(uint256 amount)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b5060006200001e62000084565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055600280546001600160a01b0319163317905562000088565b3390565b613c2180620000986000396000f3fe608060405234801561001057600080fd5b50600436106103365760003560e01c80637d0a75cc116101b2578063a0b40905116100f9578063cc7a262e116100a2578063dde0449a1161007c578063dde0449a146107c4578063f2fde38b146107cc578063f40f0f52146107ff578063f7c618c11461083257610336565b8063cc7a262e146107ac578063ccd34cd5146107b4578063db2e21bc146107bc57610336565b8063b6b55f25116100d3578063b6b55f2514610721578063bb76596b1461073e578063c02466681461077157610336565b8063a0b40905146106ec578063a943dc8b14610711578063a9f8d1811461071957610336565b80638f6629151161015b5780639a43982b116101355780639a43982b146106bd5780639af1d35a146106c5578063a055baf8146106cd57610336565b80638f6629151461068a57806392e8990e146106925780639513997f1461069a57610336565b8063893fd3e01161018c578063893fd3e0146106725780638ae39cac1461067a5780638da5cb5b1461068257610336565b80637d0a75cc1461064557806380dc067214610662578063817b1cd21461066a57610336565b8063392e53cd116102815780635c244ba91161022a57806366fe9f8a1161020457806366fe9f8a146105fc57806367a5279314610604578063715018a61461060c57806373afb81c1461061457610336565b80635c244ba9146105ab5780635cc6eee9146105ec578063645006ca146105f457610336565b806348cd4cb11161025b57806348cd4cb1146105765780634ef4e2871461057e57806353b8bee31461058657610336565b8063392e53cd1461052d5780633f138d4b14610535578063476343ee1461056e57610336565b80631cb9e08f116102e35780632e1a7d4d116102bd5780632e1a7d4d146104eb5780632f0c370e146105085780633279beab1461051057610336565b80631cb9e08f1461044a57806320adc02d146104be5780632d33de09146104c657610336565b806319262d301161031457806319262d30146103985780631959a002146103df5780631aed65531461043057610336565b8063017def571461033b57806301f8a9761461035a5780630e61dec914610377575b600080fd5b6103586004803603602081101561035157600080fd5b503561083a565b005b6103586004803603602081101561037057600080fd5b503561098d565b6103586004803603602081101561038d57600080fd5b503561ffff16610ae0565b6103cb600480360360208110156103ae57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c67565b604080519115158252519081900360200190f35b610412600480360360208110156103f557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c99565b60408051938452602084019290925282820152519081900360600190f35b610438610cba565b60408051918252519081900360200190f35b610358600480360361014081101561046157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359161ffff60c0830135169160e08101359161010082013591610120013516610cc0565b6103cb6111a2565b610358600480360360408110156104dc57600080fd5b508035151590602001356111c6565b6103586004803603602081101561050157600080fd5b5035611304565b61043861162d565b6103586004803603602081101561052657600080fd5b5035611633565b6103cb611702565b6103586004803603604081101561054b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611727565b610358611959565b610438611b4d565b610438611b53565b6103586004803603604081101561059c57600080fd5b50803515159060200135611b59565b610358600480360360608110156105c157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602081013515159060400135611c96565b610438611f1c565b610438611f24565b610438611f2a565b610438611f30565b610358611f36565b61061c61204d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103586004803603602081101561065b57600080fd5b5035612069565b6103586121bf565b61043861226d565b6103cb612273565b610438612295565b61061c61229b565b6104386122b7565b6103cb6122bd565b610358600480360360408110156106b057600080fd5b50803590602001356122de565b6104386124f4565b6104386124fa565b6106d5612500565b6040805161ffff9092168252519081900360200190f35b6103586004803603604081101561070257600080fd5b50803515159060200135612522565b61061c612755565b610438612771565b6103586004803603602081101561073757600080fd5b5035612777565b6103cb6004803603602081101561075457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612d73565b6103586004803603604081101561078757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515612d9e565b61061c612ed5565b610438612ef1565b610358612ef7565b6103cb61307e565b610358600480360360208110156107e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166130a1565b6104386004803603602081101561081557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613242565b61061c613332565b61084261334e565b73ffffffffffffffffffffffffffffffffffffffff1661086061229b565b73ffffffffffffffffffffffffffffffffffffffff16146108e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b612710811061095257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206465706f7369742066656500000000000000000000000000604482015290519081900360640190fd5b60118190556040805182815290517f5237b692334926d9ab50f9d1ac513fe7e153f0cd81dd7c55a09d281d2985d8089181900360200190a150565b61099561334e565b73ffffffffffffffffffffffffffffffffffffffff166109b361229b565b73ffffffffffffffffffffffffffffffffffffffff1614610a3557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6005544310610aa557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f506f6f6c20686173207374617274656400000000000000000000000000000000604482015290519081900360640190fd5b600c8190556040805182815290517f0c4d677eef92893ac7ec52faf8140fc6c851ab4736302b4f3a89dfb20696a0df9181900360200190a150565b610ae861334e565b73ffffffffffffffffffffffffffffffffffffffff16610b0661229b565b73ffffffffffffffffffffffffffffffffffffffff1614610b8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6127108161ffff1610610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613bc86024913960400191505060405180910390fd5b6010805461ffff83167401000000000000000000000000000000000000000081027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517f7e027715184f6a1949fa9869334444260da6ea402170ab8d06d0fa992ff56fb19181900360200190a150565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601560205260409020600201544210155b919050565b60156020526000908152604090208054600182015460029092015490919083565b60045481565b6002547801000000000000000000000000000000000000000000000000900460ff1615610d4e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60025473ffffffffffffffffffffffffffffffffffffffff163314610dd457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f7420666163746f7279000000000000000000000000000000000000000000604482015290519081900360640190fd5b6303b53800821115610e4757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964207769746864726177616c20696e74657276616c0000000000604482015290519081900360640190fd5b600280547fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000179055600f805473ffffffffffffffffffffffffffffffffffffffff808d167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600e80548c84169216919091179055600c899055600588905560048790556010805461ffff871674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff90911617905560138390556011848155908216600090815260146020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555461271011610fe757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206465706f7369742066656500000000000000000000000000604482015290519081900360640190fd5b841561103257600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560088590555b600e54604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163313ce567916004808301926020929190829003018186803b15801561109d57600080fd5b505afa1580156110b1573d6000803e3d6000fd5b505050506040513d60208110156110c757600080fd5b505160ff169050601e811061113d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d75737420626520696e666572696f7220746f20333000000000000000000000604482015290519081900360640190fd5b611148601e82613352565b600a0a600d5560055460065573ffffffffffffffffffffffffffffffffffffffff82166000908152601560205260408120818155600181018290556002810191909155611194836130a1565b505050505050505050505050565b60025477010000000000000000000000000000000000000000000000900460ff1681565b6111ce61334e565b73ffffffffffffffffffffffffffffffffffffffff166111ec61229b565b73ffffffffffffffffffffffffffffffffffffffff161461126e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b811561127e57600b819055611284565b6000600b555b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000084151502179055600b5460408051918252517fe6e3d2eff3148433441a0fab50084af94753f6b56d442c3261afec05441981c7916020908290030190a15050565b6002600154141561137657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015533600090815260156020526040902080548211156113fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f416d6f756e7420746f20776974686472617720746f6f20686967680000000000604482015290519081900360640190fd5b428160020154111561146d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5769746864726177616c206c6f636b6564000000000000000000000000000000604482015290519081900360640190fd5b6114756133ce565b60006114aa82600101546114a4600d5461149e600354876000015461344090919063ffffffff16565b906134ba565b90613352565b600f54600e54919250829173ffffffffffffffffffffffffffffffffffffffff9081169116141561154a57831561152b5782546114e79085613352565b83556114f3818561353b565b600f5490915061151a9073ffffffffffffffffffffffffffffffffffffffff1633836135af565b6007546115279085613352565b6007555b81156115455760135461153f90429061353b565b60028401555b6115d1565b831561159357825461155c9085613352565b8355600f546115829073ffffffffffffffffffffffffffffffffffffffff1633866135af565b60075461158f9085613352565b6007555b81156115d157600e546115bd9073ffffffffffffffffffffffffffffffffffffffff1633846135af565b6013546115cb90429061353b565b60028401555b600d5460035484546115e8929161149e9190613440565b600184015560408051858152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25050600180555050565b60135481565b61163b61334e565b73ffffffffffffffffffffffffffffffffffffffff1661165961229b565b73ffffffffffffffffffffffffffffffffffffffff16146116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600e546116ff9073ffffffffffffffffffffffffffffffffffffffff1633836135af565b50565b6002547801000000000000000000000000000000000000000000000000900460ff1681565b61172f61334e565b73ffffffffffffffffffffffffffffffffffffffff1661174d61229b565b73ffffffffffffffffffffffffffffffffffffffff16146117cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600f5473ffffffffffffffffffffffffffffffffffffffff8381169116141561185957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207374616b656420746f6b656e00000000000000000000604482015290519081900360640190fd5b600e5473ffffffffffffffffffffffffffffffffffffffff838116911614156118e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f742062652072657761726420746f6b656e00000000000000000000604482015290519081900360640190fd5b61190473ffffffffffffffffffffffffffffffffffffffff831633836135af565b6040805173ffffffffffffffffffffffffffffffffffffffff841681526020810183905281517f74545154aac348a3eac92596bd1971957ca94795f4e954ec5f613b55fab78129929181900390910190a15050565b61196161334e565b73ffffffffffffffffffffffffffffffffffffffff1661197f61229b565b73ffffffffffffffffffffffffffffffffffffffff1614611a0157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60026001541415611a7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600155601254611ae657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f20666565733a280000000000000000000000000000000000000000000000604482015290519081900360640190fd5b601280546000909155600f54611b139073ffffffffffffffffffffffffffffffffffffffff1633836135af565b6040805182815290517f835862a12039ab712842887f732f62f9ba4e46c8a157b8f2ece290bb03cb62299181900360200190a15060018055565b60055481565b600a5481565b611b6161334e565b73ffffffffffffffffffffffffffffffffffffffff16611b7f61229b565b73ffffffffffffffffffffffffffffffffffffffff1614611c0157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8115611c11576009819055611c17565b60006009555b600280547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000008415150217905560095460408051918252517fe6d79d55fe60073f6ce5d1da4f451b068c40a178fb92bc9eae34a5bad2df85ff916020908290030190a15050565b611c9e61334e565b73ffffffffffffffffffffffffffffffffffffffff16611cbc61229b565b73ffffffffffffffffffffffffffffffffffffffff1614611d3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8657600080fd5b505afa158015611d9a573d6000803e3d6000fd5b505050506040513d6020811015611db057600080fd5b50511015611e1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f57726f6e6720746f6b656e000000000000000000000000000000000000000000604482015290519081900360640190fd5b8115611e6f57601080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055600a819055611e9d565b601080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556000600a555b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000084151502179055600a5460408051918252517fbf187dd66da357de1ba58a7d4fc4eb2ba31707f84f3ecc8afb5d405a90aa98d3916020908290030190a1505050565b6303b5380081565b60095481565b60085481565b60115481565b611f3e61334e565b73ffffffffffffffffffffffffffffffffffffffff16611f5c61229b565b73ffffffffffffffffffffffffffffffffffffffff1614611fde57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b61207161334e565b73ffffffffffffffffffffffffffffffffffffffff1661208f61229b565b73ffffffffffffffffffffffffffffffffffffffff161461211157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6303b5380081111561218457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964207769746864726177616c20696e74657276616c0000000000604482015290519081900360640190fd5b60138190556040805182815290517f69fe3855170c10a3fc76e475c13958c74522b1a05679138e3bbfbd66413e9c229181900360200190a150565b6121c761334e565b73ffffffffffffffffffffffffffffffffffffffff166121e561229b565b73ffffffffffffffffffffffffffffffffffffffff161461226757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b43600455565b60075481565b6002547501000000000000000000000000000000000000000000900460ff1681565b600c5481565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60035481565b60025474010000000000000000000000000000000000000000900460ff1681565b6122e661334e565b73ffffffffffffffffffffffffffffffffffffffff1661230461229b565b73ffffffffffffffffffffffffffffffffffffffff161461238657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055443106123f657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f506f6f6c20686173207374617274656400000000000000000000000000000000604482015290519081900360640190fd5b80821061244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613b01602e913960400191505060405180910390fd5b8143106124a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613b556030913960400191505060405180910390fd5b600582905560048190556006829055604080518381526020810183905281517f7cd0ab87d19036f3dfadadb232c78aa4879dda3f0c994a9d637532410ee2ce06929181900390910190a15050565b600b5481565b60125481565b60105474010000000000000000000000000000000000000000900461ffff1681565b61252a61334e565b73ffffffffffffffffffffffffffffffffffffffff1661254861229b565b73ffffffffffffffffffffffffffffffffffffffff16146125ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1661265357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d75737420626520736574000000000000000000000000000000000000000000604482015290519081900360640190fd5b81156126d35760085481116126c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6577206c696d6974206d757374206265206869676865720000000000000000604482015290519081900360640190fd5b600881905561271c565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000008415150217905560006008555b60085460408051918252517f241f67ee5f41b7a5cabf911367329be7215900f602ebfc47f89dce2a6bcd847c9181900360200190a15050565b60105473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600260015414156127e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001819055336000908152601560205260409020905474010000000000000000000000000000000000000000900460ff161561289e57600854815461283190849061353b565b111561289e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5573657220616d6f756e742061626f7665206c696d6974000000000000000000604482015290519081900360640190fd5b600254760100000000000000000000000000000000000000000000900460ff16156129405760095481546128d390849061353b565b101561294057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f55736572206465706f73697420686967686572206c696d697400000000000000604482015290519081900360640190fd5b6002547501000000000000000000000000000000000000000000900460ff1615612af057601054604080517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156129d557600080fd5b505afa1580156129e9573d6000803e3d6000fd5b505050506040513d60208110156129ff57600080fd5b5051601054600f5491925073ffffffffffffffffffffffffffffffffffffffff91821691161415612a9357600a54612a378285613352565b1015612a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613ad5602c913960400191505060405180910390fd5b612aee565b600a54811015612aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613ad5602c913960400191505060405180910390fd5b505b60025477010000000000000000000000000000000000000000000000900460ff1615612b7d57600b54600754612b26908461353b565b1115612b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613ba66022913960400191505060405180910390fd5b612b856133ce565b805415612bf7576000612bb582600101546114a4600d5461149e600354876000015461344090919063ffffffff16565b90508015612bf557600e54612be19073ffffffffffffffffffffffffffffffffffffffff1633836135af565b601354612bef90429061353b565b60028301555b505b8115612d1957600f54612c229073ffffffffffffffffffffffffffffffffffffffff16333085613641565b60105474010000000000000000000000000000000000000000900461ffff1615612c8b57601054600090612c7b906127109061149e90869074010000000000000000000000000000000000000000900461ffff16613440565b9050612c878382613352565b9250505b612c9433612d73565b612cde5760115415612cde576000612cbd61271061149e6011548661344090919063ffffffff16565b601254909150612ccd908261353b565b601255612cda8382613352565b9250505b8054612cea908361353b565b8155600754612cf9908361353b565b6007556002810154612d1957601354612d1390429061353b565b60028201555b600d546003548254612d30929161149e9190613440565b600182015560408051838152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a2505060018055565b73ffffffffffffffffffffffffffffffffffffffff1660009081526014602052604090205460ff1690565b612da661334e565b73ffffffffffffffffffffffffffffffffffffffff16612dc461229b565b73ffffffffffffffffffffffffffffffffffffffff1614612e4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526014602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915582519384529083015280517fd12085b5090e5fdbfc9506823d4c470c80dadad7ff38cec11b8c8e7f2d604a9d9281900390910190a15050565b600f5473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60026001541415612f6957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600181905533600090815260156020526040902090810154421015612ff157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5769746864726177616c206c6f636b6564000000000000000000000000000000604482015290519081900360640190fd5b80546000808355600183018190556002830155801561303f57600f5461302e9073ffffffffffffffffffffffffffffffffffffffff1633836135af565b60075461303b9082613352565b6007555b8154604080519182525133917f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695919081900360200190a2505060018055565b600254760100000000000000000000000000000000000000000000900460ff1681565b6130a961334e565b73ffffffffffffffffffffffffffffffffffffffff166130c761229b565b73ffffffffffffffffffffffffffffffffffffffff161461314957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166131b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613aaf6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526015602052604081206007546006544311801561327a57508015155b1561330257600061328d600654436136dc565b905060006132a6600c548361344090919063ffffffff16565b905060006132cf6132c68561149e600d548661344090919063ffffffff16565b6003549061353b565b90506132f685600101546114a4600d5461149e858a6000015461344090919063ffffffff16565b95505050505050610c94565b61332982600101546114a4600d5461149e600354876000015461344090919063ffffffff16565b92505050610c94565b600e5473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b6000828211156133c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60065443116133dc5761343e565b600754806133ee57504360065561343e565b60006133fc600654436136dc565b90506000613415600c548361344090919063ffffffff16565b90506134336132c68461149e600d548561344090919063ffffffff16565b600355505043600655505b565b60008261344f575060006133c8565b8282028284828161345c57fe5b04146134b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613b856021913960400191505060405180910390fd5b9392505050565b600080821161352a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161353357fe5b049392505050565b6000828201838110156134b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261363c908490613716565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526136d6908590613716565b50505050565b600060045482116136f8576136f18284613352565b90506133c8565b6004548310613709575060006133c8565b6004546136f19084613352565b6060613778826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137ee9092919063ffffffff16565b80519091501561363c5780806020019051602081101561379757600080fd5b505161363c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613a85602a913960400191505060405180910390fd5b60606137fd8484600085613805565b949350505050565b606082471015613860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b2f6026913960400191505060405180910390fd5b613869856139c0565b6138d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061393e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613901565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146139a0576040519150601f19603f3d011682016040523d82523d6000602084013e6139a5565b606091505b50915091506139b58282866139c6565b979650505050505050565b3b151590565b606083156139d55750816134b3565b8251156139e55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a49578181015183820152602001613a31565b50505050905090810190601f168015613a765780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5361666542455032303a204245503230206f7065726174696f6e20646964206e6f7420737563636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373486f6c6420746f6b656e20757365722062616c616e6365206973206c657373207468616e206d7573742062654e6577207374617274426c6f636b206d757374206265206c6f776572207468616e206e657720656e64426c6f636b416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4e6577207374617274426c6f636b206d75737420626520686967686572207468616e2063757272656e7420626c6f636b536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77506f6f6c206d6178207374616b656420616d6f756e742061626f7665206c696d6974496e76616c6964207472616e7366657220666565206f66207374616b656420746f6b656ea26469706673582212205e91782c2127a22fde5c2d05b89c8b85effb8ed9fbb0aea2e7758f646cb853e464736f6c634300060c0033