ETH Price: $2,394.32 (-2.14%)

Contract

0x9e6D0F3CDEdAb391483B234E6c06BC35AaBa75C7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Allow Transfer F...160649862022-11-28 0:46:23682 days ago1669596383IN
0x9e6D0F3C...5AaBa75C7
0 ETH0.000320310.64372455
Block Transfer F...160647502022-11-27 23:58:59682 days ago1669593539IN
0x9e6D0F3C...5AaBa75C7
0 ETH0.0003333111.1329802
Remove Restricti...159079302022-11-06 2:15:59703 days ago1667700959IN
0x9e6D0F3C...5AaBa75C7
0 ETH0.000277049.38117339
Set Expiration48946192018-01-12 6:00:212462 days ago1515736821IN
0x9e6D0F3C...5AaBa75C7
0 ETH0.0013638930
Allow Transfer F...48920562018-01-11 18:45:072463 days ago1515696307IN
0x9e6D0F3C...5AaBa75C7
0 ETH0.0013995330
Setup Ambi248920382018-01-11 18:41:342463 days ago1515696094IN
0x9e6D0F3C...5AaBa75C7
0 ETH0.002674830
Init48920382018-01-11 18:41:342463 days ago1515696094IN
0x9e6D0F3C...5AaBa75C7
0 ETH0.001298730
0x6060604048920212018-01-11 18:36:432463 days ago1515695803IN
 Create: AssetWithWhitelist
0 ETH0.0684780630

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
177484052023-07-22 11:34:59445 days ago1690025699
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.03444053 ETH
177484052023-07-22 11:34:59445 days ago1690025699
0x9e6D0F3C...5AaBa75C7
0.03444053 ETH
177484022023-07-22 11:34:23445 days ago1690025663
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.03179216 ETH
177484022023-07-22 11:34:23445 days ago1690025663
0x9e6D0F3C...5AaBa75C7
0.03179216 ETH
177483862023-07-22 11:31:11445 days ago1690025471
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.03178934 ETH
177483862023-07-22 11:31:11445 days ago1690025471
0x9e6D0F3C...5AaBa75C7
0.03178934 ETH
133967732021-10-11 10:32:251094 days ago1633948345
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.08371797 ETH
133967732021-10-11 10:32:251094 days ago1633948345
0x9e6D0F3C...5AaBa75C7
0.08371797 ETH
130826882021-08-23 16:41:201143 days ago1629736880
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.0965 ETH
130826882021-08-23 16:41:201143 days ago1629736880
0x9e6D0F3C...5AaBa75C7
0.0965 ETH
129423702021-08-01 22:47:251165 days ago1627858045
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.0002 ETH
129423702021-08-01 22:47:251165 days ago1627858045
0x9e6D0F3C...5AaBa75C7
0.0002 ETH
129423612021-08-01 22:45:161165 days ago1627857916
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.0002 ETH
129423612021-08-01 22:45:161165 days ago1627857916
0x9e6D0F3C...5AaBa75C7
0.0002 ETH
124763942021-05-21 7:37:181237 days ago1621582638
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.00552382 ETH
124763942021-05-21 7:37:181237 days ago1621582638
0x9e6D0F3C...5AaBa75C7
0.00552382 ETH
124699922021-05-20 7:41:391238 days ago1621496499
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.06397453 ETH
124699922021-05-20 7:41:391238 days ago1621496499
0x9e6D0F3C...5AaBa75C7
0.06397453 ETH
124698962021-05-20 7:20:531238 days ago1621495253
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.05 ETH
124698962021-05-20 7:20:531238 days ago1621495253
0x9e6D0F3C...5AaBa75C7
0.05 ETH
121731462021-04-04 12:34:111284 days ago1617539651
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.03967034 ETH
121731462021-04-04 12:34:111284 days ago1617539651
0x9e6D0F3C...5AaBa75C7
0.03967034 ETH
113807132020-12-03 16:23:351406 days ago1607012615
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
4.37818681 ETH
113807132020-12-03 16:23:351406 days ago1607012615
0x9e6D0F3C...5AaBa75C7
4.37818681 ETH
111732532020-11-01 20:06:521438 days ago1604261212
0x9e6D0F3C...5AaBa75C7
0x9e6D0F3C...5AaBa75C7
0.255 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AssetWithWhitelist

