Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Emergency Withdr... | 14553957 | 971 days ago | IN | 0 ETH | 0.00209271 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
SHEEBASTAKE
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-04 */ /** *Submitted for verification at BscScan.com on 2021-03-17 */ pragma solidity ^0.8.0; library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor () { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract SHEEBASTAKE is ReentrancyGuard, Pausable, Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; /* ========== STATE VARIABLES ========== */ IERC20 public rewardsToken; IERC20 public stakingToken; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public rewardsDuration; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; uint256 public stakingTokensDecimalRate; bool private initialised; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; uint256 private _totalSupply; mapping(address => uint256) private _balances; /* ========== CONSTRUCTOR ========== */ constructor ( address _rewardsToken, address _stakingToken, uint _rewardsDuration, uint _stakingTokensDecimal ) public { stakingTokensDecimalRate = pow(10, _stakingTokensDecimal); rewardsToken = IERC20(_rewardsToken); stakingToken = IERC20(_stakingToken); rewardsDuration = _rewardsDuration; } /* ========== VIEWS ========== */ function totalSupply() external view returns (uint256) { return _totalSupply; } function pow(uint n, uint e) public pure returns (uint) { if (e == 0) { return 1; } else if (e == 1) { return n; } else { uint p = pow(n, e.div(2)); p = p.mul(p); if (e.mod(2) == 1) { p = p.mul(n); } return p; } } function balanceOf(address account) external view returns (uint256) { return _balances[account]; } function lastTimeRewardApplicable() public view returns (uint256) { return min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint256) { if (_totalSupply == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(stakingTokensDecimalRate) .div(_totalSupply) ); } function earned(address account) public view returns (uint256) { return _balances[account] .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(stakingTokensDecimalRate) .add(rewards[account]); } function getRewardForDuration() external view returns (uint256) { return rewardRate.mul(rewardsDuration); } function min(uint256 a, uint256 b) public pure returns (uint256) { return a < b ? a : b; } /* ========== MUTATIVE FUNCTIONS ========== */ function stake(uint256 amount) external nonReentrant whenNotPaused updateReward(msg.sender) { require(amount > 0, "Cannot stake 0"); _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); stakingToken.safeTransferFrom(msg.sender, address(this), amount); emit Staked(msg.sender, amount); } function withdraw(uint256 amount) public nonReentrant updateReward(msg.sender) { require(amount > 0, "Cannot withdraw 0"); _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); stakingToken.safeTransfer(msg.sender, amount); emit Withdrawn(msg.sender, amount); } function getReward() public nonReentrant updateReward(msg.sender) { uint256 reward = rewards[msg.sender]; if (reward > 0) { rewards[msg.sender] = 0; rewardsToken.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function exit() external { withdraw(_balances[msg.sender]); getReward(); } /* ========== RESTRICTED FUNCTIONS ========== */ function notifyRewardAmount(uint256 reward) external onlyOwner updateReward(address(0)) { if (block.timestamp >= periodFinish) { rewardRate = reward.div(rewardsDuration); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(rewardsDuration); } // Ensure the provided reward amount is not more than the balance in the contract. // This keeps the reward rate in the right range, preventing overflows due to // very high values of rewardRate in the earned and rewardsPerToken functions; // Reward + leftover must be less than 2^256 / 10^18 to avoid overflow. uint256 balance = rewardsToken.balanceOf(address(this)); require( rewardRate <= balance.div(rewardsDuration), "Provided reward too high" ); lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(rewardsDuration); emit RewardAdded(reward); } function emergencyWithdrawal (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{ //uint256 contractBalance = tokenToClear.balanceOf(address(this)); tokenToClear.transfer(destination, amount); } function ETHwithdrawal(address payable destination) public onlyOwner{ uint256 ethBalance = address(this).balance; payable(destination).transfer(ethBalance); } // Added to support recovering LP Rewards from other systems such as BAL to be distributed to holders function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner { // Cannot recover the staking token or the rewards token require( tokenAddress != address(rewardsToken), "Cannot withdraw the rewards tokens" ); if (_totalSupply != 0) { require( tokenAddress != address(stakingToken), "Cannot withdraw the staking tokens" ); } IERC20(tokenAddress).safeTransfer(msg.sender, tokenAmount); emit Recovered(tokenAddress, tokenAmount); } function setRewardsDuration(uint256 _rewardsDuration) external onlyOwner { require( block.timestamp > periodFinish, "Previous rewards period must be complete before changing the duration for the new period" ); rewardsDuration = _rewardsDuration; emit RewardsDurationUpdated(rewardsDuration); } /* ========== MODIFIERS ========== */ modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } /* ========== EVENTS ========== */ event RewardAdded(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); event RewardsDurationUpdated(uint256 newDuration); event Recovered(address token, uint256 amount); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_rewardsToken","type":"address"},{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"uint256","name":"_rewardsDuration","type":"uint256"},{"internalType":"uint256","name":"_stakingTokensDecimal","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Recovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"RewardsDurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"ETHwithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRewardForDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"uint256","name":"e","type":"uint256"}],"name":"pow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardsDuration","type":"uint256"}],"name":"setRewardsDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingTokensDecimalRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600060045560006005553480156200001b57600080fd5b5060405162001e1738038062001e178339810160408190526200003e916200032c565b60016000818155815460ff191690915562000058620000f8565b60018054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000bb600a82620000fc565b60095550600280546001600160a01b039485166001600160a01b03199182161790915560038054939094169216919091179091556006556200047a565b3390565b6000816200010d57506001620001a9565b81600114156200011f575081620001a9565b6000620001478462000141600286620001af60201b62000f971790919060201c565b620000fc565b9050620001638182620001f960201b62000fd91790919060201c565b9050620001806002846200025060201b6200101e1790919060201c565b60011415620001a657620001a38482620001f960201b62000fd91790919060201c565b90505b90505b92915050565b6000620001a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200029a60201b60201c565b6000826200020a57506000620001a9565b600062000218838562000421565b9050826200022785836200040a565b14620001a65760405162461bcd60e51b81526004016200024790620003c9565b60405180910390fd5b6000620001a683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250620002d660201b60201c565b60008183620002be5760405162461bcd60e51b815260040162000247919062000373565b506000620002cd84866200040a565b95945050505050565b60008183620002fa5760405162461bcd60e51b815260040162000247919062000373565b506200030783856200044d565b949350505050565b80516001600160a01b03811681146200032757600080fd5b919050565b6000806000806080858703121562000342578384fd5b6200034d856200030f565b93506200035d602086016200030f565b6040860151606090960151949790965092505050565b6000602080835283518082850152825b81811015620003a15785810183015185820160400152820162000383565b81811115620003b35783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6000826200041c576200041c62000464565b500490565b60008160001904831182151516156200044857634e487b7160e01b81526011600452602481fd5b500290565b6000826200045f576200045f62000464565b500690565b634e487b7160e01b600052601260045260246000fd5b61198d806200048a6000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c80637b0a47ee1161010f578063c8f33c91116100a2578063df136d6511610071578063df136d6514610382578063e9fad8ee1461038a578063ebe2b12b14610392578063f2fde38b1461039a576101e4565b8063c8f33c9114610357578063cc1a378f1461035f578063cd3daf9d14610372578063d1af0c7d1461037a576101e4565b80638d8e5da7116100de5780638d8e5da7146103215780638da5cb5b14610334578063a694fc3a1461033c578063a85fe3b71461034f576101e4565b80637b0a47ee146102eb57806380faa57d146102f35780638980f11f146102fb5780638b8763471461030e576101e4565b80633c6b16ab1161018757806370a082311161015657806370a08231146102a8578063715018a6146102bb57806372f702f3146102c35780637ae2b5c7146102d8576101e4565b80633c6b16ab146102655780633d18b912146102785780635c975abb146102805780636325786d14610295576101e4565b80631c1f78eb116101c35780631c1f78eb1461022d5780632e1a7d4d146102355780632e4c697f1461024a578063386a95251461025d576101e4565b80628cc262146101e95780630700037d1461021257806318160ddd14610225575b600080fd5b6101fc6101f736600461135f565b6103ad565b6040516102099190611868565b60405180910390f35b6101fc61022036600461135f565b610424565b6101fc610436565b6101fc61043d565b610248610243366004611406565b61045b565b005b6101fc610258366004611436565b6105a7565b6101fc61060c565b610248610273366004611406565b610612565b610248610816565b61028861091a565b60405161020991906114c4565b6102486102a336600461135f565b610923565b6101fc6102b636600461135f565b61099a565b6102486109b5565b6102cb610a3f565b6040516102099190611473565b6101fc6102e6366004611436565b610a4e565b6101fc610a64565b6101fc610a6a565b61024861030936600461137b565b610a78565b6101fc61031c36600461135f565b610b67565b61024861032f3660046113c6565b610b79565b6102cb610c39565b61024861034a366004611406565b610c4d565b6101fc610da3565b6101fc610da9565b61024861036d366004611406565b610daf565b6101fc610e4a565b6102cb610e92565b6101fc610ea1565b610248610ea7565b6101fc610eca565b6102486103a836600461135f565b610ed0565b6001600160a01b0381166000908152600c6020908152604080832054600954600b9093529083205461041e9261041891610412906103f3906103ed610e4a565b90611060565b6001600160a01b0388166000908152600e602052604090205490610fd9565b90610f97565b906110a2565b92915050565b600c6020526000908152604090205481565b600d545b90565b6000610456600654600554610fd990919063ffffffff16565b905090565b600260005414156104875760405162461bcd60e51b815260040161047e90611831565b60405180910390fd5b600260005533610495610e4a565b6008556104a0610a6a565b6007556001600160a01b038116156104e7576104bb816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b600082116105075760405162461bcd60e51b815260040161047e90611696565b600d546105149083611060565b600d55336000908152600e60205260409020546105319083611060565b336000818152600e602052604090209190915560035461055d916001600160a01b0390911690846110d1565b336001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516105969190611868565b60405180910390a250506001600055565b6000816105b65750600161041e565b81600114156105c657508161041e565b60006105d784610258856002610f97565b90506105e38180610fd9565b90506105f083600261101e565b60011415610605576106028185610fd9565b90505b9392505050565b60065481565b61061a611127565b60015461010090046001600160a01b0390811691161461064c5760405162461bcd60e51b815260040161047e90611702565b6000610656610e4a565b600855610661610a6a565b6007556001600160a01b038116156106a85761067c816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60045442106106c7576006546106bf908390610f97565b60055561070a565b6004546000906106d79042611060565b905060006106f060055483610fd990919063ffffffff16565b6006549091506107049061041286846110a2565b60055550505b6002546040516370a0823160e01b81526000916001600160a01b0316906370a082319061073b903090600401611473565b60206040518083038186803b15801561075357600080fd5b505afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b919061141e565b90506107a260065482610f9790919063ffffffff16565b60055411156107c35760405162461bcd60e51b815260040161047e90611779565b4260078190556006546107d691906110a2565b6004556040517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d90610809908590611868565b60405180910390a1505050565b600260005414156108395760405162461bcd60e51b815260040161047e90611831565b600260005533610847610e4a565b600855610852610a6a565b6007556001600160a01b038116156108995761086d816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b336000908152600c6020526040902054801561091157336000818152600c60205260408120556002546108d8916001600160a01b0390911690836110d1565b336001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516105969190611868565b50506001600055565b60015460ff1690565b61092b611127565b60015461010090046001600160a01b0390811691161461095d5760405162461bcd60e51b815260040161047e90611702565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610995573d6000803e3d6000fd5b505050565b6001600160a01b03166000908152600e602052604090205490565b6109bd611127565b60015461010090046001600160a01b039081169116146109ef5760405162461bcd60e51b815260040161047e90611702565b60015460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360018054610100600160a81b0319169055565b6003546001600160a01b031681565b6000818310610a5d5781610605565b5090919050565b60055481565b600061045642600454610a4e565b610a80611127565b60015461010090046001600160a01b03908116911614610ab25760405162461bcd60e51b815260040161047e90611702565b6002546001600160a01b0383811691161415610ae05760405162461bcd60e51b815260040161047e9061162a565b600d5415610b16576003546001600160a01b0383811691161415610b165760405162461bcd60e51b815260040161047e90611737565b610b2a6001600160a01b03831633836110d1565b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051610b5b929190611487565b60405180910390a15050565b600b6020526000908152604090205481565b610b81611127565b60015461010090046001600160a01b03908116911614610bb35760405162461bcd60e51b815260040161047e90611702565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610be19085908590600401611487565b602060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3391906113a6565b50505050565b60015461010090046001600160a01b031690565b60026000541415610c705760405162461bcd60e51b815260040161047e90611831565b600260005560015460ff1615610c985760405162461bcd60e51b815260040161047e9061166c565b33610ca1610e4a565b600855610cac610a6a565b6007556001600160a01b03811615610cf357610cc7816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60008211610d135760405162461bcd60e51b815260040161047e906115cb565b600d54610d2090836110a2565b600d55336000908152600e6020526040902054610d3d90836110a2565b336000818152600e6020526040902091909155600354610d6a916001600160a01b0390911690308561112b565b336001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516105969190611868565b60095481565b60075481565b610db7611127565b60015461010090046001600160a01b03908116911614610de95760405162461bcd60e51b815260040161047e90611702565b6004544211610e0a5760405162461bcd60e51b815260040161047e90611502565b60068190556040517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390610e3f908390611868565b60405180910390a150565b6000600d5460001415610e60575060085461043a565b610456610e89600d54610412600954610e83600554610e836007546103ed610a6a565b90610fd9565b600854906110a2565b6002546001600160a01b031681565b60085481565b336000908152600e6020526040902054610ec09061045b565b610ec8610816565b565b60045481565b610ed8611127565b60015461010090046001600160a01b03908116911614610f0a5760405162461bcd60e51b815260040161047e90611702565b6001600160a01b038116610f305760405162461bcd60e51b815260040161047e90611585565b6001546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600061060583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061114c565b600082610fe85750600061041e565b6000610ff4838561189d565b9050826110018583611889565b146106055760405162461bcd60e51b815260040161047e906116c1565b600061060583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611183565b600061060583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b7565b6000806110af8385611871565b9050838110156106055760405162461bcd60e51b815260040161047e906115f3565b6109958363a9059cbb60e01b84846040516024016110f0929190611487565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526111e8565b3390565b610c33846323b872dd60e01b8585856040516024016110f0939291906114a0565b6000818361116d5760405162461bcd60e51b815260040161047e91906114cf565b50600061117a8486611889565b95945050505050565b600081836111a45760405162461bcd60e51b815260040161047e91906114cf565b506111af83856118ff565b949350505050565b600081848411156111db5760405162461bcd60e51b815260040161047e91906114cf565b50600061117a84866118bc565b600061123d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112779092919063ffffffff16565b805190915015610995578080602001905181019061125b91906113a6565b6109955760405162461bcd60e51b815260040161047e906117e7565b60606111af84846000858561128b85611320565b6112a75760405162461bcd60e51b815260040161047e906117b0565b600080866001600160a01b031685876040516112c39190611457565b60006040518083038185875af1925050503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b5091509150611315828286611326565b979650505050505050565b3b151590565b60608315611335575081610605565b8251156113455782518084602001fd5b8160405162461bcd60e51b815260040161047e91906114cf565b600060208284031215611370578081fd5b81356106058161193f565b6000806040838503121561138d578081fd5b82356113988161193f565b946020939093013593505050565b6000602082840312156113b7578081fd5b81518015158114610605578182fd5b6000806000606084860312156113da578081fd5b83356113e58161193f565b925060208401356113f58161193f565b929592945050506040919091013590565b600060208284031215611417578081fd5b5035919050565b60006020828403121561142f578081fd5b5051919050565b60008060408385031215611448578182fd5b50508035926020909101359150565b600082516114698184602087016118d3565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b60006020825282518060208401526114ee8160408501602087016118d3565b601f01601f19169190910160400192915050565b60208082526058908201527f50726576696f7573207265776172647320706572696f64206d7573742062652060408201527f636f6d706c657465206265666f7265206368616e67696e67207468652064757260608201527f6174696f6e20666f7220746865206e657720706572696f640000000000000000608082015260a00190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600e908201526d043616e6e6f74207374616b6520360941b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526022908201527f43616e6e6f7420776974686472617720746865207265776172647320746f6b656040820152616e7360f01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b602080825260119082015270043616e6e6f74207769746864726177203607c1b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f43616e6e6f7420776974686472617720746865207374616b696e6720746f6b656040820152616e7360f01b606082015260800190565b60208082526018908201527f50726f76696465642072657761726420746f6f20686967680000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b6000821982111561188457611884611913565b500190565b60008261189857611898611929565b500490565b60008160001904831182151516156118b7576118b7611913565b500290565b6000828210156118ce576118ce611913565b500390565b60005b838110156118ee5781810151838201526020016118d6565b83811115610c335750506000910152565b60008261190e5761190e611929565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b038116811461195457600080fd5b5056fea2646970667358221220416806ba295e2d9d205db79b1dcd6028b794f4815b216a1aafdd81ce3022fc4e64736f6c634300080000330000000000000000000000006bb570c82c493135cc137644b168743dc1f7eb120000000000000000000000006bb570c82c493135cc137644b168743dc1f7eb1200000000000000000000000000000000000000000000152d02c7e14af54703000000000000000000000000000000000000000000000000000000000000000012
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e45760003560e01c80637b0a47ee1161010f578063c8f33c91116100a2578063df136d6511610071578063df136d6514610382578063e9fad8ee1461038a578063ebe2b12b14610392578063f2fde38b1461039a576101e4565b8063c8f33c9114610357578063cc1a378f1461035f578063cd3daf9d14610372578063d1af0c7d1461037a576101e4565b80638d8e5da7116100de5780638d8e5da7146103215780638da5cb5b14610334578063a694fc3a1461033c578063a85fe3b71461034f576101e4565b80637b0a47ee146102eb57806380faa57d146102f35780638980f11f146102fb5780638b8763471461030e576101e4565b80633c6b16ab1161018757806370a082311161015657806370a08231146102a8578063715018a6146102bb57806372f702f3146102c35780637ae2b5c7146102d8576101e4565b80633c6b16ab146102655780633d18b912146102785780635c975abb146102805780636325786d14610295576101e4565b80631c1f78eb116101c35780631c1f78eb1461022d5780632e1a7d4d146102355780632e4c697f1461024a578063386a95251461025d576101e4565b80628cc262146101e95780630700037d1461021257806318160ddd14610225575b600080fd5b6101fc6101f736600461135f565b6103ad565b6040516102099190611868565b60405180910390f35b6101fc61022036600461135f565b610424565b6101fc610436565b6101fc61043d565b610248610243366004611406565b61045b565b005b6101fc610258366004611436565b6105a7565b6101fc61060c565b610248610273366004611406565b610612565b610248610816565b61028861091a565b60405161020991906114c4565b6102486102a336600461135f565b610923565b6101fc6102b636600461135f565b61099a565b6102486109b5565b6102cb610a3f565b6040516102099190611473565b6101fc6102e6366004611436565b610a4e565b6101fc610a64565b6101fc610a6a565b61024861030936600461137b565b610a78565b6101fc61031c36600461135f565b610b67565b61024861032f3660046113c6565b610b79565b6102cb610c39565b61024861034a366004611406565b610c4d565b6101fc610da3565b6101fc610da9565b61024861036d366004611406565b610daf565b6101fc610e4a565b6102cb610e92565b6101fc610ea1565b610248610ea7565b6101fc610eca565b6102486103a836600461135f565b610ed0565b6001600160a01b0381166000908152600c6020908152604080832054600954600b9093529083205461041e9261041891610412906103f3906103ed610e4a565b90611060565b6001600160a01b0388166000908152600e602052604090205490610fd9565b90610f97565b906110a2565b92915050565b600c6020526000908152604090205481565b600d545b90565b6000610456600654600554610fd990919063ffffffff16565b905090565b600260005414156104875760405162461bcd60e51b815260040161047e90611831565b60405180910390fd5b600260005533610495610e4a565b6008556104a0610a6a565b6007556001600160a01b038116156104e7576104bb816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b600082116105075760405162461bcd60e51b815260040161047e90611696565b600d546105149083611060565b600d55336000908152600e60205260409020546105319083611060565b336000818152600e602052604090209190915560035461055d916001600160a01b0390911690846110d1565b336001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516105969190611868565b60405180910390a250506001600055565b6000816105b65750600161041e565b81600114156105c657508161041e565b60006105d784610258856002610f97565b90506105e38180610fd9565b90506105f083600261101e565b60011415610605576106028185610fd9565b90505b9392505050565b60065481565b61061a611127565b60015461010090046001600160a01b0390811691161461064c5760405162461bcd60e51b815260040161047e90611702565b6000610656610e4a565b600855610661610a6a565b6007556001600160a01b038116156106a85761067c816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60045442106106c7576006546106bf908390610f97565b60055561070a565b6004546000906106d79042611060565b905060006106f060055483610fd990919063ffffffff16565b6006549091506107049061041286846110a2565b60055550505b6002546040516370a0823160e01b81526000916001600160a01b0316906370a082319061073b903090600401611473565b60206040518083038186803b15801561075357600080fd5b505afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b919061141e565b90506107a260065482610f9790919063ffffffff16565b60055411156107c35760405162461bcd60e51b815260040161047e90611779565b4260078190556006546107d691906110a2565b6004556040517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d90610809908590611868565b60405180910390a1505050565b600260005414156108395760405162461bcd60e51b815260040161047e90611831565b600260005533610847610e4a565b600855610852610a6a565b6007556001600160a01b038116156108995761086d816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b336000908152600c6020526040902054801561091157336000818152600c60205260408120556002546108d8916001600160a01b0390911690836110d1565b336001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516105969190611868565b50506001600055565b60015460ff1690565b61092b611127565b60015461010090046001600160a01b0390811691161461095d5760405162461bcd60e51b815260040161047e90611702565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610995573d6000803e3d6000fd5b505050565b6001600160a01b03166000908152600e602052604090205490565b6109bd611127565b60015461010090046001600160a01b039081169116146109ef5760405162461bcd60e51b815260040161047e90611702565b60015460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360018054610100600160a81b0319169055565b6003546001600160a01b031681565b6000818310610a5d5781610605565b5090919050565b60055481565b600061045642600454610a4e565b610a80611127565b60015461010090046001600160a01b03908116911614610ab25760405162461bcd60e51b815260040161047e90611702565b6002546001600160a01b0383811691161415610ae05760405162461bcd60e51b815260040161047e9061162a565b600d5415610b16576003546001600160a01b0383811691161415610b165760405162461bcd60e51b815260040161047e90611737565b610b2a6001600160a01b03831633836110d1565b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051610b5b929190611487565b60405180910390a15050565b600b6020526000908152604090205481565b610b81611127565b60015461010090046001600160a01b03908116911614610bb35760405162461bcd60e51b815260040161047e90611702565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610be19085908590600401611487565b602060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3391906113a6565b50505050565b60015461010090046001600160a01b031690565b60026000541415610c705760405162461bcd60e51b815260040161047e90611831565b600260005560015460ff1615610c985760405162461bcd60e51b815260040161047e9061166c565b33610ca1610e4a565b600855610cac610a6a565b6007556001600160a01b03811615610cf357610cc7816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60008211610d135760405162461bcd60e51b815260040161047e906115cb565b600d54610d2090836110a2565b600d55336000908152600e6020526040902054610d3d90836110a2565b336000818152600e6020526040902091909155600354610d6a916001600160a01b0390911690308561112b565b336001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516105969190611868565b60095481565b60075481565b610db7611127565b60015461010090046001600160a01b03908116911614610de95760405162461bcd60e51b815260040161047e90611702565b6004544211610e0a5760405162461bcd60e51b815260040161047e90611502565b60068190556040517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390610e3f908390611868565b60405180910390a150565b6000600d5460001415610e60575060085461043a565b610456610e89600d54610412600954610e83600554610e836007546103ed610a6a565b90610fd9565b600854906110a2565b6002546001600160a01b031681565b60085481565b336000908152600e6020526040902054610ec09061045b565b610ec8610816565b565b60045481565b610ed8611127565b60015461010090046001600160a01b03908116911614610f0a5760405162461bcd60e51b815260040161047e90611702565b6001600160a01b038116610f305760405162461bcd60e51b815260040161047e90611585565b6001546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600061060583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061114c565b600082610fe85750600061041e565b6000610ff4838561189d565b9050826110018583611889565b146106055760405162461bcd60e51b815260040161047e906116c1565b600061060583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611183565b600061060583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b7565b6000806110af8385611871565b9050838110156106055760405162461bcd60e51b815260040161047e906115f3565b6109958363a9059cbb60e01b84846040516024016110f0929190611487565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526111e8565b3390565b610c33846323b872dd60e01b8585856040516024016110f0939291906114a0565b6000818361116d5760405162461bcd60e51b815260040161047e91906114cf565b50600061117a8486611889565b95945050505050565b600081836111a45760405162461bcd60e51b815260040161047e91906114cf565b506111af83856118ff565b949350505050565b600081848411156111db5760405162461bcd60e51b815260040161047e91906114cf565b50600061117a84866118bc565b600061123d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112779092919063ffffffff16565b805190915015610995578080602001905181019061125b91906113a6565b6109955760405162461bcd60e51b815260040161047e906117e7565b60606111af84846000858561128b85611320565b6112a75760405162461bcd60e51b815260040161047e906117b0565b600080866001600160a01b031685876040516112c39190611457565b60006040518083038185875af1925050503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b5091509150611315828286611326565b979650505050505050565b3b151590565b60608315611335575081610605565b8251156113455782518084602001fd5b8160405162461bcd60e51b815260040161047e91906114cf565b600060208284031215611370578081fd5b81356106058161193f565b6000806040838503121561138d578081fd5b82356113988161193f565b946020939093013593505050565b6000602082840312156113b7578081fd5b81518015158114610605578182fd5b6000806000606084860312156113da578081fd5b83356113e58161193f565b925060208401356113f58161193f565b929592945050506040919091013590565b600060208284031215611417578081fd5b5035919050565b60006020828403121561142f578081fd5b5051919050565b60008060408385031215611448578182fd5b50508035926020909101359150565b600082516114698184602087016118d3565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b60006020825282518060208401526114ee8160408501602087016118d3565b601f01601f19169190910160400192915050565b60208082526058908201527f50726576696f7573207265776172647320706572696f64206d7573742062652060408201527f636f6d706c657465206265666f7265206368616e67696e67207468652064757260608201527f6174696f6e20666f7220746865206e657720706572696f640000000000000000608082015260a00190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600e908201526d043616e6e6f74207374616b6520360941b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526022908201527f43616e6e6f7420776974686472617720746865207265776172647320746f6b656040820152616e7360f01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b602080825260119082015270043616e6e6f74207769746864726177203607c1b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f43616e6e6f7420776974686472617720746865207374616b696e6720746f6b656040820152616e7360f01b606082015260800190565b60208082526018908201527f50726f76696465642072657761726420746f6f20686967680000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b6000821982111561188457611884611913565b500190565b60008261189857611898611929565b500490565b60008160001904831182151516156118b7576118b7611913565b500290565b6000828210156118ce576118ce611913565b500390565b60005b838110156118ee5781810151838201526020016118d6565b83811115610c335750506000910152565b60008261190e5761190e611929565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b038116811461195457600080fd5b5056fea2646970667358221220416806ba295e2d9d205db79b1dcd6028b794f4815b216a1aafdd81ce3022fc4e64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006bb570c82c493135cc137644b168743dc1f7eb120000000000000000000000006bb570c82c493135cc137644b168743dc1f7eb1200000000000000000000000000000000000000000000152d02c7e14af54703000000000000000000000000000000000000000000000000000000000000000012
-----Decoded View---------------
Arg [0] : _rewardsToken (address): 0x6bb570C82C493135cc137644b168743Dc1F7eb12
Arg [1] : _stakingToken (address): 0x6bb570C82C493135cc137644b168743Dc1F7eb12
Arg [2] : _rewardsDuration (uint256): 99999999999999979488000
Arg [3] : _stakingTokensDecimal (uint256): 18
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000006bb570c82c493135cc137644b168743dc1f7eb12
Arg [1] : 0000000000000000000000006bb570c82c493135cc137644b168743dc1f7eb12
Arg [2] : 00000000000000000000000000000000000000000000152d02c7e14af5470300
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Deployed Bytecode Sourcemap
23145:7609:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25473:257;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23728:42;;;;;;:::i;:::-;;:::i;24344:93::-;;;:::i;25738:121::-;;;:::i;26449:379::-;;;;;;:::i;:::-;;:::i;:::-;;24445:364;;;;;;:::i;:::-;;:::i;23470:30::-;;;:::i;27312:1129::-;;;;;;:::i;:::-;;:::i;26836:307::-;;;:::i;10536:78::-;;;:::i;:::-;;;;;;;:::i;28714:181::-;;;;;;:::i;:::-;;:::i;24817:112::-;;;;;;:::i;:::-;;:::i;22591:148::-;;;:::i;23363:26::-;;;:::i;:::-;;;;;;;:::i;25867:104::-;;;;;;:::i;:::-;;:::i;23434:29::-;;;:::i;24937:126::-;;;:::i;29010:619::-;;;;;;:::i;:::-;;:::i;23664:57::-;;;;;;:::i;:::-;;:::i;28457:249::-;;;;;;:::i;:::-;;:::i;21949:79::-;;;:::i;26033:408::-;;;;;;:::i;:::-;;:::i;23585:39::-;;;:::i;23507:29::-;;;:::i;29637:360::-;;;;;;:::i;:::-;;:::i;25071:394::-;;;:::i;23330:26::-;;;:::i;23543:35::-;;;:::i;27151:97::-;;;:::i;23396:31::-;;;:::i;22894:244::-;;;;;;:::i;:::-;;:::i;25473:257::-;-1:-1:-1;;;;;25705:16:0;;25527:7;25705:16;;;:7;:16;;;;;;;;;25665:24;;25617:22;:31;;;;;;;25563:159;;:127;;:87;;25596:53;;:16;:14;:16::i;:::-;:20;;:53::i;:::-;-1:-1:-1;;;;;25563:18:0;;;;;;:9;:18;;;;;;;:32;:87::i;:::-;:101;;:127::i;:::-;:141;;:159::i;:::-;25547:175;25473:257;-1:-1:-1;;25473:257:0:o;23728:42::-;;;;;;;;;;;;;:::o;24344:93::-;24417:12;;24344:93;;:::o;25738:121::-;25793:7;25820:31;25835:15;;25820:10;;:14;;:31;;;;:::i;:::-;25813:38;;25738:121;:::o;26449:379::-;12596:1;13202:7;;:19;;13194:63;;;;-1:-1:-1;;;13194:63:0;;;;;;;:::i;:::-;;;;;;;;;12596:1;13335:7;:18;26531:10:::1;30123:16;:14;:16::i;:::-;30100:20;:39:::0;30167:26:::1;:24;:26::i;:::-;30150:14;:43:::0;-1:-1:-1;;;;;30208:21:0;::::1;::::0;30204:157:::1;;30265:15;30272:7;30265:6;:15::i;:::-;-1:-1:-1::0;;;;;30246:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;30329:20:::1;::::0;30295:22:::1;:31:::0;;;;;;:54;30204:157:::1;26576:1:::2;26567:6;:10;26559:40;;;;-1:-1:-1::0;;;26559:40:0::2;;;;;;;:::i;:::-;26627:12;::::0;:24:::2;::::0;26644:6;26627:16:::2;:24::i;:::-;26612:12;:39:::0;26696:10:::2;26686:21;::::0;;;:9:::2;:21;::::0;;;;;:33:::2;::::0;26712:6;26686:25:::2;:33::i;:::-;26672:10;26662:21;::::0;;;:9:::2;:21;::::0;;;;:57;;;;26730:12:::2;::::0;:45:::2;::::0;-1:-1:-1;;;;;26730:12:0;;::::2;::::0;26768:6;26730:25:::2;:45::i;:::-;26801:10;-1:-1:-1::0;;;;;26791:29:0::2;;26813:6;26791:29;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;12552:1:0;13514:7;:22;26449:379::o;24445:364::-;24495:4;24518:6;24514:288;;-1:-1:-1;24548:1:0;24541:8;;24514:288;24571:1;24576;24571:6;24567:235;;;-1:-1:-1;24601:1:0;24594:8;;24567:235;24635:6;24644:16;24648:1;24651:8;:1;24657;24651:5;:8::i;24644:16::-;24635:25;-1:-1:-1;24679:8:0;24635:25;;24679:5;:8::i;:::-;24675:12;-1:-1:-1;24706:8:0;:1;24712;24706:5;:8::i;:::-;24718:1;24706:13;24702:66;;;24744:8;:1;24750;24744:5;:8::i;:::-;24740:12;;24702:66;24789:1;24445:364;-1:-1:-1;;;24445:364:0:o;23470:30::-;;;;:::o;27312:1129::-;22171:12;:10;:12::i;:::-;22161:6;;;;;-1:-1:-1;;;;;22161:6:0;;;:22;;;22153:67;;;;-1:-1:-1;;;22153:67:0;;;;;;;:::i;:::-;27411:1:::1;30123:16;:14;:16::i;:::-;30100:20;:39:::0;30167:26:::1;:24;:26::i;:::-;30150:14;:43:::0;-1:-1:-1;;;;;30208:21:0;::::1;::::0;30204:157:::1;;30265:15;30272:7;30265:6;:15::i;:::-;-1:-1:-1::0;;;;;30246:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;30329:20:::1;::::0;30295:22:::1;:31:::0;;;;;;:54;30204:157:::1;27454:12:::2;;27435:15;:31;27431:318;;27507:15;::::0;27496:27:::2;::::0;:6;;:10:::2;:27::i;:::-;27483:10;:40:::0;27431:318:::2;;;27576:12;::::0;27556:17:::2;::::0;27576:33:::2;::::0;27593:15:::2;27576:16;:33::i;:::-;27556:53;;27624:16;27643:25;27657:10;;27643:9;:13;;:25;;;;:::i;:::-;27721:15;::::0;27624:44;;-1:-1:-1;27696:41:0::2;::::0;:20:::2;:6:::0;27624:44;27696:10:::2;:20::i;:41::-;27683:10;:54:::0;-1:-1:-1;;27431:318:0::2;28127:12;::::0;:37:::2;::::0;-1:-1:-1;;;28127:37:0;;28109:15:::2;::::0;-1:-1:-1;;;;;28127:12:0::2;::::0;:22:::2;::::0;:37:::2;::::0;28158:4:::2;::::0;28127:37:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28109:55;;28211:28;28223:15;;28211:7;:11;;:28;;;;:::i;:::-;28197:10;;:42;;28175:116;;;;-1:-1:-1::0;;;28175:116:0::2;;;;;;;:::i;:::-;28321:15;28304:14;:32:::0;;;28382:15:::2;::::0;28362:36:::2;::::0;28321:15;28362:19:::2;:36::i;:::-;28347:12;:51:::0;28414:19:::2;::::0;::::2;::::0;::::2;::::0;28426:6;;28414:19:::2;:::i;:::-;;;;;;;;30371:1;22231::::1;27312:1129:::0;:::o;26836:307::-;12596:1;13202:7;;:19;;13194:63;;;;-1:-1:-1;;;13194:63:0;;;;;;;:::i;:::-;12596:1;13335:7;:18;26890:10:::1;30123:16;:14;:16::i;:::-;30100:20;:39:::0;30167:26:::1;:24;:26::i;:::-;30150:14;:43:::0;-1:-1:-1;;;;;30208:21:0;::::1;::::0;30204:157:::1;;30265:15;30272:7;30265:6;:15::i;:::-;-1:-1:-1::0;;;;;30246:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;30329:20:::1;::::0;30295:22:::1;:31:::0;;;;;;:54;30204:157:::1;26938:10:::2;26913:14;26930:19:::0;;;:7:::2;:19;::::0;;;;;26964:10;;26960:176:::2;;26999:10;27013:1;26991:19:::0;;;:7:::2;:19;::::0;;;;:23;27029:12:::2;::::0;:45:::2;::::0;-1:-1:-1;;;;;27029:12:0;;::::2;::::0;27067:6;27029:25:::2;:45::i;:::-;27105:10;-1:-1:-1::0;;;;;27094:30:0::2;;27117:6;27094:30;;;;;;:::i;26960:176::-;-1:-1:-1::0;;12552:1:0;13514:7;:22;26836:307::o;10536:78::-;10599:7;;;;10536:78;:::o;28714:181::-;22171:12;:10;:12::i;:::-;22161:6;;;;;-1:-1:-1;;;;;22161:6:0;;;:22;;;22153:67;;;;-1:-1:-1;;;22153:67:0;;;;;;;:::i;:::-;28846:41:::1;::::0;28814:21:::1;::::0;-1:-1:-1;;;;;28846:29:0;::::1;::::0;:41;::::1;;;::::0;28814:21;;28793:18:::1;28846:41:::0;28793:18;28846:41;28814:21;28846:29;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22231:1;28714:181:::0;:::o;24817:112::-;-1:-1:-1;;;;;24903:18:0;24876:7;24903:18;;;:9;:18;;;;;;;24817:112::o;22591:148::-;22171:12;:10;:12::i;:::-;22161:6;;;;;-1:-1:-1;;;;;22161:6:0;;;:22;;;22153:67;;;;-1:-1:-1;;;22153:67:0;;;;;;;:::i;:::-;22682:6:::1;::::0;22661:40:::1;::::0;22698:1:::1;::::0;22682:6:::1;::::0;::::1;-1:-1:-1::0;;;;;22682:6:0::1;::::0;22661:40:::1;::::0;22698:1;;22661:40:::1;22712:6;:19:::0;;-1:-1:-1;;;;;;22712:19:0::1;::::0;;22591:148::o;23363:26::-;;;-1:-1:-1;;;;;23363:26:0;;:::o;25867:104::-;25923:7;25954:1;25950;:5;:13;;25962:1;25950:13;;;-1:-1:-1;25958:1:0;;25943:20;-1:-1:-1;25867:104:0:o;23434:29::-;;;;:::o;24937:126::-;24994:7;25021:34;25025:15;25042:12;;25021:3;:34::i;29010:619::-;22171:12;:10;:12::i;:::-;22161:6;;;;;-1:-1:-1;;;;;22161:6:0;;;:22;;;22153:67;;;;-1:-1:-1;;;22153:67:0;;;;;;;:::i;:::-;29232:12:::1;::::0;-1:-1:-1;;;;;29208:37:0;;::::1;29232:12:::0;::::1;29208:37;;29186:121;;;;-1:-1:-1::0;;;29186:121:0::1;;;;;;;:::i;:::-;29322:12;::::0;:17;29318:183:::1;;29406:12;::::0;-1:-1:-1;;;;;29382:37:0;;::::1;29406:12:::0;::::1;29382:37;;29356:133;;;;-1:-1:-1::0;;;29356:133:0::1;;;;;;;:::i;:::-;29511:58;-1:-1:-1::0;;;;;29511:33:0;::::1;29545:10;29557:11:::0;29511:33:::1;:58::i;:::-;29585:36;29595:12;29609:11;29585:36;;;;;;;:::i;:::-;;;;;;;;29010:619:::0;;:::o;23664:57::-;;;;;;;;;;;;;:::o;28457:249::-;22171:12;:10;:12::i;:::-;22161:6;;;;;-1:-1:-1;;;;;22161:6:0;;;:22;;;22153:67;;;;-1:-1:-1;;;22153:67:0;;;;;;;:::i;:::-;28656:42:::1;::::0;-1:-1:-1;;;28656:42:0;;-1:-1:-1;;;;;28656:21:0;::::1;::::0;::::1;::::0;:42:::1;::::0;28678:11;;28691:6;;28656:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28457:249:::0;;;:::o;21949:79::-;22014:6;;;;;-1:-1:-1;;;;;22014:6:0;;21949:79::o;26033:408::-;12596:1;13202:7;;:19;;13194:63;;;;-1:-1:-1;;;13194:63:0;;;;;;;:::i;:::-;12596:1;13335:7;:18;10854:7:::1;::::0;::::1;;10853:8;10845:37;;;;-1:-1:-1::0;;;10845:37:0::1;;;;;;;:::i;:::-;26133:10:::2;30123:16;:14;:16::i;:::-;30100:20;:39:::0;30167:26:::2;:24;:26::i;:::-;30150:14;:43:::0;-1:-1:-1;;;;;30208:21:0;::::2;::::0;30204:157:::2;;30265:15;30272:7;30265:6;:15::i;:::-;-1:-1:-1::0;;;;;30246:16:0;::::2;;::::0;;;:7:::2;:16;::::0;;;;;;;:34;;;;30329:20:::2;::::0;30295:22:::2;:31:::0;;;;;;:54;30204:157:::2;26178:1:::3;26169:6;:10;26161:37;;;;-1:-1:-1::0;;;26161:37:0::3;;;;;;;:::i;:::-;26224:12;::::0;:24:::3;::::0;26241:6;26224:16:::3;:24::i;:::-;26209:12;:39:::0;26293:10:::3;26283:21;::::0;;;:9:::3;:21;::::0;;;;;:33:::3;::::0;26309:6;26283:25:::3;:33::i;:::-;26269:10;26259:21;::::0;;;:9:::3;:21;::::0;;;;:57;;;;26327:12:::3;::::0;:64:::3;::::0;-1:-1:-1;;;;;26327:12:0;;::::3;::::0;26377:4:::3;26384:6:::0;26327:29:::3;:64::i;:::-;26414:10;-1:-1:-1::0;;;;;26407:26:0::3;;26426:6;26407:26;;;;;;:::i;23585:39::-:0;;;;:::o;23507:29::-;;;;:::o;29637:360::-;22171:12;:10;:12::i;:::-;22161:6;;;;;-1:-1:-1;;;;;22161:6:0;;;:22;;;22153:67;;;;-1:-1:-1;;;22153:67:0;;;;;;;:::i;:::-;29761:12:::1;;29743:15;:30;29721:168;;;;-1:-1:-1::0;;;29721:168:0::1;;;;;;;:::i;:::-;29900:15;:34:::0;;;29950:39:::1;::::0;::::1;::::0;::::1;::::0;29918:16;;29950:39:::1;:::i;:::-;;;;;;;;29637:360:::0;:::o;25071:394::-;25118:7;25142:12;;25158:1;25142:17;25138:77;;;-1:-1:-1;25183:20:0;;25176:27;;25138:77;25241:216;25280:166;25433:12;;25280:134;25389:24;;25280:90;25359:10;;25280:60;25325:14;;25280:26;:24;:26::i;:60::-;:78;;:90::i;:166::-;25241:20;;;:24;:216::i;23330:26::-;;;-1:-1:-1;;;;;23330:26:0;;:::o;23543:35::-;;;;:::o;27151:97::-;27206:10;27196:21;;;;:9;:21;;;;;;27187:31;;:8;:31::i;:::-;27229:11;:9;:11::i;:::-;27151:97::o;23396:31::-;;;;:::o;22894:244::-;22171:12;:10;:12::i;:::-;22161:6;;;;;-1:-1:-1;;;;;22161:6:0;;;:22;;;22153:67;;;;-1:-1:-1;;;22153:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22983:22:0;::::1;22975:73;;;;-1:-1:-1::0;;;22975:73:0::1;;;;;;;:::i;:::-;23085:6;::::0;23064:38:::1;::::0;-1:-1:-1;;;;;23064:38:0;;::::1;::::0;23085:6:::1;::::0;::::1;;::::0;23064:38:::1;::::0;;;::::1;23113:6;:17:::0;;-1:-1:-1;;;;;23113:17:0;;::::1;;;-1:-1:-1::0;;;;;;23113:17:0;;::::1;::::0;;;::::1;::::0;;22894:244::o;16115:132::-;16173:7;16200:39;16204:1;16207;16200:39;;;;;;;;;;;;;;;;;:3;:39::i;15168:471::-;15226:7;15471:6;15467:47;;-1:-1:-1;15501:1:0;15494:8;;15467:47;15526:9;15538:5;15542:1;15538;:5;:::i;:::-;15526:17;-1:-1:-1;15571:1:0;15562:5;15566:1;15526:17;15562:5;:::i;:::-;:10;15554:56;;;;-1:-1:-1;;;15554:56:0;;;;;;;:::i;17486:130::-;17544:7;17571:37;17575:1;17578;17571:37;;;;;;;;;;;;;;;;;:3;:37::i;14278:136::-;14336:7;14363:43;14367:1;14370;14363:43;;;;;;;;;;;;;;;;;:3;:43::i;13814:181::-;13872:7;;13904:5;13908:1;13904;:5;:::i;:::-;13892:17;;13933:1;13928;:6;;13920:46;;;;-1:-1:-1;;;13920:46:0;;;;;;;:::i;18366:177::-;18449:86;18469:5;18499:23;;;18524:2;18528:5;18476:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;18476:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;18476:58:0;-1:-1:-1;;;;;;18476:58:0;;;;;;;;;;18449:19;:86::i;9638:115::-;9734:10;9638:115;:::o;18551:205::-;18652:96;18672:5;18702:27;;;18731:4;18737:2;18741:5;18679:68;;;;;;;;;;:::i;16743:278::-;16829:7;16864:12;16857:5;16849:28;;;;-1:-1:-1;;;16849:28:0;;;;;;;;:::i;:::-;-1:-1:-1;16888:9:0;16900:5;16904:1;16900;:5;:::i;:::-;16888:17;16743:278;-1:-1:-1;;;;;16743:278:0:o;18101:166::-;18187:7;18223:12;18215:6;18207:29;;;;-1:-1:-1;;;18207:29:0;;;;;;;;:::i;:::-;-1:-1:-1;18254:5:0;18258:1;18254;:5;:::i;:::-;18247:12;18101:166;-1:-1:-1;;;;18101:166:0:o;14717:192::-;14803:7;14839:12;14831:6;;;;14823:29;;;;-1:-1:-1;;;14823:29:0;;;;;;;;:::i;:::-;-1:-1:-1;14863:9:0;14875:5;14879:1;14875;:5;:::i;20671:761::-;21095:23;21121:69;21149:4;21121:69;;;;;;;;;;;;;;;;;21129:5;-1:-1:-1;;;;;21121:27:0;;;:69;;;;;:::i;:::-;21205:17;;21095:95;;-1:-1:-1;21205:21:0;21201:224;;21347:10;21336:30;;;;;;;;;;;;:::i;:::-;21328:85;;;;-1:-1:-1;;;21328:85:0;;;;;;;:::i;3627:195::-;3730:12;3762:52;3784:6;3792:4;3798:1;3801:12;3730;4931:18;4942:6;4931:10;:18::i;:::-;4923:60;;;;-1:-1:-1;;;4923:60:0;;;;;;;:::i;:::-;5057:12;5071:23;5098:6;-1:-1:-1;;;;;5098:11:0;5118:5;5126:4;5098:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5056:75;;;;5149:52;5167:7;5176:10;5188:12;5149:17;:52::i;:::-;5142:59;4679:530;-1:-1:-1;;;;;;;4679:530:0:o;709:422::-;1076:20;1115:8;;;709:422::o;6215:742::-;6330:12;6359:7;6355:595;;;-1:-1:-1;6390:10:0;6383:17;;6355:595;6504:17;;:21;6500:439;;6767:10;6761:17;6828:15;6815:10;6811:2;6807:19;6800:44;6715:148;6910:12;6903:20;;-1:-1:-1;;;6903:20:0;;;;;;;;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;550:327::-;;;679:2;667:9;658:7;654:23;650:32;647:2;;;700:6;692;685:22;647:2;744:9;731:23;763:33;790:5;763:33;:::i;:::-;815:5;867:2;852:18;;;;839:32;;-1:-1:-1;;;637:240:1:o;882:297::-;;1002:2;990:9;981:7;977:23;973:32;970:2;;;1023:6;1015;1008:22;970:2;1060:9;1054:16;1113:5;1106:13;1099:21;1092:5;1089:32;1079:2;;1140:6;1132;1125:22;1184:492;;;;1352:2;1340:9;1331:7;1327:23;1323:32;1320:2;;;1373:6;1365;1358:22;1320:2;1417:9;1404:23;1436:33;1463:5;1436:33;:::i;:::-;1488:5;-1:-1:-1;1545:2:1;1530:18;;1517:32;1558:35;1517:32;1558:35;:::i;:::-;1310:366;;1612:7;;-1:-1:-1;;;1666:2:1;1651:18;;;;1638:32;;1310:366::o;1681:190::-;;1793:2;1781:9;1772:7;1768:23;1764:32;1761:2;;;1814:6;1806;1799:22;1761:2;-1:-1:-1;1842:23:1;;1751:120;-1:-1:-1;1751:120:1:o;1876:194::-;;1999:2;1987:9;1978:7;1974:23;1970:32;1967:2;;;2020:6;2012;2005:22;1967:2;-1:-1:-1;2048:16:1;;1957:113;-1:-1:-1;1957:113:1:o;2075:258::-;;;2204:2;2192:9;2183:7;2179:23;2175:32;2172:2;;;2225:6;2217;2210:22;2172:2;-1:-1:-1;;2253:23:1;;;2323:2;2308:18;;;2295:32;;-1:-1:-1;2162:171:1:o;2338:274::-;;2505:6;2499:13;2521:53;2567:6;2562:3;2555:4;2547:6;2543:17;2521:53;:::i;:::-;2590:16;;;;;2475:137;-1:-1:-1;;2475:137:1:o;2617:203::-;-1:-1:-1;;;;;2781:32:1;;;;2763:51;;2751:2;2736:18;;2718:102::o;2825:282::-;-1:-1:-1;;;;;3025:32:1;;;;3007:51;;3089:2;3074:18;;3067:34;2995:2;2980:18;;2962:145::o;3112:375::-;-1:-1:-1;;;;;3370:15:1;;;3352:34;;3422:15;;;;3417:2;3402:18;;3395:43;3469:2;3454:18;;3447:34;;;;3302:2;3287:18;;3269:218::o;3771:187::-;3936:14;;3929:22;3911:41;;3899:2;3884:18;;3866:92::o;4185:383::-;;4334:2;4323:9;4316:21;4366:6;4360:13;4409:6;4404:2;4393:9;4389:18;4382:34;4425:66;4484:6;4479:2;4468:9;4464:18;4459:2;4451:6;4447:15;4425:66;:::i;:::-;4552:2;4531:15;-1:-1:-1;;4527:29:1;4512:45;;;;4559:2;4508:54;;4306:262;-1:-1:-1;;4306:262:1:o;4573:492::-;4775:2;4757:21;;;4814:2;4794:18;;;4787:30;4853:34;4848:2;4833:18;;4826:62;4924:34;4919:2;4904:18;;4897:62;4996:26;4990:3;4975:19;;4968:55;5055:3;5040:19;;4747:318::o;5070:402::-;5272:2;5254:21;;;5311:2;5291:18;;;5284:30;5350:34;5345:2;5330:18;;5323:62;-1:-1:-1;;;5416:2:1;5401:18;;5394:36;5462:3;5447:19;;5244:228::o;5477:338::-;5679:2;5661:21;;;5718:2;5698:18;;;5691:30;-1:-1:-1;;;5752:2:1;5737:18;;5730:44;5806:2;5791:18;;5651:164::o;5820:351::-;6022:2;6004:21;;;6061:2;6041:18;;;6034:30;6100:29;6095:2;6080:18;;6073:57;6162:2;6147:18;;5994:177::o;6176:398::-;6378:2;6360:21;;;6417:2;6397:18;;;6390:30;6456:34;6451:2;6436:18;;6429:62;-1:-1:-1;;;6522:2:1;6507:18;;6500:32;6564:3;6549:19;;6350:224::o;6986:340::-;7188:2;7170:21;;;7227:2;7207:18;;;7200:30;-1:-1:-1;;;7261:2:1;7246:18;;7239:46;7317:2;7302:18;;7160:166::o;7331:341::-;7533:2;7515:21;;;7572:2;7552:18;;;7545:30;-1:-1:-1;;;7606:2:1;7591:18;;7584:47;7663:2;7648:18;;7505:167::o;7677:397::-;7879:2;7861:21;;;7918:2;7898:18;;;7891:30;7957:34;7952:2;7937:18;;7930:62;-1:-1:-1;;;8023:2:1;8008:18;;8001:31;8064:3;8049:19;;7851:223::o;8079:356::-;8281:2;8263:21;;;8300:18;;;8293:30;8359:34;8354:2;8339:18;;8332:62;8426:2;8411:18;;8253:182::o;8440:398::-;8642:2;8624:21;;;8681:2;8661:18;;;8654:30;8720:34;8715:2;8700:18;;8693:62;-1:-1:-1;;;8786:2:1;8771:18;;8764:32;8828:3;8813:19;;8614:224::o;8843:348::-;9045:2;9027:21;;;9084:2;9064:18;;;9057:30;9123:26;9118:2;9103:18;;9096:54;9182:2;9167:18;;9017:174::o;9196:353::-;9398:2;9380:21;;;9437:2;9417:18;;;9410:30;9476:31;9471:2;9456:18;;9449:59;9540:2;9525:18;;9370:179::o;9554:406::-;9756:2;9738:21;;;9795:2;9775:18;;;9768:30;9834:34;9829:2;9814:18;;9807:62;-1:-1:-1;;;9900:2:1;9885:18;;9878:40;9950:3;9935:19;;9728:232::o;9965:355::-;10167:2;10149:21;;;10206:2;10186:18;;;10179:30;10245:33;10240:2;10225:18;;10218:61;10311:2;10296:18;;10139:181::o;10325:177::-;10471:25;;;10459:2;10444:18;;10426:76::o;10507:128::-;;10578:1;10574:6;10571:1;10568:13;10565:2;;;10584:18;;:::i;:::-;-1:-1:-1;10620:9:1;;10555:80::o;10640:120::-;;10706:1;10696:2;;10711:18;;:::i;:::-;-1:-1:-1;10745:9:1;;10686:74::o;10765:168::-;;10871:1;10867;10863:6;10859:14;10856:1;10853:21;10848:1;10841:9;10834:17;10830:45;10827:2;;;10878:18;;:::i;:::-;-1:-1:-1;10918:9:1;;10817:116::o;10938:125::-;;11006:1;11003;11000:8;10997:2;;;11011:18;;:::i;:::-;-1:-1:-1;11048:9:1;;10987:76::o;11068:258::-;11140:1;11150:113;11164:6;11161:1;11158:13;11150:113;;;11240:11;;;11234:18;11221:11;;;11214:39;11186:2;11179:10;11150:113;;;11281:6;11278:1;11275:13;11272:2;;;-1:-1:-1;;11316:1:1;11298:16;;11291:27;11121:205::o;11331:112::-;;11389:1;11379:2;;11394:18;;:::i;:::-;-1:-1:-1;11428:9:1;;11369:74::o;11448:127::-;11509:10;11504:3;11500:20;11497:1;11490:31;11540:4;11537:1;11530:15;11564:4;11561:1;11554:15;11580:127;11641:10;11636:3;11632:20;11629:1;11622:31;11672:4;11669:1;11662:15;11696:4;11693:1;11686:15;11712:133;-1:-1:-1;;;;;11789:31:1;;11779:42;;11769:2;;11835:1;11832;11825:12;11769:2;11759:86;:::o
Swarm Source
ipfs://416806ba295e2d9d205db79b1dcd6028b794f4815b216a1aafdd81ce3022fc4e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.