Contract 0x6b7a87899490ece95443e979ca9485cbe7e71522

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xedc982a0e963ba2c5d202988a425744a441b62e206b171334cf4578827b87780Approve11750132022-06-15 7:13:48226 days 6 hrs ago0xb86aa614edc512f4e3147779f964d420b43e44b4 IN  0x6b7a87899490ece95443e979ca9485cbe7e715220 CLV0.0022516
0x0ca864a073e95b46601a4894738bc18b2e6ec3fa2389a98637741df7108a093bInit Vault9835452022-05-16 13:13:12256 days 54 mins ago0xfa9da51631268a30ec3ddd1ccbf46c65fad99251 IN  0x6b7a87899490ece95443e979ca9485cbe7e715220 CLV0.01076528
0x119fa3761a49425a693b8eb7e7045826dd6e33bd0ba11aad201a37433917798d0x60c060409834822022-05-16 12:59:36256 days 1 hr ago0xfa9da51631268a30ec3ddd1ccbf46c65fad99251 IN  Contract Creation0 CLV0.5604339925
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xf480f38c366daac4305dc484b2ad7a496ff00cea

Contract Name:
AnyswapV6ERC20

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at clvscan.com on 2022-05-16
*/

// 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);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IComintToken {
    function mint(address to, uint256 amount) external;
    function burnFrom(address account, uint256 amount) external;
}

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 AnyswapV6ERC20 is IERC20 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable override decimals;

    address public immutable underlying;
    bool public underlyingIsMinted;

    /// @dev Records amount of AnyswapV6ERC20 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;

    // delay for timelock functions
    uint public constant DELAY = 2 days;

    // 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;

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

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

    function owner() external view returns (address) {
        return vault;
    }

    function mpc() external view returns (address) {
        return vault;
    }

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

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

    function setVault(address _vault) external onlyVault {
        require(_vault != address(0), "AnyswapV6ERC20: address(0)");
        pendingVault = _vault;
        delayVault = block.timestamp + DELAY;
    }

    function applyVault() external onlyVault {
        require(pendingVault != address(0) && block.timestamp >= delayVault);
        vault = pendingVault;

        pendingVault = address(0);
        delayVault = 0;
    }

    function setMinter(address _auth) external onlyVault {
        require(_auth != address(0), "AnyswapV6ERC20: address(0)");
        pendingMinter = _auth;
        delayMinter = block.timestamp + DELAY;
    }

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

        pendingMinter = address(0);
        delayMinter = 0;
    }

    // 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), "AnyswapV6ERC20: address(0)");
        emit LogChangeVault(vault, newVault, block.timestamp);
        vault = newVault;
        pendingVault = address(0);
        delayVault = 0;
        return true;
    }

    function mint(address to, uint256 amount) external onlyAuth returns (bool) {
        require(underlying != address(0));
        IComintToken(underlying).mint(to, amount);
        _totalSupply += amount;
        return true;
    }

    function burn(address from, uint256 amount) external onlyAuth returns (bool) {
        require(underlying != address(0));
        IComintToken(underlying).burnFrom(from, amount);
        _totalSupply -= amount;
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) external onlyAuth returns (bool) {
        require(underlying != address(0));
        IComintToken(underlying).mint(account, amount);
        _totalSupply += amount;
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, address bindaddr) external returns (bool) {
        require(!_vaultOnly, "AnyswapV6ERC20: vaultOnly");
        require(bindaddr != address(0), "AnyswapV6ERC20: address(0)");
        require(underlying != address(0));
        IComintToken(underlying).burnFrom(msg.sender, amount);
        _totalSupply -= amount;
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @dev Records number of AnyswapV6ERC20 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 LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);

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

        // 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;
    }

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

    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(!underlyingIsMinted);
        require(underlying != address(0) && 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) {
        require(!underlyingIsMinted);
        require(underlying != address(0) && underlying != address(this));
        _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");

        uint256 balance = balanceOf[account];
        require(balance >= amount, "ERC20: burn amount exceeds balance");

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

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

        return true;
    }

    /// @dev Moves `value` AnyswapV6ERC20 token from caller's account to account (`to`).
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV6ERC20 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, "AnyswapV6ERC20: transfer amount exceeds balance");

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

        return true;
    }

    /// @dev Moves `value` AnyswapV6ERC20 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`.
    /// 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 AnyswapV6ERC20 token.
    ///   - `from` account must have approved caller to spend at least `value` of AnyswapV6ERC20 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) {
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "AnyswapV6ERC20: 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, "AnyswapV6ERC20: transfer amount exceeds balance");

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

        return true;
    }
}

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":"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":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"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":"DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"","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":"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":"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":[],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"_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":"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":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingIsMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60c06040523480156200001157600080fd5b5060405162004647380380620046478339818101604052810190620000379190620004f2565b84600090805190602001906200004f92919062000202565b5083600190805190602001906200006892919062000202565b508260ff1660808160ff16815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000180578173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200012c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001529190620005b8565b60ff168360ff16146200016457600080fd5b6001600260006101000a81548160ff0219169083151502179055505b6001600560006101000a81548160ff0219169083151502179055506000600560016101000a81548160ff02191690831515021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506200064f565b828054620002109062000619565b90600052602060002090601f01602090048101928262000234576000855562000280565b82601f106200024f57805160ff191683800117855562000280565b8280016001018555821562000280579182015b828111156200027f57825182559160200191906001019062000262565b5b5090506200028f919062000293565b5090565b5b80821115620002ae57600081600090555060010162000294565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200031b82620002d0565b810181811067ffffffffffffffff821117156200033d576200033c620002e1565b5b80604052505050565b600062000352620002b2565b905062000360828262000310565b919050565b600067ffffffffffffffff821115620003835762000382620002e1565b5b6200038e82620002d0565b9050602081019050919050565b60005b83811015620003bb5780820151818401526020810190506200039e565b83811115620003cb576000848401525b50505050565b6000620003e8620003e28462000365565b62000346565b905082815260208101848484011115620004075762000406620002cb565b5b620004148482856200039b565b509392505050565b600082601f830112620004345762000433620002c6565b5b815162000446848260208601620003d1565b91505092915050565b600060ff82169050919050565b62000467816200044f565b81146200047357600080fd5b50565b60008151905062000487816200045c565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004ba826200048d565b9050919050565b620004cc81620004ad565b8114620004d857600080fd5b50565b600081519050620004ec81620004c1565b92915050565b600080600080600060a08688031215620005115762000510620002bc565b5b600086015167ffffffffffffffff811115620005325762000531620002c1565b5b62000540888289016200041c565b955050602086015167ffffffffffffffff811115620005645762000563620002c1565b5b62000572888289016200041c565b9450506040620005858882890162000476565b93505060606200059888828901620004db565b9250506080620005ab88828901620004db565b9150509295509295909350565b600060208284031215620005d157620005d0620002bc565b5b6000620005e18482850162000476565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200063257607f821691505b60208210811415620006495762000648620005ea565b5b50919050565b60805160a051613f5b620006ec60003960008181611405015281816114470152818161180a0152818161184c01528181611ac901528181611b2201528181611d2701528181611d69015281816120de0152818161237b0152818161241d015281816126fb0152818161273d01528181612a1a01528181612a7101528181612ac301528181612bd00152612c27015260006112ea0152613f5b6000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806387689e2811610146578063c3081240116100c3578063d93f244511610087578063d93f24451461079d578063dd62ed3e146107a7578063ec126c77146107d7578063f75c266414610807578063fbfa77cf14610825578063fca3b5aa146108435761025c565b8063c30812401461070b578063c4b740f514610729578063cfbd488514610745578063d0e30db014610761578063d6c797511461077f5761025c565b8063a045442c1161010a578063a045442c1461062d578063a9059cbb1461064b578063aa271e1a1461067b578063b6b55f25146106ab578063bebbf4d0146106db5761025c565b806387689e28146105855780638da5cb5b146105a357806391c5df49146105c157806395d89b41146105df5780639dc29fac146105fd5761025c565b80633ccfd60b116101df5780636817031b116101a35780636817031b1461049d57806369b41170146104b95780636e553f65146104d75780636f307dc31461050757806370a08231146105255780638623ec7b146105555761025c565b80633ccfd60b146103d157806340c10f19146103ef57806352113ba71461041f57806360e232a91461043d578063628d6cba1461046d5761025c565b806318160ddd1161022657806318160ddd1461031957806323b872dd146103375780632e1a7d4d146103675780632ebe3fbb14610397578063313ce567146103b35761025c565b806239d6ec14610261578062f714ce1461029157806306fdde03146102c1578063095ea7b3146102df5780630d707df81461030f575b600080fd5b61027b60048036038101906102769190613269565b61085f565b60405161028891906132cb565b60405180910390f35b6102ab60048036038101906102a691906132e6565b610905565b6040516102b891906132cb565b60405180910390f35b6102c961091a565b6040516102d691906133bf565b60405180910390f35b6102f960048036038101906102f491906133e1565b6109a8565b604051610306919061343c565b60405180910390f35b610317610a9a565b005b610321610cdf565b60405161032e91906132cb565b60405180910390f35b610351600480360381019061034c9190613457565b610ce9565b60405161035e919061343c565b60405180910390f35b610381600480360381019061037c91906134aa565b611111565b60405161038e91906132cb565b60405180910390f35b6103b160048036038101906103ac91906134d7565b611125565b005b6103bb6112e8565b6040516103c89190613520565b60405180910390f35b6103d961130c565b6040516103e691906132cb565b60405180910390f35b610409600480360381019061040491906133e1565b61135d565b604051610416919061343c565b60405180910390f35b6104276114f5565b604051610434919061354a565b60405180910390f35b610457600480360381019061045291906134d7565b61151b565b604051610464919061343c565b60405180910390f35b610487600480360381019061048291906132e6565b61172e565b604051610494919061343c565b60405180910390f35b6104b760048036038101906104b291906134d7565b61195f565b005b6104c1611ab8565b6040516104ce91906132cb565b60405180910390f35b6104f160048036038101906104ec91906132e6565b611abf565b6040516104fe91906132cb565b60405180910390f35b61050f611b20565b60405161051c919061354a565b60405180910390f35b61053f600480360381019061053a91906134d7565b611b44565b60405161054c91906132cb565b60405180910390f35b61056f600480360381019061056a91906134aa565b611b5c565b60405161057c919061354a565b60405180910390f35b61058d611b9b565b60405161059a91906132cb565b60405180910390f35b6105ab611ba1565b6040516105b8919061354a565b60405180910390f35b6105c9611bcb565b6040516105d6919061354a565b60405180910390f35b6105e7611bf1565b6040516105f491906133bf565b60405180910390f35b610617600480360381019061061291906133e1565b611c7f565b604051610624919061343c565b60405180910390f35b610635611e17565b6040516106429190613623565b60405180910390f35b610665600480360381019061066091906133e1565b611ea5565b604051610672919061343c565b60405180910390f35b610695600480360381019061069091906134d7565b6120b4565b6040516106a2919061343c565b60405180910390f35b6106c560048036038101906106c091906134aa565b6120d4565b6040516106d291906132cb565b60405180910390f35b6106f560048036038101906106f091906132e6565b612134565b60405161070291906132cb565b60405180910390f35b6107136121d8565b60405161072091906132cb565b60405180910390f35b610743600480360381019061073e9190613671565b6121de565b005b61075f600480360381019061075a91906134d7565b61228b565b005b610769612376565b60405161077691906132cb565b60405180910390f35b610787612472565b604051610794919061343c565b60405180910390f35b6107a5612485565b005b6107c160048036038101906107bc919061369e565b61262e565b6040516107ce91906132cb565b60405180910390f35b6107f160048036038101906107ec9190613714565b612653565b6040516107fe919061343c565b60405180910390f35b61080f61283b565b60405161081c919061354a565b60405180910390f35b61082d612865565b60405161083a919061354a565b60405180910390f35b61085d600480360381019061085891906134d7565b61288b565b005b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e8906137b3565b60405180910390fd5b6108fc8484846129e4565b90509392505050565b60006109123384846129e4565b905092915050565b6000805461092790613802565b80601f016020809104026020016040519081016040528092919081815260200182805461095390613802565b80156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b505050505081565b600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a8891906132cb565b60405180910390a36001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610b8b5750600a544210155b610b9457600080fd5b600160066000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a81905550565b6000600454905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d5357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b610d5c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610f74576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f725782811015610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e71906138a6565b60405180910390fd5b60008382610e8891906138f5565b905080600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f6891906132cb565b60405180910390a3505b505b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff29061399b565b60405180910390fd5b828161100791906138f5565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461109991906139bb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110fd91906132cb565b60405180910390a360019150509392505050565b600061111e3383336129e4565b9050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906137b3565b60405180910390fd5b600560009054906101000a900460ff166111ce57600080fd5b6000600560006101000a81548160ff02191690831515021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061135833600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054336129e4565b905090565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e2906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16141561144557600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b81526004016114a0929190613a11565b600060405180830381600087803b1580156114ba57600080fd5b505af11580156114ce573d6000803e3d6000fd5b5050505081600460008282546114e491906139bb565b925050819055506001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a4906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561161d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161490613a86565b60405180910390fd5b428273ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac60405160405180910390a481600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c8190555060019050919050565b6000600560019054906101000a900460ff1615611780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177790613af2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e790613a86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16141561184a57600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033856040518363ffffffff1660e01b81526004016118a5929190613a11565b600060405180830381600087803b1580156118bf57600080fd5b505af11580156118d3573d6000803e3d6000fd5b5050505082600460008282546118e991906138f5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c8888560405161194d91906132cb565b60405180910390a36001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e6906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5690613a86565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506202a30042611aaf91906139bb565b600c8190555050565b6202a30081565b6000611b0e3330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612b11909392919063ffffffff16565b611b188383612b9a565b905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020528060005260406000206000915090505481565b60078181548110611b6c57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054611bfe90613802565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2a90613802565b8015611c775780601f10611c4c57610100808354040283529160200191611c77565b820191906000526020600020905b815481529060010190602001808311611c5a57829003601f168201915b505050505081565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d04906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161415611d6757600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679084846040518363ffffffff1660e01b8152600401611dc2929190613a11565b600060405180830381600087803b158015611ddc57600080fd5b505af1158015611df0573d6000803e3d6000fd5b505050508160046000828254611e0691906138f5565b925050819055506001905092915050565b60606007805480602002602001604051908101604052809291908181526020018280548015611e9b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e51575b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f0f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b611f1857600080fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f969061399b565b60405180910390fd5b8281611fab91906138f5565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461203d91906139bb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120a191906132cb565b60405180910390a3600191505092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006121233330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612b11909392919063ffffffff16565b61212d8233612b9a565b9050919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bd906137b3565b60405180910390fd5b6121d08383612b9a565b905092915050565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461226e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612265906137b3565b60405180910390fd5b80600560016101000a81548160ff02191690831515021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461231b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612312906137b3565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016123d2919061354a565b602060405180830381865afa1580156123ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124139190613b27565b90506124623330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612b11909392919063ffffffff16565b61246c8133612b9a565b91505090565b600260009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250c906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156125765750600c544210155b61257f57600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c81905550565b600d602052816000526040600020602052806000526040600020600091509150505481565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d8906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16141561273b57600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b8152600401612796929190613a11565b600060405180830381600087803b1580156127b057600080fd5b505af11580156127c4573d6000803e3d6000fd5b5050505081600460008282546127da91906139bb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161282891906132cb565b60405180910390a3600190509392505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461291b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612912906137b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561298b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298290613a86565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506202a300426129db91906139bb565b600a8190555050565b6000600260009054906101000a900460ff1615612a0057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614158015612aa957503073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b612ab257600080fd5b612abc8484612c7b565b612b0782847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612e459092919063ffffffff16565b8290509392505050565b612b94846323b872dd60e01b858585604051602401612b3293929190613b54565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612ecb565b50505050565b6000600260009054906101000a900460ff1615612bb657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614158015612c5f57503073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b612c6857600080fd5b612c72828461303c565b82905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce290613bfd565b60405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6990613c8f565b60405180910390fd5b8181612d7e91906138f5565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160046000828254612dd391906138f5565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e3891906132cb565b60405180910390a3505050565b612ec68363a9059cbb60e01b8484604051602401612e64929190613a11565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612ecb565b505050565b612eea8273ffffffffffffffffffffffffffffffffffffffff16613185565b612f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2090613cfb565b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051612f519190613d62565b6000604051808303816000865af19150503d8060008114612f8e576040519150601f19603f3d011682016040523d82523d6000602084013e612f93565b606091505b509150915081612fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcf90613dc5565b60405180910390fd5b6000815111156130365780806020019051810190612ff69190613dfa565b613035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302c90613e99565b60405180910390fd5b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a390613f05565b60405180910390fd5b80600460008282546130be91906139bb565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461311491906139bb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161317991906132cb565b60405180910390a35050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156131c75750808214155b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613200826131d5565b9050919050565b613210816131f5565b811461321b57600080fd5b50565b60008135905061322d81613207565b92915050565b6000819050919050565b61324681613233565b811461325157600080fd5b50565b6000813590506132638161323d565b92915050565b600080600060608486031215613282576132816131d0565b5b60006132908682870161321e565b93505060206132a186828701613254565b92505060406132b28682870161321e565b9150509250925092565b6132c581613233565b82525050565b60006020820190506132e060008301846132bc565b92915050565b600080604083850312156132fd576132fc6131d0565b5b600061330b85828601613254565b925050602061331c8582860161321e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613360578082015181840152602081019050613345565b8381111561336f576000848401525b50505050565b6000601f19601f8301169050919050565b600061339182613326565b61339b8185613331565b93506133ab818560208601613342565b6133b481613375565b840191505092915050565b600060208201905081810360008301526133d98184613386565b905092915050565b600080604083850312156133f8576133f76131d0565b5b60006134068582860161321e565b925050602061341785828601613254565b9150509250929050565b60008115159050919050565b61343681613421565b82525050565b6000602082019050613451600083018461342d565b92915050565b6000806000606084860312156134705761346f6131d0565b5b600061347e8682870161321e565b935050602061348f8682870161321e565b92505060406134a086828701613254565b9150509250925092565b6000602082840312156134c0576134bf6131d0565b5b60006134ce84828501613254565b91505092915050565b6000602082840312156134ed576134ec6131d0565b5b60006134fb8482850161321e565b91505092915050565b600060ff82169050919050565b61351a81613504565b82525050565b60006020820190506135356000830184613511565b92915050565b613544816131f5565b82525050565b600060208201905061355f600083018461353b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61359a816131f5565b82525050565b60006135ac8383613591565b60208301905092915050565b6000602082019050919050565b60006135d082613565565b6135da8185613570565b93506135e583613581565b8060005b838110156136165781516135fd88826135a0565b9750613608836135b8565b9250506001810190506135e9565b5085935050505092915050565b6000602082019050818103600083015261363d81846135c5565b905092915050565b61364e81613421565b811461365957600080fd5b50565b60008135905061366b81613645565b92915050565b600060208284031215613687576136866131d0565b5b60006136958482850161365c565b91505092915050565b600080604083850312156136b5576136b46131d0565b5b60006136c38582860161321e565b92505060206136d48582860161321e565b9150509250929050565b6000819050919050565b6136f1816136de565b81146136fc57600080fd5b50565b60008135905061370e816136e8565b92915050565b60008060006060848603121561372d5761372c6131d0565b5b600061373b868287016136ff565b935050602061374c8682870161321e565b925050604061375d86828701613254565b9150509250925092565b7f416e7973776170563645524332303a20464f5242494444454e00000000000000600082015250565b600061379d601983613331565b91506137a882613767565b602082019050919050565b600060208201905081810360008301526137cc81613790565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061381a57607f821691505b6020821081141561382e5761382d6137d3565b5b50919050565b7f416e7973776170563645524332303a207265717565737420657863656564732060008201527f616c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b6000613890602983613331565b915061389b82613834565b604082019050919050565b600060208201905081810360008301526138bf81613883565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390082613233565b915061390b83613233565b92508282101561391e5761391d6138c6565b5b828203905092915050565b7f416e7973776170563645524332303a207472616e7366657220616d6f756e742060008201527f657863656564732062616c616e63650000000000000000000000000000000000602082015250565b6000613985602f83613331565b915061399082613929565b604082019050919050565b600060208201905081810360008301526139b481613978565b9050919050565b60006139c682613233565b91506139d183613233565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a0657613a056138c6565b5b828201905092915050565b6000604082019050613a26600083018561353b565b613a3360208301846132bc565b9392505050565b7f416e7973776170563645524332303a2061646472657373283029000000000000600082015250565b6000613a70601a83613331565b9150613a7b82613a3a565b602082019050919050565b60006020820190508181036000830152613a9f81613a63565b9050919050565b7f416e7973776170563645524332303a207661756c744f6e6c7900000000000000600082015250565b6000613adc601983613331565b9150613ae782613aa6565b602082019050919050565b60006020820190508181036000830152613b0b81613acf565b9050919050565b600081519050613b218161323d565b92915050565b600060208284031215613b3d57613b3c6131d0565b5b6000613b4b84828501613b12565b91505092915050565b6000606082019050613b69600083018661353b565b613b76602083018561353b565b613b8360408301846132bc565b949350505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613be7602183613331565b9150613bf282613b8b565b604082019050919050565b60006020820190508181036000830152613c1681613bda565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c79602283613331565b9150613c8482613c1d565b604082019050919050565b60006020820190508181036000830152613ca881613c6c565b9050919050565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400600082015250565b6000613ce5601f83613331565b9150613cf082613caf565b602082019050919050565b60006020820190508181036000830152613d1481613cd8565b9050919050565b600081519050919050565b600081905092915050565b6000613d3c82613d1b565b613d468185613d26565b9350613d56818560208601613342565b80840191505092915050565b6000613d6e8284613d31565b915081905092915050565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564600082015250565b6000613daf602083613331565b9150613dba82613d79565b602082019050919050565b60006020820190508181036000830152613dde81613da2565b9050919050565b600081519050613df481613645565b92915050565b600060208284031215613e1057613e0f6131d0565b5b6000613e1e84828501613de5565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613e83602a83613331565b9150613e8e82613e27565b604082019050919050565b60006020820190508181036000830152613eb281613e76565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613eef601f83613331565b9150613efa82613eb9565b602082019050919050565b60006020820190508181036000830152613f1e81613ee2565b905091905056fea26469706673582212208e7260532216449099d5cb92e6c1c4f7813093b2e05020cbdfa8c2c6cfcf5c3664736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000a1c3767c93e7b51ecb445fdbae1494dfc654e524000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad992510000000000000000000000000000000000000000000000000000000000000007616e7957455448000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007616e795745544800000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

