ETH Price: $3,419.40 (-0.11%)
Gas: 6 Gwei

Contract

0x5cA058C1c9E0Bea6b9b5366ADf73BC7f63aDc2d7
 

Overview

ETH Balance

0.009859212673700131 ETH

Eth Value

$33.71 (@ $3,419.40/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Harvest174927222023-06-16 13:33:59398 days ago1686922439IN
Gains Network: GFarm NFT Exchange
0 ETH0.0005587719.70357012
Claim Back165895562023-02-09 6:57:35525 days ago1675925855IN
Gains Network: GFarm NFT Exchange
0 ETH0.0031857423.16229695
Claim Back165895422023-02-09 6:54:47525 days ago1675925687IN
Gains Network: GFarm NFT Exchange
0 ETH0.003820222.41574239
Harvest165718892023-02-06 19:38:35528 days ago1675712315IN
Gains Network: GFarm NFT Exchange
0 ETH0.0011680341.18735006
Harvest164314962023-01-18 5:07:47548 days ago1674018467IN
Gains Network: GFarm NFT Exchange
0 ETH0.0005120718.05701047
Harvest163792062023-01-10 21:49:59555 days ago1673387399IN
Gains Network: GFarm NFT Exchange
0 ETH0.000656923.1638515
Harvest162112752022-12-18 11:27:47578 days ago1671362867IN
Gains Network: GFarm NFT Exchange
0 ETH0.0003815713.45513528
Harvest160580332022-11-27 1:28:23600 days ago1669512503IN
Gains Network: GFarm NFT Exchange
0 ETH0.0003236811.41371212
Harvest157799842022-10-19 5:11:59639 days ago1666156319IN
Gains Network: GFarm NFT Exchange
0 ETH0.0004107314.48331792
Unstake157423102022-10-13 22:56:23644 days ago1665701783IN
Gains Network: GFarm NFT Exchange
0 ETH0.0012158515.58407305
Harvest157357982022-10-13 1:05:47645 days ago1665623147IN
Gains Network: GFarm NFT Exchange
0 ETH0.0004721516.64905796
Harvest147873682022-05-16 16:41:01794 days ago1652719261IN
Gains Network: GFarm NFT Exchange
0 ETH0.0009417833.20954277
Unstake147587112022-05-12 3:14:59799 days ago1652325299IN
Gains Network: GFarm NFT Exchange
0 ETH0.00984669140.63093847
Harvest147587112022-05-12 3:14:59799 days ago1652325299IN
Gains Network: GFarm NFT Exchange
0 ETH0.0056092140.63093847
Set_GOV146442052022-04-24 0:13:47817 days ago1650759227IN
Gains Network: GFarm NFT Exchange
0 ETH0.0005965122.1564913
Harvest144721412022-03-28 2:56:40844 days ago1648436200IN
Gains Network: GFarm NFT Exchange
0 ETH0.0006239322.00114779
Unstake144448482022-03-23 20:54:09848 days ago1648068849IN
Gains Network: GFarm NFT Exchange
0 ETH0.0029133836.57133819
Harvest144448442022-03-23 20:53:04848 days ago1648068784IN
Gains Network: GFarm NFT Exchange
0 ETH0.0014119635.39989307
Unstake143395512022-03-07 11:57:16864 days ago1646654236IN
Gains Network: GFarm NFT Exchange
0 ETH0.0016698123.6678541
Unstake140148482022-01-16 6:19:42914 days ago1642313982IN
Gains Network: GFarm NFT Exchange
0 ETH0.00620002101.81503118
Harvest139868712022-01-11 22:11:25919 days ago1641939085IN
Gains Network: GFarm NFT Exchange
0 ETH0.00461048162.57579625
Unstake139500152022-01-06 5:28:48924 days ago1641446928IN
Gains Network: GFarm NFT Exchange
0 ETH0.0073002283.28645606
Unstake139489792022-01-06 1:31:57925 days ago1641432717IN
Gains Network: GFarm NFT Exchange
0 ETH0.01103822176.36617633
Harvest139489772022-01-06 1:31:13925 days ago1641432673IN
Gains Network: GFarm NFT Exchange
0 ETH0.00603135151.21482052
Unstake138843772021-12-27 1:39:50935 days ago1640569190IN
Gains Network: GFarm NFT Exchange
0 ETH0.0036566346.8829154
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
157423102022-10-13 22:56:23644 days ago1665701783
Gains Network: GFarm NFT Exchange
0.0357064 ETH
147587112022-05-12 3:14:59799 days ago1652325299
Gains Network: GFarm NFT Exchange
0.05627874 ETH
144448442022-03-23 20:53:04848 days ago1648068784
Gains Network: GFarm NFT Exchange
0.01144217 ETH
143395512022-03-07 11:57:16864 days ago1646654236
Gains Network: GFarm NFT Exchange
0.04393365 ETH
140148482022-01-16 6:19:42914 days ago1642313982
Gains Network: GFarm NFT Exchange
0.00029722 ETH
139500152022-01-06 5:28:48924 days ago1641446928
Gains Network: GFarm NFT Exchange
0.00745603 ETH
139489772022-01-06 1:31:13925 days ago1641432673
Gains Network: GFarm NFT Exchange
0.13388155 ETH
138843772021-12-27 1:39:50935 days ago1640569190
Gains Network: GFarm NFT Exchange
0.15869742 ETH
138548522021-12-22 11:53:11939 days ago1640173991
Gains Network: GFarm NFT Exchange
0.0078681 ETH
138487512021-12-21 13:20:40940 days ago1640092840
Gains Network: GFarm NFT Exchange
0.04058217 ETH
137756542021-12-10 6:04:19951 days ago1639116259
Gains Network: GFarm NFT Exchange
0.02324038 ETH
136016002021-11-12 13:37:56979 days ago1636724276
Gains Network: GFarm NFT Exchange
0.01841686 ETH
135905672021-11-10 20:15:09981 days ago1636575309
Gains Network: GFarm NFT Exchange
0.32852231 ETH
135542962021-11-05 3:51:39987 days ago1636084299
Gains Network: GFarm NFT Exchange
0.41722943 ETH
135387842021-11-02 17:12:39989 days ago1635873159
Gains Network: GFarm NFT Exchange
0.00072993 ETH
135255902021-10-31 15:29:32991 days ago1635694172
Gains Network: GFarm NFT Exchange
0.00006998 ETH
135116632021-10-29 10:58:29993 days ago1635505109
Gains Network: GFarm NFT Exchange
0.03946526 ETH
135032192021-10-28 3:06:22995 days ago1635390382
Gains Network: GFarm NFT Exchange
0.89474536 ETH
134749902021-10-23 16:55:07999 days ago1635008107
Gains Network: GFarm NFT Exchange
0.01095383 ETH
134280622021-10-16 8:53:481006 days ago1634374428
Gains Network: GFarm NFT Exchange
0.00535458 ETH
134083692021-10-13 6:09:301009 days ago1634105370
Gains Network: GFarm NFT Exchange
0.56654915 ETH
133553572021-10-04 22:42:531018 days ago1633387373
Gains Network: GFarm NFT Exchange
0.0067554 ETH
133461852021-10-03 12:22:521019 days ago1633263772
Gains Network: GFarm NFT Exchange
0.01926288 ETH
132907542021-09-24 20:58:161028 days ago1632517096
Gains Network: GFarm NFT Exchange
0.00291974 ETH
132867552021-09-24 5:58:481028 days ago1632463128
Gains Network: GFarm NFT Exchange
0.00008759 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GFarmNFTExchange

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-29
*/

// File: contracts\GFarmNFTInterface.sol

// SPDX-License-Identifier: MIT
pragma solidity 0.7.5;

interface GFarmNFTInterface{
    function balanceOf(address owner) external view returns (uint256 balance);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function leverageID(uint8 _leverage) external pure returns(uint8);
    function idToLeverage(uint id) external view returns(uint8);
    function transferFrom(address from, address to, uint256 tokenId) external;
}

// File: contracts\GFarmTokenInterface.sol

pragma solidity 0.7.5;

interface GFarmTokenInterface{
	function balanceOf(address account) external view returns (uint256);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function burn(address from, uint256 amount) external;
    function mint(address to, uint256 amount) external;
}

// File: @uniswap\v2-core\contracts\interfaces\IUniswapV2Pair.sol

pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// File: @openzeppelin\contracts\math\SafeMath.sol

pragma solidity ^0.7.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: contracts\GFarmNFTExchange.sol

pragma solidity 0.7.5;





contract GFarmNFTExchange {

    using SafeMath for uint;

    // 1. Tokens
    GFarmNFTInterface public immutable nft;
    GFarmTokenInterface public immutable token;
    IUniswapV2Pair public immutable lp;
    address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IUniswapV2Pair constant ETH_USDC_PAIR = IUniswapV2Pair(0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc);

    // 2. Store all NFTs for sale
    struct Bidding{
        uint nftID;
        address payable seller;
        uint start; // block
        uint duration; // blocks
        uint minBid; // 1e18
        uint highestBid; // 1e18
        uint highestBidMinusFees; // 1e18
        address payable highestBidder;
        uint bidCount;
    }
    mapping(uint => Bidding[]) public biddingsByLeverage;
    mapping(uint => uint) public idToBiddingsByLeverageIndex; // nft id => index in biddingsByLeverage

    // 3. GFARM2 pool
    uint public accETHperGFARM; // 1e18
    struct User{
        uint provided; //1e18
        uint debt; //1e18
    }
    mapping(address => User) public users;

    // 4. Fees
    uint public BID_FEE_P = 5;
    uint public HIGHEST_BID_FEE_P = 25;
    address public GOV;

    // 5. Stats & Events
    uint public totalEthDistributed;

    event NewBidding(
        address indexed seller,
        uint nftID,
        uint leverage,
        uint duration,
        uint minBid
    );

    event NewBid(
        address indexed seller,
        address indexed bidder,
        uint nftID,
        uint leverage,
        uint amount
    );

    constructor(
        GFarmNFTInterface _nft,
        GFarmTokenInterface _token,
        IUniswapV2Pair _lp,
        address _gov){
        nft = _nft;
        token = _token;
        lp = _lp;
        GOV = _gov;
    }

    // UPDATE FEE PERCENTAGES - GOVERNANCE (EXCHANGE)

    modifier onlyGov(){
        require(msg.sender == GOV);
        _;
    }
    function set_GOV(address _gov) external onlyGov{
        GOV = _gov;
    }
    function set_BID_FEE_P(uint _fee) external onlyGov{
        BID_FEE_P = _fee;
    }
    function set_HIGHEST_BID_FEE_P(uint _fee) external onlyGov{
        HIGHEST_BID_FEE_P = _fee;
    }

    // PRIVATE FUNCTIONS (EXCHANGE)

    function removeBidding(uint _nftID) private{
        uint leverage = nft.idToLeverage(_nftID);
        Bidding[] storage leverageBiddings = biddingsByLeverage[leverage];

        // 1. Update index of the last bidding of the array to this nft's index in the array
        idToBiddingsByLeverageIndex[leverageBiddings[leverageBiddings.length - 1].nftID] = idToBiddingsByLeverageIndex[_nftID];

        // 2. Copy last bidding of the array to replace this nft ID's listings with the last one
        leverageBiddings[idToBiddingsByLeverageIndex[_nftID]] = leverageBiddings[leverageBiddings.length - 1];

        // 3. Remove the last element of the biddings array
        leverageBiddings.pop();

        // 4. Remove index from mapping for this NFT
        delete idToBiddingsByLeverageIndex[_nftID];

    }

    // EXTERNAL FUNCTIONS (EXCHANGE)

    // 0. Modifiers
    modifier notContract(){
        require(tx.origin == msg.sender, "Contracts not allowed.");
        _;
    }
    modifier listed(uint id){
        require(isListed(id), "This NFT isn't listed.");
        _;
    }

    // 1. Put an NFT for sale
    function sell(uint _nftID, uint _minBid, uint _bidDuration) external notContract{
        // 1. Bidding duration should be between 100 blocks and 100k blocks
        require(_bidDuration >= 100 && _bidDuration <= 100000, "Bidding duration should be between 100 and 100k blocks.");

        // 2. Transfer the NFT to this contract
        nft.transferFrom(msg.sender, address(this), _nftID);

        // 3. Store bidding
        uint leverage = nft.idToLeverage(_nftID);
        Bidding memory b = Bidding(_nftID, msg.sender, block.number, _bidDuration, _minBid, 0, 0, address(0), 0);

        biddingsByLeverage[leverage].push(b);
        idToBiddingsByLeverageIndex[_nftID] = biddingsByLeverage[leverage].length - 1;

        // 4. Emit event
        emit NewBidding(
            msg.sender,
            _nftID,
            leverage,
            _bidDuration,
            _minBid
        );
    }

    // 2. Place a bid for an NFT
    function bid(uint _nftID) external payable notContract listed(_nftID){
        uint leverage = nft.idToLeverage(_nftID);
        Bidding storage b = biddingsByLeverage[leverage][idToBiddingsByLeverageIndex[_nftID]];

        // 1. Verify msg.sender isn't the seller
        require(msg.sender != b.seller, "You can't bid for your own NFT.");

        // 2. Verify the bid hasn't ended
        require(block.number < b.start.add(b.duration), "Bidding has already ended.");

        // 3. Verify the bid is higher than the min bid
        require(msg.value >= b.minBid && msg.value > b.highestBid, "You must bid higher than the min bid and the highest bid.");

        // 4. If there was already a bid, send back the ETH to old bidder
        if(b.highestBidder != address(0) && b.highestBid != 0){
            b.highestBidder.transfer(b.highestBidMinusFees);
        }

        // 5. Set highest bidder & highest bid & add 1 to bid count
        // 5% in fees go to GFARM2 stakers in the pool
        uint fee = msg.value.mul(BID_FEE_P).div(100);
        b.highestBid = msg.value;
        b.highestBidMinusFees = msg.value.sub(fee);
        b.highestBidder = msg.sender;
        b.bidCount = b.bidCount.add(1);

        // 6. Update pool accETHperGFARM
        uint tokenBalance = token.balanceOf(address(this));
        if(tokenBalance > 0){
            accETHperGFARM = accETHperGFARM.add(
                fee.mul(1e18).div(tokenBalance)
            );
        }

        // 7. Store stats
        totalEthDistributed = totalEthDistributed.add(fee);

        // 8. Emit event
        emit NewBid(
            b.seller,
            msg.sender,
            _nftID,
            leverage,
            msg.value
        );
    }

    // 3. Claim an NFT after the bid has ended
    function claim(uint _nftID) external notContract listed(_nftID){
        Bidding memory b = biddingsByLeverage[nft.idToLeverage(_nftID)][idToBiddingsByLeverageIndex[_nftID]];

        // 1. Verify the bid has ended
        require(block.number >= b.start.add(b.duration), "Bidding hasn't ended.");

        // 2. Verify there was at least one bid
        require(b.bidCount > 0, "No bid was made.");

        // 3. Transfer the ETH to the seller (25% fee)
        uint fee = b.highestBidMinusFees.mul(HIGHEST_BID_FEE_P).div(100);
        b.seller.transfer(b.highestBidMinusFees.sub(fee));

        // 4. Transfer the NFT to the highest bidder
        nft.transferFrom(address(this), b.highestBidder, _nftID);

        // 5. Remove the bidding
        removeBidding(_nftID);

        // 6. Pool
        uint tokenBalance = token.balanceOf(address(this));
        if(tokenBalance > 0){
            accETHperGFARM = accETHperGFARM.add(
                fee.mul(1e18).div(tokenBalance)
            );
        }

        // 7. Store stats
        totalEthDistributed = totalEthDistributed.add(fee);
    }

    // 4. Claim unsold NFT after bidding ends
    function claimBack(uint _nftID) external notContract listed(_nftID){
        Bidding memory b = biddingsByLeverage[nft.idToLeverage(_nftID)][idToBiddingsByLeverageIndex[_nftID]];

        // 1. Verify there was 0 bid
        require(b.bidCount == 0, "Bids were made.");

        // 2. Verify the bid has ended
        require(block.number >= b.start.add(b.duration), "Bidding hasn't ended.");

        // 3. Send the NFT back to the seller
        nft.transferFrom(address(this), b.seller, _nftID);

        // 4. Remove the bidding
        removeBidding(_nftID);
    }

    // 5. Biddings count for a leverage
    function biddingsCountLeverage(uint _leverage) external view returns(uint){
        return biddingsByLeverage[_leverage].length;
    }

    // PUBLIC FUNCTIONS (EXCHANGE)

    function isListed(uint _nftID) public view returns(bool){
        return biddingsByLeverage[nft.idToLeverage(_nftID)].length > 0 &&
        biddingsByLeverage[nft.idToLeverage(_nftID)][idToBiddingsByLeverageIndex[_nftID]].nftID == _nftID;
    }

    // PUBLIC FUNCTIONS (POOL)

    // 1. Harvest pending ETH rewards
    function harvest() public notContract{
        uint pending = pendingReward();
        if(pending == 0){ return; }

        // 1. Send pending rewards
        msg.sender.transfer(pendingReward());

        // 2. Update debt
        User storage u = users[msg.sender];
        u.debt = u.provided.mul(accETHperGFARM).div(1e18);
    }

    // 2. Get ETH pending reward
    function pendingReward() view public returns(uint){
        User memory u = users[msg.sender];
        return u.provided.mul(accETHperGFARM).div(1e18).sub(u.debt);
    }

    // EXTERNAL FUNCTIONS (POOL)

    // 1. Stake GFARM2 + harvest
    function stake(uint amount) external notContract{
        // 1. Transfer the GFARM2 to the contract
        token.transferFrom(msg.sender, address(this), amount);

        // 2. Harvest pending rewards
        uint pending = pendingReward();
        if(pending > 0){ msg.sender.transfer(pendingReward()); }

        // 3. Set user provided & debt
        User storage u = users[msg.sender];
        u.provided = u.provided.add(amount);
        u.debt = u.provided.mul(accETHperGFARM).div(1e18);
    }

    // 2. Unstake GFARM2 + harvest
    function unstake(uint amount) external notContract{
        // 1. Verify he doesn't unstake more than provided
        User storage u = users[msg.sender];
        require(amount <= u.provided, "Unstaking more than provided.");

        // 2. Harvest pending rewards
        uint pending = pendingReward();
        if(pending > 0){ msg.sender.transfer(pendingReward()); }

        // 3. Set user provided & debt
        u.provided = u.provided.sub(amount);
        u.debt = u.provided.mul(accETHperGFARM).div(1e18);

        // 4. Transfer the GFARM2 to the address
        token.transfer(msg.sender, amount);

        // 5. Burn 10%
        token.burn(msg.sender, amount.mul(10).div(100));
    }

    // USEFUL FRONT-END FUNCTIONS

    // 1. ETH/USD price (1e5)
    function getEthPrice() private view returns(uint){
        (uint112 reserves0, uint112 reserves1, ) = ETH_USDC_PAIR.getReserves();
        uint reserveUSDC;
        uint reserveETH;

        if(WETH == ETH_USDC_PAIR.token0()){
            reserveETH = reserves0;
            reserveUSDC = reserves1;
        }else{
            reserveUSDC = reserves0;
            reserveETH = reserves1;
        }
        // Divide number of USDC by number of ETH
        // we multiply by 1e12 because USDC only has 6 decimals
        return reserveUSDC.mul(1e12).mul(1e5).div(reserveETH);
    }

    // 2. GFARM/ETH price (1e5)
    function getGFarmPriceEth() private view returns(uint){
        (uint112 reserves0, uint112 reserves1, ) = lp.getReserves();

        uint reserveETH;
        uint reserveGFARM;

        if(WETH == lp.token0()){
            reserveETH = reserves0;
            reserveGFARM = reserves1;
        }else{
            reserveGFARM = reserves0;
            reserveETH = reserves1;
        }

        return reserveETH.mul(1e5).div(reserveGFARM);
    }

    // TVL of GFARM2 staked in $ (1e5)
    function TVL() external view returns(uint){
        return token.balanceOf(address(this)).mul(getGFarmPriceEth()).mul(getEthPrice()).div(1e23);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract GFarmNFTInterface","name":"_nft","type":"address"},{"internalType":"contract GFarmTokenInterface","name":"_token","type":"address"},{"internalType":"contract IUniswapV2Pair","name":"_lp","type":"address"},{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"nftID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"leverage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"nftID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"leverage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minBid","type":"uint256"}],"name":"NewBidding","type":"event"},{"inputs":[],"name":"BID_FEE_P","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HIGHEST_BID_FEE_P","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TVL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accETHperGFARM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftID","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"biddingsByLeverage","outputs":[{"internalType":"uint256","name":"nftID","type":"uint256"},{"internalType":"address payable","name":"seller","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"minBid","type":"uint256"},{"internalType":"uint256","name":"highestBid","type":"uint256"},{"internalType":"uint256","name":"highestBidMinusFees","type":"uint256"},{"internalType":"address payable","name":"highestBidder","type":"address"},{"internalType":"uint256","name":"bidCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_leverage","type":"uint256"}],"name":"biddingsCountLeverage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftID","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftID","type":"uint256"}],"name":"claimBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToBiddingsByLeverageIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftID","type":"uint256"}],"name":"isListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nft","outputs":[{"internalType":"contract GFarmNFTInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftID","type":"uint256"},{"internalType":"uint256","name":"_minBid","type":"uint256"},{"internalType":"uint256","name":"_bidDuration","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"set_BID_FEE_P","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"set_GOV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"set_HIGHEST_BID_FEE_P","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract GFarmTokenInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEthDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"debt","type":"uint256"}],"stateMutability":"view","type":"function"}]

