ETH Price: $3,415.95 (+4.84%)

Contract

0x95bf7E307BC1ab0BA38ae10fc27084bC36FcD605
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

ColossusXT (eCOLX) (@$0.0009)
Transaction Hash
Method
Block
From
To
Swapin138157952021-12-16 10:52:431103 days ago1639651963IN
ColossusXT: eCOLX Token
0 ETH0.0015231739.14004066
Swapin138157202021-12-16 10:37:241103 days ago1639651044IN
ColossusXT: eCOLX Token
0 ETH0.0025135764.58983199
Swapout134735092021-10-23 11:34:221157 days ago1634988862IN
ColossusXT: eCOLX Token
0 ETH0.0013169737
Swapin134730392021-10-23 9:45:431157 days ago1634982343IN
ColossusXT: eCOLX Token
0 ETH0.0016972643.61343708
Swapin134730072021-10-23 9:40:041157 days ago1634982004IN
ColossusXT: eCOLX Token
0 ETH0.0023949661.54185839
Swapin134729432021-10-23 9:23:521157 days ago1634981032IN
ColossusXT: eCOLX Token
0 ETH0.0027386148.88978213
Swapin127163782021-06-27 13:43:541275 days ago1624801434IN
ColossusXT: eCOLX Token
0 ETH0.0005657610.1
Swapin127039432021-06-25 15:05:431277 days ago1624633543IN
ColossusXT: eCOLX Token
0 ETH0.0028800339.39
Init Vault127025892021-06-25 9:58:561277 days ago1624615136IN
ColossusXT: eCOLX Token
0 ETH0.0018748820

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV4ERC20

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-25
*/

/**
 *Submitted for verification at BscScan.com on 2021-06-02
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.2;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Interface of the ERC2612 standard as defined in the EIP.
 *
 * Adds the {permit} method, which can be used to change one's
 * {IERC20-allowance} without having to send a transaction, by signing a
 * message. This allows users to spend tokens without having to hold Ether.
 *
 * See https://eips.ethereum.org/EIPS/eip-2612.
 */
interface IERC2612 {

    /**
     * @dev Returns the current ERC2612 nonce for `owner`. This value must be
     * included whenever a signature is generated for {permit}.
     *
     * Every successful call to {permit} increases ``owner``'s nonce by one. This
     * prevents a signature from being used multiple times.
     */
    function nonces(address owner) external view returns (uint256);
}

/// @dev Wrapped ERC-20 v10 (AnyswapV3ERC20) is an ERC-20 ERC-20 wrapper. You can `deposit` ERC-20 and obtain an AnyswapV3ERC20 balance which can then be operated as an ERC-20 token. You can
/// `withdraw` ERC-20 from AnyswapV3ERC20, which will then burn AnyswapV3ERC20 token in your wallet. The amount of AnyswapV3ERC20 token in any wallet is always identical to the
/// balance of ERC-20 deposited minus the ERC-20 withdrawn with that specific wallet.
interface IAnyswapV3ERC20 is IERC20, IERC2612 {

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ERC-20 withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external returns (bool);
}

interface ITransferReceiver {
    function onTokenTransfer(address, uint, bytes calldata) external returns (bool);
}

interface IApprovalReceiver {
    function onTokenApproval(address, uint, bytes calldata) external returns (bool);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyswapV4ERC20 is IAnyswapV3ERC20 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable override decimals;

    address public immutable underlying;

    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant TRANSFER_TYPEHASH = keccak256("Transfer(address owner,address to,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public immutable DOMAIN_SEPARATOR;

    /// @dev Records amount of AnyswapV3ERC20 token owned by account.
    mapping (address => uint256) public override balanceOf;
    uint256 private _totalSupply;

    // init flag for setting immediate vault, needed for CREATE2 support
    bool private _init;

    // flag to enable/disable swapout vs vault.burn so multiple events are triggered
    bool private _vaultOnly;

    // configurable delay for timelock functions
    uint public delay = 2*24*3600;


    // set of minters, can be this bridge or other bridges
    mapping(address => bool) public isMinter;
    address[] public minters;

    // primary controller of the token contract
    address public vault;

    address public pendingMinter;
    uint public delayMinter;

    address public pendingVault;
    uint public delayVault;

    uint public pendingDelay;
    uint public delayDelay;


    modifier onlyAuth() {
        require(isMinter[msg.sender], "AnyswapV4ERC20: FORBIDDEN");
        _;
    }

    modifier onlyVault() {
        require(msg.sender == mpc(), "AnyswapV3ERC20: FORBIDDEN");
        _;
    }

    function owner() public view returns (address) {
        return mpc();
    }

    function mpc() public view returns (address) {
        if (block.timestamp >= delayVault) {
            return pendingVault;
        }
        return vault;
    }

    function setVaultOnly(bool enabled) external onlyVault {
        _vaultOnly = enabled;
    }

    function initVault(address _vault) external onlyVault {
        require(_init);
        vault = _vault;
        pendingVault = _vault;
        isMinter[_vault] = true;
        minters.push(_vault);
        delayVault = block.timestamp;
        _init = false;
    }

    function setMinter(address _auth) external onlyVault {
        pendingMinter = _auth;
        delayMinter = block.timestamp + delay;
    }

    function setVault(address _vault) external onlyVault {
        pendingVault = _vault;
        delayVault = block.timestamp + delay;
    }

    function applyVault() external onlyVault {
        require(block.timestamp >= delayVault);
        vault = pendingVault;
    }

    function applyMinter() external onlyVault {
        require(block.timestamp >= delayMinter);
        isMinter[pendingMinter] = true;
        minters.push(pendingMinter);
    }

    // No time delay revoke minter emergency function
    function revokeMinter(address _auth) external onlyVault {
        isMinter[_auth] = false;
    }

    function getAllMinters() external view returns (address[] memory) {
        return minters;
    }


    function changeVault(address newVault) external onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        pendingVault = newVault;
        delayVault = block.timestamp + delay;
        emit LogChangeVault(vault, pendingVault, delayVault);
        return true;
    }

