Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,004 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 14420657 | 1007 days ago | IN | 0 ETH | 0.00401735 | ||||
Deposit | 13698575 | 1119 days ago | IN | 0 ETH | 0.00193061 | ||||
Deposit | 13698570 | 1119 days ago | IN | 0 ETH | 0.00165222 | ||||
Withdraw | 13366059 | 1171 days ago | IN | 0 ETH | 0.01013091 | ||||
Withdraw | 12636057 | 1285 days ago | IN | 0 ETH | 0.00202303 | ||||
Withdraw | 12538227 | 1300 days ago | IN | 0 ETH | 0.00166505 | ||||
Withdraw | 12538217 | 1300 days ago | IN | 0 ETH | 0.00173041 | ||||
Withdraw | 12482694 | 1309 days ago | IN | 0 ETH | 0.00379627 | ||||
Withdraw | 12482610 | 1309 days ago | IN | 0 ETH | 0.00524166 | ||||
Withdraw | 12471944 | 1310 days ago | IN | 0 ETH | 0.00941159 | ||||
Withdraw | 12471915 | 1310 days ago | IN | 0 ETH | 0.0093325 | ||||
Withdraw | 12470770 | 1310 days ago | IN | 0 ETH | 0.00610016 | ||||
Withdraw | 12469833 | 1311 days ago | IN | 0 ETH | 0.00506169 | ||||
Withdraw | 12469812 | 1311 days ago | IN | 0 ETH | 0.00537805 | ||||
Withdraw | 12469790 | 1311 days ago | IN | 0 ETH | 0.00724394 | ||||
Withdraw | 12463484 | 1311 days ago | IN | 0 ETH | 0.01739282 | ||||
Withdraw | 12461058 | 1312 days ago | IN | 0 ETH | 0.00876898 | ||||
Withdraw | 12460360 | 1312 days ago | IN | 0 ETH | 0.00877867 | ||||
Withdraw | 12456749 | 1313 days ago | IN | 0 ETH | 0.00476575 | ||||
Withdraw | 12456093 | 1313 days ago | IN | 0 ETH | 0.00573255 | ||||
Withdraw | 12451297 | 1313 days ago | IN | 0 ETH | 0.0047431 | ||||
Withdraw | 12440930 | 1315 days ago | IN | 0 ETH | 0.00865563 | ||||
Withdraw | 12440891 | 1315 days ago | IN | 0 ETH | 0.00970711 | ||||
Withdraw | 12440812 | 1315 days ago | IN | 0 ETH | 0.00736912 | ||||
Withdraw | 12440785 | 1315 days ago | IN | 0 ETH | 0.00945918 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Sorbettiere
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-29 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(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); } } } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual 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; } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _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"); } } } // Sorbettiere is a "semifredo of popsicle stand" this contract is created to provide single side farm for IFO of Popsicle Finance. // The contract is based on famous Masterchef contract (Ty guys for that) // It intakes one token and allows the user to farm another token. Due to the crosschain nature of Popsicle Stand we've swapped reward per block // to reward per second. Moreover, we've implemented safe transfer of reward instead of mint in Masterchef. // Future is crosschain... // The contract is ownable untill the DAO will be able to take over. Popsicle community shows that DAO is coming soon. // And the contract ownership will be transferred to other contract contract Sorbettiere is Ownable { using SafeERC20 for IERC20; // Info of each user. struct UserInfo { uint128 amount; // How many LP tokens the user has provided. uint128 rewardDebt; // Reward debt. See explanation below. uint128 remainingIceTokenReward; // ICE Tokens that weren't distributed for user per pool. // // We do some fancy math here. Basically, any point in time, the amount of ICE // entitled to a user but is pending to be distributed is: // // pending reward = (user.amount * pool.accICEPerShare) - user.rewardDebt // // Whenever a user deposits or withdraws Staked tokens to a pool. Here's what happens: // 1. The pool's `accICEPerShare` (and `lastRewardTime`) gets updated. // 2. User receives the pending reward sent to his/her address. // 3. User's `amount` gets updated. // 4. User's `rewardDebt` gets updated. } // Info of each pool. struct PoolInfo { IERC20 stakingToken; // Contract address of staked token uint128 stakingTokenTotalAmount; //Total amount of deposited tokens uint128 accIcePerShare; // Accumulated ICE per share, times 1e12. See below. uint32 lastRewardTime; // Last timestamp number that ICE distribution occurs. uint16 allocPoint; // How many allocation points assigned to this pool. ICE to distribute per second. } IERC20 immutable public ice; // The ICE TOKEN!! uint256 public icePerSecond; // Ice tokens vested per second. PoolInfo[] public poolInfo; // Info of each pool. mapping(uint256 => mapping(address => UserInfo)) public userInfo; // Info of each user that stakes tokens. uint256 public totalAllocPoint = 0; // Total allocation poitns. Must be the sum of all allocation points in all pools. uint32 immutable public startTime; // The timestamp when ICE farming starts. uint32 public endTime; // Time on which the reward calculation should end event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); constructor( IERC20 _ice, uint256 _icePerSecond, uint32 _startTime ) { ice = _ice; icePerSecond = _icePerSecond; startTime = _startTime; endTime = _startTime + 7 days; } function changeEndTime(uint32 addSeconds) external onlyOwner { endTime += addSeconds; } // Changes Ice token reward per second. Use this function to moderate the `lockup amount`. Essentially this function changes the amount of the reward // which is entitled to the user for his token staking by the time the `endTime` is passed. //Good practice to update pools without messing up the contract function setIcePerSecond(uint256 _icePerSecond, bool _withUpdate) external onlyOwner { if (_withUpdate) { massUpdatePools(); } icePerSecond= _icePerSecond; } // How many pools are in the contract function poolLength() external view returns (uint256) { return poolInfo.length; } // Add a new staking token to the pool. Can only be called by the owner. // VERY IMPORTANT NOTICE // ----------- DO NOT add the same staking token more than once. Rewards will be messed up if you do. ------------- // Good practice to update pools without messing up the contract function add( uint16 _allocPoint, IERC20 _stakingToken, bool _withUpdate ) external onlyOwner { if (_withUpdate) { massUpdatePools(); } uint256 lastRewardTime = block.timestamp > startTime ? block.timestamp : startTime; totalAllocPoint +=_allocPoint; poolInfo.push( PoolInfo({ stakingToken: _stakingToken, stakingTokenTotalAmount: 0, allocPoint: _allocPoint, lastRewardTime: uint32(lastRewardTime), accIcePerShare: 0 }) ); } // Update the given pool's ICE allocation point. Can only be called by the owner. // Good practice to update pools without messing up the contract function set( uint256 _pid, uint16 _allocPoint, bool _withUpdate ) external onlyOwner { if (_withUpdate) { massUpdatePools(); } totalAllocPoint = totalAllocPoint - poolInfo[_pid].allocPoint + _allocPoint; poolInfo[_pid].allocPoint = _allocPoint; } // Return reward multiplier over the given _from to _to time. function getMultiplier(uint256 _from, uint256 _to) public view returns (uint256) { _from = _from > startTime ? _from : startTime; if (_from > endTime || _to < startTime) { return 0; } if (_to > endTime) { return endTime - _from; } return _to - _from; } // View function to see pending ICE on frontend. function pendingIce(uint256 _pid, address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accIcePerShare = pool.accIcePerShare; if (block.timestamp > pool.lastRewardTime && pool.stakingTokenTotalAmount != 0) { uint256 multiplier = getMultiplier(pool.lastRewardTime, block.timestamp); uint256 iceReward = multiplier * icePerSecond * pool.allocPoint / totalAllocPoint; accIcePerShare += iceReward * 1e12 / pool.stakingTokenTotalAmount; } return user.amount * accIcePerShare / 1e12 - user.rewardDebt + user.remainingIceTokenReward; } // Update reward vairables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { updatePool(pid); } } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; if (block.timestamp <= pool.lastRewardTime) { return; } if (pool.stakingTokenTotalAmount == 0) { pool.lastRewardTime = uint32(block.timestamp); return; } uint256 multiplier = getMultiplier(pool.lastRewardTime, block.timestamp); uint256 iceReward = multiplier * icePerSecond * pool.allocPoint / totalAllocPoint; pool.accIcePerShare += uint128(iceReward * 1e12 / pool.stakingTokenTotalAmount); pool.lastRewardTime = uint32(block.timestamp); } // Deposit staking tokens to Sorbettiere for ICE allocation. function deposit(uint256 _pid, uint128 _amount) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); if (user.amount > 0) { uint128 pending = user.amount * pool.accIcePerShare / 1e12 - user.rewardDebt + user.remainingIceTokenReward; user.remainingIceTokenReward = safeRewardTransfer(msg.sender, pending); } pool.stakingToken.safeTransferFrom( address(msg.sender), address(this), _amount ); user.amount += _amount; pool.stakingTokenTotalAmount += _amount; user.rewardDebt = user.amount * pool.accIcePerShare / 1e12; emit Deposit(msg.sender, _pid, _amount); } // Withdraw staked tokens from Sorbettiere. function withdraw(uint256 _pid, uint128 _amount) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= _amount, "Sorbettiere: you cant eat that much popsicles"); updatePool(_pid); uint128 pending = user.amount * pool.accIcePerShare / 1e12 - user.rewardDebt + user.remainingIceTokenReward; user.remainingIceTokenReward = safeRewardTransfer(msg.sender, pending); user.amount -= _amount; pool.stakingTokenTotalAmount -= _amount; user.rewardDebt = user.amount * pool.accIcePerShare / 1e12; pool.stakingToken.safeTransfer(address(msg.sender), _amount); emit Withdraw(msg.sender, _pid, _amount); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; user.amount = 0; user.rewardDebt = 0; user.remainingIceTokenReward = 0; pool.stakingToken.safeTransfer(address(msg.sender), user.amount); emit EmergencyWithdraw(msg.sender, _pid, user.amount); } // Safe ice transfer function. Just in case if the pool does not have enough ICE token, // The function returns the amount which is owed to the user function safeRewardTransfer(address _to, uint128 _amount) internal returns(uint128) { uint256 iceTokenBalance = ice.balanceOf(address(this)); if (iceTokenBalance == 0) { //save some gas fee return _amount; } if (_amount > iceTokenBalance) { //save some gas fee ice.safeTransfer(_to, iceTokenBalance); return _amount - uint128(iceTokenBalance); } ice.safeTransfer(_to, _amount); return 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_ice","type":"address"},{"internalType":"uint256","name":"_icePerSecond","type":"uint256"},{"internalType":"uint32","name":"_startTime","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint16","name":"_allocPoint","type":"uint16"},{"internalType":"contract IERC20","name":"_stakingToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"addSeconds","type":"uint32"}],"name":"changeEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint128","name":"_amount","type":"uint128"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ice","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"icePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingIce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"stakingToken","type":"address"},{"internalType":"uint128","name":"stakingTokenTotalAmount","type":"uint128"},{"internalType":"uint128","name":"accIcePerShare","type":"uint128"},{"internalType":"uint32","name":"lastRewardTime","type":"uint32"},{"internalType":"uint16","name":"allocPoint","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint16","name":"_allocPoint","type":"uint16"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_icePerSecond","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setIcePerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","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":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"rewardDebt","type":"uint128"},{"internalType":"uint128","name":"remainingIceTokenReward","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint128","name":"_amount","type":"uint128"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405260006004553480156200001657600080fd5b5060405162001c7238038062001c728339810160408190526200003991620000d6565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606084901b1660805260018290556001600160e01b031960e082901b1660a052620000b28162093a806200012e565b6005805463ffffffff191663ffffffff929092169190911790555062000163915050565b600080600060608486031215620000eb578283fd5b83516001600160a01b038116811462000102578384fd5b60208501516040860151919450925063ffffffff8116811462000123578182fd5b809150509250925092565b600063ffffffff8083168185168083038211156200015a57634e487b7160e01b84526011600452602484fd5b01949350505050565b60805160601c60a05160e01c611aab620001c760003960008181610280015281816109600152818161098d015281816109cf01528181610a7e0152610aab01526000818161020b0152818161125a0152818161130201526113480152611aab6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806378e97925116100b85780639e9e2e131161007c5780639e9e2e131461034c578063cf42947b1461035f578063d1c1b4a814610372578063eaa6ef0414610385578063f2fde38b14610398578063f4cd1b02146103ab57610142565b806378e979251461027b5780638da5cb5b146102a25780638dbb1e3a146102b357806393f1a40b146102c657806398ec8da61461033957610142565b80633197cbb61161010a5780633197cbb6146101e15780634c2a860d1461020657806351eb05a6146102455780635312ea8e14610258578063630b5ba11461026b578063715018a61461027357610142565b806306c9d27c14610147578063081e3eda1461015c5780631526fe271461017357806317caf6f1146101cf5780631b2e7d55146101d8575b600080fd5b61015a61015536600461179a565b6103be565b005b6002545b6040519081526020015b60405180910390f35b610186610181366004611717565b61063a565b604080516001600160a01b039690961686526001600160801b039485166020870152929093169184019190915263ffffffff16606083015261ffff16608082015260a00161016a565b61016060045481565b61016060015481565b6005546101f19063ffffffff1681565b60405163ffffffff909116815260200161016a565b61022d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016a565b61015a610253366004611717565b6106a0565b61015a610266366004611717565b610800565b61015a6108bd565b61015a6108e8565b6101f17f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661022d565b6101606102c13660046117ed565b61095c565b61030f6102d4366004611747565b6003602090815260009283526040808420909152908252902080546001909101546001600160801b0380831692600160801b90048116911683565b604080516001600160801b039485168152928416602084015292169181019190915260600161016a565b61015a6103473660046116cf565b610a42565b61015a61035a36600461179a565b610c10565b61015a61036d36600461180e565b610e3e565b61015a6103803660046117c9565b610ea4565b61015a610393366004611776565b610f91565b61015a6103a6366004611697565b610fcf565b6101606103b9366004611747565b6110b9565b6000600283815481106103e157634e487b7160e01b600052603260045260246000fd5b60009182526020808320868452600380835260408086203387529093529190932080549290910290920192506001600160801b03848116911610156104835760405162461bcd60e51b815260206004820152602d60248201527f536f7262657474696572653a20796f752063616e74206561742074686174206d60448201526c75636820706f707369636c657360981b60648201526084015b60405180910390fd5b61048c846106a0565b6001808201548254918401546000926001600160801b0392831692600160801b80830482169364e8d4a51000936104ca939290910482169116611952565b6104d49190611918565b6104de91906119a0565b6104e891906118b6565b90506104f43382611238565b6001830180546001600160801b0319166001600160801b03928316179055825485918491600091610527918591166119a0565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550838360010160008282829054906101000a90046001600160801b031661057191906119a0565b82546101009290920a6001600160801b038181021990931691831602179091556001850154845464e8d4a5100093506105b592600160801b90920482169116611952565b6105bf9190611918565b82546001600160801b03918216600160801b0290821617835583546105f3916001600160a01b039091169033908716611382565b6040516001600160801b0385168152859033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a35050505050565b6002818154811061064a57600080fd5b60009182526020909120600390910201805460018201546002909201546001600160a01b0390911692506001600160801b0380831692600160801b9004169063ffffffff811690640100000000900461ffff1685565b6000600282815481106106c357634e487b7160e01b600052603260045260246000fd5b60009182526020909120600390910201600281015490915063ffffffff1642116106ed57506107fd565b60018101546001600160801b031661071a57600201805463ffffffff19164263ffffffff161790556107fd565b60028101546000906107329063ffffffff164261095c565b905060006004548360020160049054906101000a900461ffff1661ffff166001548461075e9190611981565b6107689190611981565b610772919061193e565b60018401549091506001600160801b03166107928264e8d4a51000611981565b61079c919061193e565b6001840180546010906107c0908490600160801b90046001600160801b03166118b6565b82546101009290920a6001600160801b03818102199093169190921691909102179055505050600201805463ffffffff19164263ffffffff161790555b50565b60006002828154811061082357634e487b7160e01b600052603260045260246000fd5b600091825260208083208584526003808352604080862033808852945285208581556001810180546001600160801b031916905593020180549094509192610875926001600160a01b03169190611382565b80546040516001600160801b039091168152839033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959060200160405180910390a3505050565b60025460005b818110156108e4576108d4816106a0565b6108dd81611a0b565b90506108c3565b5050565b6000546001600160a01b031633146109125760405162461bcd60e51b815260040161047a90611881565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60007f000000000000000000000000000000000000000000000000000000000000000063ffffffff1683116109b7577f000000000000000000000000000000000000000000000000000000000000000063ffffffff166109b9565b825b60055490935063ffffffff168311806109f757507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1682105b15610a0457506000610a3c565b60055463ffffffff16821115610a2f57600554610a2890849063ffffffff166119c8565b9050610a3c565b610a3983836119c8565b90505b92915050565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b815260040161047a90611881565b8015610a7a57610a7a6108bd565b60007f000000000000000000000000000000000000000000000000000000000000000063ffffffff164211610ad5577f000000000000000000000000000000000000000000000000000000000000000063ffffffff16610ad7565b425b90508361ffff1660046000828254610aef91906118e1565b90915550506040805160a0810182526001600160a01b03948516815260006020820181815292820181815263ffffffff9485166060840190815261ffff98891660808501908152600280546001810182559452935160039093027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054949099166001600160a01b031990941693909317909755925192516001600160801b03908116600160801b029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf83015593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909101805494519095166401000000000265ffffffffffff199094169116179190911790915550565b600060028381548110610c3357634e487b7160e01b600052603260045260246000fd5b60009182526020808320868452600380835260408086203387529093529190932091029091019150610c64846106a0565b80546001600160801b031615610d00576001808201548254918401546000926001600160801b0392831692600160801b80830482169364e8d4a5100093610cb2939290910482169116611952565b610cbc9190611918565b610cc691906119a0565b610cd091906118b6565b9050610cdc3382611238565b6001830180546001600160801b0319166001600160801b0392909216919091179055505b8154610d20906001600160a01b031633306001600160801b0387166113ea565b805483908290600090610d3d9084906001600160801b03166118b6565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828260010160008282829054906101000a90046001600160801b0316610d8791906118b6565b82546101009290920a6001600160801b038181021990931691831602179091556001840154835464e8d4a510009350610dcb92600160801b90920482169116611952565b610dd59190611918565b81546001600160801b03918216600160801b029116178155604051849033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590610e309087906001600160801b0391909116815260200190565b60405180910390a350505050565b6000546001600160a01b03163314610e685760405162461bcd60e51b815260040161047a90611881565b60058054829190600090610e8390849063ffffffff166118f9565b92506101000a81548163ffffffff021916908363ffffffff16021790555050565b6000546001600160a01b03163314610ece5760405162461bcd60e51b815260040161047a90611881565b8015610edc57610edc6108bd565b8161ffff1660028481548110610f0257634e487b7160e01b600052603260045260246000fd5b6000918252602090912060039091020160020154600454610f2f91640100000000900461ffff16906119c8565b610f3991906118e1565b6004819055508160028481548110610f6157634e487b7160e01b600052603260045260246000fd5b906000526020600020906003020160020160046101000a81548161ffff021916908361ffff160217905550505050565b6000546001600160a01b03163314610fbb5760405162461bcd60e51b815260040161047a90611881565b8015610fc957610fc96108bd565b50600155565b6000546001600160a01b03163314610ff95760405162461bcd60e51b815260040161047a90611881565b6001600160a01b03811661105e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600284815481106110dd57634e487b7160e01b600052603260045260246000fd5b60009182526020808320878452600380835260408086206001600160a01b038a16875290935291909320910290910160018101546002820154919350600160801b90046001600160801b03169063ffffffff164211801561114a575060018301546001600160801b031615155b156111e05760028301546000906111679063ffffffff164261095c565b905060006004548560020160049054906101000a900461ffff1661ffff16600154846111939190611981565b61119d9190611981565b6111a7919061193e565b60018601549091506001600160801b03166111c78264e8d4a51000611981565b6111d1919061193e565b6111db90846118e1565b925050505b600182015482546001600160801b0391821691600160801b820481169164e8d4a510009161121091869116611981565b61121a919061193e565b61122491906119c8565b61122e91906118e1565b9695505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561129c57600080fd5b505afa1580156112b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d4919061172f565b9050806112e45782915050610a3c565b80836001600160801b0316111561133b576113296001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583611382565b61133381846119a0565b915050610a3c565b6113786001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016856001600160801b038616611382565b5060009392505050565b6040516001600160a01b0383166024820152604481018290526113e590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611428565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526114229085906323b872dd60e01b906084016113ae565b50505050565b600061147d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114fa9092919063ffffffff16565b8051909150156113e5578080602001905181019061149b91906116b3565b6113e55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161047a565b60606115098484600085611513565b90505b9392505050565b6060824710156115745760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161047a565b61157d85611642565b6115c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161047a565b600080866001600160a01b031685876040516115e59190611832565b60006040518083038185875af1925050503d8060008114611622576040519150601f19603f3d011682016040523d82523d6000602084013e611627565b606091505b509150915061163782828661164c565b979650505050505050565b803b15155b919050565b6060831561165b57508161150c565b82511561166b5782518084602001fd5b8160405162461bcd60e51b815260040161047a919061184e565b803561ffff8116811461164757600080fd5b6000602082840312156116a8578081fd5b813561150c81611a52565b6000602082840312156116c4578081fd5b815161150c81611a67565b6000806000606084860312156116e3578182fd5b6116ec84611685565b925060208401356116fc81611a52565b9150604084013561170c81611a67565b809150509250925092565b600060208284031215611728578081fd5b5035919050565b600060208284031215611740578081fd5b5051919050565b60008060408385031215611759578182fd5b82359150602083013561176b81611a52565b809150509250929050565b60008060408385031215611788578182fd5b82359150602083013561176b81611a67565b600080604083850312156117ac578182fd5b8235915060208301356001600160801b038116811461176b578182fd5b6000806000606084860312156117dd578283fd5b833592506116fc60208501611685565b600080604083850312156117ff578182fd5b50508035926020909101359150565b60006020828403121561181f578081fd5b813563ffffffff8116811461150c578182fd5b600082516118448184602087016119df565b9190910192915050565b600060208252825180602084015261186d8160408501602087016119df565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006001600160801b038083168185168083038211156118d8576118d8611a26565b01949350505050565b600082198211156118f4576118f4611a26565b500190565b600063ffffffff8083168185168083038211156118d8576118d8611a26565b60006001600160801b038084168061193257611932611a3c565b92169190910492915050565b60008261194d5761194d611a3c565b500490565b60006001600160801b038083168185168183048111821515161561197857611978611a26565b02949350505050565b600081600019048311821515161561199b5761199b611a26565b500290565b60006001600160801b03838116908316818110156119c0576119c0611a26565b039392505050565b6000828210156119da576119da611a26565b500390565b60005b838110156119fa5781810151838201526020016119e2565b838111156114225750506000910152565b6000600019821415611a1f57611a1f611a26565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03811681146107fd57600080fd5b80151581146107fd57600080fdfea26469706673582212203bbb7447178e54ebaa606f81d1bd63d425ff93d2b8d8ce77fa666e0e6095fe5364736f6c63430008030033000000000000000000000000f16e81dce15b08f326220742020379b855b87df9000000000000000000000000000000000000000000000000058a9e4983ba98e300000000000000000000000000000000000000000000000000000000606231c0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c806378e97925116100b85780639e9e2e131161007c5780639e9e2e131461034c578063cf42947b1461035f578063d1c1b4a814610372578063eaa6ef0414610385578063f2fde38b14610398578063f4cd1b02146103ab57610142565b806378e979251461027b5780638da5cb5b146102a25780638dbb1e3a146102b357806393f1a40b146102c657806398ec8da61461033957610142565b80633197cbb61161010a5780633197cbb6146101e15780634c2a860d1461020657806351eb05a6146102455780635312ea8e14610258578063630b5ba11461026b578063715018a61461027357610142565b806306c9d27c14610147578063081e3eda1461015c5780631526fe271461017357806317caf6f1146101cf5780631b2e7d55146101d8575b600080fd5b61015a61015536600461179a565b6103be565b005b6002545b6040519081526020015b60405180910390f35b610186610181366004611717565b61063a565b604080516001600160a01b039690961686526001600160801b039485166020870152929093169184019190915263ffffffff16606083015261ffff16608082015260a00161016a565b61016060045481565b61016060015481565b6005546101f19063ffffffff1681565b60405163ffffffff909116815260200161016a565b61022d7f000000000000000000000000f16e81dce15b08f326220742020379b855b87df981565b6040516001600160a01b03909116815260200161016a565b61015a610253366004611717565b6106a0565b61015a610266366004611717565b610800565b61015a6108bd565b61015a6108e8565b6101f17f00000000000000000000000000000000000000000000000000000000606231c081565b6000546001600160a01b031661022d565b6101606102c13660046117ed565b61095c565b61030f6102d4366004611747565b6003602090815260009283526040808420909152908252902080546001909101546001600160801b0380831692600160801b90048116911683565b604080516001600160801b039485168152928416602084015292169181019190915260600161016a565b61015a6103473660046116cf565b610a42565b61015a61035a36600461179a565b610c10565b61015a61036d36600461180e565b610e3e565b61015a6103803660046117c9565b610ea4565b61015a610393366004611776565b610f91565b61015a6103a6366004611697565b610fcf565b6101606103b9366004611747565b6110b9565b6000600283815481106103e157634e487b7160e01b600052603260045260246000fd5b60009182526020808320868452600380835260408086203387529093529190932080549290910290920192506001600160801b03848116911610156104835760405162461bcd60e51b815260206004820152602d60248201527f536f7262657474696572653a20796f752063616e74206561742074686174206d60448201526c75636820706f707369636c657360981b60648201526084015b60405180910390fd5b61048c846106a0565b6001808201548254918401546000926001600160801b0392831692600160801b80830482169364e8d4a51000936104ca939290910482169116611952565b6104d49190611918565b6104de91906119a0565b6104e891906118b6565b90506104f43382611238565b6001830180546001600160801b0319166001600160801b03928316179055825485918491600091610527918591166119a0565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550838360010160008282829054906101000a90046001600160801b031661057191906119a0565b82546101009290920a6001600160801b038181021990931691831602179091556001850154845464e8d4a5100093506105b592600160801b90920482169116611952565b6105bf9190611918565b82546001600160801b03918216600160801b0290821617835583546105f3916001600160a01b039091169033908716611382565b6040516001600160801b0385168152859033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a35050505050565b6002818154811061064a57600080fd5b60009182526020909120600390910201805460018201546002909201546001600160a01b0390911692506001600160801b0380831692600160801b9004169063ffffffff811690640100000000900461ffff1685565b6000600282815481106106c357634e487b7160e01b600052603260045260246000fd5b60009182526020909120600390910201600281015490915063ffffffff1642116106ed57506107fd565b60018101546001600160801b031661071a57600201805463ffffffff19164263ffffffff161790556107fd565b60028101546000906107329063ffffffff164261095c565b905060006004548360020160049054906101000a900461ffff1661ffff166001548461075e9190611981565b6107689190611981565b610772919061193e565b60018401549091506001600160801b03166107928264e8d4a51000611981565b61079c919061193e565b6001840180546010906107c0908490600160801b90046001600160801b03166118b6565b82546101009290920a6001600160801b03818102199093169190921691909102179055505050600201805463ffffffff19164263ffffffff161790555b50565b60006002828154811061082357634e487b7160e01b600052603260045260246000fd5b600091825260208083208584526003808352604080862033808852945285208581556001810180546001600160801b031916905593020180549094509192610875926001600160a01b03169190611382565b80546040516001600160801b039091168152839033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959060200160405180910390a3505050565b60025460005b818110156108e4576108d4816106a0565b6108dd81611a0b565b90506108c3565b5050565b6000546001600160a01b031633146109125760405162461bcd60e51b815260040161047a90611881565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60007f00000000000000000000000000000000000000000000000000000000606231c063ffffffff1683116109b7577f00000000000000000000000000000000000000000000000000000000606231c063ffffffff166109b9565b825b60055490935063ffffffff168311806109f757507f00000000000000000000000000000000000000000000000000000000606231c063ffffffff1682105b15610a0457506000610a3c565b60055463ffffffff16821115610a2f57600554610a2890849063ffffffff166119c8565b9050610a3c565b610a3983836119c8565b90505b92915050565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b815260040161047a90611881565b8015610a7a57610a7a6108bd565b60007f00000000000000000000000000000000000000000000000000000000606231c063ffffffff164211610ad5577f00000000000000000000000000000000000000000000000000000000606231c063ffffffff16610ad7565b425b90508361ffff1660046000828254610aef91906118e1565b90915550506040805160a0810182526001600160a01b03948516815260006020820181815292820181815263ffffffff9485166060840190815261ffff98891660808501908152600280546001810182559452935160039093027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054949099166001600160a01b031990941693909317909755925192516001600160801b03908116600160801b029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf83015593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909101805494519095166401000000000265ffffffffffff199094169116179190911790915550565b600060028381548110610c3357634e487b7160e01b600052603260045260246000fd5b60009182526020808320868452600380835260408086203387529093529190932091029091019150610c64846106a0565b80546001600160801b031615610d00576001808201548254918401546000926001600160801b0392831692600160801b80830482169364e8d4a5100093610cb2939290910482169116611952565b610cbc9190611918565b610cc691906119a0565b610cd091906118b6565b9050610cdc3382611238565b6001830180546001600160801b0319166001600160801b0392909216919091179055505b8154610d20906001600160a01b031633306001600160801b0387166113ea565b805483908290600090610d3d9084906001600160801b03166118b6565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828260010160008282829054906101000a90046001600160801b0316610d8791906118b6565b82546101009290920a6001600160801b038181021990931691831602179091556001840154835464e8d4a510009350610dcb92600160801b90920482169116611952565b610dd59190611918565b81546001600160801b03918216600160801b029116178155604051849033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590610e309087906001600160801b0391909116815260200190565b60405180910390a350505050565b6000546001600160a01b03163314610e685760405162461bcd60e51b815260040161047a90611881565b60058054829190600090610e8390849063ffffffff166118f9565b92506101000a81548163ffffffff021916908363ffffffff16021790555050565b6000546001600160a01b03163314610ece5760405162461bcd60e51b815260040161047a90611881565b8015610edc57610edc6108bd565b8161ffff1660028481548110610f0257634e487b7160e01b600052603260045260246000fd5b6000918252602090912060039091020160020154600454610f2f91640100000000900461ffff16906119c8565b610f3991906118e1565b6004819055508160028481548110610f6157634e487b7160e01b600052603260045260246000fd5b906000526020600020906003020160020160046101000a81548161ffff021916908361ffff160217905550505050565b6000546001600160a01b03163314610fbb5760405162461bcd60e51b815260040161047a90611881565b8015610fc957610fc96108bd565b50600155565b6000546001600160a01b03163314610ff95760405162461bcd60e51b815260040161047a90611881565b6001600160a01b03811661105e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600284815481106110dd57634e487b7160e01b600052603260045260246000fd5b60009182526020808320878452600380835260408086206001600160a01b038a16875290935291909320910290910160018101546002820154919350600160801b90046001600160801b03169063ffffffff164211801561114a575060018301546001600160801b031615155b156111e05760028301546000906111679063ffffffff164261095c565b905060006004548560020160049054906101000a900461ffff1661ffff16600154846111939190611981565b61119d9190611981565b6111a7919061193e565b60018601549091506001600160801b03166111c78264e8d4a51000611981565b6111d1919061193e565b6111db90846118e1565b925050505b600182015482546001600160801b0391821691600160801b820481169164e8d4a510009161121091869116611981565b61121a919061193e565b61122491906119c8565b61122e91906118e1565b9695505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000f16e81dce15b08f326220742020379b855b87df916906370a082319060240160206040518083038186803b15801561129c57600080fd5b505afa1580156112b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d4919061172f565b9050806112e45782915050610a3c565b80836001600160801b0316111561133b576113296001600160a01b037f000000000000000000000000f16e81dce15b08f326220742020379b855b87df9168583611382565b61133381846119a0565b915050610a3c565b6113786001600160a01b037f000000000000000000000000f16e81dce15b08f326220742020379b855b87df916856001600160801b038616611382565b5060009392505050565b6040516001600160a01b0383166024820152604481018290526113e590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611428565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526114229085906323b872dd60e01b906084016113ae565b50505050565b600061147d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114fa9092919063ffffffff16565b8051909150156113e5578080602001905181019061149b91906116b3565b6113e55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161047a565b60606115098484600085611513565b90505b9392505050565b6060824710156115745760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161047a565b61157d85611642565b6115c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161047a565b600080866001600160a01b031685876040516115e59190611832565b60006040518083038185875af1925050503d8060008114611622576040519150601f19603f3d011682016040523d82523d6000602084013e611627565b606091505b509150915061163782828661164c565b979650505050505050565b803b15155b919050565b6060831561165b57508161150c565b82511561166b5782518084602001fd5b8160405162461bcd60e51b815260040161047a919061184e565b803561ffff8116811461164757600080fd5b6000602082840312156116a8578081fd5b813561150c81611a52565b6000602082840312156116c4578081fd5b815161150c81611a67565b6000806000606084860312156116e3578182fd5b6116ec84611685565b925060208401356116fc81611a52565b9150604084013561170c81611a67565b809150509250925092565b600060208284031215611728578081fd5b5035919050565b600060208284031215611740578081fd5b5051919050565b60008060408385031215611759578182fd5b82359150602083013561176b81611a52565b809150509250929050565b60008060408385031215611788578182fd5b82359150602083013561176b81611a67565b600080604083850312156117ac578182fd5b8235915060208301356001600160801b038116811461176b578182fd5b6000806000606084860312156117dd578283fd5b833592506116fc60208501611685565b600080604083850312156117ff578182fd5b50508035926020909101359150565b60006020828403121561181f578081fd5b813563ffffffff8116811461150c578182fd5b600082516118448184602087016119df565b9190910192915050565b600060208252825180602084015261186d8160408501602087016119df565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006001600160801b038083168185168083038211156118d8576118d8611a26565b01949350505050565b600082198211156118f4576118f4611a26565b500190565b600063ffffffff8083168185168083038211156118d8576118d8611a26565b60006001600160801b038084168061193257611932611a3c565b92169190910492915050565b60008261194d5761194d611a3c565b500490565b60006001600160801b038083168185168183048111821515161561197857611978611a26565b02949350505050565b600081600019048311821515161561199b5761199b611a26565b500290565b60006001600160801b03838116908316818110156119c0576119c0611a26565b039392505050565b6000828210156119da576119da611a26565b500390565b60005b838110156119fa5781810151838201526020016119e2565b838111156114225750506000910152565b6000600019821415611a1f57611a1f611a26565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03811681146107fd57600080fd5b80151581146107fd57600080fdfea26469706673582212203bbb7447178e54ebaa606f81d1bd63d425ff93d2b8d8ce77fa666e0e6095fe5364736f6c63430008030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f16e81dce15b08f326220742020379b855b87df9000000000000000000000000000000000000000000000000058a9e4983ba98e300000000000000000000000000000000000000000000000000000000606231c0
-----Decoded View---------------
Arg [0] : _ice (address): 0xf16e81dce15B08F326220742020379B855B87DF9
Arg [1] : _icePerSecond (uint256): 399305555555555555
Arg [2] : _startTime (uint32): 1617048000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f16e81dce15b08f326220742020379b855b87df9
Arg [1] : 000000000000000000000000000000000000000000000000058a9e4983ba98e3
Arg [2] : 00000000000000000000000000000000000000000000000000000000606231c0
Deployed Bytecode Sourcemap
18223:10023:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26327:778;;;;;;:::i;:::-;;:::i;:::-;;21535:95;21607:8;:15;21535:95;;;9077:25:1;;;9065:2;9050:18;21535:95:0;;;;;;;;19861:26;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;5240:32:1;;;;5222:51;;-1:-1:-1;;;;;5362:15:1;;;5357:2;5342:18;;5335:43;5414:15;;;;5394:18;;;5387:43;;;;5478:10;5466:23;5461:2;5446:18;;5439:51;5539:6;5527:19;5521:3;5506:19;;5499:48;5209:3;5194:19;19861:26:0;5176:377:1;20040:34:0;;;;;;19788:27;;;;;;20258:21;;;;;;;;;;;;9287:10:1;9275:23;;;9257:42;;9245:2;9230:18;20258:21:0;9212:93:1;19729:27:0;;;;;;;;-1:-1:-1;;;;;4028:32:1;;;4010:51;;3998:2;3983:18;19729:27:0;3965:102:1;24724:663:0;;;;;;:::i;:::-;;:::i;27176:404::-;;;;;;:::i;:::-;;:::i;24468:180::-;;;:::i;13261:148::-;;;:::i;20170:33::-;;;;;12610:87;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;12610:87;;23163:369;;;;;;:::i;:::-;;:::i;19922:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19922:64:0;;;;-1:-1:-1;;;19922:64:0;;;;;;;;;;;;-1:-1:-1;;;;;8800:15:1;;;8782:34;;8852:15;;;8847:2;8832:18;;8825:43;8904:15;;8884:18;;;8877:43;;;;8717:2;8702:18;19922:64:0;8684:242:1;21938:652:0;;;;;;:::i;:::-;;:::i;25461:809::-;;;;;;:::i;:::-;;:::i;20853:101::-;;;;;;:::i;:::-;;:::i;22755:333::-;;;;;;:::i;:::-;;:::i;21287:203::-;;;;;;:::i;:::-;;:::i;13564:244::-;;;;;;:::i;:::-;;:::i;23594:791::-;;;;;;:::i;:::-;;:::i;26327:778::-;26394:21;26418:8;26427:4;26418:14;;;;;;-1:-1:-1;;;26418:14:0;;;;;;;;;;;;;;;;;26467;;;26418;26467;;;;;;;26482:10;26467:26;;;;;;;;;26512:11;;26418:14;;;;;;;;-1:-1:-1;;;;;;26512:22:0;;;:11;;:22;;26504:80;;;;-1:-1:-1;;;26504:80:0;;6962:2:1;26504:80:0;;;6944:21:1;7001:2;6981:18;;;6974:30;7040:34;7020:18;;;7013:62;-1:-1:-1;;;7091:18:1;;;7084:43;7144:19;;26504:80:0;;;;;;;;;26595:16;26606:4;26595:10;:16::i;:::-;26714:28;;;;;26696:15;;26667:19;;;;26622:15;;-1:-1:-1;;;;;26714:28:0;;;;-1:-1:-1;;;26696:15:0;;;;;;26689:4;;26653:33;;26667:19;;;;;;;26653:11;:33;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;:89;;;;:::i;:::-;26622:120;;26784:39;26803:10;26815:7;26784:18;:39::i;:::-;26753:28;;;:70;;-1:-1:-1;;;;;;26753:70:0;-1:-1:-1;;;;;26753:70:0;;;;;;26834:22;;26849:7;;26753:28;;-1:-1:-1;;26834:22:0;;26849:7;;26834:22;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;26834:22:0;;;;;-1:-1:-1;;;;;26834:22:0;;;;;;26899:7;26867:4;:28;;;:39;;;;;;;;;;-1:-1:-1;;;;;26867:39:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;26867:39:0;;;;;;;;;;;;;;;-1:-1:-1;26949:19:0;;;26935:11;;26971:4;;-1:-1:-1;26935:33:0;;-1:-1:-1;;;26949:19:0;;;;;;26935:11;:33;:::i;:::-;:40;;;;:::i;:::-;26917:58;;-1:-1:-1;;;;;26917:58:0;;;-1:-1:-1;;;26917:58:0;;;;;;;26986:17;;:60;;-1:-1:-1;;;;;26986:17:0;;;;27025:10;;26986:60;;:30;:60::i;:::-;27062:35;;-1:-1:-1;;;;;8468:47:1;;8450:66;;27083:4:0;;27071:10;;27062:35;;8438:2:1;8423:18;27062:35:0;;;;;;;26327:778;;;;;:::o;19861:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19861:26:0;;;;-1:-1:-1;;;;;;19861:26:0;;;;-1:-1:-1;;;19861:26:0;;;;;;;;;;;;;;:::o;24724:663::-;24776:21;24800:8;24809:4;24800:14;;;;;;-1:-1:-1;;;24800:14:0;;;;;;;;;;;;;;;;;;;;;;24848:19;;;;24800:14;;-1:-1:-1;24848:19:0;;24829:15;:38;24825:77;;24884:7;;;24825:77;24918:28;;;;-1:-1:-1;;;;;24918:28:0;24914:132;;24968:19;;:45;;-1:-1:-1;;24968:45:0;24997:15;24968:45;;;;;25028:7;;24914:132;25091:19;;;;25056:18;;25077:51;;25091:19;;25112:15;25077:13;:51::i;:::-;25056:72;;25139:17;25218:15;;25200:4;:15;;;;;;;;;;;;25172:43;;25185:12;;25172:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;25294:28;;;;25139:94;;-1:-1:-1;;;;;;25294:28:0;25275:16;25139:94;25287:4;25275:16;:::i;:::-;:47;;;;:::i;:::-;25244:19;;;:79;;:19;;:79;;;;-1:-1:-1;;;25244:79:0;;-1:-1:-1;;;;;25244:79:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;25244:79:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25334:19:0;;:45;;-1:-1:-1;;25334:45:0;25363:15;25334:45;;;;;24724:663;;:::o;27176:404::-;27235:21;27259:8;27268:4;27259:14;;;;;;-1:-1:-1;;;27259:14:0;;;;;;;;;;;;;;;;;27308;;;27259;27308;;;;;;;27323:10;27308:26;;;;;;;27371:19;;;27345:15;27401:28;;:32;;-1:-1:-1;;;;;;27401:32:0;;;27259:14;;;27444:17;;27259:14;;-1:-1:-1;27308:26:0;;27444:64;;-1:-1:-1;;;;;27444:17:0;;27323:10;27444:30;:64::i;:::-;27560:11;;27524:48;;-1:-1:-1;;;;;27560:11:0;;;8450:66:1;;27554:4:0;;27542:10;;27524:48;;8438:2:1;8423:18;27524:48:0;;;;;;;27176:404;;;:::o;24468:180::-;24530:8;:15;24513:14;24556:85;24584:6;24578:3;:12;24556:85;;;24614:15;24625:3;24614:10;:15::i;:::-;24592:5;;;:::i;:::-;;;24556:85;;;;24468:180;:::o;13261:148::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;13368:1:::1;13352:6:::0;;13331:40:::1;::::0;-1:-1:-1;;;;;13352:6:0;;::::1;::::0;13331:40:::1;::::0;13368:1;;13331:40:::1;13399:1;13382:19:::0;;-1:-1:-1;;;;;;13382:19:0::1;::::0;;13261:148::o;23163:369::-;23262:7;23303:9;23295:17;;:5;:17;:37;;23323:9;23295:37;;;;;23315:5;23295:37;23355:7;;23287:45;;-1:-1:-1;23355:7:0;;23347:15;;;:34;;;23372:9;23366:15;;:3;:15;23347:34;23343:75;;;-1:-1:-1;23405:1:0;23398:8;;23343:75;23438:7;;;;23432:13;;23428:68;;;23469:7;;:15;;23479:5;;23469:7;;:15;:::i;:::-;23462:22;;;;23428:68;23513:11;23519:5;23513:3;:11;:::i;:::-;23506:18;;23163:369;;;;;:::o;21938:652::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;22079:11:::1;22075:61;;;22107:17;:15;:17::i;:::-;22146:22;22202:9;22184:27;;:15;:27;:57;;22232:9;22184:57;;;;;22214:15;22184:57;22146:95;;22270:11;22252:29;;:15;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;22320:251:0::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;22320:251:0;;::::1;::::0;;-1:-1:-1;22320:251:0::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;22292:8:::1;:290:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;-1:-1:-1::0;;;;;;22292:290:0;;::::1;::::0;;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22292:290:0;;::::1;-1:-1:-1::0;;;22292:290:0::1;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;;;;;;;;::::1;::::0;::::1;-1:-1:-1::0;;22292:290:0;;;;::::1;::::0;;;;::::1;::::0;;;-1:-1:-1;21938:652:0:o;25461:809::-;25527:21;25551:8;25560:4;25551:14;;;;;;-1:-1:-1;;;25551:14:0;;;;;;;;;;;;;;;;;25600;;;25551;25600;;;;;;;25615:10;25600:26;;;;;;;;;25551:14;;;;;;-1:-1:-1;25637:16:0;25609:4;25637:10;:16::i;:::-;25668:11;;-1:-1:-1;;;;;25668:11:0;:15;25664:257;;25796:28;;;;;25778:15;;25749:19;;;;25700:15;;-1:-1:-1;;;;;25796:28:0;;;;-1:-1:-1;;;25778:15:0;;;;;;25771:4;;25735:33;;25749:19;;;;;;;25735:11;:33;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;:89;;;;:::i;:::-;25700:124;;25870:39;25889:10;25901:7;25870:18;:39::i;:::-;25839:28;;;:70;;-1:-1:-1;;;;;;25839:70:0;-1:-1:-1;;;;;25839:70:0;;;;;;;;;;-1:-1:-1;25664:257:0;25931:17;;:129;;-1:-1:-1;;;;;25931:17:0;25988:10;26022:4;-1:-1:-1;;;;;25931:129:0;;:34;:129::i;:::-;26071:22;;26086:7;;26071:4;;:11;;:22;;26086:7;;-1:-1:-1;;;;;26071:22:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;26071:22:0;;;;;-1:-1:-1;;;;;26071:22:0;;;;;;26136:7;26104:4;:28;;;:39;;;;;;;;;;-1:-1:-1;;;;;26104:39:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;26104:39:0;;;;;;;;;;;;;;;-1:-1:-1;26186:19:0;;;26172:11;;26208:4;;-1:-1:-1;26172:33:0;;-1:-1:-1;;;26186:19:0;;;;;;26172:11;:33;:::i;:::-;:40;;;;:::i;:::-;26154:58;;-1:-1:-1;;;;;26154:58:0;;;-1:-1:-1;;;26154:58:0;;;;;;26228:34;;26248:4;;26236:10;;26228:34;;;;26254:7;;-1:-1:-1;;;;;8468:47:1;;;;8450:66;;8438:2;8423:18;;8405:117;26228:34:0;;;;;;;;25461:809;;;;:::o;20853:101::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;20925:7:::1;:21:::0;;20936:10;;20925:7;::::1;::::0;:21:::1;::::0;20936:10;;20925:21:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20853:101:::0;:::o;22755:333::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;22888:11:::1;22884:61;;;22916:17;:15;:17::i;:::-;23019:11;22973:57;;22991:8;23000:4;22991:14;;;;;;-1:-1:-1::0;;;22991:14:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:25;;::::0;::::1;22973:15:::0;:43:::1;::::0;22991:25;;::::1;;;::::0;22973:43:::1;:::i;:::-;:57;;;;:::i;:::-;22955:15;:75;;;;23069:11;23041:8;23050:4;23041:14;;;;;;-1:-1:-1::0;;;23041:14:0::1;;;;;;;;;;;;;;;;;;;:25;;;:39;;;;;;;;;;;;;;;;;;22755:333:::0;;;:::o;21287:203::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;21388:11:::1;21384:61;;;21416:17;:15;:17::i;:::-;-1:-1:-1::0;21455:12:0::1;:27:::0;21287:203::o;13564:244::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13653:22:0;::::1;13645:73;;;::::0;-1:-1:-1;;;13645:73:0;;6148:2:1;13645:73:0::1;::::0;::::1;6130:21:1::0;6187:2;6167:18;;;6160:30;6226:34;6206:18;;;6199:62;-1:-1:-1;;;6277:18:1;;;6270:36;6323:19;;13645:73:0::1;6120:228:1::0;13645:73:0::1;13755:6;::::0;;13734:38:::1;::::0;-1:-1:-1;;;;;13734:38:0;;::::1;::::0;13755:6;::::1;::::0;13734:38:::1;::::0;::::1;13783:6;:17:::0;;-1:-1:-1;;;;;;13783:17:0::1;-1:-1:-1::0;;;;;13783:17:0;;;::::1;::::0;;;::::1;::::0;;13564:244::o;23594:791::-;23693:7;23718:21;23742:8;23751:4;23742:14;;;;;;-1:-1:-1;;;23742:14:0;;;;;;;;;;;;;;;;;23791;;;23742;23791;;;;;;;-1:-1:-1;;;;;23791:21:0;;;;;;;;;;;23742:14;;;;;23848:19;;;;23909;;;;23742:14;;-1:-1:-1;;;;23848:19:0;;-1:-1:-1;;;;;23848:19:0;;23909;;23891:15;:37;:74;;;;-1:-1:-1;23932:28:0;;;;-1:-1:-1;;;;;23932:28:0;:33;;23891:74;23887:389;;;24034:19;;;;23982:18;;24020:51;;24034:19;;24055:15;24020:13;:51::i;:::-;23982:89;;24086:17;24169:15;;24151:4;:15;;;;;;;;;;;;24123:43;;24136:12;;24123:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;24236:28;;;;24086:98;;-1:-1:-1;;;;;;24236:28:0;24217:16;24086:98;24229:4;24217:16;:::i;:::-;:47;;;;:::i;:::-;24199:65;;;;:::i;:::-;;;23887:389;;;24349:28;;;;24331:15;;-1:-1:-1;;;;;24349:28:0;;;;-1:-1:-1;;;24331:15:0;;;;;24324:4;;24293:28;;24307:14;;24293:11;:28;:::i;:::-;:35;;;;:::i;:::-;:53;;;;:::i;:::-;:84;;;;:::i;:::-;24286:91;23594:791;-1:-1:-1;;;;;;23594:791:0:o;27747:496::-;27868:28;;-1:-1:-1;;;27868:28:0;;27890:4;27868:28;;;4010:51:1;27822:7:0;;;;-1:-1:-1;;;;;27868:3:0;:13;;;;3983:18:1;;27868:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27842:54;-1:-1:-1;27911:20:0;27907:87;;27975:7;27968:14;;;;;27907:87;28018:15;28008:7;-1:-1:-1;;;;;28008:25:0;;28004:172;;;28070:38;-1:-1:-1;;;;;28070:3:0;:16;28087:3;28092:15;28070:16;:38::i;:::-;28130:34;28148:15;28130:7;:34;:::i;:::-;28123:41;;;;;28004:172;28186:30;-1:-1:-1;;;;;28186:3:0;:16;28203:3;-1:-1:-1;;;;;28186:30:0;;:16;:30::i;:::-;-1:-1:-1;28234:1:0;;27747:496;-1:-1:-1;;;27747:496:0:o;14341:177::-;14451:58;;-1:-1:-1;;;;;4644:32:1;;14451:58:0;;;4626:51:1;4693:18;;;4686:34;;;14424:86:0;;14444:5;;-1:-1:-1;;;14474:23:0;4599:18:1;;14451:58:0;;;;-1:-1:-1;;14451:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14451:58:0;-1:-1:-1;;;;;;14451:58:0;;;;;;;;;;14424:19;:86::i;:::-;14341:177;;;:::o;14526:205::-;14654:68;;-1:-1:-1;;;;;4330:15:1;;;14654:68:0;;;4312:34:1;4382:15;;4362:18;;;4355:43;4414:18;;;4407:34;;;14627:96:0;;14647:5;;-1:-1:-1;;;14677:27:0;4247:18:1;;14654:68:0;4229:218:1;14627:96:0;14526:205;;;;:::o;16775:761::-;17199:23;17225:69;17253:4;17225:69;;;;;;;;;;;;;;;;;17233:5;-1:-1:-1;;;;;17225:27:0;;;:69;;;;;:::i;:::-;17309:17;;17199:95;;-1:-1:-1;17309:21:0;17305:224;;17451:10;17440:30;;;;;;;;;;;;:::i;:::-;17432:85;;;;-1:-1:-1;;;17432:85:0;;8095:2:1;17432:85:0;;;8077:21:1;8134:2;8114:18;;;8107:30;8173:34;8153:18;;;8146:62;-1:-1:-1;;;8224:18:1;;;8217:40;8274:19;;17432:85:0;8067:232:1;4548:195:0;4651:12;4683:52;4705:6;4713:4;4719:1;4722:12;4683:21;:52::i;:::-;4676:59;;4548:195;;;;;;:::o;5600:530::-;5727:12;5785:5;5760:21;:30;;5752:81;;;;-1:-1:-1;;;5752:81:0;;6555:2:1;5752:81:0;;;6537:21:1;6594:2;6574:18;;;6567:30;6633:34;6613:18;;;6606:62;-1:-1:-1;;;6684:18:1;;;6677:36;6730:19;;5752:81:0;6527:228:1;5752:81:0;5852:18;5863:6;5852:10;:18::i;:::-;5844:60;;;;-1:-1:-1;;;5844:60:0;;7737:2:1;5844:60:0;;;7719:21:1;7776:2;7756:18;;;7749:30;7815:31;7795:18;;;7788:59;7864:18;;5844:60:0;7709:179:1;5844:60:0;5978:12;5992:23;6019:6;-1:-1:-1;;;;;6019:11:0;6039:5;6047:4;6019:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:75;;;;6070:52;6088:7;6097:10;6109:12;6070:17;:52::i;:::-;6063:59;5600:530;-1:-1:-1;;;;;;;5600:530:0:o;1630:422::-;1997:20;;2036:8;;1630:422;;;;:::o;8140:742::-;8255:12;8284:7;8280:595;;;-1:-1:-1;8315:10:0;8308:17;;8280:595;8429:17;;:21;8425:439;;8692:10;8686:17;8753:15;8740:10;8736:2;8732:19;8725:44;8640:148;8835:12;8828:20;;-1:-1:-1;;;8828:20:0;;;;;;;;:::i;14:159:1:-;81:20;;141:6;130:18;;120:29;;110:2;;163:1;160;153:12;178:257;;290:2;278:9;269:7;265:23;261:32;258:2;;;311:6;303;296:22;258:2;355:9;342:23;374:31;399:5;374:31;:::i;440:255::-;;560:2;548:9;539:7;535:23;531:32;528:2;;;581:6;573;566:22;528:2;618:9;612:16;637:28;659:5;637:28;:::i;700:478::-;;;;856:2;844:9;835:7;831:23;827:32;824:2;;;877:6;869;862:22;824:2;905:28;923:9;905:28;:::i;:::-;895:38;;983:2;972:9;968:18;955:32;996:31;1021:5;996:31;:::i;:::-;1046:5;-1:-1:-1;1103:2:1;1088:18;;1075:32;1116:30;1075:32;1116:30;:::i;:::-;1165:7;1155:17;;;814:364;;;;;:::o;1183:190::-;;1295:2;1283:9;1274:7;1270:23;1266:32;1263:2;;;1316:6;1308;1301:22;1263:2;-1:-1:-1;1344:23:1;;1253:120;-1:-1:-1;1253:120:1:o;1378:194::-;;1501:2;1489:9;1480:7;1476:23;1472:32;1469:2;;;1522:6;1514;1507:22;1469:2;-1:-1:-1;1550:16:1;;1459:113;-1:-1:-1;1459:113:1:o;1577:325::-;;;1706:2;1694:9;1685:7;1681:23;1677:32;1674:2;;;1727:6;1719;1712:22;1674:2;1768:9;1755:23;1745:33;;1828:2;1817:9;1813:18;1800:32;1841:31;1866:5;1841:31;:::i;:::-;1891:5;1881:15;;;1664:238;;;;;:::o;1907:319::-;;;2033:2;2021:9;2012:7;2008:23;2004:32;2001:2;;;2054:6;2046;2039:22;2001:2;2095:9;2082:23;2072:33;;2155:2;2144:9;2140:18;2127:32;2168:28;2190:5;2168:28;:::i;2231:389::-;;;2360:2;2348:9;2339:7;2335:23;2331:32;2328:2;;;2381:6;2373;2366:22;2328:2;2422:9;2409:23;2399:33;;2482:2;2471:9;2467:18;2454:32;-1:-1:-1;;;;;2519:5:1;2515:46;2508:5;2505:57;2495:2;;2581:6;2573;2566:22;2625:391;;;;2767:2;2755:9;2746:7;2742:23;2738:32;2735:2;;;2788:6;2780;2773:22;2735:2;2829:9;2816:23;2806:33;;2858:37;2891:2;2880:9;2876:18;2858:37;:::i;3021:258::-;;;3150:2;3138:9;3129:7;3125:23;3121:32;3118:2;;;3171:6;3163;3156:22;3118:2;-1:-1:-1;;3199:23:1;;;3269:2;3254:18;;;3241:32;;-1:-1:-1;3108:171:1:o;3284:296::-;;3395:2;3383:9;3374:7;3370:23;3366:32;3363:2;;;3416:6;3408;3401:22;3363:2;3460:9;3447:23;3510:10;3503:5;3499:22;3492:5;3489:33;3479:2;;3541:6;3533;3526:22;3585:274;;3752:6;3746:13;3768:53;3814:6;3809:3;3802:4;3794:6;3790:17;3768:53;:::i;:::-;3837:16;;;;;3722:137;-1:-1:-1;;3722:137:1:o;5558:383::-;;5707:2;5696:9;5689:21;5739:6;5733:13;5782:6;5777:2;5766:9;5762:18;5755:34;5798:66;5857:6;5852:2;5841:9;5837:18;5832:2;5824:6;5820:15;5798:66;:::i;:::-;5925:2;5904:15;-1:-1:-1;;5900:29:1;5885:45;;;;5932:2;5881:54;;5679:262;-1:-1:-1;;5679:262:1:o;7174:356::-;7376:2;7358:21;;;7395:18;;;7388:30;7454:34;7449:2;7434:18;;7427:62;7521:2;7506:18;;7348:182::o;9310:253::-;;-1:-1:-1;;;;;9439:2:1;9436:1;9432:10;9469:2;9466:1;9462:10;9500:3;9496:2;9492:12;9487:3;9484:21;9481:2;;;9508:18;;:::i;:::-;9544:13;;9358:205;-1:-1:-1;;;;9358:205:1:o;9568:128::-;;9639:1;9635:6;9632:1;9629:13;9626:2;;;9645:18;;:::i;:::-;-1:-1:-1;9681:9:1;;9616:80::o;9701:228::-;;9768:10;9805:2;9802:1;9798:10;9835:2;9832:1;9828:10;9866:3;9862:2;9858:12;9853:3;9850:21;9847:2;;;9874:18;;:::i;9934:216::-;;-1:-1:-1;;;;;10061:2:1;10058:1;10054:10;10083:3;10073:2;;10090:18;;:::i;:::-;10128:10;;10124:20;;;;;9980:170;-1:-1:-1;;9980:170:1:o;10155:120::-;;10221:1;10211:2;;10226:18;;:::i;:::-;-1:-1:-1;10260:9:1;;10201:74::o;10280:287::-;;-1:-1:-1;;;;;10413:2:1;10410:1;10406:10;10443:2;10440:1;10436:10;10499:3;10495:2;10491:12;10486:3;10483:21;10476:3;10469:11;10462:19;10458:47;10455:2;;;10508:18;;:::i;:::-;10548:13;;10332:235;-1:-1:-1;;;;10332:235:1:o;10572:168::-;;10678:1;10674;10670:6;10666:14;10663:1;10660:21;10655:1;10648:9;10641:17;10637:45;10634:2;;;10685:18;;:::i;:::-;-1:-1:-1;10725:9:1;;10624:116::o;10745:246::-;;-1:-1:-1;;;;;10898:10:1;;;;10868;;10920:12;;;10917:2;;;10935:18;;:::i;:::-;10972:13;;10794:197;-1:-1:-1;;;10794:197:1:o;10996:125::-;;11064:1;11061;11058:8;11055:2;;;11069:18;;:::i;:::-;-1:-1:-1;11106:9:1;;11045:76::o;11126:258::-;11198:1;11208:113;11222:6;11219:1;11216:13;11208:113;;;11298:11;;;11292:18;11279:11;;;11272:39;11244:2;11237:10;11208:113;;;11339:6;11336:1;11333:13;11330:2;;;-1:-1:-1;;11374:1:1;11356:16;;11349:27;11179:205::o;11389:135::-;;-1:-1:-1;;11449:17:1;;11446:2;;;11469:18;;:::i;:::-;-1:-1:-1;11516:1:1;11505:13;;11436:88::o;11529:127::-;11590:10;11585:3;11581:20;11578:1;11571:31;11621:4;11618:1;11611:15;11645:4;11642:1;11635:15;11661:127;11722:10;11717:3;11713:20;11710:1;11703:31;11753:4;11750:1;11743:15;11777:4;11774:1;11767:15;11793:131;-1:-1:-1;;;;;11868:31:1;;11858:42;;11848:2;;11914:1;11911;11904:12;11929:118;12015:5;12008:13;12001:21;11994:5;11991:32;11981:2;;12037:1;12034;12027:12
Swarm Source
ipfs://3bbb7447178e54ebaa606f81d1bd63d425ff93d2b8d8ce77fa666e0e6095fe53
Loading...
Loading
Loading...
Loading
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.