ETH Price: $3,717.45 (+3.51%)

Contract

0x8e9A7F848eaf0deE5d89ba9d22f6eED56f778e53
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Stake172948702023-05-19 16:58:35561 days ago1684515515IN
0x8e9A7F84...56f778e53
0 ETH0.0071233948.66837506
Unstake172906192023-05-19 2:34:23561 days ago1684463663IN
0x8e9A7F84...56f778e53
0 ETH0.0023502532.68697632
Unstake172906012023-05-19 2:30:47561 days ago1684463447IN
0x8e9A7F84...56f778e53
0 ETH0.0032572836.59790088
Stake172743442023-05-16 19:31:47564 days ago1684265507IN
0x8e9A7F84...56f778e53
0 ETH0.007460959.94334917
Unstake172742632023-05-16 19:15:35564 days ago1684264535IN
0x8e9A7F84...56f778e53
0 ETH0.0056986664.0284534
Unstake172687012023-05-16 0:23:47565 days ago1684196627IN
0x8e9A7F84...56f778e53
0 ETH0.0488319558.58916301
Stake172667782023-05-15 17:52:11565 days ago1684173131IN
0x8e9A7F84...56f778e53
0 ETH0.0134934359.83917524
Stake172664392023-05-15 16:43:47565 days ago1684169027IN
0x8e9A7F84...56f778e53
0 ETH0.0104151773.57113938
Stake172605392023-05-14 20:43:47566 days ago1684097027IN
0x8e9A7F84...56f778e53
0 ETH0.0249225534.76952976
Stake172595952023-05-14 17:32:23566 days ago1684085543IN
0x8e9A7F84...56f778e53
0 ETH0.0072721751.36946836
Unstake172501492023-05-13 9:24:11567 days ago1683969851IN
0x8e9A7F84...56f778e53
0 ETH0.0033598437.92236621
Stake172470112023-05-12 22:46:59568 days ago1683931619IN
0x8e9A7F84...56f778e53
0 ETH0.0081982265.86719515
Unstake172100872023-05-07 17:16:35573 days ago1683479795IN
0x8e9A7F84...56f778e53
0 ETH0.00511089132.32433753
Unstake172100762023-05-07 17:14:23573 days ago1683479663IN
0x8e9A7F84...56f778e53
0 ETH0.00424192135.43812628
Unstake171502902023-04-29 7:31:59581 days ago1682753519IN
0x8e9A7F84...56f778e53
0 ETH0.0010134832.35908621
Stake171501962023-04-29 7:12:59581 days ago1682752379IN
0x8e9A7F84...56f778e53
0 ETH0.004566632.25781298
Unstake171461592023-04-28 17:38:11582 days ago1682703491IN
0x8e9A7F84...56f778e53
0 ETH0.0015118539.15495085
Stake171455042023-04-28 15:26:11582 days ago1682695571IN
0x8e9A7F84...56f778e53
0 ETH0.0225811635
Stake171452022023-04-28 14:25:11582 days ago1682691911IN
0x8e9A7F84...56f778e53
0 ETH0.0058240241.14001322
Stake171451802023-04-28 14:20:47582 days ago1682691647IN
0x8e9A7F84...56f778e53
0 ETH0.0053688437.92786409
Stake171451502023-04-28 14:14:35582 days ago1682691275IN
0x8e9A7F84...56f778e53
0 ETH0.0057251240.44139937
Stake171451382023-04-28 14:12:11582 days ago1682691131IN
0x8e9A7F84...56f778e53
0 ETH0.0059533242.0533243
Stake171451092023-04-28 14:06:23582 days ago1682690783IN
0x8e9A7F84...56f778e53
0 ETH0.0087464261.78860521
Stake171450772023-04-28 13:59:59582 days ago1682690399IN
0x8e9A7F84...56f778e53
0 ETH0.0055109938.9287841
Stake171450682023-04-28 13:58:11582 days ago1682690291IN
0x8e9A7F84...56f778e53
0 ETH0.0058340241.21409529
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EarlyBirds_Staking

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-21
*/

// SPDX-License-Identifier: MIT
/*
  ______           _         ____  _         _     
 |  ____|         | |       |  _ \(_)       | |    
 | |__   __ _ _ __| |_   _  | |_) |_ _ __ __| |___ 
 |  __| / _` | '__| | | | | |  _ <| | '__/ _` / __|
 | |___| (_| | |  | | |_| | | |_) | | | | (_| \__ \
 |______\__,_|_|  |_|\__, | |____/|_|_|  \__,_|___/
                      __/ |                        
                     |___/      
              By Devko.dev#7286
*/
// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contract.sol


pragma solidity ^0.8.7;



interface IEB {
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function balanceOf(address owner) external view returns (uint256 balance);
}

