ETH Price: $3,414.77 (+2.98%)

Contract

0x24dDFf6D8B8a42d835af3b440De91f3386554Aa4
 
Transaction Hash
Method
Block
From
To
Transfer212499322024-11-23 10:46:1130 days ago1732358771IN
IUNGO Token
0 ETH0.0005469611.5039312
Transfer210154512024-10-21 17:28:2363 days ago1729531703IN
IUNGO Token
0 ETH0.0005365911.28590233
Transfer203859142024-07-25 20:20:59151 days ago1721938859IN
IUNGO Token
0 ETH0.000264595.5931708
Transfer198060852024-05-05 19:49:47232 days ago1714938587IN
IUNGO Token
0 ETH0.0017049756
Transfer197989332024-05-04 19:49:23233 days ago1714852163IN
IUNGO Token
0 ETH0.000272685.20935651
Approve184163852023-10-23 23:55:47427 days ago1698105347IN
IUNGO Token
0 ETH0.0014425631.11389106
Transfer183696512023-10-17 10:58:59433 days ago1697540339IN
IUNGO Token
0 ETH0.0017354257
Approve182460102023-09-30 4:02:23451 days ago1696046543IN
IUNGO Token
0 ETH0.000175116.71756623
Approve176747982023-07-12 3:23:35531 days ago1689132215IN
IUNGO Token
0 ETH0.0004958418.73675254
Approve176747982023-07-12 3:23:35531 days ago1689132215IN
IUNGO Token
0 ETH0.0004958418.73675254
Approve176747982023-07-12 3:23:35531 days ago1689132215IN
IUNGO Token
0 ETH0.0008687118.73675254
Transfer169248972023-03-28 9:18:35636 days ago1679995115IN
IUNGO Token
0 ETH0.0010822722.76276063
Transfer167180552023-02-27 7:29:47665 days ago1677482987IN
IUNGO Token
0 ETH0.0007399515.56683029
Transfer163239012023-01-03 4:34:47721 days ago1672720487IN
IUNGO Token
0 ETH0.0007167515.07503856
Transfer163238272023-01-03 4:19:59721 days ago1672719599IN
IUNGO Token
0 ETH0.0047111490
Transfer159555522022-11-12 17:53:23772 days ago1668275603IN
IUNGO Token
0 ETH0.000639813.46
Transfer153264002022-08-12 10:06:53864 days ago1660298813IN
IUNGO Token
0 ETH0.0004918810.35059929
Approve152406572022-07-30 0:39:42878 days ago1659141582IN
IUNGO Token
0 ETH0.0004798110.34896607
Transfer151725882022-07-19 10:41:57888 days ago1658227317IN
IUNGO Token
0 ETH0.0020991169
Transfer151661162022-07-18 10:40:58889 days ago1658140858IN
IUNGO Token
0 ETH0.0008561718.01649099
Approve151534432022-07-16 11:23:34891 days ago1657970614IN
IUNGO Token
0 ETH0.000362517.81898532
Transfer142500162022-02-21 14:39:371036 days ago1645454377IN
IUNGO Token
0 ETH0.00438249144
Transfer142434862022-02-20 14:38:371037 days ago1645367917IN
IUNGO Token
0 ETH0.0032975969.37335085
Transfer139312812022-01-03 7:52:131085 days ago1641196333IN
IUNGO Token
0 ETH0.00349026118.16194192
Approve139037032021-12-30 1:15:441090 days ago1640826944IN
IUNGO Token
0 ETH0.00470935101.5736336
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
50084152018-01-31 23:58:382518 days ago1517443118
IUNGO Token
 Contract Creation0 ETH
50084152018-01-31 23:58:382518 days ago1517443118
IUNGO Token
 Contract Creation0 ETH
50084152018-01-31 23:58:382518 days ago1517443118
IUNGO Token
 Contract Creation0 ETH