60e06040526005600455601960055534801561001a57600080fd5b506040516128fc3803806128fc8339818101604052608081101561003d57600080fd5b5080516020820151604083015160609384015183851b6001600160601b031990811660805283861b811660a0529482901b90941660c052600680546001600160a01b0319166001600160a01b039586161790559183169290811691166127e6610116600039806108dd528061242452806124d35250806107c452806108425280610d4652806111ad52806117d75280611cdc5280611d61525080610a295280610c975280610ece528061137e528061149b528061169b52806119bf5280611a225280611d8b5280611e3b528061205152506127e66000f3fe6080604052600436106101965760003560e01c80634641257d116100e1578063a87430ba1161008a578063de73465e11610064578063de73465e14610508578063edaf2d2e14610532578063fc0c546a14610547578063fcce48831461055c57610196565b8063a87430ba14610471578063be756afd146104bd578063d3c9727c146104d257610196565b80637d529d72116100bb5780637d529d72146103f357806383579a631461041d578063a694fc3a1461044757610196565b80634641257d1461039657806347ccca02146103ab5780635d453d29146103c057610196565b8063180cb47f11610143578063336b29691161011d578063336b2969146102c7578063379607f51461034f578063454a2ab31461037957610196565b8063180cb47f146102575780632e17de7814610288578063313c06a0146102b257610196565b80630af37ba3116101745780630af37ba3146102035780630eebed9214610218578063137ee36e1461024257610196565b806302a71bde1461019b5780630480c899146101c257806307f193ff146101ee575b600080fd5b3480156101a757600080fd5b506101b061059a565b60408051918252519081900360200190f35b3480156101ce57600080fd5b506101ec600480360360208110156101e557600080fd5b50356105a0565b005b3480156101fa57600080fd5b506101b06105bc565b34801561020f57600080fd5b506101b06105c2565b34801561022457600080fd5b506101ec6004803603602081101561023b57600080fd5b50356105c8565b34801561024e57600080fd5b506101b06105e4565b34801561026357600080fd5b5061026c61064c565b604080516001600160a01b039092168252519081900360200190f35b34801561029457600080fd5b506101ec600480360360208110156102ab57600080fd5b503561065b565b3480156102be57600080fd5b5061026c6108db565b3480156102d357600080fd5b506102f7600480360360408110156102ea57600080fd5b50803590602001356108ff565b60408051998a526001600160a01b0398891660208b0152898101979097526060890195909552608088019390935260a087019190915260c086015290921660e084015261010083019190915251908190036101200190f35b34801561035b57600080fd5b506101ec6004803603602081101561037257600080fd5b5035610974565b6101ec6004803603602081101561038f57600080fd5b5035610e22565b3480156103a257600080fd5b506101ec6112ae565b3480156103b757600080fd5b5061026c61137c565b3480156103cc57600080fd5b506101ec600480360360208110156103e357600080fd5b50356001600160a01b03166113a0565b3480156103ff57600080fd5b506101ec6004803603602081101561041657600080fd5b50356113e6565b34801561042957600080fd5b506101b06004803603602081101561044057600080fd5b503561174b565b34801561045357600080fd5b506101ec6004803603602081101561046a57600080fd5b503561175d565b34801561047d57600080fd5b506104a46004803603602081101561049457600080fd5b50356001600160a01b03166118d7565b6040805192835260208301919091528051918290030190f35b3480156104c957600080fd5b506101b06118f0565b3480156104de57600080fd5b506101ec600480360360608110156104f557600080fd5b50803590602081013590604001356118f6565b34801561051457600080fd5b506101b06004803603602081101561052b57600080fd5b5035611c84565b34801561053e57600080fd5b506101b0611c96565b34801561055357600080fd5b5061026c611d5f565b34801561056857600080fd5b506105866004803603602081101561057f57600080fd5b5035611d83565b604080519115158252519081900360200190f35b60075481565b6006546001600160a01b031633146105b757600080fd5b600555565b60055481565b60025481565b6006546001600160a01b031633146105df57600080fd5b600455565b60006105ee6126a7565b503360009081526003602090815260409182902082518084019093528054808452600190910154918301829052600254610646929161064091670de0b6b3a76400009161063a91611f0f565b90611f6f565b90611fb1565b91505090565b6006546001600160a01b031681565b3233146106a8576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b336000908152600360205260409020805482111561070d576040805162461bcd60e51b815260206004820152601d60248201527f556e7374616b696e67206d6f7265207468616e2070726f76696465642e000000604482015290519081900360640190fd5b60006107176105e4565b9050801561075557336108fc61072b6105e4565b6040518115909202916000818181858888f19350505050158015610753573d6000803e3d6000fd5b505b81546107619084611fb1565b80835560025461077f91670de0b6b3a76400009161063a9190611f0f565b6001830155604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810185905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb9160448083019260209291908290030181600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050506040513d602081101561083657600080fd5b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016639dc29fac33610878606461063a88600a611f0f565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b50505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000602052816000526040600020818154811061091b57600080fd5b60009182526020909120600990910201805460018201546002830154600384015460048501546005860154600687015460078801546008909801549699506001600160a01b039586169850939692959194909392169089565b3233146109c1576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b806109cb81611d83565b610a1c576040805162461bcd60e51b815260206004820152601660248201527f54686973204e46542069736e2774206c69737465642e00000000000000000000604482015290519081900360640190fd5b610a246126c1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a8b57600080fd5b505afa158015610a9f573d6000803e3d6000fd5b505050506040513d6020811015610ab557600080fd5b505160ff168152602081810192909252604090810160009081208682526001909352205481548110610ae357fe5b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b0390811694840194909452600281015491830182905260038101546060840181905260048201546080850152600582015460a0850152600682015460c0850152600782015490941660e084015260080154610100830152909250610b7491611ff3565b431015610bc8576040805162461bcd60e51b815260206004820152601560248201527f42696464696e67206861736e277420656e6465642e0000000000000000000000604482015290519081900360640190fd5b600081610100015111610c22576040805162461bcd60e51b815260206004820152601060248201527f4e6f2062696420776173206d6164652e00000000000000000000000000000000604482015290519081900360640190fd5b6000610c42606461063a6005548560c00151611f0f90919063ffffffff16565b905081602001516001600160a01b03166108fc610c6c838560c00151611fb190919063ffffffff16565b6040518115909202916000818181858888f19350505050158015610c94573d6000803e3d6000fd5b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd308460e00151876040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610d2157600080fd5b505af1158015610d35573d6000803e3d6000fd5b50505050610d428461204d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d6020811015610ddb57600080fd5b505190508015610e0b57610e07610dfe8261063a85670de0b6b3a7640000611f0f565b60025490611ff3565b6002555b600754610e189083611ff3565b6007555050505050565b323314610e6f576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b80610e7981611d83565b610eca576040805162461bcd60e51b815260206004820152601660248201527f54686973204e46542069736e2774206c69737465642e00000000000000000000604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4214ec0846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d6020811015610f5a57600080fd5b505160ff166000818152602081815260408083208784526001909252822054815493945091929091908110610f8b57fe5b6000918252602090912060099091020160018101549091506001600160a01b0316331415611000576040805162461bcd60e51b815260206004820152601f60248201527f596f752063616e27742062696420666f7220796f7572206f776e204e46542e00604482015290519081900360640190fd5b6003810154600282015461101391611ff3565b4310611066576040805162461bcd60e51b815260206004820152601a60248201527f42696464696e672068617320616c726561647920656e6465642e000000000000604482015290519081900360640190fd5b8060040154341015801561107d5750806005015434115b6110b85760405162461bcd60e51b81526004018080602001828103825260398152602001806127206039913960400191505060405180910390fd5b60078101546001600160a01b0316158015906110d75750600581015415155b1561111e57600781015460068201546040516001600160a01b039092169181156108fc0291906000818181858888f1935050505015801561111c573d6000803e3d6000fd5b505b600061113a606461063a60045434611f0f90919063ffffffff16565b346005840181905590915061114f9082611fb1565b600683015560078201805473ffffffffffffffffffffffffffffffffffffffff1916331790556008820154611185906001611ff3565b6008830155604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b1580156111f457600080fd5b505afa158015611208573d6000803e3d6000fd5b505050506040513d602081101561121e57600080fd5b50519050801561124557611241610dfe8261063a85670de0b6b3a7640000611f0f565b6002555b6007546112529083611ff3565b600755600183015460408051888152602081018790523481830152905133926001600160a01b0316917f911d834cc781bcb7a08922b9dd1f1d175c0a0467d9705194c2e200f8ce2786bb919081900360600190a3505050505050565b3233146112fb576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b60006113056105e4565b905080611312575061137a565b336108fc61131e6105e4565b6040518115909202916000818181858888f19350505050158015611346573d6000803e3d6000fd5b50336000908152600360205260409020600254815461137291670de0b6b3a76400009161063a91611f0f565b600190910155505b565b7f000000000000000000000000000000000000000000000000000000000000000081565b6006546001600160a01b031633146113b757600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b323314611433576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b8061143d81611d83565b61148e576040805162461bcd60e51b815260206004820152601660248201527f54686973204e46542069736e2774206c69737465642e00000000000000000000604482015290519081900360640190fd5b6114966126c1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114fd57600080fd5b505afa158015611511573d6000803e3d6000fd5b505050506040513d602081101561152757600080fd5b505160ff16815260208181019290925260409081016000908120868252600190935220548154811061155557fe5b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015490921660e0820152600890910154610100820181905290915015611632576040805162461bcd60e51b815260206004820152600f60248201527f426964732077657265206d6164652e0000000000000000000000000000000000604482015290519081900360640190fd5b6060810151604082015161164591611ff3565b431015611699576040805162461bcd60e51b815260206004820152601560248201527f42696464696e67206861736e277420656e6465642e0000000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd308360200151866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561172557600080fd5b505af1158015611739573d6000803e3d6000fd5b505050506117468361204d565b505050565b60016020526000908152604090205481565b3233146117aa576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd9160648083019260209291908290030181600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b505050506040513d602081101561184957600080fd5b50600090506118566105e4565b9050801561189457336108fc61186a6105e4565b6040518115909202916000818181858888f19350505050158015611892573d6000803e3d6000fd5b505b33600090815260036020526040902080546118af9084611ff3565b8082556002546118cd91670de0b6b3a76400009161063a9190611f0f565b6001909101555050565b6003602052600090815260409020805460019091015482565b60045481565b323314611943576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b606481101580156119575750620186a08111155b6119925760405162461bcd60e51b81526004018080602001828103825260378152602001806127596037913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd91606480830192600092919082900301818387803b158015611a0657600080fd5b505af1158015611a1a573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4214ec0856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611a8457600080fd5b505afa158015611a98573d6000803e3d6000fd5b505050506040513d6020811015611aae57600080fd5b505160ff169050611abd6126c1565b604051806101200160405280868152602001336001600160a01b03168152602001438152602001848152602001858152602001600081526020016000815260200160006001600160a01b03168152602001600081525090506000808381526020019081526020016000208190806001815401808255809150506001900390600052602060002090600902016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061010082015181600801555050600160008084815260200190815260200160002080549050036001600087815260200190815260200160002081905550336001600160a01b03167f33911c123d51874482101aba465c700f8a8c49c02f4b695f0c5bf6396dbbf35f868486886040518085815260200184815260200183815260200182815260200194505050505060405180910390a25050505050565b60009081526020819052604090205490565b6000611d5a69152d02c7e14af680000061063a611cb161229e565b611d54611cbc61241d565b604080516370a0823160e01b815230600482015290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a08231916024808301926020929190829003018186803b158015611d2257600080fd5b505afa158015611d36573d6000803e3d6000fd5b505050506040513d6020811015611d4c57600080fd5b505190611f0f565b90611f0f565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611ded57600080fd5b505afa158015611e01573d6000803e3d6000fd5b505050506040513d6020811015611e1757600080fd5b505160ff168152602081019190915260400160002054118015611f095750816000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611e9d57600080fd5b505afa158015611eb1573d6000803e3d6000fd5b505050506040513d6020811015611ec757600080fd5b505160ff168152602081810192909252604090810160009081208682526001909352205481548110611ef557fe5b906000526020600020906009020160000154145b92915050565b600082611f1e57506000611f09565b82820282848281611f2b57fe5b0414611f685760405162461bcd60e51b81526004018080602001828103825260218152602001806127906021913960400191505060405180910390fd5b9392505050565b6000611f6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ab565b6000611f6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061264d565b600082820183811015611f68576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4214ec0836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156120b357600080fd5b505afa1580156120c7573d6000803e3d6000fd5b505050506040513d60208110156120dd57600080fd5b505160ff1660008181526020818152604080832086845260019283905290832054815494955090939092908490600019810190811061211857fe5b60009182526020808320600990920290910154835282019290925260400190205580548190600019810190811061214b57fe5b90600052602060002090600902018160016000868152602001908152602001600020548154811061217857fe5b60009182526020909120825460099092020190815560018083015490820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560028085015490840155600380850154908401556004808501549084015560058085015490840155600680850154908401556007808501549084018054919093169116179055600891820154910155805481908061221a57fe5b600082815260208082206009600019909401938402018281556001818101805473ffffffffffffffffffffffffffffffffffffffff1990811690915560028301859055600383018590556004830185905560058301859055600683018590556007830180549091169055600890910183905592909355948552905250506040812055565b600080600073b4e16d0168e52d35cacd2c6185b44281ec28c9dc6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156122f057600080fd5b505afa158015612304573d6000803e3d6000fd5b505050506040513d606081101561231a57600080fd5b50805160209182015160408051630dfe168160e01b81529051929550909350600092839273b4e16d0168e52d35cacd2c6185b44281ec28c9dc92630dfe1681926004808301939192829003018186803b15801561237657600080fd5b505afa15801561238a573d6000803e3d6000fd5b505050506040513d60208110156123a057600080fd5b50516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156123e25750506dffffffffffffffffffffffffffff8181169083166123fa565b50506dffffffffffffffffffffffffffff8083169082165b6124148161063a620186a0611d548664e8d4a51000611f0f565b94505050505090565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561247b57600080fd5b505afa15801561248f573d6000803e3d6000fd5b505050506040513d60608110156124a557600080fd5b50805160209182015160408051630dfe168160e01b8152905192955090935060009283926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692630dfe1681926004808301939192829003018186803b15801561251657600080fd5b505afa15801561252a573d6000803e3d6000fd5b505050506040513d602081101561254057600080fd5b50516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156125825750506dffffffffffffffffffffffffffff80831690821661259a565b50506dffffffffffffffffffffffffffff8181169083165b6124148161063a84620186a0611f0f565b600081836126375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125fc5781810151838201526020016125e4565b50505050905090810190601f1680156126295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161264357fe5b0495945050505050565b6000818484111561269f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156125fc5781810151838201526020016125e4565b505050900390565b604051806040016040528060008152602001600081525090565b6040518061012001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152509056fe596f75206d7573742062696420686967686572207468616e20746865206d696e2062696420616e64207468652068696768657374206269642e42696464696e67206475726174696f6e2073686f756c64206265206265747765656e2031303020616e64203130306b20626c6f636b732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220eafc2d44a5a859dea61e9df824d8c0e957905e751b1f673b4df0eaa83f31f2da64736f6c6343000705003300000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd000000000000000000000000831091da075665168e01898c6dac004a867f1e1b0000000000000000000000003f759c3f4cdba32e69ddf607e0cdcc2547061b97000000000000000000000000c66fbe50dd33c9aadd65707f7088d597c86fe00f