contract EarlyBirds_Staking is Ownable {
    using SafeMath for uint256;

    IEB public EB_Contract = IEB(0x3D84cbDC126B1d9DCA50bfFe0c7bb1940A4D029D);

    struct token {
        uint256 stakeDate;
        address stakerAddress;
        uint256 tierId;
        uint256 collected;
        uint256 boost;
    }
    mapping(uint256 => token) public stakedTokens;
    mapping(address => uint256) public stakedTokensCount;
    mapping(uint256 => uint256) public tiersRate;
    mapping(uint256 => uint256) public tiersDays;


    constructor() {
        tiersRate[1] = 0.0000578703703 ether;
        tiersRate[2] = 0.0001157407406 ether;
        tiersRate[3] = 0.0002314814812 ether;

        tiersDays[1] = 14 days;
        tiersDays[2] = 90 days;
        tiersDays[3] = 365 days;
    }

    modifier notContract() {
        require(
            (!_isContract(msg.sender)) && (msg.sender == tx.origin),
            "Contracts not allowed"
        );
        _;
    }

    function _isContract(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function stake(uint256[] calldata tokenIds, uint256 tierId)
        external
        notContract
    {
        require(tiersRate[tierId] > 0, "TIER_NOT_VALID");

        for (uint256 index = 0; index < tokenIds.length; index++) {
            if (EB_Contract.ownerOf(tokenIds[index]) == msg.sender) {
                EB_Contract.transferFrom(
                    msg.sender,
                    address(this),
                    tokenIds[index]
                );

                stakedTokens[tokenIds[index]].stakeDate = block.timestamp;
                stakedTokens[tokenIds[index]].tierId = tierId;
                stakedTokens[tokenIds[index]].stakerAddress = msg.sender;

                stakedTokensCount[msg.sender]++;
            }
        }
    }

    function unstake(uint256[] calldata tokenIds) external notContract {
        for (uint256 index = 0; index < tokenIds.length; index++) {
            if (
                stakedTokens[tokenIds[index]].stakerAddress == msg.sender &&
                (stakedTokens[tokenIds[index]].stakeDate +
                    tiersDays[stakedTokens[tokenIds[index]].tierId]) <
                block.timestamp
            ) {
                EB_Contract.transferFrom(
                    address(this),
                    msg.sender,
                    tokenIds[index]
                );
                stakedTokens[tokenIds[index]].collected = this
                    .claimableWormsForId(tokenIds[index]);
                stakedTokens[tokenIds[index]].stakeDate = 0;
                stakedTokens[tokenIds[index]].tierId = 0;
                stakedTokens[tokenIds[index]].stakerAddress = address(0);

                stakedTokensCount[msg.sender]--;
            }
        }
    }

    function changeBoostsBulk(uint256[] memory tokenIds, uint256 boost)
        external
        onlyOwner
    {
        for (uint256 index = 0; index < tokenIds.length; index++) {
            stakedTokens[tokenIds[index]].boost = boost;
        }
    }

    function changeBoosts(uint256[] memory tokenIds, uint256[] memory boosts)
        external
        onlyOwner
    {
        require(tokenIds.length == boosts.length, "LENGTH_NOT_MATCHED");

        for (uint256 index = 0; index < tokenIds.length; index++) {
            stakedTokens[tokenIds[index]].boost = boosts[index];
        }
    }

    function claimableWormsFor(uint256[] memory tokenIds)
        external
        view
        returns (uint256)
    {
        uint256 totalClaimable = 0;
        for (uint256 index = 0; index < tokenIds.length; index++) {
            uint256 timePassed = block.timestamp -
                stakedTokens[tokenIds[index]].stakeDate;

            uint256 noBoostAmount;
            if (timePassed > tiersDays[stakedTokens[tokenIds[index]].tierId]) {
                noBoostAmount =
                    tiersDays[stakedTokens[tokenIds[index]].tierId] *
                    tiersRate[stakedTokens[tokenIds[index]].tierId];
            } else {
                noBoostAmount =
                    timePassed *
                    tiersRate[stakedTokens[tokenIds[index]].tierId];
            }

            if (stakedTokens[tokenIds[index]].boost == 0) {
                totalClaimable +=
                    stakedTokens[tokenIds[index]].collected +
                    noBoostAmount;
            } else {
                totalClaimable +=
                    stakedTokens[tokenIds[index]].collected +
                    noBoostAmount +
                    ((noBoostAmount * stakedTokens[tokenIds[index]].boost) /
                        1000);
            }
        }
        return totalClaimable;
    }

    function claimableWormsForId(uint256 tokenId)
        external
        view
        returns (uint256)
    {
        uint256 timePassed = block.timestamp - stakedTokens[tokenId].stakeDate;
        uint256 noBoostAmount;
        if (timePassed > tiersDays[stakedTokens[tokenId].tierId]) {
            noBoostAmount =
                tiersDays[stakedTokens[tokenId].tierId] *
                tiersRate[stakedTokens[tokenId].tierId];
        } else {
            noBoostAmount =
                timePassed *
                tiersRate[stakedTokens[tokenId].tierId];
        }

        if (stakedTokens[tokenId].boost == 0) {
            return stakedTokens[tokenId].collected + noBoostAmount;
        } else {
            return
                stakedTokens[tokenId].collected +
                noBoostAmount +
                ((noBoostAmount * stakedTokens[tokenId].boost) / 1000);
        }
    }

    function tokensDetails(uint256[] memory tokens)
        external
        view
        returns (token[] memory)
    {
        token[] memory tokensList = new token[](tokens.length);

        for (uint256 index = 0; index < tokens.length; index++) {
            tokensList[index] = stakedTokens[tokens[index]];
        }
        return tokensList;
    }

    function tokensOwnedBy(address owner)
        external
        view
        returns (uint256[] memory)
    {
        uint256[] memory tokensList = new uint256[](
            EB_Contract.balanceOf(owner)
        );
        uint256 currentIndex;
        for (uint256 index = 1; index <= 1420; index++) {
            try EB_Contract.ownerOf(index) {
                if (EB_Contract.ownerOf(index) == owner) {
                    tokensList[currentIndex] = uint256(index);
                    currentIndex++;
                }
            } catch {}
        }
        return tokensList;
    }

    function tokensStakedBy(address owner)
        external
        view
        returns (uint256[] memory)
    {
        uint256[] memory tokensList = new uint256[](stakedTokensCount[owner]);
        uint256 currentIndex = 0;
        for (uint256 tokenId = 1; tokenId <= 1420; tokenId++) {
            if (stakedTokens[tokenId].stakerAddress == owner) {
                tokensList[currentIndex] = uint256(tokenId);
                currentIndex++;
            }
        }
        return tokensList;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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"},{"inputs":[],"name":"EB_Contract","outputs":[{"internalType":"contract IEB","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"boosts","type":"uint256[]"}],"name":"changeBoosts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"boost","type":"uint256"}],"name":"changeBoostsBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claimableWormsFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claimableWormsForId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedTokens","outputs":[{"internalType":"uint256","name":"stakeDate","type":"uint256"},{"internalType":"address","name":"stakerAddress","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"collected","type":"uint256"},{"internalType":"uint256","name":"boost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakedTokensCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiersDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiersRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"tokensDetails","outputs":[{"components":[{"internalType":"uint256","name":"stakeDate","type":"uint256"},{"internalType":"address","name":"stakerAddress","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"collected","type":"uint256"},{"internalType":"uint256","name":"boost","type":"uint256"}],"internalType":"struct EarlyBirds_Staking.token[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOwnedBy","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensStakedBy","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":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600180546001600160a01b031916733d84cbdc126b1d9dca50bffe0c7bb1940a4d029d17905534801561003657600080fd5b506100403361013d565b6534a1fedd60607fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0555656943fdbac0c07f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a75565d287fb7581807f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa0556005602052621275007f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b556276a7007f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a5560036000526301e133807fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc05561018d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6118898061019c6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063ce98c28911610071578063ce98c289146102b4578063e449f341146102c7578063ea66aeb3146102da578063f2fde38b146102ed578063f703b5eb1461030057600080fd5b80638da5cb5b146101e6578063a444319a1461020b578063c07885551461022b578063c688df85146102a157600080fd5b80636ec00232116100de5780636ec0023214610196578063715018a6146101b657806377325ebe146101c0578063857b767b146101d357600080fd5b80631e6c7bfd146101105780633d8c4584146101435780633fe3941e1461016357806364728f6d14610183575b600080fd5b61013061011e36600461166d565b60046020526000908152604090205481565b6040519081526020015b60405180910390f35b6101306101513660046114c0565b60036020526000908152604090205481565b61013061017136600461166d565b60056020526000908152604090205481565b61013061019136600461158f565b610313565b6101a96101a436600461158f565b6105ce565b60405161013a919061169f565b6101be61070c565b005b6101be6101ce366004611628565b610720565b6101be6101e1366004611543565b610780565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013a565b61021e6102193660046114c0565b610a5c565b60405161013a9190611716565b61027161023936600461166d565b60026020819052600091825260409091208054600182015492820154600383015460049093015491936001600160a01b031692909185565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a00161013a565b6001546101f3906001600160a01b031681565b6101306102c236600461166d565b610b37565b6101be6102d5366004611501565b610c6a565b61021e6102e83660046114c0565b610fd9565b6101be6102fb3660046114c0565b6111f6565b6101be61030e3660046115c4565b61126f565b600080805b83518110156105c75760006002600086848151811061033957610339611812565b60200260200101518152602001908152602001600020600001544261035e91906117b3565b90506000600560006002600089878151811061037c5761037c611812565b60200260200101518152602001908152602001600020600201548152602001908152602001600020548211156104435760046000600260008987815181106103c6576103c6611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205460056000600260008a888151811061040957610409611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205461043c9190611794565b9050610494565b600460006002600089878151811061045d5761045d611812565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054826104919190611794565b90505b600260008785815181106104aa576104aa611812565b6020026020010151815260200190815260200160002060040154600014156105185780600260008886815181106104e3576104e3611812565b6020026020010151815260200190815260200160002060030154610507919061175a565b610511908561175a565b93506105b2565b6103e86002600088868151811061053157610531611812565b6020026020010151815260200190815260200160002060040154826105569190611794565b6105609190611772565b816002600089878151811061057757610577611812565b602002602001015181526020019081526020016000206003015461059b919061175a565b6105a5919061175a565b6105af908561175a565b93505b505080806105bf906117e1565b915050610318565b5092915050565b60606000825167ffffffffffffffff8111156105ec576105ec611828565b60405190808252806020026020018201604052801561065857816020015b6106456040518060a001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b81526020019060019003908161060a5790505b50905060005b83518110156105c7576002600085838151811061067d5761067d611812565b6020908102919091018101518252818101929092526040908101600020815160a0810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260040154608082015282518390839081106106ee576106ee611812565b60200260200101819052508080610704906117e1565b91505061065e565b610714611329565b61071e6000611383565b565b610728611329565b60005b825181101561077b57816002600085848151811061074b5761074b611812565b60200260200101518152602001908152602001600020600401819055508080610773906117e1565b91505061072b565b505050565b333b15801561078e57503332145b6107d75760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b6000818152600460205260409020546108235760405162461bcd60e51b815260206004820152600e60248201526d1512515497d393d517d59053125160921b60448201526064016107ce565b60005b82811015610a565760015433906001600160a01b0316636352211e86868581811061085357610853611812565b905060200201356040518263ffffffff1660e01b815260040161087891815260200190565b60206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c891906114e4565b6001600160a01b03161415610a44576001546001600160a01b03166323b872dd33308787868181106108fc576108fc611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561095357600080fd5b505af1158015610967573d6000803e3d6000fd5b50505050426002600086868581811061098257610982611812565b9050602002013581526020019081526020016000206000018190555081600260008686858181106109b5576109b5611812565b9050602002013581526020019081526020016000206002018190555033600260008686858181106109e8576109e8611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610a3e836117e1565b91905055505b80610a4e816117e1565b915050610826565b50505050565b6001600160a01b0381166000908152600360205260408120546060919067ffffffffffffffff811115610a9157610a91611828565b604051908082528060200260200182016040528015610aba578160200160208202803683370190505b509050600060015b61058c8111610b2e576000818152600260205260409020600101546001600160a01b0386811691161415610b1c5780838381518110610b0357610b03611812565b602090810291909101015281610b18816117e1565b9250505b80610b26816117e1565b915050610ac2565b50909392505050565b6000818152600260205260408120548190610b5290426117b3565b60008481526002602081815260408084209092015483526005905281205491925090821115610bb357600084815260026020818152604080842090920154835260048152818320546005909152912054610bac9190611794565b9050610bde565b600084815260026020818152604080842090920154835260049052902054610bdb9083611794565b90505b600084815260026020526040902060040154610c1957600084815260026020526040902060030154610c1190829061175a565b949350505050565b6000848152600260205260409020600401546103e890610c399083611794565b610c439190611772565b600085815260026020526040902060030154610c6090839061175a565b610c11919061175a565b333b158015610c7857503332145b610cbc5760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064016107ce565b60005b8181101561077b573360026000858585818110610cde57610cde611812565b60209081029290920135835250810191909152604001600020600101546001600160a01b0316148015610d8a5750426005600060026000878787818110610d2757610d27611812565b9050602002013581526020019081526020016000206002015481526020019081526020016000205460026000868686818110610d6557610d65611812565b90506020020135815260200190815260200160002060000154610d88919061175a565b105b15610fc7576001546001600160a01b03166323b872dd3033868686818110610db457610db4611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b50505050306001600160a01b031663ce98c289848484818110610e4457610e44611812565b905060200201356040518263ffffffff1660e01b8152600401610e6991815260200190565b60206040518083038186803b158015610e8157600080fd5b505afa158015610e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb99190611686565b60026000858585818110610ecf57610ecf611812565b90506020020135815260200190815260200160002060030181905550600060026000858585818110610f0357610f03611812565b90506020020135815260200190815260200160002060000181905550600060026000858585818110610f3757610f37611812565b90506020020135815260200190815260200160002060020181905550600060026000858585818110610f6b57610f6b611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610fc1836117ca565b91905055505b80610fd1816117e1565b915050610cbf565b6001546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b15801561102357600080fd5b505afa158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105b9190611686565b67ffffffffffffffff81111561107357611073611828565b60405190808252806020026020018201604052801561109c578160200160208202803683370190505b509050600060015b61058c8111610b2e576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156110f157600080fd5b505afa925050508015611121575060408051601f3d908101601f1916820190925261111e918101906114e4565b60015b61112a576111e4565b506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e9060240160206040518083038186803b15801561117157600080fd5b505afa158015611185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a991906114e4565b6001600160a01b031614156111e457808383815181106111cb576111cb611812565b6020908102919091010152816111e0816117e1565b9250505b806111ee816117e1565b9150506110a4565b6111fe611329565b6001600160a01b0381166112635760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ce565b61126c81611383565b50565b611277611329565b80518251146112bd5760405162461bcd60e51b815260206004820152601260248201527113115391d51217d393d517d3505510d2115160721b60448201526064016107ce565b60005b825181101561077b578181815181106112db576112db611812565b6020026020010151600260008584815181106112f9576112f9611812565b60200260200101518152602001908152602001600020600401819055508080611321906117e1565b9150506112c0565b6000546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ce565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f8401126113e557600080fd5b50813567ffffffffffffffff8111156113fd57600080fd5b6020830191508360208260051b850101111561141857600080fd5b9250929050565b600082601f83011261143057600080fd5b8135602067ffffffffffffffff8083111561144d5761144d611828565b8260051b604051601f19603f8301168101818110848211171561147257611472611828565b6040528481528381019250868401828801850189101561149157600080fd5b600092505b858310156114b4578035845292840192600192909201918401611496565b50979650505050505050565b6000602082840312156114d257600080fd5b81356114dd8161183e565b9392505050565b6000602082840312156114f657600080fd5b81516114dd8161183e565b6000806020838503121561151457600080fd5b823567ffffffffffffffff81111561152b57600080fd5b611537858286016113d3565b90969095509350505050565b60008060006040848603121561155857600080fd5b833567ffffffffffffffff81111561156f57600080fd5b61157b868287016113d3565b909790965060209590950135949350505050565b6000602082840312156115a157600080fd5b813567ffffffffffffffff8111156115b857600080fd5b610c118482850161141f565b600080604083850312156115d757600080fd5b823567ffffffffffffffff808211156115ef57600080fd5b6115fb8683870161141f565b9350602085013591508082111561161157600080fd5b5061161e8582860161141f565b9150509250929050565b6000806040838503121561163b57600080fd5b823567ffffffffffffffff81111561165257600080fd5b61165e8582860161141f565b95602094909401359450505050565b60006020828403121561167f57600080fd5b5035919050565b60006020828403121561169857600080fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561170957815180518552868101516001600160a01b0316878601528581015186860152606080820151908601526080908101519085015260a090930192908501906001016116bc565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561174e57835183529284019291840191600101611732565b50909695505050505050565b6000821982111561176d5761176d6117fc565b500190565b60008261178f57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117ae576117ae6117fc565b500290565b6000828210156117c5576117c56117fc565b500390565b6000816117d9576117d96117fc565b506000190190565b60006000198214156117f5576117f56117fc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461126c57600080fdfea26469706673582212201b63fe9a49747f531de0b56006f5ae939fa481df82e833d912d46eff0f74153664736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063ce98c28911610071578063ce98c289146102b4578063e449f341146102c7578063ea66aeb3146102da578063f2fde38b146102ed578063f703b5eb1461030057600080fd5b80638da5cb5b146101e6578063a444319a1461020b578063c07885551461022b578063c688df85146102a157600080fd5b80636ec00232116100de5780636ec0023214610196578063715018a6146101b657806377325ebe146101c0578063857b767b146101d357600080fd5b80631e6c7bfd146101105780633d8c4584146101435780633fe3941e1461016357806364728f6d14610183575b600080fd5b61013061011e36600461166d565b60046020526000908152604090205481565b6040519081526020015b60405180910390f35b6101306101513660046114c0565b60036020526000908152604090205481565b61013061017136600461166d565b60056020526000908152604090205481565b61013061019136600461158f565b610313565b6101a96101a436600461158f565b6105ce565b60405161013a919061169f565b6101be61070c565b005b6101be6101ce366004611628565b610720565b6101be6101e1366004611543565b610780565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013a565b61021e6102193660046114c0565b610a5c565b60405161013a9190611716565b61027161023936600461166d565b60026020819052600091825260409091208054600182015492820154600383015460049093015491936001600160a01b031692909185565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a00161013a565b6001546101f3906001600160a01b031681565b6101306102c236600461166d565b610b37565b6101be6102d5366004611501565b610c6a565b61021e6102e83660046114c0565b610fd9565b6101be6102fb3660046114c0565b6111f6565b6101be61030e3660046115c4565b61126f565b600080805b83518110156105c75760006002600086848151811061033957610339611812565b60200260200101518152602001908152602001600020600001544261035e91906117b3565b90506000600560006002600089878151811061037c5761037c611812565b60200260200101518152602001908152602001600020600201548152602001908152602001600020548211156104435760046000600260008987815181106103c6576103c6611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205460056000600260008a888151811061040957610409611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205461043c9190611794565b9050610494565b600460006002600089878151811061045d5761045d611812565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054826104919190611794565b90505b600260008785815181106104aa576104aa611812565b6020026020010151815260200190815260200160002060040154600014156105185780600260008886815181106104e3576104e3611812565b6020026020010151815260200190815260200160002060030154610507919061175a565b610511908561175a565b93506105b2565b6103e86002600088868151811061053157610531611812565b6020026020010151815260200190815260200160002060040154826105569190611794565b6105609190611772565b816002600089878151811061057757610577611812565b602002602001015181526020019081526020016000206003015461059b919061175a565b6105a5919061175a565b6105af908561175a565b93505b505080806105bf906117e1565b915050610318565b5092915050565b60606000825167ffffffffffffffff8111156105ec576105ec611828565b60405190808252806020026020018201604052801561065857816020015b6106456040518060a001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b81526020019060019003908161060a5790505b50905060005b83518110156105c7576002600085838151811061067d5761067d611812565b6020908102919091018101518252818101929092526040908101600020815160a0810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260040154608082015282518390839081106106ee576106ee611812565b60200260200101819052508080610704906117e1565b91505061065e565b610714611329565b61071e6000611383565b565b610728611329565b60005b825181101561077b57816002600085848151811061074b5761074b611812565b60200260200101518152602001908152602001600020600401819055508080610773906117e1565b91505061072b565b505050565b333b15801561078e57503332145b6107d75760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b6000818152600460205260409020546108235760405162461bcd60e51b815260206004820152600e60248201526d1512515497d393d517d59053125160921b60448201526064016107ce565b60005b82811015610a565760015433906001600160a01b0316636352211e86868581811061085357610853611812565b905060200201356040518263ffffffff1660e01b815260040161087891815260200190565b60206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c891906114e4565b6001600160a01b03161415610a44576001546001600160a01b03166323b872dd33308787868181106108fc576108fc611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561095357600080fd5b505af1158015610967573d6000803e3d6000fd5b50505050426002600086868581811061098257610982611812565b9050602002013581526020019081526020016000206000018190555081600260008686858181106109b5576109b5611812565b9050602002013581526020019081526020016000206002018190555033600260008686858181106109e8576109e8611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610a3e836117e1565b91905055505b80610a4e816117e1565b915050610826565b50505050565b6001600160a01b0381166000908152600360205260408120546060919067ffffffffffffffff811115610a9157610a91611828565b604051908082528060200260200182016040528015610aba578160200160208202803683370190505b509050600060015b61058c8111610b2e576000818152600260205260409020600101546001600160a01b0386811691161415610b1c5780838381518110610b0357610b03611812565b602090810291909101015281610b18816117e1565b9250505b80610b26816117e1565b915050610ac2565b50909392505050565b6000818152600260205260408120548190610b5290426117b3565b60008481526002602081815260408084209092015483526005905281205491925090821115610bb357600084815260026020818152604080842090920154835260048152818320546005909152912054610bac9190611794565b9050610bde565b600084815260026020818152604080842090920154835260049052902054610bdb9083611794565b90505b600084815260026020526040902060040154610c1957600084815260026020526040902060030154610c1190829061175a565b949350505050565b6000848152600260205260409020600401546103e890610c399083611794565b610c439190611772565b600085815260026020526040902060030154610c6090839061175a565b610c11919061175a565b333b158015610c7857503332145b610cbc5760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064016107ce565b60005b8181101561077b573360026000858585818110610cde57610cde611812565b60209081029290920135835250810191909152604001600020600101546001600160a01b0316148015610d8a5750426005600060026000878787818110610d2757610d27611812565b9050602002013581526020019081526020016000206002015481526020019081526020016000205460026000868686818110610d6557610d65611812565b90506020020135815260200190815260200160002060000154610d88919061175a565b105b15610fc7576001546001600160a01b03166323b872dd3033868686818110610db457610db4611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b50505050306001600160a01b031663ce98c289848484818110610e4457610e44611812565b905060200201356040518263ffffffff1660e01b8152600401610e6991815260200190565b60206040518083038186803b158015610e8157600080fd5b505afa158015610e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb99190611686565b60026000858585818110610ecf57610ecf611812565b90506020020135815260200190815260200160002060030181905550600060026000858585818110610f0357610f03611812565b90506020020135815260200190815260200160002060000181905550600060026000858585818110610f3757610f37611812565b90506020020135815260200190815260200160002060020181905550600060026000858585818110610f6b57610f6b611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610fc1836117ca565b91905055505b80610fd1816117e1565b915050610cbf565b6001546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b15801561102357600080fd5b505afa158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105b9190611686565b67ffffffffffffffff81111561107357611073611828565b60405190808252806020026020018201604052801561109c578160200160208202803683370190505b509050600060015b61058c8111610b2e576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156110f157600080fd5b505afa925050508015611121575060408051601f3d908101601f1916820190925261111e918101906114e4565b60015b61112a576111e4565b506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e9060240160206040518083038186803b15801561117157600080fd5b505afa158015611185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a991906114e4565b6001600160a01b031614156111e457808383815181106111cb576111cb611812565b6020908102919091010152816111e0816117e1565b9250505b806111ee816117e1565b9150506110a4565b6111fe611329565b6001600160a01b0381166112635760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ce565b61126c81611383565b50565b611277611329565b80518251146112bd5760405162461bcd60e51b815260206004820152601260248201527113115391d51217d393d517d3505510d2115160721b60448201526064016107ce565b60005b825181101561077b578181815181106112db576112db611812565b6020026020010151600260008584815181106112f9576112f9611812565b60200260200101518152602001908152602001600020600401819055508080611321906117e1565b9150506112c0565b6000546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ce565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f8401126113e557600080fd5b50813567ffffffffffffffff8111156113fd57600080fd5b6020830191508360208260051b850101111561141857600080fd5b9250929050565b600082601f83011261143057600080fd5b8135602067ffffffffffffffff8083111561144d5761144d611828565b8260051b604051601f19603f8301168101818110848211171561147257611472611828565b6040528481528381019250868401828801850189101561149157600080fd5b600092505b858310156114b4578035845292840192600192909201918401611496565b50979650505050505050565b6000602082840312156114d257600080fd5b81356114dd8161183e565b9392505050565b6000602082840312156114f657600080fd5b81516114dd8161183e565b6000806020838503121561151457600080fd5b823567ffffffffffffffff81111561152b57600080fd5b611537858286016113d3565b90969095509350505050565b60008060006040848603121561155857600080fd5b833567ffffffffffffffff81111561156f57600080fd5b61157b868287016113d3565b909790965060209590950135949350505050565b6000602082840312156115a157600080fd5b813567ffffffffffffffff8111156115b857600080fd5b610c118482850161141f565b600080604083850312156115d757600080fd5b823567ffffffffffffffff808211156115ef57600080fd5b6115fb8683870161141f565b9350602085013591508082111561161157600080fd5b5061161e8582860161141f565b9150509250929050565b6000806040838503121561163b57600080fd5b823567ffffffffffffffff81111561165257600080fd5b61165e8582860161141f565b95602094909401359450505050565b60006020828403121561167f57600080fd5b5035919050565b60006020828403121561169857600080fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561170957815180518552868101516001600160a01b0316878601528581015186860152606080820151908601526080908101519085015260a090930192908501906001016116bc565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561174e57835183529284019291840191600101611732565b50909695505050505050565b6000821982111561176d5761176d6117fc565b500190565b60008261178f57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117ae576117ae6117fc565b500290565b6000828210156117c5576117c56117fc565b500390565b6000816117d9576117d96117fc565b506000190190565b60006000198214156117f5576117f56117fc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461126c57600080fdfea26469706673582212201b63fe9a49747f531de0b56006f5ae939fa481df82e833d912d46eff0f74153664736f6c63430008070033

