ETH Price: $3,212.85 (+1.31%)

Token

Dock Token (DOCT)
 

Overview

Max Total Supply

759,493,671 DOCT

Holders

873

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
25.5 DOCT

Value
$0.00
0x235459272603282667D29D85461dB52825E8D19B
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DockToken

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-05-28
*/

// File: contracts/EToken2Interface.sol

pragma solidity 0.5.8;


contract RegistryICAPInterface {
    function parse(bytes32 _icap) public view returns(address, bytes32, bool);
    function institutions(bytes32 _institution) public view returns(address);
}


contract EToken2Interface {
    function registryICAP() public view returns(RegistryICAPInterface);
    function baseUnit(bytes32 _symbol) public view returns(uint8);
    function description(bytes32 _symbol) public view returns(string memory);
    function owner(bytes32 _symbol) public view returns(address);
    function isOwner(address _owner, bytes32 _symbol) public view returns(bool);
    function totalSupply(bytes32 _symbol) public view returns(uint);
    function balanceOf(address _holder, bytes32 _symbol) public view returns(uint);
    function isLocked(bytes32 _symbol) public view returns(bool);

    function issueAsset(
        bytes32 _symbol,
        uint _value,
        string memory _name,
        string memory _description,
        uint8 _baseUnit,
        bool _isReissuable)
    public returns(bool);

    function reissueAsset(bytes32 _symbol, uint _value) public returns(bool);
    function revokeAsset(bytes32 _symbol, uint _value) public returns(bool);
    function setProxy(address _address, bytes32 _symbol) public returns(bool);
    function lockAsset(bytes32 _symbol) public returns(bool);

    function proxyTransferFromToICAPWithReference(
        address _from,
        bytes32 _icap,
        uint _value,
        string memory _reference,
        address _sender)
    public returns(bool);

    function proxyApprove(address _spender, uint _value, bytes32 _symbol, address _sender)
    public returns(bool);
    
    function allowance(address _from, address _spender, bytes32 _symbol) public view returns(uint);

    function proxyTransferFromWithReference(
        address _from,
        address _to,
        uint _value,
        bytes32 _symbol,
        string memory _reference,
        address _sender)
    public returns(bool);

    function changeOwnership(bytes32 _symbol, address _newOwner) public returns(bool);
}

// File: contracts/AssetInterface.sol

pragma solidity 0.5.8;


contract AssetInterface {
    function _performTransferWithReference(
        address _to,
        uint _value,
        string memory _reference,
        address _sender)
    public returns(bool);

    function _performTransferToICAPWithReference(
        bytes32 _icap,
        uint _value,
        string memory _reference,
        address _sender)
    public returns(bool);

    function _performApprove(address _spender, uint _value, address _sender)
    public returns(bool);

    function _performTransferFromWithReference(
        address _from,
        address _to,
        uint _value,
        string memory _reference,
        address _sender)
    public returns(bool);

    function _performTransferFromToICAPWithReference(
        address _from,
        bytes32 _icap,
        uint _value,
        string memory _reference,
        address _sender)
    public returns(bool);

    function _performGeneric(bytes memory, address) public payable {
        revert();
    }
}

// File: contracts/ERC20Interface.sol

pragma solidity 0.5.8;


contract ERC20Interface {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed from, address indexed spender, uint256 value);

    function totalSupply() public view returns(uint256 supply);
    function balanceOf(address _owner) public view returns(uint256 balance);
    // solhint-disable-next-line no-simple-event-func-name
    function transfer(address _to, uint256 _value) public returns(bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns(bool success);
    function approve(address _spender, uint256 _value) public returns(bool success);
    function allowance(address _owner, address _spender) public view returns(uint256 remaining);

    // function symbol() constant returns(string);
    function decimals() public view returns(uint8);
    // function name() constant returns(string);
}

// File: contracts/AssetProxyInterface.sol

pragma solidity 0.5.8;



contract AssetProxyInterface is ERC20Interface {
    function _forwardApprove(address _spender, uint _value, address _sender)
    public returns(bool);

    function _forwardTransferFromWithReference(
        address _from,
        address _to,
        uint _value,
        string memory _reference,
        address _sender)
    public returns(bool);

    function _forwardTransferFromToICAPWithReference(
        address _from,
        bytes32 _icap,
        uint _value,
        string memory _reference,
        address _sender)
    public returns(bool);

    function recoverTokens(ERC20Interface _asset, address _receiver, uint _value)
    public returns(bool);

    function etoken2() external view returns(address); // To be replaced by the implicit getter;

    // To be replaced by the implicit getter;
    function etoken2Symbol() external view returns(bytes32);
}

// File: smart-contracts-common/contracts/Bytes32.sol

pragma solidity 0.5.8;


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

// File: smart-contracts-common/contracts/ReturnData.sol

pragma solidity 0.5.8;


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

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

// File: contracts/AssetProxy.sol

pragma solidity 0.5.8;








/**
 * @title EToken2 Asset Proxy.
 *
 * Proxy implements ERC20 interface and acts as a gateway to a single EToken2 asset.
 * Proxy adds etoken2Symbol and caller(sender) when forwarding requests to EToken2.
 * Every request that is made by caller first sent to the specific asset implementation
 * contract, which then calls back to be forwarded onto EToken2.
 *
 * Calls flow: Caller ->
 *             Proxy.func(...) ->
 *             Asset._performFunc(..., Caller.address) ->
 *             Proxy._forwardFunc(..., Caller.address) ->
 *             Platform.proxyFunc(..., symbol, Caller.address)
 *
 * Generic call flow: Caller ->
 *             Proxy.unknownFunc(...) ->
 *             Asset._performGeneric(..., Caller.address) ->
 *             Asset.unknownFunc(...)
 *
 * Asset implementation contract is mutable, but each user have an option to stick with
 * old implementation, through explicit decision made in timely manner, if he doesn't agree
 * with new rules.
 * Each user have a possibility to upgrade to latest asset contract implementation, without the
 * possibility to rollback.
 *
 * Note: all the non constant functions return false instead of throwing in case if state change
 * didn't happen yet.
 */