Compiler Version
v0.4.15+commit.bbb8e64f

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-07-24
*/

// This software is a subject to Ambisafe License Agreement.
// No use or distribution is allowed without written permission from Ambisafe.
// https://www.ambisafe.co/terms-of-use/

pragma solidity 0.4.15;

contract Ambi2 {
    function claimFor(address _address, address _owner) returns(bool);
    function hasRole(address _from, bytes32 _role, address _to) constant returns(bool);
    function isOwner(address _node, address _owner) constant returns(bool);
}

contract Ambi2Enabled {
    Ambi2 ambi2;

    modifier onlyRole(bytes32 _role) {
        if (address(ambi2) != 0x0 && ambi2.hasRole(this, _role, msg.sender)) {
            _;
        }
    }

    // Perform only after claiming the node, or claim in the same tx.
    function setupAmbi2(Ambi2 _ambi2) returns(bool) {
        if (address(ambi2) != 0x0) {
            return false;
        }

        ambi2 = _ambi2;
        return true;
    }
}

contract Ambi2EnabledFull is Ambi2Enabled {
    // Setup and claim atomically.
    function setupAmbi2(Ambi2 _ambi2) returns(bool) {
        if (address(ambi2) != 0x0) {
            return false;
        }
        if (!_ambi2.claimFor(this, msg.sender) && !_ambi2.isOwner(this, msg.sender)) {
            return false;
        }

        ambi2 = _ambi2;
        return true;
    }
}

contract ReturnData {
    function _returnReturnData(bool _success) internal {
        assembly {
            let returndatastart := msize()
            mstore(0x40, add(returndatastart, returndatasize))
            returndatacopy(returndatastart, 0, returndatasize)
            switch _success case 0 { revert(returndatastart, returndatasize) } default { return(returndatastart, returndatasize) }
        }
    }

    function _assemblyCall(address _destination, uint _value, bytes _data) internal returns(bool success) {
        assembly {
            success := call(div(mul(gas, 63), 64), _destination, _value, add(_data, 32), mload(_data), 0, 0)
        }
    }
}

contract Bytes32 {
    function _bytes32(string _input) internal constant returns(bytes32 result) {
        assembly {
            result := mload(add(_input, 32))
        }
    }
}

contract AssetInterface {
    function _performTransferWithReference(address _to, uint _value, string _reference, address _sender) returns(bool);
    function _performTransferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function _performApprove(address _spender, uint _value, address _sender) returns(bool);    
    function _performTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) returns(bool);
    function _performTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function _performGeneric(bytes, address) payable {
        revert();
    }
}

/**
 * @title EToken2 Asset implementation contract.
 *
 * Basic asset implementation contract, without any additional logic.
 * Every other asset implementation contracts should derive from this one.
 * Receives calls from the proxy, and calls back immediatly without arguments modification.
 *
 * Note: all the non constant functions return false instead of throwing in case if state change
 * didn't happen yet.
 */