Deployed Bytecode Sourcemap

11469:7369:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11906:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8938:25:1;;;8926:2;8911:18;11906:44:0;;;;;;;;11847:52;;;;;;:::i;:::-;;;;;;;;;;;;;;11957:44;;;;;;:::i;:::-;;;;;;;;;;;;;;15072:1331;;;;;;:::i;:::-;;:::i;17337:362::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10296:103::-;;;:::i;:::-;;14454:256;;;;;;:::i;:::-;;:::i;12672:777::-;;;;;;:::i;:::-;;:::i;9648:87::-;9694:7;9721:6;-1:-1:-1;;;;;9721:6:0;9648:87;;;-1:-1:-1;;;;;4676:32:1;;;4658:51;;4646:2;4631:18;9648:87:0;4512:203:1;18321:514:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11795:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11795:45:0;;;;;;;;;;9233:25:1;;;-1:-1:-1;;;;;9294:32:1;;;9289:2;9274:18;;9267:60;9343:18;;;9336:34;;;;9401:2;9386:18;;9379:34;9444:3;9429:19;;9422:35;9220:3;9205:19;11795:45:0;8974:489:1;11550:72:0;;;;;-1:-1:-1;;;;;11550:72:0;;;16411:918;;;;;;:::i;:::-;;:::i;13457:989::-;;;;;;:::i;:::-;;:::i;17707:606::-;;;;;;:::i;:::-;;:::i;10554:201::-;;;;;;:::i;:::-;;:::i;14718:346::-;;;;;;:::i;:::-;;:::i;15072:1331::-;15176:7;;;15238:1126;15270:8;:15;15262:5;:23;15238:1126;;;15311:18;15367:12;:29;15380:8;15389:5;15380:15;;;;;;;;:::i;:::-;;;;;;;15367:29;;;;;;;;;;;:39;;;15332:15;:74;;;;:::i;:::-;15311:95;;15423:21;15476:9;:47;15486:12;:29;15499:8;15508:5;15499:15;;;;;;;;:::i;:::-;;;;;;;15486:29;;;;;;;;;;;:36;;;15476:47;;;;;;;;;;;;15463:10;:60;15459:415;;;15652:9;:47;15662:12;:29;15675:8;15684:5;15675:15;;;;;;;;:::i;:::-;;;;;;;15662:29;;;;;;;;;;;:36;;;15652:47;;;;;;;;;;;;15581:9;:47;15591:12;:29;15604:8;15613:5;15604:15;;;;;;;;:::i;:::-;;;;;;;15591:29;;;;;;;;;;;:36;;;15581:47;;;;;;;;;;;;:118;;;;:::i;:::-;15544:155;;15459:415;;;15811:9;:47;15821:12;:29;15834:8;15843:5;15834:15;;;;;;;;:::i;:::-;;;;;;;15821:29;;;;;;;;;;;:36;;;15811:47;;;;;;;;;;;;15777:10;:81;;;;:::i;:::-;15740:118;;15459:415;15894:12;:29;15907:8;15916:5;15907:15;;;;;;;;:::i;:::-;;;;;;;15894:29;;;;;;;;;;;:35;;;15933:1;15894:40;15890:463;;;16057:13;15994:12;:29;16007:8;16016:5;16007:15;;;;;;;;:::i;:::-;;;;;;;15994:29;;;;;;;;;;;:39;;;:76;;;;:::i;:::-;15955:115;;;;:::i;:::-;;;15890:463;;;16332:4;16268:12;:29;16281:8;16290:5;16281:15;;;;;;;;:::i;:::-;;;;;;;16268:29;;;;;;;;;;;:35;;;16252:13;:51;;;;:::i;:::-;16251:85;;;;:::i;:::-;16213:13;16150:12;:29;16163:8;16172:5;16163:15;;;;;;;;:::i;:::-;;;;;;;16150:29;;;;;;;;;;;:39;;;:76;;;;:::i;:::-;:187;;;;:::i;:::-;16111:226;;;;:::i;:::-;;;15890:463;15296:1068;;15287:7;;;;;:::i;:::-;;;;15238:1126;;;-1:-1:-1;16381:14:0;15072:1331;-1:-1:-1;;15072:1331:0:o;17337:362::-;17435:14;17467:25;17507:6;:13;17495:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17495:26:0;;;;;;;;;;;;;;;;;17467:54;;17539:13;17534:130;17566:6;:13;17558:5;:21;17534:130;;;17625:12;:27;17638:6;17645:5;17638:13;;;;;;;;:::i;:::-;;;;;;;;;;;;17625:27;;;;;;;;;;;;;-1:-1:-1;17625:27:0;17605:47;;;;;;;;;;;;;;;-1:-1:-1;;;;;17605:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;:10;;17616:5;;17605:17;;;;;;:::i;:::-;;;;;;:47;;;;17581:7;;;;;:::i;:::-;;;;17534:130;;10296:103;9534:13;:11;:13::i;:::-;10361:30:::1;10388:1;10361:18;:30::i;:::-;10296:103::o:0;14454:256::-;9534:13;:11;:13::i;:::-;14580::::1;14575:128;14607:8;:15;14599:5;:23;14575:128;;;14686:5;14648:12;:29;14661:8;14670:5;14661:15;;;;;;;;:::i;:::-;;;;;;;14648:29;;;;;;;;;;;:35;;:43;;;;14624:7;;;;;:::i;:::-;;;;14575:128;;;;14454:256:::0;;:::o;12672:777::-;12355:10;12603:17;12648:8;;;12341:55;;-1:-1:-1;12372:10:0;12386:9;12372:23;12341:55;12319:126;;;;-1:-1:-1;;;12319:126:0;;8297:2:1;12319:126:0;;;8279:21:1;8336:2;8316:18;;;8309:30;-1:-1:-1;;;8355:18:1;;;8348:51;8416:18;;12319:126:0;;;;;;;;;12815:1:::1;12795:17:::0;;;:9:::1;:17;::::0;;;;;12787:48:::1;;;::::0;-1:-1:-1;;;12787:48:0;;7593:2:1;12787:48:0::1;::::0;::::1;7575:21:1::0;7632:2;7612:18;;;7605:30;-1:-1:-1;;;7651:18:1;;;7644:44;7705:18;;12787:48:0::1;7391:338:1::0;12787:48:0::1;12853:13;12848:594;12872:23:::0;;::::1;12848:594;;;12925:11;::::0;12965:10:::1;::::0;-1:-1:-1;;;;;12925:11:0::1;:19;12945:8:::0;;12954:5;12945:15;;::::1;;;;;:::i;:::-;;;;;;;12925:36;;;;;;;;;;;;;8938:25:1::0;;8926:2;8911:18;;8792:177;12925:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12925:50:0::1;;12921:510;;;12996:11;::::0;-1:-1:-1;;;;;12996:11:0::1;:24;13043:10;13084:4;13112:8:::0;;13121:5;13112:15;;::::1;;;;;:::i;:::-;12996:150;::::0;-1:-1:-1;;;;;;12996:150:0::1;::::0;;;;;;-1:-1:-1;;;;;4978:15:1;;;12996:150:0::1;::::0;::::1;4960:34:1::0;5030:15;;;;5010:18;;;5003:43;-1:-1:-1;13112:15:0::1;::::0;;::::1;;;5062:18:1::0;;;5055:34;4895:18;;12996:150:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13209:15;13167:12;:29;13180:8;;13189:5;13180:15;;;;;;;:::i;:::-;;;;;;;13167:29;;;;;;;;;;;:39;;:57;;;;13282:6;13243:12;:29;13256:8;;13265:5;13256:15;;;;;;;:::i;:::-;;;;;;;13243:29;;;;;;;;;;;:36;;:45;;;;13353:10;13307:12;:29;13320:8;;13329:5;13320:15;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;13307:29:::0;;-1:-1:-1;13307:29:0;;::::1;::::0;;;;;;;;-1:-1:-1;13307:29:0;;;:43:::1;;:56:::0;;-1:-1:-1;;;;;;13307:56:0::1;-1:-1:-1::0;;;;;13307:56:0;;;::::1;::::0;;;::::1;::::0;;;13402:10:::1;13384:29:::0;;:17:::1;:29:::0;;;;;:31;;;::::1;::::0;::::1;:::i;:::-;;;;;;12921:510;12897:7:::0;::::1;::::0;::::1;:::i;:::-;;;;12848:594;;;;12672:777:::0;;;:::o;18321:514::-;-1:-1:-1;;;;;18488:24:0;;18444:27;18488:24;;;:17;:24;;;;;;18410:16;;18444:27;18474:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18474:39:0;-1:-1:-1;18444:69:0;-1:-1:-1;18524:20:0;18582:1;18559:241;18596:4;18585:7;:15;18559:241;;18632:21;;;;:12;:21;;;;;:35;;;-1:-1:-1;;;;;18632:44:0;;;:35;;:44;18628:161;;;18732:7;18697:10;18708:12;18697:24;;;;;;;;:::i;:::-;;;;;;;;;;:43;18759:14;;;;:::i;:::-;;;;18628:161;18602:9;;;;:::i;:::-;;;;18559:241;;;-1:-1:-1;18817:10:0;;18321:514;-1:-1:-1;;;18321:514:0:o;16411:918::-;16507:7;16571:21;;;:12;:21;;;;;:31;16507:7;;16553:49;;:15;:49;:::i;:::-;16613:21;16672;;;:12;:21;;;;;;;;:28;;;;16662:39;;:9;:39;;;;;16532:70;;-1:-1:-1;16613:21:0;16649:52;;16645:351;;;16810:39;16820:21;;;:12;:21;;;;;;;;:28;;;;16810:39;;:9;:39;;;;;;16751:9;:39;;;;;;:98;;16810:39;16751:98;:::i;:::-;16718:131;;16645:351;;;16945:39;16955:21;;;:12;:21;;;;;;;;:28;;;;16945:39;;:9;:39;;;;;16915:69;;:10;:69;:::i;:::-;16882:102;;16645:351;17012:21;;;;:12;:21;;;;;:27;;;17008:314;;17068:21;;;;:12;:21;;;;;:31;;;:47;;17102:13;;17068:47;:::i;:::-;17061:54;16411:918;-1:-1:-1;;;;16411:918:0:o;17008:314::-;17274:21;;;;:12;:21;;;;;:27;;;17305:4;;17258:43;;:13;:43;:::i;:::-;17257:52;;;;:::i;:::-;17172:21;;;;:12;:21;;;;;:31;;;:64;;17223:13;;17172:64;:::i;:::-;:138;;;;:::i;13457:989::-;12355:10;12603:17;12648:8;;;12341:55;;-1:-1:-1;12372:10:0;12386:9;12372:23;12341:55;12319:126;;;;-1:-1:-1;;;12319:126:0;;8297:2:1;12319:126:0;;;8279:21:1;8336:2;8316:18;;;8309:30;-1:-1:-1;;;8355:18:1;;;8348:51;8416:18;;12319:126:0;8095:345:1;12319:126:0;13540:13:::1;13535:904;13559:23:::0;;::::1;13535:904;;;13677:10;13630:12;:29;13643:8:::0;;13652:5;13643:15;;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;13630:29:::0;;-1:-1:-1;13630:29:0;::::1;::::0;;;;;;-1:-1:-1;13630:29:0;:43:::1;;::::0;-1:-1:-1;;;;;13630:43:0::1;:57;:225:::0;::::1;;;;13840:15;13772:9;:47;13782:12;:29;13795:8;;13804:5;13795:15;;;;;;;:::i;:::-;;;;;;;13782:29;;;;;;;;;;;:36;;;13772:47;;;;;;;;;;;;13709:12;:29;13722:8;;13731:5;13722:15;;;;;;;:::i;:::-;;;;;;;13709:29;;;;;;;;;;;:39;;;:110;;;;:::i;:::-;13708:147;13630:225;13608:820;;;13890:11;::::0;-1:-1:-1;;;;;13890:11:0::1;:24;13945:4;13973:10;14006:8:::0;;14015:5;14006:15;;::::1;;;;;:::i;:::-;13890:150;::::0;-1:-1:-1;;;;;;13890:150:0::1;::::0;;;;;;-1:-1:-1;;;;;4978:15:1;;;13890:150:0::1;::::0;::::1;4960:34:1::0;5030:15;;;;5010:18;;;5003:43;-1:-1:-1;14006:15:0::1;::::0;;::::1;;;5062:18:1::0;;;5055:34;4895:18;;13890:150:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14101:4;-1:-1:-1::0;;;;;14101:46:0::1;;14148:8;;14157:5;14148:15;;;;;;;:::i;:::-;;;;;;;14101:63;;;;;;;;;;;;;8938:25:1::0;;8926:2;8911:18;;8792:177;14101:63:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14059:12;:29;14072:8;;14081:5;14072:15;;;;;;;:::i;:::-;;;;;;;14059:29;;;;;;;;;;;:39;;:105;;;;14225:1;14183:12;:29;14196:8;;14205:5;14196:15;;;;;;;:::i;:::-;;;;;;;14183:29;;;;;;;;;;;:39;;:43;;;;14284:1;14245:12;:29;14258:8;;14267:5;14258:15;;;;;;;:::i;:::-;;;;;;;14245:29;;;;;;;;;;;:36;;:40;;;;14358:1;14304:12;:29;14317:8;;14326:5;14317:15;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;14304:29:::0;;-1:-1:-1;14304:29:0;;::::1;::::0;;;;;;;;-1:-1:-1;14304:29:0;;;:43:::1;;:56:::0;;-1:-1:-1;;;;;;14304:56:0::1;-1:-1:-1::0;;;;;14304:56:0;;;::::1;::::0;;;::::1;::::0;;;14399:10:::1;14381:29:::0;;:17:::1;:29:::0;;;;;:31;;;::::1;::::0;::::1;:::i;:::-;;;;;;13608:820;13584:7:::0;::::1;::::0;::::1;:::i;:::-;;;;13535:904;;17707:606:::0;17887:11;;:28;;-1:-1:-1;;;17887:28:0;;-1:-1:-1;;;;;4676:32:1;;;17887:28:0;;;4658:51:1;17795:16:0;;17829:27;;17887:11;;;:21;;4631:18:1;;17887:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17859:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17859:67:0;-1:-1:-1;17829:97:0;-1:-1:-1;17937:20:0;17989:1;17968:310;18001:4;17992:5;:13;17968:310;;18035:11;;:26;;-1:-1:-1;;;18035:26:0;;;;;8938:25:1;;;-1:-1:-1;;;;;18035:11:0;;;;:19;;8911:18:1;;18035:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18035:26:0;;;;;;;;-1:-1:-1;;18035:26:0;;;;;;;;;;;;:::i;:::-;;;18031:236;;;;;-1:-1:-1;18085:11:0;;:26;;-1:-1:-1;;;18085:26:0;;;;;8938:25:1;;;-1:-1:-1;;;;;18085:35:0;;;;:11;;:19;;8911:18:1;;18085:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18085:35:0;;18081:162;;;18180:5;18145:10;18156:12;18145:24;;;;;;;;:::i;:::-;;;;;;;;;;:41;18209:14;;;;:::i;:::-;;;;18081:162;18007:7;;;;:::i;:::-;;;;17968:310;;10554:201;9534:13;:11;:13::i;:::-;-1:-1:-1;;;;;10643:22:0;::::1;10635:73;;;::::0;-1:-1:-1;;;10635:73:0;;7186:2:1;10635:73:0::1;::::0;::::1;7168:21:1::0;7225:2;7205:18;;;7198:30;7264:34;7244:18;;;7237:62;-1:-1:-1;;;7315:18:1;;;7308:36;7361:19;;10635:73:0::1;6984:402:1::0;10635:73:0::1;10719:28;10738:8;10719:18;:28::i;:::-;10554:201:::0;:::o;14718:346::-;9534:13;:11;:13::i;:::-;14872:6:::1;:13;14853:8;:15;:32;14845:63;;;::::0;-1:-1:-1;;;14845:63:0;;8647:2:1;14845:63:0::1;::::0;::::1;8629:21:1::0;8686:2;8666:18;;;8659:30;-1:-1:-1;;;8705:18:1;;;8698:48;8763:18;;14845:63:0::1;8445:342:1::0;14845:63:0::1;14926:13;14921:136;14953:8;:15;14945:5;:23;14921:136;;;15032:6;15039:5;15032:13;;;;;;;;:::i;:::-;;;;;;;14994:12;:29;15007:8;15016:5;15007:15;;;;;;;;:::i;:::-;;;;;;;14994:29;;;;;;;;;;;:35;;:51;;;;14970:7;;;;;:::i;:::-;;;;14921:136;;9813:132:::0;9694:7;9721:6;-1:-1:-1;;;;;9721:6:0;8279:10;9877:23;9869:68;;;;-1:-1:-1;;;9869:68:0;;7936:2:1;9869:68:0;;;7918:21:1;;;7955:18;;;7948:30;8014:34;7994:18;;;7987:62;8066:18;;9869:68:0;7734:356:1;10915:191:0;10989:16;11008:6;;-1:-1:-1;;;;;11025:17:0;;;-1:-1:-1;;;;;;11025:17:0;;;;;;11058:40;;11008:6;;;;;;;11058:40;;10989:16;11058:40;10978:128;10915:191;:::o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:913::-;440:5;493:3;486:4;478:6;474:17;470:27;460:55;;511:1;508;501:12;460:55;547:6;534:20;573:4;596:18;633:2;629;626:10;623:36;;;639:18;;:::i;:::-;685:2;682:1;678:10;717:2;711:9;780:2;776:7;771:2;767;763:11;759:25;751:6;747:38;835:6;823:10;820:22;815:2;803:10;800:18;797:46;794:72;;;846:18;;:::i;:::-;882:2;875:22;932:18;;;966:15;;;;-1:-1:-1;1001:15:1;;;1035;;;1031:24;;1028:33;-1:-1:-1;1025:53:1;;;1074:1;1071;1064:12;1025:53;1096:1;1087:10;;1106:163;1120:2;1117:1;1114:9;1106:163;;;1177:17;;1165:30;;1215:12;;;;1138:1;1131:9;;;;;1247:12;;1106:163;;;-1:-1:-1;1287:6:1;386:913;-1:-1:-1;;;;;;;386:913:1:o;1304:247::-;1363:6;1416:2;1404:9;1395:7;1391:23;1387:32;1384:52;;;1432:1;1429;1422:12;1384:52;1471:9;1458:23;1490:31;1515:5;1490:31;:::i;:::-;1540:5;1304:247;-1:-1:-1;;;1304:247:1:o;1556:251::-;1626:6;1679:2;1667:9;1658:7;1654:23;1650:32;1647:52;;;1695:1;1692;1685:12;1647:52;1727:9;1721:16;1746:31;1771:5;1746:31;:::i;1812:437::-;1898:6;1906;1959:2;1947:9;1938:7;1934:23;1930:32;1927:52;;;1975:1;1972;1965:12;1927:52;2015:9;2002:23;2048:18;2040:6;2037:30;2034:50;;;2080:1;2077;2070:12;2034:50;2119:70;2181:7;2172:6;2161:9;2157:22;2119:70;:::i;:::-;2208:8;;2093:96;;-1:-1:-1;1812:437:1;-1:-1:-1;;;;1812:437:1:o;2254:505::-;2349:6;2357;2365;2418:2;2406:9;2397:7;2393:23;2389:32;2386:52;;;2434:1;2431;2424:12;2386:52;2474:9;2461:23;2507:18;2499:6;2496:30;2493:50;;;2539:1;2536;2529:12;2493:50;2578:70;2640:7;2631:6;2620:9;2616:22;2578:70;:::i;:::-;2667:8;;2552:96;;-1:-1:-1;2749:2:1;2734:18;;;;2721:32;;2254:505;-1:-1:-1;;;;2254:505:1:o;2764:348::-;2848:6;2901:2;2889:9;2880:7;2876:23;2872:32;2869:52;;;2917:1;2914;2907:12;2869:52;2957:9;2944:23;2990:18;2982:6;2979:30;2976:50;;;3022:1;3019;3012:12;2976:50;3045:61;3098:7;3089:6;3078:9;3074:22;3045:61;:::i;3117:595::-;3235:6;3243;3296:2;3284:9;3275:7;3271:23;3267:32;3264:52;;;3312:1;3309;3302:12;3264:52;3352:9;3339:23;3381:18;3422:2;3414:6;3411:14;3408:34;;;3438:1;3435;3428:12;3408:34;3461:61;3514:7;3505:6;3494:9;3490:22;3461:61;:::i;:::-;3451:71;;3575:2;3564:9;3560:18;3547:32;3531:48;;3604:2;3594:8;3591:16;3588:36;;;3620:1;3617;3610:12;3588:36;;3643:63;3698:7;3687:8;3676:9;3672:24;3643:63;:::i;:::-;3633:73;;;3117:595;;;;;:::o;3717:416::-;3810:6;3818;3871:2;3859:9;3850:7;3846:23;3842:32;3839:52;;;3887:1;3884;3877:12;3839:52;3927:9;3914:23;3960:18;3952:6;3949:30;3946:50;;;3992:1;3989;3982:12;3946:50;4015:61;4068:7;4059:6;4048:9;4044:22;4015:61;:::i;:::-;4005:71;4123:2;4108:18;;;;4095:32;;-1:-1:-1;;;;3717:416:1:o;4138:180::-;4197:6;4250:2;4238:9;4229:7;4225:23;4221:32;4218:52;;;4266:1;4263;4256:12;4218:52;-1:-1:-1;4289:23:1;;4138:180;-1:-1:-1;4138:180:1:o;4323:184::-;4393:6;4446:2;4434:9;4425:7;4421:23;4417:32;4414:52;;;4462:1;4459;4452:12;4414:52;-1:-1:-1;4485:16:1;;4323:184;-1:-1:-1;4323:184:1:o;5100:1023::-;5315:2;5367:21;;;5437:13;;5340:18;;;5459:22;;;5286:4;;5315:2;5500;;5518:18;;;;5559:15;;;5286:4;5602:495;5616:6;5613:1;5610:13;5602:495;;;5675:13;;5713:9;;5701:22;;5767:11;;;5761:18;-1:-1:-1;;;;;5757:44:1;5743:12;;;5736:66;5842:11;;;5836:18;5822:12;;;5815:40;5878:4;5922:11;;;5916:18;5902:12;;;5895:40;5958:4;6002:11;;;5996:18;5982:12;;;5975:40;5789:3;6035:14;;;;6072:15;;;;5798:1;5631:9;5602:495;;;-1:-1:-1;6114:3:1;;5100:1023;-1:-1:-1;;;;;;;5100:1023:1:o;6128:632::-;6299:2;6351:21;;;6421:13;;6324:18;;;6443:22;;;6270:4;;6299:2;6522:15;;;;6496:2;6481:18;;;6270:4;6565:169;6579:6;6576:1;6573:13;6565:169;;;6640:13;;6628:26;;6709:15;;;;6674:12;;;;6601:1;6594:9;6565:169;;;-1:-1:-1;6751:3:1;;6128:632;-1:-1:-1;;;;;;6128:632:1:o;9468:128::-;9508:3;9539:1;9535:6;9532:1;9529:13;9526:39;;;9545:18;;:::i;:::-;-1:-1:-1;9581:9:1;;9468:128::o;9601:217::-;9641:1;9667;9657:132;;9711:10;9706:3;9702:20;9699:1;9692:31;9746:4;9743:1;9736:15;9774:4;9771:1;9764:15;9657:132;-1:-1:-1;9803:9:1;;9601:217::o;9823:168::-;9863:7;9929:1;9925;9921:6;9917:14;9914:1;9911:21;9906:1;9899:9;9892:17;9888:45;9885:71;;;9936:18;;:::i;:::-;-1:-1:-1;9976:9:1;;9823:168::o;9996:125::-;10036:4;10064:1;10061;10058:8;10055:34;;;10069:18;;:::i;:::-;-1:-1:-1;10106:9:1;;9996:125::o;10126:136::-;10165:3;10193:5;10183:39;;10202:18;;:::i;:::-;-1:-1:-1;;;10238:18:1;;10126:136::o;10267:135::-;10306:3;-1:-1:-1;;10327:17:1;;10324:43;;;10347:18;;:::i;:::-;-1:-1:-1;10394:1:1;10383:13;;10267:135::o;10407:127::-;10468:10;10463:3;10459:20;10456:1;10449:31;10499:4;10496:1;10489:15;10523:4;10520:1;10513:15;10539:127;10600:10;10595:3;10591:20;10588:1;10581:31;10631:4;10628:1;10621:15;10655:4;10652:1;10645:15;10671:127;10732:10;10727:3;10723:20;10720:1;10713:31;10763:4;10760:1;10753:15;10787:4;10784:1;10777:15;10803:131;-1:-1:-1;;;;;10878:31:1;;10868:42;;10858:70;;10924:1;10921;10914:12

Swarm Source

ipfs://1b63fe9a49747f531de0b56006f5ae939fa481df82e833d912d46eff0f741536

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.