50084122018-01-31 23:57:572518 days ago1517443077
IUNGO Token
0.4 ETH
50084082018-01-31 23:57:172518 days ago1517443037
IUNGO Token
0.011 ETH
50084022018-01-31 23:56:262518 days ago1517442986
IUNGO Token
0.15 ETH
50083892018-01-31 23:53:472518 days ago1517442827
IUNGO Token
0.1 ETH
50083872018-01-31 23:53:082518 days ago1517442788
IUNGO Token
0.27084017 ETH
50083852018-01-31 23:52:462518 days ago1517442766
IUNGO Token
1.3 ETH
50083832018-01-31 23:52:072518 days ago1517442727
IUNGO Token
1 ETH
50083812018-01-31 23:51:122518 days ago1517442672
IUNGO Token
2.09 ETH
50083812018-01-31 23:51:122518 days ago1517442672
IUNGO Token
25 ETH
50083722018-01-31 23:49:322518 days ago1517442572
IUNGO Token
0.054 ETH
50083642018-01-31 23:47:402518 days ago1517442460
IUNGO Token
0.04362701 ETH
50083622018-01-31 23:46:412518 days ago1517442401
IUNGO Token
1.5 ETH
50083602018-01-31 23:46:142518 days ago1517442374
IUNGO Token
4.99731466 ETH
50083602018-01-31 23:46:142518 days ago1517442374
IUNGO Token
0.2 ETH
50083602018-01-31 23:46:142518 days ago1517442374
IUNGO Token
0.157 ETH
50083482018-01-31 23:43:352518 days ago1517442215
IUNGO Token
0.5 ETH
50083432018-01-31 23:42:472518 days ago1517442167
IUNGO Token
1.04071987 ETH
50083232018-01-31 23:39:182518 days ago1517441958
IUNGO Token
0.45290623 ETH
50083232018-01-31 23:39:182518 days ago1517441958
IUNGO Token
0.5 ETH
50083232018-01-31 23:39:182518 days ago1517441958
IUNGO Token
0.275 ETH
50083162018-01-31 23:38:092518 days ago1517441889
IUNGO Token
0.05 ETH
50083152018-01-31 23:37:492518 days ago1517441869
IUNGO Token
0.08827861 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
IungoToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-12-16
*/

pragma solidity 0.4.18;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a * b;
        require(a == 0 || c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);
        return c;
    }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
    uint256 public totalSupply;
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) public balances;

    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);

        // SafeMath.sub will throw if there is not enough balance.
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

/**
 * @title TokenTimelock
 * @dev TokenTimelock is a token holder contract that will allow a
 * beneficiary to extract the tokens after a given release time
 */
contract TokenTimelock {
  using SafeERC20 for ERC20Basic;

  // ERC20 basic token contract being held
  ERC20Basic public token;

  // beneficiary of tokens after they are released
  address public beneficiary;

  // timestamp when token release is enabled
  uint64 public releaseTime;

  function TokenTimelock(ERC20Basic _token, address _beneficiary, uint64 _releaseTime) public {
    require(_releaseTime > uint64(block.timestamp));
    token = _token;
    beneficiary = _beneficiary;
    releaseTime = _releaseTime;
  }

  /**
   * @notice Transfers tokens held by timelock to beneficiary.
   */
  function release() public {
    require(uint64(block.timestamp) >= releaseTime);

    uint256 amount = token.balanceOf(this);
    require(amount > 0);

    token.safeTransfer(beneficiary, amount);
  }
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

    mapping (address => mapping (address => uint256)) internal allowed;


    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        Transfer(_from, _to, _value);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     *
     * 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
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

    /**
     * approve should be called when allowed[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     */
    function increaseApproval (address _spender, uint _addedValue) public returns (bool success) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

}

