Contract 0xD67de0e0a0Fd7b15dC8348Bb9BE742F3c5850454 10

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xea2e38bc9ea158be07d4dca2b7254fbbbb11c1b7bd7ed1831f9f9737c4bc9d96Swapout552558892023-02-07 11:06:3440 mins ago0x417cf620b95bb6939db78cf13c482811b13952bb IN  Binance: BNB Token0 FTM0.001506396528
0x4f4812eacf52d3b5c7157c8dfa0e526d3ef681d927693cd7f6e7742658c48ab6Approve552535482023-02-07 10:24:351 hr 22 mins ago0xb3b23f8cb75251fc0a7504bae0be5877a3c1f1ac IN  Binance: BNB Token0 FTM0.002071827277
0x4c575861ef652ce7a8a67750518d4f9223eda82f82126a02a4de59982e8cc8c2Swapin552499132023-02-07 8:57:152 hrs 49 mins ago0x4b3b4120d4d7975455d8c2894228789c91a247f8 IN  Binance: BNB Token0 FTM0.002032300762
0xfc151221a484c66c654fa381e7069a15f65da2887362963f359c6c5f51d90dc9Swapout552492992023-02-07 8:44:233 hrs 2 mins ago0x49d82f644adefb0c85e9f33d6bf1c3845b339e64 IN  Binance: BNB Token0 FTM0.001321690348
0x41207e26517f997c999901b21f1ada3f81e66ecad166961d6b42b448c0eb9d03Swapout552487252023-02-07 8:30:223 hrs 16 mins ago0x49d82f644adefb0c85e9f33d6bf1c3845b339e64 IN  Binance: BNB Token0 FTM0.001161485198
0x8bfe15d7dc99342b86414747e2406f4e7bc2026d4625956a4a89747d8d57cc8cSwapin552444212023-02-07 6:40:265 hrs 6 mins ago0x4b3b4120d4d7975455d8c2894228789c91a247f8 IN  Binance: BNB Token0 FTM0.002440648074
0x14af9752ef13bbf733b93a3961818fb4cd3164a880f44104b2c3e83194516aeaApprove552411462023-02-07 4:50:406 hrs 55 mins ago0x83469a933f4d82ffcc9cd2284de816a6a9f68433 IN  Binance: BNB Token0 FTM0.00097308
0xacd2baae26eaa0436d9032bca91a467699b1fc76d504c16f070e9ff17deaa8b8Approve552409492023-02-07 4:45:417 hrs ago0x19d32180bc2210ea3b500553d3db90ef248a38f3 IN  Binance: BNB Token0 FTM0.000939623683
0xf1102f36ee08e832b9a1917b330a9d1aa1106747253af7b9f87ec8dffddea524Swapout552392322023-02-07 3:58:337 hrs 48 mins ago0x1cc7f7f3cd2401551f1e68aa9a05729a50bc532b IN  Binance: BNB Token0 FTM0.001367983796
0x17ffbdd4d55a50cd2e9cb8af78b5d7b59ae4b9385a5030840128a806a355a0d7Swapout552379292023-02-07 3:19:288 hrs 27 mins ago0x16fadb887f3e6ed3e9b0f5706c99b52c2f43d649 IN  Binance: BNB Token0 FTM0.001499512345
0x0c2d5103b2512ca1c9585770dfe79a505a5a408fd12f58384461e938df90b2ecSwapout552344092023-02-07 1:54:019 hrs 52 mins ago0x22968c3337b9ecebce9fe6dd37c027b70c2f97f5 IN  Binance: BNB Token0 FTM0.00538355759
0x1f6e18def8b6da9a4ebd4ee93e7b83eeaabd1932b83fe3cab5558466aebb6206Transfer552332292023-02-07 1:26:4710 hrs 19 mins ago0xfb03af5a80a955c7734043dbcf649936d599980f IN  Binance: BNB Token0 FTM0.00654556
0xeb9c2af89f31deaa822027f3904862833c7337ed8ce84eb6b95f49a82d331603Approve552323222023-02-07 1:11:1210 hrs 35 mins ago0xc05f19926bec6e2c7648d93b1343aafffadae479 IN  Binance: BNB Token0 FTM0.002473696262
0x6f33a4cd4aae08f7f07242235b89022994152447d7ba6f281fa7ff9d9456ee6cSwapin552314042023-02-07 0:52:1410 hrs 54 mins ago0x4b3b4120d4d7975455d8c2894228789c91a247f8 IN  Binance: BNB Token0 FTM0.00685493426
0x333715ce58b6a967e98dcf04d0aa163309c6cba09c967d1494523436d4cde677Transfer552307722023-02-07 0:41:0411 hrs 5 mins ago0xef4d13f20ce11d987c8a4f95f9e138a9c816caa5 IN  Binance: BNB Token0 FTM0.003026527219
0x14629bf3c9820b37068fad46513a46a422aa3fe522be73cdf3c49e90803b78d0Transfer552305102023-02-07 0:36:2111 hrs 10 mins ago0xcbb368acb469bdf4e718a3d901cef027f0dca7c3 IN  Binance: BNB Token0 FTM0.003446379005
0xf03f245a64f2aa437dffc5da3246828f291738dff30984d0ab3a6c16165303f5Approve552255842023-02-06 23:02:1412 hrs 44 mins ago0xb2c314204349800f1b2e9e594b677f52e0e914da IN  Binance: BNB Token0 FTM0.00323966404
0x2e2c6300e051e715d64fe4932e46aa3fafbb209619324c28154c1ce06963ab25Swapout552243122023-02-06 22:35:2313 hrs 11 mins ago0xd567c3ee92e7eaf3a10e5e7b6a32a23bf5dbd255 IN  Binance: BNB Token0 FTM0.002296751333
0x27809a401b3486ddf51d22adb6b86efd0432af0f15f76952f7964a752da3cac3Swapout552213922023-02-06 21:38:2014 hrs 8 mins ago0x8f515edf2f98322ea27385f1cf88f40d18876d55 IN  Binance: BNB Token0 FTM0.002391584738
0x056c36a5d2d95f74d074a9caba666aa6e73693da41557443319843b35d63cf51Swapout552203112023-02-06 21:16:1314 hrs 30 mins ago0xb8c451c23e3b82c3e6d4b51aa5283d358be125f5 IN  Binance: BNB Token0 FTM0.004611033659
0x7c9fc3ecdc03cd638ed7c44bdd3c7d579f457a3287fbcf777cb71b33bc2c5337Approve552200822023-02-06 21:11:4614 hrs 34 mins ago0xdc28587b32a2908461384a73ee3911d2ab68825e IN  Binance: BNB Token0 FTM0.013843467
0xc912fb195a5e1b54ed85cfc7988e9f8a3571fad292430876586b4e3400b16d7cSwapin552199982023-02-06 21:10:0914 hrs 36 mins ago0x4b3b4120d4d7975455d8c2894228789c91a247f8 IN  Binance: BNB Token0 FTM0.004379052786
0xaea315cc46649a465f132926fa3903768ee35ca9d3cee9b3e518b58403ac84feSwapin552199232023-02-06 21:08:4114 hrs 37 mins ago0x4b3b4120d4d7975455d8c2894228789c91a247f8 IN  Binance: BNB Token0 FTM0.004241972532
0x34991672cee041247058fdbe0c49864cbce7267a99ad261b63ff12f911de789cSwapin552196292023-02-06 21:02:3714 hrs 44 mins ago0x4b3b4120d4d7975455d8c2894228789c91a247f8 IN  Binance: BNB Token0 FTM0.00420828766
0xfc186af79f67790585e7f1bee8e0569bdec4a31f98ec137e472eadcfeedc3b7eSwapin552193702023-02-06 20:57:2714 hrs 49 mins ago0x4b3b4120d4d7975455d8c2894228789c91a247f8 IN  Binance: BNB Token0 FTM0.00734723305
[ Download CSV Export 

OVERVIEW

As the native coin of Binance Chain, BNB has multiple use cases: fueling transactions on the Chain, paying for transaction fees on Binance Exchange, making in-store payments, and many more.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x2a7da7ec3c74425ea0eca59136b1e05d2239c2b2a29ce15ee3d84ee06f808b1858932942021-05-10 8:15:00638 days 3 hrs ago Multichain: Deployer 2  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV4ERC20

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-05-10
*/

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

/**
 *Submitted for verification at BscScan.com on 2021-04-30
*/

/**
 *Submitted for verification at BscScan.com on 2021-04-15
*/

/**
 *Submitted for verification at BscScan.com on 2021-04-13
*/

/**
 *Submitted for verification at BscScan.com on 2021-04-11
*/

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

pragma solidity 0.8.2;

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

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

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

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

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

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

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

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

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

library SafeERC20 {
    using Address for address;

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

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

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

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

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

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

    address public immutable underlying;

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

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

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

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

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


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

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

    address public pendingMinter;
    uint public delayMinter;

    address public pendingVault;
    uint public delayVault;

    uint public pendingDelay;
    uint public delayDelay;


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

    function Swapout(uint256 amount, 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 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);
    event LogAddAuth(address indexed auth, uint timestamp);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

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

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

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

        return true;
    }

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

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

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

        return true;
    }

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

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

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

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