contract Asset is AssetInterface, Bytes32, ReturnData {
    // Assigned asset proxy contract, immutable.
    AssetProxy public proxy;

    /**
     * Only assigned proxy is allowed to call.
     */
    modifier onlyProxy() {
        if (proxy == msg.sender) {
            _;
        }
    }

    /**
     * Sets asset proxy address.
     *
     * Can be set only once.
     *
     * @param _proxy asset proxy contract address.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function init(AssetProxy _proxy) returns(bool) {
        if (address(proxy) != 0x0) {
            return false;
        }
        proxy = _proxy;
        return true;
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferWithReference(address _to, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        if (isICAP(_to)) {
            return _transferToICAPWithReference(bytes32(_to) << 96, _value, _reference, _sender);
        }
        return _transferWithReference(_to, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferWithReference(address _to, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromWithReference(_sender, _to, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        return _transferToICAPWithReference(_icap, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromToICAPWithReference(_sender, _icap, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        if (isICAP(_to)) {
            return _transferFromToICAPWithReference(_from, bytes32(_to) << 96, _value, _reference, _sender);
        }
        return _transferFromWithReference(_from, _to, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromWithReference(_from, _to, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        return _transferFromToICAPWithReference(_from, _icap, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromToICAPWithReference(_from, _icap, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performApprove(address _spender, uint _value, address _sender) onlyProxy() returns(bool) {
        return _approve(_spender, _value, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _approve(address _spender, uint _value, address _sender) internal returns(bool) {
        return proxy._forwardApprove(_spender, _value, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return bytes32 result.
     * @dev function is final, and must not be overridden.
     */
    function _performGeneric(bytes _data, address _sender) payable onlyProxy() {
        _generic(_data, msg.value, _sender);
    }

    modifier onlyMe() {
        if (this == msg.sender) {
            _;
        }
    }

    // Most probably the following should never be redefined in child contracts.
    address genericSender;
    function _generic(bytes _data, uint _value, address _msgSender) internal {
        // Restrict reentrancy.
        require(genericSender == 0x0);
        genericSender = _msgSender;
        bool success = _assemblyCall(address(this), _value, _data);
        delete genericSender;
        _returnReturnData(success);
    }

    // Decsendants should use _sender() instead of msg.sender to properly process proxied calls.
    function _sender() constant internal returns(address) {
        return this == msg.sender ? genericSender : msg.sender;
    }

    // Interface functions to allow specifying ICAP addresses as strings.
    function transferToICAP(string _icap, uint _value) returns(bool) {
        return transferToICAPWithReference(_icap, _value, '');
    }

    function transferToICAPWithReference(string _icap, uint _value, string _reference) returns(bool) {
        return _transferToICAPWithReference(_bytes32(_icap), _value, _reference, _sender());
    }

    function transferFromToICAP(address _from, string _icap, uint _value) returns(bool) {
        return transferFromToICAPWithReference(_from, _icap, _value, '');
    }

    function transferFromToICAPWithReference(address _from, string _icap, uint _value, string _reference) returns(bool) {
        return _transferFromToICAPWithReference(_from, _bytes32(_icap), _value, _reference, _sender());
    }

    function isICAP(address _address) constant returns(bool) {
        bytes32 a = bytes32(_address) << 96;
        if (a[0] != 'X' || a[1] != 'E') {
            return false;
        }
        if (a[2] < 48 || a[2] > 57 || a[3] < 48 || a[3] > 57) {
            return false;
        }
        for (uint i = 4; i < 20; i++) {
            uint char = uint(a[i]);
            if (char < 48 || char > 90 || (char > 57 && char < 65)) {
                return false;
            }
        }
        return true;
    }
}

contract AssetWithAmbi is Asset, Ambi2EnabledFull {
    modifier onlyRole(bytes32 _role) {
        if (address(ambi2) != 0x0 && (ambi2.hasRole(this, _role, _sender()))) {
            _;
        }
    }
}

contract AssetProxy {
    function _forwardApprove(address _spender, uint _value, address _sender) returns(bool);
    function _forwardTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) returns(bool);
    function _forwardTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function balanceOf(address _owner) constant returns(uint);
}

/**
 * @title EToken2 Asset with whitelist implementation contract.
 */
