Token Frapped USDT

 

Overview ERC-20

Price
$0.00 @ 0.000000 FTM
Fully Diluted Market Cap
Total Supply:
83,709,040.907553 fUSDT

Holders:
25,335 addresses
Balance
1,431.252392 fUSDT

Value
$0.00
0x0000000000000000000000000000000000000000
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Frapped.io is the first and only non-custodial official Tether wrapper, it allows users to use their ERC-20 USDt on every compatible blockchain.

Market

Volume (24H):$0.00
Market Capitalization:$0.00
Circulating Supply:0.00 fUSDT
Market Data Source: Coinmarketcap


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

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV3ERC20

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU LGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-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);
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

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

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

library SafeERC20 {
    using Address for address;

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

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

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

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

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

contract AnyswapV3ERC20 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;

    address private _oldVault;
    address private _newVault;
    uint256 private _newVaultEffectiveTime;


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

    function vault() public view returns (address) {
        if (block.timestamp >= _newVaultEffectiveTime) {
            return _newVault;
        }
        return _oldVault;
    }

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


    function changeVault(address newVault) external onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        _oldVault = vault();
        _newVault = newVault;
        _newVaultEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeVault(_oldVault, _newVault, _newVaultEffectiveTime);
        return true;
    }

    function changeMPCOwner(address newVault) public onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        _oldVault = vault();
        _newVault = newVault;
        _newVaultEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeMPCOwner(_oldVault, _newVault, _newVaultEffectiveTime);
        return true;
    }

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

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

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

    function Swapout(uint256 amount, address bindaddr) public returns (bool) {
        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 LogChangeMPCOwner(address indexed oldOwner, address indexed newOwner, uint indexed effectiveHeight);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, 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());
        }

        _newVault = _vault;
        _newVaultEffectiveTime = block.timestamp;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

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

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

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

        return true;
    }

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

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

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

        return true;
    }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveHeight","type":"uint256"}],"name":"LogChangeMPCOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeMPCOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithTransferPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[],"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":[{"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":[],"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"}]