contract Owned {
    address public owner;

    function Owned() public {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
}

contract IungoToken is StandardToken, Owned {
    string public constant name = "IUNGO token";
    string public constant symbol = "ING";
    uint8 public constant decimals = 18;

    /// Maximum tokens to be allocated (100 million)
    uint256 public constant HARD_CAP = 100000000 * 10**uint256(decimals);

    /// Maximum tokens to be allocated on the sale (64 million)
    uint256 public constant TOKENS_SALE_HARD_CAP = 64000000 * 10**uint256(decimals);

    /// The owner of this address is the Iungo Founders fund
    address public foundersFundAddress;

    /// The owner of this address is the Iungo Team Foundation fund
    address public teamFundAddress;

    /// The owner of this address is the Reserve fund
    address public reserveFundAddress;

    /// This address will be sent all the received ether
    address public fundsTreasury;

    /// This is the address of the timelock contract for 
    /// the first 1/3 of the Founders fund tokens
    address public foundersFundTimelock1Address;

    /// This is the address of the timelock contract for 
    /// the second 1/3 of the Founders fund tokens
    address public foundersFundTimelock2Address;

    /// This is the address of the timelock contract for 
    /// the third 1/3 of the Founders fund tokens
    address public foundersFundTimelock3Address;

    /// seconds since 01.01.1970 to 06.12.2017 12:00:00 UTC
    /// tier 1 start time
    uint64 private constant date06Dec2017 = 1512561600;

    /// seconds since 01.01.1970 to 21.12.2017 14:00:00 UTC
    /// tier 1 end time; tier 2 start time
    uint64 private constant date21Dec2017 = 1513864800;

    /// seconds since 01.01.1970 to 12.01.2018 14:00:00 UTC
    /// tier 2 end time; tier 3 start time
    uint64 private constant date12Jan2018 = 1515765600;

    /// seconds since 01.01.1970 to 21.01.2018 14:00:00 UTC
    /// tier 3 end time; tier 4 start time
    uint64 private constant date21Jan2018 = 1516543200;

    /// seconds since 01.01.1970 to 31.01.2018 23:59:59 UTC
    /// tier 4 end time; closing token sale; trading open
    uint64 private constant date31Jan2018 = 1517443199;

    /// Base exchange rate is set to 1 ETH = 1000 ING
    uint256 public constant BASE_RATE = 1000;

    /// no tokens can be ever issued when this is set to "true"
    bool public tokenSaleClosed = false;

    /// Issue event index starting from 0.
    uint256 public issueIndex = 0;

    /// Emitted for each sucuessful token purchase.
    event Issue(uint _issueIndex, address addr, uint tokenAmount);

    /// Require that the buyers can still purchase
    modifier inProgress {
        require(totalSupply < TOKENS_SALE_HARD_CAP
                && !tokenSaleClosed
                && !saleDue());
        _;
    }

    /// Allow the closing to happen only once 
    modifier beforeEnd {
        require(!tokenSaleClosed);
        _;
    }

    /// Require that the end of the sale has passed (time is 01 Feb 2018 or later)
    modifier tradingOpen {
        require(saleDue());
        _;
    }

    /**
     * CONSTRUCTOR
     *
     * @dev Initialize the IungoToken Token
     * @param _foundersFundAddress The owner of this address is the Iungo Founders fund
     * @param _teamFundAddress The owner of this address is the Iungo Team Foundation fund
     * @param _reserveFundAddress The owner of this address is the Reserve fund
     */
    function IungoToken (address _foundersFundAddress, address _teamFundAddress,
                         address _reserveFundAddress, address _fundsTreasury) public {
        foundersFundAddress = 0x9CB0016511Fb93EAc7bC585A2bc2f0C34DEcEa15;
        teamFundAddress = 0xDda7003998244f6161A5BBAf0F4ed5a40E908b51;
        reserveFundAddress = 0x9186b48Db83E63adEDaB43C19345f39c83928E3f;
        fundsTreasury = 0x31a633c4eE2C317DE2C65beb00593EAdD9f172d6;
    }

    /// @dev Returns the current price.
    function price() public view returns (uint256 tokens) {
        return computeTokenAmount(1 ether);
    }

    /// @dev This default function allows token to be purchased by directly
    /// sending ether to this smart contract.
    function () public payable {
        purchaseTokens(msg.sender);
    }

    /// @dev Issue token based on Ether received.
    /// @param _beneficiary Address that newly issued token will be sent to.
    function purchaseTokens(address _beneficiary) public payable inProgress {
        // only accept a minimum amount of ETH?
        require(msg.value >= 0.01 ether);

        uint256 tokens = computeTokenAmount(msg.value);
        doIssueTokens(_beneficiary, tokens);

        /// forward the raised funds to the fund address
        fundsTreasury.transfer(msg.value);
    }

    /// @dev Batch issue tokens on the presale
    /// @param _addresses addresses that the presale tokens will be sent to.
    /// @param _addresses the amounts of tokens, with decimals expanded (full).
    function issueTokensMulti(address[] _addresses, uint256[] _tokens) public onlyOwner inProgress {
        require(_addresses.length == _tokens.length);
        require(_addresses.length <= 100);

        for (uint256 i = 0; i < _tokens.length; i = i.add(1)) {
            doIssueTokens(_addresses[i], _tokens[i]);
        }
    }

    /// @dev Issue tokens for a single buyer on the presale
    /// @param _beneficiary addresses that the presale tokens will be sent to.
    /// @param _tokensAmount the amount of tokens, with decimals expanded (full).
    function issueTokens(address _beneficiary, uint256 _tokensAmount) public onlyOwner inProgress {
        doIssueTokens(_beneficiary, _tokensAmount);
    }

    /// @dev issue tokens for a single buyer
    /// @param _beneficiary addresses that the tokens will be sent to.
    /// @param _tokensAmount the amount of tokens, with decimals expanded (full).
    function doIssueTokens(address _beneficiary, uint256 _tokensAmount) internal {
        require(_beneficiary != address(0));

        // compute without actually increasing it
        uint256 increasedTotalSupply = totalSupply.add(_tokensAmount);
        // roll back if hard cap reached
        require(increasedTotalSupply <= TOKENS_SALE_HARD_CAP);

        // increase token total supply
        totalSupply = increasedTotalSupply;
        // update the buyer's balance to number of tokens sent
        balances[_beneficiary] = balances[_beneficiary].add(_tokensAmount);
        // event is fired when tokens issued
        Issue(
            issueIndex++,
            _beneficiary,
            _tokensAmount
        );
    }

    /// @dev Compute the amount of ING token that can be purchased.
    /// @param ethAmount Amount of Ether to purchase ING.
    /// @return Amount of ING token to purchase
    function computeTokenAmount(uint256 ethAmount) internal view returns (uint256 tokens) {
        /// the percentage value (0-100) of the discount for each tier
        uint64 discountPercentage = currentTierDiscountPercentage();

        uint256 tokenBase = ethAmount.mul(BASE_RATE);
        uint256 tokenBonus = tokenBase.mul(discountPercentage).div(100);

        tokens = tokenBase.add(tokenBonus);
    }

    /// @dev Determine the current sale tier.
    /// @return the index of the current sale tier.
    function currentTierDiscountPercentage() internal view returns (uint64) {
        uint64 _now = uint64(block.timestamp);
        require(_now <= date31Jan2018);

        if(_now > date21Jan2018) return 0;
        if(_now > date12Jan2018) return 15;
        if(_now > date21Dec2017) return 35;
        return 50;
    }

    // function getnow() public view returns (uint64) {
    //     return uint64(block.timestamp);
    // }
    // 
    // function setnow(uint64 time) public {
    //     _now = time;
    // }

    /// @dev Finalize the sale and distribute the reserve, team tokens, lock the founders tokens
    function close() public onlyOwner beforeEnd {
        uint64 _now = uint64(block.timestamp);

        /// Final (sold tokens) / (team + reserve + founders funds tokens) = 64 / 36 proportion = 0.5625
        /// (sold tokens) + (team + reserve + founders funds tokens) = 64% + 36% = 100%
        /// Therefore, (team + reserve + founders funds tokens) = 56.25% of the sold tokens = 36% of the total tokens
        uint256 totalTokens = totalSupply.add(totalSupply.mul(5625).div(10000));

        /// Tokens to be allocated to the Reserve fund (12% of total ING)
        uint256 reserveFundTokens = totalTokens.mul(12).div(100);
        balances[reserveFundAddress] = balances[reserveFundAddress].add(reserveFundTokens);
        totalSupply = totalSupply.add(reserveFundTokens);
        /// fire event when tokens issued
        Issue(
            issueIndex++,
            reserveFundAddress,
            reserveFundTokens
        );

        /// Tokens to be allocated to the Team fund (12% of total ING)
        uint256 teamFundTokens = totalTokens.mul(12).div(100);
        balances[teamFundAddress] = balances[teamFundAddress].add(teamFundTokens);
        totalSupply = totalSupply.add(teamFundTokens);
        /// fire event when tokens issued
        Issue(
            issueIndex++,
            teamFundAddress,
            teamFundTokens
        );

        /// Tokens to be allocated to the locked Founders fund
        /// 12% (3 x 4%) of total ING allocated to the Founders fund locked as follows:
        /// first 4% locked for 6 months (183 days)
        TokenTimelock lock1_6months = new TokenTimelock(this, foundersFundAddress, _now + 183*24*60*60);
        foundersFundTimelock1Address = address(lock1_6months);
        uint256 foundersFund1Tokens = totalTokens.mul(4).div(100);
        /// update the contract balance to number of tokens issued
        balances[foundersFundTimelock1Address] = balances[foundersFundTimelock1Address].add(foundersFund1Tokens);
        /// increase total supply respective to the tokens issued
        totalSupply = totalSupply.add(foundersFund1Tokens);
        /// fire event when tokens issued
        Issue(
            issueIndex++,
            foundersFundTimelock1Address,
            foundersFund1Tokens
        );

        /// second 4% locked for 12 months (365 days)
        TokenTimelock lock2_12months = new TokenTimelock(this, foundersFundAddress, _now + 365*24*60*60);
        foundersFundTimelock2Address = address(lock2_12months);
        uint256 foundersFund2Tokens = totalTokens.mul(4).div(100);
        balances[foundersFundTimelock2Address] = balances[foundersFundTimelock2Address].add(foundersFund2Tokens);
        /// increase total supply respective to the tokens issued
        totalSupply = totalSupply.add(foundersFund2Tokens);
        /// fire event when tokens issued
        Issue(
            issueIndex++,
            foundersFundTimelock2Address,
            foundersFund2Tokens
        );

        /// third 4% locked for 18 months (548 days)
        TokenTimelock lock3_18months = new TokenTimelock(this, foundersFundAddress, _now + 548*24*60*60);
        foundersFundTimelock3Address = address(lock3_18months);
        uint256 foundersFund3Tokens = totalTokens.mul(4).div(100);
        balances[foundersFundTimelock3Address] = balances[foundersFundTimelock3Address].add(foundersFund3Tokens);
        /// increase total supply respective to the tokens issued
        totalSupply = totalSupply.add(foundersFund3Tokens);
        /// fire event when tokens issued
        Issue(
            issueIndex++,
            foundersFundTimelock3Address,
            foundersFund3Tokens
        );

        /// burn the unallocated tokens - no more tokens can be issued after this line
        tokenSaleClosed = true;

        /// forward the raised funds to the fund address
        fundsTreasury.transfer(this.balance);
    }

    /// @return if the token sale is finished
    function saleDue() public view returns (bool) {
        return date31Jan2018 < uint64(block.timestamp);
    }

    /// Transfer limited by the tradingOpen modifier (time is 01 Feb 2018 or later)
    function transferFrom(address _from, address _to, uint256 _value) public tradingOpen returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    /// Transfer limited by the tradingOpen modifier (time is 01 Feb 2018 or later)
    function transfer(address _to, uint256 _value) public tradingOpen returns (bool) {
        return super.transfer(_to, _value);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundsTreasury","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BASE_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foundersFundTimelock1Address","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_tokensAmount","type":"uint256"}],"name":"issueTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFundAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundersFundTimelock3Address","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"issueIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamFundAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_tokens","type":"uint256[]"}],"name":"issueTokensMulti","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"tokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"saleDue","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundersFundAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"purchaseTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"foundersFundTimelock2Address","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSaleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_SALE_HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_foundersFundAddress","type":"address"},{"name":"_teamFundAddress","type":"address"},{"name":"_reserveFundAddress","type":"address"},{"name":"_fundsTreasury","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_issueIndex","type":"uint256"},{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"Issue","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60606040526000600a60146101000a81548160ff0219169083151502179055506000600b55341561002f57600080fd5b6040516080806134cd8339810160405280805190602001909190805190602001909190805190602001909190805190602001909190505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739cb0016511fb93eac7bc585a2bc2f0c34decea15600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dda7003998244f6161a5bbaf0f4ed5a40e908b51600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739186b48db83e63adedab43c19345f39c83928e3f600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507331a633c4ee2c317de2c65beb00593eadd9f172d6600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506132bf8061020e6000396000f30060606040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610196578063095ea7b31461022457806318160ddd1461027e57806323b872dd146102a757806327e235e314610320578063313ce5671461036d57806339f5b6b61461039c5780633a03171c146103f157806341910f901461041a57806343d726d6146104435780634446c98c14610458578063475a9fa9146104ad5780634b58d0bb146104ef5780635e8a60441461054457806366188463146105995780636a28f828146105f357806370a082311461061c5780637fdb6720146106695780638da5cb5b146106be57806392e8438c1461071357806395d89b41146107ad578063a035b1fe1461083b578063a9059cbb14610864578063bea4ae88146108be578063ca185022146108eb578063ce55703114610940578063d13bf7691461096e578063d73dd623146109c3578063dd62ed3e14610a1d578063e55a07c214610a89578063f946372c14610ab6575b61019433610adf565b005b34156101a157600080fd5b6101a9610bb9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e95780820151818401526020810190506101ce565b50505050905090810190601f1680156102165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022f57600080fd5b610264600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bf2565b604051808215151515815260200191505060405180910390f35b341561028957600080fd5b610291610ce4565b6040518082815260200191505060405180910390f35b34156102b257600080fd5b610306600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cea565b604051808215151515815260200191505060405180910390f35b341561032b57600080fd5b610357600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d13565b6040518082815260200191505060405180910390f35b341561037857600080fd5b610380610d2b565b604051808260ff1660ff16815260200191505060405180910390f35b34156103a757600080fd5b6103af610d30565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103fc57600080fd5b610404610d56565b6040518082815260200191505060405180910390f35b341561042557600080fd5b61042d610d67565b6040518082815260200191505060405180910390f35b341561044e57600080fd5b610456610d6d565b005b341561046357600080fd5b61046b611ad1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104b857600080fd5b6104ed600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611af7565b005b34156104fa57600080fd5b610502611ba8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054f57600080fd5b610557611bce565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a457600080fd5b6105d9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611bf4565b604051808215151515815260200191505060405180910390f35b34156105fe57600080fd5b610606611e85565b6040518082815260200191505060405180910390f35b341561062757600080fd5b610653600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e8b565b6040518082815260200191505060405180910390f35b341561067457600080fd5b61067c611ed4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106c957600080fd5b6106d1611efa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561071e57600080fd5b6107ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611f20565b005b34156107b857600080fd5b6107c061204c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108005780820151818401526020810190506107e5565b50505050905090810190601f16801561082d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084657600080fd5b61084e612085565b6040518082815260200191505060405180910390f35b341561086f57600080fd5b6108a4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061209d565b604051808215151515815260200191505060405180910390f35b34156108c957600080fd5b6108d16120c4565b604051808215151515815260200191505060405180910390f35b34156108f657600080fd5b6108fe6120e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61096c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610adf565b005b341561097957600080fd5b61098161210c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109ce57600080fd5b610a03600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612132565b604051808215151515815260200191505060405180910390f35b3415610a2857600080fd5b610a73600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061232e565b6040518082815260200191505060405180910390f35b3415610a9457600080fd5b610a9c6123b5565b604051808215151515815260200191505060405180910390f35b3415610ac157600080fd5b610ac96123c8565b6040518082815260200191505060405180910390f35b6000601260ff16600a0a6303d0900002600054108015610b0c5750600a60149054906101000a900460ff16155b8015610b1d5750610b1b6120c4565b155b1515610b2857600080fd5b662386f26fc100003410151515610b3e57600080fd5b610b47346123d9565b9050610b53828261244f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515610bb557600080fd5b5050565b6040805190810160405280600b81526020017f49554e474f20746f6b656e00000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b6000610cf46120c4565b1515610cff57600080fd5b610d0a8484846125e3565b90509392505050565b60016020528060005260406000206000915090505481565b601281565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260ff16600a0a6305f5e1000281565b6103e881565b600080600080600080600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd857600080fd5b600a60149054906101000a900460ff16151515610df457600080fd5b429950610e36610e25612710610e176115f96000546129a290919063ffffffff16565b6129d890919063ffffffff16565b6000546129f390919063ffffffff16565b9850610e5f6064610e51600c8c6129a290919063ffffffff16565b6129d890919063ffffffff16565b9750610ed58860016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f4f886000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a16110216064611013600c8c6129a290919063ffffffff16565b6129d890919063ffffffff16565b96506110978760016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611111876000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a130600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662f142808c016111ee612d05565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050604051809103906000f080151561128857600080fd5b955085600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f260646112e460048c6129a290919063ffffffff16565b6129d890919063ffffffff16565b94506113688560016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113e2856000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a130600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166301e133808c016114c0612d05565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050604051809103906000f080151561155a57600080fd5b935083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115c460646115b660048c6129a290919063ffffffff16565b6129d890919063ffffffff16565b925061163a8360016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116b4836000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a130600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166302d276008c01611792612d05565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050604051809103906000f080151561182c57600080fd5b915081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611896606461188860048c6129a290919063ffffffff16565b6129d890919063ffffffff16565b905061190c8160016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611986816000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a16001600a60146101000a81548160ff021916908315150217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611ac557600080fd5b50505050505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5357600080fd5b601260ff16600a0a6303d0900002600054108015611b7e5750600a60149054906101000a900460ff16155b8015611b8f5750611b8d6120c4565b155b1515611b9a57600080fd5b611ba4828261244f565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611d05576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d99565b611d188382612a1490919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600b5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7e57600080fd5b601260ff16600a0a6303d0900002600054108015611fa95750600a60149054906101000a900460ff16155b8015611fba5750611fb86120c4565b155b1515611fc557600080fd5b81518351141515611fd557600080fd5b6064835111151515611fe657600080fd5b600090505b81518110156120475761202c838281518110151561200557fe5b90602001906020020151838381518110151561201d57fe5b9060200190602002015161244f565b6120406001826129f390919063ffffffff16565b9050611feb565b505050565b6040805190810160405280600381526020017f494e47000000000000000000000000000000000000000000000000000000000081525081565b6000612098670de0b6b3a76400006123d9565b905090565b60006120a76120c4565b15156120b257600080fd5b6120bc8383612a30565b905092915050565b60004267ffffffffffffffff16635a72587f67ffffffffffffffff1610905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006121c382600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60149054906101000a900460ff1681565b601260ff16600a0a6303d090000281565b6000806000806123e7612c54565b92506123fe6103e8866129a290919063ffffffff16565b915061243060646124228567ffffffffffffffff16856129a290919063ffffffff16565b6129d890919063ffffffff16565b905061244581836129f390919063ffffffff16565b9350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561248c57600080fd5b6124a1826000546129f390919063ffffffff16565b9050601260ff16600a0a6303d090000281111515156124bf57600080fd5b8060008190555061251882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b6000815480929190600101919050558484604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561262057600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561266e57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156126f957600080fd5b61274b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128b282600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080828402905060008414806129c357508284828115156129c057fe5b04145b15156129ce57600080fd5b8091505092915050565b60008082848115156129e657fe5b0490508091505092915050565b6000808284019050838110151515612a0a57600080fd5b8091505092915050565b6000828211151515612a2557600080fd5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a6d57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612abb57600080fd5b612b0d82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1490919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba282600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080429050635a72587f67ffffffffffffffff168167ffffffffffffffff1611151515612c8157600080fd5b635a649ce067ffffffffffffffff168167ffffffffffffffff161115612caa5760009150612d01565b635a58bf6067ffffffffffffffff168167ffffffffffffffff161115612cd357600f9150612d01565b635a3bbe6067ffffffffffffffff168167ffffffffffffffff161115612cfc5760239150612d01565b603291505b5090565b60405161057e80612d168339019056006060604052341561000f57600080fd5b60405160608061057e833981016040528080519060200190919080519060200190919080519060200190919050504267ffffffffffffffff168167ffffffffffffffff1611151561005f57600080fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050506104638061011b6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806338af3eed1461006757806386d1a69f146100bc578063b91d4001146100d1578063fc0c546a1461010e575b600080fd5b341561007257600080fd5b61007a610163565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100c757600080fd5b6100cf610189565b005b34156100dc57600080fd5b6100e4610325565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b341561011957600080fd5b61012161033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160149054906101000a900467ffffffffffffffff1667ffffffffffffffff164267ffffffffffffffff16101515156101c457600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561028857600080fd5b6102c65a03f1151561029957600080fd5b5050506040518051905090506000811115156102b457600080fd5b610322600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166103649092919063ffffffff16565b50565b600160149054906101000a900467ffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561040f57600080fd5b6102c65a03f1151561042057600080fd5b50505060405180519050151561043257fe5b5050505600a165627a7a7230582037e046f4a517539791172a9c3cfb168d1293b8ece20fdc956cfee0a3a318496f0029a165627a7a7230582000d5d743b32024710ae7578eb25b92b1c95a6ebc2c640dc5ed001b989b5838780029

Deployed Bytecode

0x60606040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610196578063095ea7b31461022457806318160ddd1461027e57806323b872dd146102a757806327e235e314610320578063313ce5671461036d57806339f5b6b61461039c5780633a03171c146103f157806341910f901461041a57806343d726d6146104435780634446c98c14610458578063475a9fa9146104ad5780634b58d0bb146104ef5780635e8a60441461054457806366188463146105995780636a28f828146105f357806370a082311461061c5780637fdb6720146106695780638da5cb5b146106be57806392e8438c1461071357806395d89b41146107ad578063a035b1fe1461083b578063a9059cbb14610864578063bea4ae88146108be578063ca185022146108eb578063ce55703114610940578063d13bf7691461096e578063d73dd623146109c3578063dd62ed3e14610a1d578063e55a07c214610a89578063f946372c14610ab6575b61019433610adf565b005b34156101a157600080fd5b6101a9610bb9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e95780820151818401526020810190506101ce565b50505050905090810190601f1680156102165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022f57600080fd5b610264600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bf2565b604051808215151515815260200191505060405180910390f35b341561028957600080fd5b610291610ce4565b6040518082815260200191505060405180910390f35b34156102b257600080fd5b610306600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cea565b604051808215151515815260200191505060405180910390f35b341561032b57600080fd5b610357600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d13565b6040518082815260200191505060405180910390f35b341561037857600080fd5b610380610d2b565b604051808260ff1660ff16815260200191505060405180910390f35b34156103a757600080fd5b6103af610d30565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103fc57600080fd5b610404610d56565b6040518082815260200191505060405180910390f35b341561042557600080fd5b61042d610d67565b6040518082815260200191505060405180910390f35b341561044e57600080fd5b610456610d6d565b005b341561046357600080fd5b61046b611ad1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104b857600080fd5b6104ed600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611af7565b005b34156104fa57600080fd5b610502611ba8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054f57600080fd5b610557611bce565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a457600080fd5b6105d9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611bf4565b604051808215151515815260200191505060405180910390f35b34156105fe57600080fd5b610606611e85565b6040518082815260200191505060405180910390f35b341561062757600080fd5b610653600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e8b565b6040518082815260200191505060405180910390f35b341561067457600080fd5b61067c611ed4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106c957600080fd5b6106d1611efa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561071e57600080fd5b6107ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611f20565b005b34156107b857600080fd5b6107c061204c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108005780820151818401526020810190506107e5565b50505050905090810190601f16801561082d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084657600080fd5b61084e612085565b6040518082815260200191505060405180910390f35b341561086f57600080fd5b6108a4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061209d565b604051808215151515815260200191505060405180910390f35b34156108c957600080fd5b6108d16120c4565b604051808215151515815260200191505060405180910390f35b34156108f657600080fd5b6108fe6120e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61096c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610adf565b005b341561097957600080fd5b61098161210c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109ce57600080fd5b610a03600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612132565b604051808215151515815260200191505060405180910390f35b3415610a2857600080fd5b610a73600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061232e565b6040518082815260200191505060405180910390f35b3415610a9457600080fd5b610a9c6123b5565b604051808215151515815260200191505060405180910390f35b3415610ac157600080fd5b610ac96123c8565b6040518082815260200191505060405180910390f35b6000601260ff16600a0a6303d0900002600054108015610b0c5750600a60149054906101000a900460ff16155b8015610b1d5750610b1b6120c4565b155b1515610b2857600080fd5b662386f26fc100003410151515610b3e57600080fd5b610b47346123d9565b9050610b53828261244f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515610bb557600080fd5b5050565b6040805190810160405280600b81526020017f49554e474f20746f6b656e00000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b6000610cf46120c4565b1515610cff57600080fd5b610d0a8484846125e3565b90509392505050565b60016020528060005260406000206000915090505481565b601281565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260ff16600a0a6305f5e1000281565b6103e881565b600080600080600080600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd857600080fd5b600a60149054906101000a900460ff16151515610df457600080fd5b429950610e36610e25612710610e176115f96000546129a290919063ffffffff16565b6129d890919063ffffffff16565b6000546129f390919063ffffffff16565b9850610e5f6064610e51600c8c6129a290919063ffffffff16565b6129d890919063ffffffff16565b9750610ed58860016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f4f886000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a16110216064611013600c8c6129a290919063ffffffff16565b6129d890919063ffffffff16565b96506110978760016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611111876000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a130600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662f142808c016111ee612d05565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050604051809103906000f080151561128857600080fd5b955085600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f260646112e460048c6129a290919063ffffffff16565b6129d890919063ffffffff16565b94506113688560016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113e2856000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a130600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166301e133808c016114c0612d05565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050604051809103906000f080151561155a57600080fd5b935083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115c460646115b660048c6129a290919063ffffffff16565b6129d890919063ffffffff16565b925061163a8360016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116b4836000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a130600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166302d276008c01611792612d05565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050604051809103906000f080151561182c57600080fd5b915081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611896606461188860048c6129a290919063ffffffff16565b6129d890919063ffffffff16565b905061190c8160016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611986816000546129f390919063ffffffff16565b6000819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b600081548092919060010191905055600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a16001600a60146101000a81548160ff021916908315150217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611ac557600080fd5b50505050505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5357600080fd5b601260ff16600a0a6303d0900002600054108015611b7e5750600a60149054906101000a900460ff16155b8015611b8f5750611b8d6120c4565b155b1515611b9a57600080fd5b611ba4828261244f565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611d05576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d99565b611d188382612a1490919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600b5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7e57600080fd5b601260ff16600a0a6303d0900002600054108015611fa95750600a60149054906101000a900460ff16155b8015611fba5750611fb86120c4565b155b1515611fc557600080fd5b81518351141515611fd557600080fd5b6064835111151515611fe657600080fd5b600090505b81518110156120475761202c838281518110151561200557fe5b90602001906020020151838381518110151561201d57fe5b9060200190602002015161244f565b6120406001826129f390919063ffffffff16565b9050611feb565b505050565b6040805190810160405280600381526020017f494e47000000000000000000000000000000000000000000000000000000000081525081565b6000612098670de0b6b3a76400006123d9565b905090565b60006120a76120c4565b15156120b257600080fd5b6120bc8383612a30565b905092915050565b60004267ffffffffffffffff16635a72587f67ffffffffffffffff1610905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006121c382600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60149054906101000a900460ff1681565b601260ff16600a0a6303d090000281565b6000806000806123e7612c54565b92506123fe6103e8866129a290919063ffffffff16565b915061243060646124228567ffffffffffffffff16856129a290919063ffffffff16565b6129d890919063ffffffff16565b905061244581836129f390919063ffffffff16565b9350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561248c57600080fd5b6124a1826000546129f390919063ffffffff16565b9050601260ff16600a0a6303d090000281111515156124bf57600080fd5b8060008190555061251882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f3e1d8156c61243a0352920516bb9c7d0517fca750d6d6afebc0bed0d457a609b600b6000815480929190600101919050558484604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561262057600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561266e57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156126f957600080fd5b61274b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128b282600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080828402905060008414806129c357508284828115156129c057fe5b04145b15156129ce57600080fd5b8091505092915050565b60008082848115156129e657fe5b0490508091505092915050565b6000808284019050838110151515612a0a57600080fd5b8091505092915050565b6000828211151515612a2557600080fd5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a6d57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612abb57600080fd5b612b0d82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1490919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba282600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080429050635a72587f67ffffffffffffffff168167ffffffffffffffff1611151515612c8157600080fd5b635a649ce067ffffffffffffffff168167ffffffffffffffff161115612caa5760009150612d01565b635a58bf6067ffffffffffffffff168167ffffffffffffffff161115612cd357600f9150612d01565b635a3bbe6067ffffffffffffffff168167ffffffffffffffff161115612cfc5760239150612d01565b603291505b5090565b60405161057e80612d168339019056006060604052341561000f57600080fd5b60405160608061057e833981016040528080519060200190919080519060200190919080519060200190919050504267ffffffffffffffff168167ffffffffffffffff1611151561005f57600080fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050506104638061011b6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806338af3eed1461006757806386d1a69f146100bc578063b91d4001146100d1578063fc0c546a1461010e575b600080fd5b341561007257600080fd5b61007a610163565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100c757600080fd5b6100cf610189565b005b34156100dc57600080fd5b6100e4610325565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b341561011957600080fd5b61012161033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160149054906101000a900467ffffffffffffffff1667ffffffffffffffff164267ffffffffffffffff16101515156101c457600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561028857600080fd5b6102c65a03f1151561029957600080fd5b5050506040518051905090506000811115156102b457600080fd5b610322600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166103649092919063ffffffff16565b50565b600160149054906101000a900467ffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561040f57600080fd5b6102c65a03f1151561042057600080fd5b50505060405180519050151561043257fe5b5050505600a165627a7a7230582037e046f4a517539791172a9c3cfb168d1293b8ece20fdc956cfee0a3a318496f0029a165627a7a7230582000d5d743b32024710ae7578eb25b92b1c95a6ebc2c640dc5ed001b989b5838780029

Swarm Source

bzzr://00d5d743b32024710ae7578eb25b92b1c95a6ebc2c640dc5ed001b989b583878

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.