Deployed Bytecode

0x6080604052600436106101965760003560e01c80634641257d116100e1578063a87430ba1161008a578063de73465e11610064578063de73465e14610508578063edaf2d2e14610532578063fc0c546a14610547578063fcce48831461055c57610196565b8063a87430ba14610471578063be756afd146104bd578063d3c9727c146104d257610196565b80637d529d72116100bb5780637d529d72146103f357806383579a631461041d578063a694fc3a1461044757610196565b80634641257d1461039657806347ccca02146103ab5780635d453d29146103c057610196565b8063180cb47f11610143578063336b29691161011d578063336b2969146102c7578063379607f51461034f578063454a2ab31461037957610196565b8063180cb47f146102575780632e17de7814610288578063313c06a0146102b257610196565b80630af37ba3116101745780630af37ba3146102035780630eebed9214610218578063137ee36e1461024257610196565b806302a71bde1461019b5780630480c899146101c257806307f193ff146101ee575b600080fd5b3480156101a757600080fd5b506101b061059a565b60408051918252519081900360200190f35b3480156101ce57600080fd5b506101ec600480360360208110156101e557600080fd5b50356105a0565b005b3480156101fa57600080fd5b506101b06105bc565b34801561020f57600080fd5b506101b06105c2565b34801561022457600080fd5b506101ec6004803603602081101561023b57600080fd5b50356105c8565b34801561024e57600080fd5b506101b06105e4565b34801561026357600080fd5b5061026c61064c565b604080516001600160a01b039092168252519081900360200190f35b34801561029457600080fd5b506101ec600480360360208110156102ab57600080fd5b503561065b565b3480156102be57600080fd5b5061026c6108db565b3480156102d357600080fd5b506102f7600480360360408110156102ea57600080fd5b50803590602001356108ff565b60408051998a526001600160a01b0398891660208b0152898101979097526060890195909552608088019390935260a087019190915260c086015290921660e084015261010083019190915251908190036101200190f35b34801561035b57600080fd5b506101ec6004803603602081101561037257600080fd5b5035610974565b6101ec6004803603602081101561038f57600080fd5b5035610e22565b3480156103a257600080fd5b506101ec6112ae565b3480156103b757600080fd5b5061026c61137c565b3480156103cc57600080fd5b506101ec600480360360208110156103e357600080fd5b50356001600160a01b03166113a0565b3480156103ff57600080fd5b506101ec6004803603602081101561041657600080fd5b50356113e6565b34801561042957600080fd5b506101b06004803603602081101561044057600080fd5b503561174b565b34801561045357600080fd5b506101ec6004803603602081101561046a57600080fd5b503561175d565b34801561047d57600080fd5b506104a46004803603602081101561049457600080fd5b50356001600160a01b03166118d7565b6040805192835260208301919091528051918290030190f35b3480156104c957600080fd5b506101b06118f0565b3480156104de57600080fd5b506101ec600480360360608110156104f557600080fd5b50803590602081013590604001356118f6565b34801561051457600080fd5b506101b06004803603602081101561052b57600080fd5b5035611c84565b34801561053e57600080fd5b506101b0611c96565b34801561055357600080fd5b5061026c611d5f565b34801561056857600080fd5b506105866004803603602081101561057f57600080fd5b5035611d83565b604080519115158252519081900360200190f35b60075481565b6006546001600160a01b031633146105b757600080fd5b600555565b60055481565b60025481565b6006546001600160a01b031633146105df57600080fd5b600455565b60006105ee6126a7565b503360009081526003602090815260409182902082518084019093528054808452600190910154918301829052600254610646929161064091670de0b6b3a76400009161063a91611f0f565b90611f6f565b90611fb1565b91505090565b6006546001600160a01b031681565b3233146106a8576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b336000908152600360205260409020805482111561070d576040805162461bcd60e51b815260206004820152601d60248201527f556e7374616b696e67206d6f7265207468616e2070726f76696465642e000000604482015290519081900360640190fd5b60006107176105e4565b9050801561075557336108fc61072b6105e4565b6040518115909202916000818181858888f19350505050158015610753573d6000803e3d6000fd5b505b81546107619084611fb1565b80835560025461077f91670de0b6b3a76400009161063a9190611f0f565b6001830155604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810185905290516001600160a01b037f000000000000000000000000831091da075665168e01898c6dac004a867f1e1b169163a9059cbb9160448083019260209291908290030181600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050506040513d602081101561083657600080fd5b50506001600160a01b037f000000000000000000000000831091da075665168e01898c6dac004a867f1e1b16639dc29fac33610878606461063a88600a611f0f565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b50505050505050565b7f0000000000000000000000003f759c3f4cdba32e69ddf607e0cdcc2547061b9781565b6000602052816000526040600020818154811061091b57600080fd5b60009182526020909120600990910201805460018201546002830154600384015460048501546005860154600687015460078801546008909801549699506001600160a01b039586169850939692959194909392169089565b3233146109c1576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b806109cb81611d83565b610a1c576040805162461bcd60e51b815260206004820152601660248201527f54686973204e46542069736e2774206c69737465642e00000000000000000000604482015290519081900360640190fd5b610a246126c1565b6000807f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a8b57600080fd5b505afa158015610a9f573d6000803e3d6000fd5b505050506040513d6020811015610ab557600080fd5b505160ff168152602081810192909252604090810160009081208682526001909352205481548110610ae357fe5b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b0390811694840194909452600281015491830182905260038101546060840181905260048201546080850152600582015460a0850152600682015460c0850152600782015490941660e084015260080154610100830152909250610b7491611ff3565b431015610bc8576040805162461bcd60e51b815260206004820152601560248201527f42696464696e67206861736e277420656e6465642e0000000000000000000000604482015290519081900360640190fd5b600081610100015111610c22576040805162461bcd60e51b815260206004820152601060248201527f4e6f2062696420776173206d6164652e00000000000000000000000000000000604482015290519081900360640190fd5b6000610c42606461063a6005548560c00151611f0f90919063ffffffff16565b905081602001516001600160a01b03166108fc610c6c838560c00151611fb190919063ffffffff16565b6040518115909202916000818181858888f19350505050158015610c94573d6000803e3d6000fd5b507f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b03166323b872dd308460e00151876040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610d2157600080fd5b505af1158015610d35573d6000803e3d6000fd5b50505050610d428461204d565b60007f000000000000000000000000831091da075665168e01898c6dac004a867f1e1b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d6020811015610ddb57600080fd5b505190508015610e0b57610e07610dfe8261063a85670de0b6b3a7640000611f0f565b60025490611ff3565b6002555b600754610e189083611ff3565b6007555050505050565b323314610e6f576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b80610e7981611d83565b610eca576040805162461bcd60e51b815260206004820152601660248201527f54686973204e46542069736e2774206c69737465642e00000000000000000000604482015290519081900360640190fd5b60007f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b031663e4214ec0846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d6020811015610f5a57600080fd5b505160ff166000818152602081815260408083208784526001909252822054815493945091929091908110610f8b57fe5b6000918252602090912060099091020160018101549091506001600160a01b0316331415611000576040805162461bcd60e51b815260206004820152601f60248201527f596f752063616e27742062696420666f7220796f7572206f776e204e46542e00604482015290519081900360640190fd5b6003810154600282015461101391611ff3565b4310611066576040805162461bcd60e51b815260206004820152601a60248201527f42696464696e672068617320616c726561647920656e6465642e000000000000604482015290519081900360640190fd5b8060040154341015801561107d5750806005015434115b6110b85760405162461bcd60e51b81526004018080602001828103825260398152602001806127206039913960400191505060405180910390fd5b60078101546001600160a01b0316158015906110d75750600581015415155b1561111e57600781015460068201546040516001600160a01b039092169181156108fc0291906000818181858888f1935050505015801561111c573d6000803e3d6000fd5b505b600061113a606461063a60045434611f0f90919063ffffffff16565b346005840181905590915061114f9082611fb1565b600683015560078201805473ffffffffffffffffffffffffffffffffffffffff1916331790556008820154611185906001611ff3565b6008830155604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000831091da075665168e01898c6dac004a867f1e1b16916370a0823191602480820192602092909190829003018186803b1580156111f457600080fd5b505afa158015611208573d6000803e3d6000fd5b505050506040513d602081101561121e57600080fd5b50519050801561124557611241610dfe8261063a85670de0b6b3a7640000611f0f565b6002555b6007546112529083611ff3565b600755600183015460408051888152602081018790523481830152905133926001600160a01b0316917f911d834cc781bcb7a08922b9dd1f1d175c0a0467d9705194c2e200f8ce2786bb919081900360600190a3505050505050565b3233146112fb576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b60006113056105e4565b905080611312575061137a565b336108fc61131e6105e4565b6040518115909202916000818181858888f19350505050158015611346573d6000803e3d6000fd5b50336000908152600360205260409020600254815461137291670de0b6b3a76400009161063a91611f0f565b600190910155505b565b7f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd81565b6006546001600160a01b031633146113b757600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b323314611433576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b8061143d81611d83565b61148e576040805162461bcd60e51b815260206004820152601660248201527f54686973204e46542069736e2774206c69737465642e00000000000000000000604482015290519081900360640190fd5b6114966126c1565b6000807f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114fd57600080fd5b505afa158015611511573d6000803e3d6000fd5b505050506040513d602081101561152757600080fd5b505160ff16815260208181019290925260409081016000908120868252600190935220548154811061155557fe5b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015490921660e0820152600890910154610100820181905290915015611632576040805162461bcd60e51b815260206004820152600f60248201527f426964732077657265206d6164652e0000000000000000000000000000000000604482015290519081900360640190fd5b6060810151604082015161164591611ff3565b431015611699576040805162461bcd60e51b815260206004820152601560248201527f42696464696e67206861736e277420656e6465642e0000000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b03166323b872dd308360200151866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561172557600080fd5b505af1158015611739573d6000803e3d6000fd5b505050506117468361204d565b505050565b60016020526000908152604090205481565b3233146117aa576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f000000000000000000000000831091da075665168e01898c6dac004a867f1e1b16916323b872dd9160648083019260209291908290030181600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b505050506040513d602081101561184957600080fd5b50600090506118566105e4565b9050801561189457336108fc61186a6105e4565b6040518115909202916000818181858888f19350505050158015611892573d6000803e3d6000fd5b505b33600090815260036020526040902080546118af9084611ff3565b8082556002546118cd91670de0b6b3a76400009161063a9190611f0f565b6001909101555050565b6003602052600090815260409020805460019091015482565b60045481565b323314611943576040805162461bcd60e51b815260206004820152601660248201527521b7b73a3930b1ba39903737ba1030b63637bbb2b21760511b604482015290519081900360640190fd5b606481101580156119575750620186a08111155b6119925760405162461bcd60e51b81526004018080602001828103825260378152602001806127596037913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b037f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd16916323b872dd91606480830192600092919082900301818387803b158015611a0657600080fd5b505af1158015611a1a573d6000803e3d6000fd5b5050505060007f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b031663e4214ec0856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611a8457600080fd5b505afa158015611a98573d6000803e3d6000fd5b505050506040513d6020811015611aae57600080fd5b505160ff169050611abd6126c1565b604051806101200160405280868152602001336001600160a01b03168152602001438152602001848152602001858152602001600081526020016000815260200160006001600160a01b03168152602001600081525090506000808381526020019081526020016000208190806001815401808255809150506001900390600052602060002090600902016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061010082015181600801555050600160008084815260200190815260200160002080549050036001600087815260200190815260200160002081905550336001600160a01b03167f33911c123d51874482101aba465c700f8a8c49c02f4b695f0c5bf6396dbbf35f868486886040518085815260200184815260200183815260200182815260200194505050505060405180910390a25050505050565b60009081526020819052604090205490565b6000611d5a69152d02c7e14af680000061063a611cb161229e565b611d54611cbc61241d565b604080516370a0823160e01b815230600482015290516001600160a01b037f000000000000000000000000831091da075665168e01898c6dac004a867f1e1b16916370a08231916024808301926020929190829003018186803b158015611d2257600080fd5b505afa158015611d36573d6000803e3d6000fd5b505050506040513d6020811015611d4c57600080fd5b505190611f0f565b90611f0f565b905090565b7f000000000000000000000000831091da075665168e01898c6dac004a867f1e1b81565b6000806000807f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611ded57600080fd5b505afa158015611e01573d6000803e3d6000fd5b505050506040513d6020811015611e1757600080fd5b505160ff168152602081019190915260400160002054118015611f095750816000807f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b031663e4214ec0866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611e9d57600080fd5b505afa158015611eb1573d6000803e3d6000fd5b505050506040513d6020811015611ec757600080fd5b505160ff168152602081810192909252604090810160009081208682526001909352205481548110611ef557fe5b906000526020600020906009020160000154145b92915050565b600082611f1e57506000611f09565b82820282848281611f2b57fe5b0414611f685760405162461bcd60e51b81526004018080602001828103825260218152602001806127906021913960400191505060405180910390fd5b9392505050565b6000611f6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ab565b6000611f6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061264d565b600082820183811015611f68576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60007f00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd6001600160a01b031663e4214ec0836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156120b357600080fd5b505afa1580156120c7573d6000803e3d6000fd5b505050506040513d60208110156120dd57600080fd5b505160ff1660008181526020818152604080832086845260019283905290832054815494955090939092908490600019810190811061211857fe5b60009182526020808320600990920290910154835282019290925260400190205580548190600019810190811061214b57fe5b90600052602060002090600902018160016000868152602001908152602001600020548154811061217857fe5b60009182526020909120825460099092020190815560018083015490820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560028085015490840155600380850154908401556004808501549084015560058085015490840155600680850154908401556007808501549084018054919093169116179055600891820154910155805481908061221a57fe5b600082815260208082206009600019909401938402018281556001818101805473ffffffffffffffffffffffffffffffffffffffff1990811690915560028301859055600383018590556004830185905560058301859055600683018590556007830180549091169055600890910183905592909355948552905250506040812055565b600080600073b4e16d0168e52d35cacd2c6185b44281ec28c9dc6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156122f057600080fd5b505afa158015612304573d6000803e3d6000fd5b505050506040513d606081101561231a57600080fd5b50805160209182015160408051630dfe168160e01b81529051929550909350600092839273b4e16d0168e52d35cacd2c6185b44281ec28c9dc92630dfe1681926004808301939192829003018186803b15801561237657600080fd5b505afa15801561238a573d6000803e3d6000fd5b505050506040513d60208110156123a057600080fd5b50516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156123e25750506dffffffffffffffffffffffffffff8181169083166123fa565b50506dffffffffffffffffffffffffffff8083169082165b6124148161063a620186a0611d548664e8d4a51000611f0f565b94505050505090565b60008060007f0000000000000000000000003f759c3f4cdba32e69ddf607e0cdcc2547061b976001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561247b57600080fd5b505afa15801561248f573d6000803e3d6000fd5b505050506040513d60608110156124a557600080fd5b50805160209182015160408051630dfe168160e01b8152905192955090935060009283926001600160a01b037f0000000000000000000000003f759c3f4cdba32e69ddf607e0cdcc2547061b971692630dfe1681926004808301939192829003018186803b15801561251657600080fd5b505afa15801561252a573d6000803e3d6000fd5b505050506040513d602081101561254057600080fd5b50516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156125825750506dffffffffffffffffffffffffffff80831690821661259a565b50506dffffffffffffffffffffffffffff8181169083165b6124148161063a84620186a0611f0f565b600081836126375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125fc5781810151838201526020016125e4565b50505050905090810190601f1680156126295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161264357fe5b0495945050505050565b6000818484111561269f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156125fc5781810151838201526020016125e4565b505050900390565b604051806040016040528060008152602001600081525090565b6040518061012001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152509056fe596f75206d7573742062696420686967686572207468616e20746865206d696e2062696420616e64207468652068696768657374206269642e42696464696e67206475726174696f6e2073686f756c64206265206265747765656e2031303020616e64203130306b20626c6f636b732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220eafc2d44a5a859dea61e9df824d8c0e957905e751b1f673b4df0eaa83f31f2da64736f6c63430007050033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd000000000000000000000000831091da075665168e01898c6dac004a867f1e1b0000000000000000000000003f759c3f4cdba32e69ddf607e0cdcc2547061b97000000000000000000000000c66fbe50dd33c9aadd65707f7088d597c86fe00f

