Contract 0xd7783a275e53fc6746dedfbad4a06059937502a4

Contract Overview

0xNodes: BIOS Token
Balance:
0 AVAX

AVAX Value:
$0.00
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcb407f3af8dc7f88aaa0e41f1292a501eb425b8bd62f18c0851065df33f91eaaTransfer219824022022-11-05 10:59:2821 days 14 hrs ago0x5487f642ce22d8c15f15fd13383f4d7d798b52ff IN  0xNodes: BIOS Token0 AVAX0.002178489675.6
0x0d5e26708d1ff39e87bfc4a58497bd565e80065d489905d9374e2e32cc0622c1Transfer219824022022-11-05 10:59:2821 days 14 hrs ago0x5487f642ce22d8c15f15fd13383f4d7d798b52ff IN  0xNodes: BIOS Token0 AVAX0.002178489675.6
0xb150ecbfe37960709ec129d869a16fd5ebaf68c17e065174587c946fe818f584Approve133301742022-04-12 16:51:19228 days 8 hrs ago0xff1153a6809fc384983963721b751b0df822e246 IN  0xNodes: BIOS Token0 AVAX0.002177144067 81.507396482
0x18d6530d7a1a8351c137291f021929c38d3b2597bd7be7e3ee835a9d1c95e1eaApprove133301482022-04-12 16:50:26228 days 8 hrs ago0xff1153a6809fc384983963721b751b0df822e246 IN  0xNodes: BIOS Token0 AVAX0.003803799756 81.607340688
0xc7c605609bdad939ac50e278795ab17efbb67e1ce5c857ff04910509e289c8ceApprove122989882022-03-19 8:38:18252 days 16 hrs ago0xb759d06d46cd700d06dbc174475fb9da35f52047 IN  0xNodes: BIOS Token0 AVAX0.00154477482 33.14185108
0x0b39405df3112722cdb0c93940703d60880a164fc1d28158382315d88f220ef2Transfer122192702022-03-17 10:12:04254 days 15 hrs ago0xb759d06d46cd700d06dbc174475fb9da35f52047 IN  0xNodes: BIOS Token0 AVAX0.002774484228 53.781581542
0xb1c25ed0af0796e2a1620e2816cdcc0ab250066b351ea89f21d7e446130ef945Approve120236282022-03-12 17:53:45259 days 7 hrs ago0x2ca176300a6fa085916424c1583b3f23fc701e08 IN  0xNodes: BIOS Token0 AVAX0.002706575864 58.067320263
0x6bbc3f882612e913802b48b6a3defa80a2a73c678affb0954185ede496ef8a74Approve119817472022-03-11 17:54:25260 days 7 hrs ago0x06f0a9b3a2e8a8208d25784cca39375c43791031 IN  0xNodes: BIOS Token0 AVAX0.003283673163 70.44845988
0xc5c8d7fb49b6046ff6c607b66ea8654fa827aa347ec445cc00b873b4b1f54372Approve113963212022-02-25 23:41:33274 days 1 hr ago0x6d7c58ef32f799a3c99de1dbbb4554cbf1aa0162 IN  0xNodes: BIOS Token0 AVAX0.000966914371 36.199107899
0x74a788543462ef9372f3b6650d663e2d1148891f8e4c9610f207371aaa6322f8Approve113963072022-02-25 23:41:03274 days 1 hr ago0x6d7c58ef32f799a3c99de1dbbb4554cbf1aa0162 IN  0xNodes: BIOS Token0 AVAX0.001720384689 36.909413869
0x434283c7e2914b4fb561cf42e9a9bc57ee1b13936e20879f5b1e8de158ceb319Approve113961442022-02-25 23:35:15274 days 1 hr ago0x2d3cb68846cf8905edd3da329f43ee63d78dd68d IN  0xNodes: BIOS Token0 AVAX0.001925753874 41.315437873
0x3ec700d225598ac97dd35ade3793a5f680375b5e1d4a065934114149951fda86Approve113958922022-02-25 23:26:28274 days 1 hr ago0x5b4b59cfe9d5bf1ac734f3f0f5bcdf19b53add64 IN  0xNodes: BIOS Token0 AVAX0.001966094054 42.180902665
0x5f361129fbf505f33b8aafdd88c33d9111e5c2df404562c480e05ef7007b0b1bTransfer113956062022-02-25 23:16:21274 days 1 hr ago0x2d3cb68846cf8905edd3da329f43ee63d78dd68d IN  0xNodes: BIOS Token0 AVAX0.001892410595 36.674623943
0x385c22cf3de0c271aebe4df5bffc1b6374beafd2a3746b432a3cdb693751a5d4Transfer113955942022-02-25 23:15:56274 days 1 hr ago0x2d3cb68846cf8905edd3da329f43ee63d78dd68d IN  0xNodes: BIOS Token0 AVAX0.001880005371 36.434212623
0x3fee379082d669072d3365c38e380c607a3c1941d8bc22f188d70cd20a7af658Transfer113955772022-02-25 23:15:17274 days 2 hrs ago0x2d3cb68846cf8905edd3da329f43ee63d78dd68d IN  0xNodes: BIOS Token0 AVAX0.001915922328 37.130277675
0xc54efc78de4c7c2338834feff9295250fbc5fe905cb63d47c2dfbaf90e7f7615Approve113356662022-02-24 13:04:48275 days 12 hrs ago0x43ed63322703ca6249ddd5a094d9bee0a3e8aaf7 IN  0xNodes: BIOS Token0 AVAX0.001268599644 27.216743792
0x0c05f658fb189eebc2ff97479417748e8b299e9388bc0ad9da90b801f77500b9Transfer113355792022-02-24 13:01:52275 days 12 hrs ago0x0d1555531622cf39cc623dca214972bd8e587715 IN  0xNodes: BIOS Token0 AVAX0.00141423822 27.407717445
0xf66fa03689d1d71e04c97fadd033ad2bb993d0ed9095f8f7ea9fc2327972ee2dApprove112517332022-02-22 13:23:44277 days 11 hrs ago0x873f826cfe2663f078674e0fe01e6940deffb97b IN  0xNodes: BIOS Token0 AVAX0.001425846372 30.590340737
0x6c63b25e7b1f9bc4d0bf010e1e31d4ae00d9f029a9e5f49cffd66ddf7c6a9697Approve108916422022-02-14 2:08:39285 days 23 hrs ago0x0d1555531622cf39cc623dca214972bd8e587715 IN  0xNodes: BIOS Token0 AVAX0.0012351915 26.5
0xc85a7fae98701ccc57cef858b629887f8aa5f7cdb75a92fd83f42cf5ef736755Approve108905632022-02-14 1:32:03285 days 23 hrs ago0x8430bfecc29bf6a28a8fe431bb6edb3c19c91d34 IN  0xNodes: BIOS Token0 AVAX0.00116850344225.069263538
0xf37c4c65b86c5b0fd21866b34c6aebc434fcb7bf5fe1f26800ea1a59416ba3b4Approve108404162022-02-12 21:33:05287 days 3 hrs ago0x0e938f234cff703624a24770a18094cd71e2b37b IN  0xNodes: BIOS Token0 AVAX0.001486636182 31.894535246
0x85eff8e24511243e501d41525969c397b4e8a411b1d9df03474871a859b45f58Approve108266502022-02-12 14:09:43287 days 11 hrs ago0x6c495e23969ba440d3b7d010a1268bdc098dcba5 IN  0xNodes: BIOS Token0 AVAX0.001236078846 26.519037268
0x2f4866833da850a5049fe8466945d908eadd92e153bf3ea744bbb780dff1536fApprove108017732022-02-12 0:58:42288 days 17 mins ago0x679f4a92100b65a97ee5f3cae7dbba42dbacb7d5 IN  0xNodes: BIOS Token0 AVAX0.001310812062 28.122375896
0x107521ecb468a2077b2e46edfc723a97f43b2416918db8b7a03f269a93472248Approve107665482022-02-11 5:38:42288 days 19 hrs ago0xfdbcda8258c3df9af8aa504205c27a7e6f7fef9b IN  0xNodes: BIOS Token0 AVAX0.001205958 26
0x9abc2f7eecc0a6fe40ec8bc5673b06fc0c5c838a7f28f3f1dc6cc90ec156d2fbInit Vault98094902022-01-20 6:51:31310 days 18 hrs agoMultichain: Deployer IN  0xNodes: BIOS Token0 AVAX0.0032632830
[ Download CSV Export 

OVERVIEW

0x_Nodes is a multichain yield aggregation system.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV6ERC20

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-02-11
*/

/**
 *Submitted for verification at snowtrace.io on 2022-02-11
*/

/**
 *Submitted for verification at snowtrace.io on 2022-02-10
*/

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

/**
 * @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);
    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);

}

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

    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 setVault(address _vault) external onlyVault {
        require(_vault != address(0), "AnyswapV3ERC20: address(0x0)");
        pendingVault = _vault;
        delayVault = block.timestamp + delay;
    }

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

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

    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)");
        vault = newVault;
        pendingVault = newVault;
        emit LogChangeVault(vault, pendingVault, block.timestamp);
        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, address bindaddr) public returns (bool) {
        require(!_vaultOnly, "AnyswapV4ERC20: onlyAuth");
        require(bindaddr != address(0), "AnyswapV3ERC20: address(0x0)");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @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 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(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 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 view returns (bool) {
        bytes32 hash = keccak256(
            abi.encodePacked(
                "\x19Ethereum Signed Message:\n32",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    /// @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 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":"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":"address","name":"bindaddr","type":"address"}],"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":"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":"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":[{"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":"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"}]

60e06040526202a3006005553480156200001857600080fd5b5060405162002b2538038062002b258339810160408190526200003b9162000399565b845162000050906000906020880190620001f7565b50835162000066906001906020870190620001f7565b5060ff83166080526001600160a01b03821660a081905215620000fa57816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e891906200043b565b60ff168360ff1614620000fa57600080fd5b6004805461ffff19166001179055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f906200016c906000906200049d565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c0525062000541945050505050565b828054620002059062000460565b90600052602060002090601f01602090048101928262000229576000855562000274565b82601f106200024457805160ff191683800117855562000274565b8280016001018555821562000274579182015b828111156200027457825182559160200191906001019062000257565b506200028292915062000286565b5090565b5b8082111562000282576000815560010162000287565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002c557600080fd5b81516001600160401b0380821115620002e257620002e26200029d565b604051601f8301601f19908116603f011681019082821181831017156200030d576200030d6200029d565b816040528381526020925086838588010111156200032a57600080fd5b600091505b838210156200034e57858201830151818301840152908201906200032f565b83821115620003605760008385830101525b9695505050505050565b805160ff811681146200037c57600080fd5b919050565b80516001600160a01b03811681146200037c57600080fd5b600080600080600060a08688031215620003b257600080fd5b85516001600160401b0380821115620003ca57600080fd5b620003d889838a01620002b3565b96506020880151915080821115620003ef57600080fd5b50620003fe88828901620002b3565b9450506200040f604087016200036a565b92506200041f6060870162000381565b91506200042f6080870162000381565b90509295509295909350565b6000602082840312156200044e57600080fd5b62000459826200036a565b9392505050565b600181811c908216806200047557607f821691505b602082108114156200049757634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620004ba57607f831692505b6020808410821415620004db57634e487b7160e01b86526022600452602486fd5b818015620004f25760018114620005045762000533565b60ff1986168952848901965062000533565b60008a81526020902060005b868110156200052b5781548b82015290850190830162000510565b505084890196505b509498975050505050505050565b60805160a05160c051612575620005b06000396000818161040501528181611aa30152611baf0152600081816104ed015281816111a7015281816113c0015281816115c6015281816116400152818161199601528181611d2e0152611d61015260006103cc01526125756000f3fe608060405234801561001057600080fd5b50600436106102b85760003560e01c806370a0823111610182578063bebbf4d0116100e9578063d505accf116100a2578063ec126c771161007c578063ec126c77146106a2578063f75c2664146106b5578063fbfa77cf146106bd578063fca3b5aa146106d057600080fd5b8063d505accf1461065c578063d93f24451461066f578063dd62ed3e1461067757600080fd5b8063bebbf4d0146105ff578063c308124014610612578063c4b740f51461061b578063cae9ca511461062e578063cfbd488514610641578063d0e30db01461065457600080fd5b806395d89b411161013b57806395d89b41146105865780639dc29fac1461058e578063a045442c146105a1578063a9059cbb146105b6578063aa271e1a146105c9578063b6b55f25146105ec57600080fd5b806370a082311461050f5780637ecebe001461052f5780638623ec7b1461054f57806387689e28146105625780638da5cb5b1461056b57806391c5df491461057357600080fd5b80633644e5151161022657806360e232a9116101df57806360e232a914610493578063628d6cba146104a65780636817031b146104b95780636a42b8f8146104cc5780636e553f65146104d55780636f307dc3146104e857600080fd5b80633644e515146104005780633ccfd60b146104275780634000aea01461042f57806340c10f191461044257806352113ba714610455578063605629d61461048057600080fd5b806318160ddd1161027857806318160ddd1461035f57806323b872dd146103675780632e1a7d4d1461037a5780632ebe3fbb1461038d57806330adf81f146103a0578063313ce567146103c757600080fd5b806239d6ec146102bd578062bf26f4146102e3578062f714ce1461030a57806306fdde031461031d578063095ea7b3146103325780630d707df814610355575b600080fd5b6102d06102cb366004611fb1565b6106e3565b6040519081526020015b60405180910390f35b6102d07f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b6102d0610318366004611fed565b610739565b61032561074d565b6040516102da9190612045565b610345610340366004612078565b6107db565b60405190151581526020016102da565b61035d610835565b005b6003546102d0565b6103456103753660046120a2565b6108f1565b6102d06103883660046120de565b610adc565b61035d61039b3660046120f7565b610aef565b6102d07f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102da565b6102d07f000000000000000000000000000000000000000000000000000000000000000081565b6102d0610bc6565b61034561043d366004612112565b610be7565b610345610450366004612078565b610d31565b600b54610468906001600160a01b031681565b6040516001600160a01b0390911681526020016102da565b61034561048e366004612199565b610d73565b6103456104a13660046120f7565b610f83565b6103456104b4366004611fed565b611044565b61035d6104c73660046120f7565b61110c565b6102d060055481565b6102d06104e3366004611fed565b611198565b6104687f000000000000000000000000000000000000000000000000000000000000000081565b6102d061051d3660046120f7565b60026020526000908152604090205481565b6102d061053d3660046120f7565b600d6020526000908152604090205481565b61046861055d3660046120de565b6111d9565b6102d0600c5481565b610468611203565b600954610468906001600160a01b031681565b61032561120d565b61034561059c366004612078565b61121a565b6105a9611279565b6040516102da919061220c565b6103456105c4366004612078565b6112db565b6103456105d73660046120f7565b60066020526000908152604090205460ff1681565b6102d06105fa3660046120de565b6113b1565b6102d061060d366004611fed565b6113f2565b6102d0600a5481565b61035d61062936600461226a565b61142c565b61034561063c366004612112565b61147e565b61035d61064f3660046120f7565b61154b565b6102d06115a4565b61035d61066a366004612199565b611678565b61035d6117e6565b6102d0610685366004612287565b600e60209081526000928352604080842090915290825290205481565b6103456106b03660046122b1565b611851565b6104686118c6565b600854610468906001600160a01b031681565b61035d6106de3660046120f7565b6118f1565b60006106ed6118c6565b6001600160a01b0316336001600160a01b0316146107265760405162461bcd60e51b815260040161071d906122d6565b60405180910390fd5b61073184848461197d565b949350505050565b600061074633848461197d565b9392505050565b6000805461075a9061230d565b80601f01602080910402602001604051908101604052809291908181526020018280546107869061230d565b80156107d35780601f106107a8576101008083540402835291602001916107d3565b820191906000526020600020905b8154815290600101906020018083116107b657829003601f168201915b505050505081565b336000818152600e602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612520833981519152906108249086815260200190565b60405180910390a350600192915050565b61083d6118c6565b6001600160a01b0316336001600160a01b03161461086d5760405162461bcd60e51b815260040161071d906122d6565b600a5442101561087c57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b60006001600160a01b03831615158061091357506001600160a01b0383163014155b61091c57600080fd5b6001600160a01b0384163314610a16576001600160a01b0384166000908152600e602090815260408083203384529091529020546000198114610a1457828110156109bb5760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b606482015260840161071d565b60006109c7848361235e565b6001600160a01b0387166000818152600e602090815260408083203380855290835292819020859055518481529394509092600080516020612520833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610a4f5760405162461bcd60e51b815260040161071d90612375565b610a59838261235e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610a8f9084906123c4565b92505081905550836001600160a01b0316856001600160a01b031660008051602061250083398151915285604051610ac991815260200190565b60405180910390a3506001949350505050565b6000610ae933833361197d565b92915050565b610af76118c6565b6001600160a01b0316336001600160a01b031614610b275760405162461bcd60e51b815260040161071d906122d6565b60045460ff16610b3657600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610be2918161197d565b905090565b60006001600160a01b038516151580610c0957506001600160a01b0385163014155b610c1257600080fd5b3360009081526002602052604090205484811015610c425760405162461bcd60e51b815260040161071d90612375565b610c4c858261235e565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610c7f9084906123c4565b90915550506040518581526001600160a01b0387169033906000805160206125008339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610ce49033908990899089906004016123dc565b6020604051808303816000875af1158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190612424565b9695505050505050565b3360009081526006602052604081205460ff16610d605760405162461bcd60e51b815260040161071d90612441565b610d6a83836119c5565b50600192915050565b600084421115610dc55760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d69740000604482015260640161071d565b6001600160a01b0388166000908152600d6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610e1283612478565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050610e738982878787611a93565b80610e865750610e868982878787611b84565b610e8f57600080fd5b6001600160a01b038816151580610eaf57506001600160a01b0388163014155b610eb857600080fd5b6001600160a01b03891660009081526002602052604090205487811015610ef15760405162461bcd60e51b815260040161071d90612375565b610efb888261235e565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a9290610f319084906123c4565b92505081905550886001600160a01b03168a6001600160a01b03166000805160206125008339815191528a604051610f6b91815260200190565b60405180910390a35060019998505050505050505050565b6000610f8d6118c6565b6001600160a01b0316336001600160a01b031614610fbd5760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b038216610fe35760405162461bcd60e51b815260040161071d90612493565b600880546001600160a01b0384166001600160a01b03199182168117909255600b80549091168217905560405142919081907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a45060015b919050565b600454600090610100900460ff161561109f5760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c79417574680000000000000000604482015260640161071d565b6001600160a01b0382166110c55760405162461bcd60e51b815260040161071d90612493565b6110cf3384611be7565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c88890602001610824565b6111146118c6565b6001600160a01b0316336001600160a01b0316146111445760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03811661116a5760405162461bcd60e51b815260040161071d90612493565b600b80546001600160a01b0319166001600160a01b03831617905560055461119290426123c4565b600c5550565b60006111cf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611cb9565b6107468383611d2a565b600781815481106111e957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610be26118c6565b6001805461075a9061230d565b3360009081526006602052604081205460ff166112495760405162461bcd60e51b815260040161071d90612441565b6001600160a01b03831661126f5760405162461bcd60e51b815260040161071d90612493565b610d6a8383611be7565b606060078054806020026020016040519081016040528092919081815260200182805480156112d157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112b3575b5050505050905090565b60006001600160a01b0383161515806112fd57506001600160a01b0383163014155b61130657600080fd5b33600090815260026020526040902054828110156113365760405162461bcd60e51b815260040161071d90612375565b611340838261235e565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906113739084906123c4565b90915550506040518381526001600160a01b038516903390600080516020612500833981519152906020015b60405180910390a35060019392505050565b60006113e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611cb9565b610ae98233611d2a565b60006113fc6118c6565b6001600160a01b0316336001600160a01b0316146111cf5760405162461bcd60e51b815260040161071d906122d6565b6114346118c6565b6001600160a01b0316336001600160a01b0316146114645760405162461bcd60e51b815260040161071d906122d6565b600480549115156101000261ff0019909216919091179055565b336000818152600e602090815260408083206001600160a01b03891680855292528083208790555191929091600080516020612520833981519152906114c79088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f906114ff9033908890889088906004016123dc565b6020604051808303816000875af115801561151e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115429190612424565b95945050505050565b6115536118c6565b6001600160a01b0316336001600160a01b0316146115835760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163191906124ca565b90506116686001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611cb9565b6116728133611d2a565b91505090565b834211156116c85760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d69740000604482015260640161071d565b6001600160a01b0387166000908152600d6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661171583612478565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506117768882868686611a93565b8061178957506117898882868686611b84565b61179257600080fd5b6001600160a01b038881166000818152600e60209081526040808320948c16808452948252918290208a90559051898152600080516020612520833981519152910160405180910390a35050505050505050565b6117ee6118c6565b6001600160a01b0316336001600160a01b03161461181e5760405162461bcd60e51b815260040161071d906122d6565b600c5442101561182d57600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff166118805760405162461bcd60e51b815260040161071d90612441565b61188a83836119c5565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161139f91815260200190565b6000600c5442106118e15750600b546001600160a01b031690565b506008546001600160a01b031690565b6118f96118c6565b6001600160a01b0316336001600160a01b0316146119295760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03811661194f5760405162461bcd60e51b815260040161071d90612493565b600980546001600160a01b0319166001600160a01b03831617905560055461197790426123c4565b600a5550565b60006119898484611be7565b6119bd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611da7565b509092915050565b6001600160a01b038216611a1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071d565b8060036000828254611a2d91906123c4565b90915550506001600160a01b03821660009081526002602052604081208054839290611a5a9084906123c4565b90915550506040518181526001600160a01b03831690600090600080516020612500833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f000000000000000000000000000000000000000000000000000000000000000060228201526042810185905260009081906062015b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611b42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611b785750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f0000000000000000000000000000000000000000000000000000000000000000603c820152605c81018590526000908190607c01611ad7565b6001600160a01b038216611c475760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161071d565b6001600160a01b03821660009081526002602052604081208054839290611c6f90849061235e565b925050819055508060036000828254611c88919061235e565b90915550506040518181526000906001600160a01b0384169060008051602061250083398151915290602001611a87565b6040516001600160a01b0380851660248301528316604482015260648101829052611d249085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ddc565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615801590611d8d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b611d9657600080fd5b611da082846119c5565b5090919050565b6040516001600160a01b038316602482015260448101829052611dd790849063a9059cbb60e01b90606401611ced565b505050565b611dee826001600160a01b0316611f63565b611e3a5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161071d565b600080836001600160a01b031683604051611e5591906124e3565b6000604051808303816000865af19150503d8060008114611e92576040519150601f19603f3d011682016040523d82523d6000602084013e611e97565b606091505b509150915081611ee95760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161071d565b805115611d245780806020019051810190611f049190612424565b611d245760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161071d565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906107315750141592915050565b80356001600160a01b038116811461103f57600080fd5b600080600060608486031215611fc657600080fd5b611fcf84611f9a565b925060208401359150611fe460408501611f9a565b90509250925092565b6000806040838503121561200057600080fd5b8235915061201060208401611f9a565b90509250929050565b60005b8381101561203457818101518382015260200161201c565b83811115611d245750506000910152565b6020815260008251806020840152612064816040850160208701612019565b601f01601f19169190910160400192915050565b6000806040838503121561208b57600080fd5b61209483611f9a565b946020939093013593505050565b6000806000606084860312156120b757600080fd5b6120c084611f9a565b92506120ce60208501611f9a565b9150604084013590509250925092565b6000602082840312156120f057600080fd5b5035919050565b60006020828403121561210957600080fd5b61074682611f9a565b6000806000806060858703121561212857600080fd5b61213185611f9a565b935060208501359250604085013567ffffffffffffffff8082111561215557600080fd5b818701915087601f83011261216957600080fd5b81358181111561217857600080fd5b88602082850101111561218a57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a0312156121b457600080fd5b6121bd88611f9a565b96506121cb60208901611f9a565b95506040880135945060608801359350608088013560ff811681146121ef57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561224d5783516001600160a01b031683529284019291840191600101612228565b50909695505050505050565b801515811461226757600080fd5b50565b60006020828403121561227c57600080fd5b813561074681612259565b6000806040838503121561229a57600080fd5b6122a383611f9a565b915061201060208401611f9a565b6000806000606084860312156122c657600080fd5b833592506120ce60208501611f9a565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b600181811c9082168061232157607f821691505b6020821081141561234257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561237057612370612348565b500390565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b600082198211156123d7576123d7612348565b500190565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301376000818301608090810191909152601f909201601f191601019392505050565b60006020828403121561243657600080fd5b815161074681612259565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b600060001982141561248c5761248c612348565b5060010190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6000602082840312156124dc57600080fd5b5051919050565b600082516124f5818460208701612019565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212204db622a89335a7f516edf22bc6964bb0d3dae43db253408484323d804b982d4c64736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000442494f5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442494f5300000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000442494f5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442494f5300000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): BIOS
Arg [1] : _symbol (string): BIOS
Arg [2] : _decimals (uint8): 18
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0xfa9da51631268a30ec3ddd1ccbf46c65fad99251

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 42494f5300000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 42494f5300000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

5873:17954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13895:149;;;;;;:::i;:::-;;:::i;:::-;;;671:25:1;;;659:2;644:18;13895:149:0;;;;;;;;6246:136;;6290:92;6246:136;;13761:126;;;;;;:::i;:::-;;:::i;5956:18::-;;;:::i;:::-;;;;;;;:::i;15618:265::-;;;;;;:::i;:::-;;:::i;:::-;;;2223:14:1;;2216:22;2198:41;;2186:2;2171:18;15618:265:0;2058:187:1;8721:179:0;;;:::i;:::-;;12388:102;12470:12;;12388:102;;21747:927;;;;;;:::i;:::-;;:::i;13631:122::-;;;;;;:::i;:::-;;:::i;7864:272::-;;;;;;:::i;:::-;;:::i;6102:137::-;;6144:95;6102:137;;6008:41;;;;;;;;3131:4:1;3119:17;;;3101:36;;3089:2;3074:18;6008:41:0;2959:184:1;6389:41:0;;;;;13497:126;;;:::i;23301:523::-;;;;;;:::i;:::-;;:::i;9490:133::-;;;;;;:::i;:::-;;:::i;7202:27::-;;;;;-1:-1:-1;;;;;7202:27:0;;;;;;-1:-1:-1;;;;;4050:32:1;;;4032:51;;4020:2;4005:18;7202:27:0;3886:203:1;18216:938:0;;;;;;:::i;:::-;;:::i;9176:306::-;;;;;;:::i;:::-;;:::i;10063:328::-;;;;;;:::i;:::-;;:::i;8144:212::-;;;;;;:::i;:::-;;:::i;6877:29::-;;;;;;12949:193;;;;;;:::i;:::-;;:::i;6058:35::-;;;;;6510:54;;;;;;:::i;:::-;;;;;;;;;;;;;;10663:51;;;;;;:::i;:::-;;;;;;;;;;;;;;7024:24;;;;;;:::i;:::-;;:::i;7236:22::-;;;;;;7501:78;;;:::i;7135:28::-;;;;;-1:-1:-1;;;;;7135:28:0;;;5981:20;;;:::i;9631:207::-;;;;;;:::i;:::-;;:::i;9069:99::-;;;:::i;:::-;;;;;;;:::i;20420:438::-;;;;;;:::i;:::-;;:::i;6977:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12752:189;;;;;;:::i;:::-;;:::i;13150:127::-;;;;;;:::i;:::-;;:::i;7170:23::-;;;;;;7762:94;;;;;;:::i;:::-;;:::i;16304:356::-;;;;;;:::i;:::-;;:::i;8963:98::-;;;;;;:::i;:::-;;:::i;12498:246::-;;;:::i;17493:715::-;;;;;;:::i;:::-;;:::i;8364:129::-;;;:::i;10884:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9846:209;;;;;;:::i;:::-;;:::i;7587:167::-;;;:::i;7106:20::-;;;;;-1:-1:-1;;;;;7106:20:0;;;8501:212;;;;;;:::i;:::-;;:::i;13895:149::-;13985:4;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;;;;;;;;;14009:27:::1;14019:4;14025:6;14033:2;14009:9;:27::i;:::-;14002:34:::0;13895:149;-1:-1:-1;;;;13895:149:0:o;13761:126::-;13822:4;13846:33;13856:10;13868:6;13876:2;13846:9;:33::i;:::-;13839:40;13761:126;-1:-1:-1;;;13761:126:0:o;5956:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15618:265::-;15771:10;15694:4;15761:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15761:30:0;;;;;;;;;;:38;;;15815:36;15694:4;;15761:30;;-1:-1:-1;;;;;;;;;;;15815:36:0;;;15794:5;671:25:1;;659:2;644:18;;525:177;15815:36:0;;;;;;;;-1:-1:-1;15871:4:0;15618:265;;;;:::o;8721:179::-;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;8801:11:::1;;8782:15;:30;;8774:39;;;::::0;::::1;;8833:13;::::0;;-1:-1:-1;;;;;8833:13:0;;::::1;8824:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;8824:30:0::1;8850:4;8824:30:::0;;::::1;::::0;;;8878:13;;8865:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8865:27:0::1;8878:13:::0;;;::::1;8865:27:::0;;;::::1;::::0;;8721:179::o;21747:927::-;21837:4;-1:-1:-1;;;;;21862:16:0;;;;;:39;;-1:-1:-1;;;;;;21882:19:0;;21896:4;21882:19;;21862:39;21854:48;;;;;;-1:-1:-1;;;;;21917:18:0;;21925:10;21917:18;21913:477;;-1:-1:-1;;;;;22031:15:0;;22013;22031;;;:9;:15;;;;;;;;22047:10;22031:27;;;;;;;;-1:-1:-1;;22077:28:0;;22073:306;;22145:5;22134:7;:16;;22126:70;;;;-1:-1:-1;;;22126:70:0;;7357:2:1;22126:70:0;;;7339:21:1;7396:2;7376:18;;;7369:30;7435:34;7415:18;;;7408:62;-1:-1:-1;;;7486:18:1;;;7479:39;7535:19;;22126:70:0;7155:405:1;22126:70:0;22215:15;22233;22243:5;22233:7;:15;:::i;:::-;-1:-1:-1;;;;;22267:15:0;;;;;;:9;:15;;;;;;;;22283:10;22267:27;;;;;;;;;;:37;;;22328:35;671:25:1;;;22267:37:0;;-1:-1:-1;22283:10:0;;-1:-1:-1;;;;;;;;;;;22328:35:0;644:18:1;22328:35:0;;;;;;;22107:272;22073:306;21937:453;21913:477;-1:-1:-1;;;;;22420:15:0;;22402;22420;;;:9;:15;;;;;;22454:16;;;;22446:76;;;;-1:-1:-1;;;22446:76:0;;;;;;;:::i;:::-;22553:15;22563:5;22553:7;:15;:::i;:::-;-1:-1:-1;;;;;22535:15:0;;;;;;;:9;:15;;;;;;:33;;;;22579:13;;;;;;;;:22;;22596:5;;22535:15;22579:22;;22596:5;;22579:22;:::i;:::-;;;;;;;;22632:2;-1:-1:-1;;;;;22617:25:0;22626:4;-1:-1:-1;;;;;22617:25:0;-1:-1:-1;;;;;;;;;;;22636:5:0;22617:25;;;;671::1;;659:2;644:18;;525:177;22617:25:0;;;;;;;;-1:-1:-1;22662:4:0;;21747:927;-1:-1:-1;;;;21747:927:0:o;13631:122::-;13680:4;13704:41;13714:10;13726:6;13734:10;13704:9;:41::i;:::-;13697:48;13631:122;-1:-1:-1;;13631:122:0:o;7864:272::-;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;7937:5:::1;::::0;::::1;;7929:14;;;::::0;::::1;;7954:5;:14:::0;;-1:-1:-1;;;;;7954:14:0;;::::1;-1:-1:-1::0;;;;;;7954:14:0;;::::1;::::0;::::1;::::0;;;7979:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;7954:5:::1;8011:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;8011:23:0;;::::1;7954:14:::0;8011:23;;::::1;::::0;;;8045:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;8089:15:::1;8076:10;:28:::0;8115:5:::1;:13:::0;;;;::::1;::::0;;7864:272::o;13497:126::-;13569:10;13535:4;13581:21;;;:9;:21;;;;;;13535:4;;13559:56;;13569:10;13559:9;:56::i;:::-;13552:63;;13497:126;:::o;23301:523::-;23398:4;-1:-1:-1;;;;;23423:16:0;;;;;:39;;-1:-1:-1;;;;;;23443:19:0;;23457:4;23443:19;;23423:39;23415:48;;;;;;23504:10;23476:15;23494:21;;;:9;:21;;;;;;23534:16;;;;23526:76;;;;-1:-1:-1;;;23526:76:0;;;;;;;:::i;:::-;23639:15;23649:5;23639:7;:15;:::i;:::-;23625:10;23615:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;23665:13:0;;;;;;;:22;;23682:5;;23615:21;23665:22;;23682:5;;23665:22;:::i;:::-;;;;-1:-1:-1;;23703:31:0;;671:25:1;;;-1:-1:-1;;;;;23703:31:0;;;23712:10;;-1:-1:-1;;;;;;;;;;;23703:31:0;659:2:1;644:18;23703:31:0;;;;;;;23754:62;;-1:-1:-1;;;23754:62:0;;-1:-1:-1;;;;;23754:37:0;;;;;:62;;23792:10;;23804:5;;23811:4;;;;23754:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23747:69;23301:523;-1:-1:-1;;;;;;23301:523:0:o;9490:133::-;7315:10;9559:4;7306:20;;;:8;:20;;;;;;;;7298:58;;;;-1:-1:-1;;;7298:58:0;;;;;;;:::i;:::-;9576:17:::1;9582:2;9586:6;9576:5;:17::i;:::-;-1:-1:-1::0;9611:4:0::1;9490:133:::0;;;;:::o;18216:938::-;18363:4;18407:8;18388:15;:27;;18380:70;;;;-1:-1:-1;;;18380:70:0;;9746:2:1;18380:70:0;;;9728:21:1;9785:2;9765:18;;;9758:30;9824:32;9804:18;;;9797:60;9874:18;;18380:70:0;9544:354:1;18380:70:0;-1:-1:-1;;;;;18643:14:0;;18463:18;18643:14;;;:6;:14;;;;;:16;;6290:92;;18573:6;;18598:2;;18619:5;;18643:16;18463:18;18643:16;;;:::i;:::-;;;;-1:-1:-1;18508:179:0;;;;;;10330:25:1;;;;-1:-1:-1;;;;;10429:15:1;;;10409:18;;;10402:43;10481:15;;;;10461:18;;;10454:43;10513:18;;;10506:34;10556:19;;;10549:35;10600:19;;;10593:35;;;10302:19;;18508:179:0;;;;;;;;;;;;18484:204;;;;;;18463:225;;18709:41;18722:6;18730:10;18742:1;18745;18748;18709:12;:41::i;:::-;:92;;;;18754:47;18773:6;18781:10;18793:1;18796;18799;18754:18;:47::i;:::-;18701:101;;;;;;-1:-1:-1;;;;;18823:16:0;;;;;:39;;-1:-1:-1;;;;;;18843:19:0;;18857:4;18843:19;;18823:39;18815:48;;;;;;-1:-1:-1;;;;;18894:17:0;;18876:15;18894:17;;;:9;:17;;;;;;18930:16;;;;18922:76;;;;-1:-1:-1;;;18922:76:0;;;;;;;:::i;:::-;19031:15;19041:5;19031:7;:15;:::i;:::-;-1:-1:-1;;;;;19011:17:0;;;;;;;:9;:17;;;;;;:35;;;;19057:13;;;;;;;;:22;;19074:5;;19011:17;19057:22;;19074:5;;19057:22;:::i;:::-;;;;;;;;19112:2;-1:-1:-1;;;;;19095:27:0;19104:6;-1:-1:-1;;;;;19095:27:0;-1:-1:-1;;;;;;;;;;;19116:5:0;19095:27;;;;671:25:1;;659:2;644:18;;525:177;19095:27:0;;;;;;;;-1:-1:-1;19142:4:0;;18216:938;-1:-1:-1;;;;;;;;;18216:938:0:o;9176:306::-;9243:4;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9268:22:0;::::1;9260:63;;;;-1:-1:-1::0;;;9260:63:0::1;;;;;;;:::i;:::-;9334:5;:16:::0;;-1:-1:-1;;;;;9334:16:0;::::1;-1:-1:-1::0;;;;;;9334:16:0;;::::1;::::0;::::1;::::0;;;9361:12:::1;:23:::0;;;;::::1;::::0;::::1;::::0;;9400:52:::1;::::0;9436:15:::1;::::0;9334:16;;;9400:52:::1;::::0;9334:5:::1;::::0;9400:52:::1;-1:-1:-1::0;9470:4:0::1;7484:1;9176:306:::0;;;:::o;10063:328::-;10156:10;;10130:4;;10156:10;;;;;10155:11;10147:48;;;;-1:-1:-1;;;10147:48:0;;11198:2:1;10147:48:0;;;11180:21:1;11237:2;11217:18;;;11210:30;11276:26;11256:18;;;11249:54;11320:18;;10147:48:0;10996:348:1;10147:48:0;-1:-1:-1;;;;;10214:22:0;;10206:63;;;;-1:-1:-1;;;10206:63:0;;;;;;;:::i;:::-;10280:25;10286:10;10298:6;10280:5;:25::i;:::-;10321:40;;671:25:1;;;-1:-1:-1;;;;;10321:40:0;;;10332:10;;10321:40;;659:2:1;644:18;10321:40:0;525:177:1;8144:212:0;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8216:20:0;::::1;8208:61;;;;-1:-1:-1::0;;;8208:61:0::1;;;;;;;:::i;:::-;8280:12;:21:::0;;-1:-1:-1;;;;;;8280:21:0::1;-1:-1:-1::0;;;;;8280:21:0;::::1;;::::0;;8343:5:::1;::::0;8325:23:::1;::::0;:15:::1;:23;:::i;:::-;8312:10;:36:::0;-1:-1:-1;8144:212:0:o;12949:193::-;13009:4;13026:70;-1:-1:-1;;;;;13033:10:0;13026:35;13062:10;13082:4;13089:6;13026:35;:70::i;:::-;13114:20;13123:6;13131:2;13114:8;:20::i;7024:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7024:24:0;;-1:-1:-1;7024:24:0;:::o;7501:78::-;7539:7;7566:5;:3;:5::i;5981:20::-;;;;;;;:::i;9631:207::-;7315:10;9702:4;7306:20;;;:8;:20;;;;;;;;7298:58;;;;-1:-1:-1;;;7298:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9727:18:0;::::1;9719:59;;;;-1:-1:-1::0;;;9719:59:0::1;;;;;;;:::i;:::-;9789:19;9795:4;9801:6;9789:5;:19::i;9069:99::-:0;9117:16;9153:7;9146:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9146:14:0;;;;;;;;;;;;;;;;;;;;;;;9069:99;:::o;20420:438::-;20492:4;-1:-1:-1;;;;;20517:16:0;;;;;:39;;-1:-1:-1;;;;;;20537:19:0;;20551:4;20537:19;;20517:39;20509:48;;;;;;20596:10;20568:15;20586:21;;;:9;:21;;;;;;20626:16;;;;20618:76;;;;-1:-1:-1;;;20618:76:0;;;;;;;:::i;:::-;20731:15;20741:5;20731:7;:15;:::i;:::-;20717:10;20707:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;20757:13:0;;;;;;;:22;;20774:5;;20707:21;20757:22;;20774:5;;20757:22;:::i;:::-;;;;-1:-1:-1;;20795:31:0;;671:25:1;;;-1:-1:-1;;;;;20795:31:0;;;20804:10;;-1:-1:-1;;;;;;;;;;;20795:31:0;659:2:1;644:18;20795:31:0;;;;;;;;-1:-1:-1;20846:4:0;;20420:438;-1:-1:-1;;;20420:438:0:o;12752:189::-;12800:4;12817:70;-1:-1:-1;;;;;12824:10:0;12817:35;12853:10;12873:4;12880:6;12817:35;:70::i;:::-;12905:28;12914:6;12922:10;12905:8;:28::i;13150:127::-;13225:4;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;7762:94::-;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;7828:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;7828:20:0;;::::1;::::0;;;::::1;::::0;;7762:94::o;16304:356::-;16485:10;16408:4;16475:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;16475:30:0;;;;;;;;;;:38;;;16529:36;16408:4;;16475:30;;-1:-1:-1;;;;;;;;;;;16529:36:0;;;16508:5;671:25:1;;659:2;644:18;;525:177;16529:36:0;;;;;;;;16585:67;;-1:-1:-1;;;16585:67:0;;-1:-1:-1;;;;;16585:42:0;;;;;:67;;16628:10;;16640:5;;16647:4;;;;16585:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16578:74;16304:356;-1:-1:-1;;;;;16304:356:0:o;8963:98::-;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9030:15:0::1;9048:5;9030:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;9030:23:0::1;::::0;;8963:98::o;12498:246::-;12567:40;;-1:-1:-1;;;12567:40:0;;12596:10;12567:40;;;4032:51:1;12535:4:0;;;;-1:-1:-1;;;;;12574:10:0;12567:28;;;;4005:18:1;;12567:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12552:55;-1:-1:-1;12618:71:0;-1:-1:-1;;;;;12625:10:0;12618:35;12654:10;12674:4;12552:55;12618:35;:71::i;:::-;12707:29;12716:7;12725:10;12707:8;:29::i;:::-;12700:36;;;12498:246;:::o;17493:715::-;17662:8;17643:15;:27;;17635:70;;;;-1:-1:-1;;;17635:70:0;;9746:2:1;17635:70:0;;;9728:21:1;9785:2;9765:18;;;9758:30;9824:32;9804:18;;;9797:60;9874:18;;17635:70:0;9544:354:1;17635:70:0;-1:-1:-1;;;;;17901:14:0;;17718:18;17901:14;;;:6;:14;;;;;:16;;6144:95;;17826:6;;17851:7;;17877:5;;17901:16;17718:18;17901:16;;;:::i;:::-;;;;-1:-1:-1;17763:182:0;;;;;;10330:25:1;;;;-1:-1:-1;;;;;10429:15:1;;;10409:18;;;10402:43;10481:15;;;;10461:18;;;10454:43;10513:18;;;10506:34;10556:19;;;10549:35;10600:19;;;10593:35;;;10302:19;;17763:182:0;;;;;;;;;;;;17739:207;;;;;;17718:228;;17967:41;17980:6;17988:10;18000:1;18003;18006;17967:12;:41::i;:::-;:92;;;;18012:47;18031:6;18039:10;18051:1;18054;18057;18012:18;:47::i;:::-;17959:101;;;;;;-1:-1:-1;;;;;18118:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;18168:32;;671:25:1;;;-1:-1:-1;;;;;;;;;;;18168:32:0;644:18:1;18168:32:0;;;;;;;17624:584;17493:715;;;;;;;:::o;8364:129::-;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;8443:10:::1;;8424:15;:29;;8416:38;;;::::0;::::1;;8473:12;::::0;8465:5:::1;:20:::0;;-1:-1:-1;;;;;;8465:20:0::1;-1:-1:-1::0;;;;;8473:12:0;;::::1;8465:20:::0;;;::::1;::::0;;8364:129::o;9846:209::-;7315:10;9936:4;7306:20;;;:8;:20;;;;;;;;7298:58;;;;-1:-1:-1;;;7298:58:0;;;;;;;:::i;:::-;9953:22:::1;9959:7;9968:6;9953:5;:22::i;:::-;10009:7;-1:-1:-1::0;;;;;9991:34:0::1;10001:6;9991:34;10018:6;9991:34;;;;671:25:1::0;;659:2;644:18;;525:177;7587:167:0;7623:7;7666:10;;7647:15;:29;7643:81;;-1:-1:-1;7700:12:0;;-1:-1:-1;;;;;7700:12:0;;7587:167::o;7643:81::-;-1:-1:-1;7741:5:0;;-1:-1:-1;;;;;7741:5:0;;7587:167::o;8501:212::-;7438:5;:3;:5::i;:::-;-1:-1:-1;;;;;7424:19:0;:10;-1:-1:-1;;;;;7424:19:0;;7416:57;;;;-1:-1:-1;;;7416:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8573:19:0;::::1;8565:60;;;;-1:-1:-1::0;;;8565:60:0::1;;;;;;;:::i;:::-;8636:13;:21:::0;;-1:-1:-1;;;;;;8636:21:0::1;-1:-1:-1::0;;;;;8636:21:0;::::1;;::::0;;8700:5:::1;::::0;8682:23:::1;::::0;:15:::1;:23;:::i;:::-;8668:11;:37:::0;-1:-1:-1;8501:212:0:o;14052:198::-;14128:4;14145:19;14151:4;14157:6;14145:5;:19::i;:::-;14175:43;-1:-1:-1;;;;;14182:10:0;14175:31;14207:2;14211:6;14175:31;:43::i;:::-;-1:-1:-1;14236:6:0;;14052:198;-1:-1:-1;;14052:198:0:o;14531:268::-;-1:-1:-1;;;;;14607:21:0;;14599:65;;;;-1:-1:-1;;;14599:65:0;;11740:2:1;14599:65:0;;;11722:21:1;11779:2;11759:18;;;11752:30;11818:33;11798:18;;;11791:61;11869:18;;14599:65:0;11538:355:1;14599:65:0;14693:6;14677:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;14710:18:0;;;;;;:9;:18;;;;;:28;;14732:6;;14710:18;:28;;14732:6;;14710:28;:::i;:::-;;;;-1:-1:-1;;14754:37:0;;671:25:1;;;-1:-1:-1;;;;;14754:37:0;;;14771:1;;-1:-1:-1;;;;;;;;;;;14754:37:0;659:2:1;644:18;14754:37:0;;;;;;;;14531:268;;:::o;19162:399::-;19330:110;;-1:-1:-1;;;19330:110:0;;;12156:27:1;19394:16:0;12199:11:1;;;12192:27;12235:12;;;12228:28;;;19274:4:0;;;;12272:12:1;;19330:110:0;;;;-1:-1:-1;;19330:110:0;;;;;;;;;19306:135;;19330:110;19306:135;;;;19452:14;19469:24;;;;;;;;;12522:25:1;;;12595:4;12583:17;;12563:18;;;12556:45;;;;12617:18;;;12610:34;;;12660:18;;;12653:34;;;19306:135:0;;-1:-1:-1;19452:14:0;19469:24;;12494:19:1;;19469:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19469:24:0;;-1:-1:-1;;19469:24:0;;;-1:-1:-1;;;;;;;19512:20:0;;;;;;:40;;;19546:6;-1:-1:-1;;;;;19536:16:0;:6;-1:-1:-1;;;;;19536:16:0;;19512:40;19504:49;19162:399;-1:-1:-1;;;;;;;;19162:399:0:o;19569:429::-;19743:134;;12968:66:1;19743:134:0;;;12956:79:1;19831:16:0;13051:12:1;;;13044:28;13088:12;;;13081:28;;;19687:4:0;;;;13125:12:1;;19743:134:0;12698:445:1;15131:270:0;-1:-1:-1;;;;;15207:21:0;;15199:67;;;;-1:-1:-1;;;15199:67:0;;13350:2:1;15199:67:0;;;13332:21:1;13389:2;13369:18;;;13362:30;13428:34;13408:18;;;13401:62;-1:-1:-1;;;13479:18:1;;;13472:31;13520:19;;15199:67:0;13148:397:1;15199:67:0;-1:-1:-1;;;;;15279:18:0;;;;;;:9;:18;;;;;:28;;15301:6;;15279:18;:28;;15301:6;;15279:28;:::i;:::-;;;;;;;;15334:6;15318:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;15356:37:0;;671:25:1;;;15382:1:0;;-1:-1:-1;;;;;15356:37:0;;;-1:-1:-1;;;;;;;;;;;15356:37:0;659:2:1;644:18;15356:37:0;525:177:1;4709:201:0;4833:68;;-1:-1:-1;;;;;13808:15:1;;;4833:68:0;;;13790:34:1;13860:15;;13840:18;;;13833:43;13892:18;;;13885:34;;;4807:95:0;;4826:5;;-1:-1:-1;;;4856:27:0;13725:18:1;;4833:68:0;;;;-1:-1:-1;;4833:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4833:68:0;-1:-1:-1;;;;;;4833:68:0;;;;;;;;;;4807:18;:95::i;:::-;4709:201;;;;:::o;13285:204::-;13346:4;13371:10;-1:-1:-1;;;;;13371:26:0;;;;;:57;;-1:-1:-1;13401:10:0;-1:-1:-1;;;;;13401:27:0;13423:4;13401:27;;13371:57;13363:66;;;;;;13440:17;13446:2;13450:6;13440:5;:17::i;:::-;-1:-1:-1;13475:6:0;;13285:204;-1:-1:-1;13285:204:0:o;4528:173::-;4634:58;;-1:-1:-1;;;;;14122:32:1;;4634:58:0;;;14104:51:1;14171:18;;;14164:34;;;4608:85:0;;4627:5;;-1:-1:-1;;;4657:23:0;14077:18:1;;4634:58:0;13930:274:1;4608:85:0;4528:173;;;:::o;5268:598::-;5356:27;5364:5;-1:-1:-1;;;;;5356:25:0;;:27::i;:::-;5348:71;;;;-1:-1:-1;;;5348:71:0;;14411:2:1;5348:71:0;;;14393:21:1;14450:2;14430:18;;;14423:30;14489:33;14469:18;;;14462:61;14540:18;;5348:71:0;14209:355:1;5348:71:0;5493:12;5507:23;5542:5;-1:-1:-1;;;;;5534:19:0;5554:4;5534:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:67;;;;5578:7;5570:52;;;;-1:-1:-1;;;5570:52:0;;15050:2:1;5570:52:0;;;15032:21:1;;;15069:18;;;15062:30;15128:34;15108:18;;;15101:62;15180:18;;5570:52:0;14848:356:1;5570:52:0;5639:17;;:21;5635:224;;5781:10;5770:30;;;;;;;;;;;;:::i;:::-;5762:85;;;;-1:-1:-1;;;5762:85:0;;15411:2:1;5762:85:0;;;15393:21:1;15450:2;15430:18;;;15423:30;15489:34;15469:18;;;15462:62;-1:-1:-1;;;15540:18:1;;;15533:40;15590:19;;5762:85:0;15209:406:1;4088:374:0;4148:4;4371:20;;4214:66;4411:15;;;;;:42;;-1:-1:-1;4430:23:0;;;4403:51;-1:-1:-1;;4088:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;192:328;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;453:2;442:9;438:18;425:32;415:42;;476:38;510:2;499:9;495:18;476:38;:::i;:::-;466:48;;192:328;;;;;:::o;889:254::-;957:6;965;1018:2;1006:9;997:7;993:23;989:32;986:52;;;1034:1;1031;1024:12;986:52;1070:9;1057:23;1047:33;;1099:38;1133:2;1122:9;1118:18;1099:38;:::i;:::-;1089:48;;889:254;;;;;:::o;1148:258::-;1220:1;1230:113;1244:6;1241:1;1238:13;1230:113;;;1320:11;;;1314:18;1301:11;;;1294:39;1266:2;1259:10;1230:113;;;1361:6;1358:1;1355:13;1352:48;;;-1:-1:-1;;1396:1:1;1378:16;;1371:27;1148:258::o;1411:383::-;1560:2;1549:9;1542:21;1523:4;1592:6;1586:13;1635:6;1630:2;1619:9;1615:18;1608:34;1651:66;1710:6;1705:2;1694:9;1690:18;1685:2;1677:6;1673:15;1651:66;:::i;:::-;1778:2;1757:15;-1:-1:-1;;1753:29:1;1738:45;;;;1785:2;1734:54;;1411:383;-1:-1:-1;;1411:383:1:o;1799:254::-;1867:6;1875;1928:2;1916:9;1907:7;1903:23;1899:32;1896:52;;;1944:1;1941;1934:12;1896:52;1967:29;1986:9;1967:29;:::i;:::-;1957:39;2043:2;2028:18;;;;2015:32;;-1:-1:-1;;;1799:254:1:o;2250:328::-;2327:6;2335;2343;2396:2;2384:9;2375:7;2371:23;2367:32;2364:52;;;2412:1;2409;2402:12;2364:52;2435:29;2454:9;2435:29;:::i;:::-;2425:39;;2483:38;2517:2;2506:9;2502:18;2483:38;:::i;:::-;2473:48;;2568:2;2557:9;2553:18;2540:32;2530:42;;2250:328;;;;;:::o;2583:180::-;2642:6;2695:2;2683:9;2674:7;2670:23;2666:32;2663:52;;;2711:1;2708;2701:12;2663:52;-1:-1:-1;2734:23:1;;2583:180;-1:-1:-1;2583:180:1:o;2768:186::-;2827:6;2880:2;2868:9;2859:7;2855:23;2851:32;2848:52;;;2896:1;2893;2886:12;2848:52;2919:29;2938:9;2919:29;:::i;3148:733::-;3236:6;3244;3252;3260;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;3352:29;3371:9;3352:29;:::i;:::-;3342:39;;3428:2;3417:9;3413:18;3400:32;3390:42;;3483:2;3472:9;3468:18;3455:32;3506:18;3547:2;3539:6;3536:14;3533:34;;;3563:1;3560;3553:12;3533:34;3601:6;3590:9;3586:22;3576:32;;3646:7;3639:4;3635:2;3631:13;3627:27;3617:55;;3668:1;3665;3658:12;3617:55;3708:2;3695:16;3734:2;3726:6;3723:14;3720:34;;;3750:1;3747;3740:12;3720:34;3795:7;3790:2;3781:6;3777:2;3773:15;3769:24;3766:37;3763:57;;;3816:1;3813;3806:12;3763:57;3148:733;;;;-1:-1:-1;;3847:2:1;3839:11;;-1:-1:-1;;;3148:733:1:o;4094:693::-;4205:6;4213;4221;4229;4237;4245;4253;4306:3;4294:9;4285:7;4281:23;4277:33;4274:53;;;4323:1;4320;4313:12;4274:53;4346:29;4365:9;4346:29;:::i;:::-;4336:39;;4394:38;4428:2;4417:9;4413:18;4394:38;:::i;:::-;4384:48;;4479:2;4468:9;4464:18;4451:32;4441:42;;4530:2;4519:9;4515:18;4502:32;4492:42;;4584:3;4573:9;4569:19;4556:33;4629:4;4622:5;4618:16;4611:5;4608:27;4598:55;;4649:1;4646;4639:12;4598:55;4094:693;;;;-1:-1:-1;4094:693:1;;;;4672:5;4724:3;4709:19;;4696:33;;-1:-1:-1;4776:3:1;4761:19;;;4748:33;;4094:693;-1:-1:-1;;4094:693:1:o;4792:658::-;4963:2;5015:21;;;5085:13;;4988:18;;;5107:22;;;4934:4;;4963:2;5186:15;;;;5160:2;5145:18;;;4934:4;5229:195;5243:6;5240:1;5237:13;5229:195;;;5308:13;;-1:-1:-1;;;;;5304:39:1;5292:52;;5399:15;;;;5364:12;;;;5340:1;5258:9;5229:195;;;-1:-1:-1;5441:3:1;;4792:658;-1:-1:-1;;;;;;4792:658:1:o;5455:118::-;5541:5;5534:13;5527:21;5520:5;5517:32;5507:60;;5563:1;5560;5553:12;5507:60;5455:118;:::o;5578:241::-;5634:6;5687:2;5675:9;5666:7;5662:23;5658:32;5655:52;;;5703:1;5700;5693:12;5655:52;5742:9;5729:23;5761:28;5783:5;5761:28;:::i;5824:260::-;5892:6;5900;5953:2;5941:9;5932:7;5928:23;5924:32;5921:52;;;5969:1;5966;5959:12;5921:52;5992:29;6011:9;5992:29;:::i;:::-;5982:39;;6040:38;6074:2;6063:9;6059:18;6040:38;:::i;6089:322::-;6166:6;6174;6182;6235:2;6223:9;6214:7;6210:23;6206:32;6203:52;;;6251:1;6248;6241:12;6203:52;6287:9;6274:23;6264:33;;6316:38;6350:2;6339:9;6335:18;6316:38;:::i;6416:349::-;6618:2;6600:21;;;6657:2;6637:18;;;6630:30;6696:27;6691:2;6676:18;;6669:55;6756:2;6741:18;;6416:349::o;6770:380::-;6849:1;6845:12;;;;6892;;;6913:61;;6967:4;6959:6;6955:17;6945:27;;6913:61;7020:2;7012:6;7009:14;6989:18;6986:38;6983:161;;;7066:10;7061:3;7057:20;7054:1;7047:31;7101:4;7098:1;7091:15;7129:4;7126:1;7119:15;6983:161;;6770:380;;;:::o;7565:127::-;7626:10;7621:3;7617:20;7614:1;7607:31;7657:4;7654:1;7647:15;7681:4;7678:1;7671:15;7697:125;7737:4;7765:1;7762;7759:8;7756:34;;;7770:18;;:::i;:::-;-1:-1:-1;7807:9:1;;7697:125::o;7827:411::-;8029:2;8011:21;;;8068:2;8048:18;;;8041:30;8107:34;8102:2;8087:18;;8080:62;-1:-1:-1;;;8173:2:1;8158:18;;8151:45;8228:3;8213:19;;7827:411::o;8243:128::-;8283:3;8314:1;8310:6;8307:1;8304:13;8301:39;;;8320:18;;:::i;:::-;-1:-1:-1;8356:9:1;;8243:128::o;8376:559::-;-1:-1:-1;;;;;8589:32:1;;8571:51;;8653:2;8638:18;;8631:34;;;8701:2;8696;8681:18;;8674:30;;;8720:18;;8713:34;;;8740:6;8790;8784:3;8769:19;;8756:49;8855:1;8825:22;;;8849:3;8821:32;;;8814:43;;;;8918:2;8897:15;;;-1:-1:-1;;8893:29:1;8878:45;8874:55;;8376:559;-1:-1:-1;;;8376:559:1:o;8940:245::-;9007:6;9060:2;9048:9;9039:7;9035:23;9031:32;9028:52;;;9076:1;9073;9066:12;9028:52;9108:9;9102:16;9127:28;9149:5;9127:28;:::i;9190:349::-;9392:2;9374:21;;;9431:2;9411:18;;;9404:30;9470:27;9465:2;9450:18;;9443:55;9530:2;9515:18;;9190:349::o;9903:135::-;9942:3;-1:-1:-1;;9963:17:1;;9960:43;;;9983:18;;:::i;:::-;-1:-1:-1;10030:1:1;10019:13;;9903:135::o;10639:352::-;10841:2;10823:21;;;10880:2;10860:18;;;10853:30;10919;10914:2;10899:18;;10892:58;10982:2;10967:18;;10639:352::o;11349:184::-;11419:6;11472:2;11460:9;11451:7;11447:23;11443:32;11440:52;;;11488:1;11485;11478:12;11440:52;-1:-1:-1;11511:16:1;;11349:184;-1:-1:-1;11349:184:1:o;14569:274::-;14698:3;14736:6;14730:13;14752:53;14798:6;14793:3;14786:4;14778:6;14774:17;14752:53;:::i;:::-;14821:16;;;;;14569:274;-1:-1:-1;;14569:274:1:o

Swarm Source

ipfs://4db622a89335a7f516edf22bc6964bb0d3dae43db253408484323d804b982d4c
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.