contract AssetWithWhitelist is AssetWithAmbi {
    mapping(address => bool) public whitelist;
    uint public restrictionExpiraton;
    bool public restrictionRemoved;

    event Error(bytes32 _errorText);

    function allowTransferFrom(address _from) onlyRole('admin') returns(bool) {
        whitelist[_from] = true;
        return true;
    }

    function blockTransferFrom(address _from) onlyRole('admin') returns(bool) {
        whitelist[_from] = false;
        return true;
    }

    function transferIsAllowed(address _from) constant returns(bool) {
        return restrictionRemoved || whitelist[_from] || (now >= restrictionExpiraton);
    }

    function removeRestriction() onlyRole('admin') returns(bool) {
        restrictionRemoved = true;
        return true;
    }

    modifier transferAllowed(address _sender) {
        if (!transferIsAllowed(_sender)) {
            Error('Transfer not allowed');
            return;
        }
        _;
    }

    function setExpiration(uint _time) onlyRole('admin') returns(bool) {
        if (restrictionExpiraton != 0) {
            Error('Expiration time already set');
            return false;
        }
        if (_time < now) {
            Error('Expiration time invalid');
            return false;
        }
        restrictionExpiraton = _time;
        return true;
    }

    // Transfers
    function _transferWithReference(address _to, uint _value, string _reference, address _sender)
        transferAllowed(_sender)
        internal
        returns(bool)
    {
        return super._transferWithReference(_to, _value, _reference, _sender);
    }

    function _transferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender)
        transferAllowed(_sender)
        internal
        returns(bool)
    {
        return super._transferToICAPWithReference(_icap, _value, _reference, _sender);
    }

    function _transferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender)
        transferAllowed(_from)
        internal
        returns(bool)
    {
        return super._transferFromWithReference(_from, _to, _value, _reference, _sender);
    }

    function _transferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender)
        transferAllowed(_from)
        internal
        returns(bool)
    {
        return super._transferFromToICAPWithReference(_from, _icap, _value, _reference, _sender);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_proxy","type":"address"}],"name":"init","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"removeRestriction","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"}],"name":"blockTransferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"restrictionExpiraton","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_time","type":"uint256"}],"name":"setExpiration","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"}],"name":"transferFromToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_ambi2","type":"address"}],"name":"setupAmbi2","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"}],"name":"transferToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"}],"name":"allowTransferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"}],"name":"transferIsAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferFromWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_data","type":"bytes"},{"name":"_sender","type":"address"}],"name":"_performGeneric","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_sender","type":"address"}],"name":"_performApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"proxy","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"restrictionRemoved","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_errorText","type":"bytes32"}],"name":"Error","type":"event"}]