2844:11952:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10233:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10099:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2918:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12203:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5305:275;;;:::i;:::-;;8689:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13927:866;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9969:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4430:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2970:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9835:126;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6191:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3855:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5856:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7003:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4639:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3526:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9250:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3020:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3677:24;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3889:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4154:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3788:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2943:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6433:242;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5749:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12720:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3630:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9053:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9451:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3823:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4328:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5643:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8799:246;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3062:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4857:222;;;:::i;:::-;;7606:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6683:312;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4242:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3759:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5087:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10233:149;10323:4;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10347:27:::1;10357:4;10363:6;10371:2;10347:9;:27::i;:::-;10340:34;;10233:149:::0;;;;;:::o;10099:126::-;10160:4;10184:33;10194:10;10206:6;10214:2;10184:9;:33::i;:::-;10177:40;;10099:126;;;;:::o;2918:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12203:215::-;12279:4;12329:5;12296:9;:21;12306:10;12296:21;;;;;;;;;;;;;;;:30;12318:7;12296:30;;;;;;;;;;;;;;;:38;;;;12371:7;12350:36;;12359:10;12350:36;;;12380:5;12350:36;;;;;;:::i;:::-;;;;;;;;12406:4;12399:11;;12203:215;;;;:::o;5305:275::-;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5391:1:::1;5366:27;;:13;;;;;;;;;;;:27;;;;:61;;;;;5416:11;;5397:15;:30;;5366:61;5358:70;;;::::0;::::1;;5465:4;5439:8;:23;5448:13;;;;;;;;;;;5439:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;5480:7;5493:13;;;;;;;;;;;5480:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5544:1;5520:13;;:26;;;;;;;;;;;;;;;;;;5571:1;5557:11;:15;;;;5305:275::o:0;8689:102::-;8744:7;8771:12;;8764:19;;8689:102;:::o;13927:866::-;14017:4;14056:1;14042:16;;:2;:16;;;;:39;;;;;14076:4;14062:19;;:2;:19;;;;14042:39;14034:48;;;;;;14105:10;14097:18;;:4;:18;;;14093:416;;14132:15;14150:9;:15;14160:4;14150:15;;;;;;;;;;;;;;;:27;14166:10;14150:27;;;;;;;;;;;;;;;;14132:45;;14207:17;14196:7;:28;14192:306;;14264:5;14253:7;:16;;14245:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14334:15;14362:5;14352:7;:15;;;;:::i;:::-;14334:33;;14416:7;14386:9;:15;14396:4;14386:15;;;;;;;;;;;;;;;:27;14402:10;14386:27;;;;;;;;;;;;;;;:37;;;;14462:10;14447:35;;14456:4;14447:35;;;14474:7;14447:35;;;;;;:::i;:::-;;;;;;;;14226:272;14192:306;14117:392;14093:416;14521:15;14539:9;:15;14549:4;14539:15;;;;;;;;;;;;;;;;14521:33;;14584:5;14573:7;:16;;14565:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14682:5;14672:7;:15;;;;:::i;:::-;14654:9;:15;14664:4;14654:15;;;;;;;;;;;;;;;:33;;;;14715:5;14698:9;:13;14708:2;14698:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;14751:2;14736:25;;14745:4;14736:25;;;14755:5;14736:25;;;;;;:::i;:::-;;;;;;;;14781:4;14774:11;;;13927:866;;;;;:::o;9969:122::-;10018:4;10042:41;10052:10;10064:6;10072:10;10042:9;:41::i;:::-;10035:48;;9969:122;;;:::o;4430:201::-;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4503:5:::1;;;;;;;;;;;4495:14;;;::::0;::::1;;4528:5;4520;;:13;;;;;;;;;;;;;;;;;;4552:6;4544:5;;:14;;;;;;;;;;;;;;;;;;4588:4;4569:8;:16;4578:6;4569:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;4603:7;4616:6;4603:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4430:201:::0;:::o;2970:41::-;;;:::o;9835:126::-;9873:4;9897:56;9907:10;9919:9;:21;9929:10;9919:21;;;;;;;;;;;;;;;;9942:10;9897:9;:56::i;:::-;9890:63;;9835:126;:::o;6191:234::-;6260:4;3959:8;:20;3968:10;3959:20;;;;;;;;;;;;;;;;;;;;;;;;;3951:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6307:1:::1;6285:24;;:10;:24;;;;6277:33;;;::::0;::::1;;6334:10;6321:29;;;6351:2;6355:6;6321:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6389:6;6373:12;;:22;;;;;;;:::i;:::-;;;;;;;;6413:4;6406:11;;6191:234:::0;;;;:::o;3855:27::-;;;;;;;;;;;;;:::o;5856:327::-;5923:4;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5968:1:::1;5948:22;;:8;:22;;;;5940:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6049:15;6039:8;6017:48;;6032:5;;;;;;;;;;;6017:48;;;;;;;;;;;;6084:8;6076:5;;:16;;;;;;;;;;;;;;;;;;6126:1;6103:12;;:25;;;;;;;;;;;;;;;;;;6152:1;6139:10;:14;;;;6171:4;6164:11;;5856:327:::0;;;:::o;7003:434::-;7072:4;7098:10;;;;;;;;;;;7097:11;7089:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;7177:1;7157:22;;:8;:22;;;;7149:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7251:1;7229:24;;:10;:24;;;;7221:33;;;;;;7278:10;7265:33;;;7299:10;7311:6;7265:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7345:6;7329:12;;:22;;;;;;;:::i;:::-;;;;;;;;7390:8;7367:40;;7378:10;7367:40;;;7400:6;7367:40;;;;;;:::i;:::-;;;;;;;;7425:4;7418:11;;7003:434;;;;:::o;4639:210::-;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4729:1:::1;4711:20;;:6;:20;;;;4703:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4788:6;4773:12;;:21;;;;;;;;;;;;;;;;;;3555:6;4818:15;:23;;;;:::i;:::-;4805:10;:36;;;;4639:210:::0;:::o;3526:35::-;3555:6;3526:35;:::o;9250:193::-;9310:4;9327:70;9363:10;9383:4;9390:6;9334:10;9327:35;;;;:70;;;;;;:::i;:::-;9415:20;9424:6;9432:2;9415:8;:20::i;:::-;9408:27;;9250:193;;;;:::o;3020:35::-;;;:::o;3172:54::-;;;;;;;;;;;;;;;;;:::o;3677:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3889:22::-;;;;:::o;4154:80::-;4194:7;4221:5;;;;;;;;;;;4214:12;;4154:80;:::o;3788:28::-;;;;;;;;;;;;;:::o;2943:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6433:242::-;6504:4;3959:8;:20;3968:10;3959:20;;;;;;;;;;;;;;;;;;;;;;;;;3951:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6551:1:::1;6529:24;;:10;:24;;;;6521:33;;;::::0;::::1;;6578:10;6565:33;;;6599:4;6605:6;6565:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6639:6;6623:12;;:22;;;;;;;:::i;:::-;;;;;;;;6663:4;6656:11;;6433:242:::0;;;;:::o;5749:99::-;5797:16;5833:7;5826:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5749:99;:::o;12720:438::-;12792:4;12831:1;12817:16;;:2;:16;;;;:39;;;;;12851:4;12837:19;;:2;:19;;;;12817:39;12809:48;;;;;;12868:15;12886:9;:21;12896:10;12886:21;;;;;;;;;;;;;;;;12868:39;;12937:5;12926:7;:16;;12918:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13041:5;13031:7;:15;;;;:::i;:::-;13007:9;:21;13017:10;13007:21;;;;;;;;;;;;;;;:39;;;;13074:5;13057:9;:13;13067:2;13057:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;13116:2;13095:31;;13104:10;13095:31;;;13120:5;13095:31;;;;;;:::i;:::-;;;;;;;;13146:4;13139:11;;;12720:438;;;;:::o;3630:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;9053:189::-;9101:4;9118:70;9154:10;9174:4;9181:6;9125:10;9118:35;;;;:70;;;;;;:::i;:::-;9206:28;9215:6;9223:10;9206:8;:28::i;:::-;9199:35;;9053:189;;;:::o;9451:127::-;9526:4;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9550:20:::1;9559:6;9567:2;9550:8;:20::i;:::-;9543:27;;9451:127:::0;;;;:::o;3823:23::-;;;;:::o;4328:94::-;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4407:7:::1;4394:10;;:20;;;;;;;;;;;;;;;;;;4328:94:::0;:::o;5643:98::-;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5728:5:::1;5710:8;:15;5719:5;5710:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;5643:98:::0;:::o;8799:246::-;8836:4;8853:12;8875:10;8868:28;;;8897:10;8868:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8853:55;;8919:71;8955:10;8975:4;8982:7;8926:10;8919:35;;;;:71;;;;;;:::i;:::-;9008:29;9017:7;9026:10;9008:8;:29::i;:::-;9001:36;;;8799:246;:::o;3062:30::-;;;;;;;;;;;;;:::o;4857:222::-;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4941:1:::1;4917:26;;:12;;;;;;;;;;;:26;;;;:59;;;;;4966:10;;4947:15;:29;;4917:59;4909:68;;;::::0;::::1;;4996:12;;;;;;;;;;;4988:5;;:20;;;;;;;;;;;;;;;;;;5044:1;5021:12;;:25;;;;;;;;;;;;;;;;;;5070:1;5057:10;:14;;;;4857:222::o:0;7606:75::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6683:312::-;6775:4;3959:8;:20;3968:10;3959:20;;;;;;;;;;;;;;;;;;;;;;;;;3951:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6822:1:::1;6800:24;;:10;:24;;;;6792:33;;;::::0;::::1;;6849:10;6836:29;;;6866:7;6875:6;6836:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6909:6;6893:12;;:22;;;;;;;:::i;:::-;;;;;;;;6949:7;6931:34;;6941:6;6931:34;6958:6;6931:34;;;;;;:::i;:::-;;;;;;;;6983:4;6976:11;;6683:312:::0;;;;;:::o;4242:78::-;4280:7;4307:5;;;;;;;;;;;4300:12;;4242:78;:::o;3759:20::-;;;;;;;;;;;;;:::o;5087:210::-;4091:5;;;;;;;;;;;4077:19;;:10;:19;;;4069:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5176:1:::1;5159:19;;:5;:19;;;;5151:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5236:5;5220:13;;:21;;;;;;;;;;;;;;;;;;3555:6;5266:15;:23;;;;:::i;:::-;5252:11;:37;;;;5087:210:::0;:::o;10390:312::-;10466:4;10492:18;;;;;;;;;;;10491:19;10483:28;;;;;;10552:1;10530:24;;:10;:24;;;;:55;;;;;10580:4;10558:27;;:10;:27;;;;10530:55;10522:64;;;;;;10597:19;10603:4;10609:6;10597:5;:19::i;:::-;10627:43;10659:2;10663:6;10634:10;10627:31;;;;:43;;;;;:::i;:::-;10688:6;10681:13;;10390:312;;;;;:::o;1680:201::-;1778:95;1797:5;1827:27;;;1856:4;1862:2;1866:5;1804:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:18;:95::i;:::-;1680:201;;;;:::o;9586:241::-;9647:4;9673:18;;;;;;;;;;;9672:19;9664:28;;;;;;9733:1;9711:24;;:10;:24;;;;:55;;;;;9761:4;9739:27;;:10;:27;;;;9711:55;9703:64;;;;;;9778:17;9784:2;9788:6;9778:5;:17::i;:::-;9813:6;9806:13;;9586:241;;;;:::o;11583:403::-;11678:1;11659:21;;:7;:21;;;;11651:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11731:15;11749:9;:18;11759:7;11749:18;;;;;;;;;;;;;;;;11731:36;;11797:6;11786:7;:17;;11778:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11886:6;11876:7;:16;;;;:::i;:::-;11855:9;:18;11865:7;11855:18;;;;;;;;;;;;;;;:37;;;;11919:6;11903:12;;:22;;;;;;;:::i;:::-;;;;;;;;11967:1;11941:37;;11950:7;11941:37;;;11971:6;11941:37;;;;;;:::i;:::-;;;;;;;;11640:346;11583:403;;:::o;1499:173::-;1579:85;1598:5;1628:23;;;1653:2;1657:5;1605:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:18;:85::i;:::-;1499:173;;;:::o;2239:598::-;2327:27;2335:5;2327:25;;;:27::i;:::-;2319:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;2464:12;2478:23;2513:5;2505:19;;2525:4;2505:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:67;;;;2549:7;2541:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;2630:1;2610:10;:17;:21;2606:224;;;2752:10;2741:30;;;;;;;;;;;;:::i;:::-;2733:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;2606:224;2308:529;;2239:598;;:::o;10983:268::-;11078:1;11059:21;;:7;:21;;;;11051:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11145:6;11129:12;;:22;;;;;;;:::i;:::-;;;;;;;;11184:6;11162:9;:18;11172:7;11162:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;11227:7;11206:37;;11223:1;11206:37;;;11236:6;11206:37;;;;;;:::i;:::-;;;;;;;;10983:268;;:::o;1059:374::-;1119:4;1136:16;1163:19;1185:66;1163:88;;;;1354:7;1342:20;1330:32;;1394:3;1382:15;;:8;:15;;:42;;;;;1413:11;1401:8;:23;;1382:42;1374:51;;;;1059:374;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:619::-;1274:6;1282;1290;1339:2;1327:9;1318:7;1314:23;1310:32;1307:119;;;1345:79;;:::i;:::-;1307:119;1465:1;1490:53;1535:7;1526:6;1515:9;1511:22;1490:53;:::i;:::-;1480:63;;1436:117;1592:2;1618:53;1663:7;1654:6;1643:9;1639:22;1618:53;:::i;:::-;1608:63;;1563:118;1720:2;1746:53;1791:7;1782:6;1771:9;1767:22;1746:53;:::i;:::-;1736:63;;1691:118;1197:619;;;;;:::o;1822:118::-;1909:24;1927:5;1909:24;:::i;:::-;1904:3;1897:37;1822:118;;:::o;1946:222::-;2039:4;2077:2;2066:9;2062:18;2054:26;;2090:71;2158:1;2147:9;2143:17;2134:6;2090:71;:::i;:::-;1946:222;;;;:::o;2174:474::-;2242:6;2250;2299:2;2287:9;2278:7;2274:23;2270:32;2267:119;;;2305:79;;:::i;:::-;2267:119;2425:1;2450:53;2495:7;2486:6;2475:9;2471:22;2450:53;:::i;:::-;2440:63;;2396:117;2552:2;2578:53;2623:7;2614:6;2603:9;2599:22;2578:53;:::i;:::-;2568:63;;2523:118;2174:474;;;;;:::o;2654:99::-;2706:6;2740:5;2734:12;2724:22;;2654:99;;;:::o;2759:169::-;2843:11;2877:6;2872:3;2865:19;2917:4;2912:3;2908:14;2893:29;;2759:169;;;;:::o;2934:307::-;3002:1;3012:113;3026:6;3023:1;3020:13;3012:113;;;3111:1;3106:3;3102:11;3096:18;3092:1;3087:3;3083:11;3076:39;3048:2;3045:1;3041:10;3036:15;;3012:113;;;3143:6;3140:1;3137:13;3134:101;;;3223:1;3214:6;3209:3;3205:16;3198:27;3134:101;2983:258;2934:307;;;:::o;3247:102::-;3288:6;3339:2;3335:7;3330:2;3323:5;3319:14;3315:28;3305:38;;3247:102;;;:::o;3355:364::-;3443:3;3471:39;3504:5;3471:39;:::i;:::-;3526:71;3590:6;3585:3;3526:71;:::i;:::-;3519:78;;3606:52;3651:6;3646:3;3639:4;3632:5;3628:16;3606:52;:::i;:::-;3683:29;3705:6;3683:29;:::i;:::-;3678:3;3674:39;3667:46;;3447:272;3355:364;;;;:::o;3725:313::-;3838:4;3876:2;3865:9;3861:18;3853:26;;3925:9;3919:4;3915:20;3911:1;3900:9;3896:17;3889:47;3953:78;4026:4;4017:6;3953:78;:::i;:::-;3945:86;;3725:313;;;;:::o;4044:474::-;4112:6;4120;4169:2;4157:9;4148:7;4144:23;4140:32;4137:119;;;4175:79;;:::i;:::-;4137:119;4295:1;4320:53;4365:7;4356:6;4345:9;4341:22;4320:53;:::i;:::-;4310:63;;4266:117;4422:2;4448:53;4493:7;4484:6;4473:9;4469:22;4448:53;:::i;:::-;4438:63;;4393:118;4044:474;;;;;:::o;4524:90::-;4558:7;4601:5;4594:13;4587:21;4576:32;;4524:90;;;:::o;4620:109::-;4701:21;4716:5;4701:21;:::i;:::-;4696:3;4689:34;4620:109;;:::o;4735:210::-;4822:4;4860:2;4849:9;4845:18;4837:26;;4873:65;4935:1;4924:9;4920:17;4911:6;4873:65;:::i;:::-;4735:210;;;;:::o;4951:619::-;5028:6;5036;5044;5093:2;5081:9;5072:7;5068:23;5064:32;5061:119;;;5099:79;;:::i;:::-;5061:119;5219:1;5244:53;5289:7;5280:6;5269:9;5265:22;5244:53;:::i;:::-;5234:63;;5190:117;5346:2;5372:53;5417:7;5408:6;5397:9;5393:22;5372:53;:::i;:::-;5362:63;;5317:118;5474:2;5500:53;5545:7;5536:6;5525:9;5521:22;5500:53;:::i;:::-;5490:63;;5445:118;4951:619;;;;;:::o;5576:329::-;5635:6;5684:2;5672:9;5663:7;5659:23;5655:32;5652:119;;;5690:79;;:::i;:::-;5652:119;5810:1;5835:53;5880:7;5871:6;5860:9;5856:22;5835:53;:::i;:::-;5825:63;;5781:117;5576:329;;;;:::o;5911:::-;5970:6;6019:2;6007:9;5998:7;5994:23;5990:32;5987:119;;;6025:79;;:::i;:::-;5987:119;6145:1;6170:53;6215:7;6206:6;6195:9;6191:22;6170:53;:::i;:::-;6160:63;;6116:117;5911:329;;;;:::o;6246:86::-;6281:7;6321:4;6314:5;6310:16;6299:27;;6246:86;;;:::o;6338:112::-;6421:22;6437:5;6421:22;:::i;:::-;6416:3;6409:35;6338:112;;:::o;6456:214::-;6545:4;6583:2;6572:9;6568:18;6560:26;;6596:67;6660:1;6649:9;6645:17;6636:6;6596:67;:::i;:::-;6456:214;;;;:::o;6676:118::-;6763:24;6781:5;6763:24;:::i;:::-;6758:3;6751:37;6676:118;;:::o;6800:222::-;6893:4;6931:2;6920:9;6916:18;6908:26;;6944:71;7012:1;7001:9;6997:17;6988:6;6944:71;:::i;:::-;6800:222;;;;:::o;7028:114::-;7095:6;7129:5;7123:12;7113:22;;7028:114;;;:::o;7148:184::-;7247:11;7281:6;7276:3;7269:19;7321:4;7316:3;7312:14;7297:29;;7148:184;;;;:::o;7338:132::-;7405:4;7428:3;7420:11;;7458:4;7453:3;7449:14;7441:22;;7338:132;;;:::o;7476:108::-;7553:24;7571:5;7553:24;:::i;:::-;7548:3;7541:37;7476:108;;:::o;7590:179::-;7659:10;7680:46;7722:3;7714:6;7680:46;:::i;:::-;7758:4;7753:3;7749:14;7735:28;;7590:179;;;;:::o;7775:113::-;7845:4;7877;7872:3;7868:14;7860:22;;7775:113;;;:::o;7924:732::-;8043:3;8072:54;8120:5;8072:54;:::i;:::-;8142:86;8221:6;8216:3;8142:86;:::i;:::-;8135:93;;8252:56;8302:5;8252:56;:::i;:::-;8331:7;8362:1;8347:284;8372:6;8369:1;8366:13;8347:284;;;8448:6;8442:13;8475:63;8534:3;8519:13;8475:63;:::i;:::-;8468:70;;8561:60;8614:6;8561:60;:::i;:::-;8551:70;;8407:224;8394:1;8391;8387:9;8382:14;;8347:284;;;8351:14;8647:3;8640:10;;8048:608;;;7924:732;;;;:::o;8662:373::-;8805:4;8843:2;8832:9;8828:18;8820:26;;8892:9;8886:4;8882:20;8878:1;8867:9;8863:17;8856:47;8920:108;9023:4;9014:6;8920:108;:::i;:::-;8912:116;;8662:373;;;;:::o;9041:116::-;9111:21;9126:5;9111:21;:::i;:::-;9104:5;9101:32;9091:60;;9147:1;9144;9137:12;9091:60;9041:116;:::o;9163:133::-;9206:5;9244:6;9231:20;9222:29;;9260:30;9284:5;9260:30;:::i;:::-;9163:133;;;;:::o;9302:323::-;9358:6;9407:2;9395:9;9386:7;9382:23;9378:32;9375:119;;;9413:79;;:::i;:::-;9375:119;9533:1;9558:50;9600:7;9591:6;9580:9;9576:22;9558:50;:::i;:::-;9548:60;;9504:114;9302:323;;;;:::o;9631:474::-;9699:6;9707;9756:2;9744:9;9735:7;9731:23;9727:32;9724:119;;;9762:79;;:::i;:::-;9724:119;9882:1;9907:53;9952:7;9943:6;9932:9;9928:22;9907:53;:::i;:::-;9897:63;;9853:117;10009:2;10035:53;10080:7;10071:6;10060:9;10056:22;10035:53;:::i;:::-;10025:63;;9980:118;9631:474;;;;;:::o;10111:77::-;10148:7;10177:5;10166:16;;10111:77;;;:::o;10194:122::-;10267:24;10285:5;10267:24;:::i;:::-;10260:5;10257:35;10247:63;;10306:1;10303;10296:12;10247:63;10194:122;:::o;10322:139::-;10368:5;10406:6;10393:20;10384:29;;10422:33;10449:5;10422:33;:::i;:::-;10322:139;;;;:::o;10467:619::-;10544:6;10552;10560;10609:2;10597:9;10588:7;10584:23;10580:32;10577:119;;;10615:79;;:::i;:::-;10577:119;10735:1;10760:53;10805:7;10796:6;10785:9;10781:22;10760:53;:::i;:::-;10750:63;;10706:117;10862:2;10888:53;10933:7;10924:6;10913:9;10909:22;10888:53;:::i;:::-;10878:63;;10833:118;10990:2;11016:53;11061:7;11052:6;11041:9;11037:22;11016:53;:::i;:::-;11006:63;;10961:118;10467:619;;;;;:::o;11092:175::-;11232:27;11228:1;11220:6;11216:14;11209:51;11092:175;:::o;11273:366::-;11415:3;11436:67;11500:2;11495:3;11436:67;:::i;:::-;11429:74;;11512:93;11601:3;11512:93;:::i;:::-;11630:2;11625:3;11621:12;11614:19;;11273:366;;;:::o;11645:419::-;11811:4;11849:2;11838:9;11834:18;11826:26;;11898:9;11892:4;11888:20;11884:1;11873:9;11869:17;11862:47;11926:131;12052:4;11926:131;:::i;:::-;11918:139;;11645:419;;;:::o;12070:180::-;12118:77;12115:1;12108:88;12215:4;12212:1;12205:15;12239:4;12236:1;12229:15;12256:320;12300:6;12337:1;12331:4;12327:12;12317:22;;12384:1;12378:4;12374:12;12405:18;12395:81;;12461:4;12453:6;12449:17;12439:27;;12395:81;12523:2;12515:6;12512:14;12492:18;12489:38;12486:84;;;12542:18;;:::i;:::-;12486:84;12307:269;12256:320;;;:::o;12582:228::-;12722:34;12718:1;12710:6;12706:14;12699:58;12791:11;12786:2;12778:6;12774:15;12767:36;12582:228;:::o;12816:366::-;12958:3;12979:67;13043:2;13038:3;12979:67;:::i;:::-;12972:74;;13055:93;13144:3;13055:93;:::i;:::-;13173:2;13168:3;13164:12;13157:19;;12816:366;;;:::o;13188:419::-;13354:4;13392:2;13381:9;13377:18;13369:26;;13441:9;13435:4;13431:20;13427:1;13416:9;13412:17;13405:47;13469:131;13595:4;13469:131;:::i;:::-;13461:139;;13188:419;;;:::o;13613:180::-;13661:77;13658:1;13651:88;13758:4;13755:1;13748:15;13782:4;13779:1;13772:15;13799:191;13839:4;13859:20;13877:1;13859:20;:::i;:::-;13854:25;;13893:20;13911:1;13893:20;:::i;:::-;13888:25;;13932:1;13929;13926:8;13923:34;;;13937:18;;:::i;:::-;13923:34;13982:1;13979;13975:9;13967:17;;13799:191;;;;:::o;13996:234::-;14136:34;14132:1;14124:6;14120:14;14113:58;14205:17;14200:2;14192:6;14188:15;14181:42;13996:234;:::o;14236:366::-;14378:3;14399:67;14463:2;14458:3;14399:67;:::i;:::-;14392:74;;14475:93;14564:3;14475:93;:::i;:::-;14593:2;14588:3;14584:12;14577:19;;14236:366;;;:::o;14608:419::-;14774:4;14812:2;14801:9;14797:18;14789:26;;14861:9;14855:4;14851:20;14847:1;14836:9;14832:17;14825:47;14889:131;15015:4;14889:131;:::i;:::-;14881:139;;14608:419;;;:::o;15033:305::-;15073:3;15092:20;15110:1;15092:20;:::i;:::-;15087:25;;15126:20;15144:1;15126:20;:::i;:::-;15121:25;;15280:1;15212:66;15208:74;15205:1;15202:81;15199:107;;;15286:18;;:::i;:::-;15199:107;15330:1;15327;15323:9;15316:16;;15033:305;;;;:::o;15344:332::-;15465:4;15503:2;15492:9;15488:18;15480:26;;15516:71;15584:1;15573:9;15569:17;15560:6;15516:71;:::i;:::-;15597:72;15665:2;15654:9;15650:18;15641:6;15597:72;:::i;:::-;15344:332;;;;;:::o;15682:176::-;15822:28;15818:1;15810:6;15806:14;15799:52;15682:176;:::o;15864:366::-;16006:3;16027:67;16091:2;16086:3;16027:67;:::i;:::-;16020:74;;16103:93;16192:3;16103:93;:::i;:::-;16221:2;16216:3;16212:12;16205:19;;15864:366;;;:::o;16236:419::-;16402:4;16440:2;16429:9;16425:18;16417:26;;16489:9;16483:4;16479:20;16475:1;16464:9;16460:17;16453:47;16517:131;16643:4;16517:131;:::i;:::-;16509:139;;16236:419;;;:::o;16661:175::-;16801:27;16797:1;16789:6;16785:14;16778:51;16661:175;:::o;16842:366::-;16984:3;17005:67;17069:2;17064:3;17005:67;:::i;:::-;16998:74;;17081:93;17170:3;17081:93;:::i;:::-;17199:2;17194:3;17190:12;17183:19;;16842:366;;;:::o;17214:419::-;17380:4;17418:2;17407:9;17403:18;17395:26;;17467:9;17461:4;17457:20;17453:1;17442:9;17438:17;17431:47;17495:131;17621:4;17495:131;:::i;:::-;17487:139;;17214:419;;;:::o;17639:143::-;17696:5;17727:6;17721:13;17712:22;;17743:33;17770:5;17743:33;:::i;:::-;17639:143;;;;:::o;17788:351::-;17858:6;17907:2;17895:9;17886:7;17882:23;17878:32;17875:119;;;17913:79;;:::i;:::-;17875:119;18033:1;18058:64;18114:7;18105:6;18094:9;18090:22;18058:64;:::i;:::-;18048:74;;18004:128;17788:351;;;;:::o;18145:442::-;18294:4;18332:2;18321:9;18317:18;18309:26;;18345:71;18413:1;18402:9;18398:17;18389:6;18345:71;:::i;:::-;18426:72;18494:2;18483:9;18479:18;18470:6;18426:72;:::i;:::-;18508;18576:2;18565:9;18561:18;18552:6;18508:72;:::i;:::-;18145:442;;;;;;:::o;18593:220::-;18733:34;18729:1;18721:6;18717:14;18710:58;18802:3;18797:2;18789:6;18785:15;18778:28;18593:220;:::o;18819:366::-;18961:3;18982:67;19046:2;19041:3;18982:67;:::i;:::-;18975:74;;19058:93;19147:3;19058:93;:::i;:::-;19176:2;19171:3;19167:12;19160:19;;18819:366;;;:::o;19191:419::-;19357:4;19395:2;19384:9;19380:18;19372:26;;19444:9;19438:4;19434:20;19430:1;19419:9;19415:17;19408:47;19472:131;19598:4;19472:131;:::i;:::-;19464:139;;19191:419;;;:::o;19616:221::-;19756:34;19752:1;19744:6;19740:14;19733:58;19825:4;19820:2;19812:6;19808:15;19801:29;19616:221;:::o;19843:366::-;19985:3;20006:67;20070:2;20065:3;20006:67;:::i;:::-;19999:74;;20082:93;20171:3;20082:93;:::i;:::-;20200:2;20195:3;20191:12;20184:19;;19843:366;;;:::o;20215:419::-;20381:4;20419:2;20408:9;20404:18;20396:26;;20468:9;20462:4;20458:20;20454:1;20443:9;20439:17;20432:47;20496:131;20622:4;20496:131;:::i;:::-;20488:139;;20215:419;;;:::o;20640:181::-;20780:33;20776:1;20768:6;20764:14;20757:57;20640:181;:::o;20827:366::-;20969:3;20990:67;21054:2;21049:3;20990:67;:::i;:::-;20983:74;;21066:93;21155:3;21066:93;:::i;:::-;21184:2;21179:3;21175:12;21168:19;;20827:366;;;:::o;21199:419::-;21365:4;21403:2;21392:9;21388:18;21380:26;;21452:9;21446:4;21442:20;21438:1;21427:9;21423:17;21416:47;21480:131;21606:4;21480:131;:::i;:::-;21472:139;;21199:419;;;:::o;21624:98::-;21675:6;21709:5;21703:12;21693:22;;21624:98;;;:::o;21728:147::-;21829:11;21866:3;21851:18;;21728:147;;;;:::o;21881:373::-;21985:3;22013:38;22045:5;22013:38;:::i;:::-;22067:88;22148:6;22143:3;22067:88;:::i;:::-;22060:95;;22164:52;22209:6;22204:3;22197:4;22190:5;22186:16;22164:52;:::i;:::-;22241:6;22236:3;22232:16;22225:23;;21989:265;21881:373;;;;:::o;22260:271::-;22390:3;22412:93;22501:3;22492:6;22412:93;:::i;:::-;22405:100;;22522:3;22515:10;;22260:271;;;;:::o;22537:182::-;22677:34;22673:1;22665:6;22661:14;22654:58;22537:182;:::o;22725:366::-;22867:3;22888:67;22952:2;22947:3;22888:67;:::i;:::-;22881:74;;22964:93;23053:3;22964:93;:::i;:::-;23082:2;23077:3;23073:12;23066:19;;22725:366;;;:::o;23097:419::-;23263:4;23301:2;23290:9;23286:18;23278:26;;23350:9;23344:4;23340:20;23336:1;23325:9;23321:17;23314:47;23378:131;23504:4;23378:131;:::i;:::-;23370:139;;23097:419;;;:::o;23522:137::-;23576:5;23607:6;23601:13;23592:22;;23623:30;23647:5;23623:30;:::i;:::-;23522:137;;;;:::o;23665:345::-;23732:6;23781:2;23769:9;23760:7;23756:23;23752:32;23749:119;;;23787:79;;:::i;:::-;23749:119;23907:1;23932:61;23985:7;23976:6;23965:9;23961:22;23932:61;:::i;:::-;23922:71;;23878:125;23665:345;;;;:::o;24016:229::-;24156:34;24152:1;24144:6;24140:14;24133:58;24225:12;24220:2;24212:6;24208:15;24201:37;24016:229;:::o;24251:366::-;24393:3;24414:67;24478:2;24473:3;24414:67;:::i;:::-;24407:74;;24490:93;24579:3;24490:93;:::i;:::-;24608:2;24603:3;24599:12;24592:19;;24251:366;;;:::o;24623:419::-;24789:4;24827:2;24816:9;24812:18;24804:26;;24876:9;24870:4;24866:20;24862:1;24851:9;24847:17;24840:47;24904:131;25030:4;24904:131;:::i;:::-;24896:139;;24623:419;;;:::o;25048:181::-;25188:33;25184:1;25176:6;25172:14;25165:57;25048:181;:::o;25235:366::-;25377:3;25398:67;25462:2;25457:3;25398:67;:::i;:::-;25391:74;;25474:93;25563:3;25474:93;:::i;:::-;25592:2;25587:3;25583:12;25576:19;;25235:366;;;:::o;25607:419::-;25773:4;25811:2;25800:9;25796:18;25788:26;;25860:9;25854:4;25850:20;25846:1;25835:9;25831:17;25824:47;25888:131;26014:4;25888:131;:::i;:::-;25880:139;;25607:419;;;:::o

Swarm Source

ipfs://8e7260532216449099d5cb92e6c1c4f7813093b2e05020cbdfa8c2c6cfcf5c36
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.