contract DockToken is ERC20Interface, AssetProxyInterface, Bytes32, ReturnData {
    // Assigned EToken2, immutable.
    EToken2Interface public etoken2;

    // Assigned symbol, immutable.
    bytes32 public etoken2Symbol;

    // Assigned name, immutable. For UI.
    string public name;
    string public symbol;

    /**
     * Sets EToken2 address, assigns symbol and name.
     *
     * Can be set only once.
     *
     * @param _etoken2 EToken2 contract address.
     * @param _symbol assigned symbol.
     * @param _name assigned name.
     *
     * @return success.
     */
    function init(EToken2Interface _etoken2, string memory _symbol, string memory _name)
        public returns(bool)
    {
        if (address(etoken2) != address(0)) {
            return false;
        }
        etoken2 = _etoken2;
        etoken2Symbol = _bytes32(_symbol);
        name = _name;
        symbol = _symbol;
        return true;
    }

    /**
     * Only EToken2 is allowed to call.
     */
    modifier onlyEToken2() {
        if (msg.sender == address(etoken2)) {
            _;
        }
    }

    /**
     * Only current asset owner is allowed to call.
     */
    modifier onlyAssetOwner() {
        if (etoken2.isOwner(msg.sender, etoken2Symbol)) {
            _;
        }
    }

    /**
     * Returns asset implementation contract for current caller.
     *
     * @return asset implementation contract.
     */
    function _getAsset() internal view returns(AssetInterface) {
        return AssetInterface(getVersionFor(msg.sender));
    }

    /**
     * Recovers tokens on proxy contract
     *
     * @param _asset type of tokens to recover.
     * @param _value tokens that will be recovered.
     * @param _receiver address where to send recovered tokens.
     *
     * @return success.
     */
    function recoverTokens(ERC20Interface _asset, address _receiver, uint _value)
    public onlyAssetOwner() returns(bool) {
        return _asset.transfer(_receiver, _value);
    }

    /**
     * Returns asset total supply.
     *
     * @return asset total supply.
     */
    function totalSupply() public view returns(uint) {
        return etoken2.totalSupply(etoken2Symbol);
    }

    /**
     * Returns asset balance for a particular holder.
     *
     * @param _owner holder address.
     *
     * @return holder balance.
     */
    function balanceOf(address _owner) public view returns(uint) {
        return etoken2.balanceOf(_owner, etoken2Symbol);
    }

    /**
     * Returns asset allowance from one holder to another.
     *
     * @param _from holder that allowed spending.
     * @param _spender holder that is allowed to spend.
     *
     * @return holder to spender allowance.
     */
    function allowance(address _from, address _spender) public view returns(uint) {
        return etoken2.allowance(_from, _spender, etoken2Symbol);
    }

    /**
     * Returns asset decimals.
     *
     * @return asset decimals.
     */
    function decimals() public view returns(uint8) {
        return etoken2.baseUnit(etoken2Symbol);
    }

    /**
     * Transfers asset balance from the caller to specified receiver.
     *
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transfer(address _to, uint _value) public returns(bool) {
        return transferWithReference(_to, _value, '');
    }

    /**
     * Transfers asset balance from the caller to specified receiver adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferWithReference(address _to, uint _value, string memory _reference)
    public returns(bool) {
        return _getAsset()._performTransferWithReference(
            _to, _value, _reference, msg.sender);
    }

    /**
     * Transfers asset balance from the caller to specified ICAP.
     *
     * @param _icap recipient ICAP to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferToICAP(bytes32 _icap, uint _value) public returns(bool) {
        return transferToICAPWithReference(_icap, _value, '');
    }

    /**
     * Transfers asset balance from the caller to specified ICAP adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _icap recipient ICAP to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferToICAPWithReference(
        bytes32 _icap,
        uint _value,
        string memory _reference)
    public returns(bool) {
        return _getAsset()._performTransferToICAPWithReference(
            _icap, _value, _reference, msg.sender);
    }

    /**
     * Prforms allowance transfer of asset balance between holders.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferFrom(address _from, address _to, uint _value) public returns(bool) {
        return transferFromWithReference(_from, _to, _value, '');
    }

    /**
     * Prforms allowance transfer of asset balance between holders adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferFromWithReference(
        address _from,
        address _to,
        uint _value,
        string memory _reference)
    public returns(bool) {
        return _getAsset()._performTransferFromWithReference(
            _from,
            _to,
            _value,
            _reference,
            msg.sender
        );
    }

    /**
     * Performs transfer call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardTransferFromWithReference(
        address _from,
        address _to,
        uint _value,
        string memory _reference,
        address _sender)
    public onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyTransferFromWithReference(
            _from,
            _to,
            _value,
            etoken2Symbol,
            _reference,
            _sender
        );
    }

    /**
     * Prforms allowance transfer of asset balance between holders.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferFromToICAP(address _from, bytes32 _icap, uint _value)
    public returns(bool) {
        return transferFromToICAPWithReference(_from, _icap, _value, '');
    }

    /**
     * Prforms allowance transfer of asset balance between holders adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferFromToICAPWithReference(
        address _from,
        bytes32 _icap,
        uint _value,
        string memory _reference)
    public returns(bool) {
        return _getAsset()._performTransferFromToICAPWithReference(
            _from,
            _icap,
            _value,
            _reference,
            msg.sender
        );
    }

    /**
     * Performs allowance transfer to ICAP call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardTransferFromToICAPWithReference(
        address _from,
        bytes32 _icap,
        uint _value,
        string memory _reference,
        address _sender)
    public onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyTransferFromToICAPWithReference(
            _from,
            _icap,
            _value,
            _reference,
            _sender
        );
    }

    /**
     * Sets asset spending allowance for a specified spender.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _spender holder address to set allowance to.
     * @param _value amount to allow.
     *
     * @return success.
     */
    function approve(address _spender, uint _value) public returns(bool) {
        return _getAsset()._performApprove(_spender, _value, msg.sender);
    }

    /**
     * Performs allowance setting call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _spender holder address to set allowance to.
     * @param _value amount to allow.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardApprove(address _spender, uint _value, address _sender)
    public onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyApprove(_spender, _value, etoken2Symbol, _sender);
    }

    /**
     * Emits ERC20 Transfer event on this contract.
     *
     * Can only be, and, called by assigned EToken2 when asset transfer happens.
     */
    function emitTransfer(address _from, address _to, uint _value) public onlyEToken2() {
        emit Transfer(_from, _to, _value);
    }

    /**
     * Emits ERC20 Approval event on this contract.
     *
     * Can only be, and, called by assigned EToken2 when asset allowance set happens.
     */
    function emitApprove(address _from, address _spender, uint _value) public onlyEToken2() {
        emit Approval(_from, _spender, _value);
    }

    /**
     * Resolves asset implementation contract for the caller and forwards there transaction data,
     * along with the value. This allows for proxy interface growth.
     */
    function () external payable {
        _getAsset()._performGeneric.value(msg.value)(msg.data, msg.sender);
        _returnReturnData(true);
    }

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

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

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

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

    /**
     * Indicates an upgrade freeze-time start, and the next asset implementation contract.
     */
    event UpgradeProposed(address newVersion);
    event UpgradePurged(address newVersion);
    event UpgradeCommited(address newVersion);
    event OptedOut(address sender, address version);
    event OptedIn(address sender, address version);

    // Current asset implementation contract address.
    address internal latestVersion;

    // Proposed next asset implementation contract address.
    address internal pendingVersion;

    // Upgrade freeze-time start.
    uint internal pendingVersionTimestamp;

    // Timespan for users to review the new implementation and make decision.
    uint internal constant UPGRADE_FREEZE_TIME = 3 days;

    // Asset implementation contract address that user decided to stick with.
    // 0x0 means that user uses latest version.
    mapping(address => address) internal userOptOutVersion;

    /**
     * Only asset implementation contract assigned to sender is allowed to call.
     */
    modifier onlyImplementationFor(address _sender) {
        if (getVersionFor(_sender) == msg.sender) {
            _;
        }
    }

    /**
     * Returns asset implementation contract address assigned to sender.
     *
     * @param _sender sender address.
     *
     * @return asset implementation contract address.
     */
    function getVersionFor(address _sender) public view returns(address) {
        return userOptOutVersion[_sender] == address(0) ?
            latestVersion : userOptOutVersion[_sender];
    }

    /**
     * Returns current asset implementation contract address.
     *
     * @return asset implementation contract address.
     */
    function getLatestVersion() public view returns(address) {
        return latestVersion;
    }

    /**
     * Returns proposed next asset implementation contract address.
     *
     * @return asset implementation contract address.
     */
    function getPendingVersion() public view returns(address) {
        return pendingVersion;
    }

    /**
     * Returns upgrade freeze-time start.
     *
     * @return freeze-time start.
     */
    function getPendingVersionTimestamp() public view returns(uint) {
        return pendingVersionTimestamp;
    }

    /**
     * Propose next asset implementation contract address.
     *
     * Can only be called by current asset owner.
     *
     * Note: freeze-time should not be applied for the initial setup.
     *
     * @param _newVersion asset implementation contract address.
     *
     * @return success.
     */
    function proposeUpgrade(address _newVersion) public onlyAssetOwner() returns(bool) {
        // Should not already be in the upgrading process.
        if (pendingVersion != address(0)) {
            return false;
        }
        // New version address should be other than 0x0.
        if (_newVersion == address(0)) {
            return false;
        }
        // Don't apply freeze-time for the initial setup.
        if (latestVersion == address(0)) {
            latestVersion = _newVersion;
            return true;
        }
        pendingVersion = _newVersion;
        // solhint-disable-next-line not-rely-on-time
        pendingVersionTimestamp = now;
        emit UpgradeProposed(_newVersion);
        return true;
    }

    /**
     * Cancel the pending upgrade process.
     *
     * Can only be called by current asset owner.
     *
     * @return success.
     */
    function purgeUpgrade() public onlyAssetOwner() returns(bool) {
        if (pendingVersion == address(0)) {
            return false;
        }
        emit UpgradePurged(pendingVersion);
        delete pendingVersion;
        delete pendingVersionTimestamp;
        return true;
    }

    /**
     * Finalize an upgrade process setting new asset implementation contract address.
     *
     * Can only be called after an upgrade freeze-time.
     *
     * @return success.
     */
    function commitUpgrade() public returns(bool) {
        if (pendingVersion == address(0)) {
            return false;
        }
        // solhint-disable-next-line not-rely-on-time
        if (pendingVersionTimestamp + UPGRADE_FREEZE_TIME > now) {
            return false;
        }
        latestVersion = pendingVersion;
        delete pendingVersion;
        delete pendingVersionTimestamp;
        emit UpgradeCommited(latestVersion);
        return true;
    }

    /**
     * Disagree with proposed upgrade, and stick with current asset implementation
     * until further explicit agreement to upgrade.
     *
     * @return success.
     */
    function optOut() public returns(bool) {
        if (userOptOutVersion[msg.sender] != address(0)) {
            return false;
        }
        userOptOutVersion[msg.sender] = latestVersion;
        emit OptedOut(msg.sender, latestVersion);
        return true;
    }

    /**
     * Implicitly agree to upgrade to current and future asset implementation upgrades,
     * until further explicit disagreement.
     *
     * @return success.
     */
    function optIn() public returns(bool) {
        delete userOptOutVersion[msg.sender];
        emit OptedIn(msg.sender, latestVersion);
        return true;
    }

    // Backwards compatibility.
    function multiAsset() public view returns(EToken2Interface) {
        return etoken2;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"multiAsset","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"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":false,"inputs":[],"name":"commitUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getLatestVersion","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"_forwardTransferFromWithReference","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":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitApprove","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etoken2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersionTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"purgeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"optIn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_asset","type":"address"},{"name":"_receiver","type":"address"},{"name":"_value","type":"uint256"}],"name":"recoverTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"transferToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_sender","type":"address"}],"name":"_forwardApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"}],"name":"transferToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","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,"stateMutability":"nonpayable","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":"_forwardTransferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"transferFromToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"etoken2Symbol","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersion","outputs":[{"name":"","type":"address"}],"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":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_etoken2","type":"address"},{"name":"_symbol","type":"string"},{"name":"_name","type":"string"}],"name":"init","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"address"}],"name":"proposeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"optOut","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"}],"name":"getVersionFor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newVersion","type":"address"}],"name":"UpgradeProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newVersion","type":"address"}],"name":"UpgradePurged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newVersion","type":"address"}],"name":"UpgradeCommited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"version","type":"address"}],"name":"OptedOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"version","type":"address"}],"name":"OptedIn","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