    function changeMPCOwner(address newVault) public onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        pendingVault = newVault;
        delayVault = block.timestamp + delay;
        emit LogChangeMPCOwner(vault, pendingVault, delayVault);
        return true;
    }

    function mint(address to, uint256 amount) external onlyAuth returns (bool) {
        _mint(to, amount);
        return true;
    }

    function burn(address from, uint256 amount) external onlyAuth returns (bool) {
        require(from != address(0), "AnyswapV3ERC20: address(0x0)");
        _burn(from, amount);
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) public onlyAuth returns (bool) {
        _mint(account, amount);
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, string memory bindaddr) public returns (bool) {
        verifyBindAddr(bindaddr);
        require(!_vaultOnly, "AnyswapV4ERC20: onlyAuth");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, amount, bindaddr);
        return true;
    }

    function verifyBindAddr(string memory bindaddr) pure internal {
        uint length = bytes(bindaddr).length;
        require(length == 34, "address length is not 34");

        bytes1 ch = bytes(bindaddr)[0];
        require(ch == 'D' || ch == '6', "unsupported address leading symbol");
    }

    /// @dev Records current ERC2612 nonce for account. This value must be included whenever signature is generated for {permit}.
    /// Every successful call to {permit} increases account's nonce by one. This prevents signature from being used multiple times.
    mapping (address => uint256) public override nonces;

    /// @dev Records number of AnyswapV3ERC20 token that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}.
    mapping (address => mapping (address => uint256)) public override allowance;

    event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime);
    event LogChangeMPCOwner(address indexed oldOwner, address indexed newOwner, uint indexed effectiveHeight);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, uint amount, string bindaddr);
    event LogAddAuth(address indexed auth, uint timestamp);

    constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        underlying = _underlying;
        if (_underlying != address(0x0)) {
            require(_decimals == IERC20(_underlying).decimals());
        }

        // Use init to allow for CREATE2 accross all chains
        _init = true;

        // Disable/Enable swapout for v1 tokens vs mint/burn for v3 tokens
        _vaultOnly = false;

        vault = _vault;
        pendingVault = _vault;
        delayVault = block.timestamp;

        uint256 chainId;
        assembly {chainId := chainid()}
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name)),
                keccak256(bytes("1")),
                chainId,
                address(this)));
    }

    /// @dev Returns the total supply of AnyswapV3ERC20 token as the ETH held in this contract.
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function depositWithPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).permit(target, address(this), value, deadline, v, r, s);
        IERC20(underlying).safeTransferFrom(target, address(this), value);
        return _deposit(value, to);
    }

    function depositWithTransferPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).transferWithPermit(target, address(this), value, deadline, v, r, s);
        return _deposit(value, to);
    }

    function deposit() external returns (uint) {
        uint _amount = IERC20(underlying).balanceOf(msg.sender);
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount);
        return _deposit(_amount, msg.sender);
    }

    function deposit(uint amount) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, msg.sender);
    }

    function deposit(uint amount, address to) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, to);
    }

    function depositVault(uint amount, address to) external onlyVault returns (uint) {
        return _deposit(amount, to);
    }

    function _deposit(uint amount, address to) internal returns (uint) {
        require(underlying != address(0x0) && underlying != address(this));
        _mint(to, amount);
        return amount;
    }

    function withdraw() external returns (uint) {
        return _withdraw(msg.sender, balanceOf[msg.sender], msg.sender);
    }

    function withdraw(uint amount) external returns (uint) {
        return _withdraw(msg.sender, amount, msg.sender);
    }

    function withdraw(uint amount, address to) external returns (uint) {
        return _withdraw(msg.sender, amount, to);
    }

    function withdrawVault(address from, uint amount, address to) external onlyVault returns (uint) {
        return _withdraw(from, amount, to);
    }

    function _withdraw(address from, uint amount, address to) internal returns (uint) {
        _burn(from, amount);
        IERC20(underlying).safeTransfer(to, amount);
        return amount;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        balanceOf[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        balanceOf[account] -= amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    function approve(address spender, uint256 value) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return true;
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return IApprovalReceiver(spender).onTokenApproval(msg.sender, value, data);
    }

    /// @dev Sets `value` as allowance of `spender` account over `owner` account's AnyswapV3ERC20 token, given `owner` account's signed approval.
    /// Emits {Approval} event.
    /// Requirements:
    ///   - `deadline` must be timestamp in future.
    ///   - `v`, `r` and `s` must be valid `secp256k1` signature from `owner` account over EIP712-formatted function arguments.
    ///   - the signature must use `owner` account's current nonce (see {nonces}).
    ///   - the signer cannot be zero address and must be `owner` account.
    /// For more information on signature format, see https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].
    /// AnyswapV3ERC20 token implementation adapted from https://github.com/albertocuestacanada/ERC20Permit/blob/master/contracts/ERC20Permit.sol.
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override {
        require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                PERMIT_TYPEHASH,
                target,
                spender,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        // _approve(owner, spender, value);
        allowance[target][spender] = value;
        emit Approval(target, spender, value);
    }

    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override returns (bool) {
        require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                TRANSFER_TYPEHASH,
                target,
                to,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[target];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[target] = balance - value;
        balanceOf[to] += value;
        emit Transfer(target, to, value);

        return true;
    }

    function verifyEIP712(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = keccak256(
            abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    function verifyPersonalSign(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal pure returns (bool) {
        bytes32 hash = prefixed(hashStruct);
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    // Builds a prefixed hash to mimic the behavior of eth_sign.
    function prefixed(bytes32 hash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`).
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    function transfer(address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from account (`from`) to account (`to`) using allowance mechanism.
    /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`),
    /// unless allowance is set to `type(uint256).max`
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - `from` account must have at least `value` balance of AnyswapV3ERC20 token.
    ///   - `from` account must have approved caller to spend at least `value` of AnyswapV3ERC20 token, unless `from` and caller are the same account.
    function transferFrom(address from, address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        if (from != msg.sender) {
            // _decreaseAllowance(from, msg.sender, value);
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "AnyswapV3ERC20: request exceeds allowance");
                uint256 reduced = allowed - value;
                allowance[from][msg.sender] = reduced;
                emit Approval(from, msg.sender, reduced);
            }
        }

        uint256 balance = balanceOf[from];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[from] = balance - value;
        balanceOf[to] += value;
        emit Transfer(from, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external override returns (bool) {
        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return ITransferReceiver(to).onTokenTransfer(msg.sender, value, data);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"auth","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LogAddAuth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveHeight","type":"uint256"}],"name":"LogChangeMPCOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"bindaddr","type":"string"}],"name":"LogSwapout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"bindaddr","type":"string"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeMPCOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayMinter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithTransferPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMinters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"initVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setVaultOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithPermit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60e06040526202a3006005553480156200001857600080fd5b506040516200315d3803806200315d8339810160408190526200003b91620003c5565b8451620000509060009060208801906200023d565b508351620000669060019060208701906200023d565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b166080526001600160601b0319606083901b1660a0526001600160a01b038216156200013a57816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ed57600080fd5b505afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000128919062000464565b60ff168360ff16146200013a57600080fd5b6004805461ff001960ff19909116600117169055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90620001b29060009062000488565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c052506200057e945050505050565b8280546200024b906200052b565b90600052602060002090601f0160209004810192826200026f5760008555620002ba565b82601f106200028a57805160ff1916838001178555620002ba565b82800160010185558215620002ba579182015b82811115620002ba5782518255916020019190600101906200029d565b50620002c8929150620002cc565b5090565b5b80821115620002c85760008155600101620002cd565b80516001600160a01b0381168114620002fb57600080fd5b919050565b600082601f83011262000311578081fd5b81516001600160401b03808211156200032e576200032e62000568565b604051601f8301601f19908116603f0116810190828211818310171562000359576200035962000568565b8160405283815260209250868385880101111562000375578485fd5b8491505b8382101562000398578582018301518183018401529082019062000379565b83821115620003a957848385830101525b9695505050505050565b805160ff81168114620002fb57600080fd5b600080600080600060a08688031215620003dd578081fd5b85516001600160401b0380821115620003f4578283fd5b6200040289838a0162000300565b9650602088015191508082111562000418578283fd5b50620004278882890162000300565b9450506200043860408701620003b3565b92506200044860608701620002e3565b91506200045860808701620002e3565b90509295509295909350565b60006020828403121562000476578081fd5b6200048182620003b3565b9392505050565b8154600090819060028104600180831680620004a557607f831692505b6020808410821415620004c657634e487b7160e01b87526022600452602487fd5b818015620004dd5760018114620004ef576200051d565b60ff198616895284890196506200051d565b60008a815260209020885b86811015620005155781548b820152908501908301620004fa565b505084890196505b509498975050505050505050565b6002810460018216806200054057607f821691505b602082108114156200056257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160601c60c051612b5c620006016000396000818161048c0152611dcb01526000818161057d0152818161128a015281816112d601528181611356015281816116360152818161184b015281816118d401528181611ba101528181611cbe01528181611fb50152611fe8015260006104530152612b5c6000f3fe608060405234801561001057600080fd5b506004361061033f5760003560e01c806381a37c18116101b8578063bebbf4d011610104578063d93f2445116100a2578063f75c26641161007c578063f75c266414610774578063f954734e1461077c578063fbfa77cf1461078f578063fca3b5aa146107a25761033f565b8063d93f24451461072e578063dd62ed3e14610736578063ec126c77146107615761033f565b8063cae9ca51116100de578063cae9ca51146106ed578063cfbd488514610700578063d0e30db014610713578063d505accf1461071b5761033f565b8063bebbf4d0146106be578063c3081240146106d1578063c4b740f5146106da5761033f565b80639dc29fac11610171578063a9059cbb1161014b578063a9059cbb14610662578063aa271e1a14610675578063ad54056d14610698578063b6b55f25146106ab5761033f565b80639dc29fac14610631578063a045442c14610644578063a29dff72146106595761033f565b806381a37c18146105df5780638623ec7b146105f257806387689e28146106055780638da5cb5b1461060e57806391c5df491461061657806395d89b41146106295761033f565b80633ccfd60b1161029257806360e232a9116102305780636e553f651161020a5780636e553f65146105655780636f307dc31461057857806370a082311461059f5780637ecebe00146105bf5761033f565b806360e232a9146105365780636817031b146105495780636a42b8f81461055c5761033f565b80634ca8f0ed1161026c5780634ca8f0ed146104dc57806352113ba7146104e55780635f9b105d14610510578063605629d6146105235761033f565b80633ccfd60b146104ae5780634000aea0146104b657806340c10f19146104c95761033f565b806318160ddd116102ff5780632ebe3fbb116102d95780632ebe3fbb1461041457806330adf81f14610427578063313ce5671461044e5780633644e515146104875761033f565b806318160ddd146103e657806323b872dd146103ee5780632e1a7d4d146104015761033f565b806239d6ec14610344578062bf26f41461036a578062f714ce1461039157806306fdde03146103a4578063095ea7b3146103b95780630d707df8146103dc575b600080fd5b610357610352366004612530565b6107b5565b6040519081526020015b60405180910390f35b6103577f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61035761039f3660046126e2565b61080b565b6103ac61081f565b60405161036191906128d8565b6103cc6103c7366004612507565b6108ad565b6040519015158152602001610361565b6103e4610907565b005b6103576109c3565b6103cc6103fc366004612463565b6109ca565b61035761040f3660046126b2565b610bb5565b6103e4610422366004612417565b610bca565b6103577f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104757f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610361565b6103577f000000000000000000000000000000000000000000000000000000000000000081565b610357610ca1565b6103cc6104c436600461256b565b610cc2565b6103cc6104d7366004612507565b610e1b565b610357600d5481565b600b546104f8906001600160a01b031681565b6040516001600160a01b039091168152602001610361565b6103cc61051e366004612417565b610e5d565b6103cc61053136600461249e565b610f31565b6103cc610544366004612417565b611141565b6103e4610557366004612417565b611215565b61035760055481565b6103576105733660046126e2565b61127b565b6104f87f000000000000000000000000000000000000000000000000000000000000000081565b6103576105ad366004612417565b60026020526000908152604090205481565b6103576105cd366004612417565b600f6020526000908152604090205481565b6103576105ed3660046125ed565b6112bc565b6104f86106003660046126b2565b611396565b610357600c5481565b6104f86113c0565b6009546104f8906001600160a01b031681565b6103ac6113ca565b6103cc61063f366004612507565b6113d7565b61064c611436565b604051610361919061288b565b610357600e5481565b6103cc610670366004612507565b611498565b6103cc610683366004612417565b60066020526000908152604090205460ff1681565b6103cc6106a6366004612704565b61156e565b6103576106b93660046126b2565b611627565b6103576106cc3660046126e2565b611668565b610357600a5481565b6103e46106e8366004612656565b6116a2565b6103cc6106fb36600461256b565b6116f4565b6103e461070e366004612417565b6117d0565b610357611829565b6103e461072936600461249e565b61190c565b6103e4611a7a565b610357610744366004612431565b601060209081526000928352604080842090915290825290205481565b6103cc61076f36600461268e565b611ae5565b6104f8611b5a565b61035761078a3660046125ed565b611b87565b6008546104f8906001600160a01b031681565b6103e46107b0366004612417565b611c3f565b60006107bf611b5a565b6001600160a01b0316336001600160a01b0316146107f85760405162461bcd60e51b81526004016107ef906128eb565b60405180910390fd5b610803848484611ca5565b949350505050565b6000610818338484611ca5565b9392505050565b6000805461082c90612a53565b80601f016020809104026020016040519081016040528092919081815260200182805461085890612a53565b80156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612b07833981519152906108f69086815260200190565b60405180910390a350600192915050565b61090f611b5a565b6001600160a01b0316336001600160a01b03161461093f5760405162461bcd60e51b81526004016107ef906128eb565b600a5442101561094e57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b0383161515806109ec57506001600160a01b0383163014155b6109f557600080fd5b6001600160a01b0384163314610aef576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610aed5782811015610a945760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016107ef565b6000610aa08483612a10565b6001600160a01b03871660008181526010602090815260408083203380855290835292819020859055518481529394509092600080516020612b07833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610b285760405162461bcd60e51b81526004016107ef90612959565b610b328382612a10565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610b689084906129f8565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612ae783398151915285604051610ba291815260200190565b60405180910390a3506001949350505050565b6000610bc2338333611ca5565b90505b919050565b610bd2611b5a565b6001600160a01b0316336001600160a01b031614610c025760405162461bcd60e51b81526004016107ef906128eb565b60045460ff16610c1157600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610cbd9181611ca5565b905090565b60006001600160a01b038516151580610ce457506001600160a01b0385163014155b610ced57600080fd5b3360009081526002602052604090205484811015610d1d5760405162461bcd60e51b81526004016107ef90612959565b610d278582612a10565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d5a9084906129f8565b90915550506040518581526001600160a01b038716903390600080516020612ae78339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610dbf903390899089908990600401612843565b602060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190612672565b9695505050505050565b3360009081526006602052604081205460ff16610e4a5760405162461bcd60e51b81526004016107ef906129a8565b610e548383611ced565b50600192915050565b6000610e67611b5a565b6001600160a01b0316336001600160a01b031614610e975760405162461bcd60e51b81526004016107ef906128eb565b6001600160a01b038216610ebd5760405162461bcd60e51b81526004016107ef90612922565b600b80546001600160a01b0319166001600160a01b038416179055600554610ee590426129f8565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f835760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610fd083612a8e565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012090506110318982878787611dbb565b8061104457506110448982878787611eab565b61104d57600080fd5b6001600160a01b03881615158061106d57506001600160a01b0388163014155b61107657600080fd5b6001600160a01b038916600090815260026020526040902054878110156110af5760405162461bcd60e51b81526004016107ef90612959565b6110b98882612a10565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110ef9084906129f8565b92505081905550886001600160a01b03168a6001600160a01b0316600080516020612ae78339815191528a60405161112991815260200190565b60405180910390a35060019998505050505050505050565b600061114b611b5a565b6001600160a01b0316336001600160a01b03161461117b5760405162461bcd60e51b81526004016107ef906128eb565b6001600160a01b0382166111a15760405162461bcd60e51b81526004016107ef90612922565b600b80546001600160a01b0319166001600160a01b0384161790556005546111c990426129f8565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b61121d611b5a565b6001600160a01b0316336001600160a01b03161461124d5760405162461bcd60e51b81526004016107ef906128eb565b600b80546001600160a01b0319166001600160a01b03831617905560055461127590426129f8565b600c5550565b60006112b26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611f40565b6108188383611fb1565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90611317908b9030908c908c908c908c908c90600401612802565b600060405180830381600087803b15801561133157600080fd5b505af1158015611345573d6000803e3d6000fd5b506113809250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a611f40565b61138a8783611fb1565b98975050505050505050565b600781815481106113a657600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610cbd611b5a565b6001805461082c90612a53565b3360009081526006602052604081205460ff166114065760405162461bcd60e51b81526004016107ef906129a8565b6001600160a01b03831661142c5760405162461bcd60e51b81526004016107ef90612922565b610e54838361202e565b6060600780548060200260200160405190810160405280929190818152602001828054801561148e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611470575b5050505050905090565b60006001600160a01b0383161515806114ba57506001600160a01b0383163014155b6114c357600080fd5b33600090815260026020526040902054828110156114f35760405162461bcd60e51b81526004016107ef90612959565b6114fd8382612a10565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906115309084906129f8565b90915550506040518381526001600160a01b038516903390600080516020612ae7833981519152906020015b60405180910390a35060019392505050565b600061157982612100565b600454610100900460ff16156115d15760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c7941757468000000000000000060448201526064016107ef565b6115db338461202e565b336001600160a01b03167f9c92ad817e5474d30a4378deface765150479363a897b0590fbb12ae9d89396b84846040516116169291906129df565b60405180910390a250600192915050565b600061165e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611f40565b610bc28233611fb1565b6000611672611b5a565b6001600160a01b0316336001600160a01b0316146112b25760405162461bcd60e51b81526004016107ef906128eb565b6116aa611b5a565b6001600160a01b0316336001600160a01b0316146116da5760405162461bcd60e51b81526004016107ef906128eb565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b03891680855292528083208790555191929091600080516020612b078339815191529061173d9088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f90611775903390889088908890600401612843565b602060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612672565b95945050505050565b6117d8611b5a565b6001600160a01b0316336001600160a01b0316146118085760405162461bcd60e51b81526004016107ef906128eb565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561188d57600080fd5b505afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c591906126ca565b90506118fc6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611f40565b6119068133611fb1565b91505090565b8342111561195c5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866119a983612a8e565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611a0a8882868686611dbb565b80611a1d5750611a1d8882868686611eab565b611a2657600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a90559051898152600080516020612b07833981519152910160405180910390a35050505050505050565b611a82611b5a565b6001600160a01b0316336001600160a01b031614611ab25760405162461bcd60e51b81526004016107ef906128eb565b600c54421015611ac157600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff16611b145760405162461bcd60e51b81526004016107ef906129a8565b611b1e8383611ced565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161155c91815260200190565b6000600c544210611b775750600b546001600160a01b03166109c7565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d690611be2908b9030908c908c908c908c908c90600401612802565b602060405180830381600087803b158015611bfc57600080fd5b505af1158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c349190612672565b5061138a8783611fb1565b611c47611b5a565b6001600160a01b0316336001600160a01b031614611c775760405162461bcd60e51b81526004016107ef906128eb565b600980546001600160a01b0319166001600160a01b038316179055600554611c9f90426129f8565b600a5550565b6000611cb1848461202e565b611ce56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385612201565b509092915050565b6001600160a01b038216611d435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060036000828254611d5591906129f8565b90915550506001600160a01b03821660009081526002602052604081208054839290611d829084906129f8565b90915550506040518181526001600160a01b03831690600090600080516020612ae7833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0000000000000000000000000000000000000000000000000000000000000000602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611e6a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061138a5750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611f05866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611e48565b6040516001600160a01b0380851660248301528316604482015260648101829052611fab9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612231565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061201457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61201d57600080fd5b6120278284611ced565b5090919050565b6001600160a01b03821661208e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ef565b6001600160a01b038216600090815260026020526040812080548392906120b6908490612a10565b9250508190555080600360008282546120cf9190612a10565b90915550506040518181526000906001600160a01b03841690600080516020612ae783398151915290602001611daf565b8051602281146121525760405162461bcd60e51b815260206004820152601860248201527f61646472657373206c656e677468206973206e6f74203334000000000000000060448201526064016107ef565b60008260008151811061217557634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b0319169050601160fa1b8114806121a55750601b60f91b6001600160f81b03198216145b6121fc5760405162461bcd60e51b815260206004820152602260248201527f756e737570706f727465642061646472657373206c656164696e672073796d626044820152611bdb60f21b60648201526084016107ef565b505050565b6040516001600160a01b0383166024820152604481018290526121fc90849063a9059cbb60e01b90606401611f74565b612243826001600160a01b03166123b8565b61228f5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016107ef565b600080836001600160a01b0316836040516122aa91906127e6565b6000604051808303816000865af19150503d80600081146122e7576040519150601f19603f3d011682016040523d82523d6000602084013e6122ec565b606091505b50915091508161233e5760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016107ef565b805115611fab57808060200190518101906123599190612672565b611fab5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107ef565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906108035750141592915050565b80356001600160a01b0381168114610bc557600080fd5b803560ff81168114610bc557600080fd5b600060208284031215612428578081fd5b610818826123ef565b60008060408385031215612443578081fd5b61244c836123ef565b915061245a602084016123ef565b90509250929050565b600080600060608486031215612477578081fd5b612480846123ef565b925061248e602085016123ef565b9150604084013590509250925092565b600080600080600080600060e0888a0312156124b8578283fd5b6124c1886123ef565b96506124cf602089016123ef565b955060408801359450606088013593506124eb60808901612406565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612519578182fd5b612522836123ef565b946020939093013593505050565b600080600060608486031215612544578283fd5b61254d846123ef565b925060208401359150612562604085016123ef565b90509250925092565b60008060008060608587031215612580578384fd5b612589856123ef565b935060208501359250604085013567ffffffffffffffff808211156125ac578384fd5b818701915087601f8301126125bf578384fd5b8135818111156125cd578485fd5b8860208285010111156125de578485fd5b95989497505060200194505050565b600080600080600080600060e0888a031215612607578283fd5b612610886123ef565b9650602088013595506040880135945061262c60608901612406565b93506080880135925060a0880135915061264860c089016123ef565b905092959891949750929550565b600060208284031215612667578081fd5b813561081881612ad5565b600060208284031215612683578081fd5b815161081881612ad5565b6000806000606084860312156126a2578081fd5b8335925061248e602085016123ef565b6000602082840312156126c3578081fd5b5035919050565b6000602082840312156126db578081fd5b5051919050565b600080604083850312156126f4578182fd5b8235915061245a602084016123ef565b60008060408385031215612716578182fd5b82359150602083013567ffffffffffffffff80821115612734578283fd5b818501915085601f830112612747578283fd5b81358181111561275957612759612abf565b604051601f8201601f19908116603f0116810190838211818310171561278157612781612abf565b81604052828152886020848701011115612799578586fd5b82602086016020830137856020848301015280955050505050509250929050565b600081518084526127d2816020860160208601612a27565b601f01601f19169290920160200192915050565b600082516127f8818460208701612a27565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156128cc5783516001600160a01b0316835292840192918401916001016128a7565b50909695505050505050565b60006020825261081860208301846127ba565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b60008382526040602083015261080360408301846127ba565b60008219821115612a0b57612a0b612aa9565b500190565b600082821015612a2257612a22612aa9565b500390565b60005b83811015612a42578181015183820152602001612a2a565b83811115611fab5750506000910152565b600281046001821680612a6757607f821691505b60208210811415612a8857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612aa257612aa2612aa9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114612ae357600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220f64f9fc967c675fd62cf6f82c43655cce2b12a89d736911f366001b9e54988f164736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000a436f6c6f73737573585400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000565434f4c58000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061033f5760003560e01c806381a37c18116101b8578063bebbf4d011610104578063d93f2445116100a2578063f75c26641161007c578063f75c266414610774578063f954734e1461077c578063fbfa77cf1461078f578063fca3b5aa146107a25761033f565b8063d93f24451461072e578063dd62ed3e14610736578063ec126c77146107615761033f565b8063cae9ca51116100de578063cae9ca51146106ed578063cfbd488514610700578063d0e30db014610713578063d505accf1461071b5761033f565b8063bebbf4d0146106be578063c3081240146106d1578063c4b740f5146106da5761033f565b80639dc29fac11610171578063a9059cbb1161014b578063a9059cbb14610662578063aa271e1a14610675578063ad54056d14610698578063b6b55f25146106ab5761033f565b80639dc29fac14610631578063a045442c14610644578063a29dff72146106595761033f565b806381a37c18146105df5780638623ec7b146105f257806387689e28146106055780638da5cb5b1461060e57806391c5df491461061657806395d89b41146106295761033f565b80633ccfd60b1161029257806360e232a9116102305780636e553f651161020a5780636e553f65146105655780636f307dc31461057857806370a082311461059f5780637ecebe00146105bf5761033f565b806360e232a9146105365780636817031b146105495780636a42b8f81461055c5761033f565b80634ca8f0ed1161026c5780634ca8f0ed146104dc57806352113ba7146104e55780635f9b105d14610510578063605629d6146105235761033f565b80633ccfd60b146104ae5780634000aea0146104b657806340c10f19146104c95761033f565b806318160ddd116102ff5780632ebe3fbb116102d95780632ebe3fbb1461041457806330adf81f14610427578063313ce5671461044e5780633644e515146104875761033f565b806318160ddd146103e657806323b872dd146103ee5780632e1a7d4d146104015761033f565b806239d6ec14610344578062bf26f41461036a578062f714ce1461039157806306fdde03146103a4578063095ea7b3146103b95780630d707df8146103dc575b600080fd5b610357610352366004612530565b6107b5565b6040519081526020015b60405180910390f35b6103577f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61035761039f3660046126e2565b61080b565b6103ac61081f565b60405161036191906128d8565b6103cc6103c7366004612507565b6108ad565b6040519015158152602001610361565b6103e4610907565b005b6103576109c3565b6103cc6103fc366004612463565b6109ca565b61035761040f3660046126b2565b610bb5565b6103e4610422366004612417565b610bca565b6103577f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104757f000000000000000000000000000000000000000000000000000000000000000881565b60405160ff9091168152602001610361565b6103577fb5ddc4a5f49e1b7433cb25d02cf7acf3fb41e7b070aa9749dd9e02973d830b5b81565b610357610ca1565b6103cc6104c436600461256b565b610cc2565b6103cc6104d7366004612507565b610e1b565b610357600d5481565b600b546104f8906001600160a01b031681565b6040516001600160a01b039091168152602001610361565b6103cc61051e366004612417565b610e5d565b6103cc61053136600461249e565b610f31565b6103cc610544366004612417565b611141565b6103e4610557366004612417565b611215565b61035760055481565b6103576105733660046126e2565b61127b565b6104f87f000000000000000000000000000000000000000000000000000000000000000081565b6103576105ad366004612417565b60026020526000908152604090205481565b6103576105cd366004612417565b600f6020526000908152604090205481565b6103576105ed3660046125ed565b6112bc565b6104f86106003660046126b2565b611396565b610357600c5481565b6104f86113c0565b6009546104f8906001600160a01b031681565b6103ac6113ca565b6103cc61063f366004612507565b6113d7565b61064c611436565b604051610361919061288b565b610357600e5481565b6103cc610670366004612507565b611498565b6103cc610683366004612417565b60066020526000908152604090205460ff1681565b6103cc6106a6366004612704565b61156e565b6103576106b93660046126b2565b611627565b6103576106cc3660046126e2565b611668565b610357600a5481565b6103e46106e8366004612656565b6116a2565b6103cc6106fb36600461256b565b6116f4565b6103e461070e366004612417565b6117d0565b610357611829565b6103e461072936600461249e565b61190c565b6103e4611a7a565b610357610744366004612431565b601060209081526000928352604080842090915290825290205481565b6103cc61076f36600461268e565b611ae5565b6104f8611b5a565b61035761078a3660046125ed565b611b87565b6008546104f8906001600160a01b031681565b6103e46107b0366004612417565b611c3f565b60006107bf611b5a565b6001600160a01b0316336001600160a01b0316146107f85760405162461bcd60e51b81526004016107ef906128eb565b60405180910390fd5b610803848484611ca5565b949350505050565b6000610818338484611ca5565b9392505050565b6000805461082c90612a53565b80601f016020809104026020016040519081016040528092919081815260200182805461085890612a53565b80156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612b07833981519152906108f69086815260200190565b60405180910390a350600192915050565b61090f611b5a565b6001600160a01b0316336001600160a01b03161461093f5760405162461bcd60e51b81526004016107ef906128eb565b600a5442101561094e57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b0383161515806109ec57506001600160a01b0383163014155b6109f557600080fd5b6001600160a01b0384163314610aef576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610aed5782811015610a945760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016107ef565b6000610aa08483612a10565b6001600160a01b03871660008181526010602090815260408083203380855290835292819020859055518481529394509092600080516020612b07833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610b285760405162461bcd60e51b81526004016107ef90612959565b610b328382612a10565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610b689084906129f8565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612ae783398151915285604051610ba291815260200190565b60405180910390a3506001949350505050565b6000610bc2338333611ca5565b90505b919050565b610bd2611b5a565b6001600160a01b0316336001600160a01b031614610c025760405162461bcd60e51b81526004016107ef906128eb565b60045460ff16610c1157600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610cbd9181611ca5565b905090565b60006001600160a01b038516151580610ce457506001600160a01b0385163014155b610ced57600080fd5b3360009081526002602052604090205484811015610d1d5760405162461bcd60e51b81526004016107ef90612959565b610d278582612a10565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d5a9084906129f8565b90915550506040518581526001600160a01b038716903390600080516020612ae78339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610dbf903390899089908990600401612843565b602060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190612672565b9695505050505050565b3360009081526006602052604081205460ff16610e4a5760405162461bcd60e51b81526004016107ef906129a8565b610e548383611ced565b50600192915050565b6000610e67611b5a565b6001600160a01b0316336001600160a01b031614610e975760405162461bcd60e51b81526004016107ef906128eb565b6001600160a01b038216610ebd5760405162461bcd60e51b81526004016107ef90612922565b600b80546001600160a01b0319166001600160a01b038416179055600554610ee590426129f8565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f835760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610fd083612a8e565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012090506110318982878787611dbb565b8061104457506110448982878787611eab565b61104d57600080fd5b6001600160a01b03881615158061106d57506001600160a01b0388163014155b61107657600080fd5b6001600160a01b038916600090815260026020526040902054878110156110af5760405162461bcd60e51b81526004016107ef90612959565b6110b98882612a10565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110ef9084906129f8565b92505081905550886001600160a01b03168a6001600160a01b0316600080516020612ae78339815191528a60405161112991815260200190565b60405180910390a35060019998505050505050505050565b600061114b611b5a565b6001600160a01b0316336001600160a01b03161461117b5760405162461bcd60e51b81526004016107ef906128eb565b6001600160a01b0382166111a15760405162461bcd60e51b81526004016107ef90612922565b600b80546001600160a01b0319166001600160a01b0384161790556005546111c990426129f8565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b61121d611b5a565b6001600160a01b0316336001600160a01b03161461124d5760405162461bcd60e51b81526004016107ef906128eb565b600b80546001600160a01b0319166001600160a01b03831617905560055461127590426129f8565b600c5550565b60006112b26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611f40565b6108188383611fb1565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90611317908b9030908c908c908c908c908c90600401612802565b600060405180830381600087803b15801561133157600080fd5b505af1158015611345573d6000803e3d6000fd5b506113809250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a611f40565b61138a8783611fb1565b98975050505050505050565b600781815481106113a657600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610cbd611b5a565b6001805461082c90612a53565b3360009081526006602052604081205460ff166114065760405162461bcd60e51b81526004016107ef906129a8565b6001600160a01b03831661142c5760405162461bcd60e51b81526004016107ef90612922565b610e54838361202e565b6060600780548060200260200160405190810160405280929190818152602001828054801561148e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611470575b5050505050905090565b60006001600160a01b0383161515806114ba57506001600160a01b0383163014155b6114c357600080fd5b33600090815260026020526040902054828110156114f35760405162461bcd60e51b81526004016107ef90612959565b6114fd8382612a10565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906115309084906129f8565b90915550506040518381526001600160a01b038516903390600080516020612ae7833981519152906020015b60405180910390a35060019392505050565b600061157982612100565b600454610100900460ff16156115d15760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c7941757468000000000000000060448201526064016107ef565b6115db338461202e565b336001600160a01b03167f9c92ad817e5474d30a4378deface765150479363a897b0590fbb12ae9d89396b84846040516116169291906129df565b60405180910390a250600192915050565b600061165e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611f40565b610bc28233611fb1565b6000611672611b5a565b6001600160a01b0316336001600160a01b0316146112b25760405162461bcd60e51b81526004016107ef906128eb565b6116aa611b5a565b6001600160a01b0316336001600160a01b0316146116da5760405162461bcd60e51b81526004016107ef906128eb565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b03891680855292528083208790555191929091600080516020612b078339815191529061173d9088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f90611775903390889088908890600401612843565b602060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612672565b95945050505050565b6117d8611b5a565b6001600160a01b0316336001600160a01b0316146118085760405162461bcd60e51b81526004016107ef906128eb565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561188d57600080fd5b505afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c591906126ca565b90506118fc6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611f40565b6119068133611fb1565b91505090565b8342111561195c5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866119a983612a8e565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611a0a8882868686611dbb565b80611a1d5750611a1d8882868686611eab565b611a2657600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a90559051898152600080516020612b07833981519152910160405180910390a35050505050505050565b611a82611b5a565b6001600160a01b0316336001600160a01b031614611ab25760405162461bcd60e51b81526004016107ef906128eb565b600c54421015611ac157600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff16611b145760405162461bcd60e51b81526004016107ef906129a8565b611b1e8383611ced565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161155c91815260200190565b6000600c544210611b775750600b546001600160a01b03166109c7565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d690611be2908b9030908c908c908c908c908c90600401612802565b602060405180830381600087803b158015611bfc57600080fd5b505af1158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c349190612672565b5061138a8783611fb1565b611c47611b5a565b6001600160a01b0316336001600160a01b031614611c775760405162461bcd60e51b81526004016107ef906128eb565b600980546001600160a01b0319166001600160a01b038316179055600554611c9f90426129f8565b600a5550565b6000611cb1848461202e565b611ce56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385612201565b509092915050565b6001600160a01b038216611d435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060036000828254611d5591906129f8565b90915550506001600160a01b03821660009081526002602052604081208054839290611d829084906129f8565b90915550506040518181526001600160a01b03831690600090600080516020612ae7833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527fb5ddc4a5f49e1b7433cb25d02cf7acf3fb41e7b070aa9749dd9e02973d830b5b602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611e6a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061138a5750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611f05866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611e48565b6040516001600160a01b0380851660248301528316604482015260648101829052611fab9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612231565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061201457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61201d57600080fd5b6120278284611ced565b5090919050565b6001600160a01b03821661208e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ef565b6001600160a01b038216600090815260026020526040812080548392906120b6908490612a10565b9250508190555080600360008282546120cf9190612a10565b90915550506040518181526000906001600160a01b03841690600080516020612ae783398151915290602001611daf565b8051602281146121525760405162461bcd60e51b815260206004820152601860248201527f61646472657373206c656e677468206973206e6f74203334000000000000000060448201526064016107ef565b60008260008151811061217557634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b0319169050601160fa1b8114806121a55750601b60f91b6001600160f81b03198216145b6121fc5760405162461bcd60e51b815260206004820152602260248201527f756e737570706f727465642061646472657373206c656164696e672073796d626044820152611bdb60f21b60648201526084016107ef565b505050565b6040516001600160a01b0383166024820152604481018290526121fc90849063a9059cbb60e01b90606401611f74565b612243826001600160a01b03166123b8565b61228f5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016107ef565b600080836001600160a01b0316836040516122aa91906127e6565b6000604051808303816000865af19150503d80600081146122e7576040519150601f19603f3d011682016040523d82523d6000602084013e6122ec565b606091505b50915091508161233e5760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016107ef565b805115611fab57808060200190518101906123599190612672565b611fab5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107ef565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906108035750141592915050565b80356001600160a01b0381168114610bc557600080fd5b803560ff81168114610bc557600080fd5b600060208284031215612428578081fd5b610818826123ef565b60008060408385031215612443578081fd5b61244c836123ef565b915061245a602084016123ef565b90509250929050565b600080600060608486031215612477578081fd5b612480846123ef565b925061248e602085016123ef565b9150604084013590509250925092565b600080600080600080600060e0888a0312156124b8578283fd5b6124c1886123ef565b96506124cf602089016123ef565b955060408801359450606088013593506124eb60808901612406565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612519578182fd5b612522836123ef565b946020939093013593505050565b600080600060608486031215612544578283fd5b61254d846123ef565b925060208401359150612562604085016123ef565b90509250925092565b60008060008060608587031215612580578384fd5b612589856123ef565b935060208501359250604085013567ffffffffffffffff808211156125ac578384fd5b818701915087601f8301126125bf578384fd5b8135818111156125cd578485fd5b8860208285010111156125de578485fd5b95989497505060200194505050565b600080600080600080600060e0888a031215612607578283fd5b612610886123ef565b9650602088013595506040880135945061262c60608901612406565b93506080880135925060a0880135915061264860c089016123ef565b905092959891949750929550565b600060208284031215612667578081fd5b813561081881612ad5565b600060208284031215612683578081fd5b815161081881612ad5565b6000806000606084860312156126a2578081fd5b8335925061248e602085016123ef565b6000602082840312156126c3578081fd5b5035919050565b6000602082840312156126db578081fd5b5051919050565b600080604083850312156126f4578182fd5b8235915061245a602084016123ef565b60008060408385031215612716578182fd5b82359150602083013567ffffffffffffffff80821115612734578283fd5b818501915085601f830112612747578283fd5b81358181111561275957612759612abf565b604051601f8201601f19908116603f0116810190838211818310171561278157612781612abf565b81604052828152886020848701011115612799578586fd5b82602086016020830137856020848301015280955050505050509250929050565b600081518084526127d2816020860160208601612a27565b601f01601f19169290920160200192915050565b600082516127f8818460208701612a27565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156128cc5783516001600160a01b0316835292840192918401916001016128a7565b50909695505050505050565b60006020825261081860208301846127ba565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b60008382526040602083015261080360408301846127ba565b60008219821115612a0b57612a0b612aa9565b500190565b600082821015612a2257612a22612aa9565b500390565b60005b83811015612a42578181015183820152602001612a2a565b83811115611fab5750506000910152565b600281046001821680612a6757607f821691505b60208210811415612a8857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612aa257612aa2612aa9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114612ae357600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220f64f9fc967c675fd62cf6f82c43655cce2b12a89d736911f366001b9e54988f164736f6c63430008020033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000a436f6c6f73737573585400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000565434f4c58000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): ColossusXT
Arg [1] : _symbol (string): eCOLX
Arg [2] : _decimals (uint8): 8
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0xfA9dA51631268A30Ec3DDd1CcBf46c65FAD99251

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [6] : 436f6c6f73737573585400000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [8] : 65434f4c58000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

5798:19416:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15188:149;;;;;;:::i;:::-;;:::i;:::-;;;10807:25:1;;;10795:2;10780:18;15188:149:0;;;;;;;;6171:136;;6215:92;6171:136;;15054:126;;;;;;:::i;:::-;;:::i;5881:18::-;;;:::i;:::-;;;;;;;:::i;16911:265::-;;;;;;:::i;:::-;;:::i;:::-;;;10634:14:1;;10627:22;10609:41;;10597:2;10582:18;16911:265:0;10564:92:1;8567:179:0;;;:::i;:::-;;13023:102;;;:::i;23134:927::-;;;;;;:::i;:::-;;:::i;14924:122::-;;;;;;:::i;:::-;;:::i;7853:272::-;;;;;;:::i;:::-;;:::i;6027:137::-;;6069:95;6027:137;;5933:41;;;;;;;;17970:4:1;17958:17;;;17940:36;;17928:2;17913:18;5933:41:0;17895:87:1;6314:41:0;;;;;14790:126;;;:::i;24688:523::-;;;;;;:::i;:::-;;:::i;9686:133::-;;;;;;:::i;:::-;;:::i;7192:24::-;;;;;;7127:27;;;;;-1:-1:-1;;;;;7127:27:0;;;;;;-1:-1:-1;;;;;7858:32:1;;;7840:51;;7828:2;7813:18;7127:27:0;7795:102:1;9353:325:0;;;;;;:::i;:::-;;:::i;19509:938::-;;;;;;:::i;:::-;;:::i;9024:321::-;;;;;;:::i;:::-;;:::i;8282:140::-;;;;;;:::i;:::-;;:::i;6802:29::-;;;;;;14242:193;;;;;;:::i;:::-;;:::i;5983:35::-;;;;;6435:54;;;;;;:::i;:::-;;;;;;;;;;;;;;11134:51;;;;;;:::i;:::-;;;;;;;;;;;;;;13133:349;;;;;;:::i;:::-;;:::i;6949:24::-;;;;;;:::i;:::-;;:::i;7161:22::-;;;;;;7490:78;;;:::i;7060:28::-;;;;;-1:-1:-1;;;;;7060:28:0;;;5906:20;;;:::i;9827:207::-;;;;;;:::i;:::-;;:::i;8915:99::-;;;:::i;:::-;;;;;;;:::i;7223:22::-;;;;;;21807:438;;;;;;:::i;:::-;;:::i;6902:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10259:295;;;;;;:::i;:::-;;:::i;14045:189::-;;;;;;:::i;:::-;;:::i;14443:127::-;;;;;;:::i;:::-;;:::i;7095:23::-;;;;;;7751:94;;;;;;:::i;:::-;;:::i;17597:356::-;;;;;;:::i;:::-;;:::i;8809:98::-;;;;;;:::i;:::-;;:::i;13791:246::-;;;:::i;18786:715::-;;;;;;:::i;:::-;;:::i;8430:129::-;;;:::i;11355:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10042:209;;;;;;:::i;:::-;;:::i;7576:167::-;;;:::i;13490:293::-;;;;;;:::i;:::-;;:::i;7031:20::-;;;;;-1:-1:-1;;;;;7031:20:0;;;8133:141;;;;;;:::i;:::-;;:::i;15188:149::-;15278:4;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;;;;;;;;;15302:27:::1;15312:4;15318:6;15326:2;15302:9;:27::i;:::-;15295:34:::0;15188:149;-1:-1:-1;;;;15188:149:0:o;15054:126::-;15115:4;15139:33;15149:10;15161:6;15169:2;15139:9;:33::i;:::-;15132:40;15054:126;-1:-1:-1;;;15054:126:0:o;5881:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16911:265::-;17064:10;16987:4;17054:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17054:30:0;;;;;;;;;;:38;;;17108:36;16987:4;;17054:30;;-1:-1:-1;;;;;;;;;;;17108:36:0;;;17087:5;10807:25:1;;10795:2;10780:18;;10762:76;17108:36:0;;;;;;;;-1:-1:-1;17164:4:0;16911:265;;;;:::o;8567:179::-;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;8647:11:::1;;8628:15;:30;;8620:39;;;::::0;::::1;;8679:13;::::0;;-1:-1:-1;;;;;8679:13:0;;::::1;8670:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;8670:30:0::1;8696:4;8670:30:::0;;::::1;::::0;;;8724:13;;8711:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8711:27:0::1;8724:13:::0;;;::::1;8711:27:::0;;;::::1;::::0;;8567:179::o;13023:102::-;13105:12;;13023:102;;:::o;23134:927::-;23224:4;-1:-1:-1;;;;;23249:16:0;;;;;:39;;-1:-1:-1;;;;;;23269:19:0;;23283:4;23269:19;;23249:39;23241:48;;;;;;-1:-1:-1;;;;;23304:18:0;;23312:10;23304:18;23300:477;;-1:-1:-1;;;;;23418:15:0;;23400;23418;;;:9;:15;;;;;;;;23434:10;23418:27;;;;;;;;-1:-1:-1;;23464:28:0;;23460:306;;23532:5;23521:7;:16;;23513:70;;;;-1:-1:-1;;;23513:70:0;;15981:2:1;23513:70:0;;;15963:21:1;16020:2;16000:18;;;15993:30;16059:34;16039:18;;;16032:62;-1:-1:-1;;;16110:18:1;;;16103:39;16159:19;;23513:70:0;15953:231:1;23513:70:0;23602:15;23620;23630:5;23620:7;:15;:::i;:::-;-1:-1:-1;;;;;23654:15:0;;;;;;:9;:15;;;;;;;;23670:10;23654:27;;;;;;;;;;:37;;;23715:35;10807:25:1;;;23654:37:0;;-1:-1:-1;23670:10:0;;-1:-1:-1;;;;;;;;;;;23715:35:0;10780:18:1;23715:35:0;;;;;;;23460:306;;23300:477;;-1:-1:-1;;;;;23807:15:0;;23789;23807;;;:9;:15;;;;;;23841:16;;;;23833:76;;;;-1:-1:-1;;;23833:76:0;;;;;;;:::i;:::-;23940:15;23950:5;23940:7;:15;:::i;:::-;-1:-1:-1;;;;;23922:15:0;;;;;;;:9;:15;;;;;;:33;;;;23966:13;;;;;;;;:22;;23983:5;;23922:15;23966:22;;23983:5;;23966:22;:::i;:::-;;;;;;;;24019:2;-1:-1:-1;;;;;24004:25:0;24013:4;-1:-1:-1;;;;;24004:25:0;-1:-1:-1;;;;;;;;;;;24023:5:0;24004:25;;;;10807::1;;10795:2;10780:18;;10762:76;24004:25:0;;;;;;;;-1:-1:-1;24049:4:0;;23134:927;-1:-1:-1;;;;23134:927:0:o;14924:122::-;14973:4;14997:41;15007:10;15019:6;15027:10;14997:9;:41::i;:::-;14990:48;;14924:122;;;;:::o;7853:272::-;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;7926:5:::1;::::0;::::1;;7918:14;;;::::0;::::1;;7943:5;:14:::0;;-1:-1:-1;;;;;7943:14:0;;::::1;-1:-1:-1::0;;;;;;7943:14:0;;::::1;::::0;::::1;::::0;;;7968:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;7943:5:::1;8000:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;8000:23:0;;::::1;7943:14:::0;8000:23;;::::1;::::0;;;8034:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;8078:15:::1;8065:10;:28:::0;8104:5:::1;:13:::0;;;;::::1;::::0;;7853:272::o;14790:126::-;14862:10;14828:4;14874:21;;;:9;:21;;;;;;14828:4;;14852:56;;14862:10;14852:9;:56::i;:::-;14845:63;;14790:126;:::o;24688:523::-;24785:4;-1:-1:-1;;;;;24810:16:0;;;;;:39;;-1:-1:-1;;;;;;24830:19:0;;24844:4;24830:19;;24810:39;24802:48;;;;;;24891:10;24863:15;24881:21;;;:9;:21;;;;;;24921:16;;;;24913:76;;;;-1:-1:-1;;;24913:76:0;;;;;;;:::i;:::-;25026:15;25036:5;25026:7;:15;:::i;:::-;25012:10;25002:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;25052:13:0;;;;;;;:22;;25069:5;;25002:21;25052:22;;25069:5;;25052:22;:::i;:::-;;;;-1:-1:-1;;25090:31:0;;10807:25:1;;;-1:-1:-1;;;;;25090:31:0;;;25099:10;;-1:-1:-1;;;;;;;;;;;25090:31:0;10795:2:1;10780:18;25090:31:0;;;;;;;25141:62;;-1:-1:-1;;;25141:62:0;;-1:-1:-1;;;;;25141:37:0;;;;;:62;;25179:10;;25191:5;;25198:4;;;;25141:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25134:69;24688:523;-1:-1:-1;;;;;;24688:523:0:o;9686:133::-;7304:10;9755:4;7295:20;;;:8;:20;;;;;;;;7287:58;;;;-1:-1:-1;;;7287:58:0;;;;;;;:::i;:::-;9772:17:::1;9778:2;9782:6;9772:5;:17::i;:::-;-1:-1:-1::0;9807:4:0::1;9686:133:::0;;;;:::o;9353:325::-;9421:4;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9446:22:0;::::1;9438:63;;;;-1:-1:-1::0;;;9438:63:0::1;;;;;;;:::i;:::-;9512:12;:23:::0;;-1:-1:-1;;;;;;9512:23:0::1;-1:-1:-1::0;;;;;9512:23:0;::::1;;::::0;;9577:5:::1;::::0;9559:23:::1;::::0;:15:::1;:23;:::i;:::-;9546:10;:36:::0;;;9623:12:::1;::::0;9616:5:::1;::::0;9598:50:::1;::::0;-1:-1:-1;;;;;9623:12:0;;::::1;::::0;9616:5;;::::1;::::0;9598:50:::1;::::0;9623:12:::1;::::0;9598:50:::1;-1:-1:-1::0;9666:4:0::1;9353:325:::0;;;:::o;19509:938::-;19656:4;19700:8;19681:15;:27;;19673:70;;;;-1:-1:-1;;;19673:70:0;;14513:2:1;19673:70:0;;;14495:21:1;14552:2;14532:18;;;14525:30;14591:32;14571:18;;;14564:60;14641:18;;19673:70:0;14485:180:1;19673:70:0;-1:-1:-1;;;;;19936:14:0;;19756:18;19936:14;;;:6;:14;;;;;:16;;6215:92;;19866:6;;19891:2;;19912:5;;19936:16;19756:18;19936:16;;;:::i;:::-;;;;-1:-1:-1;19801:179:0;;;;;;11130:25:1;;;;-1:-1:-1;;;;;11229:15:1;;;11209:18;;;11202:43;11281:15;;;;11261:18;;;11254:43;11313:18;;;11306:34;11356:19;;;11349:35;11400:19;;;11393:35;;;11102:19;;19801:179:0;;;;;;;;;;;;19777:204;;;;;;19756:225;;20002:41;20015:6;20023:10;20035:1;20038;20041;20002:12;:41::i;:::-;:92;;;;20047:47;20066:6;20074:10;20086:1;20089;20092;20047:18;:47::i;:::-;19994:101;;;;;;-1:-1:-1;;;;;20116:16:0;;;;;:39;;-1:-1:-1;;;;;;20136:19:0;;20150:4;20136:19;;20116:39;20108:48;;;;;;-1:-1:-1;;;;;20187:17:0;;20169:15;20187:17;;;:9;:17;;;;;;20223:16;;;;20215:76;;;;-1:-1:-1;;;20215:76:0;;;;;;;:::i;:::-;20324:15;20334:5;20324:7;:15;:::i;:::-;-1:-1:-1;;;;;20304:17:0;;;;;;;:9;:17;;;;;;:35;;;;20350:13;;;;;;;;:22;;20367:5;;20304:17;20350:22;;20367:5;;20350:22;:::i;:::-;;;;;;;;20405:2;-1:-1:-1;;;;;20388:27:0;20397:6;-1:-1:-1;;;;;20388:27:0;-1:-1:-1;;;;;;;;;;;20409:5:0;20388:27;;;;10807:25:1;;10795:2;10780:18;;10762:76;20388:27:0;;;;;;;;-1:-1:-1;20435:4:0;;19509:938;-1:-1:-1;;;;;;;;;19509:938:0:o;9024:321::-;9091:4;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9116:22:0;::::1;9108:63;;;;-1:-1:-1::0;;;9108:63:0::1;;;;;;;:::i;:::-;9182:12;:23:::0;;-1:-1:-1;;;;;;9182:23:0::1;-1:-1:-1::0;;;;;9182:23:0;::::1;;::::0;;9247:5:::1;::::0;9229:23:::1;::::0;:15:::1;:23;:::i;:::-;9216:10;:36:::0;;;9290:12:::1;::::0;9283:5:::1;::::0;9268:47:::1;::::0;-1:-1:-1;;;;;9290:12:0;;::::1;::::0;9283:5;;::::1;::::0;9268:47:::1;::::0;9290:12:::1;::::0;9268:47:::1;-1:-1:-1::0;9333:4:0::1;9024:321:::0;;;:::o;8282:140::-;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;8346:12:::1;:21:::0;;-1:-1:-1;;;;;;8346:21:0::1;-1:-1:-1::0;;;;;8346:21:0;::::1;;::::0;;8409:5:::1;::::0;8391:23:::1;::::0;:15:::1;:23;:::i;:::-;8378:10;:36:::0;-1:-1:-1;8282:140:0:o;14242:193::-;14302:4;14319:70;-1:-1:-1;;;;;14326:10:0;14319:35;14355:10;14375:4;14382:6;14319:35;:70::i;:::-;14407:20;14416:6;14424:2;14407:8;:20::i;13133:349::-;13287:74;;-1:-1:-1;;;13287:74:0;;13270:4;;-1:-1:-1;;;;;13294:10:0;13287:25;;;;:74;;13313:6;;13329:4;;13336:5;;13343:8;;13353:1;;13356;;13359;;13287:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13372:65:0;;-1:-1:-1;;;;;;;13379:10:0;13372:35;;-1:-1:-1;13408:6:0;13424:4;13431:5;13372:35;:65::i;:::-;13455:19;13464:5;13471:2;13455:8;:19::i;:::-;13448:26;13133:349;-1:-1:-1;;;;;;;;13133:349:0:o;6949:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6949:24:0;;-1:-1:-1;6949:24:0;:::o;7490:78::-;7528:7;7555:5;:3;:5::i;5906:20::-;;;;;;;:::i;9827:207::-;7304:10;9898:4;7295:20;;;:8;:20;;;;;;;;7287:58;;;;-1:-1:-1;;;7287:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9923:18:0;::::1;9915:59;;;;-1:-1:-1::0;;;9915:59:0::1;;;;;;;:::i;:::-;9985:19;9991:4;9997:6;9985:5;:19::i;8915:99::-:0;8963:16;8999:7;8992:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8992:14:0;;;;;;;;;;;;;;;;;;;;;;;8915:99;:::o;21807:438::-;21879:4;-1:-1:-1;;;;;21904:16:0;;;;;:39;;-1:-1:-1;;;;;;21924:19:0;;21938:4;21924:19;;21904:39;21896:48;;;;;;21983:10;21955:15;21973:21;;;:9;:21;;;;;;22013:16;;;;22005:76;;;;-1:-1:-1;;;22005:76:0;;;;;;;:::i;:::-;22118:15;22128:5;22118:7;:15;:::i;:::-;22104:10;22094:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;22144:13:0;;;;;;;:22;;22161:5;;22094:21;22144:22;;22161:5;;22144:22;:::i;:::-;;;;-1:-1:-1;;22182:31:0;;10807:25:1;;;-1:-1:-1;;;;;22182:31:0;;;22191:10;;-1:-1:-1;;;;;;;;;;;22182:31:0;10795:2:1;10780:18;22182:31:0;;;;;;;;-1:-1:-1;22233:4:0;;21807:438;-1:-1:-1;;;21807:438:0:o;10259:295::-;10332:4;10349:24;10364:8;10349:14;:24::i;:::-;10393:10;;;;;;;10392:11;10384:48;;;;-1:-1:-1;;;10384:48:0;;14872:2:1;10384:48:0;;;14854:21:1;14911:2;14891:18;;;14884:30;14950:26;14930:18;;;14923:54;14994:18;;10384:48:0;14844:174:1;10384:48:0;10443:25;10449:10;10461:6;10443:5;:25::i;:::-;10495:10;-1:-1:-1;;;;;10484:40:0;;10507:6;10515:8;10484:40;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;10542:4:0;10259:295;;;;:::o;14045:189::-;14093:4;14110:70;-1:-1:-1;;;;;14117:10:0;14110:35;14146:10;14166:4;14173:6;14110:35;:70::i;:::-;14198:28;14207:6;14215:10;14198:8;:28::i;14443:127::-;14518:4;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;7751:94::-;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;7817:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;7817:20:0;;::::1;::::0;;;::::1;::::0;;7751:94::o;17597:356::-;17778:10;17701:4;17768:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17768:30:0;;;;;;;;;;:38;;;17822:36;17701:4;;17768:30;;-1:-1:-1;;;;;;;;;;;17822:36:0;;;17801:5;10807:25:1;;10795:2;10780:18;;10762:76;17822:36:0;;;;;;;;17878:67;;-1:-1:-1;;;17878:67:0;;-1:-1:-1;;;;;17878:42:0;;;;;:67;;17921:10;;17933:5;;17940:4;;;;17878:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17871:74;17597:356;-1:-1:-1;;;;;17597:356:0:o;8809:98::-;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8876:15:0::1;8894:5;8876:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;8876:23:0::1;::::0;;8809:98::o;13791:246::-;13860:40;;-1:-1:-1;;;13860:40:0;;13889:10;13860:40;;;7840:51:1;13828:4:0;;;;-1:-1:-1;;;;;13867:10:0;13860:28;;;;7813:18:1;;13860:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13845:55;-1:-1:-1;13911:71:0;-1:-1:-1;;;;;13918:10:0;13911:35;13947:10;13967:4;13845:55;13911:35;:71::i;:::-;14000:29;14009:7;14018:10;14000:8;:29::i;:::-;13993:36;;;13791:246;:::o;18786:715::-;18955:8;18936:15;:27;;18928:70;;;;-1:-1:-1;;;18928:70:0;;14513:2:1;18928:70:0;;;14495:21:1;14552:2;14532:18;;;14525:30;14591:32;14571:18;;;14564:60;14641:18;;18928:70:0;14485:180:1;18928:70:0;-1:-1:-1;;;;;19194:14:0;;19011:18;19194:14;;;:6;:14;;;;;:16;;6069:95;;19119:6;;19144:7;;19170:5;;19194:16;19011:18;19194:16;;;:::i;:::-;;;;-1:-1:-1;19056:182:0;;;;;;11130:25:1;;;;-1:-1:-1;;;;;11229:15:1;;;11209:18;;;11202:43;11281:15;;;;11261:18;;;11254:43;11313:18;;;11306:34;11356:19;;;11349:35;11400:19;;;11393:35;;;11102:19;;19056:182:0;;;;;;;;;;;;19032:207;;;;;;19011:228;;19260:41;19273:6;19281:10;19293:1;19296;19299;19260:12;:41::i;:::-;:92;;;;19305:47;19324:6;19332:10;19344:1;19347;19350;19305:18;:47::i;:::-;19252:101;;;;;;-1:-1:-1;;;;;19411:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;19461:32;;10807:25:1;;;-1:-1:-1;;;;;;;;;;;19461:32:0;10780:18:1;19461:32:0;;;;;;;18786:715;;;;;;;;:::o;8430:129::-;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;8509:10:::1;;8490:15;:29;;8482:38;;;::::0;::::1;;8539:12;::::0;8531:5:::1;:20:::0;;-1:-1:-1;;;;;;8531:20:0::1;-1:-1:-1::0;;;;;8539:12:0;;::::1;8531:20:::0;;;::::1;::::0;;8430:129::o;10042:209::-;7304:10;10132:4;7295:20;;;:8;:20;;;;;;;;7287:58;;;;-1:-1:-1;;;7287:58:0;;;;;;;:::i;:::-;10149:22:::1;10155:7;10164:6;10149:5;:22::i;:::-;10205:7;-1:-1:-1::0;;;;;10187:34:0::1;10197:6;10187:34;10214:6;10187:34;;;;10807:25:1::0;;10795:2;10780:18;;10762:76;7576:167:0;7612:7;7655:10;;7636:15;:29;7632:81;;-1:-1:-1;7689:12:0;;-1:-1:-1;;;;;7689:12:0;7682:19;;7632:81;-1:-1:-1;7730:5:0;;-1:-1:-1;;;;;7730:5:0;7576:167;:::o;13490:293::-;13652:86;;-1:-1:-1;;;13652:86:0;;13635:4;;-1:-1:-1;;;;;13659:10:0;13652:37;;;;:86;;13690:6;;13706:4;;13713:5;;13720:8;;13730:1;;13733;;13736;;13652:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13756:19;13765:5;13772:2;13756:8;:19::i;8133:141::-;7427:5;:3;:5::i;:::-;-1:-1:-1;;;;;7413:19:0;:10;-1:-1:-1;;;;;7413:19:0;;7405:57;;;;-1:-1:-1;;;7405:57:0;;;;;;;:::i;:::-;8197:13:::1;:21:::0;;-1:-1:-1;;;;;;8197:21:0::1;-1:-1:-1::0;;;;;8197:21:0;::::1;;::::0;;8261:5:::1;::::0;8243:23:::1;::::0;:15:::1;:23;:::i;:::-;8229:11;:37:::0;-1:-1:-1;8133:141:0:o;15345:198::-;15421:4;15438:19;15444:4;15450:6;15438:5;:19::i;:::-;15468:43;-1:-1:-1;;;;;15475:10:0;15468:31;15500:2;15504:6;15468:31;:43::i;:::-;-1:-1:-1;15529:6:0;;15345:198;-1:-1:-1;;15345:198:0:o;15824:268::-;-1:-1:-1;;;;;15900:21:0;;15892:65;;;;-1:-1:-1;;;15892:65:0;;17162:2:1;15892:65:0;;;17144:21:1;17201:2;17181:18;;;17174:30;17240:33;17220:18;;;17213:61;17291:18;;15892:65:0;17134:181:1;15892:65:0;15986:6;15970:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16003:18:0;;;;;;:9;:18;;;;;:28;;16025:6;;16003:18;:28;;16025:6;;16003:28;:::i;:::-;;;;-1:-1:-1;;16047:37:0;;10807:25:1;;;-1:-1:-1;;;;;16047:37:0;;;16064:1;;-1:-1:-1;;;;;;;;;;;16047:37:0;10795:2:1;10780:18;16047:37:0;;;;;;;;15824:268;;:::o;20455:399::-;20623:110;;-1:-1:-1;;;20623:110:0;;;7555:27:1;20687:16:0;7598:11:1;;;7591:27;7634:12;;;7627:28;;;20567:4:0;;;;7671:12:1;;20623:110:0;;;-1:-1:-1;;20623:110:0;;;;;;;;;20599:135;;20623:110;20599:135;;;;20745:14;20762:24;;;;;;;;;11666:25:1;;;11739:4;11727:17;;11707:18;;;11700:45;;;;11761:18;;;11754:34;;;11804:18;;;11797:34;;;20599:135:0;;-1:-1:-1;20745:14:0;20762:24;;11638:19:1;;20762:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20762:24:0;;-1:-1:-1;;20762:24:0;;;-1:-1:-1;;;;;;;20805:20:0;;;;;;:40;;;20839:6;-1:-1:-1;;;;;20829:16:0;:6;-1:-1:-1;;;;;20829:16:0;;20797:49;20455:399;-1:-1:-1;;;;;;;;20455:399:0:o;20862:290::-;20980:4;20997:12;21012:20;21021:10;21318:58;;7154:66:1;21318:58:0;;;7142:79:1;7237:12;;;7230:28;;;21281:7:0;;7274:12:1;;21318:58:0;;;;;;;;;;;;21308:69;;;;;;21301:76;;21226:159;;;;21012:20;21060:24;;;21043:14;21060:24;;;;;;;;;11666:25:1;;;11739:4;11727:17;;11707:18;;;11700:45;;;;11761:18;;;11754:34;;;11804:18;;;11797:34;;;20997:35:0;;-1:-1:-1;21043:14:0;21060:24;;11638:19:1;;21060:24:0;11620:217:1;4634:201:0;4758:68;;-1:-1:-1;;;;;8160:15:1;;;4758:68:0;;;8142:34:1;8212:15;;8192:18;;;8185:43;8244:18;;;8237:34;;;4732:95:0;;4751:5;;-1:-1:-1;;;4781:27:0;8077:18:1;;4758:68:0;;;;-1:-1:-1;;4758:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4758:68:0;-1:-1:-1;;;;;;4758:68:0;;;;;;;;;;4732:18;:95::i;:::-;4634:201;;;;:::o;14578:204::-;14639:4;14664:10;-1:-1:-1;;;;;14664:26:0;;;;;:57;;-1:-1:-1;14694:10:0;-1:-1:-1;;;;;14694:27:0;14716:4;14694:27;;14664:57;14656:66;;;;;;14733:17;14739:2;14743:6;14733:5;:17::i;:::-;-1:-1:-1;14768:6:0;;14578:204;-1:-1:-1;14578:204:0:o;16424:270::-;-1:-1:-1;;;;;16500:21:0;;16492:67;;;;-1:-1:-1;;;16492:67:0;;15579:2:1;16492:67:0;;;15561:21:1;15618:2;15598:18;;;15591:30;15657:34;15637:18;;;15630:62;-1:-1:-1;;;15708:18:1;;;15701:31;15749:19;;16492:67:0;15551:223:1;16492:67:0;-1:-1:-1;;;;;16572:18:0;;;;;;:9;:18;;;;;:28;;16594:6;;16572:18;:28;;16594:6;;16572:28;:::i;:::-;;;;;;;;16627:6;16611:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;16649:37:0;;10807:25:1;;;16675:1:0;;-1:-1:-1;;;;;16649:37:0;;;-1:-1:-1;;;;;;;;;;;16649:37:0;10795:2:1;10780:18;16649:37:0;10762:76:1;10562:300:0;10649:22;;10700:2;10690:12;;10682:49;;;;-1:-1:-1;;;10682:49:0;;14160:2:1;10682:49:0;;;14142:21:1;14199:2;14179:18;;;14172:30;14238:26;14218:18;;;14211:54;14282:18;;10682:49:0;14132:174:1;10682:49:0;10744:9;10762:8;10772:1;10756:18;;;;;;-1:-1:-1;;;10756:18:0;;;;;;;;;;;;;-1:-1:-1;;;;;;10756:18:0;;-1:-1:-1;;;;10793:9:0;;;:22;;-1:-1:-1;;;;;;;;;;10806:9:0;;;10793:22;10785:69;;;;-1:-1:-1;;;10785:69:0;;13757:2:1;10785:69:0;;;13739:21:1;13796:2;13776:18;;;13769:30;13835:34;13815:18;;;13808:62;-1:-1:-1;;;13886:18:1;;;13879:32;13928:19;;10785:69:0;13729:224:1;10785:69:0;10562:300;;;:::o;4453:173::-;4559:58;;-1:-1:-1;;;;;9149:32:1;;4559:58:0;;;9131:51:1;9198:18;;;9191:34;;;4533:85:0;;4552:5;;-1:-1:-1;;;4582:23:0;9104:18:1;;4559:58:0;9086:145:1;5193:598:0;5281:27;5289:5;-1:-1:-1;;;;;5281:25:0;;:27::i;:::-;5273:71;;;;-1:-1:-1;;;5273:71:0;;16802:2:1;5273:71:0;;;16784:21:1;16841:2;16821:18;;;16814:30;16880:33;16860:18;;;16853:61;16931:18;;5273:71:0;16774:181:1;5273:71:0;5418:12;5432:23;5467:5;-1:-1:-1;;;;;5459:19:0;5479:4;5459:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5417:67;;;;5503:7;5495:52;;;;-1:-1:-1;;;5495:52:0;;12980:2:1;5495:52:0;;;12962:21:1;;;12999:18;;;12992:30;13058:34;13038:18;;;13031:62;13110:18;;5495:52:0;12952:182:1;5495:52:0;5564:17;;:21;5560:224;;5706:10;5695:30;;;;;;;;;;;;:::i;:::-;5687:85;;;;-1:-1:-1;;;5687:85:0;;16391:2:1;5687:85:0;;;16373:21:1;16430:2;16410:18;;;16403:30;16469:34;16449:18;;;16442:62;-1:-1:-1;;;16520:18:1;;;16513:40;16570:19;;5687:85:0;16363:232:1;4013:374:0;4073:4;4296:20;;4139:66;4336:15;;;;;:42;;-1:-1:-1;4355:23:0;;;4328:51;-1:-1:-1;;4013:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:156;258:20;;318:4;307:16;;297:27;;287:2;;338:1;335;328:12;353:196;;465:2;453:9;444:7;440:23;436:32;433:2;;;486:6;478;471:22;433:2;514:29;533:9;514:29;:::i;554:270::-;;;683:2;671:9;662:7;658:23;654:32;651:2;;;704:6;696;689:22;651:2;732:29;751:9;732:29;:::i;:::-;722:39;;780:38;814:2;803:9;799:18;780:38;:::i;:::-;770:48;;641:183;;;;;:::o;829:338::-;;;;975:2;963:9;954:7;950:23;946:32;943:2;;;996:6;988;981:22;943:2;1024:29;1043:9;1024:29;:::i;:::-;1014:39;;1072:38;1106:2;1095:9;1091:18;1072:38;:::i;:::-;1062:48;;1157:2;1146:9;1142:18;1129:32;1119:42;;933:234;;;;;:::o;1172:616::-;;;;;;;;1384:3;1372:9;1363:7;1359:23;1355:33;1352:2;;;1406:6;1398;1391:22;1352:2;1434:29;1453:9;1434:29;:::i;:::-;1424:39;;1482:38;1516:2;1505:9;1501:18;1482:38;:::i;:::-;1472:48;;1567:2;1556:9;1552:18;1539:32;1529:42;;1618:2;1607:9;1603:18;1590:32;1580:42;;1641:37;1673:3;1662:9;1658:19;1641:37;:::i;:::-;1631:47;;1725:3;1714:9;1710:19;1697:33;1687:43;;1777:3;1766:9;1762:19;1749:33;1739:43;;1342:446;;;;;;;;;;:::o;1793:264::-;;;1922:2;1910:9;1901:7;1897:23;1893:32;1890:2;;;1943:6;1935;1928:22;1890:2;1971:29;1990:9;1971:29;:::i;:::-;1961:39;2047:2;2032:18;;;;2019:32;;-1:-1:-1;;;1880:177:1:o;2062:338::-;;;;2208:2;2196:9;2187:7;2183:23;2179:32;2176:2;;;2229:6;2221;2214:22;2176:2;2257:29;2276:9;2257:29;:::i;:::-;2247:39;;2333:2;2322:9;2318:18;2305:32;2295:42;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2166:234;;;;;:::o;2405:783::-;;;;;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;2619:29;2638:9;2619:29;:::i;:::-;2609:39;;2695:2;2684:9;2680:18;2667:32;2657:42;;2750:2;2739:9;2735:18;2722:32;2773:18;2814:2;2806:6;2803:14;2800:2;;;2835:6;2827;2820:22;2800:2;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:2;;2950:6;2942;2935:22;2894:2;2995;2982:16;3021:2;3013:6;3010:14;3007:2;;;3042:6;3034;3027:22;3007:2;3092:7;3087:2;3078:6;3074:2;3070:15;3066:24;3063:37;3060:2;;;3118:6;3110;3103:22;3060:2;2528:660;;;;-1:-1:-1;;3154:2:1;3146:11;;-1:-1:-1;;;2528:660:1:o;3193:616::-;;;;;;;;3405:3;3393:9;3384:7;3380:23;3376:33;3373:2;;;3427:6;3419;3412:22;3373:2;3455:29;3474:9;3455:29;:::i;:::-;3445:39;;3531:2;3520:9;3516:18;3503:32;3493:42;;3582:2;3571:9;3567:18;3554:32;3544:42;;3605:36;3637:2;3626:9;3622:18;3605:36;:::i;:::-;3595:46;;3688:3;3677:9;3673:19;3660:33;3650:43;;3740:3;3729:9;3725:19;3712:33;3702:43;;3764:39;3798:3;3787:9;3783:19;3764:39;:::i;:::-;3754:49;;3363:446;;;;;;;;;;:::o;3814:251::-;;3923:2;3911:9;3902:7;3898:23;3894:32;3891:2;;;3944:6;3936;3929:22;3891:2;3988:9;3975:23;4007:28;4029:5;4007:28;:::i;4070:255::-;;4190:2;4178:9;4169:7;4165:23;4161:32;4158:2;;;4211:6;4203;4196:22;4158:2;4248:9;4242:16;4267:28;4289:5;4267:28;:::i;4330:332::-;;;;4476:2;4464:9;4455:7;4451:23;4447:32;4444:2;;;4497:6;4489;4482:22;4444:2;4538:9;4525:23;4515:33;;4567:38;4601:2;4590:9;4586:18;4567:38;:::i;4667:190::-;;4779:2;4767:9;4758:7;4754:23;4750:32;4747:2;;;4800:6;4792;4785:22;4747:2;-1:-1:-1;4828:23:1;;4737:120;-1:-1:-1;4737:120:1:o;4862:194::-;;4985:2;4973:9;4964:7;4960:23;4956:32;4953:2;;;5006:6;4998;4991:22;4953:2;-1:-1:-1;5034:16:1;;4943:113;-1:-1:-1;4943:113:1:o;5061:264::-;;;5190:2;5178:9;5169:7;5165:23;5161:32;5158:2;;;5211:6;5203;5196:22;5158:2;5252:9;5239:23;5229:33;;5281:38;5315:2;5304:9;5300:18;5281:38;:::i;5330:1035::-;;;5469:2;5457:9;5448:7;5444:23;5440:32;5437:2;;;5490:6;5482;5475:22;5437:2;5531:9;5518:23;5508:33;;5592:2;5581:9;5577:18;5564:32;5615:18;5656:2;5648:6;5645:14;5642:2;;;5677:6;5669;5662:22;5642:2;5720:6;5709:9;5705:22;5695:32;;5765:7;5758:4;5754:2;5750:13;5746:27;5736:2;;5792:6;5784;5777:22;5736:2;5833;5820:16;5855:2;5851;5848:10;5845:2;;;5861:18;;:::i;:::-;5936:2;5930:9;5904:2;5990:13;;-1:-1:-1;;5986:22:1;;;6010:2;5982:31;5978:40;5966:53;;;6034:18;;;6054:22;;;6031:46;6028:2;;;6080:18;;:::i;:::-;6120:10;6116:2;6109:22;6155:2;6147:6;6140:18;6195:7;6190:2;6185;6181;6177:11;6173:20;6170:33;6167:2;;;6221:6;6213;6206:22;6167:2;6282;6277;6273;6269:11;6264:2;6256:6;6252:15;6239:46;6327:6;6322:2;6317;6309:6;6305:15;6301:24;6294:40;6353:6;6343:16;;;;;;;5427:938;;;;;:::o;6370:258::-;;6450:5;6444:12;6477:6;6472:3;6465:19;6493:63;6549:6;6542:4;6537:3;6533:14;6526:4;6519:5;6515:16;6493:63;:::i;:::-;6610:2;6589:15;-1:-1:-1;;6585:29:1;6576:39;;;;6617:4;6572:50;;6420:208;-1:-1:-1;;6420:208:1:o;6633:274::-;;6800:6;6794:13;6816:53;6862:6;6857:3;6850:4;6842:6;6838:17;6816:53;:::i;:::-;6885:16;;;;;6770:137;-1:-1:-1;;6770:137:1:o;8282:670::-;-1:-1:-1;;;;;8649:15:1;;;8631:34;;8701:15;;;;8696:2;8681:18;;8674:43;8748:2;8733:18;;8726:34;;;;8791:2;8776:18;;8769:34;;;;8852:4;8840:17;8834:3;8819:19;;8812:46;8611:3;8874:19;;8867:35;8933:3;8918:19;;8911:35;;;;8580:3;8565:19;;8547:405::o;9236:562::-;-1:-1:-1;;;;;9449:32:1;;9431:51;;9513:2;9498:18;;9491:34;;;9561:2;9556;9541:18;;9534:30;;;9580:18;;9573:34;;;9236:562;9600:6;9650;9644:3;9629:19;;9616:49;9685:22;;;9709:3;9681:32;;;9674:46;;;;9781:2;9760:15;;;-1:-1:-1;;9756:29:1;9741:45;9737:55;;9421:377;-1:-1:-1;;;9421:377:1:o;9803:661::-;9974:2;10026:21;;;10096:13;;9999:18;;;10118:22;;;9803:661;;9974:2;10197:15;;;;10171:2;10156:18;;;9803:661;10243:195;10257:6;10254:1;10251:13;10243:195;;;10322:13;;-1:-1:-1;;;;;10318:39:1;10306:52;;10413:15;;;;10378:12;;;;10354:1;10272:9;10243:195;;;-1:-1:-1;10455:3:1;;9954:510;-1:-1:-1;;;;;;9954:510:1:o;11842:220::-;;11991:2;11980:9;11973:21;12011:45;12052:2;12041:9;12037:18;12029:6;12011:45;:::i;12067:349::-;12269:2;12251:21;;;12308:2;12288:18;;;12281:30;12347:27;12342:2;12327:18;;12320:55;12407:2;12392:18;;12241:175::o;12421:352::-;12623:2;12605:21;;;12662:2;12642:18;;;12635:30;12701;12696:2;12681:18;;12674:58;12764:2;12749:18;;12595:178::o;13139:411::-;13341:2;13323:21;;;13380:2;13360:18;;;13353:30;13419:34;13414:2;13399:18;;13392:62;-1:-1:-1;;;13485:2:1;13470:18;;13463:45;13540:3;13525:19;;13313:237::o;15023:349::-;15225:2;15207:21;;;15264:2;15244:18;;;15237:30;15303:27;15298:2;15283:18;;15276:55;15363:2;15348:18;;15197:175::o;17502:291::-;;17679:6;17668:9;17661:25;17722:2;17717;17706:9;17702:18;17695:30;17742:45;17783:2;17772:9;17768:18;17760:6;17742:45;:::i;17987:128::-;;18058:1;18054:6;18051:1;18048:13;18045:2;;;18064:18;;:::i;:::-;-1:-1:-1;18100:9:1;;18035:80::o;18120:125::-;;18188:1;18185;18182:8;18179:2;;;18193:18;;:::i;:::-;-1:-1:-1;18230:9:1;;18169:76::o;18250:258::-;18322:1;18332:113;18346:6;18343:1;18340:13;18332:113;;;18422:11;;;18416:18;18403:11;;;18396:39;18368:2;18361:10;18332:113;;;18463:6;18460:1;18457:13;18454:2;;;-1:-1:-1;;18498:1:1;18480:16;;18473:27;18303:205::o;18513:380::-;18598:1;18588:12;;18645:1;18635:12;;;18656:2;;18710:4;18702:6;18698:17;18688:27;;18656:2;18763;18755:6;18752:14;18732:18;18729:38;18726:2;;;18809:10;18804:3;18800:20;18797:1;18790:31;18844:4;18841:1;18834:15;18872:4;18869:1;18862:15;18726:2;;18568:325;;;:::o;18898:135::-;;-1:-1:-1;;18958:17:1;;18955:2;;;18978:18;;:::i;:::-;-1:-1:-1;19025:1:1;19014:13;;18945:88::o;19038:127::-;19099:10;19094:3;19090:20;19087:1;19080:31;19130:4;19127:1;19120:15;19154:4;19151:1;19144:15;19170:127;19231:10;19226:3;19222:20;19219:1;19212:31;19262:4;19259:1;19252:15;19286:4;19283:1;19276:15;19302:118;19388:5;19381:13;19374:21;19367:5;19364:32;19354:2;;19410:1;19407;19400:12;19354:2;19344:76;:::o

Swarm Source

ipfs://f64f9fc967c675fd62cf6f82c43655cce2b12a89d736911f366001b9e54988f1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

ColossusXT ($COLX) is an energy efficient privacy coin, a grassroots community initiative (no ICO/premine), utilizing PoS + Masternode network with self-treasury to build Colossus Grid, an ambitious project that aims to reward voluntary contributions for distributed computing & decentralized storage

Validator Index Block Amount
View All Withdrawals

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

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