6060604052341561000f57600080fd5b5b61218d8061001f6000396000f300606060405236156101255763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631962df71811461012a57806319ab453c146101c8578063307e38ca146102085780634830d5d91461024857806348849c5a1461026f5780634bb37790146102af578063515a20ba146102d45780637609c5a9146102fe5780637a386e881461038057806381d434e9146103c057806384c5c34d146104275780638a74ee43146104f25780639ab253cc146105325780639b19251a146105e2578063bfd94c8c14610622578063c10796df14610662578063cca97025146106ea578063db00b8481461078f578063e34f7137146107ef578063eb58705b14610839578063ec556889146108da578063f5a9855814610916575b600080fd5b341561013557600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff16925061093d915050565b604051901515815260200160405180910390f35b34156101d357600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff600435166109c1565b604051901515815260200160405180910390f35b341561021357600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff60043516610a31565b604051901515815260200160405180910390f35b341561025357600080fd5b6101b4610dc5565b604051901515815260200160405180910390f35b341561027a57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff60043516610f09565b604051901515815260200160405180910390f35b34156102ba57600080fd5b6102c261106e565b60405190815260200160405180910390f35b34156102df57600080fd5b6101b4600435611074565b604051901515815260200160405180910390f35b341561030957600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650509335935061125992505050565b604051901515815260200160405180910390f35b341561038b57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff6004351661127f565b604051901515815260200160405180910390f35b34156103cb57600080fd5b6101b460046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650509335935061146292505050565b604051901515815260200160405180910390f35b341561043257600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061148695505050505050565b604051901515815260200160405180910390f35b34156104fd57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff600435166114af565b604051901515815260200160405180910390f35b341561053d57600080fd5b6101b460046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061161895505050505050565b604051901515815260200160405180910390f35b34156105ed57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff6004351661163f565b604051901515815260200160405180910390f35b341561062d57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff60043516611654565b604051901515815260200160405180910390f35b341561066d57600080fd5b6101b4600480359060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506116a2915050565b604051901515815260200160405180910390f35b34156106f557600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff6004803582169160248035909116916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506116e0915050565b604051901515815260200160405180910390f35b6107ed60046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff169250611767915050565b005b34156107fa57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff600435811690602435906044351661179d565b604051901515815260200160405180910390f35b341561084457600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060248035916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506117d9915050565b604051901515815260200160405180910390f35b34156108e557600080fd5b6108ed611819565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b341561092157600080fd5b6101b4611835565b604051901515815260200160405180910390f35b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614156109b75761096b85610a31565b156109a8576109a16c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff87160285858561183e565b90506109b7565b6109b4858585856118c0565b90505b5b5b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16156109e857506000610a2c565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560015b919050565b60006c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff831602818082815b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5800000000000000000000000000000000000000000000000000000000000000141580610b3957508260015b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f450000000000000000000000000000000000000000000000000000000000000014155b15610b475760009350610dbd565b7f30000000000000000000000000000000000000000000000000000000000000008360025b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161080610c2457507f39000000000000000000000000000000000000000000000000000000000000008360025b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916115b80610c9657507f30000000000000000000000000000000000000000000000000000000000000008360035b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b80610d0857507f39000000000000000000000000000000000000000000000000000000000000008360035b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916115b15610d165760009350610dbd565b600491505b6014821015610db857828260208110610d3057fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900490506030811080610d875750605a81115b80610d9d5750603981118015610d9d5750604181105b5b15610dac5760009350610dbd565b5b600190910190610d1b565b600193505b505050919050565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1615801590610ecd575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a3083610e34611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515610eb157600080fd5b6102c65a03f11515610ec257600080fd5b505050604051805190505b15610f0357600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505b5b5b5090565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1615801590611011575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a3083610f78611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515610ff557600080fd5b6102c65a03f1151561100657600080fd5b505050604051805190505b156110665773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600191505b5b5b50919050565b60045481565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff161580159061117c575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a30836110e3611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b151561116057600080fd5b6102c65a03f1151561117157600080fd5b505050604051805190505b1561106657600454156111e4577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f45787069726174696f6e2074696d6520616c7265616479207365740000000000815260200160405180910390a160009150611066565b42831015611247577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f45787069726174696f6e2074696d6520696e76616c6964000000000000000000815260200160405180910390a160009150611066565b6004839055600191505b5b5b50919050565b6000611275848484602060405190810160405260008152611486565b90505b9392505050565b60025460009073ffffffffffffffffffffffffffffffffffffffff16156112a857506000610a2c565b8173ffffffffffffffffffffffffffffffffffffffff1663b4ba9e1130336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b151561133a57600080fd5b6102c65a03f1151561134b57600080fd5b5050506040518051905015801561140c57508173ffffffffffffffffffffffffffffffffffffffff16637ddc02d430336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b15156113ef57600080fd5b6102c65a03f1151561140057600080fd5b50505060405180519050155b1561141957506000610a2c565b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560015b919050565b600061147d8383602060405190810160405260008152611618565b90505b92915050565b60006109b4856114958661199d565b858561149f611942565b6119ac565b90505b949350505050565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16158015906115b7575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a308361151e611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b151561159b57600080fd5b6102c65a03f115156115ac57600080fd5b505050604051805190505b156110665773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505b5b5b50919050565b60006112756116268561199d565b8484611630611942565b61183e565b90505b9392505050565b60036020526000908152604090205460ff1681565b60055460009060ff168061168d575073ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff165b8061169a57506004544210155b90505b919050565b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614156109b7576109b48585858561183e565b90505b5b5b949350505050565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561175c5761170e85610a31565b1561174c57611745866c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8816028686866119ac565b905061175c565b6117598686868686611a30565b90505b5b5b95945050505050565b6000543373ffffffffffffffffffffffffffffffffffffffff9081169116141561179657611796823483611ab4565b5b5b5b5050565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561127857611275848484611b5f565b90505b5b5b9392505050565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561175c5761175986868686866119ac565b90505b5b5b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60055460ff1681565b60008161184a81611654565b15156118a7577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a16118b6565b6118b386868686611c21565b91505b5b50949350505050565b6000816118cc81611654565b1515611929577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a16118b6565b6118b386868686611d60565b91505b5b50949350505050565b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461197d5733611997565b60015473ffffffffffffffffffffffffffffffffffffffff165b90505b90565b6000602082015190505b919050565b6000856119b881611654565b1515611a15577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a1611a25565b611a228787878787611ea0565b91505b5b5095945050505050565b600085611a3c81611654565b1515611a99577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a1611a25565b611a228787878787611fe0565b91505b5b5095945050505050565b60015460009073ffffffffffffffffffffffffffffffffffffffff1615611ada57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055611b25308486612121565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559050611b5881612140565b5b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16637bcdc2f085858585604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515611bfd57600080fd5b6102c65a03f11515611c0e57600080fd5b50505060405180519150505b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16639b487f3f838787878387604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611cec5780820151818401525b602001611cd3565b50505050905090810190601f168015611d195780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611d3b57600080fd5b6102c65a03f11515611d4c57600080fd5b50505060405180519150505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff166314cba002838787878387604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff80871660048301908152868216602484015260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611cec5780820151818401525b602001611cd3565b50505050905090810190601f168015611d195780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611d3b57600080fd5b6102c65a03f11515611d4c57600080fd5b50505060405180519150505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16639b487f3f878787878787604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611f6b5780820151818401525b602001611f52565b50505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fba57600080fd5b6102c65a03f11515611fcb57600080fd5b50505060405180519150505b95945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff166314cba002878787878787604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff80871660048301908152868216602484015260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611f6b5780820151818401525b602001611f52565b50505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fba57600080fd5b6102c65a03f11515611fcb57600080fd5b50505060405180519150505b95945050505050565b600080600083516020850186886040603f5a0204f190505b9392505050565b593d81016040523d6000823e818015612157573d82f35b3d82fd5b50505b505600a165627a7a7230582074ceb8dcb943af3413eee57e49596ee4b43f1e93b09842fddf34c602e819c9a90029