608060405234801561001057600080fd5b506126bb806100206000396000f3fe6080604052600436106102855760003560e01c80637609c5a911610153578063a525f42c116100cb578063b2b45df51161007f578063d4eec5a611610064578063d4eec5a6146111eb578063dd62ed3e14611200578063fe8beb711461123b57610285565b8063b2b45df51461106e578063c915fc93146111b857610285565b8063a883fb90116100b0578063a883fb9014610f58578063a9059cbb14610f6d578063ac35caee14610fa657610285565b8063a525f42c14610f04578063a66e6e5c14610f4357610285565b806384c5c34d116101225780639ab253cc116101075780639ab253cc14610c195780639b487f3f14610d5b578063a48a663c14610e3557610285565b806384c5c34d14610ab257806395d89b4114610c0457610285565b80637609c5a91461083657806377fe38a4146108fb5780637bcdc2f0146109ba57806381d434e9146109fd57610285565b806323de6651116102015780635b48684e116101b55780636461fe391161019a5780636461fe391461070057806370a08231146107d3578063733480b71461080657610285565b80635b48684e146106a85780635f3e849f146106bd57610285565b8063406838b3116101e6578063406838b3146106695780634bfaf2e81461067e5780634dfe950d1461069357610285565b806323de6651146105fb578063313ce5671461063e57610285565b80630e6d1de91161025857806318160ddd1161023d57806318160ddd1461054e578063233850891461057557806323b872dd146105b857610285565b80630e6d1de91461045b57806314cba0021461047057610285565b8063029a8bf71461033e57806306fdde031461036f578063095ea7b3146103f95780630ba12c8314610446575b61028d61126e565b6001600160a01b031663db00b84834600036336040518563ffffffff1660e01b81526004018080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506000604051808303818588803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050505061033c600161127f565b005b34801561034a57600080fd5b5061035361129a565b604080516001600160a01b039092168252519081900360200190f35b34801561037b57600080fd5b506103846112a9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103be5781810151838201526020016103a6565b50505050905090810190601f1680156103eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040557600080fd5b506104326004803603604081101561041c57600080fd5b506001600160a01b038135169060200135611352565b604080519115158252519081900360200190f35b34801561045257600080fd5b50610432611402565b34801561046757600080fd5b506103536114b6565b34801561047c57600080fd5b50610432600480360360a081101561049357600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506114c59050565b34801561055a57600080fd5b5061056361161d565b60408051918252519081900360200190f35b34801561058157600080fd5b5061033c6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356116b7565b3480156105c457600080fd5b50610432600480360360608110156105db57600080fd5b506001600160a01b0381358116916020810135909116906040013561171a565b34801561060757600080fd5b5061033c6004803603606081101561061e57600080fd5b506001600160a01b03813581169160208101359091169060400135611741565b34801561064a57600080fd5b506106536117a4565b6040805160ff9092168252519081900360200190f35b34801561067557600080fd5b5061035361180d565b34801561068a57600080fd5b5061056361181c565b34801561069f57600080fd5b50610432611822565b3480156106b457600080fd5b5061043261194c565b3480156106c957600080fd5b50610432600480360360608110156106e057600080fd5b506001600160a01b038135811691602081013590911690604001356119d1565b34801561070c57600080fd5b506104326004803603608081101561072357600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561075e57600080fd5b82018360208201111561077057600080fd5b8035906020019184600183028401116401000000008311171561079257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b05945050505050565b3480156107df57600080fd5b50610563600480360360208110156107f657600080fd5b50356001600160a01b0316611c41565b34801561081257600080fd5b506104326004803603604081101561082957600080fd5b5080359060200135611ce7565b34801561084257600080fd5b506104326004803603606081101561085957600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561088457600080fd5b82018360208201111561089657600080fd5b803590602001918460018302840111640100000000831117156108b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611d03915050565b34801561090757600080fd5b506104326004803603606081101561091e57600080fd5b81359160208101359181019060608101604082013564010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d20945050505050565b3480156109c657600080fd5b50610432600480360360608110156109dd57600080fd5b506001600160a01b03813581169160208101359160409091013516611dfb565b348015610a0957600080fd5b5061043260048036036040811015610a2057600080fd5b810190602081018135640100000000811115610a3b57600080fd5b820183602082011115610a4d57600080fd5b80359060200191846001830284011164010000000083111715610a6f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611ed3915050565b348015610abe57600080fd5b5061043260048036036080811015610ad557600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610b0057600080fd5b820183602082011115610b1257600080fd5b80359060200191846001830284011164010000000083111715610b3457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050640100000000811115610b8f57600080fd5b820183602082011115610ba157600080fd5b80359060200191846001830284011164010000000083111715610bc357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611eef945050505050565b348015610c1057600080fd5b50610384611f0e565b348015610c2557600080fd5b5061043260048036036060811015610c3c57600080fd5b810190602081018135640100000000811115610c5757600080fd5b820183602082011115610c6957600080fd5b80359060200191846001830284011164010000000083111715610c8b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050640100000000811115610ce657600080fd5b820183602082011115610cf857600080fd5b80359060200191846001830284011164010000000083111715610d1a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f87945050505050565b348015610d6757600080fd5b50610432600480360360a0811015610d7e57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135640100000000811115610db557600080fd5b820183602082011115610dc757600080fd5b80359060200191846001830284011164010000000083111715610de957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150611f9c9050565b348015610e4157600080fd5b5061043260048036036080811015610e5857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135640100000000811115610e8f57600080fd5b820183602082011115610ea157600080fd5b80359060200191846001830284011164010000000083111715610ec357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506120b8945050505050565b348015610f1057600080fd5b5061043260048036036060811015610f2757600080fd5b506001600160a01b03813516906020810135906040013561215c565b348015610f4f57600080fd5b50610563612179565b348015610f6457600080fd5b5061035361217f565b348015610f7957600080fd5b5061043260048036036040811015610f9057600080fd5b506001600160a01b03813516906020013561218e565b348015610fb257600080fd5b5061043260048036036060811015610fc957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610ff957600080fd5b82018360208201111561100b57600080fd5b8035906020019184600183028401116401000000008311171561102d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121a6945050505050565b34801561107a57600080fd5b506104326004803603606081101561109157600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156110bc57600080fd5b8201836020820111156110ce57600080fd5b803590602001918460018302840111640100000000831117156110f057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561114357600080fd5b82018360208201111561115557600080fd5b8035906020019184600183028401116401000000008311171561117757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612241945050505050565b3480156111c457600080fd5b50610432600480360360208110156111db57600080fd5b50356001600160a01b03166122cc565b3480156111f757600080fd5b5061043261245b565b34801561120c57600080fd5b506105636004803603604081101561122357600080fd5b506001600160a01b038135811691602001351661250d565b34801561124757600080fd5b506103536004803603602081101561125e57600080fd5b50356001600160a01b031661259b565b60006112793361259b565b90505b90565b60003d6000823e818015611291573d82f35b3d82fd5b505050565b6000546001600160a01b031690565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f8101849004840282018401909252818152929183018282801561134a5780601f1061131f5761010080835404028352916020019161134a565b820191906000526020600020905b81548152906001019060200180831161132d57829003601f168201915b505050505081565b600061135c61126e565b604080517fe34f71370000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690523360448301529151929091169163e34f7137916064808201926020929091908290030181600087803b1580156113cf57600080fd5b505af11580156113e3573d6000803e3d6000fd5b505050506040513d60208110156113f957600080fd5b50519392505050565b6005546000906001600160a01b031661141d5750600061127c565b426203f4806006540111156114345750600061127c565b60058054600480546001600160a01b038084167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617928390559216909255600060065560408051929091168252517f3d14778962aac3ae6130883f4c9d2e995d6fc2a644b7867087a59e92b954b4ed916020908290030190a150600190565b6004546001600160a01b031690565b600081336114d28261259b565b6001600160a01b0316141561161357600080546001546040517f161ff6620000000000000000000000000000000000000000000000000000000081526001600160a01b038b8116600483019081528b82166024840152604483018b90526064830184905288821660a484015260c0608484019081528a5160c48501528a51929095169563161ff662958e958e958e9591948e948e949193919260e4019160208701918190849084905b8381101561159357818101518382015260200161157b565b50505050905090810190601f1680156115c05780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1580156115e457600080fd5b505af11580156115f8573d6000803e3d6000fd5b505050506040513d602081101561160e57600080fd5b505191505b5095945050505050565b60008054600154604080517fb524abcf0000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b039092169163b524abcf91602480820192602092909190829003018186803b15801561168657600080fd5b505afa15801561169a573d6000803e3d6000fd5b505050506040513d60208110156116b057600080fd5b5051905090565b6000546001600160a01b031633141561129557816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061173784848460405180602001604052806000815250611b05565b90505b9392505050565b6000546001600160a01b031633141561129557816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008054600154604080517fdc86e6f00000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b039092169163dc86e6f091602480820192602092909190829003018186803b15801561168657600080fd5b6000546001600160a01b031681565b60065490565b60008054600154604080517fe96b462a0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252516001600160a01b039092169163e96b462a91604480820192602092909190829003018186803b15801561189157600080fd5b505afa1580156118a5573d6000803e3d6000fd5b505050506040513d60208110156118bb57600080fd5b50511561127c576005546001600160a01b03166118da5750600061127c565b600554604080516001600160a01b039092168252517f076759518ae32ffdfd36b17503d14cdd8042c074645c635aa26dceea2719acef9181900360200190a150600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556000600655600190565b33600081815260076020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560045481519485526001600160a01b031691840191909152805191927fd70d37e6618959bdba868db2d4138b221ef96101565dfc1a0bd38af1d3ab63c1929081900390910190a150600190565b60008054600154604080517fe96b462a0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252516001600160a01b039092169163e96b462a91604480820192602092909190829003018186803b158015611a4057600080fd5b505afa158015611a54573d6000803e3d6000fd5b505050506040513d6020811015611a6a57600080fd5b50511561173a57836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ad157600080fd5b505af1158015611ae5573d6000803e3d6000fd5b505050506040513d6020811015611afb57600080fd5b5051949350505050565b6000611b0f61126e565b6001600160a01b031663cca9702586868686336040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015611bbc578181015183820152602001611ba4565b50505050905090810190601f168015611be95780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611c0c57600080fd5b505af1158015611c20573d6000803e3d6000fd5b505050506040513d6020811015611c3657600080fd5b505195945050505050565b60008054600154604080517f4d30b6be0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482019390935290519190921691634d30b6be916044808301926020929190829003018186803b158015611cb357600080fd5b505afa158015611cc7573d6000803e3d6000fd5b505050506040513d6020811015611cdd57600080fd5b505190505b919050565b600061173a838360405180602001604052806000815250611d20565b600061173784848460405180602001604052806000815250611eef565b6000611d2a61126e565b6001600160a01b031663c10796df858585336040518563ffffffff1660e01b81526004018085815260200184815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015611dac578181015183820152602001611d94565b50505050905090810190601f168015611dd95780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611ad157600080fd5b60008133611e088261259b565b6001600160a01b03161415611ecb5760008054600154604080517f14712e2f0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018a905260448201939093528783166064820152905191909216926314712e2f92608480820193602093909283900390910190829087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b505050506040513d6020811015611ec657600080fd5b505191505b509392505050565b600061173a838360405180602001604052806000815250611f87565b6000611f0585611efe866125f0565b85856120b8565b95945050505050565b6003805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561134a5780601f1061131f5761010080835404028352916020019161134a565b6000611737611f95856125f0565b8484611d20565b60008133611fa98261259b565b6001600160a01b03161415611613576000809054906101000a90046001600160a01b03166001600160a01b031663a69032ee88888888886040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015612068578181015183820152602001612050565b50505050905090810190601f1680156120955780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156115e457600080fd5b60006120c261126e565b6001600160a01b031663eb58705b86868686336040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001836001600160a01b03166001600160a01b031681526020018281038252848181518152602001915080519060200190808383600083811015611bbc578181015183820152602001611ba4565b6000611737848484604051806020016040528060008152506120b8565b60015481565b6005546001600160a01b031690565b600061173a8383604051806020016040528060008152505b60006121b061126e565b6040517f1962df710000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483019081526024830187905233606484018190526080604485019081528751608486015287519590931694631962df71948a948a948a9493909260a40190602086019080838360008315611dac578181015183820152602001611d94565b600080546001600160a01b03161561225b5750600061173a565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616179055612297836125f0565b60015581516122ad9060029060208501906125f7565b5082516122c19060039060208601906125f7565b506001949350505050565b60008054600154604080517fe96b462a0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252516001600160a01b039092169163e96b462a91604480820192602092909190829003018186803b15801561233b57600080fd5b505afa15801561234f573d6000803e3d6000fd5b505050506040513d602081101561236557600080fd5b505115611ce2576005546001600160a01b03161561238557506000611ce2565b6001600160a01b03821661239b57506000611ce2565b6004546001600160a01b03166123e65750600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556001611ce2565b600580546001600160a01b0384167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091554260065560408051918252517f8ddc9aa7b538ef74fb9f825a27578614d8cd88e4062392c6613d2d65ed987d769181900360200190a1506001919050565b336000908152600760205260408120546001600160a01b0316156124815750600061127c565b600480543360008181526007602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03958616179055935481519283529092169281019290925280517fe1dc7792699a69777c1f0b1695b7c1b9a2677af13bb0b61b9b9b975d30acf7b29281900390910190a150600190565b60008054600154604080517f1c8d5d380000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301528681166024830152604482019390935290519190921691631c8d5d38916064808301926020929190829003018186803b15801561258757600080fd5b505afa1580156113e3573d6000803e3d6000fd5b6001600160a01b03818116600090815260076020526040812054909116156125dd576001600160a01b03808316600090815260076020526040902054166125ea565b6004546001600160a01b03165b92915050565b6020015190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061263857805160ff1916838001178555612665565b82800160010185558215612665579182015b8281111561266557825182559160200191906001019061264a565b50612671929150612675565b5090565b61127c91905b80821115612671576000815560010161267b56fea165627a7a72305820154bd9f5278cc0eca8563343acc16bf5fc6717560cdf3c21a0719f7755eb4bd70029

