ETH Price: $3,183.84 (-7.99%)
Gas: 4 Gwei

Contract

0x7103253cF164393BD833E86aA9F51A4062BC6AA5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim V2164783842023-01-24 18:12:59547 days ago1674583979IN
0x7103253c...062BC6AA5
0 ETH0.0080732823.49269728
Claim V2164783502023-01-24 18:06:11547 days ago1674583571IN
0x7103253c...062BC6AA5
0 ETH0.0094633124.84455838
Claim V2164768032023-01-24 12:55:35547 days ago1674564935IN
0x7103253c...062BC6AA5
0 ETH0.0019442116.23640787
Claim V2164518412023-01-21 1:17:23551 days ago1674263843IN
0x7103253c...062BC6AA5
0 ETH0.0061634718.9
Claim V2164485512023-01-20 14:15:23551 days ago1674224123IN
0x7103253c...062BC6AA5
0 ETH0.0058717718.1284662
Claim V2164482302023-01-20 13:11:11551 days ago1674220271IN
0x7103253c...062BC6AA5
0 ETH0.0059735117.40483047
Claim V2164473542023-01-20 10:15:23551 days ago1674209723IN
0x7103253c...062BC6AA5
0 ETH0.0020557917.16820933
Claim V2164470762023-01-20 9:19:35552 days ago1674206375IN
0x7103253c...062BC6AA5
0 ETH0.0018873715.76172279
Claim V2164470022023-01-20 9:04:47552 days ago1674205487IN
0x7103253c...062BC6AA5
0 ETH0.0047919314.79456516
Claim V2164419972023-01-19 16:18:47552 days ago1674145127IN
0x7103253c...062BC6AA5
0 ETH0.0025539221.32820056
Claim V2164418052023-01-19 15:40:11552 days ago1674142811IN
0x7103253c...062BC6AA5
0 ETH0.0128358639.30739276
Claim V2164417352023-01-19 15:26:11552 days ago1674141971IN
0x7103253c...062BC6AA5
0 ETH0.0026562822.18304407
Claim V2164417102023-01-19 15:21:11552 days ago1674141671IN
0x7103253c...062BC6AA5
0 ETH0.0081804725.05114157
Claim V2164416952023-01-19 15:18:11552 days ago1674141491IN
0x7103253c...062BC6AA5
0 ETH0.002874224.00289882
Claim V2164416832023-01-19 15:15:47552 days ago1674141347IN
0x7103253c...062BC6AA5
0 ETH0.0083571325.59211463
Claim V2164411202023-01-19 13:22:35552 days ago1674134555IN
0x7103253c...062BC6AA5
0 ETH0.0060083317.48381578
Claim V2164409752023-01-19 12:53:23552 days ago1674132803IN
0x7103253c...062BC6AA5
0 ETH0.0017961615
Claim V2164409702023-01-19 12:52:23552 days ago1674132743IN
0x7103253c...062BC6AA5
0 ETH0.0052106615.95667949
Claim V2164406562023-01-19 11:49:11552 days ago1674128951IN
0x7103253c...062BC6AA5
0 ETH0.0020868717.42780597
Claim V2164404992023-01-19 11:17:35552 days ago1674127055IN
0x7103253c...062BC6AA5
0 ETH0.0018824115.72032996
Claim V2164404442023-01-19 11:06:35552 days ago1674126395IN
0x7103253c...062BC6AA5
0 ETH0.0020984517.52450316
Claim V2164404142023-01-19 11:00:35552 days ago1674126035IN
0x7103253c...062BC6AA5
0 ETH0.0021504117.95844991
Claim V2164402992023-01-19 10:37:23552 days ago1674124643IN
0x7103253c...062BC6AA5
0 ETH0.0018815.70021279
Claim V2164402362023-01-19 10:24:47552 days ago1674123887IN
0x7103253c...062BC6AA5
0 ETH0.0020482317.10508847
Claim V2164400162023-01-19 9:39:59552 days ago1674121199IN
0x7103253c...062BC6AA5
0 ETH0.0019436416.23165054
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HAMV1toV2

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-01-16
*/

/**
Migrate your $HAM from V1 to V2
*/

pragma solidity 0.8.15;
pragma experimental ABIEncoderV2;

// SPDX-License-Identifier:MIT