-----Decoded View---------------
Arg [0] : _nft (address): 0x43ccD9eA8f64B8918267F7EE4a071D3e9168F9cD
Arg [1] : _token (address): 0x831091dA075665168E01898c6DAC004A867f1e1B
Arg [2] : _lp (address): 0x3f759C3F4cDba32E69dDf607E0CDCC2547061B97
Arg [3] : _gov (address): 0xC66FbE50Dd33c9AAdd65707F7088D597C86fE00F

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000043ccd9ea8f64b8918267f7ee4a071d3e9168f9cd
Arg [1] : 000000000000000000000000831091da075665168e01898c6dac004a867f1e1b
Arg [2] : 0000000000000000000000003f759c3f4cdba32e69ddf607e0cdcc2547061b97
Arg [3] : 000000000000000000000000c66fbe50dd33c9aadd65707f7088d597c86fe00f


Deployed Bytecode Sourcemap

9178:11842:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10430:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11334:101;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11334:101:0;;:::i;:::-;;10336:34;;;;;;;;;;;;;:::i;10118:26::-;;;;;;;;;;;;;:::i;11243:85::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11243:85:0;;:::i;18125:172::-;;;;;;;;;;;;;:::i;10377:18::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;10377:18:0;;;;;;;;;;;;;;18931:713;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18931:713:0;;:::i;9357:34::-;;;;;;;;;;;;;:::i;9930:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9930:52:0;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9930:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15417:1127;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15417:1127:0;;:::i;13592:1769::-;;;;;;;;;;;;;;;;-1:-1:-1;13592:1769:0;;:::i;17741:342::-;;;;;;;;;;;;;:::i;9263:38::-;;;;;;;;;;;;;:::i;11161:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11161:76:0;-1:-1:-1;;;;;11161:76:0;;:::i;16599:583::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16599:583:0;;:::i;9989:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9989:56:0;;:::i;18375:512::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18375:512:0;;:::i;10242:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10242:37:0;-1:-1:-1;;;;;10242:37:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10304:25;;;;;;;;;;;;;:::i;12631:919::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12631:919:0;;;;;;;;;;;;:::i;17231:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17231:136:0;;:::i;20864:151::-;;;;;;;;;;;;;:::i;9308:42::-;;;;;;;;;;;;;:::i;17413:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17413:247:0;;:::i;:::-;;;;;;;;;;;;;;;;;;10430:31;;;;:::o;11334:101::-;11131:3;;-1:-1:-1;;;;;11131:3:0;11117:10;:17;11109:26;;;;;;11403:17:::1;:24:::0;11334:101::o;10336:34::-;;;;:::o;10118:26::-;;;;:::o;11243:85::-;11131:3;;-1:-1:-1;;;;;11131:3:0;11117:10;:17;11109:26;;;;;;11304:9:::1;:16:::0;11243:85::o;18125:172::-;18170:4;18186:13;;:::i;:::-;-1:-1:-1;18208:10:0;18202:17;;;;:5;:17;;;;;;;;;18186:33;;;;;;;;;;;;;;;;;;;;;;;;18252:14;;18237:52;;18186:33;18237:40;;18272:4;;18237:30;;:14;:30::i;:::-;:34;;:40::i;:::-;:44;;:52::i;:::-;18230:59;;;18125:172;:::o;10377:18::-;;;-1:-1:-1;;;;;10377:18:0;;:::o;18931:713::-;12414:9;12427:10;12414:23;12406:58;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;;;;19075:10:::1;19052:14;19069:17:::0;;;:5:::1;:17;::::0;;;;19115:10;;19105:20;::::1;;19097:62;;;::::0;;-1:-1:-1;;;19097:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19211:12;19226:15;:13;:15::i;:::-;19211:30:::0;-1:-1:-1;19255:11:0;;19252:56:::1;;19269:10;:36;19289:15;:13;:15::i;:::-;19269:36;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19252:56;19373:10:::0;;:22:::1;::::0;19388:6;19373:14:::1;:22::i;:::-;19360:35:::0;;;19430:14:::1;::::0;19415:40:::1;::::0;19450:4:::1;::::0;19415:30:::1;::::0;19360:35;19415:14:::1;:30::i;:40::-;19406:6;::::0;::::1;:49:::0;19518:34:::1;::::0;;;;;19533:10:::1;19518:34;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;19518:5:0::1;:14;::::0;::::1;::::0;:34;;;;;::::1;::::0;;;;;;;;-1:-1:-1;19518:14:0;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;;;;19589:5:0::1;:10;;19600;19612:23;19631:3;19612:14;:6:::0;19623:2:::1;19612:10;:14::i;:23::-;19589:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;19589:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12475:1;;18931:713:::0;:::o;9357:34::-;;;:::o;9930:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9930:52:0;;;;-1:-1:-1;9930:52:0;;;;;;;;;;;;:::o;15417:1127::-;12414:9;12427:10;12414:23;12406:58;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;;;;15473:6:::1;12533:12;12542:2;12533:8;:12::i;:::-;12525:47;;;::::0;;-1:-1:-1;;;12525:47:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15491:16:::2;;:::i;:::-;15510:18;:44:::0;15529:3:::2;-1:-1:-1::0;;;;;15529:16:0::2;;15546:6;15529:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;15529:24:0;15510:44:::2;;::::0;;15529:24:::2;15510:44:::0;;::::2;::::0;;;;;;;;-1:-1:-1;15510:44:0;;;15555:35;;;:27:::2;:35:::0;;;;;15510:81;;;::::2;;;;;;::::0;;;::::2;::::0;;;;15491:100:::2;::::0;;::::2;::::0;::::2;::::0;;15510:81:::2;::::0;;::::2;::::0;;::::2;15491:100:::0;;;;::::2;::::0;::::2;::::0;-1:-1:-1;;;;;15491:100:0;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;;::::2;;::::0;::::2;::::0;;;;;-1:-1:-1;15668:23:0::2;::::0;:11:::2;:23::i;:::-;15652:12;:39;;15644:73;;;::::0;;-1:-1:-1;;;15644:73:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;15800:1;15787;:10;;;:14;15779:43;;;::::0;;-1:-1:-1;;;15779:43:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;15891:8;15902:53;15951:3;15902:44;15928:17;;15902:1;:21;;;:25;;:44;;;;:::i;:53::-;15891:64;;15966:1;:8;;;-1:-1:-1::0;;;;;15966:17:0::2;:49;15984:30;16010:3;15984:1;:21;;;:25;;:30;;;;:::i;:::-;15966:49;::::0;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;16082:3;-1:-1:-1::0;;;;;16082:16:0::2;;16107:4;16114:1;:15;;;16131:6;16082:56;;;;;;;;;;;;;-1:-1:-1::0;;;;;16082:56:0::2;;;;;;-1:-1:-1::0;;;;;16082:56:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;16185:21;16199:6;16185:13;:21::i;:::-;16239:17;16259:5;-1:-1:-1::0;;;;;16259:15:0::2;;16283:4;16259:30;;;;;;;;;;;;;-1:-1:-1::0;;;;;16259:30:0::2;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;16259:30:0;;-1:-1:-1;16303:16:0;;16300:147:::2;;16352:83;16389:31;16407:12:::0;16389:13:::2;:3:::0;16397:4:::2;16389:7;:13::i;:31::-;16352:14;::::0;;:18:::2;:83::i;:::-;16335:14;:100:::0;16300:147:::2;16508:19;::::0;:28:::2;::::0;16532:3;16508:23:::2;:28::i;:::-;16486:19;:50:::0;-1:-1:-1;;;;;15417:1127:0:o;13592:1769::-;12414:9;12427:10;12414:23;12406:58;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;;;;13654:6:::1;12533:12;12542:2;12533:8;:12::i;:::-;12525:47;;;::::0;;-1:-1:-1;;;12525:47:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13672:13:::2;13688:3;-1:-1:-1::0;;;;;13688:16:0::2;;13705:6;13688:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;13688:24:0;13672:40:::2;;13723:17;13743:28:::0;;;13688:24:::2;13743:28:::0;;;;;;;13772:35;;;:27:::2;:35:::0;;;;;;13743:65;;13672:40;;-1:-1:-1;13723:17:0;;13743:28;;13772:35;13743:65;::::2;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;;::::2;;13893:8;::::0;::::2;::::0;13743:65;;-1:-1:-1;;;;;;13893:8:0::2;13879:10;:22;;13871:66;;;::::0;;-1:-1:-1;;;13871:66:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;14028:10;::::0;::::2;::::0;14016:7:::2;::::0;::::2;::::0;:23:::2;::::0;:11:::2;:23::i;:::-;14001:12;:38;13993:77;;;::::0;;-1:-1:-1;;;13993:77:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;14161:1;:8;;;14148:9;:21;;:49;;;;;14185:1;:12;;;14173:9;:24;14148:49;14140:119;;;;-1:-1:-1::0;;;14140:119:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14350:15;::::0;::::2;::::0;-1:-1:-1;;;;;14350:15:0::2;:29:::0;;::::2;::::0;:50:::2;;-1:-1:-1::0;14383:12:0::2;::::0;::::2;::::0;:17;::::2;14350:50;14347:128;;;14416:15;::::0;::::2;::::0;14441:21:::2;::::0;::::2;::::0;14416:47:::2;::::0;-1:-1:-1;;;;;14416:15:0;;::::2;::::0;:47;::::2;;;::::0;14441:21;14416:15:::2;:47:::0;:15;:47;14441:21;14416:15;:47;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;14347:128;14612:8;14623:33;14652:3;14623:24;14637:9;;14623;:13;;:24;;;;:::i;:33::-;14682:9;14667:12;::::0;::::2;:24:::0;;;14612:44;;-1:-1:-1;14726:18:0::2;::::0;14612:44;14726:13:::2;:18::i;:::-;14702:21;::::0;::::2;:42:::0;14755:15:::2;::::0;::::2;:28:::0;;-1:-1:-1;;14755:28:0::2;14773:10;14755:28;::::0;;14807:10:::2;::::0;::::2;::::0;:17:::2;::::0;14755:28;14807:14:::2;:17::i;:::-;14794:10;::::0;::::2;:30:::0;14899::::2;::::0;;-1:-1:-1;;;14899:30:0;;14923:4:::2;14899:30;::::0;::::2;::::0;;;14879:17:::2;::::0;-1:-1:-1;;;;;14899:5:0::2;:15;::::0;::::2;::::0;:30;;;;;::::2;::::0;;;;;;;;;:15;:30;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;14899:30:0;;-1:-1:-1;14943:16:0;;14940:147:::2;;14992:83;15029:31;15047:12:::0;15029:13:::2;:3:::0;15037:4:::2;15029:7;:13::i;14992:83::-;14975:14;:100:::0;14940:147:::2;15148:19;::::0;:28:::2;::::0;15172:3;15148:23:::2;:28::i;:::-;15126:19;:50:::0;15241:8:::2;::::0;::::2;::::0;15220:133:::2;::::0;;;;;::::2;::::0;::::2;::::0;;;15333:9:::2;15220:133:::0;;;;;;15264:10:::2;::::0;-1:-1:-1;;;;;15241:8:0::2;::::0;15220:133:::2;::::0;;;;;;;;::::2;12583:1;;;;12475::::1;13592:1769:::0;:::o;17741:342::-;12414:9;12427:10;12414:23;12406:58;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;;;;17789:12:::1;17804:15;:13;:15::i;:::-;17789:30:::0;-1:-1:-1;17833:12:0;17830:27:::1;;17848:7;;;17830:27;17905:10;:36;17925:15;:13;:15::i;:::-;17905:36;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;18004:10:0::1;17981:14;17998:17:::0;;;:5:::1;:17;::::0;;;;18050:14:::1;::::0;18035:10;;:40:::1;::::0;18070:4:::1;::::0;18035:30:::1;::::0;:14:::1;:30::i;:40::-;18026:6;::::0;;::::1;:49:::0;-1:-1:-1;12475:1:0::1;17741:342::o:0;9263:38::-;;;:::o;11161:76::-;11131:3;;-1:-1:-1;;;;;11131:3:0;11117:10;:17;11109:26;;;;;;11219:3:::1;:10:::0;;-1:-1:-1;;11219:10:0::1;-1:-1:-1::0;;;;;11219:10:0;;;::::1;::::0;;;::::1;::::0;;11161:76::o;16599:583::-;12414:9;12427:10;12414:23;12406:58;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;;;;16659:6:::1;12533:12;12542:2;12533:8;:12::i;:::-;12525:47;;;::::0;;-1:-1:-1;;;12525:47:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16677:16:::2;;:::i;:::-;16696:18;:44:::0;16715:3:::2;-1:-1:-1::0;;;;;16715:16:0::2;;16732:6;16715:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;16715:24:0;16696:44:::2;;::::0;;16715:24:::2;16696:44:::0;;::::2;::::0;;;;;;;;-1:-1:-1;16696:44:0;;;16741:35;;;:27:::2;:35:::0;;;;;16696:81;;;::::2;;;;;;::::0;;;::::2;::::0;;;;16677:100:::2;::::0;;::::2;::::0;::::2;::::0;;16696:81:::2;::::0;;::::2;::::0;;::::2;16677:100:::0;;;;::::2;::::0;::::2;::::0;-1:-1:-1;;;;;16677:100:0;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;::::2;::::0;;;;;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;-1:-1:-1;16836:15:0;16828:43:::2;;;::::0;;-1:-1:-1;;;16828:43:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;16960:10;::::0;::::2;::::0;16948:7:::2;::::0;::::2;::::0;:23:::2;::::0;:11:::2;:23::i;:::-;16932:12;:39;;16924:73;;;::::0;;-1:-1:-1;;;16924:73:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;17057:3;-1:-1:-1::0;;;;;17057:16:0::2;;17082:4;17089:1;:8;;;17099:6;17057:49;;;;;;;;;;;;;-1:-1:-1::0;;;;;17057:49:0::2;;;;;;-1:-1:-1::0;;;;;17057:49:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;17153:21;17167:6;17153:13;:21::i;:::-;12583:1;12475::::1;16599:583:::0;:::o;9989:56::-;;;;;;;;;;;;;:::o;18375:512::-;12414:9;12427:10;12414:23;12406:58;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;;;;18485:53:::1;::::0;;-1:-1:-1;;;18485:53:0;;18504:10:::1;18485:53;::::0;::::1;::::0;18524:4:::1;18485:53:::0;;;;;;;;;;;;-1:-1:-1;;;;;18485:5:0::1;:18;::::0;::::1;::::0;:53;;;;;::::1;::::0;;;;;;;;-1:-1:-1;18485:18:0;:53;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;18590:12:0::1;::::0;-1:-1:-1;18605:15:0::1;:13;:15::i;:::-;18590:30:::0;-1:-1:-1;18634:11:0;;18631:56:::1;;18648:10;:36;18668:15;:13;:15::i;:::-;18648:36;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18631:56;18762:10;18739:14;18756:17:::0;;;:5:::1;:17;::::0;;;;18797:10;;:22:::1;::::0;18812:6;18797:14:::1;:22::i;:::-;18784:35:::0;;;18854:14:::1;::::0;18839:40:::1;::::0;18874:4:::1;::::0;18839:30:::1;::::0;18784:35;18839:14:::1;:30::i;:40::-;18830:6;::::0;;::::1;:49:::0;-1:-1:-1;;18375:512:0:o;10242:37::-;;;;;;;;;;;;;;;;;;;:::o;10304:25::-;;;;:::o;12631:919::-;12414:9;12427:10;12414:23;12406:58;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;-1:-1:-1;;;12406:58:0;;;;;;;;;;;;;;;12823:3:::1;12807:12;:19;;:45;;;;;12846:6;12830:12;:22;;12807:45;12799:113;;;;-1:-1:-1::0;;;12799:113:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12974:51;::::0;;-1:-1:-1;;;12974:51:0;;12991:10:::1;12974:51;::::0;::::1;::::0;13011:4:::1;12974:51:::0;;;;;;;;;;;;-1:-1:-1;;;;;12974:3:0::1;:16;::::0;::::1;::::0;:51;;;;;-1:-1:-1;;12974:51:0;;;;;;;-1:-1:-1;12974:16:0;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13067:13;13083:3;-1:-1:-1::0;;;;;13083:16:0::1;;13100:6;13083:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13083:24:0;13067:40:::1;;::::0;-1:-1:-1;13118:16:0::1;;:::i;:::-;13137:85;;;;;;;;13145:6;13137:85;;;;13153:10;-1:-1:-1::0;;;;;13137:85:0::1;;;;;13165:12;13137:85;;;;13179:12;13137:85;;;;13193:7;13137:85;;;;13202:1;13137:85;;;;13205:1;13137:85;;;;13216:1;-1:-1:-1::0;;;;;13137:85:0::1;;;;;13220:1;13137:85;;::::0;13118:104:::1;;13235:18;:28:::0;13254:8:::1;13235:28;;;;;;;;;;;13269:1;13235:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;13235:36:0::1;;;;;-1:-1:-1::0;;;;;13235:36:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;13235:36:0::1;;;;;-1:-1:-1::0;;;;;13235:36:0::1;;;;;;;;;;;;;;;;13358:1;13320:18;:28:::0;13339:8:::1;13320:28;;;;;;;;;;;:35;;;;:39;13282:27;:35;13310:6;13282:35;;;;;;;;;;;:77;;;;13428:10;-1:-1:-1::0;;;;;13403:139:0::1;;13453:6;13474:8;13497:12;13524:7;13403:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12475:1;;12631:919:::0;;;:::o;17231:136::-;17300:4;17323:29;;;;;;;;;;:36;;17231:136::o;20864:151::-;20901:4;20924:83;21002:4;20924:73;20983:13;:11;:13::i;:::-;20924:54;20959:18;:16;:18::i;:::-;20924:30;;;-1:-1:-1;;;20924:30:0;;20948:4;20924:30;;;;;;-1:-1:-1;;;;;20924:5:0;:15;;;;:30;;;;;;;;;;;;;;:15;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20924:30:0;;:34;:54::i;:::-;:58;;:73::i;:83::-;20917:90;;20864:151;:::o;9308:42::-;;;:::o;17413:247::-;17464:4;17541:1;17487:18;:44;17506:3;-1:-1:-1;;;;;17506:16:0;;17523:6;17506:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17506:24:0;17487:44;;;;17506:24;17487:44;;;;;;;;-1:-1:-1;17487:44:0;:51;:55;:165;;;;;17646:6;17555:18;:44;17574:3;-1:-1:-1;;;;;17574:16:0;;17591:6;17574:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17574:24:0;17555:44;;;;17574:24;17555:44;;;;;;;;;;;-1:-1:-1;17555:44:0;;;17600:35;;;:27;:35;;;;;17555:81;;;;;;;;;;;;;;;;;;:87;;;:97;17487:165;17480:172;17413:247;-1:-1:-1;;17413:247:0:o;5995:471::-;6053:7;6298:6;6294:47;;-1:-1:-1;6328:1:0;6321:8;;6294:47;6365:5;;;6369:1;6365;:5;:1;6389:5;;;;;:10;6381:56;;;;-1:-1:-1;;;6381:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6457:1;5995:471;-1:-1:-1;;;5995:471:0:o;6942:132::-;7000:7;7027:39;7031:1;7034;7027:39;;;;;;;;;;;;;;;;;:3;:39::i;5105:136::-;5163:7;5190:43;5194:1;5197;5190:43;;;;;;;;;;;;;;;;;:3;:43::i;4641:181::-;4699:7;4731:5;;;4755:6;;;;4747:46;;;;;-1:-1:-1;;;4747:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11482:822;11536:13;11552:3;-1:-1:-1;;;;;11552:16:0;;11569:6;11552:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11552:24:0;11536:40;;11587:34;11624:28;;;11552:24;11624:28;;;;;;;11842:35;;;:27;:35;;;;;;;;11804:23;;11536:40;;-1:-1:-1;11624:28:0;;11842:35;;11587:34;11624:28;;-1:-1:-1;;11804:27:0;;;11787:45;;;;;;;;;;;;;;;;;;;;;:51;11759:80;;;;;;;;;;;;:118;12061:23;;12044:16;;-1:-1:-1;;12061:27:0;;;12044:45;;;;;;;;;;;;;;;;11988:16;12005:27;:35;12033:6;12005:35;;;;;;;;;;;;11988:53;;;;;;;;;;;;;;;;:101;;:53;;;;;:101;;;;;;;;;;;;;-1:-1:-1;;;;;11988:101:0;;;-1:-1:-1;;11988:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12163:22;;;;;;;;;;;;;;;;;;-1:-1:-1;;12163:22:0;;;;;;;;;;;;;;;;-1:-1:-1;;12163:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12259:35;;;;;-1:-1:-1;;12259:35:0;;;12252:42;11482:822::o;19720:595::-;19764:4;19781:17;19800;9526:42;-1:-1:-1;;;;;19823:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19823:27:0;;;;;;;;19927:22;;-1:-1:-1;;;19927:22:0;;;;19823:27;;-1:-1:-1;19823:27:0;;-1:-1:-1;19861:16:0;;;;9526:42;;19927:20;;:22;;;;;19823:27;;19927:22;;;;;9526:42;19927:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19927:22:0;-1:-1:-1;;;;;19919:30:0;9422:42;19919:30;19916:212;;;-1:-1:-1;;19965:22:0;20002:23;;;;19965:22;;19916:212;;;-1:-1:-1;;20056:23:0;;;;;20094:22;;19916:212;20261:46;20296:10;20261:30;20287:3;20261:21;:11;20277:4;20261:15;:21::i;:46::-;20254:53;;;;;;19720:595;:::o;20356:460::-;20405:4;20422:17;20441;20464:2;-1:-1:-1;;;;;20464:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20464:16:0;;;;;;;;20560:11;;-1:-1:-1;;;20560:11:0;;;;20464:16;;-1:-1:-1;20464:16:0;;-1:-1:-1;20493:15:0;;;;-1:-1:-1;;;;;20560:2:0;:9;;;;:11;;;;;20464:16;;20560:11;;;;;:9;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20560:11:0;-1:-1:-1;;;;;20552:19:0;9422:42;20552:19;20549:203;;;-1:-1:-1;;20587:22:0;;;;;20624:24;;20549:203;;;-1:-1:-1;;20679:24:0;20718:22;;;;20679:24;;20549:203;20771:37;20795:12;20771:19;:10;20786:3;20771:14;:19::i;7570:278::-;7656:7;7691:12;7684:5;7676:28;;;;-1:-1:-1;;;7676:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7715:9;7731:1;7727;:5;;;;;;;7570:278;-1:-1:-1;;;;;7570:278:0:o;5544:192::-;5630:7;5666:12;5658:6;;;;5650:29;;;;-1:-1:-1;;;5650:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5702:5:0;;;5544:192::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://eafc2d44a5a859dea61e9df824d8c0e957905e751b1f673b4df0eaa83f31f2da

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  ]
[ 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.