60e06040523480156200001157600080fd5b50604051620028223803806200282283398101604081905262000034916200039a565b84516200004990600090602088019062000212565b5083516200005f90600190602087019062000212565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b166080526001600160601b0319606083901b1660a0526001600160a01b038216156200013357816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620000e657600080fd5b505afa158015620000fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000121919062000439565b60ff168360ff16146200013357600080fd5b600580546001600160a01b0319166001600160a01b0383161790554260065560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9062000187906000906200045d565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c0525062000553945050505050565b828054620002209062000500565b90600052602060002090601f0160209004810192826200024457600085556200028f565b82601f106200025f57805160ff19168380011785556200028f565b828001600101855582156200028f579182015b828111156200028f57825182559160200191906001019062000272565b506200029d929150620002a1565b5090565b5b808211156200029d5760008155600101620002a2565b80516001600160a01b0381168114620002d057600080fd5b919050565b600082601f830112620002e6578081fd5b81516001600160401b03808211156200030357620003036200053d565b604051601f8301601f19908116603f011681019082821181831017156200032e576200032e6200053d565b816040528381526020925086838588010111156200034a578485fd5b8491505b838210156200036d57858201830151818301840152908201906200034e565b838211156200037e57848385830101525b9695505050505050565b805160ff81168114620002d057600080fd5b600080600080600060a08688031215620003b2578081fd5b85516001600160401b0380821115620003c9578283fd5b620003d789838a01620002d5565b96506020880151915080821115620003ed578283fd5b50620003fc88828901620002d5565b9450506200040d6040870162000388565b92506200041d60608701620002b8565b91506200042d60808701620002b8565b90509295509295909350565b6000602082840312156200044b578081fd5b620004568262000388565b9392505050565b81546000908190600281046001808316806200047a57607f831692505b60208084108214156200049b57634e487b7160e01b87526022600452602487fd5b818015620004b25760018114620004c457620004f2565b60ff19861689528489019650620004f2565b60008a815260209020885b86811015620004ea5781548b820152908501908301620004cf565b505084890196505b509498975050505050505050565b6002810460018216806200051557607f821691505b602082108114156200053757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160601c60c051612253620005cf6000396000818161034901526117930152600081816103fd01528181610efd01528181610f4901528181610fc90152818161116f015281816112d901528181611362015281816115a2015281816116860152611a4f0152600061031001526122536000f3fe608060405234801561001057600080fd5b50600436106102195760003560e01c80636e553f6511610125578063b6b55f25116100ad578063d505accf1161007c578063d505accf14610501578063dd62ed3e14610516578063ec126c7714610541578063f954734e14610554578063fbfa77cf1461056757610219565b8063b6b55f25146104c0578063bebbf4d0146104d3578063cae9ca51146104e6578063d0e30db0146104f957610219565b806381a37c18116100f457806381a37c18146104775780638da5cb5b1461048a57806395d89b41146104925780639dc29fac1461049a578063a9059cbb146104ad57610219565b80636e553f65146103e55780636f307dc3146103f857806370a08231146104375780637ecebe001461045757610219565b8063313ce567116101a857806340c10f191161017757806340c10f19146103865780635f9b105d14610399578063605629d6146103ac57806360e232a9146103bf578063628d6cba146103d257610219565b8063313ce5671461030b5780633644e515146103445780633ccfd60b1461036b5780634000aea01461037357610219565b8063095ea7b3116101ef578063095ea7b31461029357806318160ddd146102b657806323b872dd146102be5780632e1a7d4d146102d157806330adf81f146102e457610219565b806239d6ec1461021e578062bf26f414610244578062f714ce1461026b57806306fdde031461027e575b600080fd5b61023161022c366004611dc5565b61056f565b6040519081526020015b60405180910390f35b6102317f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b610231610279366004611f5f565b6105c5565b6102866105d9565b60405161023b9190612026565b6102a66102a1366004611d9c565b610667565b604051901515815260200161023b565b6102316106c1565b6102a66102cc366004611cf8565b6106c8565b6102316102df366004611f2f565b6108b3565b6102317f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103327f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161023b565b6102317f000000000000000000000000000000000000000000000000000000000000000081565b6102316108c8565b6102a6610381366004611e00565b6108e9565b6102a6610394366004611d9c565b610a42565b6102a66103a7366004611cac565b610a8f565b6102a66103ba366004611d33565b610b7f565b6102a66103cd366004611cac565b610d8f565b6102a66103e0366004611f5f565b610e7f565b6102316103f3366004611f5f565b610eee565b61041f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161023b565b610231610445366004611cac565b60026020526000908152604090205481565b610231610465366004611cac565b60076020526000908152604090205481565b610231610485366004611e82565b610f2f565b61041f611009565b610286611013565b6102a66104a8366004611d9c565b611020565b6102a66104bb366004611d9c565b61108a565b6102316104ce366004611f2f565b611160565b6102316104e1366004611f5f565b6111a1565b6102a66104f4366004611e00565b6111db565b6102316112b7565b61051461050f366004611d33565b61139a565b005b610231610524366004611cc6565b600860209081526000928352604080842090915290825290205481565b6102a661054f366004611f0b565b611508565b610231610562366004611e82565b611588565b61041f611640565b6000610579611640565b6001600160a01b0316336001600160a01b0316146105b25760405162461bcd60e51b81526004016105a990612059565b60405180910390fd5b6105bd84848461166d565b949350505050565b60006105d233848461166d565b9392505050565b600080546105e690612171565b80601f016020809104026020016040519081016040528092919081815260200182805461061290612171565b801561065f5780601f106106345761010080835404028352916020019161065f565b820191906000526020600020905b81548152906001019060200180831161064257829003601f168201915b505050505081565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290916000805160206121fe833981519152906106b09086815260200190565b60405180910390a350600192915050565b6003545b90565b60006001600160a01b0383161515806106ea57506001600160a01b0383163014155b6106f357600080fd5b6001600160a01b03841633146107ed576001600160a01b038416600090815260086020908152604080832033845290915290205460001981146107eb57828110156107925760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016105a9565b600061079e848361212e565b6001600160a01b038716600081815260086020908152604080832033808552908352928190208590555184815293945090926000805160206121fe833981519152910160405180910390a3505b505b6001600160a01b038416600090815260026020526040902054828110156108265760405162461bcd60e51b81526004016105a9906120c7565b610830838261212e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610866908490612116565b92505081905550836001600160a01b0316856001600160a01b03166000805160206121de833981519152856040516108a091815260200190565b60405180910390a3506001949350505050565b60006108c033833361166d565b90505b919050565b3360008181526002602052604081205490916108e4918161166d565b905090565b60006001600160a01b03851615158061090b57506001600160a01b0385163014155b61091457600080fd5b33600090815260026020526040902054848110156109445760405162461bcd60e51b81526004016105a9906120c7565b61094e858261212e565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610981908490612116565b90915550506040518581526001600160a01b0387169033906000805160206121de8339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed36906109e6903390899089908990600401611fde565b602060405180830381600087803b158015610a0057600080fd5b505af1158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a389190611eeb565b9695505050505050565b6000610a4c611640565b6001600160a01b0316336001600160a01b031614610a7c5760405162461bcd60e51b81526004016105a990612059565b610a8683836116b5565b50600192915050565b6000610a99611640565b6001600160a01b0316336001600160a01b031614610ac95760405162461bcd60e51b81526004016105a990612059565b6001600160a01b038216610aef5760405162461bcd60e51b81526004016105a990612090565b610af7611640565b600480546001600160a01b03199081166001600160a01b039384161790915560058054909116918416919091179055610b33426202a300612116565b60068190556005546004546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610bd15760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016105a9565b6001600160a01b038816600090815260076020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610c1e836121ac565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050610c7f8982878787611783565b80610c925750610c928982878787611873565b610c9b57600080fd5b6001600160a01b038816151580610cbb57506001600160a01b0388163014155b610cc457600080fd5b6001600160a01b03891660009081526002602052604090205487811015610cfd5760405162461bcd60e51b81526004016105a9906120c7565b610d07888261212e565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a9290610d3d908490612116565b92505081905550886001600160a01b03168a6001600160a01b03166000805160206121de8339815191528a604051610d7791815260200190565b60405180910390a35060019998505050505050505050565b6000610d99611640565b6001600160a01b0316336001600160a01b031614610dc95760405162461bcd60e51b81526004016105a990612059565b6001600160a01b038216610def5760405162461bcd60e51b81526004016105a990612090565b610df7611640565b600480546001600160a01b03199081166001600160a01b039384161790915560058054909116918416919091179055610e33426202a300612116565b60068190556005546004546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b60006001600160a01b038216610ea75760405162461bcd60e51b81526004016105a990612090565b610eb13384611908565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016106b0565b6000610f256001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866119da565b6105d28383611a4b565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610f8a908b9030908c908c908c908c908c90600401611f9d565b600060405180830381600087803b158015610fa457600080fd5b505af1158015610fb8573d6000803e3d6000fd5b50610ff39250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a6119da565b610ffd8783611a4b565b98975050505050505050565b60006108e4611640565b600180546105e690612171565b600061102a611640565b6001600160a01b0316336001600160a01b03161461105a5760405162461bcd60e51b81526004016105a990612059565b6001600160a01b0383166110805760405162461bcd60e51b81526004016105a990612090565b610a868383611908565b60006001600160a01b0383161515806110ac57506001600160a01b0383163014155b6110b557600080fd5b33600090815260026020526040902054828110156110e55760405162461bcd60e51b81526004016105a9906120c7565b6110ef838261212e565b33600090815260026020526040808220929092556001600160a01b03861681529081208054859290611122908490612116565b90915550506040518381526001600160a01b0385169033906000805160206121de833981519152906020015b60405180910390a35060019392505050565b60006111976001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856119da565b6108c08233611a4b565b60006111ab611640565b6001600160a01b0316336001600160a01b031614610f255760405162461bcd60e51b81526004016105a990612059565b3360008181526008602090815260408083206001600160a01b038916808552925280832087905551919290916000805160206121fe833981519152906112249088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f9061125c903390889088908890600401611fde565b602060405180830381600087803b15801561127657600080fd5b505af115801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611eeb565b95945050505050565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561131b57600080fd5b505afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190611f47565b905061138a6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846119da565b6113948133611a4b565b91505090565b834211156113ea5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016105a9565b6001600160a01b038716600090815260076020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086611437836121ac565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506114988882868686611783565b806114ab57506114ab8882868686611873565b6114b457600080fd5b6001600160a01b038881166000818152600860209081526040808320948c16808452948252918290208a905590518981526000805160206121fe833981519152910160405180910390a35050505050505050565b6000611512611640565b6001600160a01b0316336001600160a01b0316146115425760405162461bcd60e51b81526004016105a990612059565b61154c83836116b5565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161114e91815260200190565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d6906115e3908b9030908c908c908c908c908c90600401611f9d565b602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116359190611eeb565b50610ffd8783611a4b565b6000600654421061165d57506005546001600160a01b03166106c5565b506004546001600160a01b031690565b60006116798484611908565b6116ad6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611a91565b509092915050565b6001600160a01b03821661170b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105a9565b806003600082825461171d9190612116565b90915550506001600160a01b0382166000908152600260205260408120805483929061174a908490612116565b90915550506040518181526001600160a01b038316906000906000805160206121de833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0000000000000000000000000000000000000000000000000000000000000000602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611832573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610ffd5750876001600160a01b0316816001600160a01b03161498975050505050505050565b6000806118cd866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611810565b6001600160a01b0382166119685760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105a9565b6001600160a01b0382166000908152600260205260408120805483929061199090849061212e565b9250508190555080600360008282546119a9919061212e565b90915550506040518181526000906001600160a01b038416906000805160206121de83398151915290602001611777565b6040516001600160a01b0380851660248301528316604482015260648101829052611a459085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ac6565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611a8057600080fd5b611a8a82846116b5565b5090919050565b6040516001600160a01b038316602482015260448101829052611ac190849063a9059cbb60e01b90606401611a0e565b505050565b611ad8826001600160a01b0316611c4d565b611b245760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016105a9565b600080836001600160a01b031683604051611b3f9190611f81565b6000604051808303816000865af19150503d8060008114611b7c576040519150601f19603f3d011682016040523d82523d6000602084013e611b81565b606091505b509150915081611bd35760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016105a9565b805115611a455780806020019051810190611bee9190611eeb565b611a455760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105a9565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105bd5750141592915050565b80356001600160a01b03811681146108c357600080fd5b803560ff811681146108c357600080fd5b600060208284031215611cbd578081fd5b6105d282611c84565b60008060408385031215611cd8578081fd5b611ce183611c84565b9150611cef60208401611c84565b90509250929050565b600080600060608486031215611d0c578081fd5b611d1584611c84565b9250611d2360208501611c84565b9150604084013590509250925092565b600080600080600080600060e0888a031215611d4d578283fd5b611d5688611c84565b9650611d6460208901611c84565b95506040880135945060608801359350611d8060808901611c9b565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611dae578182fd5b611db783611c84565b946020939093013593505050565b600080600060608486031215611dd9578283fd5b611de284611c84565b925060208401359150611df760408501611c84565b90509250925092565b60008060008060608587031215611e15578384fd5b611e1e85611c84565b935060208501359250604085013567ffffffffffffffff80821115611e41578384fd5b818701915087601f830112611e54578384fd5b813581811115611e62578485fd5b886020828501011115611e73578485fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611e9c578283fd5b611ea588611c84565b96506020880135955060408801359450611ec160608901611c9b565b93506080880135925060a08801359150611edd60c08901611c84565b905092959891949750929550565b600060208284031215611efc578081fd5b815180151581146105d2578182fd5b600080600060608486031215611f1f578283fd5b83359250611d2360208501611c84565b600060208284031215611f40578081fd5b5035919050565b600060208284031215611f58578081fd5b5051919050565b60008060408385031215611f71578182fd5b82359150611cef60208401611c84565b60008251611f93818460208701612145565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6000602082528251806020840152612045816040850160208701612145565b601f01601f19169190910160400192915050565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60008219821115612129576121296121c7565b500190565b600082821015612140576121406121c7565b500390565b60005b83811015612160578181015183820152602001612148565b83811115611a455750506000910152565b60028104600182168061218557607f821691505b602082108114156121a657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156121c0576121c06121c7565b5060010190565b634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212208a5b66e296c8b8e24743e27b5fa5bc732fc729cee795c2b410e8e104d5de7d4964736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe000000000000000000000000000000000000000000000000000000000000000c467261707065642055534454000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056655534454000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe000000000000000000000000000000000000000000000000000000000000000c467261707065642055534454000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056655534454000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Frapped USDT
Arg [1] : _symbol (string): fUSDT
Arg [2] : _decimals (uint8): 6
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [6] : 4672617070656420555344540000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [8] : 6655534454000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