Deployed Bytecode

0x6080604052600436106102855760003560e01c80637609c5a911610153578063a525f42c116100cb578063b2b45df51161007f578063d4eec5a611610064578063d4eec5a6146111eb578063dd62ed3e14611200578063fe8beb711461123b57610285565b8063b2b45df51461106e578063c915fc93146111b857610285565b8063a883fb90116100b0578063a883fb9014610f58578063a9059cbb14610f6d578063ac35caee14610fa657610285565b8063a525f42c14610f04578063a66e6e5c14610f4357610285565b806384c5c34d116101225780639ab253cc116101075780639ab253cc14610c195780639b487f3f14610d5b578063a48a663c14610e3557610285565b806384c5c34d14610ab257806395d89b4114610c0457610285565b80637609c5a91461083657806377fe38a4146108fb5780637bcdc2f0146109ba57806381d434e9146109fd57610285565b806323de6651116102015780635b48684e116101b55780636461fe391161019a5780636461fe391461070057806370a08231146107d3578063733480b71461080657610285565b80635b48684e146106a85780635f3e849f146106bd57610285565b8063406838b3116101e6578063406838b3146106695780634bfaf2e81461067e5780634dfe950d1461069357610285565b806323de6651146105fb578063313ce5671461063e57610285565b80630e6d1de91161025857806318160ddd1161023d57806318160ddd1461054e578063233850891461057557806323b872dd146105b857610285565b80630e6d1de91461045b57806314cba0021461047057610285565b8063029a8bf71461033e57806306fdde031461036f578063095ea7b3146103f95780630ba12c8314610446575b61028d61126e565b6001600160a01b031663db00b84834600036336040518563ffffffff1660e01b81526004018080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506000604051808303818588803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050505061033c600161127f565b005b34801561034a57600080fd5b5061035361129a565b604080516001600160a01b039092168252519081900360200190f35b34801561037b57600080fd5b506103846112a9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103be5781810151838201526020016103a6565b50505050905090810190601f1680156103eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040557600080fd5b506104326004803603604081101561041c57600080fd5b506001600160a01b038135169060200135611352565b604080519115158252519081900360200190f35b34801561045257600080fd5b50610432611402565b34801561046757600080fd5b506103536114b6565b34801561047c57600080fd5b50610432600480360360a081101561049357600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506114c59050565b34801561055a57600080fd5b5061056361161d565b60408051918252519081900360200190f35b34801561058157600080fd5b5061033c6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356116b7565b3480156105c457600080fd5b50610432600480360360608110156105db57600080fd5b506001600160a01b0381358116916020810135909116906040013561171a565b34801561060757600080fd5b5061033c6004803603606081101561061e57600080fd5b506001600160a01b03813581169160208101359091169060400135611741565b34801561064a57600080fd5b506106536117a4565b6040805160ff9092168252519081900360200190f35b34801561067557600080fd5b5061035361180d565b34801561068a57600080fd5b5061056361181c565b34801561069f57600080fd5b50610432611822565b3480156106b457600080fd5b5061043261194c565b3480156106c957600080fd5b50610432600480360360608110156106e057600080fd5b506001600160a01b038135811691602081013590911690604001356119d1565b34801561070c57600080fd5b506104326004803603608081101561072357600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561075e57600080fd5b82018360208201111561077057600080fd5b8035906020019184600183028401116401000000008311171561079257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b05945050505050565b3480156107df57600080fd5b50610563600480360360208110156107f657600080fd5b50356001600160a01b0316611c41565b34801561081257600080fd5b506104326004803603604081101561082957600080fd5b5080359060200135611ce7565b34801561084257600080fd5b506104326004803603606081101561085957600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561088457600080fd5b82018360208201111561089657600080fd5b803590602001918460018302840111640100000000831117156108b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611d03915050565b34801561090757600080fd5b506104326004803603606081101561091e57600080fd5b81359160208101359181019060608101604082013564010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d20945050505050565b3480156109c657600080fd5b50610432600480360360608110156109dd57600080fd5b506001600160a01b03813581169160208101359160409091013516611dfb565b348015610a0957600080fd5b5061043260048036036040811015610a2057600080fd5b810190602081018135640100000000811115610a3b57600080fd5b820183602082011115610a4d57600080fd5b80359060200191846001830284011164010000000083111715610a6f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611ed3915050565b348015610abe57600080fd5b5061043260048036036080811015610ad557600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610b0057600080fd5b820183602082011115610b1257600080fd5b80359060200191846001830284011164010000000083111715610b3457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050640100000000811115610b8f57600080fd5b820183602082011115610ba157600080fd5b80359060200191846001830284011164010000000083111715610bc357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611eef945050505050565b348015610c1057600080fd5b50610384611f0e565b348015610c2557600080fd5b5061043260048036036060811015610c3c57600080fd5b810190602081018135640100000000811115610c5757600080fd5b820183602082011115610c6957600080fd5b80359060200191846001830284011164010000000083111715610c8b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050640100000000811115610ce657600080fd5b820183602082011115610cf857600080fd5b80359060200191846001830284011164010000000083111715610d1a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f87945050505050565b348015610d6757600080fd5b50610432600480360360a0811015610d7e57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135640100000000811115610db557600080fd5b820183602082011115610dc757600080fd5b80359060200191846001830284011164010000000083111715610de957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150611f9c9050565b348015610e4157600080fd5b5061043260048036036080811015610e5857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135640100000000811115610e8f57600080fd5b820183602082011115610ea157600080fd5b80359060200191846001830284011164010000000083111715610ec357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506120b8945050505050565b348015610f1057600080fd5b5061043260048036036060811015610f2757600080fd5b506001600160a01b03813516906020810135906040013561215c565b348015610f4f57600080fd5b50610563612179565b348015610f6457600080fd5b5061035361217f565b348015610f7957600080fd5b5061043260048036036040811015610f9057600080fd5b506001600160a01b03813516906020013561218e565b348015610fb257600080fd5b5061043260048036036060811015610fc957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610ff957600080fd5b82018360208201111561100b57600080fd5b8035906020019184600183028401116401000000008311171561102d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121a6945050505050565b34801561107a57600080fd5b506104326004803603606081101561109157600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156110bc57600080fd5b8201836020820111156110ce57600080fd5b803590602001918460018302840111640100000000831117156110f057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561114357600080fd5b82018360208201111561115557600080fd5b8035906020019184600183028401116401000000008311171561117757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612241945050505050565b3480156111c457600080fd5b50610432600480360360208110156111db57600080fd5b50356001600160a01b03166122cc565b3480156111f757600080fd5b5061043261245b565b34801561120c57600080fd5b506105636004803603604081101561122357600080fd5b506001600160a01b038135811691602001351661250d565b34801561124757600080fd5b506103536004803603602081101561125e57600080fd5b50356001600160a01b031661259b565b60006112793361259b565b90505b90565b60003d6000823e818015611291573d82f35b3d82fd5b505050565b6000546001600160a01b031690565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f8101849004840282018401909252818152929183018282801561134a5780601f1061131f5761010080835404028352916020019161134a565b820191906000526020600020905b81548152906001019060200180831161132d57829003601f168201915b505050505081565b600061135c61126e565b604080517fe34f71370000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690523360448301529151929091169163e34f7137916064808201926020929091908290030181600087803b1580156113cf57600080fd5b505af11580156113e3573d6000803e3d6000fd5b505050506040513d60208110156113f957600080fd5b50519392505050565b6005546000906001600160a01b031661141d5750600061127c565b426203f4806006540111156114345750600061127c565b60058054600480546001600160a01b038084167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617928390559216909255600060065560408051929091168252517f3d14778962aac3ae6130883f4c9d2e995d6fc2a644b7867087a59e92b954b4ed916020908290030190a150600190565b6004546001600160a01b031690565b600081336114d28261259b565b6001600160a01b0316141561161357600080546001546040517f161ff6620000000000000000000000000000000000000000000000000000000081526001600160a01b038b8116600483019081528b82166024840152604483018b90526064830184905288821660a484015260c0608484019081528a5160c48501528a51929095169563161ff662958e958e958e9591948e948e949193919260e4019160208701918190849084905b8381101561159357818101518382015260200161157b565b50505050905090810190601f1680156115c05780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1580156115e457600080fd5b505af11580156115f8573d6000803e3d6000fd5b505050506040513d602081101561160e57600080fd5b505191505b5095945050505050565b60008054600154604080517fb524abcf0000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b039092169163b524abcf91602480820192602092909190829003018186803b15801561168657600080fd5b505afa15801561169a573d6000803e3d6000fd5b505050506040513d60208110156116b057600080fd5b5051905090565b6000546001600160a01b031633141561129557816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061173784848460405180602001604052806000815250611b05565b90505b9392505050565b6000546001600160a01b031633141561129557816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008054600154604080517fdc86e6f00000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b039092169163dc86e6f091602480820192602092909190829003018186803b15801561168657600080fd5b6000546001600160a01b031681565b60065490565b60008054600154604080517fe96b462a0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252516001600160a01b039092169163e96b462a91604480820192602092909190829003018186803b15801561189157600080fd5b505afa1580156118a5573d6000803e3d6000fd5b505050506040513d60208110156118bb57600080fd5b50511561127c576005546001600160a01b03166118da5750600061127c565b600554604080516001600160a01b039092168252517f076759518ae32ffdfd36b17503d14cdd8042c074645c635aa26dceea2719acef9181900360200190a150600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556000600655600190565b33600081815260076020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560045481519485526001600160a01b031691840191909152805191927fd70d37e6618959bdba868db2d4138b221ef96101565dfc1a0bd38af1d3ab63c1929081900390910190a150600190565b60008054600154604080517fe96b462a0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252516001600160a01b039092169163e96b462a91604480820192602092909190829003018186803b158015611a4057600080fd5b505afa158015611a54573d6000803e3d6000fd5b505050506040513d6020811015611a6a57600080fd5b50511561173a57836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ad157600080fd5b505af1158015611ae5573d6000803e3d6000fd5b505050506040513d6020811015611afb57600080fd5b5051949350505050565b6000611b0f61126e565b6001600160a01b031663cca9702586868686336040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015611bbc578181015183820152602001611ba4565b50505050905090810190601f168015611be95780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611c0c57600080fd5b505af1158015611c20573d6000803e3d6000fd5b505050506040513d6020811015611c3657600080fd5b505195945050505050565b60008054600154604080517f4d30b6be0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482019390935290519190921691634d30b6be916044808301926020929190829003018186803b158015611cb357600080fd5b505afa158015611cc7573d6000803e3d6000fd5b505050506040513d6020811015611cdd57600080fd5b505190505b919050565b600061173a838360405180602001604052806000815250611d20565b600061173784848460405180602001604052806000815250611eef565b6000611d2a61126e565b6001600160a01b031663c10796df858585336040518563ffffffff1660e01b81526004018085815260200184815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015611dac578181015183820152602001611d94565b50505050905090810190601f168015611dd95780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611ad157600080fd5b60008133611e088261259b565b6001600160a01b03161415611ecb5760008054600154604080517f14712e2f0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018a905260448201939093528783166064820152905191909216926314712e2f92608480820193602093909283900390910190829087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b505050506040513d6020811015611ec657600080fd5b505191505b509392505050565b600061173a838360405180602001604052806000815250611f87565b6000611f0585611efe866125f0565b85856120b8565b95945050505050565b6003805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561134a5780601f1061131f5761010080835404028352916020019161134a565b6000611737611f95856125f0565b8484611d20565b60008133611fa98261259b565b6001600160a01b03161415611613576000809054906101000a90046001600160a01b03166001600160a01b031663a69032ee88888888886040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015612068578181015183820152602001612050565b50505050905090810190601f1680156120955780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156115e457600080fd5b60006120c261126e565b6001600160a01b031663eb58705b86868686336040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001836001600160a01b03166001600160a01b031681526020018281038252848181518152602001915080519060200190808383600083811015611bbc578181015183820152602001611ba4565b6000611737848484604051806020016040528060008152506120b8565b60015481565b6005546001600160a01b031690565b600061173a8383604051806020016040528060008152505b60006121b061126e565b6040517f1962df710000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483019081526024830187905233606484018190526080604485019081528751608486015287519590931694631962df71948a948a948a9493909260a40190602086019080838360008315611dac578181015183820152602001611d94565b600080546001600160a01b03161561225b5750600061173a565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616179055612297836125f0565b60015581516122ad9060029060208501906125f7565b5082516122c19060039060208601906125f7565b506001949350505050565b60008054600154604080517fe96b462a0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252516001600160a01b039092169163e96b462a91604480820192602092909190829003018186803b15801561233b57600080fd5b505afa15801561234f573d6000803e3d6000fd5b505050506040513d602081101561236557600080fd5b505115611ce2576005546001600160a01b03161561238557506000611ce2565b6001600160a01b03821661239b57506000611ce2565b6004546001600160a01b03166123e65750600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556001611ce2565b600580546001600160a01b0384167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091554260065560408051918252517f8ddc9aa7b538ef74fb9f825a27578614d8cd88e4062392c6613d2d65ed987d769181900360200190a1506001919050565b336000908152600760205260408120546001600160a01b0316156124815750600061127c565b600480543360008181526007602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03958616179055935481519283529092169281019290925280517fe1dc7792699a69777c1f0b1695b7c1b9a2677af13bb0b61b9b9b975d30acf7b29281900390910190a150600190565b60008054600154604080517f1c8d5d380000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301528681166024830152604482019390935290519190921691631c8d5d38916064808301926020929190829003018186803b15801561258757600080fd5b505afa1580156113e3573d6000803e3d6000fd5b6001600160a01b03818116600090815260076020526040812054909116156125dd576001600160a01b03808316600090815260076020526040902054166125ea565b6004546001600160a01b03165b92915050565b6020015190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061263857805160ff1916838001178555612665565b82800160010185558215612665579182015b8281111561266557825182559160200191906001019061264a565b50612671929150612675565b5090565b61127c91905b80821115612671576000815560010161267b56fea165627a7a72305820154bd9f5278cc0eca8563343acc16bf5fc6717560cdf3c21a0719f7755eb4bd70029