// ERC20 token standard interface
interface IERC20 {
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `_account`.
     */
    function balanceOf(address _account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's _account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one _account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

// Dex Factory contract interface
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

// Dex Router02 contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the _account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an _account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner _account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new _account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    /**
     * @dev set the owner for the first time.
     * Can only be called by the contract or deployer.
     */
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

// Main Contract
contract HAMV1toV2 is Ownable, ReentrancyGuard {
    //using SafeMath for uint256;

    struct UserInfo {
        uint256 depositeddAmountV1;
        bool claimed;
    }

    mapping(address => UserInfo) public userInfo;

    event Log(string, uint256);
    event AuditLog(string, address);

    uint256 public totalDepositedAmountV1;
    uint256 public totalClaimedAmountV2;
    uint256 public rate = 1;
    bool public openForDeposit = false;

    uint256 public treasureAmountV2;
    
    IERC20 public tokenV1 = IERC20(0x2238796FB82aa4E989a1E96bFD0c4412550C4904); //HAM V1 Contract
    IERC20 public tokenV2 = IERC20(0xEAd485158Ee12f43B03cC0612dcb006DAb4731cC); //HAM V2 Contract
    address public tokenV2Pair = 0x7C82350B8B5861b9B593F3b3844C3aE2cb7734E5;
    address public constant HAMMultiSig =
        0x904Ce75fbcf15dc6D14ACe599181D7D66BdFc4E7;

    function depositV1(uint256 amount) external nonReentrant{
        require(openForDeposit, "Not in deposit period");

        tokenV1.transferFrom(msg.sender, address(this), amount);
        totalDepositedAmountV1 = totalDepositedAmountV1 + amount;
        userInfo[msg.sender].depositeddAmountV1 = userInfo[msg.sender].depositeddAmountV1 + amount;
        userInfo[msg.sender].claimed = false;
        emit AuditLog("The deposit has been successfull for the holder:",msg.sender);
        emit Log("They have deposited a total of:",amount);
    }

    function claimV2() external nonReentrant{
        require(tokenV2.balanceOf(tokenV2Pair) > 0, "Token hasn't launched yet");
        require(userInfo[msg.sender].depositeddAmountV1 > 0, "You haven't deposit V1 yet");
        require(userInfo[msg.sender].claimed == false, "You already claimed");
        
        uint256 claimAmount = userInfo[msg.sender].depositeddAmountV1 * 10;
        userInfo[msg.sender].claimed = true;
        userInfo[msg.sender].depositeddAmountV1 = 0;
        treasureAmountV2 -= claimAmount;
        totalClaimedAmountV2 += claimAmount;
        tokenV2.transfer(msg.sender, claimAmount);
        emit AuditLog("The claim has been successfull for the holder:",msg.sender);
        emit Log("They have claimed a total of:",claimAmount);
    }

    function claimableV2Amount(address account) public view returns (uint256) {
        if(userInfo[account].claimed){
            return 0;
        }
        return userInfo[account].depositeddAmountV1 * 10;
    }

    function addV2Token(uint256 amount) external nonReentrant {
        require(amount > 0, "You need to deposit more than 0 tokens.");
        tokenV2.transferFrom(msg.sender, address(this), amount);
        treasureAmountV2 = treasureAmountV2 + amount;
        emit AuditLog("The admin has successfully added tokens to the contract:",msg.sender);
        emit Log("The total added to the treasure is:",amount);
    }

    function depositOpen() external onlyOwner{
        require(openForDeposit != true, "Deposit is already open.");
        openForDeposit = true;
        emit AuditLog("The migration has been opened for deposits.",msg.sender);
    }

    function depositClose() external onlyOwner{
        require(openForDeposit != false, "Deposit is already closed.");
        openForDeposit = false;
        emit AuditLog("The migration has been closed for deposits.",msg.sender);
    }

    function withdrawV1() external onlyOwner{
        tokenV1.transfer(msg.sender, tokenV1.balanceOf(address(this)));
        emit AuditLog("The owner has successfully withdraw V1 Tokens.",msg.sender);
        emit Log("The total withdraw from contract is:",tokenV1.balanceOf(address(this)));
    }

    function withdrawV2() external onlyOwner{
        tokenV2.transfer(msg.sender, tokenV2.balanceOf(address(this)));
        emit AuditLog("The owner has successfully withdraw V2 Tokens.",msg.sender);
        emit Log("The total withdraw from contract is:",tokenV2.balanceOf(address(this)));
    }
    function updateSetup(address _tokenV2, address _v2Pair, address _migrationV1) external onlyOwner{
    require( _tokenV2 != address(0),"Token V2 Address need to start with : ZERO");
    require( _v2Pair != address(0),"Token V2 Pair Address need to start with : ZERO");
    require( _migrationV1 != address(0),"Token V2 Pair Address need to start with : ZERO");
        tokenV2 = IERC20(_tokenV2);
        tokenV2Pair = _v2Pair;
        tokenV1 = IERC20(_migrationV1);
        emit AuditLog("The Setup has been updated.",msg.sender);
    }
    function updateClaim (address _holder, bool _status) external onlyOwner {
        require(userInfo[msg.sender].claimed == true, "User can claim!, no need for update");
        userInfo[_holder].claimed = _status;
        emit AuditLog("The user claim has been updated.",msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"AuditLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Log","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"HAMMultiSig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addV2Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimableV2Amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositClose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositV1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openForDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenV1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenV2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimedAmountV2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDepositedAmountV1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasureAmountV2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenV2","type":"address"},{"internalType":"address","name":"_v2Pair","type":"address"},{"internalType":"address","name":"_migrationV1","type":"address"}],"name":"updateSetup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"depositeddAmountV1","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawV1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawV2","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260016005556006805460ff19169055600880546001600160a01b0319908116732238796fb82aa4e989a1e96bfd0c4412550c49041790915560098054821673ead485158ee12f43b03cc0612dcb006dab4731cc179055600a8054909116737c82350b8b5861b9b593f3b3844c3ae2cb7734e517905534801561008557600080fd5b5061008f33610098565b600180556100e8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6116e7806100f76000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c80635dbdac7a116100c357806399c9e2461161007c57806399c9e246146102b2578063b0e882d6146102bb578063d5d7bbf7146102c4578063e6651b79146102d7578063f2fde38b146102ea578063fd4e822e146102fd57600080fd5b80635dbdac7a1461024f578063715018a61461026a57806375f9b7be1461027257806383b25b891461028557806388382fdd146102985780638da5cb5b146102a157600080fd5b8063285a43ca11610115578063285a43ca146101da5780632c4e722e146101ed5780632fb420761461020457806332fbf8841461020c5780635a09796c1461021f5780635b3449ba1461023257600080fd5b80624540fa1461015157806312df50c41461015b5780631382d8c2146101635780631959a00214610193578063273cc2a5146101d2575b600080fd5b610159610305565b005b610159610407565b600954610176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101bd6101a1366004611459565b6002602052600090815260409020805460019091015460ff1682565b6040805192835290151560208301520161018a565b610159610650565b6101596101e836600461147b565b610746565b6101f660055481565b60405190815260200161018a565b6101596108bb565b61015961021a3660046114be565b610c0b565b61015961022d3660046114be565b610df6565b60065461023f9060ff1681565b604051901515815260200161018a565b61017673904ce75fbcf15dc6d14ace599181d7d66bdfc4e781565b610159610ff1565b600a54610176906001600160a01b031681565b600854610176906001600160a01b031681565b6101f660045481565b6000546001600160a01b0316610176565b6101f660035481565b6101f660075481565b6101f66102d2366004611459565b611027565b6101596102e53660046114e5565b61107d565b6101596102f8366004611459565b61119a565b610159611235565b6000546001600160a01b031633146103385760405162461bcd60e51b815260040161032f9061151c565b60405180910390fd5b60065460ff16151560000361038f5760405162461bcd60e51b815260206004820152601a60248201527f4465706f73697420697320616c726561647920636c6f7365642e000000000000604482015260640161032f565b6006805460ff1916905560408051818152602b918101919091527f546865206d6967726174696f6e20686173206265656e20636c6f73656420666f60608201526a39103232b837b9b4ba399760a91b60808201523360208201526000805160206116928339815191529060a0015b60405180910390a1565b6000546001600160a01b031633146104315760405162461bcd60e51b815260040161032f9061151c565b6008546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a79190611551565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156104f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610516919061156a565b5060408051818152602e818301527f546865206f776e657220686173207375636365737366756c6c7920776974686460608201526d3930bb902b18902a37b5b2b7399760911b608082015233602082015290516000805160206116928339815191529181900360a00190a16008546040516370a0823160e01b8152306004820152600080516020611672833981519152916001600160a01b0316906370a08231906024015b602060405180830381865afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190611551565b6040516103fd919060408082526024908201527f54686520746f74616c2077697468647261772066726f6d20636f6e74726163746060820152631034b99d60e11b6080820152602081019190915260a00190565b6000546001600160a01b0316331461067a5760405162461bcd60e51b815260040161032f9061151c565b60065460ff1615156001036106d15760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420697320616c7265616479206f70656e2e0000000000000000604482015260640161032f565b6006805460ff1916600117905560408051818152602b918101919091527f546865206d6967726174696f6e20686173206265656e206f70656e656420666f60608201526a39103232b837b9b4ba399760a91b60808201523360208201526000805160206116928339815191529060a0016103fd565b6000546001600160a01b031633146107705760405162461bcd60e51b815260040161032f9061151c565b6001600160a01b0383166107d95760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e2056322041646472657373206e65656420746f2073746172742077604482015269697468203a205a45524f60b01b606482015260840161032f565b6001600160a01b0382166107ff5760405162461bcd60e51b815260040161032f90611587565b6001600160a01b0381166108255760405162461bcd60e51b815260040161032f90611587565b600980546001600160a01b03199081166001600160a01b0386811691909117909255600a805482168584161790556008805490911691831691909117905560408051818152601b818301527f54686520536574757020686173206265656e20757064617465642e0000000000606082015233602082015290516000805160206116928339815191529181900360800190a1505050565b6002600154036108dd5760405162461bcd60e51b815260040161032f906115d6565b6002600155600954600a546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015610933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109579190611551565b116109a45760405162461bcd60e51b815260206004820152601960248201527f546f6b656e206861736e2774206c61756e636865642079657400000000000000604482015260640161032f565b33600090815260026020526040902054610a005760405162461bcd60e51b815260206004820152601a60248201527f596f7520686176656e2774206465706f73697420563120796574000000000000604482015260640161032f565b3360009081526002602052604090206001015460ff1615610a595760405162461bcd60e51b8152602060048201526013602482015272165bdd48185b1c9958591e4818db185a5b5959606a1b604482015260640161032f565b33600090815260026020526040812054610a7490600a611623565b3360009081526002602052604081206001818101805460ff19169091179055819055600780549293508392909190610aad908490611642565b925050819055508060046000828254610ac69190611659565b909155505060095460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b40919061156a565b5060408051818152602e818301527f54686520636c61696d20686173206265656e207375636365737366756c6c206660608201526d37b9103a3432903437b63232b91d60911b608082015233602082015290516000805160206116928339815191529181900360a00190a160408051818152601d918101919091527f54686579206861766520636c61696d6564206120746f74616c206f663a000000606082015260208101829052600080516020611672833981519152906080015b60405180910390a15060018055565b600260015403610c2d5760405162461bcd60e51b815260040161032f906115d6565b600260015580610c8f5760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f206465706f736974206d6f7265207468616e2030206044820152663a37b5b2b7399760c91b606482015260840161032f565b6009546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a919061156a565b5080600754610d199190611659565b600755604080518181526038818301527f5468652061646d696e20686173207375636365737366756c6c7920616464656460608201527f20746f6b656e7320746f2074686520636f6e74726163743a0000000000000000608082015233602082015290516000805160206116928339815191529181900360a00190a1604080518181526023918101919091527f54686520746f74616c20616464656420746f207468652074726561737572652060608201526234b99d60e91b6080820152602081018290526000805160206116728339815191529060a001610bfc565b600260015403610e185760405162461bcd60e51b815260040161032f906115d6565b600260015560065460ff16610e675760405162461bcd60e51b8152602060048201526015602482015274139bdd081a5b8819195c1bdcda5d081c195c9a5bd9605a1b604482015260640161032f565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee2919061156a565b5080600354610ef19190611659565b60035533600090815260026020526040902054610f0f908290611659565b336000818152600260209081526040918290209384556001909301805460ff1916905580518181526030818301527f546865206465706f73697420686173206265656e207375636365737366756c6c60608201526f103337b9103a3432903437b63232b91d60811b608082015292830191909152516000805160206116928339815191529181900360a00190a160408051818152601f918101919091527f546865792068617665206465706f7369746564206120746f74616c206f663a0060608201526020810182905260008051602061167283398151915290608001610bfc565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040161032f9061151c565b61102560006113ed565b565b6001600160a01b03811660009081526002602052604081206001015460ff161561105357506000919050565b6001600160a01b03821660009081526002602052604090205461107790600a611623565b92915050565b6000546001600160a01b031633146110a75760405162461bcd60e51b815260040161032f9061151c565b33600090815260026020526040902060019081015460ff1615151461111a5760405162461bcd60e51b815260206004820152602360248201527f557365722063616e20636c61696d212c206e6f206e65656420666f722075706460448201526261746560e81b606482015260840161032f565b6001600160a01b038216600090815260026020908152604091829020600101805460ff191684151517905581518281529182018190527f546865207573657220636c61696d20686173206265656e20757064617465642e606083015233908201526000805160206116928339815191529060800160405180910390a15050565b6000546001600160a01b031633146111c45760405162461bcd60e51b815260040161032f9061151c565b6001600160a01b0381166112295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161032f565b611232816113ed565b50565b6000546001600160a01b0316331461125f5760405162461bcd60e51b815260040161032f9061151c565b6009546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d59190611551565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611344919061156a565b5060408051818152602e818301527f546865206f776e657220686173207375636365737366756c6c7920776974686460608201526d3930bb902b19102a37b5b2b7399760911b608082015233602082015290516000805160206116928339815191529181900360a00190a16009546040516370a0823160e01b8152306004820152600080516020611672833981519152916001600160a01b0316906370a08231906024016105bb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461145457600080fd5b919050565b60006020828403121561146b57600080fd5b6114748261143d565b9392505050565b60008060006060848603121561149057600080fd5b6114998461143d565b92506114a76020850161143d565b91506114b56040850161143d565b90509250925092565b6000602082840312156114d057600080fd5b5035919050565b801515811461123257600080fd5b600080604083850312156114f857600080fd5b6115018361143d565b91506020830135611511816114d7565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561156357600080fd5b5051919050565b60006020828403121561157c57600080fd5b8151611474816114d7565b6020808252602f908201527f546f6b656e20563220506169722041646472657373206e65656420746f20737460408201526e6172742077697468203a205a45524f60881b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561163d5761163d61160d565b500290565b6000828210156116545761165461160d565b500390565b6000821982111561166c5761166c61160d565b50019056fedd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b5025dbd6ad989fe1a64db7dc049e29723ff9d35a97d84ae9aab96196f00ec1a00a2646970667358221220df4903c1aadfbde3d99c6e1c839af70d36d479088f53791c38bf341a4f536c9764736f6c634300080f0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014c5760003560e01c80635dbdac7a116100c357806399c9e2461161007c57806399c9e246146102b2578063b0e882d6146102bb578063d5d7bbf7146102c4578063e6651b79146102d7578063f2fde38b146102ea578063fd4e822e146102fd57600080fd5b80635dbdac7a1461024f578063715018a61461026a57806375f9b7be1461027257806383b25b891461028557806388382fdd146102985780638da5cb5b146102a157600080fd5b8063285a43ca11610115578063285a43ca146101da5780632c4e722e146101ed5780632fb420761461020457806332fbf8841461020c5780635a09796c1461021f5780635b3449ba1461023257600080fd5b80624540fa1461015157806312df50c41461015b5780631382d8c2146101635780631959a00214610193578063273cc2a5146101d2575b600080fd5b610159610305565b005b610159610407565b600954610176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101bd6101a1366004611459565b6002602052600090815260409020805460019091015460ff1682565b6040805192835290151560208301520161018a565b610159610650565b6101596101e836600461147b565b610746565b6101f660055481565b60405190815260200161018a565b6101596108bb565b61015961021a3660046114be565b610c0b565b61015961022d3660046114be565b610df6565b60065461023f9060ff1681565b604051901515815260200161018a565b61017673904ce75fbcf15dc6d14ace599181d7d66bdfc4e781565b610159610ff1565b600a54610176906001600160a01b031681565b600854610176906001600160a01b031681565b6101f660045481565b6000546001600160a01b0316610176565b6101f660035481565b6101f660075481565b6101f66102d2366004611459565b611027565b6101596102e53660046114e5565b61107d565b6101596102f8366004611459565b61119a565b610159611235565b6000546001600160a01b031633146103385760405162461bcd60e51b815260040161032f9061151c565b60405180910390fd5b60065460ff16151560000361038f5760405162461bcd60e51b815260206004820152601a60248201527f4465706f73697420697320616c726561647920636c6f7365642e000000000000604482015260640161032f565b6006805460ff1916905560408051818152602b918101919091527f546865206d6967726174696f6e20686173206265656e20636c6f73656420666f60608201526a39103232b837b9b4ba399760a91b60808201523360208201526000805160206116928339815191529060a0015b60405180910390a1565b6000546001600160a01b031633146104315760405162461bcd60e51b815260040161032f9061151c565b6008546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a79190611551565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156104f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610516919061156a565b5060408051818152602e818301527f546865206f776e657220686173207375636365737366756c6c7920776974686460608201526d3930bb902b18902a37b5b2b7399760911b608082015233602082015290516000805160206116928339815191529181900360a00190a16008546040516370a0823160e01b8152306004820152600080516020611672833981519152916001600160a01b0316906370a08231906024015b602060405180830381865afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190611551565b6040516103fd919060408082526024908201527f54686520746f74616c2077697468647261772066726f6d20636f6e74726163746060820152631034b99d60e11b6080820152602081019190915260a00190565b6000546001600160a01b0316331461067a5760405162461bcd60e51b815260040161032f9061151c565b60065460ff1615156001036106d15760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420697320616c7265616479206f70656e2e0000000000000000604482015260640161032f565b6006805460ff1916600117905560408051818152602b918101919091527f546865206d6967726174696f6e20686173206265656e206f70656e656420666f60608201526a39103232b837b9b4ba399760a91b60808201523360208201526000805160206116928339815191529060a0016103fd565b6000546001600160a01b031633146107705760405162461bcd60e51b815260040161032f9061151c565b6001600160a01b0383166107d95760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e2056322041646472657373206e65656420746f2073746172742077604482015269697468203a205a45524f60b01b606482015260840161032f565b6001600160a01b0382166107ff5760405162461bcd60e51b815260040161032f90611587565b6001600160a01b0381166108255760405162461bcd60e51b815260040161032f90611587565b600980546001600160a01b03199081166001600160a01b0386811691909117909255600a805482168584161790556008805490911691831691909117905560408051818152601b818301527f54686520536574757020686173206265656e20757064617465642e0000000000606082015233602082015290516000805160206116928339815191529181900360800190a1505050565b6002600154036108dd5760405162461bcd60e51b815260040161032f906115d6565b6002600155600954600a546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015610933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109579190611551565b116109a45760405162461bcd60e51b815260206004820152601960248201527f546f6b656e206861736e2774206c61756e636865642079657400000000000000604482015260640161032f565b33600090815260026020526040902054610a005760405162461bcd60e51b815260206004820152601a60248201527f596f7520686176656e2774206465706f73697420563120796574000000000000604482015260640161032f565b3360009081526002602052604090206001015460ff1615610a595760405162461bcd60e51b8152602060048201526013602482015272165bdd48185b1c9958591e4818db185a5b5959606a1b604482015260640161032f565b33600090815260026020526040812054610a7490600a611623565b3360009081526002602052604081206001818101805460ff19169091179055819055600780549293508392909190610aad908490611642565b925050819055508060046000828254610ac69190611659565b909155505060095460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b40919061156a565b5060408051818152602e818301527f54686520636c61696d20686173206265656e207375636365737366756c6c206660608201526d37b9103a3432903437b63232b91d60911b608082015233602082015290516000805160206116928339815191529181900360a00190a160408051818152601d918101919091527f54686579206861766520636c61696d6564206120746f74616c206f663a000000606082015260208101829052600080516020611672833981519152906080015b60405180910390a15060018055565b600260015403610c2d5760405162461bcd60e51b815260040161032f906115d6565b600260015580610c8f5760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f206465706f736974206d6f7265207468616e2030206044820152663a37b5b2b7399760c91b606482015260840161032f565b6009546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a919061156a565b5080600754610d199190611659565b600755604080518181526038818301527f5468652061646d696e20686173207375636365737366756c6c7920616464656460608201527f20746f6b656e7320746f2074686520636f6e74726163743a0000000000000000608082015233602082015290516000805160206116928339815191529181900360a00190a1604080518181526023918101919091527f54686520746f74616c20616464656420746f207468652074726561737572652060608201526234b99d60e91b6080820152602081018290526000805160206116728339815191529060a001610bfc565b600260015403610e185760405162461bcd60e51b815260040161032f906115d6565b600260015560065460ff16610e675760405162461bcd60e51b8152602060048201526015602482015274139bdd081a5b8819195c1bdcda5d081c195c9a5bd9605a1b604482015260640161032f565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee2919061156a565b5080600354610ef19190611659565b60035533600090815260026020526040902054610f0f908290611659565b336000818152600260209081526040918290209384556001909301805460ff1916905580518181526030818301527f546865206465706f73697420686173206265656e207375636365737366756c6c60608201526f103337b9103a3432903437b63232b91d60811b608082015292830191909152516000805160206116928339815191529181900360a00190a160408051818152601f918101919091527f546865792068617665206465706f7369746564206120746f74616c206f663a0060608201526020810182905260008051602061167283398151915290608001610bfc565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040161032f9061151c565b61102560006113ed565b565b6001600160a01b03811660009081526002602052604081206001015460ff161561105357506000919050565b6001600160a01b03821660009081526002602052604090205461107790600a611623565b92915050565b6000546001600160a01b031633146110a75760405162461bcd60e51b815260040161032f9061151c565b33600090815260026020526040902060019081015460ff1615151461111a5760405162461bcd60e51b815260206004820152602360248201527f557365722063616e20636c61696d212c206e6f206e65656420666f722075706460448201526261746560e81b606482015260840161032f565b6001600160a01b038216600090815260026020908152604091829020600101805460ff191684151517905581518281529182018190527f546865207573657220636c61696d20686173206265656e20757064617465642e606083015233908201526000805160206116928339815191529060800160405180910390a15050565b6000546001600160a01b031633146111c45760405162461bcd60e51b815260040161032f9061151c565b6001600160a01b0381166112295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161032f565b611232816113ed565b50565b6000546001600160a01b0316331461125f5760405162461bcd60e51b815260040161032f9061151c565b6009546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d59190611551565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611344919061156a565b5060408051818152602e818301527f546865206f776e657220686173207375636365737366756c6c7920776974686460608201526d3930bb902b19102a37b5b2b7399760911b608082015233602082015290516000805160206116928339815191529181900360a00190a16009546040516370a0823160e01b8152306004820152600080516020611672833981519152916001600160a01b0316906370a08231906024016105bb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461145457600080fd5b919050565b60006020828403121561146b57600080fd5b6114748261143d565b9392505050565b60008060006060848603121561149057600080fd5b6114998461143d565b92506114a76020850161143d565b91506114b56040850161143d565b90509250925092565b6000602082840312156114d057600080fd5b5035919050565b801515811461123257600080fd5b600080604083850312156114f857600080fd5b6115018361143d565b91506020830135611511816114d7565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561156357600080fd5b5051919050565b60006020828403121561157c57600080fd5b8151611474816114d7565b6020808252602f908201527f546f6b656e20563220506169722041646472657373206e65656420746f20737460408201526e6172742077697468203a205a45524f60881b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561163d5761163d61160d565b500290565b6000828210156116545761165461160d565b500390565b6000821982111561166c5761166c61160d565b50019056fedd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b5025dbd6ad989fe1a64db7dc049e29723ff9d35a97d84ae9aab96196f00ec1a00a2646970667358221220df4903c1aadfbde3d99c6e1c839af70d36d479088f53791c38bf341a4f536c9764736f6c634300080f0033

Deployed Bytecode Sourcemap

9553:4830:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12681:238;;;:::i;:::-;;12927:298;;;:::i;10164:74::-;;;;;-1:-1:-1;;;;;10164:74:0;;;;;;-1:-1:-1;;;;;191:32:1;;;173:51;;161:2;146:18;10164:74:0;;;;;;;;9736:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;772:25:1;;;840:14;;833:22;828:2;813:18;;806:50;745:18;9736:44:0;604:258:1;12440:233:0;;;:::i;13537:545::-;;;;;;:::i;:::-;;:::i;9948:23::-;;;;;;;;;1352:25:1;;;1340:2;1325:18;9948:23:0;1206:177:1;11001:780:0;;;:::i;12012:420::-;;;;;;:::i;:::-;;:::i;10439:554::-;;;;;;:::i;:::-;;:::i;9978:34::-;;;;;;;;;;;;1738:14:1;;1731:22;1713:41;;1701:2;1686:18;9978:34:0;1573:187:1;10341:89:0;;10388:42;10341:89;;6151:94;;;:::i;10263:71::-;;;;;-1:-1:-1;;;;;10263:71:0;;;10065:74;;;;;-1:-1:-1;;;;;10065:74:0;;;9906:35;;;;;;5499:87;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;5499:87;;9862:37;;;;;;10021:31;;;;;;11789:215;;;;;;:::i;:::-;;:::i;14088:292::-;;;;;;:::i;:::-;;:::i;6401:229::-;;;;;;:::i;:::-;;:::i;13233:298::-;;;:::i;12681:238::-;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;;;;;;;;;12742:14:::1;::::0;::::1;;:23;;:14;:23:::0;12734:62:::1;;;::::0;-1:-1:-1;;;12734:62:0;;2979:2:1;12734:62:0::1;::::0;::::1;2961:21:1::0;3018:2;2998:18;;;2991:30;3057:28;3037:18;;;3030:56;3103:18;;12734:62:0::1;2777:350:1::0;12734:62:0::1;12807:14;:22:::0;;-1:-1:-1;;12807:22:0::1;::::0;;12845:66:::1;::::0;;3344:21:1;;;3401:2;3381:18;;;3374:30;;;;3440:34;3435:2;3420:18;;3413:62;-1:-1:-1;;;3506:3:1;3491:19;;3484:42;12900:10:0::1;3593:4:1::0;3578:20;;3571:62;-1:-1:-1;;;;;;;;;;;12845:66:0;3558:3:1;3543:19;12845:66:0::1;;;;;;;;12681:238::o:0;12927:298::-;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;12978:7:::1;::::0;13007:32:::1;::::0;-1:-1:-1;;;13007:32:0;;13033:4:::1;13007:32;::::0;::::1;173:51:1::0;-1:-1:-1;;;;;12978:7:0;;::::1;::::0;:16:::1;::::0;12995:10:::1;::::0;12978:7;;13007:17:::1;::::0;146:18:1;;13007:32:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12978:62;::::0;-1:-1:-1;;;;;;12978:62:0::1;::::0;;;;;;-1:-1:-1;;;;;4025:32:1;;;12978:62:0::1;::::0;::::1;4007:51:1::0;4074:18;;;4067:34;3980:18;;12978:62:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13056:69:0::1;::::0;;4574:21:1;;;4631:2;4611:18;;;4604:30;4670:34;4665:2;4650:18;;4643:62;-1:-1:-1;;;4736:3:1;4721:19;;4714:45;13114:10:0::1;4826:4:1::0;4811:20;;4804:62;13056:69:0;;-1:-1:-1;;;;;;;;;;;13056:69:0;;;;4791:3:1;13056:69:0;;::::1;13184:7;::::0;:32:::1;::::0;-1:-1:-1;;;13184:32:0;;13210:4:::1;13184:32;::::0;::::1;173:51:1::0;-1:-1:-1;;;;;;;;;;;13141:76:0;-1:-1:-1;;;;;13184:7:0::1;::::0;:17:::1;::::0;146:18:1;;13184:32:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13141:76;;;;;5107:2:1::0;5089:21;;;5146:2;5126:18;;;5119:30;5185:34;5180:2;5165:18;;5158:62;-1:-1:-1;;;5251:3:1;5236:19;;5229:35;5331:4;5316:20;;5309:36;;;;5296:3;5281:19;;4877:474;12440:233:0;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;12500:14:::1;::::0;::::1;;:22;;:14:::0;:22;12492:59:::1;;;::::0;-1:-1:-1;;;12492:59:0;;5558:2:1;12492:59:0::1;::::0;::::1;5540:21:1::0;5597:2;5577:18;;;5570:30;5636:26;5616:18;;;5609:54;5680:18;;12492:59:0::1;5356:348:1::0;12492:59:0::1;12562:14;:21:::0;;-1:-1:-1;;12562:21:0::1;12579:4;12562:21;::::0;;12599:66:::1;::::0;;5921:21:1;;;5978:2;5958:18;;;5951:30;;;;6017:34;6012:2;5997:18;;5990:62;-1:-1:-1;;;6083:3:1;6068:19;;6061:42;12654:10:0::1;6170:4:1::0;6155:20;;6148:62;-1:-1:-1;;;;;;;;;;;12599:66:0;6135:3:1;6120:19;12599:66:0::1;5709:507:1::0;13537:545:0;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13649:22:0;::::1;13640:77;;;::::0;-1:-1:-1;;;13640:77:0;;6423:2:1;13640:77:0::1;::::0;::::1;6405:21:1::0;6462:2;6442:18;;;6435:30;6501:34;6481:18;;;6474:62;-1:-1:-1;;;6552:18:1;;;6545:40;6602:19;;13640:77:0::1;6221:406:1::0;13640:77:0::1;-1:-1:-1::0;;;;;13733:21:0;::::1;13724:81;;;;-1:-1:-1::0;;;13724:81:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13821:26:0;::::1;13812:86;;;;-1:-1:-1::0;;;13812:86:0::1;;;;;;;:::i;:::-;13909:7;:26:::0;;-1:-1:-1;;;;;;13909:26:0;;::::1;-1:-1:-1::0;;;;;13909:26:0;;::::1;::::0;;;::::1;::::0;;;13946:11:::1;:21:::0;;;::::1;::::0;;::::1;;::::0;;13978:7:::1;:30:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;14024:50:::1;::::0;;7260:21:1;;;7317:2;7297:18;;;7290:30;7356:29;7351:2;7336:18;;7329:57;14063:10:0::1;7453:4:1::0;7438:20;;7431:62;14024:50:0;;-1:-1:-1;;;;;;;;;;;14024:50:0;;;;7418:3:1;14024:50:0;;::::1;13537:545:::0;;;:::o;11001:780::-;8590:1;9186:7;;:19;9178:63;;;;-1:-1:-1;;;9178:63:0;;;;;;;:::i;:::-;8590:1;9319:7;:18;11060:7:::1;::::0;11078:11:::1;::::0;11060:30:::1;::::0;-1:-1:-1;;;11060:30:0;;-1:-1:-1;;;;;11078:11:0;;::::1;11060:30;::::0;::::1;173:51:1::0;11093:1:0::1;::::0;11060:7;;;::::1;::::0;:17:::1;::::0;146:18:1;;11060:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;11052:72;;;::::0;-1:-1:-1;;;11052:72:0;;8066:2:1;11052:72:0::1;::::0;::::1;8048:21:1::0;8105:2;8085:18;;;8078:30;8144:27;8124:18;;;8117:55;8189:18;;11052:72:0::1;7864:349:1::0;11052:72:0::1;11152:10;11185:1;11143:20:::0;;;:8:::1;:20;::::0;;;;:39;11135:82:::1;;;::::0;-1:-1:-1;;;11135:82:0;;8420:2:1;11135:82:0::1;::::0;::::1;8402:21:1::0;8459:2;8439:18;;;8432:30;8498:28;8478:18;;;8471:56;8544:18;;11135:82:0::1;8218:350:1::0;11135:82:0::1;11245:10;11236:20;::::0;;;:8:::1;:20;::::0;;;;:28:::1;;::::0;::::1;;:37;11228:69;;;::::0;-1:-1:-1;;;11228:69:0;;8775:2:1;11228:69:0::1;::::0;::::1;8757:21:1::0;8814:2;8794:18;;;8787:30;-1:-1:-1;;;8833:18:1;;;8826:49;8892:18;;11228:69:0::1;8573:343:1::0;11228:69:0::1;11349:10;11318:19;11340:20:::0;;;:8:::1;:20;::::0;;;;:39;:44:::1;::::0;11382:2:::1;11340:44;:::i;:::-;11404:10;11395:20;::::0;;;:8:::1;:20;::::0;;;;11426:4:::1;11395:28:::0;;::::1;:35:::0;;-1:-1:-1;;11395:35:0::1;::::0;;::::1;::::0;;11441:43;;;11495:16:::1;:31:::0;;11318:66;;-1:-1:-1;11318:66:0;;11495:16;;11395:20;11495:31:::1;::::0;11318:66;;11495:31:::1;:::i;:::-;;;;;;;;11561:11;11537:20;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11583:7:0::1;::::0;:41:::1;::::0;-1:-1:-1;;;11583:41:0;;11600:10:::1;11583:41;::::0;::::1;4007:51:1::0;4074:18;;;4067:34;;;-1:-1:-1;;;;;11583:7:0;;::::1;::::0;:16:::1;::::0;3980:18:1;;11583:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11640:69:0::1;::::0;;9701:21:1;;;9758:2;9738:18;;;9731:30;9797:34;9792:2;9777:18;;9770:62;-1:-1:-1;;;9863:3:1;9848:19;;9841:45;11698:10:0::1;9953:4:1::0;9938:20;;9931:62;11640:69:0;;-1:-1:-1;;;;;;;;;;;11640:69:0;;;;9918:3:1;11640:69:0;;::::1;11725:48;::::0;;10216:21:1;;;10273:2;10253:18;;;10246:30;;;;10312:31;10307:2;10292:18;;10285:59;10411:4;10396:20;;10389:36;;;-1:-1:-1;;;;;;;;;;;11725:48:0;10376:3:1;10361:19;11725:48:0::1;;;;;;;;-1:-1:-1::0;8546:1:0;9498:22;;11001:780::o;12012:420::-;8590:1;9186:7;;:19;9178:63;;;;-1:-1:-1;;;9178:63:0;;;;;;;:::i;:::-;8590:1;9319:7;:18;12089:10;12081:62:::1;;;::::0;-1:-1:-1;;;12081:62:0;;10638:2:1;12081:62:0::1;::::0;::::1;10620:21:1::0;10677:2;10657:18;;;10650:30;10716:34;10696:18;;;10689:62;-1:-1:-1;;;10767:18:1;;;10760:37;10814:19;;12081:62:0::1;10436:403:1::0;12081:62:0::1;12154:7;::::0;:55:::1;::::0;-1:-1:-1;;;12154:55:0;;12175:10:::1;12154:55;::::0;::::1;11084:34:1::0;12195:4:0::1;11134:18:1::0;;;11127:43;11186:18;;;11179:34;;;-1:-1:-1;;;;;12154:7:0;;::::1;::::0;:20:::1;::::0;11019:18:1;;12154:55:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12258:6;12239:16;;:25;;;;:::i;:::-;12220:16;:44:::0;12280:79:::1;::::0;;11436:21:1;;;11493:2;11473:18;;;11466:30;11532:34;11527:2;11512:18;;11505:62;11604:26;11598:3;11583:19;;11576:55;12348:10:0::1;11698:4:1::0;11683:20;;11676:62;12280:79:0;;-1:-1:-1;;;;;;;;;;;12280:79:0;;;;11663:3:1;12280:79:0;;::::1;12375:49;::::0;;11961:21:1;;;12018:2;11998:18;;;11991:30;;;;12057:34;12052:2;12037:18;;12030:62;-1:-1:-1;;;12123:3:1;12108:19;;12101:34;12202:4;12187:20;;12180:36;;;-1:-1:-1;;;;;;;;;;;12375:49:0;12167:3:1;12152:19;12375:49:0::1;11749:473:1::0;10439:554:0;8590:1;9186:7;;:19;9178:63;;;;-1:-1:-1;;;9178:63:0;;;;;;;:::i;:::-;8590:1;9319:7;:18;10514:14:::1;::::0;::::1;;10506:48;;;::::0;-1:-1:-1;;;10506:48:0;;12429:2:1;10506:48:0::1;::::0;::::1;12411:21:1::0;12468:2;12448:18;;;12441:30;-1:-1:-1;;;12487:18:1;;;12480:51;12548:18;;10506:48:0::1;12227:345:1::0;10506:48:0::1;10567:7;::::0;:55:::1;::::0;-1:-1:-1;;;10567:55:0;;10588:10:::1;10567:55;::::0;::::1;11084:34:1::0;10608:4:0::1;11134:18:1::0;;;11127:43;11186:18;;;11179:34;;;-1:-1:-1;;;;;10567:7:0;;::::1;::::0;:20:::1;::::0;11019:18:1;;10567:55:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10683:6;10658:22;;:31;;;;:::i;:::-;10633:22;:56:::0;10751:10:::1;10742:20;::::0;;;:8:::1;:20;::::0;;;;:39;:48:::1;::::0;10784:6;;10742:48:::1;:::i;:::-;10709:10;10700:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:90;;;10801:28:::1;::::0;;::::1;:36:::0;;-1:-1:-1;;10801:36:0::1;::::0;;10853:71;;12789:21:1;;;12846:2;12826:18;;;12819:30;12885:34;12880:2;12865:18;;12858:62;-1:-1:-1;;;12951:3:1;12936:19;;12929:47;13028:20;;;13021:62;;;;10853:71:0;-1:-1:-1;;;;;;;;;;;10853:71:0;;;;13008:3:1;10853:71:0;;::::1;10940:45;::::0;;13306:21:1;;;13363:2;13343:18;;;13336:30;;;;13402:33;13397:2;13382:18;;13375:61;13503:4;13488:20;;13481:36;;;-1:-1:-1;;;;;;;;;;;10940:45:0;13468:3:1;13453:19;10940:45:0::1;13094:429:1::0;6151:94:0;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;6216:21:::1;6234:1;6216:9;:21::i;:::-;6151:94::o:0;11789:215::-;-1:-1:-1;;;;;11877:17:0;;11854:7;11877:17;;;:8;:17;;;;;:25;;;;;11874:64;;;-1:-1:-1;11925:1:0;;11789:215;-1:-1:-1;11789:215:0:o;11874:64::-;-1:-1:-1;;;;;11955:17:0;;;;;;:8;:17;;;;;:36;:41;;11994:2;11955:41;:::i;:::-;11948:48;11789:215;-1:-1:-1;;11789:215:0:o;14088:292::-;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;14188:10:::1;14179:20;::::0;;;:8:::1;:20;::::0;;;;:28:::1;::::0;;::::1;::::0;::::1;;:36;;;14171:84;;;::::0;-1:-1:-1;;;14171:84:0;;13730:2:1;14171:84:0::1;::::0;::::1;13712:21:1::0;13769:2;13749:18;;;13742:30;13808:34;13788:18;;;13781:62;-1:-1:-1;;;13859:18:1;;;13852:33;13902:19;;14171:84:0::1;13528:399:1::0;14171:84:0::1;-1:-1:-1::0;;;;;14266:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;;;;:25:::1;;:35:::0;;-1:-1:-1;;14266:35:0::1;::::0;::::1;;;::::0;;14317:55;;14144:21:1;;;14181:18;;;14174:30;;;14240:34;14235:2;14220:18;;14213:62;14361:10:0::1;14327:18:1::0;;;14320:60;-1:-1:-1;;;;;;;;;;;14317:55:0;14307:3:1;14292:19;14317:55:0::1;;;;;;;14088:292:::0;;:::o;6401:229::-;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6504:22:0;::::1;6482:110;;;::::0;-1:-1:-1;;;6482:110:0;;14593:2:1;6482:110:0::1;::::0;::::1;14575:21:1::0;14632:2;14612:18;;;14605:30;14671:34;14651:18;;;14644:62;-1:-1:-1;;;14722:18:1;;;14715:36;14768:19;;6482:110:0::1;14391:402:1::0;6482:110:0::1;6603:19;6613:8;6603:9;:19::i;:::-;6401:229:::0;:::o;13233:298::-;5545:7;5572:6;-1:-1:-1;;;;;5572:6:0;4428:10;5720:23;5712:68;;;;-1:-1:-1;;;5712:68:0;;;;;;;:::i;:::-;13284:7:::1;::::0;13313:32:::1;::::0;-1:-1:-1;;;13313:32:0;;13339:4:::1;13313:32;::::0;::::1;173:51:1::0;-1:-1:-1;;;;;13284:7:0;;::::1;::::0;:16:::1;::::0;13301:10:::1;::::0;13284:7;;13313:17:::1;::::0;146:18:1;;13313:32:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13284:62;::::0;-1:-1:-1;;;;;;13284:62:0::1;::::0;;;;;;-1:-1:-1;;;;;4025:32:1;;;13284:62:0::1;::::0;::::1;4007:51:1::0;4074:18;;;4067:34;3980:18;;13284:62:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13362:69:0::1;::::0;;15010:21:1;;;15067:2;15047:18;;;15040:30;15106:34;15101:2;15086:18;;15079:62;-1:-1:-1;;;15172:3:1;15157:19;;15150:45;13420:10:0::1;15262:4:1::0;15247:20;;15240:62;13362:69:0;;-1:-1:-1;;;;;;;;;;;13362:69:0;;;;15227:3:1;13362:69:0;;::::1;13490:7;::::0;:32:::1;::::0;-1:-1:-1;;;13490:32:0;;13516:4:::1;13490:32;::::0;::::1;173:51:1::0;-1:-1:-1;;;;;;;;;;;13447:76:0;-1:-1:-1;;;;;13490:7:0::1;::::0;:17:::1;::::0;146:18:1;;13490:32:0::1;14:216:1::0;6759:173:0;6815:16;6834:6;;-1:-1:-1;;;;;6851:17:0;;;-1:-1:-1;;;;;;6851:17:0;;;;;;6884:40;;6834:6;;;;;;;6884:40;;6815:16;6884:40;6804:128;6759:173;:::o;235::1:-;303:20;;-1:-1:-1;;;;;352:31:1;;342:42;;332:70;;398:1;395;388:12;332:70;235:173;;;:::o;413:186::-;472:6;525:2;513:9;504:7;500:23;496:32;493:52;;;541:1;538;531:12;493:52;564:29;583:9;564:29;:::i;:::-;554:39;413:186;-1:-1:-1;;;413:186:1:o;867:334::-;944:6;952;960;1013:2;1001:9;992:7;988:23;984:32;981:52;;;1029:1;1026;1019:12;981:52;1052:29;1071:9;1052:29;:::i;:::-;1042:39;;1100:38;1134:2;1123:9;1119:18;1100:38;:::i;:::-;1090:48;;1157:38;1191:2;1180:9;1176:18;1157:38;:::i;:::-;1147:48;;867:334;;;;;:::o;1388:180::-;1447:6;1500:2;1488:9;1479:7;1475:23;1471:32;1468:52;;;1516:1;1513;1506:12;1468:52;-1:-1:-1;1539:23:1;;1388:180;-1:-1:-1;1388:180:1:o;1973:118::-;2059:5;2052:13;2045:21;2038:5;2035:32;2025:60;;2081:1;2078;2071:12;2096:315;2161:6;2169;2222:2;2210:9;2201:7;2197:23;2193:32;2190:52;;;2238:1;2235;2228:12;2190:52;2261:29;2280:9;2261:29;:::i;:::-;2251:39;;2340:2;2329:9;2325:18;2312:32;2353:28;2375:5;2353:28;:::i;:::-;2400:5;2390:15;;;2096:315;;;;;:::o;2416:356::-;2618:2;2600:21;;;2637:18;;;2630:30;2696:34;2691:2;2676:18;;2669:62;2763:2;2748:18;;2416:356::o;3644:184::-;3714:6;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;-1:-1:-1;3806:16:1;;3644:184;-1:-1:-1;3644:184:1:o;4112:245::-;4179:6;4232:2;4220:9;4211:7;4207:23;4203:32;4200:52;;;4248:1;4245;4238:12;4200:52;4280:9;4274:16;4299:28;4321:5;4299:28;:::i;6632:411::-;6834:2;6816:21;;;6873:2;6853:18;;;6846:30;6912:34;6907:2;6892:18;;6885:62;-1:-1:-1;;;6978:2:1;6963:18;;6956:45;7033:3;7018:19;;6632:411::o;7504:355::-;7706:2;7688:21;;;7745:2;7725:18;;;7718:30;7784:33;7779:2;7764:18;;7757:61;7850:2;7835:18;;7504:355::o;8921:127::-;8982:10;8977:3;8973:20;8970:1;8963:31;9013:4;9010:1;9003:15;9037:4;9034:1;9027:15;9053:168;9093:7;9159:1;9155;9151:6;9147:14;9144:1;9141:21;9136:1;9129:9;9122:17;9118:45;9115:71;;;9166:18;;:::i;:::-;-1:-1:-1;9206:9:1;;9053:168::o;9226:125::-;9266:4;9294:1;9291;9288:8;9285:34;;;9299:18;;:::i;:::-;-1:-1:-1;9336:9:1;;9226:125::o;9356:128::-;9396:3;9427:1;9423:6;9420:1;9417:13;9414:39;;;9433:18;;:::i;:::-;-1:-1:-1;9469:9:1;;9356:128::o

Swarm Source

ipfs://df4903c1aadfbde3d99c6e1c839af70d36d479088f53791c38bf341a4f536c97

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.