Contract Security Audit

Contract ABI

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

60e06040526202a3006005553480156200001857600080fd5b5060405162002f7f38038062002f7f8339810160408190526200003b91620003c5565b8451620000509060009060208801906200023d565b508351620000669060019060208701906200023d565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b166080526001600160601b0319606083901b1660a0526001600160a01b038216156200013a57816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ed57600080fd5b505afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000128919062000464565b60ff168360ff16146200013a57600080fd5b6004805461ff001960ff19909116600117169055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90620001b29060009062000488565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c052506200057e945050505050565b8280546200024b906200052b565b90600052602060002090601f0160209004810192826200026f5760008555620002ba565b82601f106200028a57805160ff1916838001178555620002ba565b82800160010185558215620002ba579182015b82811115620002ba5782518255916020019190600101906200029d565b50620002c8929150620002cc565b5090565b5b80821115620002c85760008155600101620002cd565b80516001600160a01b0381168114620002fb57600080fd5b919050565b600082601f83011262000311578081fd5b81516001600160401b03808211156200032e576200032e62000568565b604051601f8301601f19908116603f0116810190828211818310171562000359576200035962000568565b8160405283815260209250868385880101111562000375578485fd5b8491505b8382101562000398578582018301518183018401529082019062000379565b83821115620003a957848385830101525b9695505050505050565b805160ff81168114620002fb57600080fd5b600080600080600060a08688031215620003dd578081fd5b85516001600160401b0380821115620003f4578283fd5b6200040289838a0162000300565b9650602088015191508082111562000418578283fd5b50620004278882890162000300565b9450506200043860408701620003b3565b92506200044860608701620002e3565b91506200045860808701620002e3565b90509295509295909350565b60006020828403121562000476578081fd5b6200048182620003b3565b9392505050565b8154600090819060028104600180831680620004a557607f831692505b6020808410821415620004c657634e487b7160e01b87526022600452602487fd5b818015620004dd5760018114620004ef576200051d565b60ff198616895284890196506200051d565b60008a815260209020885b86811015620005155781548b820152908501908301620004fa565b505084890196505b509498975050505050505050565b6002810460018216806200054057607f821691505b602082108114156200056257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160601c60c05161297e620006016000396000818161048c0152611dda015260008181610590015281816113520152818161139e0152818161141e015281816116450152818161185a015281816118e301528181611bb001528181611ccd0152818161209601526120c901526000610453015261297e6000f3fe608060405234801561001057600080fd5b506004361061033f5760003560e01c80637ecebe00116101b8578063bebbf4d011610104578063d93f2445116100a2578063f75c26641161007c578063f75c266414610774578063f954734e1461077c578063fbfa77cf1461078f578063fca3b5aa146107a25761033f565b8063d93f24451461072e578063dd62ed3e14610736578063ec126c77146107615761033f565b8063cae9ca51116100de578063cae9ca51146106ed578063cfbd488514610700578063d0e30db014610713578063d505accf1461071b5761033f565b8063bebbf4d0146106be578063c3081240146106d1578063c4b740f5146106da5761033f565b806395d89b4111610171578063a29dff721161014b578063a29dff721461066c578063a9059cbb14610675578063aa271e1a14610688578063b6b55f25146106ab5761033f565b806395d89b411461063c5780639dc29fac14610644578063a045442c146106575761033f565b80637ecebe00146105d257806381a37c18146105f25780638623ec7b1461060557806387689e28146106185780638da5cb5b1461062157806391c5df49146106295761033f565b80633ccfd60b1161029257806360e232a9116102305780636a42b8f81161020a5780636a42b8f81461056f5780636e553f65146105785780636f307dc31461058b57806370a08231146105b25761033f565b806360e232a914610536578063628d6cba146105495780636817031b1461055c5761033f565b80634ca8f0ed1161026c5780634ca8f0ed146104dc57806352113ba7146104e55780635f9b105d14610510578063605629d6146105235761033f565b80633ccfd60b146104ae5780634000aea0146104b657806340c10f19146104c95761033f565b806318160ddd116102ff5780632ebe3fbb116102d95780632ebe3fbb1461041457806330adf81f14610427578063313ce5671461044e5780633644e515146104875761033f565b806318160ddd146103e657806323b872dd146103ee5780632e1a7d4d146104015761033f565b806239d6ec14610344578062bf26f41461036a578062f714ce1461039157806306fdde03146103a4578063095ea7b3146103b95780630d707df8146103dc575b600080fd5b610357610352366004612443565b6107b5565b6040519081526020015b60405180910390f35b6103577f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61035761039f3660046125f5565b61080b565b6103ac61081f565b6040516103619190612709565b6103cc6103c736600461241a565b6108ad565b6040519015158152602001610361565b6103e4610907565b005b6103576109c3565b6103cc6103fc366004612376565b6109ca565b61035761040f3660046125c5565b610bb5565b6103e461042236600461232a565b610bca565b6103577f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104757f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610361565b6103577f000000000000000000000000000000000000000000000000000000000000000081565b610357610ca1565b6103cc6104c436600461247e565b610cc2565b6103cc6104d736600461241a565b610e1b565b610357600d5481565b600b546104f8906001600160a01b031681565b6040516001600160a01b039091168152602001610361565b6103cc61051e36600461232a565b610e5d565b6103cc6105313660046123b1565b610f31565b6103cc61054436600461232a565b611141565b6103cc6105573660046125f5565b611215565b6103e461056a36600461232a565b6112dd565b61035760055481565b6103576105863660046125f5565b611343565b6104f87f000000000000000000000000000000000000000000000000000000000000000081565b6103576105c036600461232a565b60026020526000908152604090205481565b6103576105e036600461232a565b600f6020526000908152604090205481565b610357610600366004612500565b611384565b6104f86106133660046125c5565b61145e565b610357600c5481565b6104f8611488565b6009546104f8906001600160a01b031681565b6103ac611492565b6103cc61065236600461241a565b61149f565b61065f6114fe565b60405161036191906126bc565b610357600e5481565b6103cc61068336600461241a565b611560565b6103cc61069636600461232a565b60066020526000908152604090205460ff1681565b6103576106b93660046125c5565b611636565b6103576106cc3660046125f5565b611677565b610357600a5481565b6103e46106e8366004612569565b6116b1565b6103cc6106fb36600461247e565b611703565b6103e461070e36600461232a565b6117df565b610357611838565b6103e46107293660046123b1565b61191b565b6103e4611a89565b610357610744366004612344565b601060209081526000928352604080842090915290825290205481565b6103cc61076f3660046125a1565b611af4565b6104f8611b69565b61035761078a366004612500565b611b96565b6008546104f8906001600160a01b031681565b6103e46107b036600461232a565b611c4e565b60006107bf611b69565b6001600160a01b0316336001600160a01b0316146107f85760405162461bcd60e51b81526004016107ef9061273c565b60405180910390fd5b610803848484611cb4565b949350505050565b6000610818338484611cb4565b9392505050565b6000805461082c9061288b565b80601f01602080910402602001604051908101604052809291908181526020018280546108589061288b565b80156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612929833981519152906108f69086815260200190565b60405180910390a350600192915050565b61090f611b69565b6001600160a01b0316336001600160a01b03161461093f5760405162461bcd60e51b81526004016107ef9061273c565b600a5442101561094e57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b0383161515806109ec57506001600160a01b0383163014155b6109f557600080fd5b6001600160a01b0384163314610aef576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610aed5782811015610a945760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016107ef565b6000610aa08483612848565b6001600160a01b03871660008181526010602090815260408083203380855290835292819020859055518481529394509092600080516020612929833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610b285760405162461bcd60e51b81526004016107ef906127aa565b610b328382612848565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610b68908490612830565b92505081905550836001600160a01b0316856001600160a01b031660008051602061290983398151915285604051610ba291815260200190565b60405180910390a3506001949350505050565b6000610bc2338333611cb4565b90505b919050565b610bd2611b69565b6001600160a01b0316336001600160a01b031614610c025760405162461bcd60e51b81526004016107ef9061273c565b60045460ff16610c1157600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610cbd9181611cb4565b905090565b60006001600160a01b038516151580610ce457506001600160a01b0385163014155b610ced57600080fd5b3360009081526002602052604090205484811015610d1d5760405162461bcd60e51b81526004016107ef906127aa565b610d278582612848565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d5a908490612830565b90915550506040518581526001600160a01b0387169033906000805160206129098339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610dbf903390899089908990600401612674565b602060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190612585565b9695505050505050565b3360009081526006602052604081205460ff16610e4a5760405162461bcd60e51b81526004016107ef906127f9565b610e548383611cfc565b50600192915050565b6000610e67611b69565b6001600160a01b0316336001600160a01b031614610e975760405162461bcd60e51b81526004016107ef9061273c565b6001600160a01b038216610ebd5760405162461bcd60e51b81526004016107ef90612773565b600b80546001600160a01b0319166001600160a01b038416179055600554610ee59042612830565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f835760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610fd0836128c6565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012090506110318982878787611dca565b8061104457506110448982878787611eba565b61104d57600080fd5b6001600160a01b03881615158061106d57506001600160a01b0388163014155b61107657600080fd5b6001600160a01b038916600090815260026020526040902054878110156110af5760405162461bcd60e51b81526004016107ef906127aa565b6110b98882612848565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110ef908490612830565b92505081905550886001600160a01b03168a6001600160a01b03166000805160206129098339815191528a60405161112991815260200190565b60405180910390a35060019998505050505050505050565b600061114b611b69565b6001600160a01b0316336001600160a01b03161461117b5760405162461bcd60e51b81526004016107ef9061273c565b6001600160a01b0382166111a15760405162461bcd60e51b81526004016107ef90612773565b600b80546001600160a01b0319166001600160a01b0384161790556005546111c99042612830565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b600454600090610100900460ff16156112705760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c7941757468000000000000000060448201526064016107ef565b6001600160a01b0382166112965760405162461bcd60e51b81526004016107ef90612773565b6112a03384611f4f565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016108f6565b6112e5611b69565b6001600160a01b0316336001600160a01b0316146113155760405162461bcd60e51b81526004016107ef9061273c565b600b80546001600160a01b0319166001600160a01b03831617905560055461133d9042612830565b600c5550565b600061137a6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612021565b6108188383612092565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906113df908b9030908c908c908c908c908c90600401612633565b600060405180830381600087803b1580156113f957600080fd5b505af115801561140d573d6000803e3d6000fd5b506114489250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a612021565b6114528783612092565b98975050505050505050565b6007818154811061146e57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610cbd611b69565b6001805461082c9061288b565b3360009081526006602052604081205460ff166114ce5760405162461bcd60e51b81526004016107ef906127f9565b6001600160a01b0383166114f45760405162461bcd60e51b81526004016107ef90612773565b610e548383611f4f565b6060600780548060200260200160405190810160405280929190818152602001828054801561155657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611538575b5050505050905090565b60006001600160a01b03831615158061158257506001600160a01b0383163014155b61158b57600080fd5b33600090815260026020526040902054828110156115bb5760405162461bcd60e51b81526004016107ef906127aa565b6115c58382612848565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906115f8908490612830565b90915550506040518381526001600160a01b038516903390600080516020612909833981519152906020015b60405180910390a35060019392505050565b600061166d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612021565b610bc28233612092565b6000611681611b69565b6001600160a01b0316336001600160a01b03161461137a5760405162461bcd60e51b81526004016107ef9061273c565b6116b9611b69565b6001600160a01b0316336001600160a01b0316146116e95760405162461bcd60e51b81526004016107ef9061273c565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b038916808552925280832087905551919290916000805160206129298339815191529061174c9088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f90611784903390889088908890600401612674565b602060405180830381600087803b15801561179e57600080fd5b505af11580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190612585565b95945050505050565b6117e7611b69565b6001600160a01b0316336001600160a01b0316146118175760405162461bcd60e51b81526004016107ef9061273c565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561189c57600080fd5b505afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d491906125dd565b905061190b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612021565b6119158133612092565b91505090565b8342111561196b5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866119b8836128c6565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611a198882868686611dca565b80611a2c5750611a2c8882868686611eba565b611a3557600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a90559051898152600080516020612929833981519152910160405180910390a35050505050505050565b611a91611b69565b6001600160a01b0316336001600160a01b031614611ac15760405162461bcd60e51b81526004016107ef9061273c565b600c54421015611ad057600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff16611b235760405162461bcd60e51b81526004016107ef906127f9565b611b2d8383611cfc565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161162491815260200190565b6000600c544210611b865750600b546001600160a01b03166109c7565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d690611bf1908b9030908c908c908c908c908c90600401612633565b602060405180830381600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c439190612585565b506114528783612092565b611c56611b69565b6001600160a01b0316336001600160a01b031614611c865760405162461bcd60e51b81526004016107ef9061273c565b600980546001600160a01b0319166001600160a01b038316179055600554611cae9042612830565b600a5550565b6000611cc08484611f4f565b611cf46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838561210f565b509092915050565b6001600160a01b038216611d525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060036000828254611d649190612830565b90915550506001600160a01b03821660009081526002602052604081208054839290611d91908490612830565b90915550506040518181526001600160a01b03831690600090600080516020612909833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0000000000000000000000000000000000000000000000000000000000000000602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611e79573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906114525750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611f14866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611e57565b6001600160a01b038216611faf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ef565b6001600160a01b03821660009081526002602052604081208054839290611fd7908490612848565b925050819055508060036000828254611ff09190612848565b90915550506040518181526000906001600160a01b0384169060008051602061290983398151915290602001611dbe565b6040516001600160a01b038085166024830152831660448201526064810182905261208c9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612144565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316158015906120f557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b6120fe57600080fd5b6121088284611cfc565b5090919050565b6040516001600160a01b03831660248201526044810182905261213f90849063a9059cbb60e01b90606401612055565b505050565b612156826001600160a01b03166122cb565b6121a25760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016107ef565b600080836001600160a01b0316836040516121bd9190612617565b6000604051808303816000865af19150503d80600081146121fa576040519150601f19603f3d011682016040523d82523d6000602084013e6121ff565b606091505b5091509150816122515760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016107ef565b80511561208c578080602001905181019061226c9190612585565b61208c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107ef565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906108035750141592915050565b80356001600160a01b0381168114610bc557600080fd5b803560ff81168114610bc557600080fd5b60006020828403121561233b578081fd5b61081882612302565b60008060408385031215612356578081fd5b61235f83612302565b915061236d60208401612302565b90509250929050565b60008060006060848603121561238a578081fd5b61239384612302565b92506123a160208501612302565b9150604084013590509250925092565b600080600080600080600060e0888a0312156123cb578283fd5b6123d488612302565b96506123e260208901612302565b955060408801359450606088013593506123fe60808901612319565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561242c578182fd5b61243583612302565b946020939093013593505050565b600080600060608486031215612457578283fd5b61246084612302565b92506020840135915061247560408501612302565b90509250925092565b60008060008060608587031215612493578384fd5b61249c85612302565b935060208501359250604085013567ffffffffffffffff808211156124bf578384fd5b818701915087601f8301126124d2578384fd5b8135818111156124e0578485fd5b8860208285010111156124f1578485fd5b95989497505060200194505050565b600080600080600080600060e0888a03121561251a578283fd5b61252388612302565b9650602088013595506040880135945061253f60608901612319565b93506080880135925060a0880135915061255b60c08901612302565b905092959891949750929550565b60006020828403121561257a578081fd5b8135610818816128f7565b600060208284031215612596578081fd5b8151610818816128f7565b6000806000606084860312156125b5578283fd5b833592506123a160208501612302565b6000602082840312156125d6578081fd5b5035919050565b6000602082840312156125ee578081fd5b5051919050565b60008060408385031215612607578182fd5b8235915061236d60208401612302565b6000825161262981846020870161285f565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156126fd5783516001600160a01b0316835292840192918401916001016126d8565b50909695505050505050565b600060208252825180602084015261272881604085016020870161285f565b601f01601f19169190910160400192915050565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b60008219821115612843576128436128e1565b500190565b60008282101561285a5761285a6128e1565b500390565b60005b8381101561287a578181015183820152602001612862565b8381111561208c5750506000910152565b60028104600182168061289f57607f821691505b602082108114156128c057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128da576128da6128e1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b801515811461290557600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212209e817beecb84d00bcd9dc2d88cbed72ee2b5da3aa984b4de0006c7cd9256da5964736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000742696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000742696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Binance
Arg [1] : _symbol (string): BNB
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] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 42696e616e636500000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 424e420000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