Deployed Bytecode Sourcemap

7580:18475:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19462:11;:9;:11::i;:::-;-1:-1:-1;;;;;19462:27:0;;19496:9;19507:8;;19517:10;19462:66;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19462:66:0;-1:-1:-1;;;;;19462:66:0;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19462:66:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19462:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19462:66:0;;;;;19539:23;19557:4;19539:17;:23::i;:::-;7580:18475;25959:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25959:93:0;;;:::i;:::-;;;;-1:-1:-1;;;;;25959:93:0;;;;;;;;;;;;;;7858:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7858:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7858:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17852:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17852:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17852:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;24610:480;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24610:480:0;;;:::i;22282:96::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22282:96:0;;;:::i;14735:439::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14735:439:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;14735:439:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;14735:439:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14735:439:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14735:439:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14735:439:0;;-1:-1:-1;;;14735:439:0;;-1:-1:-1;;;;;14735:439:0;;-1:-1:-1;14735:439:0;;-1:-1:-1;14735:439:0:i;9755:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9755:109:0;;;:::i;:::-;;;;;;;;;;;;;;;;19082:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19082:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19082:145:0;;;;;;;;;;;;;;;;;:::i;13202:159::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13202:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13202:159:0;;;;;;;;;;;;;;;;;:::i;18772:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18772:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18772:136:0;;;;;;;;;;;;;;;;;:::i;10664:104::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10664:104:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7703:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7703:31:0;;;:::i;22746:113::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22746:113:0;;;:::i;24106:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24106:293:0;;;:::i;25753:165::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25753:165:0;;;:::i;9468:181::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9468:181:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9468:181:0;;;;;;;;;;;;;;;;;:::i;13879:356::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13879:356:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;13879:356:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;13879:356:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13879:356:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13879:356:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13879:356:0;;-1:-1:-1;13879:356:0;;-1:-1:-1;;;;;13879:356:0:i;10031:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10031:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10031:127:0;-1:-1:-1;;;;;10031:127:0;;:::i;12044:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12044:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12044:145:0;;;;;;;:::i;20033:195::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20033:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;20033:195:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20033:195:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20033:195:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20033:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20033:195:0;;-1:-1:-1;;20033:195:0;;;-1:-1:-1;20033:195:0;;-1:-1:-1;;20033:195:0:i;12657:271::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12657:271:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12657:271:0;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;12657:271:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12657:271:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12657:271:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12657:271:0;;-1:-1:-1;12657:271:0;;-1:-1:-1;;;;;12657:271:0:i;18385:218::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18385:218:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18385:218:0;;;;;;;;;;;;;;;;;:::i;19653:151::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19653:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19653:151:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19653:151:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19653:151:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19653:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19653:151:0;;-1:-1:-1;;19653:151:0;;;-1:-1:-1;19653:151:0;;-1:-1:-1;;19653:151:0:i;20236:280::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20236:280:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;20236:280:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20236:280:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20236:280:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20236:280:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20236:280:0;;;;;;;;;-1:-1:-1;20236:280:0;;;;-1:-1:-1;20236:280:0;;;;-1:-1:-1;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;20236:280:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20236:280:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20236:280:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20236:280:0;;-1:-1:-1;20236:280:0;;-1:-1:-1;;;;;20236:280:0:i;7883:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7883:20:0;;;:::i;19812:213::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19812:213:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19812:213:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19812:213:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19812:213:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19812:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19812:213:0;;;;;;;;;-1:-1:-1;19812:213:0;;;;-1:-1:-1;19812:213:0;;;;-1:-1:-1;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;19812:213:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19812:213:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19812:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19812:213:0;;-1:-1:-1;19812:213:0;;-1:-1:-1;;;;;19812:213:0:i;17066:427::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17066:427:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;17066:427:0;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;17066:427:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17066:427:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17066:427:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17066:427:0;;-1:-1:-1;;;17066:427:0;;-1:-1:-1;;;;;17066:427:0;;-1:-1:-1;17066:427:0;;-1:-1:-1;17066:427:0:i;16166:372::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16166:372:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;16166:372:0;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;16166:372:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16166:372:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16166:372:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16166:372:0;;-1:-1:-1;16166:372:0;;-1:-1:-1;;;;;16166:372:0:i;15458:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15458:180:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15458:180:0;;;;;;;;;;;;;:::i;7779:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7779:28:0;;;:::i;22536:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22536:98:0;;;:::i;10994:129::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10994:129:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10994:129:0;;;;;;;;:::i;11593:227::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11593:227:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;11593:227:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11593:227:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11593:227:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11593:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11593:227:0;;-1:-1:-1;11593:227:0;;-1:-1:-1;;;;;11593:227:0:i;8190:358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8190:358:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;8190:358:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8190:358:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8190:358:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8190:358:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8190:358:0;;;;;;;;-1:-1:-1;8190:358:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;8190:358:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8190:358:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8190:358:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8190:358:0;;-1:-1:-1;8190:358:0;;-1:-1:-1;;;;;8190:358:0:i;23190:754::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23190:754:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23190:754:0;-1:-1:-1;;;;;23190:754:0;;:::i;25286:274::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25286:274:0;;;:::i;10413:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10413:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10413:153:0;;;;;;;;;;:::i;21937:193::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21937:193:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21937:193:0;-1:-1:-1;;;;;21937:193:0;;:::i;9066:126::-;9109:14;9158:25;9172:10;9158:13;:25::i;:::-;9136:48;;9066:126;;:::o;5641:346::-;5755:1;5805:14;5802:1;5785:15;5770:50;5841:8;5850:50;;;;5952:14;5935:15;5928:39;5850:50;5883:14;5866:15;5859:39;5834:135;;5717:263;;:::o;25959:93::-;26001:16;26037:7;-1:-1:-1;;;;;26037:7:0;25959:93;:::o;7858:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17852:152::-;17915:4;17939:11;:9;:11::i;:::-;:57;;;;;;-1:-1:-1;;;;;17939:57:0;;;;;;;;;;;;;17985:10;17939:57;;;;;;:27;;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;17939:27:0;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;17939:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17939:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17939:57:0;;17852:152;-1:-1:-1;;;17852:152:0:o;24610:480::-;24671:14;;24650:4;;-1:-1:-1;;;;;24671:14:0;24667:73;;-1:-1:-1;24723:5:0;24716:12;;24667:73;24857:3;21285:6;24809:23;;:45;:51;24805:96;;;-1:-1:-1;24884:5:0;24877:12;;24805:96;24927:14;;;24911:13;:30;;-1:-1:-1;;;;;24927:14:0;;;24911:30;;;;;;;;;24952:21;;;;;-1:-1:-1;24991:23:0;24984:30;25030;;;25046:13;;;;25030:30;;;;;;;;;;;;;-1:-1:-1;25078:4:0;24610:480;:::o;22282:96::-;22357:13;;-1:-1:-1;;;;;22357:13:0;22282:96;:::o;14735:439::-;14959:4;14942:7;21680:10;21654:22;14942:7;21654:13;:22::i;:::-;-1:-1:-1;;;;;21654:36:0;;21650:70;;;14983:7;;;;15095:13;14983:183;;;;;-1:-1:-1;;;;;14983:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;;;;;:38;;15036:5;;15056:3;;15074:6;;15095:13;;15123:10;;15148:7;;14983:183;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14983:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14983:183:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14983:183:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14983:183:0;;-1:-1:-1;21707:1:0;14735:439;;;;;;;;:::o;9755:109::-;9798:4;9822:7;;;9842:13;9822:34;;;;;;;;;;;;;;-1:-1:-1;;;;;9822:7:0;;;;:19;;:34;;;;;;;;;;;;;;;:7;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;9822:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9822:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9822:34:0;;-1:-1:-1;9755:109:0;:::o;19082:145::-;8675:7;;-1:-1:-1;;;;;8675:7:0;8653:10;:30;8649:64;;;19202:8;-1:-1:-1;;;;;19186:33:0;19195:5;-1:-1:-1;;;;;19186:33:0;;19212:6;19186:33;;;;;;;;;;;;;;;;;;19082:145;;;:::o;13202:159::-;13280:4;13304:49;13330:5;13337:3;13342:6;13304:49;;;;;;;;;;;;:25;:49::i;:::-;13297:56;;13202:159;;;;;;:::o;18772:136::-;8675:7;;-1:-1:-1;;;;;8675:7:0;8653:10;:30;8649:64;;;18888:3;-1:-1:-1;;;;;18872:28:0;18881:5;-1:-1:-1;;;;;18872:28:0;;18893:6;18872:28;;;;;;;;;;;;;;;;;;18772:136;;;:::o;10664:104::-;10704:5;10729:7;;;10746:13;10729:31;;;;;;;;;;;;;;-1:-1:-1;;;;;10729:7:0;;;;:16;;:31;;;;;;;;;;;;;;;:7;:31;;;5:2:-1;;;;30:1;27;20:12;7703:31:0;;;-1:-1:-1;;;;;7703:31:0;;:::o;22746:113::-;22828:23;;22746:113;:::o;24106:293::-;24162:4;8840:7;;;8868:13;8840:42;;;;;;8856:10;8840:42;;;;;;;;;;;;-1:-1:-1;;;;;8840:7:0;;;;:15;;:42;;;;;;;;;;;;;;;:7;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;8840:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8840:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8840:42:0;8836:76;;;24183:14;;-1:-1:-1;;;;;24183:14:0;24179:73;;-1:-1:-1;24235:5:0;24228:12;;24179:73;24281:14;;24267:29;;;-1:-1:-1;;;;;24281:14:0;;;24267:29;;;;;;;;;;;;-1:-1:-1;24314:14:0;24307:21;;;;;;24314:14;24346:23;24339:30;24307:21;24106:293;:::o;25753:165::-;25827:10;25785:4;25809:29;;;:17;:29;;;;;;;;25802:36;;;;;;25874:13;;25854:34;;;;;-1:-1:-1;;;;;25874:13:0;25854:34;;;;;;;;;25785:4;;25854:34;;;;;;;;;;;-1:-1:-1;25906:4:0;25753:165;:::o;9468:181::-;9583:4;8840:7;;;8868:13;8840:42;;;;;;8856:10;8840:42;;;;;;;;;;;;-1:-1:-1;;;;;8840:7:0;;;;:15;;:42;;;;;;;;;;;;;;;:7;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;8840:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8840:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8840:42:0;8836:76;;;9607:6;-1:-1:-1;;;;;9607:15:0;;9623:9;9634:6;9607:34;;;;;;;;;;;;;-1:-1:-1;;;;;9607:34:0;-1:-1:-1;;;;;9607:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9607:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9607:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9607:34:0;;9468:181;-1:-1:-1;;;;9468:181:0:o;13879:356::-;14038:4;14062:11;:9;:11::i;:::-;-1:-1:-1;;;;;14062:45:0;;14122:5;14142:3;14160:6;14181:10;14206;14062:165;;;;;;;;;;;;;-1:-1:-1;;;;;14062:165:0;-1:-1:-1;;;;;14062:165:0;;;;;;-1:-1:-1;;;;;14062:165:0;-1:-1:-1;;;;;14062:165:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14062:165:0;-1:-1:-1;;;;;14062:165:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14062:165:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14062:165:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14062:165:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14062:165:0;;13879:356;-1:-1:-1;;;;;13879:356:0:o;10031:127::-;10086:4;10110:7;;;10136:13;10110:40;;;;;;-1:-1:-1;;;;;10110:40:0;;;;;;;;;;;;;;;;:7;;;;;:17;;:40;;;;;;;;;;;;;;:7;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;10110:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10110:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10110:40:0;;-1:-1:-1;10031:127:0;;;;:::o;12044:145::-;12111:4;12135:46;12163:5;12170:6;12135:46;;;;;;;;;;;;:27;:46::i;20033:195::-;20134:4;20163:57;20195:5;20202;20209:6;20163:57;;;;;;;;;;;;:31;:57::i;12657:271::-;12796:4;12820:11;:9;:11::i;:::-;-1:-1:-1;;;;;12820:47:0;;12882:5;12889:6;12897:10;12909;12820:100;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12820:100:0;-1:-1:-1;;;;;12820:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12820:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;18385:218:0;18509:4;18492:7;21680:10;21654:22;18492:7;21654:13;:22::i;:::-;-1:-1:-1;;;;;21654:36:0;;21650:70;;;18533:7;;;;18572:13;18533:62;;;;;;-1:-1:-1;;;;;18533:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;;;;;:20;;:62;;;;;;;;;;;;;;;;;;:7;:62;;;5:2:-1;;;;30:1;27;20:12;5:2;18533:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18533:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18533:62:0;;-1:-1:-1;21707:1:0;18385:218;;;;;;:::o;19653:151::-;19726:4;19750:46;19778:5;19785:6;19750:46;;;;;;;;;;;;:27;:46::i;20236:280::-;20409:4;20433:75;20465:5;20472:15;20481:5;20472:8;:15::i;:::-;20489:6;20497:10;20433:31;:75::i;:::-;20426:82;20236:280;-1:-1:-1;;;;;20236:280:0:o;7883:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19812:213;19929:4;19953:64;19981:15;19990:5;19981:8;:15::i;:::-;19998:6;20006:10;19953:27;:64::i;17066:427::-;17298:4;17281:7;21680:10;21654:22;17281:7;21654:13;:22::i;:::-;-1:-1:-1;;;;;21654:36:0;;21650:70;;;17322:7;;;;;;;;;-1:-1:-1;;;;;17322:7:0;-1:-1:-1;;;;;17322:44:0;;17381:5;17401;17421:6;17442:10;17467:7;17322:163;;;;;;;;;;;;;-1:-1:-1;;;;;17322:163:0;-1:-1:-1;;;;;17322:163:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17322:163:0;-1:-1:-1;;;;;17322:163:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17322:163:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;16166:372:0;16333:4;16357:11;:9;:11::i;:::-;-1:-1:-1;;;;;16357:51:0;;16423:5;16443;16463:6;16484:10;16509;16357:173;;;;;;;;;;;;;-1:-1:-1;;;;;16357:173:0;-1:-1:-1;;;;;16357:173:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16357:173:0;-1:-1:-1;;;;;16357:173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15458:180:0;15549:4;15573:57;15605:5;15612;15619:6;15573:57;;;;;;;;;;;;:31;:57::i;7779:28::-;;;;:::o;22536:98::-;22612:14;;-1:-1:-1;;;;;22612:14:0;22536:98;:::o;10994:129::-;11053:4;11077:38;11099:3;11104:6;11077:38;;;;;;;;;;;;11593:227;11696:4;11720:11;:9;:11::i;:::-;:92;;;;;-1:-1:-1;;;;;11720:92:0;;;;;;;;;;;;;;;11801:10;11720:92;;;;;;;;;;;;;;;;;;;;;:41;;;;;;;11776:3;;11781:6;;11789:10;;11801;11720:92;;;;;;;;;;;;-1:-1:-1;27:10;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;8190:358:0;8299:4;8333:7;;-1:-1:-1;;;;;8333:7:0;8325:30;8321:75;;-1:-1:-1;8379:5:0;8372:12;;8321:75;8406:7;:18;;;;-1:-1:-1;;;;;8406:18:0;;;;;8451:17;8460:7;8451:8;:17::i;:::-;8435:13;:33;8479:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;8502:16:0;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;8536:4:0;;8190:358;-1:-1:-1;;;;8190:358:0:o;23190:754::-;23267:4;8840:7;;;8868:13;8840:42;;;;;;8856:10;8840:42;;;;;;;;;;;;-1:-1:-1;;;;;8840:7:0;;;;:15;;:42;;;;;;;;;;;;;;;:7;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;8840:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8840:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8840:42:0;8836:76;;;23348:14;;-1:-1:-1;;;;;23348:14:0;:28;23344:73;;-1:-1:-1;23400:5:0;23393:12;;23344:73;-1:-1:-1;;;;;23489:25:0;;23485:70;;-1:-1:-1;23538:5:0;23531:12;;23485:70;23628:13;;-1:-1:-1;;;;;23628:13:0;23624:113;;-1:-1:-1;23672:13:0;:27;;;;-1:-1:-1;;;;;23672:27:0;;;;;-1:-1:-1;23714:11:0;;23624:113;23747:14;:28;;-1:-1:-1;;;;;23747:28:0;;;;;;;;;;;23867:3;23841:23;:29;23886:28;;;;;;;;;;;;;;;;-1:-1:-1;23932:4:0;23190:754;;;:::o;25286:274::-;25358:10;25319:4;25340:29;;;:17;:29;;;;;;-1:-1:-1;;;;;25340:29:0;:43;25336:88;;-1:-1:-1;25407:5:0;25400:12;;25336:88;25466:13;;;25452:10;25466:13;25434:29;;;:17;:29;;;;;;;;;:45;;;;-1:-1:-1;;;;;25466:13:0;;;25434:45;;;25516:13;;25495:35;;;;;25516:13;;;25495:35;;;;;;;;;;;;;;;;;;;-1:-1:-1;25548:4:0;25286:274;:::o;10413:153::-;10485:4;10509:7;;;10544:13;10509:49;;;;;;-1:-1:-1;;;;;10509:49:0;;;;;;;;;;;;;;;;;;;;;;;:7;;;;;:17;;:49;;;;;;;;;;;;;;:7;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;10509:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;21937:193:0;-1:-1:-1;;;;;22024:26:0;;;21997:7;22024:26;;;:17;:26;;;;;;21997:7;;22024:26;:40;:98;;-1:-1:-1;;;;;22096:26:0;;;;;;;:17;:26;;;;;;;22024:98;;;22080:13;;-1:-1:-1;;;;;22080:13:0;22024:98;22017:105;21937:193;-1:-1:-1;;21937:193:0:o;5356:163::-;5497:2;5485:15;5479:22;;5454:58::o;7580:18475::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7580:18475:0;;;-1:-1:-1;7580:18475:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://154bd9f5278cc0eca8563343acc16bf5fc6717560cdf3c21a0719f7755eb4bd7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.