5728:16926:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12628:149;;;;;;:::i;:::-;;:::i;:::-;;;8624:25:1;;;8612:2;8597:18;12628:149:0;;;;;;;;6101:136;;6145:92;6101:136;;12494:126;;;;;;:::i;:::-;;:::i;5811:18::-;;;:::i;:::-;;;;;;;:::i;14351:265::-;;;;;;:::i;:::-;;:::i;:::-;;;8451:14:1;;8444:22;8426:41;;8414:2;8399:18;14351:265:0;8381:92:1;10494:102:0;;;:::i;20574:927::-;;;;;;:::i;:::-;;:::i;12364:122::-;;;;;;:::i;:::-;;:::i;5957:137::-;;5999:95;5957:137;;5863:41;;;;;;;;14191:4:1;14179:17;;;14161:36;;14149:2;14134:18;5863:41:0;14116:87:1;6244:41:0;;;;;12230:126;;;:::i;22128:523::-;;;;;;:::i;:::-;;:::i;7749:134::-;;;;;;:::i;:::-;;:::i;7360:381::-;;;;;;:::i;:::-;;:::i;16949:938::-;;;;;;:::i;:::-;;:::i;6975:377::-;;;;;;:::i;:::-;;:::i;8325:269::-;;;;;;:::i;:::-;;:::i;11713:193::-;;;;;;:::i;:::-;;:::i;5913:35::-;;;;;;;;-1:-1:-1;;;;;6341:32:1;;;6323:51;;6311:2;6296:18;5913:35:0;6278:102:1;6365:54:0;;;;;;:::i;:::-;;;;;;;;;;;;;;8866:51;;;;;;:::i;:::-;;;;;;;;;;;;;;10604:349;;;;;;:::i;:::-;;:::i;6885:80::-;;;:::i;5836:20::-;;;:::i;7891:208::-;;;;;;:::i;:::-;;:::i;19247:438::-;;;;;;:::i;:::-;;:::i;11516:189::-;;;;;;:::i;:::-;;:::i;11914:127::-;;;;;;:::i;:::-;;:::i;15037:356::-;;;;;;:::i;:::-;;:::i;11262:246::-;;;:::i;16226:715::-;;;;;;:::i;:::-;;:::i;:::-;;9087:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8107:210;;;;;;:::i;:::-;;:::i;10961:293::-;;;;;;:::i;:::-;;:::i;6695:182::-;;;:::i;12628:149::-;12718:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;;;;;;;;;12742:27:::1;12752:4;12758:6;12766:2;12742:9;:27::i;:::-;12735:34:::0;12628:149;-1:-1:-1;;;;12628:149:0:o;12494:126::-;12555:4;12579:33;12589:10;12601:6;12609:2;12579:9;:33::i;:::-;12572:40;12494:126;-1:-1:-1;;;12494:126:0:o;5811:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14351:265::-;14504:10;14427:4;14494:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;14494:30:0;;;;;;;;;;:38;;;14548:36;14427:4;;14494:30;;-1:-1:-1;;;;;;;;;;;14548:36:0;;;14527:5;8624:25:1;;8612:2;8597:18;;8579:76;14548:36:0;;;;;;;;-1:-1:-1;14604:4:0;14351:265;;;;:::o;10494:102::-;10576:12;;10494:102;;:::o;20574:927::-;20664:4;-1:-1:-1;;;;;20689:16:0;;;;;:39;;-1:-1:-1;;;;;;20709:19:0;;20723:4;20709:19;;20689:39;20681:48;;;;;;-1:-1:-1;;;;;20744:18:0;;20752:10;20744:18;20740:477;;-1:-1:-1;;;;;20858:15:0;;20840;20858;;;:9;:15;;;;;;;;20874:10;20858:27;;;;;;;;-1:-1:-1;;20904:28:0;;20900:306;;20972:5;20961:7;:16;;20953:70;;;;-1:-1:-1;;;20953:70:0;;12498:2:1;20953:70:0;;;12480:21:1;12537:2;12517:18;;;12510:30;12576:34;12556:18;;;12549:62;-1:-1:-1;;;12627:18:1;;;12620:39;12676:19;;20953:70:0;12470:231:1;20953:70:0;21042:15;21060;21070:5;21060:7;:15;:::i;:::-;-1:-1:-1;;;;;21094:15:0;;;;;;:9;:15;;;;;;;;21110:10;21094:27;;;;;;;;;;:37;;;21155:35;8624:25:1;;;21094:37:0;;-1:-1:-1;21110:10:0;;-1:-1:-1;;;;;;;;;;;21155:35:0;8597:18:1;21155:35:0;;;;;;;20900:306;;20740:477;;-1:-1:-1;;;;;21247:15:0;;21229;21247;;;:9;:15;;;;;;21281:16;;;;21273:76;;;;-1:-1:-1;;;21273:76:0;;;;;;;:::i;:::-;21380:15;21390:5;21380:7;:15;:::i;:::-;-1:-1:-1;;;;;21362:15:0;;;;;;;:9;:15;;;;;;:33;;;;21406:13;;;;;;;;:22;;21423:5;;21362:15;21406:22;;21423:5;;21406:22;:::i;:::-;;;;;;;;21459:2;-1:-1:-1;;;;;21444:25:0;21453:4;-1:-1:-1;;;;;21444:25:0;-1:-1:-1;;;;;;;;;;;21463:5:0;21444:25;;;;8624::1;;8612:2;8597:18;;8579:76;21444:25:0;;;;;;;;-1:-1:-1;21489:4:0;;20574:927;-1:-1:-1;;;;20574:927:0:o;12364:122::-;12413:4;12437:41;12447:10;12459:6;12467:10;12437:9;:41::i;:::-;12430:48;;12364:122;;;;:::o;12230:126::-;12302:10;12268:4;12314:21;;;:9;:21;;;;;;12268:4;;12292:56;;12302:10;12292:9;:56::i;:::-;12285:63;;12230:126;:::o;22128:523::-;22225:4;-1:-1:-1;;;;;22250:16:0;;;;;:39;;-1:-1:-1;;;;;;22270:19:0;;22284:4;22270:19;;22250:39;22242:48;;;;;;22331:10;22303:15;22321:21;;;:9;:21;;;;;;22361:16;;;;22353:76;;;;-1:-1:-1;;;22353:76:0;;;;;;;:::i;:::-;22466:15;22476:5;22466:7;:15;:::i;:::-;22452:10;22442:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;22492:13:0;;;;;;;:22;;22509:5;;22442:21;22492:22;;22509:5;;22492:22;:::i;:::-;;;;-1:-1:-1;;22530:31:0;;8624:25:1;;;-1:-1:-1;;;;;22530:31:0;;;22539:10;;-1:-1:-1;;;;;;;;;;;22530:31:0;8612:2:1;8597:18;22530:31:0;;;;;;;22581:62;;-1:-1:-1;;;22581:62:0;;-1:-1:-1;;;;;22581:37:0;;;;;:62;;22619:10;;22631:5;;22638:4;;;;22581:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22574:69;22128:523;-1:-1:-1;;;;;;22128:523:0:o;7749:134::-;7819:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;7836:17:::1;7842:2;7846:6;7836:5;:17::i;:::-;-1:-1:-1::0;7871:4:0::1;7749:134:::0;;;;:::o;7360:381::-;7428:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7453:22:0;::::1;7445:63;;;;-1:-1:-1::0;;;7445:63:0::1;;;;;;;:::i;:::-;7531:7;:5;:7::i;:::-;7519:9;:19:::0;;-1:-1:-1;;;;;;7519:19:0;;::::1;-1:-1:-1::0;;;;;7519:19:0;;::::1;;::::0;;;7549:9:::1;:20:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;7605:27:::1;:15;7623:9;7605:27;:::i;:::-;7580:22;:52:::0;;;7677:9:::1;::::0;7666::::1;::::0;7648:63:::1;::::0;-1:-1:-1;;;;;7677:9:0;;::::1;::::0;7666;;::::1;::::0;7648:63:::1;::::0;7677:9:::1;::::0;7648:63:::1;-1:-1:-1::0;7729:4:0::1;7360:381:::0;;;:::o;16949:938::-;17096:4;17140:8;17121:15;:27;;17113:70;;;;-1:-1:-1;;;17113:70:0;;11737:2:1;17113:70:0;;;11719:21:1;11776:2;11756:18;;;11749:30;11815:32;11795:18;;;11788:60;11865:18;;17113:70:0;11709:180:1;17113:70:0;-1:-1:-1;;;;;17376:14:0;;17196:18;17376:14;;;:6;:14;;;;;:16;;6145:92;;17306:6;;17331:2;;17352:5;;17376:16;17196:18;17376:16;;;:::i;:::-;;;;-1:-1:-1;17241:179:0;;;;;;8947:25:1;;;;-1:-1:-1;;;;;9046:15:1;;;9026:18;;;9019:43;9098:15;;;;9078:18;;;9071:43;9130:18;;;9123:34;9173:19;;;9166:35;9217:19;;;9210:35;;;8919:19;;17241:179:0;;;;;;;;;;;;17217:204;;;;;;17196:225;;17442:41;17455:6;17463:10;17475:1;17478;17481;17442:12;:41::i;:::-;:92;;;;17487:47;17506:6;17514:10;17526:1;17529;17532;17487:18;:47::i;:::-;17434:101;;;;;;-1:-1:-1;;;;;17556:16:0;;;;;:39;;-1:-1:-1;;;;;;17576:19:0;;17590:4;17576:19;;17556:39;17548:48;;;;;;-1:-1:-1;;;;;17627:17:0;;17609:15;17627:17;;;:9;:17;;;;;;17663:16;;;;17655:76;;;;-1:-1:-1;;;17655:76:0;;;;;;;:::i;:::-;17764:15;17774:5;17764:7;:15;:::i;:::-;-1:-1:-1;;;;;17744:17:0;;;;;;;:9;:17;;;;;;:35;;;;17790:13;;;;;;;;:22;;17807:5;;17744:17;17790:22;;17807:5;;17790:22;:::i;:::-;;;;;;;;17845:2;-1:-1:-1;;;;;17828:27:0;17837:6;-1:-1:-1;;;;;17828:27:0;-1:-1:-1;;;;;;;;;;;17849:5:0;17828:27;;;;8624:25:1;;8612:2;8597:18;;8579:76;17828:27:0;;;;;;;;-1:-1:-1;17875:4:0;;16949:938;-1:-1:-1;;;;;;;;;16949:938:0:o;6975:377::-;7042:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7067:22:0;::::1;7059:63;;;;-1:-1:-1::0;;;7059:63:0::1;;;;;;;:::i;:::-;7145:7;:5;:7::i;:::-;7133:9;:19:::0;;-1:-1:-1;;;;;;7133:19:0;;::::1;-1:-1:-1::0;;;;;7133:19:0;;::::1;;::::0;;;7163:9:::1;:20:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;7219:27:::1;:15;7237:9;7219:27;:::i;:::-;7194:22;:52:::0;;;7288:9:::1;::::0;7277::::1;::::0;7262:60:::1;::::0;-1:-1:-1;;;;;7288:9:0;;::::1;::::0;7277;;::::1;::::0;7262:60:::1;::::0;7288:9:::1;::::0;7262:60:::1;-1:-1:-1::0;7340:4:0::1;6975:377:::0;;;:::o;8325:269::-;8392:4;-1:-1:-1;;;;;8417:22:0;;8409:63;;;;-1:-1:-1;;;8409:63:0;;;;;;;:::i;:::-;8483:25;8489:10;8501:6;8483:5;:25::i;:::-;8524:40;;8624:25:1;;;-1:-1:-1;;;;;8524:40:0;;;8535:10;;8524:40;;8612:2:1;8597:18;8524:40:0;8579:76:1;11713:193:0;11773:4;11790:70;-1:-1:-1;;;;;11797:10:0;11790:35;11826:10;11846:4;11853:6;11790:35;:70::i;:::-;11878:20;11887:6;11895:2;11878:8;:20::i;10604:349::-;10758:74;;-1:-1:-1;;;10758:74:0;;10741:4;;-1:-1:-1;;;;;10765:10:0;10758:25;;;;:74;;10784:6;;10800:4;;10807:5;;10814:8;;10824:1;;10827;;10830;;10758:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10843:65:0;;-1:-1:-1;;;;;;;10850:10:0;10843:35;;-1:-1:-1;10879:6:0;10895:4;10902:5;10843:35;:65::i;:::-;10926:19;10935:5;10942:2;10926:8;:19::i;:::-;10919:26;10604:349;-1:-1:-1;;;;;;;;10604:349:0:o;6885:80::-;6923:7;6950;:5;:7::i;5836:20::-;;;;;;;:::i;7891:208::-;7963:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7988:18:0;::::1;7980:59;;;;-1:-1:-1::0;;;7980:59:0::1;;;;;;;:::i;:::-;8050:19;8056:4;8062:6;8050:5;:19::i;19247:438::-:0;19319:4;-1:-1:-1;;;;;19344:16:0;;;;;:39;;-1:-1:-1;;;;;;19364:19:0;;19378:4;19364:19;;19344:39;19336:48;;;;;;19423:10;19395:15;19413:21;;;:9;:21;;;;;;19453:16;;;;19445:76;;;;-1:-1:-1;;;19445:76:0;;;;;;;:::i;:::-;19558:15;19568:5;19558:7;:15;:::i;:::-;19544:10;19534:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;19584:13:0;;;;;;;:22;;19601:5;;19534:21;19584:22;;19601:5;;19584:22;:::i;:::-;;;;-1:-1:-1;;19622:31:0;;8624:25:1;;;-1:-1:-1;;;;;19622:31:0;;;19631:10;;-1:-1:-1;;;;;;;;;;;19622:31:0;8612:2:1;8597:18;19622:31:0;;;;;;;;-1:-1:-1;19673:4:0;;19247:438;-1:-1:-1;;;19247:438:0:o;11516:189::-;11564:4;11581:70;-1:-1:-1;;;;;11588:10:0;11581:35;11617:10;11637:4;11644:6;11581:35;:70::i;:::-;11669:28;11678:6;11686:10;11669:8;:28::i;11914:127::-;11989:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;15037:356::-;15218:10;15141:4;15208:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15208:30:0;;;;;;;;;;:38;;;15262:36;15141:4;;15208:30;;-1:-1:-1;;;;;;;;;;;15262:36:0;;;15241:5;8624:25:1;;8612:2;8597:18;;8579:76;15262:36:0;;;;;;;;15318:67;;-1:-1:-1;;;15318:67:0;;-1:-1:-1;;;;;15318:42:0;;;;;:67;;15361:10;;15373:5;;15380:4;;;;15318:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15311:74;15037:356;-1:-1:-1;;;;;15037:356:0:o;11262:246::-;11331:40;;-1:-1:-1;;;11331:40:0;;11360:10;11331:40;;;6323:51:1;11299:4:0;;;;-1:-1:-1;;;;;11338:10:0;11331:28;;;;6296:18:1;;11331:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11316:55;-1:-1:-1;11382:71:0;-1:-1:-1;;;;;11389:10:0;11382:35;11418:10;11438:4;11316:55;11382:35;:71::i;:::-;11471:29;11480:7;11489:10;11471:8;:29::i;:::-;11464:36;;;11262:246;:::o;16226:715::-;16395:8;16376:15;:27;;16368:70;;;;-1:-1:-1;;;16368:70:0;;11737:2:1;16368:70:0;;;11719:21:1;11776:2;11756:18;;;11749:30;11815:32;11795:18;;;11788:60;11865:18;;16368:70:0;11709:180:1;16368:70:0;-1:-1:-1;;;;;16634:14:0;;16451:18;16634:14;;;:6;:14;;;;;:16;;5999:95;;16559:6;;16584:7;;16610:5;;16634:16;16451:18;16634:16;;;:::i;:::-;;;;-1:-1:-1;16496:182:0;;;;;;8947:25:1;;;;-1:-1:-1;;;;;9046:15:1;;;9026:18;;;9019:43;9098:15;;;;9078:18;;;9071:43;9130:18;;;9123:34;9173:19;;;9166:35;9217:19;;;9210:35;;;8919:19;;16496:182:0;;;;;;;;;;;;16472:207;;;;;;16451:228;;16700:41;16713:6;16721:10;16733:1;16736;16739;16700:12;:41::i;:::-;:92;;;;16745:47;16764:6;16772:10;16784:1;16787;16790;16745:18;:47::i;:::-;16692:101;;;;;;-1:-1:-1;;;;;16851:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;16901:32;;8624:25:1;;;-1:-1:-1;;;;;;;;;;;16901:32:0;8597:18:1;16901:32:0;;;;;;;16226:715;;;;;;;;:::o;8107:210::-;8198:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;8215:22:::1;8221:7;8230:6;8215:5;:22::i;:::-;8271:7;-1:-1:-1::0;;;;;8253:34:0::1;8263:6;8253:34;8280:6;8253:34;;;;8624:25:1::0;;8612:2;8597:18;;8579:76;10961:293:0;11123:86;;-1:-1:-1;;;11123:86:0;;11106:4;;-1:-1:-1;;;;;11130:10:0;11123:37;;;;:86;;11161:6;;11177:4;;11184:5;;11191:8;;11201:1;;11204;;11207;;11123:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11227:19;11236:5;11243:2;11227:8;:19::i;6695:182::-;6733:7;6776:22;;6757:15;:41;6753:90;;-1:-1:-1;6822:9:0;;-1:-1:-1;;;;;6822:9:0;6815:16;;6753:90;-1:-1:-1;6860:9:0;;-1:-1:-1;;;;;6860:9:0;6695:182;:::o;12785:198::-;12861:4;12878:19;12884:4;12890:6;12878:5;:19::i;:::-;12908:43;-1:-1:-1;;;;;12915:10:0;12908:31;12940:2;12944:6;12908:31;:43::i;:::-;-1:-1:-1;12969:6:0;;12785:198;-1:-1:-1;;12785:198:0:o;13264:268::-;-1:-1:-1;;;;;13340:21:0;;13332:65;;;;-1:-1:-1;;;13332:65:0;;13679:2:1;13332:65:0;;;13661:21:1;13718:2;13698:18;;;13691:30;13757:33;13737:18;;;13730:61;13808:18;;13332:65:0;13651:181:1;13332:65:0;13426:6;13410:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13443:18:0;;;;;;:9;:18;;;;;:28;;13465:6;;13443:18;:28;;13465:6;;13443:28;:::i;:::-;;;;-1:-1:-1;;13487:37:0;;8624:25:1;;;-1:-1:-1;;;;;13487:37:0;;;13504:1;;-1:-1:-1;;;;;;;;;;;13487:37:0;8612:2:1;8597:18;13487:37:0;;;;;;;;13264:268;;:::o;17895:399::-;18063:110;;-1:-1:-1;;;18063:110:0;;;6038:27:1;18127:16:0;6081:11:1;;;6074:27;6117:12;;;6110:28;;;18007:4:0;;;;6154:12:1;;18063:110:0;;;-1:-1:-1;;18063:110:0;;;;;;;;;18039:135;;18063:110;18039:135;;;;18185:14;18202:24;;;;;;;;;9483:25:1;;;9556:4;9544:17;;9524:18;;;9517:45;;;;9578:18;;;9571:34;;;9621:18;;;9614:34;;;18039:135:0;;-1:-1:-1;18185:14:0;18202:24;;9455:19:1;;18202:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18202:24:0;;-1:-1:-1;;18202:24:0;;;-1:-1:-1;;;;;;;18245:20:0;;;;;;:40;;;18279:6;-1:-1:-1;;;;;18269:16:0;:6;-1:-1:-1;;;;;18269:16:0;;18237:49;17895:399;-1:-1:-1;;;;;;;;17895:399:0:o;18302:290::-;18420:4;18437:12;18452:20;18461:10;18758:58;;5637:66:1;18758:58:0;;;5625:79:1;5720:12;;;5713:28;;;18721:7:0;;5757:12:1;;18758:58:0;;;;;;;;;;;;18748:69;;;;;;18741:76;;18666:159;;;;18452:20;18500:24;;;18483:14;18500:24;;;;;;;;;9483:25:1;;;9556:4;9544:17;;9524:18;;;9517:45;;;;9578:18;;;9571:34;;;9621:18;;;9614:34;;;18437:35:0;;-1:-1:-1;18483:14:0;18500:24;;9455:19:1;;18500:24:0;9437:217:1;13864:270:0;-1:-1:-1;;;;;13940:21:0;;13932:67;;;;-1:-1:-1;;;13932:67:0;;12096:2:1;13932:67:0;;;12078:21:1;12135:2;12115:18;;;12108:30;12174:34;12154:18;;;12147:62;-1:-1:-1;;;12225:18:1;;;12218:31;12266:19;;13932:67:0;12068:223:1;13932:67:0;-1:-1:-1;;;;;14012:18:0;;;;;;:9;:18;;;;;:28;;14034:6;;14012:18;:28;;14034:6;;14012:28;:::i;:::-;;;;;;;;14067:6;14051:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;14089:37:0;;8624:25:1;;;14115:1:0;;-1:-1:-1;;;;;14089:37:0;;;-1:-1:-1;;;;;;;;;;;14089:37:0;8612:2:1;8597:18;14089:37:0;8579:76:1;4564:201:0;4688:68;;-1:-1:-1;;;;;6643:15:1;;;4688:68:0;;;6625:34:1;6695:15;;6675:18;;;6668:43;6727:18;;;6720:34;;;4662:95:0;;4681:5;;-1:-1:-1;;;4711:27:0;6560:18:1;;4688:68:0;;;;-1:-1:-1;;4688:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4688:68:0;-1:-1:-1;;;;;;4688:68:0;;;;;;;;;;4662:18;:95::i;:::-;4564:201;;;;:::o;12049:173::-;12110:4;12135:10;-1:-1:-1;;;;;12135:26:0;12127:35;;;;;;12173:17;12179:2;12183:6;12173:5;:17::i;:::-;-1:-1:-1;12208:6:0;;12049:173;-1:-1:-1;12049:173:0:o;4383:::-;4489:58;;-1:-1:-1;;;;;7632:32:1;;4489:58:0;;;7614:51:1;7681:18;;;7674:34;;;4463:85:0;;4482:5;;-1:-1:-1;;;4512:23:0;7587:18:1;;4489:58:0;7569:145:1;4463:85:0;4383:173;;;:::o;5123:598::-;5211:27;5219:5;-1:-1:-1;;;;;5211:25:0;;:27::i;:::-;5203:71;;;;-1:-1:-1;;;5203:71:0;;13319:2:1;5203:71:0;;;13301:21:1;13358:2;13338:18;;;13331:30;13397:33;13377:18;;;13370:61;13448:18;;5203:71:0;13291:181:1;5203:71:0;5348:12;5362:23;5397:5;-1:-1:-1;;;;;5389:19:0;5409:4;5389:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5347:67;;;;5433:7;5425:52;;;;-1:-1:-1;;;5425:52:0;;10960:2:1;5425:52:0;;;10942:21:1;;;10979:18;;;10972:30;11038:34;11018:18;;;11011:62;11090:18;;5425:52:0;10932:182:1;5425:52:0;5494:17;;:21;5490:224;;5636:10;5625:30;;;;;;;;;;;;:::i;:::-;5617:85;;;;-1:-1:-1;;;5617:85:0;;12908:2:1;5617:85:0;;;12890:21:1;12947:2;12927:18;;;12920:30;12986:34;12966:18;;;12959:62;-1:-1:-1;;;13037:18:1;;;13030:40;13087:19;;5617:85:0;12880:232:1;3943:374:0;4003:4;4226:20;;4069:66;4266:15;;;;;:42;;-1:-1:-1;4285:23:0;;;4258:51;-1:-1:-1;;3943:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:156;258:20;;318:4;307:16;;297:27;;287:2;;338:1;335;328:12;353:196;;465:2;453:9;444:7;440:23;436:32;433:2;;;486:6;478;471:22;433:2;514:29;533:9;514:29;:::i;554:270::-;;;683:2;671:9;662:7;658:23;654:32;651:2;;;704:6;696;689:22;651:2;732:29;751:9;732:29;:::i;:::-;722:39;;780:38;814:2;803:9;799:18;780:38;:::i;:::-;770:48;;641:183;;;;;:::o;829:338::-;;;;975:2;963:9;954:7;950:23;946:32;943:2;;;996:6;988;981:22;943:2;1024:29;1043:9;1024:29;:::i;:::-;1014:39;;1072:38;1106:2;1095:9;1091:18;1072:38;:::i;:::-;1062:48;;1157:2;1146:9;1142:18;1129:32;1119:42;;933:234;;;;;:::o;1172:616::-;;;;;;;;1384:3;1372:9;1363:7;1359:23;1355:33;1352:2;;;1406:6;1398;1391:22;1352:2;1434:29;1453:9;1434:29;:::i;:::-;1424:39;;1482:38;1516:2;1505:9;1501:18;1482:38;:::i;:::-;1472:48;;1567:2;1556:9;1552:18;1539:32;1529:42;;1618:2;1607:9;1603:18;1590:32;1580:42;;1641:37;1673:3;1662:9;1658:19;1641:37;:::i;:::-;1631:47;;1725:3;1714:9;1710:19;1697:33;1687:43;;1777:3;1766:9;1762:19;1749:33;1739:43;;1342:446;;;;;;;;;;:::o;1793:264::-;;;1922:2;1910:9;1901:7;1897:23;1893:32;1890:2;;;1943:6;1935;1928:22;1890:2;1971:29;1990:9;1971:29;:::i;:::-;1961:39;2047:2;2032:18;;;;2019:32;;-1:-1:-1;;;1880:177:1:o;2062:338::-;;;;2208:2;2196:9;2187:7;2183:23;2179:32;2176:2;;;2229:6;2221;2214:22;2176:2;2257:29;2276:9;2257:29;:::i;:::-;2247:39;;2333:2;2322:9;2318:18;2305:32;2295:42;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2166:234;;;;;:::o;2405:783::-;;;;;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;2619:29;2638:9;2619:29;:::i;:::-;2609:39;;2695:2;2684:9;2680:18;2667:32;2657:42;;2750:2;2739:9;2735:18;2722:32;2773:18;2814:2;2806:6;2803:14;2800:2;;;2835:6;2827;2820:22;2800:2;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:2;;2950:6;2942;2935:22;2894:2;2995;2982:16;3021:2;3013:6;3010:14;3007:2;;;3042:6;3034;3027:22;3007:2;3092:7;3087:2;3078:6;3074:2;3070:15;3066:24;3063:37;3060:2;;;3118:6;3110;3103:22;3060:2;2528:660;;;;-1:-1:-1;;3154:2:1;3146:11;;-1:-1:-1;;;2528:660:1:o;3193:616::-;;;;;;;;3405:3;3393:9;3384:7;3380:23;3376:33;3373:2;;;3427:6;3419;3412:22;3373:2;3455:29;3474:9;3455:29;:::i;:::-;3445:39;;3531:2;3520:9;3516:18;3503:32;3493:42;;3582:2;3571:9;3567:18;3554:32;3544:42;;3605:36;3637:2;3626:9;3622:18;3605:36;:::i;:::-;3595:46;;3688:3;3677:9;3673:19;3660:33;3650:43;;3740:3;3729:9;3725:19;3712:33;3702:43;;3764:39;3798:3;3787:9;3783:19;3764:39;:::i;:::-;3754:49;;3363:446;;;;;;;;;;:::o;3814:297::-;;3934:2;3922:9;3913:7;3909:23;3905:32;3902:2;;;3955:6;3947;3940:22;3902:2;3992:9;3986:16;4045:5;4038:13;4031:21;4024:5;4021:32;4011:2;;4072:6;4064;4057:22;4116:332;;;;4262:2;4250:9;4241:7;4237:23;4233:32;4230:2;;;4283:6;4275;4268:22;4230:2;4324:9;4311:23;4301:33;;4353:38;4387:2;4376:9;4372:18;4353:38;:::i;4453:190::-;;4565:2;4553:9;4544:7;4540:23;4536:32;4533:2;;;4586:6;4578;4571:22;4533:2;-1:-1:-1;4614:23:1;;4523:120;-1:-1:-1;4523:120:1:o;4648:194::-;;4771:2;4759:9;4750:7;4746:23;4742:32;4739:2;;;4792:6;4784;4777:22;4739:2;-1:-1:-1;4820:16:1;;4729:113;-1:-1:-1;4729:113:1:o;4847:264::-;;;4976:2;4964:9;4955:7;4951:23;4947:32;4944:2;;;4997:6;4989;4982:22;4944:2;5038:9;5025:23;5015:33;;5067:38;5101:2;5090:9;5086:18;5067:38;:::i;5116:274::-;;5283:6;5277:13;5299:53;5345:6;5340:3;5333:4;5325:6;5321:17;5299:53;:::i;:::-;5368:16;;;;;5253:137;-1:-1:-1;;5253:137:1:o;6765:670::-;-1:-1:-1;;;;;7132:15:1;;;7114:34;;7184:15;;;;7179:2;7164:18;;7157:43;7231:2;7216:18;;7209:34;;;;7274:2;7259:18;;7252:34;;;;7335:4;7323:17;7317:3;7302:19;;7295:46;7094:3;7357:19;;7350:35;7416:3;7401:19;;7394:35;;;;7063:3;7048:19;;7030:405::o;7719:562::-;-1:-1:-1;;;;;7932:32:1;;7914:51;;7996:2;7981:18;;7974:34;;;8044:2;8039;8024:18;;8017:30;;;8063:18;;8056:34;;;7719:562;8083:6;8133;8127:3;8112:19;;8099:49;8168:22;;;8192:3;8164:32;;;8157:46;;;;8264:2;8243:15;;;-1:-1:-1;;8239:29:1;8224:45;8220:55;;7904:377;-1:-1:-1;;;7904:377:1:o;9659:383::-;;9808:2;9797:9;9790:21;9840:6;9834:13;9883:6;9878:2;9867:9;9863:18;9856:34;9899:66;9958:6;9953:2;9942:9;9938:18;9933:2;9925:6;9921:15;9899:66;:::i;:::-;10026:2;10005:15;-1:-1:-1;;10001:29:1;9986:45;;;;10033:2;9982:54;;9780:262;-1:-1:-1;;9780:262:1:o;10047:349::-;10249:2;10231:21;;;10288:2;10268:18;;;10261:30;10327:27;10322:2;10307:18;;10300:55;10387:2;10372:18;;10221:175::o;10401:352::-;10603:2;10585:21;;;10642:2;10622:18;;;10615:30;10681;10676:2;10661:18;;10654:58;10744:2;10729:18;;10575:178::o;11119:411::-;11321:2;11303:21;;;11360:2;11340:18;;;11333:30;11399:34;11394:2;11379:18;;11372:62;-1:-1:-1;;;11465:2:1;11450:18;;11443:45;11520:3;11505:19;;11293:237::o;14208:128::-;;14279:1;14275:6;14272:1;14269:13;14266:2;;;14285:18;;:::i;:::-;-1:-1:-1;14321:9:1;;14256:80::o;14341:125::-;;14409:1;14406;14403:8;14400:2;;;14414:18;;:::i;:::-;-1:-1:-1;14451:9:1;;14390:76::o;14471:258::-;14543:1;14553:113;14567:6;14564:1;14561:13;14553:113;;;14643:11;;;14637:18;14624:11;;;14617:39;14589:2;14582:10;14553:113;;;14684:6;14681:1;14678:13;14675:2;;;-1:-1:-1;;14719:1:1;14701:16;;14694:27;14524:205::o;14734:380::-;14819:1;14809:12;;14866:1;14856:12;;;14877:2;;14931:4;14923:6;14919:17;14909:27;;14877:2;14984;14976:6;14973:14;14953:18;14950:38;14947:2;;;15030:10;15025:3;15021:20;15018:1;15011:31;15065:4;15062:1;15055:15;15093:4;15090:1;15083:15;14947:2;;14789:325;;;:::o;15119:135::-;;-1:-1:-1;;15179:17:1;;15176:2;;;15199:18;;:::i;:::-;-1:-1:-1;15246:1:1;15235:13;;15166:88::o;15259:127::-;15320:10;15315:3;15311:20;15308:1;15301:31;15351:4;15348:1;15341:15;15375:4;15372:1;15365:15

Swarm Source

ipfs://8a5b66e296c8b8e24743e27b5fa5bc732fc729cee795c2b410e8e104d5de7d49
Loading