6078:19150:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15202:149;;;;;;:::i;:::-;;:::i;:::-;;;9504:25:1;;;9492:2;9477:18;15202:149:0;;;;;;;;6451:136;;6495:92;6451:136;;15068:126;;;;;;:::i;:::-;;:::i;6161:18::-;;;:::i;:::-;;;;;;;:::i;16925:265::-;;;;;;:::i;:::-;;:::i;:::-;;;9331:14:1;;9324:22;9306:41;;9294:2;9279:18;16925:265:0;9261:92:1;8847:179:0;;;:::i;:::-;;13037:102;;;:::i;23148:927::-;;;;;;:::i;:::-;;:::i;14938:122::-;;;;;;:::i;:::-;;:::i;8133:272::-;;;;;;:::i;:::-;;:::i;6307:137::-;;6349:95;6307:137;;6213:41;;;;;;;;15778:4:1;15766:17;;;15748:36;;15736:2;15721:18;6213:41:0;15703:87:1;6594:41:0;;;;;14804:126;;;:::i;24702:523::-;;;;;;:::i;:::-;;:::i;9966:133::-;;;;;;:::i;:::-;;:::i;7472:24::-;;;;;;7407:27;;;;;-1:-1:-1;;;;;7407:27:0;;;;;;-1:-1:-1;;;;;6555:32:1;;;6537:51;;6525:2;6510:18;7407:27:0;6492:102:1;9633:325:0;;;;;;:::i;:::-;;:::i;19523:938::-;;;;;;:::i;:::-;;:::i;9304:321::-;;;;;;:::i;:::-;;:::i;10539:328::-;;;;;;:::i;:::-;;:::i;8562:140::-;;;;;;:::i;:::-;;:::i;7082:29::-;;;;;;14256:193;;;;;;:::i;:::-;;:::i;6263:35::-;;;;;6715:54;;;;;;:::i;:::-;;;;;;;;;;;;;;11139:51;;;;;;:::i;:::-;;;;;;;;;;;;;;13147:349;;;;;;:::i;:::-;;:::i;7229:24::-;;;;;;:::i;:::-;;:::i;7441:22::-;;;;;;7770:78;;;:::i;7340:28::-;;;;;-1:-1:-1;;;;;7340:28:0;;;6186:20;;;:::i;10107:207::-;;;;;;:::i;:::-;;:::i;9195:99::-;;;:::i;:::-;;;;;;;:::i;7503:22::-;;;;;;21821:438;;;;;;:::i;:::-;;:::i;7182:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14059:189;;;;;;:::i;:::-;;:::i;14457:127::-;;;;;;:::i;:::-;;:::i;7375:23::-;;;;;;8031:94;;;;;;:::i;:::-;;:::i;17611:356::-;;;;;;:::i;:::-;;:::i;9089:98::-;;;;;;:::i;:::-;;:::i;13805:246::-;;;:::i;18800:715::-;;;;;;:::i;:::-;;:::i;8710:129::-;;;:::i;11360:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10322:209;;;;;;:::i;:::-;;:::i;7856:167::-;;;:::i;13504:293::-;;;;;;:::i;:::-;;:::i;7311:20::-;;;;;-1:-1:-1;;;;;7311:20:0;;;8413:141;;;;;;:::i;:::-;;:::i;15202:149::-;15292:4;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;;;;;;;;;15316:27:::1;15326:4;15332:6;15340:2;15316:9;:27::i;:::-;15309:34:::0;15202:149;-1:-1:-1;;;;15202:149:0:o;15068:126::-;15129:4;15153:33;15163:10;15175:6;15183:2;15153:9;:33::i;:::-;15146:40;15068:126;-1:-1:-1;;;15068:126:0:o;6161:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16925:265::-;17078:10;17001:4;17068:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17068:30:0;;;;;;;;;;:38;;;17122:36;17001:4;;17068:30;;-1:-1:-1;;;;;;;;;;;17122:36:0;;;17101:5;9504:25:1;;9492:2;9477:18;;9459:76;17122:36:0;;;;;;;;-1:-1:-1;17178:4:0;16925:265;;;;:::o;8847:179::-;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;8927:11:::1;;8908:15;:30;;8900:39;;;::::0;::::1;;8959:13;::::0;;-1:-1:-1;;;;;8959:13:0;;::::1;8950:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;8950:30:0::1;8976:4;8950:30:::0;;::::1;::::0;;;9004:13;;8991:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8991:27:0::1;9004:13:::0;;;::::1;8991:27:::0;;;::::1;::::0;;8847:179::o;13037:102::-;13119:12;;13037:102;;:::o;23148:927::-;23238:4;-1:-1:-1;;;;;23263:16:0;;;;;:39;;-1:-1:-1;;;;;;23283:19:0;;23297:4;23283:19;;23263:39;23255:48;;;;;;-1:-1:-1;;;;;23318:18:0;;23326:10;23318:18;23314:477;;-1:-1:-1;;;;;23432:15:0;;23414;23432;;;:9;:15;;;;;;;;23448:10;23432:27;;;;;;;;-1:-1:-1;;23478:28:0;;23474:306;;23546:5;23535:7;:16;;23527:70;;;;-1:-1:-1;;;23527:70:0;;14085:2:1;23527:70:0;;;14067:21:1;14124:2;14104:18;;;14097:30;14163:34;14143:18;;;14136:62;-1:-1:-1;;;14214:18:1;;;14207:39;14263:19;;23527:70:0;14057:231:1;23527:70:0;23616:15;23634;23644:5;23634:7;:15;:::i;:::-;-1:-1:-1;;;;;23668:15:0;;;;;;:9;:15;;;;;;;;23684:10;23668:27;;;;;;;;;;:37;;;23729:35;9504:25:1;;;23668:37:0;;-1:-1:-1;23684:10:0;;-1:-1:-1;;;;;;;;;;;23729:35:0;9477:18:1;23729:35:0;;;;;;;23474:306;;23314:477;;-1:-1:-1;;;;;23821:15:0;;23803;23821;;;:9;:15;;;;;;23855:16;;;;23847:76;;;;-1:-1:-1;;;23847:76:0;;;;;;;:::i;:::-;23954:15;23964:5;23954:7;:15;:::i;:::-;-1:-1:-1;;;;;23936:15:0;;;;;;;:9;:15;;;;;;:33;;;;23980:13;;;;;;;;:22;;23997:5;;23936:15;23980:22;;23997:5;;23980:22;:::i;:::-;;;;;;;;24033:2;-1:-1:-1;;;;;24018:25:0;24027:4;-1:-1:-1;;;;;24018:25:0;-1:-1:-1;;;;;;;;;;;24037:5:0;24018:25;;;;9504::1;;9492:2;9477:18;;9459:76;24018:25:0;;;;;;;;-1:-1:-1;24063:4:0;;23148:927;-1:-1:-1;;;;23148:927:0:o;14938:122::-;14987:4;15011:41;15021:10;15033:6;15041:10;15011:9;:41::i;:::-;15004:48;;14938:122;;;;:::o;8133:272::-;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;8206:5:::1;::::0;::::1;;8198:14;;;::::0;::::1;;8223:5;:14:::0;;-1:-1:-1;;;;;8223:14:0;;::::1;-1:-1:-1::0;;;;;;8223:14:0;;::::1;::::0;::::1;::::0;;;8248:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;8223:5:::1;8280:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;8280:23:0;;::::1;8223:14:::0;8280:23;;::::1;::::0;;;8314:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;8358:15:::1;8345:10;:28:::0;8384:5:::1;:13:::0;;;;::::1;::::0;;8133:272::o;14804:126::-;14876:10;14842:4;14888:21;;;:9;:21;;;;;;14842:4;;14866:56;;14876:10;14866:9;:56::i;:::-;14859:63;;14804:126;:::o;24702:523::-;24799:4;-1:-1:-1;;;;;24824:16:0;;;;;:39;;-1:-1:-1;;;;;;24844:19:0;;24858:4;24844:19;;24824:39;24816:48;;;;;;24905:10;24877:15;24895:21;;;:9;:21;;;;;;24935:16;;;;24927:76;;;;-1:-1:-1;;;24927:76:0;;;;;;;:::i;:::-;25040:15;25050:5;25040:7;:15;:::i;:::-;25026:10;25016:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;25066:13:0;;;;;;;:22;;25083:5;;25016:21;25066:22;;25083:5;;25066:22;:::i;:::-;;;;-1:-1:-1;;25104:31:0;;9504:25:1;;;-1:-1:-1;;;;;25104:31:0;;;25113:10;;-1:-1:-1;;;;;;;;;;;25104:31:0;9492:2:1;9477:18;25104:31:0;;;;;;;25155:62;;-1:-1:-1;;;25155:62:0;;-1:-1:-1;;;;;25155:37:0;;;;;:62;;25193:10;;25205:5;;25212:4;;;;25155:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25148:69;24702:523;-1:-1:-1;;;;;;24702:523:0:o;9966:133::-;7584:10;10035:4;7575:20;;;:8;:20;;;;;;;;7567:58;;;;-1:-1:-1;;;7567:58:0;;;;;;;:::i;:::-;10052:17:::1;10058:2;10062:6;10052:5;:17::i;:::-;-1:-1:-1::0;10087:4:0::1;9966:133:::0;;;;:::o;9633:325::-;9701:4;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9726:22:0;::::1;9718:63;;;;-1:-1:-1::0;;;9718:63:0::1;;;;;;;:::i;:::-;9792:12;:23:::0;;-1:-1:-1;;;;;;9792:23:0::1;-1:-1:-1::0;;;;;9792:23:0;::::1;;::::0;;9857:5:::1;::::0;9839:23:::1;::::0;:15:::1;:23;:::i;:::-;9826:10;:36:::0;;;9903:12:::1;::::0;9896:5:::1;::::0;9878:50:::1;::::0;-1:-1:-1;;;;;9903:12:0;;::::1;::::0;9896:5;;::::1;::::0;9878:50:::1;::::0;9903:12:::1;::::0;9878:50:::1;-1:-1:-1::0;9946:4:0::1;9633:325:::0;;;:::o;19523:938::-;19670:4;19714:8;19695:15;:27;;19687:70;;;;-1:-1:-1;;;19687:70:0;;12617:2:1;19687:70:0;;;12599:21:1;12656:2;12636:18;;;12629:30;12695:32;12675:18;;;12668:60;12745:18;;19687:70:0;12589:180:1;19687:70:0;-1:-1:-1;;;;;19950:14:0;;19770:18;19950:14;;;:6;:14;;;;;:16;;6495:92;;19880:6;;19905:2;;19926:5;;19950:16;19770:18;19950:16;;;:::i;:::-;;;;-1:-1:-1;19815:179:0;;;;;;9827:25:1;;;;-1:-1:-1;;;;;9926:15:1;;;9906:18;;;9899:43;9978:15;;;;9958:18;;;9951:43;10010:18;;;10003:34;10053:19;;;10046:35;10097:19;;;10090:35;;;9799:19;;19815:179:0;;;;;;;;;;;;19791:204;;;;;;19770:225;;20016:41;20029:6;20037:10;20049:1;20052;20055;20016:12;:41::i;:::-;:92;;;;20061:47;20080:6;20088:10;20100:1;20103;20106;20061:18;:47::i;:::-;20008:101;;;;;;-1:-1:-1;;;;;20130:16:0;;;;;:39;;-1:-1:-1;;;;;;20150:19:0;;20164:4;20150:19;;20130:39;20122:48;;;;;;-1:-1:-1;;;;;20201:17:0;;20183:15;20201:17;;;:9;:17;;;;;;20237:16;;;;20229:76;;;;-1:-1:-1;;;20229:76:0;;;;;;;:::i;:::-;20338:15;20348:5;20338:7;:15;:::i;:::-;-1:-1:-1;;;;;20318:17:0;;;;;;;:9;:17;;;;;;:35;;;;20364:13;;;;;;;;:22;;20381:5;;20318:17;20364:22;;20381:5;;20364:22;:::i;:::-;;;;;;;;20419:2;-1:-1:-1;;;;;20402:27:0;20411:6;-1:-1:-1;;;;;20402:27:0;-1:-1:-1;;;;;;;;;;;20423:5:0;20402:27;;;;9504:25:1;;9492:2;9477:18;;9459:76;20402:27:0;;;;;;;;-1:-1:-1;20449:4:0;;19523:938;-1:-1:-1;;;;;;;;;19523:938:0:o;9304:321::-;9371:4;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9396:22:0;::::1;9388:63;;;;-1:-1:-1::0;;;9388:63:0::1;;;;;;;:::i;:::-;9462:12;:23:::0;;-1:-1:-1;;;;;;9462:23:0::1;-1:-1:-1::0;;;;;9462:23:0;::::1;;::::0;;9527:5:::1;::::0;9509:23:::1;::::0;:15:::1;:23;:::i;:::-;9496:10;:36:::0;;;9570:12:::1;::::0;9563:5:::1;::::0;9548:47:::1;::::0;-1:-1:-1;;;;;9570:12:0;;::::1;::::0;9563:5;;::::1;::::0;9548:47:::1;::::0;9570:12:::1;::::0;9548:47:::1;-1:-1:-1::0;9613:4:0::1;9304:321:::0;;;:::o;10539:328::-;10632:10;;10606:4;;10632:10;;;;;10631:11;10623:48;;;;-1:-1:-1;;;10623:48:0;;12976:2:1;10623:48:0;;;12958:21:1;13015:2;12995:18;;;12988:30;13054:26;13034:18;;;13027:54;13098:18;;10623:48:0;12948:174:1;10623:48:0;-1:-1:-1;;;;;10690:22:0;;10682:63;;;;-1:-1:-1;;;10682:63:0;;;;;;;:::i;:::-;10756:25;10762:10;10774:6;10756:5;:25::i;:::-;10797:40;;9504:25:1;;;-1:-1:-1;;;;;10797:40:0;;;10808:10;;10797:40;;9492:2:1;9477:18;10797:40:0;9459:76:1;8562:140:0;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;8626:12:::1;:21:::0;;-1:-1:-1;;;;;;8626:21:0::1;-1:-1:-1::0;;;;;8626:21:0;::::1;;::::0;;8689:5:::1;::::0;8671:23:::1;::::0;:15:::1;:23;:::i;:::-;8658:10;:36:::0;-1:-1:-1;8562:140:0:o;14256:193::-;14316:4;14333:70;-1:-1:-1;;;;;14340:10:0;14333:35;14369:10;14389:4;14396:6;14333:35;:70::i;:::-;14421:20;14430:6;14438:2;14421:8;:20::i;13147:349::-;13301:74;;-1:-1:-1;;;13301:74:0;;13284:4;;-1:-1:-1;;;;;13308:10:0;13301:25;;;;:74;;13327:6;;13343:4;;13350:5;;13357:8;;13367:1;;13370;;13373;;13301:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13386:65:0;;-1:-1:-1;;;;;;;13393:10:0;13386:35;;-1:-1:-1;13422:6:0;13438:4;13445:5;13386:35;:65::i;:::-;13469:19;13478:5;13485:2;13469:8;:19::i;:::-;13462:26;13147:349;-1:-1:-1;;;;;;;;13147:349:0:o;7229:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7229:24:0;;-1:-1:-1;7229:24:0;:::o;7770:78::-;7808:7;7835:5;:3;:5::i;6186:20::-;;;;;;;:::i;10107:207::-;7584:10;10178:4;7575:20;;;:8;:20;;;;;;;;7567:58;;;;-1:-1:-1;;;7567:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10203:18:0;::::1;10195:59;;;;-1:-1:-1::0;;;10195:59:0::1;;;;;;;:::i;:::-;10265:19;10271:4;10277:6;10265:5;:19::i;9195:99::-:0;9243:16;9279:7;9272:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9272:14:0;;;;;;;;;;;;;;;;;;;;;;;9195:99;:::o;21821:438::-;21893:4;-1:-1:-1;;;;;21918:16:0;;;;;:39;;-1:-1:-1;;;;;;21938:19:0;;21952:4;21938:19;;21918:39;21910:48;;;;;;21997:10;21969:15;21987:21;;;:9;:21;;;;;;22027:16;;;;22019:76;;;;-1:-1:-1;;;22019:76:0;;;;;;;:::i;:::-;22132:15;22142:5;22132:7;:15;:::i;:::-;22118:10;22108:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;22158:13:0;;;;;;;:22;;22175:5;;22108:21;22158:22;;22175:5;;22158:22;:::i;:::-;;;;-1:-1:-1;;22196:31:0;;9504:25:1;;;-1:-1:-1;;;;;22196:31:0;;;22205:10;;-1:-1:-1;;;;;;;;;;;22196:31:0;9492:2:1;9477:18;22196:31:0;;;;;;;;-1:-1:-1;22247:4:0;;21821:438;-1:-1:-1;;;21821:438:0:o;14059:189::-;14107:4;14124:70;-1:-1:-1;;;;;14131:10:0;14124:35;14160:10;14180:4;14187:6;14124:35;:70::i;:::-;14212:28;14221:6;14229:10;14212:8;:28::i;14457:127::-;14532:4;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;8031:94::-;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;8097:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;8097:20:0;;::::1;::::0;;;::::1;::::0;;8031:94::o;17611:356::-;17792:10;17715:4;17782:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17782:30:0;;;;;;;;;;:38;;;17836:36;17715:4;;17782:30;;-1:-1:-1;;;;;;;;;;;17836:36:0;;;17815:5;9504:25:1;;9492:2;9477:18;;9459:76;17836:36:0;;;;;;;;17892:67;;-1:-1:-1;;;17892:67:0;;-1:-1:-1;;;;;17892:42:0;;;;;:67;;17935:10;;17947:5;;17954:4;;;;17892:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17885:74;17611:356;-1:-1:-1;;;;;17611:356:0:o;9089:98::-;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9156:15:0::1;9174:5;9156:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;9156:23:0::1;::::0;;9089:98::o;13805:246::-;13874:40;;-1:-1:-1;;;13874:40:0;;13903:10;13874:40;;;6537:51:1;13842:4:0;;;;-1:-1:-1;;;;;13881:10:0;13874:28;;;;6510:18:1;;13874:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13859:55;-1:-1:-1;13925:71:0;-1:-1:-1;;;;;13932:10:0;13925:35;13961:10;13981:4;13859:55;13925:35;:71::i;:::-;14014:29;14023:7;14032:10;14014:8;:29::i;:::-;14007:36;;;13805:246;:::o;18800:715::-;18969:8;18950:15;:27;;18942:70;;;;-1:-1:-1;;;18942:70:0;;12617:2:1;18942:70:0;;;12599:21:1;12656:2;12636:18;;;12629:30;12695:32;12675:18;;;12668:60;12745:18;;18942:70:0;12589:180:1;18942:70:0;-1:-1:-1;;;;;19208:14:0;;19025:18;19208:14;;;:6;:14;;;;;:16;;6349:95;;19133:6;;19158:7;;19184:5;;19208:16;19025:18;19208:16;;;:::i;:::-;;;;-1:-1:-1;19070:182:0;;;;;;9827:25:1;;;;-1:-1:-1;;;;;9926:15:1;;;9906:18;;;9899:43;9978:15;;;;9958:18;;;9951:43;10010:18;;;10003:34;10053:19;;;10046:35;10097:19;;;10090:35;;;9799:19;;19070:182:0;;;;;;;;;;;;19046:207;;;;;;19025:228;;19274:41;19287:6;19295:10;19307:1;19310;19313;19274:12;:41::i;:::-;:92;;;;19319:47;19338:6;19346:10;19358:1;19361;19364;19319:18;:47::i;:::-;19266:101;;;;;;-1:-1:-1;;;;;19425:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;19475:32;;9504:25:1;;;-1:-1:-1;;;;;;;;;;;19475:32:0;9477:18:1;19475:32:0;;;;;;;18800:715;;;;;;;;:::o;8710:129::-;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;8789:10:::1;;8770:15;:29;;8762:38;;;::::0;::::1;;8819:12;::::0;8811:5:::1;:20:::0;;-1:-1:-1;;;;;;8811:20:0::1;-1:-1:-1::0;;;;;8819:12:0;;::::1;8811:20:::0;;;::::1;::::0;;8710:129::o;10322:209::-;7584:10;10412:4;7575:20;;;:8;:20;;;;;;;;7567:58;;;;-1:-1:-1;;;7567:58:0;;;;;;;:::i;:::-;10429:22:::1;10435:7;10444:6;10429:5;:22::i;:::-;10485:7;-1:-1:-1::0;;;;;10467:34:0::1;10477:6;10467:34;10494:6;10467:34;;;;9504:25:1::0;;9492:2;9477:18;;9459:76;7856:167:0;7892:7;7935:10;;7916:15;:29;7912:81;;-1:-1:-1;7969:12:0;;-1:-1:-1;;;;;7969:12:0;7962:19;;7912:81;-1:-1:-1;8010:5:0;;-1:-1:-1;;;;;8010:5:0;7856:167;:::o;13504:293::-;13666:86;;-1:-1:-1;;;13666:86:0;;13649:4;;-1:-1:-1;;;;;13673:10:0;13666:37;;;;:86;;13704:6;;13720:4;;13727:5;;13734:8;;13744:1;;13747;;13750;;13666:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13770:19;13779:5;13786:2;13770:8;:19::i;8413:141::-;7707:5;:3;:5::i;:::-;-1:-1:-1;;;;;7693:19:0;:10;-1:-1:-1;;;;;7693:19:0;;7685:57;;;;-1:-1:-1;;;7685:57:0;;;;;;;:::i;:::-;8477:13:::1;:21:::0;;-1:-1:-1;;;;;;8477:21:0::1;-1:-1:-1::0;;;;;8477:21:0;::::1;;::::0;;8541:5:::1;::::0;8523:23:::1;::::0;:15:::1;:23;:::i;:::-;8509:11;:37:::0;-1:-1:-1;8413:141:0:o;15359:198::-;15435:4;15452:19;15458:4;15464:6;15452:5;:19::i;:::-;15482:43;-1:-1:-1;;;;;15489:10:0;15482:31;15514:2;15518:6;15482:31;:43::i;:::-;-1:-1:-1;15543:6:0;;15359:198;-1:-1:-1;;15359:198:0:o;15838:268::-;-1:-1:-1;;;;;15914:21:0;;15906:65;;;;-1:-1:-1;;;15906:65:0;;15266:2:1;15906:65:0;;;15248:21:1;15305:2;15285:18;;;15278:30;15344:33;15324:18;;;15317:61;15395:18;;15906:65:0;15238:181:1;15906:65:0;16000:6;15984:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16017:18:0;;;;;;:9;:18;;;;;:28;;16039:6;;16017:18;:28;;16039:6;;16017:28;:::i;:::-;;;;-1:-1:-1;;16061:37:0;;9504:25:1;;;-1:-1:-1;;;;;16061:37:0;;;16078:1;;-1:-1:-1;;;;;;;;;;;16061:37:0;9492:2:1;9477:18;16061:37:0;;;;;;;;15838:268;;:::o;20469:399::-;20637:110;;-1:-1:-1;;;20637:110:0;;;6252:27:1;20701:16:0;6295:11:1;;;6288:27;6331:12;;;6324:28;;;20581:4:0;;;;6368:12:1;;20637:110:0;;;-1:-1:-1;;20637:110:0;;;;;;;;;20613:135;;20637:110;20613:135;;;;20759:14;20776:24;;;;;;;;;10363:25:1;;;10436:4;10424:17;;10404:18;;;10397:45;;;;10458:18;;;10451:34;;;10501:18;;;10494:34;;;20613:135:0;;-1:-1:-1;20759:14:0;20776:24;;10335:19:1;;20776:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20776:24:0;;-1:-1:-1;;20776:24:0;;;-1:-1:-1;;;;;;;20819:20:0;;;;;;:40;;;20853:6;-1:-1:-1;;;;;20843:16:0;:6;-1:-1:-1;;;;;20843:16:0;;20811:49;20469:399;-1:-1:-1;;;;;;;;20469:399:0:o;20876:290::-;20994:4;21011:12;21026:20;21035:10;21332:58;;5851:66:1;21332:58:0;;;5839:79:1;5934:12;;;5927:28;;;21295:7:0;;5971:12:1;;21332:58:0;;;;;;;;;;;;21322:69;;;;;;21315:76;;21240:159;;;;21026:20;21074:24;;;21057:14;21074:24;;;;;;;;;10363:25:1;;;10436:4;10424:17;;10404:18;;;10397:45;;;;10458:18;;;10451:34;;;10501:18;;;10494:34;;;21011:35:0;;-1:-1:-1;21057:14:0;21074:24;;10335:19:1;;21074:24:0;10317:217:1;16438:270:0;-1:-1:-1;;;;;16514:21:0;;16506:67;;;;-1:-1:-1;;;16506:67:0;;13683:2:1;16506:67:0;;;13665:21:1;13722:2;13702:18;;;13695:30;13761:34;13741:18;;;13734:62;-1:-1:-1;;;13812:18:1;;;13805:31;13853:19;;16506:67:0;13655:223:1;16506:67:0;-1:-1:-1;;;;;16586:18:0;;;;;;:9;:18;;;;;:28;;16608:6;;16586:18;:28;;16608:6;;16586:28;:::i;:::-;;;;;;;;16641:6;16625:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;16663:37:0;;9504:25:1;;;16689:1:0;;-1:-1:-1;;;;;16663:37:0;;;-1:-1:-1;;;;;;;;;;;16663:37:0;9492:2:1;9477:18;16663:37:0;9459:76:1;4914:201:0;5038:68;;-1:-1:-1;;;;;6857:15:1;;;5038:68:0;;;6839:34:1;6909:15;;6889:18;;;6882:43;6941:18;;;6934:34;;;5012:95:0;;5031:5;;-1:-1:-1;;;5061:27:0;6774:18:1;;5038:68:0;;;;-1:-1:-1;;5038:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5038:68:0;-1:-1:-1;;;;;;5038:68:0;;;;;;;;;;5012:18;:95::i;:::-;4914:201;;;;:::o;14592:204::-;14653:4;14678:10;-1:-1:-1;;;;;14678:26:0;;;;;:57;;-1:-1:-1;14708:10:0;-1:-1:-1;;;;;14708:27:0;14730:4;14708:27;;14678:57;14670:66;;;;;;14747:17;14753:2;14757:6;14747:5;:17::i;:::-;-1:-1:-1;14782:6:0;;14592:204;-1:-1:-1;14592:204:0:o;4733:173::-;4839:58;;-1:-1:-1;;;;;7846:32:1;;4839:58:0;;;7828:51:1;7895:18;;;7888:34;;;4813:85:0;;4832:5;;-1:-1:-1;;;4862:23:0;7801:18:1;;4839:58:0;7783:145:1;4813:85:0;4733:173;;;:::o;5473:598::-;5561:27;5569:5;-1:-1:-1;;;;;5561:25:0;;:27::i;:::-;5553:71;;;;-1:-1:-1;;;5553:71:0;;14906:2:1;5553:71:0;;;14888:21:1;14945:2;14925:18;;;14918:30;14984:33;14964:18;;;14957:61;15035:18;;5553:71:0;14878:181:1;5553:71:0;5698:12;5712:23;5747:5;-1:-1:-1;;;;;5739:19:0;5759:4;5739:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5697:67;;;;5783:7;5775:52;;;;-1:-1:-1;;;5775:52:0;;11840:2:1;5775:52:0;;;11822:21:1;;;11859:18;;;11852:30;11918:34;11898:18;;;11891:62;11970:18;;5775:52:0;11812:182:1;5775:52:0;5844:17;;:21;5840:224;;5986:10;5975:30;;;;;;;;;;;;:::i;:::-;5967:85;;;;-1:-1:-1;;;5967:85:0;;14495:2:1;5967:85:0;;;14477:21:1;14534:2;14514:18;;;14507:30;14573:34;14553:18;;;14546:62;-1:-1:-1;;;14624:18:1;;;14617:40;14674:19;;5967:85:0;14467:232:1;4293:374:0;4353:4;4576:20;;4419:66;4616:15;;;;;:42;;-1:-1:-1;4635:23:0;;;4608:51;-1:-1:-1;;4293:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:156;258:20;;318:4;307:16;;297:27;;287:2;;338:1;335;328:12;353:196;;465:2;453:9;444:7;440:23;436:32;433:2;;;486:6;478;471:22;433:2;514:29;533:9;514:29;:::i;554:270::-;;;683:2;671:9;662:7;658:23;654:32;651:2;;;704:6;696;689:22;651:2;732:29;751:9;732:29;:::i;:::-;722:39;;780:38;814:2;803:9;799:18;780:38;:::i;:::-;770:48;;641:183;;;;;:::o;829:338::-;;;;975:2;963:9;954:7;950:23;946:32;943:2;;;996:6;988;981:22;943:2;1024:29;1043:9;1024:29;:::i;:::-;1014:39;;1072:38;1106:2;1095:9;1091:18;1072:38;:::i;:::-;1062:48;;1157:2;1146:9;1142:18;1129:32;1119:42;;933:234;;;;;:::o;1172:616::-;;;;;;;;1384:3;1372:9;1363:7;1359:23;1355:33;1352:2;;;1406:6;1398;1391:22;1352:2;1434:29;1453:9;1434:29;:::i;:::-;1424:39;;1482:38;1516:2;1505:9;1501:18;1482:38;:::i;:::-;1472:48;;1567:2;1556:9;1552:18;1539:32;1529:42;;1618:2;1607:9;1603:18;1590:32;1580:42;;1641:37;1673:3;1662:9;1658:19;1641:37;:::i;:::-;1631:47;;1725:3;1714:9;1710:19;1697:33;1687:43;;1777:3;1766:9;1762:19;1749:33;1739:43;;1342:446;;;;;;;;;;:::o;1793:264::-;;;1922:2;1910:9;1901:7;1897:23;1893:32;1890:2;;;1943:6;1935;1928:22;1890:2;1971:29;1990:9;1971:29;:::i;:::-;1961:39;2047:2;2032:18;;;;2019:32;;-1:-1:-1;;;1880:177:1:o;2062:338::-;;;;2208:2;2196:9;2187:7;2183:23;2179:32;2176:2;;;2229:6;2221;2214:22;2176:2;2257:29;2276:9;2257:29;:::i;:::-;2247:39;;2333:2;2322:9;2318:18;2305:32;2295:42;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2166:234;;;;;:::o;2405:783::-;;;;;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;2619:29;2638:9;2619:29;:::i;:::-;2609:39;;2695:2;2684:9;2680:18;2667:32;2657:42;;2750:2;2739:9;2735:18;2722:32;2773:18;2814:2;2806:6;2803:14;2800:2;;;2835:6;2827;2820:22;2800:2;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:2;;2950:6;2942;2935:22;2894:2;2995;2982:16;3021:2;3013:6;3010:14;3007:2;;;3042:6;3034;3027:22;3007:2;3092:7;3087:2;3078:6;3074:2;3070:15;3066:24;3063:37;3060:2;;;3118:6;3110;3103:22;3060:2;2528:660;;;;-1:-1:-1;;3154:2:1;3146:11;;-1:-1:-1;;;2528:660:1:o;3193:616::-;;;;;;;;3405:3;3393:9;3384:7;3380:23;3376:33;3373:2;;;3427:6;3419;3412:22;3373:2;3455:29;3474:9;3455:29;:::i;:::-;3445:39;;3531:2;3520:9;3516:18;3503:32;3493:42;;3582:2;3571:9;3567:18;3554:32;3544:42;;3605:36;3637:2;3626:9;3622:18;3605:36;:::i;:::-;3595:46;;3688:3;3677:9;3673:19;3660:33;3650:43;;3740:3;3729:9;3725:19;3712:33;3702:43;;3764:39;3798:3;3787:9;3783:19;3764:39;:::i;:::-;3754:49;;3363:446;;;;;;;;;;:::o;3814:251::-;;3923:2;3911:9;3902:7;3898:23;3894:32;3891:2;;;3944:6;3936;3929:22;3891:2;3988:9;3975:23;4007:28;4029:5;4007:28;:::i;4070:255::-;;4190:2;4178:9;4169:7;4165:23;4161:32;4158:2;;;4211:6;4203;4196:22;4158:2;4248:9;4242:16;4267:28;4289:5;4267:28;:::i;4330:332::-;;;;4476:2;4464:9;4455:7;4451:23;4447:32;4444:2;;;4497:6;4489;4482:22;4444:2;4538:9;4525:23;4515:33;;4567:38;4601:2;4590:9;4586:18;4567:38;:::i;4667:190::-;;4779:2;4767:9;4758:7;4754:23;4750:32;4747:2;;;4800:6;4792;4785:22;4747:2;-1:-1:-1;4828:23:1;;4737:120;-1:-1:-1;4737:120:1:o;4862:194::-;;4985:2;4973:9;4964:7;4960:23;4956:32;4953:2;;;5006:6;4998;4991:22;4953:2;-1:-1:-1;5034:16:1;;4943:113;-1:-1:-1;4943:113:1:o;5061:264::-;;;5190:2;5178:9;5169:7;5165:23;5161:32;5158:2;;;5211:6;5203;5196:22;5158:2;5252:9;5239:23;5229:33;;5281:38;5315:2;5304:9;5300:18;5281:38;:::i;5330:274::-;;5497:6;5491:13;5513:53;5559:6;5554:3;5547:4;5539:6;5535:17;5513:53;:::i;:::-;5582:16;;;;;5467:137;-1:-1:-1;;5467:137:1:o;6979:670::-;-1:-1:-1;;;;;7346:15:1;;;7328:34;;7398:15;;;;7393:2;7378:18;;7371:43;7445:2;7430:18;;7423:34;;;;7488:2;7473:18;;7466:34;;;;7549:4;7537:17;7531:3;7516:19;;7509:46;7308:3;7571:19;;7564:35;7630:3;7615:19;;7608:35;;;;7277:3;7262:19;;7244:405::o;7933:562::-;-1:-1:-1;;;;;8146:32:1;;8128:51;;8210:2;8195:18;;8188:34;;;8258:2;8253;8238:18;;8231:30;;;8277:18;;8270:34;;;7933:562;8297:6;8347;8341:3;8326:19;;8313:49;8382:22;;;8406:3;8378:32;;;8371:46;;;;8478:2;8457:15;;;-1:-1:-1;;8453:29:1;8438:45;8434:55;;8118:377;-1:-1:-1;;;8118:377:1:o;8500:661::-;8671:2;8723:21;;;8793:13;;8696:18;;;8815:22;;;8500:661;;8671:2;8894:15;;;;8868:2;8853:18;;;8500:661;8940:195;8954:6;8951:1;8948:13;8940:195;;;9019:13;;-1:-1:-1;;;;;9015:39:1;9003:52;;9110:15;;;;9075:12;;;;9051:1;8969:9;8940:195;;;-1:-1:-1;9152:3:1;;8651:510;-1:-1:-1;;;;;;8651:510:1:o;10539:383::-;;10688:2;10677:9;10670:21;10720:6;10714:13;10763:6;10758:2;10747:9;10743:18;10736:34;10779:66;10838:6;10833:2;10822:9;10818:18;10813:2;10805:6;10801:15;10779:66;:::i;:::-;10906:2;10885:15;-1:-1:-1;;10881:29:1;10866:45;;;;10913:2;10862:54;;10660:262;-1:-1:-1;;10660:262:1:o;10927:349::-;11129:2;11111:21;;;11168:2;11148:18;;;11141:30;11207:27;11202:2;11187:18;;11180:55;11267:2;11252:18;;11101:175::o;11281:352::-;11483:2;11465:21;;;11522:2;11502:18;;;11495:30;11561;11556:2;11541:18;;11534:58;11624:2;11609:18;;11455:178::o;11999:411::-;12201:2;12183:21;;;12240:2;12220:18;;;12213:30;12279:34;12274:2;12259:18;;12252:62;-1:-1:-1;;;12345:2:1;12330:18;;12323:45;12400:3;12385:19;;12173:237::o;13127:349::-;13329:2;13311:21;;;13368:2;13348:18;;;13341:30;13407:27;13402:2;13387:18;;13380:55;13467:2;13452:18;;13301:175::o;15795:128::-;;15866:1;15862:6;15859:1;15856:13;15853:2;;;15872:18;;:::i;:::-;-1:-1:-1;15908:9:1;;15843:80::o;15928:125::-;;15996:1;15993;15990:8;15987:2;;;16001:18;;:::i;:::-;-1:-1:-1;16038:9:1;;15977:76::o;16058:258::-;16130:1;16140:113;16154:6;16151:1;16148:13;16140:113;;;16230:11;;;16224:18;16211:11;;;16204:39;16176:2;16169:10;16140:113;;;16271:6;16268:1;16265:13;16262:2;;;-1:-1:-1;;16306:1:1;16288:16;;16281:27;16111:205::o;16321:380::-;16406:1;16396:12;;16453:1;16443:12;;;16464:2;;16518:4;16510:6;16506:17;16496:27;;16464:2;16571;16563:6;16560:14;16540:18;16537:38;16534:2;;;16617:10;16612:3;16608:20;16605:1;16598:31;16652:4;16649:1;16642:15;16680:4;16677:1;16670:15;16534:2;;16376:325;;;:::o;16706:135::-;;-1:-1:-1;;16766:17:1;;16763:2;;;16786:18;;:::i;:::-;-1:-1:-1;16833:1:1;16822:13;;16753:88::o;16846:127::-;16907:10;16902:3;16898:20;16895:1;16888:31;16938:4;16935:1;16928:15;16962:4;16959:1;16952:15;16978:118;17064:5;17057:13;17050:21;17043:5;17040:32;17030:2;;17086:1;17083;17076:12;17030:2;17020:76;:::o

Swarm Source

ipfs://9e817beecb84d00bcd9dc2d88cbed72ee2b5da3aa984b4de0006c7cd9256da59
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.