Deployed Bytecode

0x606060405236156101255763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631962df71811461012a57806319ab453c146101c8578063307e38ca146102085780634830d5d91461024857806348849c5a1461026f5780634bb37790146102af578063515a20ba146102d45780637609c5a9146102fe5780637a386e881461038057806381d434e9146103c057806384c5c34d146104275780638a74ee43146104f25780639ab253cc146105325780639b19251a146105e2578063bfd94c8c14610622578063c10796df14610662578063cca97025146106ea578063db00b8481461078f578063e34f7137146107ef578063eb58705b14610839578063ec556889146108da578063f5a9855814610916575b600080fd5b341561013557600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff16925061093d915050565b604051901515815260200160405180910390f35b34156101d357600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff600435166109c1565b604051901515815260200160405180910390f35b341561021357600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff60043516610a31565b604051901515815260200160405180910390f35b341561025357600080fd5b6101b4610dc5565b604051901515815260200160405180910390f35b341561027a57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff60043516610f09565b604051901515815260200160405180910390f35b34156102ba57600080fd5b6102c261106e565b60405190815260200160405180910390f35b34156102df57600080fd5b6101b4600435611074565b604051901515815260200160405180910390f35b341561030957600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650509335935061125992505050565b604051901515815260200160405180910390f35b341561038b57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff6004351661127f565b604051901515815260200160405180910390f35b34156103cb57600080fd5b6101b460046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650509335935061146292505050565b604051901515815260200160405180910390f35b341561043257600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061148695505050505050565b604051901515815260200160405180910390f35b34156104fd57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff600435166114af565b604051901515815260200160405180910390f35b341561053d57600080fd5b6101b460046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061161895505050505050565b604051901515815260200160405180910390f35b34156105ed57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff6004351661163f565b604051901515815260200160405180910390f35b341561062d57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff60043516611654565b604051901515815260200160405180910390f35b341561066d57600080fd5b6101b4600480359060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506116a2915050565b604051901515815260200160405180910390f35b34156106f557600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff6004803582169160248035909116916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506116e0915050565b604051901515815260200160405180910390f35b6107ed60046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff169250611767915050565b005b34156107fa57600080fd5b6101b473ffffffffffffffffffffffffffffffffffffffff600435811690602435906044351661179d565b604051901515815260200160405180910390f35b341561084457600080fd5b6101b46004803573ffffffffffffffffffffffffffffffffffffffff169060248035916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506117d9915050565b604051901515815260200160405180910390f35b34156108e557600080fd5b6108ed611819565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b341561092157600080fd5b6101b4611835565b604051901515815260200160405180910390f35b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614156109b75761096b85610a31565b156109a8576109a16c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff87160285858561183e565b90506109b7565b6109b4858585856118c0565b90505b5b5b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16156109e857506000610a2c565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560015b919050565b60006c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff831602818082815b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5800000000000000000000000000000000000000000000000000000000000000141580610b3957508260015b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f450000000000000000000000000000000000000000000000000000000000000014155b15610b475760009350610dbd565b7f30000000000000000000000000000000000000000000000000000000000000008360025b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161080610c2457507f39000000000000000000000000000000000000000000000000000000000000008360025b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916115b80610c9657507f30000000000000000000000000000000000000000000000000000000000000008360035b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b80610d0857507f39000000000000000000000000000000000000000000000000000000000000008360035b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916115b15610d165760009350610dbd565b600491505b6014821015610db857828260208110610d3057fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900490506030811080610d875750605a81115b80610d9d5750603981118015610d9d5750604181105b5b15610dac5760009350610dbd565b5b600190910190610d1b565b600193505b505050919050565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1615801590610ecd575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a3083610e34611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515610eb157600080fd5b6102c65a03f11515610ec257600080fd5b505050604051805190505b15610f0357600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505b5b5b5090565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1615801590611011575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a3083610f78611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515610ff557600080fd5b6102c65a03f1151561100657600080fd5b505050604051805190505b156110665773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600191505b5b5b50919050565b60045481565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff161580159061117c575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a30836110e3611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b151561116057600080fd5b6102c65a03f1151561117157600080fd5b505050604051805190505b1561106657600454156111e4577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f45787069726174696f6e2074696d6520616c7265616479207365740000000000815260200160405180910390a160009150611066565b42831015611247577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f45787069726174696f6e2074696d6520696e76616c6964000000000000000000815260200160405180910390a160009150611066565b6004839055600191505b5b5b50919050565b6000611275848484602060405190810160405260008152611486565b90505b9392505050565b60025460009073ffffffffffffffffffffffffffffffffffffffff16156112a857506000610a2c565b8173ffffffffffffffffffffffffffffffffffffffff1663b4ba9e1130336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b151561133a57600080fd5b6102c65a03f1151561134b57600080fd5b5050506040518051905015801561140c57508173ffffffffffffffffffffffffffffffffffffffff16637ddc02d430336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b15156113ef57600080fd5b6102c65a03f1151561140057600080fd5b50505060405180519050155b1561141957506000610a2c565b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560015b919050565b600061147d8383602060405190810160405260008152611618565b90505b92915050565b60006109b4856114958661199d565b858561149f611942565b6119ac565b90505b949350505050565b6002546000907f61646d696e0000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16158015906115b7575060025473ffffffffffffffffffffffffffffffffffffffff16632d3e579a308361151e611942565b6000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b151561159b57600080fd5b6102c65a03f115156115ac57600080fd5b505050604051805190505b156110665773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505b5b5b50919050565b60006112756116268561199d565b8484611630611942565b61183e565b90505b9392505050565b60036020526000908152604090205460ff1681565b60055460009060ff168061168d575073ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff165b8061169a57506004544210155b90505b919050565b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614156109b7576109b48585858561183e565b90505b5b5b949350505050565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561175c5761170e85610a31565b1561174c57611745866c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8816028686866119ac565b905061175c565b6117598686868686611a30565b90505b5b5b95945050505050565b6000543373ffffffffffffffffffffffffffffffffffffffff9081169116141561179657611796823483611ab4565b5b5b5b5050565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561127857611275848484611b5f565b90505b5b5b9392505050565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561175c5761175986868686866119ac565b90505b5b5b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60055460ff1681565b60008161184a81611654565b15156118a7577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a16118b6565b6118b386868686611c21565b91505b5b50949350505050565b6000816118cc81611654565b1515611929577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a16118b6565b6118b386868686611d60565b91505b5b50949350505050565b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461197d5733611997565b60015473ffffffffffffffffffffffffffffffffffffffff165b90505b90565b6000602082015190505b919050565b6000856119b881611654565b1515611a15577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a1611a25565b611a228787878787611ea0565b91505b5b5095945050505050565b600085611a3c81611654565b1515611a99577fc0feee4291bd5b20db53763b87864bd1434da2717d6a9ba76efa4bafa8f6a99c6040517f5472616e73666572206e6f7420616c6c6f776564000000000000000000000000815260200160405180910390a1611a25565b611a228787878787611fe0565b91505b5b5095945050505050565b60015460009073ffffffffffffffffffffffffffffffffffffffff1615611ada57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055611b25308486612121565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559050611b5881612140565b5b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16637bcdc2f085858585604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515611bfd57600080fd5b6102c65a03f11515611c0e57600080fd5b50505060405180519150505b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16639b487f3f838787878387604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611cec5780820151818401525b602001611cd3565b50505050905090810190601f168015611d195780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611d3b57600080fd5b6102c65a03f11515611d4c57600080fd5b50505060405180519150505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff166314cba002838787878387604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff80871660048301908152868216602484015260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611cec5780820151818401525b602001611cd3565b50505050905090810190601f168015611d195780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611d3b57600080fd5b6102c65a03f11515611d4c57600080fd5b50505060405180519150505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16639b487f3f878787878787604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611f6b5780820151818401525b602001611f52565b50505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fba57600080fd5b6102c65a03f11515611fcb57600080fd5b50505060405180519150505b95945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff166314cba002878787878787604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff80871660048301908152868216602484015260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611f6b5780820151818401525b602001611f52565b50505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fba57600080fd5b6102c65a03f11515611fcb57600080fd5b50505060405180519150505b95945050505050565b600080600083516020850186886040603f5a0204f190505b9392505050565b593d81016040523d6000823e818015612157573d82f35b3d82fd5b50505b505600a165627a7a7230582074ceb8dcb943af3413eee57e49596ee4b43f1e93b09842fddf34c602e819c9a90029

Swarm Source

bzzr://74ceb8dcb943af3413eee57e49596ee4b43f1e93b09842fddf34c602e819c9a9

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.