Contract 0x97513e975a7fA9072c72C92d8000B0dB90b163c5 9

 
Txn Hash Method
Index
From
To
Value
0xf4bc38e527d4f7c12beacfc9e9ccf84e9d288805e4d6d471f130bcaa5dea3a4eApprove137167662022-07-02 21:54:064 hrs 7 mins ago0x10b419069d43db8d1b68fc7f6f7aab806b076faa IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000731160150.001
0x945bf71aca3e954b1794a8e7315387d104278b1d516b2e744a2a0965496234a3Approve137081872022-07-02 17:42:088 hrs 19 mins ago0xe71c54e216682a89c2e8b0353ff5b5ebabf9daf7 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000382791240.001
0x532b3c81aead43afcacf99dc807a338217a2a4a46af865eb21f12e5b5d665478Approve137031302022-07-02 15:41:4510 hrs 19 mins ago0xd653971fa19ef68bc80becb7720675307bfb3ee6 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.000093892550.001
0xd5dc024eb365edcfd85246a09e1752dea77d799b8ad9dc280187c5b9809f200bApprove136997252022-07-02 14:23:0111 hrs 38 mins ago0xae9f8d1600dd9c22865beb2a76065a191dca6efe IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000519558630.001
0xa12dfda7ef0133a5931faa5aafc872c2eab1000dfe1688312c4c057f5bbf2313Approve136997072022-07-02 14:22:4611 hrs 38 mins ago0xae9f8d1600dd9c22865beb2a76065a191dca6efe IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000519757630.001
0x70d322146c85d625e3ec2c4f9de125c894d285a7fed44590cf8f7f6a54d984cdApprove136806622022-07-02 7:07:3718 hrs 53 mins ago0x5da68351bd082abda73e42ac981db51d9364fe69 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.00005355170.001001235
0xa93ef3233dc789874e715ac4559ac4e6917bdd157622b4d883cac2e50791729eApprove136765522022-07-02 5:09:2320 hrs 52 mins ago0x5f07ab190f2ef7de9f5c1ae4752b0f20c8682738 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000488853830.001
0x9961758384f0a5221ea55cd3035c46508fe0e18aca128254421046202cd369cfApprove136379862022-07-01 14:55:281 day 11 hrs ago0x36fb3c8d2174285888a97c6f398a8ba91673eee4 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000969816590.001
0x0d9cb1b383514ea0cec1a5ac994407e41f4b9eb6dbe32cdcd3c68dccba8a883fApprove136378282022-07-01 14:52:121 day 11 hrs ago0x173dfead67d01cd1b1755f8b407bfb6d21577b04 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000808360930.001
0xda26727676c9d51f891185d836fd9153c07a779cd773a4ef2e14a30f3ffff768Approve136377132022-07-01 14:49:561 day 11 hrs ago0x9ef0ec7d2cdbb66bcfbd2d5bd41229bf71d69444 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000977307740.001
0xca425d0a44ae2b8e7dcec046244624c0e0aee9ef2c5e02ebde2a15083b5857c9Approve136269192022-07-01 12:30:101 day 13 hrs ago0xc47c9c829924f1c9df6c59320fe39d425a09d85c IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000504117880.001
0x8eb0d58df574258eb2c2d5c1adeb26b72d7b95a6b6a34240b338c656d7e778ebApprove136206022022-07-01 10:55:171 day 15 hrs ago0x652880de887495f956bbf66e76c127b59791e510 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000823159940.001
0x14a8dc6687107ffa99813e5adc5117a7bf98ead75ba1b50d8e740696c85ccce7Approve136003672022-07-01 7:23:011 day 18 hrs ago0xbf49b454818783d12bf4f3375ff17c59015e66cb IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000737864570.001
0x1f2d8c7cbef05eb149ce674f5ab6f29f1e50fc111639a3631fbb3b101e69fa4eApprove135911962022-07-01 4:59:551 day 21 hrs ago0x780b192c7690fb06ed85b941585dad21eb44729b IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0000505189950.001
0x0bce78b84881df2686fb47533828ee89d765fcd388371f56b99c4c3e6e457674Approve135854832022-07-01 3:37:161 day 22 hrs ago 0xdb1ed00ebd95e74399f508b75203b3703eddac8a IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001200349490.0012
0x888f888d041e5fdbc21a160b04e96bf9a316e2587ba0ffd58d0075d7926646d3Approve135733372022-07-01 0:10:552 days 1 hr ago0x9db9a11bd146e8f39dc61246c357aaa10f2f2170 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001930696940.001
0x39e1c75584374f4274c117817a5b8af7bc3df51ab559edf7523b92e337e89a1bApprove135407832022-06-30 14:08:032 days 11 hrs ago 0x161d9b5d6e3ed8d9c1d36a7caf971901c60b9222 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001181333640.001
0x9d5b3e769e51b34802d7564792dd7504b73821d11f66823ebbbeee3e3b6ca43eApprove135310392022-06-30 11:51:522 days 14 hrs ago0x1e71aee6081f62053123140aacc7a06021d77348 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001070555620.001
0x04c00f6dd8a43db487aa7bfe91efd7aa9546be8218d10dc4a44e7cac1e1fc017Approve135085552022-06-30 5:25:492 days 20 hrs ago0x86c7e05b935ec835610531ae5c716e081fabc828 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001767807820.001
0xa7a07e20360b77f01b45d84819dc91bf97d40e835f4ed2490d39434f82b54d09Approve134666902022-06-29 14:45:403 days 11 hrs ago0xe649b71783d5008d10a96b6871e3840a398d4f06 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001821061710.001
0xb60ce36fb38b9bdd663a1449585900e5015e5660c89ee2ea572d7e9c178783e6Approve134665362022-06-29 14:43:373 days 11 hrs ago0xfc67418ff4ffb7f39769587bfd425d750b9f0663 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0002430945250.001
0x3ebabab3c3183aeb7e9096947ccbc59e404038fb6464a66e243e83427a427218Approve134575492022-06-29 12:41:073 days 13 hrs ago0xb3eafb9f40b8e568b998324dcdfc73b5eabb39b7 IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0002225161970.001
0x259b18fed2db2d47e72355f9e407177549d5fa7f78024524d19660efd9177961Approve134422682022-06-29 8:36:313 days 17 hrs ago0xa3ad5cfb4ff4b68e37a338da200ba441c1850b5b IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001485192510.001
0x6875e94e7e86f8f2bece7855cf7fa5fc09ef9c933184b2e81ca3ca7faf16619eApprove134283752022-06-29 4:27:343 days 21 hrs ago0xabdb1f94bff885bd8933ac4f8aaacda4326491de IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.000232976670.001
0xb7d0dd1a83eac67fb502976862d2c6fec63b51deda85ace5ffab10f8aaaaef5fApprove134123602022-06-28 22:27:414 days 3 hrs ago0xa311f7ca3eb2fb98123a807f9b8e4bbbdbdcb2ee IN  0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether0.0001709505110.001
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xd108f4af021299b29600bd8d1de7d2744e9ecb419912a622d34fe1099e6434cd137230862022-07-03 1:24:0837 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xd108f4af021299b29600bd8d1de7d2744e9ecb419912a622d34fe1099e6434cd137230862022-07-03 1:24:0837 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xd108f4af021299b29600bd8d1de7d2744e9ecb419912a622d34fe1099e6434cd137230862022-07-03 1:24:0837 mins ago 0x005e43c4bb2932605b121941797ebb123325301e 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x3549ec4938c4752b11661a443c82d576d7132f875b5a406dd8d7009fcfe19380137230622022-07-03 1:23:0538 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x3549ec4938c4752b11661a443c82d576d7132f875b5a406dd8d7009fcfe19380137230622022-07-03 1:23:0538 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x3549ec4938c4752b11661a443c82d576d7132f875b5a406dd8d7009fcfe19380137230622022-07-03 1:23:0538 mins ago 0x005e43c4bb2932605b121941797ebb123325301e 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x382a4ce1911c78565461118acc20a987fac21dbd3dd910e090de7824595fe279137229072022-07-03 1:17:1944 mins ago 0xba12222222228d8ba445958a75a0704d566bf2c8 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x382a4ce1911c78565461118acc20a987fac21dbd3dd910e090de7824595fe279137229072022-07-03 1:17:1944 mins ago 0xba12222222228d8ba445958a75a0704d566bf2c8 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x7c3be9f3c065053ccdfc8801f9af4e7263c434c1a6278c1bb2759c3b6ae4b25b137228972022-07-03 1:17:0344 mins ago 0x2d6743160ab3038af12c6a6b605c683bc9e4f0b6 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x7c3be9f3c065053ccdfc8801f9af4e7263c434c1a6278c1bb2759c3b6ae4b25b137228972022-07-03 1:17:0344 mins ago 0x2d6743160ab3038af12c6a6b605c683bc9e4f0b6 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x92f190c85d229b2e6762ba742005127541c27b8f398d92f16963c5bd3952e794137226662022-07-03 1:08:1653 mins ago 0xba12222222228d8ba445958a75a0704d566bf2c8 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x92f190c85d229b2e6762ba742005127541c27b8f398d92f16963c5bd3952e794137226662022-07-03 1:08:1653 mins ago 0x94bc2a1c732bcad7343b25af48385fe76e08734f 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x92f190c85d229b2e6762ba742005127541c27b8f398d92f16963c5bd3952e794137226662022-07-03 1:08:1653 mins ago 0x94bc2a1c732bcad7343b25af48385fe76e08734f 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x92f190c85d229b2e6762ba742005127541c27b8f398d92f16963c5bd3952e794137226662022-07-03 1:08:1653 mins ago 0xba12222222228d8ba445958a75a0704d566bf2c8 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x92f190c85d229b2e6762ba742005127541c27b8f398d92f16963c5bd3952e794137226662022-07-03 1:08:1653 mins ago 0x94bc2a1c732bcad7343b25af48385fe76e08734f 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x92f190c85d229b2e6762ba742005127541c27b8f398d92f16963c5bd3952e794137226662022-07-03 1:08:1653 mins ago 1inch.exchange: Aggregation Router V4 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x9c53aa90f6e89cd481f28a1aa8ee2ed1749b3e2684d6bf68c5cfd14f6dbab093137226572022-07-03 1:08:0053 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x9c53aa90f6e89cd481f28a1aa8ee2ed1749b3e2684d6bf68c5cfd14f6dbab093137226572022-07-03 1:08:0053 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x088ebcb2db9bff41ded71aa186f990beb1aa8dba510c8b9853ca4e946892193a137225602022-07-03 1:04:2257 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xc497c0bebc71764d2f6535721d031e7228470b485ffd9fbb9627ff016200ec25137225472022-07-03 1:03:1658 mins ago 0x00a2bd63529fd28d777155f5ed1726e9b9b781b4 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xe188ca370b0f1cdb4cf11dff840dc0bf19f2b6993aca3782f5a7f21be6e5a993137223762022-07-03 0:56:541 hr 4 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xbc71e06f562b8d766bd88c594b07ea21335bcafb46f683ed37730d7e03c87dee137223512022-07-03 0:55:481 hr 5 mins ago 0xba12222222228d8ba445958a75a0704d566bf2c8 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xba8185fb5f42f97a032d97b9b54f8045ef22c654fa4ae57f80514722755e583d137223322022-07-03 0:55:311 hr 5 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xba8185fb5f42f97a032d97b9b54f8045ef22c654fa4ae57f80514722755e583d137223322022-07-03 0:55:311 hr 5 mins ago 0x47a063ae87c3c8c9bfbd81d55eefa6683543148a 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0xba8185fb5f42f97a032d97b9b54f8045ef22c654fa4ae57f80514722755e583d137223322022-07-03 0:55:311 hr 5 mins ago 0x005e43c4bb2932605b121941797ebb123325301e 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
[ Download CSV Export 
Loading

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

Contract Name:
AnyswapV6ERC20

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at optimistic.etherscan.io on 2022-04-08
*/

/**
 *Submitted for verification at BscScan.com on 2022-04-07
*/

/**
 *Submitted for verification at snowtrace.io on 2022-04-07
*/

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-03-18
*/

/**
 *Submitted for verification at FtmScan.com on 2022-03-18
*/

/**
 *Submitted for verification at BscScan.com on 2022-03-17
*/

/**
 *Submitted for verification at BscScan.com on 2022-03-15
*/

/**
 *Submitted for verification at BscScan.com on 2022-03-11
*/

/**
 *Submitted for verification at BscScan.com on 2022-03-09
*/

/**
 *Submitted for verification at BscScan.com on 2022-02-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);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

}

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

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

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

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

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

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

library SafeERC20 {
    using Address for address;

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

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

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

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

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

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

    address public immutable underlying;

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

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

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

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

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


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

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

    address public pendingMinter;
    uint public delayMinter;

    address public pendingVault;
    uint public delayVault;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function Swapout(uint256 amount, address bindaddr) public returns (bool) {
        require(!_vaultOnly, "AnyswapV4ERC20: onlyAuth");
        require(bindaddr != address(0), "AnyswapV3ERC20: address(0x0)");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

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

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

    event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

    function verifyPersonalSign(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = keccak256(
            abi.encodePacked(
                "\x19Ethereum Signed Message:\n32",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

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

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

        return true;
    }

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

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

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

        return true;
    }

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

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

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

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

Contract 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":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayMinter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMinters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"initVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setVaultOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithPermit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60e06040526202a3006005553480156200001857600080fd5b5060405162002b2538038062002b258339810160408190526200003b9162000399565b845162000050906000906020880190620001f7565b50835162000066906001906020870190620001f7565b5060ff83166080526001600160a01b03821660a081905215620000fa57816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e891906200043b565b60ff168360ff1614620000fa57600080fd5b6004805461ffff19166001179055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f906200016c906000906200049d565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c0525062000541945050505050565b828054620002059062000460565b90600052602060002090601f01602090048101928262000229576000855562000274565b82601f106200024457805160ff191683800117855562000274565b8280016001018555821562000274579182015b828111156200027457825182559160200191906001019062000257565b506200028292915062000286565b5090565b5b8082111562000282576000815560010162000287565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002c557600080fd5b81516001600160401b0380821115620002e257620002e26200029d565b604051601f8301601f19908116603f011681019082821181831017156200030d576200030d6200029d565b816040528381526020925086838588010111156200032a57600080fd5b600091505b838210156200034e57858201830151818301840152908201906200032f565b83821115620003605760008385830101525b9695505050505050565b805160ff811681146200037c57600080fd5b919050565b80516001600160a01b03811681146200037c57600080fd5b600080600080600060a08688031215620003b257600080fd5b85516001600160401b0380821115620003ca57600080fd5b620003d889838a01620002b3565b96506020880151915080821115620003ef57600080fd5b50620003fe88828901620002b3565b9450506200040f604087016200036a565b92506200041f6060870162000381565b91506200042f6080870162000381565b90509295509295909350565b6000602082840312156200044e57600080fd5b62000459826200036a565b9392505050565b600181811c908216806200047557607f821691505b602082108114156200049757634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620004ba57607f831692505b6020808410821415620004db57634e487b7160e01b86526022600452602486fd5b818015620004f25760018114620005045762000533565b60ff1986168952848901965062000533565b60008a81526020902060005b868110156200052b5781548b82015290850190830162000510565b505084890196505b509498975050505050505050565b60805160a05160c051612575620005b06000396000818161040501528181611aa30152611baf0152600081816104ed015281816111a7015281816113c0015281816115c6015281816116400152818161199601528181611d2e0152611d61015260006103cc01526125756000f3fe608060405234801561001057600080fd5b50600436106102b85760003560e01c806370a0823111610182578063bebbf4d0116100e9578063d505accf116100a2578063ec126c771161007c578063ec126c77146106a2578063f75c2664146106b5578063fbfa77cf146106bd578063fca3b5aa146106d057600080fd5b8063d505accf1461065c578063d93f24451461066f578063dd62ed3e1461067757600080fd5b8063bebbf4d0146105ff578063c308124014610612578063c4b740f51461061b578063cae9ca511461062e578063cfbd488514610641578063d0e30db01461065457600080fd5b806395d89b411161013b57806395d89b41146105865780639dc29fac1461058e578063a045442c146105a1578063a9059cbb146105b6578063aa271e1a146105c9578063b6b55f25146105ec57600080fd5b806370a082311461050f5780637ecebe001461052f5780638623ec7b1461054f57806387689e28146105625780638da5cb5b1461056b57806391c5df491461057357600080fd5b80633644e5151161022657806360e232a9116101df57806360e232a914610493578063628d6cba146104a65780636817031b146104b95780636a42b8f8146104cc5780636e553f65146104d55780636f307dc3146104e857600080fd5b80633644e515146104005780633ccfd60b146104275780634000aea01461042f57806340c10f191461044257806352113ba714610455578063605629d61461048057600080fd5b806318160ddd1161027857806318160ddd1461035f57806323b872dd146103675780632e1a7d4d1461037a5780632ebe3fbb1461038d57806330adf81f146103a0578063313ce567146103c757600080fd5b806239d6ec146102bd578062bf26f4146102e3578062f714ce1461030a57806306fdde031461031d578063095ea7b3146103325780630d707df814610355575b600080fd5b6102d06102cb366004611fb1565b6106e3565b6040519081526020015b60405180910390f35b6102d07f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b6102d0610318366004611fed565b610739565b61032561074d565b6040516102da9190612045565b610345610340366004612078565b6107db565b60405190151581526020016102da565b61035d610835565b005b6003546102d0565b6103456103753660046120a2565b6108f1565b6102d06103883660046120de565b610adc565b61035d61039b3660046120f7565b610aef565b6102d07f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102da565b6102d07f000000000000000000000000000000000000000000000000000000000000000081565b6102d0610bc6565b61034561043d366004612112565b610be7565b610345610450366004612078565b610d31565b600b54610468906001600160a01b031681565b6040516001600160a01b0390911681526020016102da565b61034561048e366004612199565b610d73565b6103456104a13660046120f7565b610f83565b6103456104b4366004611fed565b611044565b61035d6104c73660046120f7565b61110c565b6102d060055481565b6102d06104e3366004611fed565b611198565b6104687f000000000000000000000000000000000000000000000000000000000000000081565b6102d061051d3660046120f7565b60026020526000908152604090205481565b6102d061053d3660046120f7565b600d6020526000908152604090205481565b61046861055d3660046120de565b6111d9565b6102d0600c5481565b610468611203565b600954610468906001600160a01b031681565b61032561120d565b61034561059c366004612078565b61121a565b6105a9611279565b6040516102da919061220c565b6103456105c4366004612078565b6112db565b6103456105d73660046120f7565b60066020526000908152604090205460ff1681565b6102d06105fa3660046120de565b6113b1565b6102d061060d366004611fed565b6113f2565b6102d0600a5481565b61035d61062936600461226a565b61142c565b61034561063c366004612112565b61147e565b61035d61064f3660046120f7565b61154b565b6102d06115a4565b61035d61066a366004612199565b611678565b61035d6117e6565b6102d0610685366004612287565b600e60209081526000928352604080842090915290825290205481565b6103456106b03660046122b1565b611851565b6104686118c6565b600854610468906001600160a01b031681565b61035d6106de3660046120f7565b6118f1565b60006106ed6118c6565b6001600160a01b0316336001600160a01b0316146107265760405162461bcd60e51b815260040161071d906122d6565b60405180910390fd5b61073184848461197d565b949350505050565b600061074633848461197d565b9392505050565b6000805461075a9061230d565b80601f01602080910402602001604051908101604052809291908181526020018280546107869061230d565b80156107d35780601f106107a8576101008083540402835291602001916107d3565b820191906000526020600020905b8154815290600101906020018083116107b657829003601f168201915b505050505081565b336000818152600e602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612520833981519152906108249086815260200190565b60405180910390a350600192915050565b61083d6118c6565b6001600160a01b0316336001600160a01b03161461086d5760405162461bcd60e51b815260040161071d906122d6565b600a5442101561087c57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b60006001600160a01b03831615158061091357506001600160a01b0383163014155b61091c57600080fd5b6001600160a01b0384163314610a16576001600160a01b0384166000908152600e602090815260408083203384529091529020546000198114610a1457828110156109bb5760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b606482015260840161071d565b60006109c7848361235e565b6001600160a01b0387166000818152600e602090815260408083203380855290835292819020859055518481529394509092600080516020612520833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610a4f5760405162461bcd60e51b815260040161071d90612375565b610a59838261235e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610a8f9084906123c4565b92505081905550836001600160a01b0316856001600160a01b031660008051602061250083398151915285604051610ac991815260200190565b60405180910390a3506001949350505050565b6000610ae933833361197d565b92915050565b610af76118c6565b6001600160a01b0316336001600160a01b031614610b275760405162461bcd60e51b815260040161071d906122d6565b60045460ff16610b3657600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610be2918161197d565b905090565b60006001600160a01b038516151580610c0957506001600160a01b0385163014155b610c1257600080fd5b3360009081526002602052604090205484811015610c425760405162461bcd60e51b815260040161071d90612375565b610c4c858261235e565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610c7f9084906123c4565b90915550506040518581526001600160a01b0387169033906000805160206125008339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610ce49033908990899089906004016123dc565b6020604051808303816000875af1158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190612424565b9695505050505050565b3360009081526006602052604081205460ff16610d605760405162461bcd60e51b815260040161071d90612441565b610d6a83836119c5565b50600192915050565b600084421115610dc55760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d69740000604482015260640161071d565b6001600160a01b0388166000908152600d6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610e1283612478565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050610e738982878787611a93565b80610e865750610e868982878787611b84565b610e8f57600080fd5b6001600160a01b038816151580610eaf57506001600160a01b0388163014155b610eb857600080fd5b6001600160a01b03891660009081526002602052604090205487811015610ef15760405162461bcd60e51b815260040161071d90612375565b610efb888261235e565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a9290610f319084906123c4565b92505081905550886001600160a01b03168a6001600160a01b03166000805160206125008339815191528a604051610f6b91815260200190565b60405180910390a35060019998505050505050505050565b6000610f8d6118c6565b6001600160a01b0316336001600160a01b031614610fbd5760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b038216610fe35760405162461bcd60e51b815260040161071d90612493565b600880546001600160a01b0384166001600160a01b03199182168117909255600b80549091168217905560405142919081907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a45060015b919050565b600454600090610100900460ff161561109f5760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c79417574680000000000000000604482015260640161071d565b6001600160a01b0382166110c55760405162461bcd60e51b815260040161071d90612493565b6110cf3384611be7565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c88890602001610824565b6111146118c6565b6001600160a01b0316336001600160a01b0316146111445760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03811661116a5760405162461bcd60e51b815260040161071d90612493565b600b80546001600160a01b0319166001600160a01b03831617905560055461119290426123c4565b600c5550565b60006111cf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611cb9565b6107468383611d2a565b600781815481106111e957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610be26118c6565b6001805461075a9061230d565b3360009081526006602052604081205460ff166112495760405162461bcd60e51b815260040161071d90612441565b6001600160a01b03831661126f5760405162461bcd60e51b815260040161071d90612493565b610d6a8383611be7565b606060078054806020026020016040519081016040528092919081815260200182805480156112d157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112b3575b5050505050905090565b60006001600160a01b0383161515806112fd57506001600160a01b0383163014155b61130657600080fd5b33600090815260026020526040902054828110156113365760405162461bcd60e51b815260040161071d90612375565b611340838261235e565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906113739084906123c4565b90915550506040518381526001600160a01b038516903390600080516020612500833981519152906020015b60405180910390a35060019392505050565b60006113e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611cb9565b610ae98233611d2a565b60006113fc6118c6565b6001600160a01b0316336001600160a01b0316146111cf5760405162461bcd60e51b815260040161071d906122d6565b6114346118c6565b6001600160a01b0316336001600160a01b0316146114645760405162461bcd60e51b815260040161071d906122d6565b600480549115156101000261ff0019909216919091179055565b336000818152600e602090815260408083206001600160a01b03891680855292528083208790555191929091600080516020612520833981519152906114c79088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f906114ff9033908890889088906004016123dc565b6020604051808303816000875af115801561151e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115429190612424565b95945050505050565b6115536118c6565b6001600160a01b0316336001600160a01b0316146115835760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163191906124ca565b90506116686001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611cb9565b6116728133611d2a565b91505090565b834211156116c85760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d69740000604482015260640161071d565b6001600160a01b0387166000908152600d6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661171583612478565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506117768882868686611a93565b8061178957506117898882868686611b84565b61179257600080fd5b6001600160a01b038881166000818152600e60209081526040808320948c16808452948252918290208a90559051898152600080516020612520833981519152910160405180910390a35050505050505050565b6117ee6118c6565b6001600160a01b0316336001600160a01b03161461181e5760405162461bcd60e51b815260040161071d906122d6565b600c5442101561182d57600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff166118805760405162461bcd60e51b815260040161071d90612441565b61188a83836119c5565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161139f91815260200190565b6000600c5442106118e15750600b546001600160a01b031690565b506008546001600160a01b031690565b6118f96118c6565b6001600160a01b0316336001600160a01b0316146119295760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03811661194f5760405162461bcd60e51b815260040161071d90612493565b600980546001600160a01b0319166001600160a01b03831617905560055461197790426123c4565b600a5550565b60006119898484611be7565b6119bd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611da7565b509092915050565b6001600160a01b038216611a1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071d565b8060036000828254611a2d91906123c4565b90915550506001600160a01b03821660009081526002602052604081208054839290611a5a9084906123c4565b90915550506040518181526001600160a01b03831690600090600080516020612500833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f000000000000000000000000000000000000000000000000000000000000000060228201526042810185905260009081906062015b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611b42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611b785750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f0000000000000000000000000000000000000000000000000000000000000000603c820152605c81018590526000908190607c01611ad7565b6001600160a01b038216611c475760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161071d565b6001600160a01b03821660009081526002602052604081208054839290611c6f90849061235e565b925050819055508060036000828254611c88919061235e565b90915550506040518181526000906001600160a01b0384169060008051602061250083398151915290602001611a87565b6040516001600160a01b0380851660248301528316604482015260648101829052611d249085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ddc565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615801590611d8d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b611d9657600080fd5b611da082846119c5565b5090919050565b6040516001600160a01b038316602482015260448101829052611dd790849063a9059cbb60e01b90606401611ced565b505050565b611dee826001600160a01b0316611f63565b611e3a5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161071d565b600080836001600160a01b031683604051611e5591906124e3565b6000604051808303816000865af19150503d8060008114611e92576040519150601f19603f3d011682016040523d82523d6000602084013e611e97565b606091505b509150915081611ee95760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161071d565b805115611d245780806020019051810190611f049190612424565b611d245760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161071d565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906107315750141592915050565b80356001600160a01b038116811461103f57600080fd5b600080600060608486031215611fc657600080fd5b611fcf84611f9a565b925060208401359150611fe460408501611f9a565b90509250925092565b6000806040838503121561200057600080fd5b8235915061201060208401611f9a565b90509250929050565b60005b8381101561203457818101518382015260200161201c565b83811115611d245750506000910152565b6020815260008251806020840152612064816040850160208701612019565b601f01601f19169190910160400192915050565b6000806040838503121561208b57600080fd5b61209483611f9a565b946020939093013593505050565b6000806000606084860312156120b757600080fd5b6120c084611f9a565b92506120ce60208501611f9a565b9150604084013590509250925092565b6000602082840312156120f057600080fd5b5035919050565b60006020828403121561210957600080fd5b61074682611f9a565b6000806000806060858703121561212857600080fd5b61213185611f9a565b935060208501359250604085013567ffffffffffffffff8082111561215557600080fd5b818701915087601f83011261216957600080fd5b81358181111561217857600080fd5b88602082850101111561218a57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a0312156121b457600080fd5b6121bd88611f9a565b96506121cb60208901611f9a565b95506040880135945060608801359350608088013560ff811681146121ef57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561224d5783516001600160a01b031683529284019291840191600101612228565b50909695505050505050565b801515811461226757600080fd5b50565b60006020828403121561227c57600080fd5b813561074681612259565b6000806040838503121561229a57600080fd5b6122a383611f9a565b915061201060208401611f9a565b6000806000606084860312156122c657600080fd5b833592506120ce60208501611f9a565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b600181811c9082168061232157607f821691505b6020821081141561234257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561237057612370612348565b500390565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b600082198211156123d7576123d7612348565b500190565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301376000818301608090810191909152601f909201601f191601019392505050565b60006020828403121561243657600080fd5b815161074681612259565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b600060001982141561248c5761248c612348565b5060010190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6000602082840312156124dc57600080fd5b5051919050565b600082516124f5818460208701612019565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212204db622a89335a7f516edf22bc6964bb0d3dae43db253408484323d804b982d4c64736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000003f56e0c36d275367b8c502090edf38289b3dea0d000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad992510000000000000000000000000000000000000000000000000000000000000005516944616f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005616e795149000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

6371:17954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14393:149;;;;;;:::i;:::-;;:::i;:::-;;;671:25:1;;;659:2;644:18;14393:149:0;;;;;;;;6744:136;;6788:92;6744:136;;14259:126;;;;;;:::i;:::-;;:::i;6454:18::-;;;:::i;:::-;;;;;;;:::i;16116:265::-;;;;;;:::i;:::-;;:::i;:::-;;;2223:14:1;;2216:22;2198:41;;2186:2;2171:18;16116:265:0;2058:187:1;9219:179:0;;;:::i;:::-;;12886:102;12968:12;;12886:102;;22245:927;;;;;;:::i;:::-;;:::i;14129:122::-;;;;;;:::i;:::-;;:::i;8362:272::-;;;;;;:::i;:::-;;:::i;6600:137::-;;6642:95;6600:137;;6506:41;;;;;;;;3131:4:1;3119:17;;;3101:36;;3089:2;3074:18;6506:41:0;2959:184:1;6887:41:0;;;;;13995:126;;;:::i;23799:523::-;;;;;;:::i;:::-;;:::i;9988:133::-;;;;;;:::i;:::-;;:::i;7700:27::-;;;;;-1:-1:-1;;;;;7700:27:0;;;;;;-1:-1:-1;;;;;4050:32:1;;;4032:51;;4020:2;4005:18;7700:27:0;3886:203:1;18714:938:0;;;;;;:::i;:::-;;:::i;9674:306::-;;;;;;:::i;:::-;;:::i;10561:328::-;;;;;;:::i;:::-;;:::i;8642:212::-;;;;;;:::i;:::-;;:::i;7375:29::-;;;;;;13447:193;;;;;;:::i;:::-;;:::i;6556:35::-;;;;;7008:54;;;;;;:::i;:::-;;;;;;;;;;;;;;11161:51;;;;;;:::i;:::-;;;;;;;;;;;;;;7522:24;;;;;;:::i;:::-;;:::i;7734:22::-;;;;;;7999:78;;;:::i;7633:28::-;;;;;-1:-1:-1;;;;;7633:28:0;;;6479:20;;;:::i;10129:207::-;;;;;;:::i;:::-;;:::i;9567:99::-;;;:::i;:::-;;;;;;;:::i;20918:438::-;;;;;;:::i;:::-;;:::i;7475:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13250:189;;;;;;:::i;:::-;;:::i;13648:127::-;;;;;;:::i;:::-;;:::i;7668:23::-;;;;;;8260:94;;;;;;:::i;:::-;;:::i;16802:356::-;;;;;;:::i;:::-;;:::i;9461:98::-;;;;;;:::i;:::-;;:::i;12996:246::-;;;:::i;17991:715::-;;;;;;:::i;:::-;;:::i;8862:129::-;;;:::i;11382:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10344:209;;;;;;:::i;:::-;;:::i;8085:167::-;;;:::i;7604:20::-;;;;;-1:-1:-1;;;;;7604:20:0;;;8999:212;;;;;;:::i;:::-;;:::i;14393:149::-;14483:4;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;;;;;;;;;14507:27:::1;14517:4;14523:6;14531:2;14507:9;:27::i;:::-;14500:34:::0;14393:149;-1:-1:-1;;;;14393:149:0:o;14259:126::-;14320:4;14344:33;14354:10;14366:6;14374:2;14344:9;:33::i;:::-;14337:40;14259:126;-1:-1:-1;;;14259:126:0:o;6454:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16116:265::-;16269:10;16192:4;16259:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;16259:30:0;;;;;;;;;;:38;;;16313:36;16192:4;;16259:30;;-1:-1:-1;;;;;;;;;;;16313:36:0;;;16292:5;671:25:1;;659:2;644:18;;525:177;16313:36:0;;;;;;;;-1:-1:-1;16369:4:0;16116:265;;;;:::o;9219:179::-;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;9299:11:::1;;9280:15;:30;;9272:39;;;::::0;::::1;;9331:13;::::0;;-1:-1:-1;;;;;9331:13:0;;::::1;9322:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;9322:30:0::1;9348:4;9322:30:::0;;::::1;::::0;;;9376:13;;9363:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9363:27:0::1;9376:13:::0;;;::::1;9363:27:::0;;;::::1;::::0;;9219:179::o;22245:927::-;22335:4;-1:-1:-1;;;;;22360:16:0;;;;;:39;;-1:-1:-1;;;;;;22380:19:0;;22394:4;22380:19;;22360:39;22352:48;;;;;;-1:-1:-1;;;;;22415:18:0;;22423:10;22415:18;22411:477;;-1:-1:-1;;;;;22529:15:0;;22511;22529;;;:9;:15;;;;;;;;22545:10;22529:27;;;;;;;;-1:-1:-1;;22575:28:0;;22571:306;;22643:5;22632:7;:16;;22624:70;;;;-1:-1:-1;;;22624:70:0;;7357:2:1;22624:70:0;;;7339:21:1;7396:2;7376:18;;;7369:30;7435:34;7415:18;;;7408:62;-1:-1:-1;;;7486:18:1;;;7479:39;7535:19;;22624:70:0;7155:405:1;22624:70:0;22713:15;22731;22741:5;22731:7;:15;:::i;:::-;-1:-1:-1;;;;;22765:15:0;;;;;;:9;:15;;;;;;;;22781:10;22765:27;;;;;;;;;;:37;;;22826:35;671:25:1;;;22765:37:0;;-1:-1:-1;22781:10:0;;-1:-1:-1;;;;;;;;;;;22826:35:0;644:18:1;22826:35:0;;;;;;;22605:272;22571:306;22435:453;22411:477;-1:-1:-1;;;;;22918:15:0;;22900;22918;;;:9;:15;;;;;;22952:16;;;;22944:76;;;;-1:-1:-1;;;22944:76:0;;;;;;;:::i;:::-;23051:15;23061:5;23051:7;:15;:::i;:::-;-1:-1:-1;;;;;23033:15:0;;;;;;;:9;:15;;;;;;:33;;;;23077:13;;;;;;;;:22;;23094:5;;23033:15;23077:22;;23094:5;;23077:22;:::i;:::-;;;;;;;;23130:2;-1:-1:-1;;;;;23115:25:0;23124:4;-1:-1:-1;;;;;23115:25:0;-1:-1:-1;;;;;;;;;;;23134:5:0;23115:25;;;;671::1;;659:2;644:18;;525:177;23115:25:0;;;;;;;;-1:-1:-1;23160:4:0;;22245:927;-1:-1:-1;;;;22245:927:0:o;14129:122::-;14178:4;14202:41;14212:10;14224:6;14232:10;14202:9;:41::i;:::-;14195:48;14129:122;-1:-1:-1;;14129:122:0:o;8362:272::-;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;8435:5:::1;::::0;::::1;;8427:14;;;::::0;::::1;;8452:5;:14:::0;;-1:-1:-1;;;;;8452:14:0;;::::1;-1:-1:-1::0;;;;;;8452:14:0;;::::1;::::0;::::1;::::0;;;8477:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;8452:5:::1;8509:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;8509:23:0;;::::1;8452:14:::0;8509:23;;::::1;::::0;;;8543:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;8587:15:::1;8574:10;:28:::0;8613:5:::1;:13:::0;;;;::::1;::::0;;8362:272::o;13995:126::-;14067:10;14033:4;14079:21;;;:9;:21;;;;;;14033:4;;14057:56;;14067:10;14057:9;:56::i;:::-;14050:63;;13995:126;:::o;23799:523::-;23896:4;-1:-1:-1;;;;;23921:16:0;;;;;:39;;-1:-1:-1;;;;;;23941:19:0;;23955:4;23941:19;;23921:39;23913:48;;;;;;24002:10;23974:15;23992:21;;;:9;:21;;;;;;24032:16;;;;24024:76;;;;-1:-1:-1;;;24024:76:0;;;;;;;:::i;:::-;24137:15;24147:5;24137:7;:15;:::i;:::-;24123:10;24113:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;24163:13:0;;;;;;;:22;;24180:5;;24113:21;24163:22;;24180:5;;24163:22;:::i;:::-;;;;-1:-1:-1;;24201:31:0;;671:25:1;;;-1:-1:-1;;;;;24201:31:0;;;24210:10;;-1:-1:-1;;;;;;;;;;;24201:31:0;659:2:1;644:18;24201:31:0;;;;;;;24252:62;;-1:-1:-1;;;24252:62:0;;-1:-1:-1;;;;;24252:37:0;;;;;:62;;24290:10;;24302:5;;24309:4;;;;24252:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24245:69;23799:523;-1:-1:-1;;;;;;23799:523:0:o;9988:133::-;7813:10;10057:4;7804:20;;;:8;:20;;;;;;;;7796:58;;;;-1:-1:-1;;;7796:58:0;;;;;;;:::i;:::-;10074:17:::1;10080:2;10084:6;10074:5;:17::i;:::-;-1:-1:-1::0;10109:4:0::1;9988:133:::0;;;;:::o;18714:938::-;18861:4;18905:8;18886:15;:27;;18878:70;;;;-1:-1:-1;;;18878:70:0;;9746:2:1;18878:70:0;;;9728:21:1;9785:2;9765:18;;;9758:30;9824:32;9804:18;;;9797:60;9874:18;;18878:70:0;9544:354:1;18878:70:0;-1:-1:-1;;;;;19141:14:0;;18961:18;19141:14;;;:6;:14;;;;;:16;;6788:92;;19071:6;;19096:2;;19117:5;;19141:16;18961:18;19141:16;;;:::i;:::-;;;;-1:-1:-1;19006:179:0;;;;;;10330:25:1;;;;-1:-1:-1;;;;;10429:15:1;;;10409:18;;;10402:43;10481:15;;;;10461:18;;;10454:43;10513:18;;;10506:34;10556:19;;;10549:35;10600:19;;;10593:35;;;10302:19;;19006:179:0;;;;;;;;;;;;18982:204;;;;;;18961:225;;19207:41;19220:6;19228:10;19240:1;19243;19246;19207:12;:41::i;:::-;:92;;;;19252:47;19271:6;19279:10;19291:1;19294;19297;19252:18;:47::i;:::-;19199:101;;;;;;-1:-1:-1;;;;;19321:16:0;;;;;:39;;-1:-1:-1;;;;;;19341:19:0;;19355:4;19341:19;;19321:39;19313:48;;;;;;-1:-1:-1;;;;;19392:17:0;;19374:15;19392:17;;;:9;:17;;;;;;19428:16;;;;19420:76;;;;-1:-1:-1;;;19420:76:0;;;;;;;:::i;:::-;19529:15;19539:5;19529:7;:15;:::i;:::-;-1:-1:-1;;;;;19509:17:0;;;;;;;:9;:17;;;;;;:35;;;;19555:13;;;;;;;;:22;;19572:5;;19509:17;19555:22;;19572:5;;19555:22;:::i;:::-;;;;;;;;19610:2;-1:-1:-1;;;;;19593:27:0;19602:6;-1:-1:-1;;;;;19593:27:0;-1:-1:-1;;;;;;;;;;;19614:5:0;19593:27;;;;671:25:1;;659:2;644:18;;525:177;19593:27:0;;;;;;;;-1:-1:-1;19640:4:0;;18714:938;-1:-1:-1;;;;;;;;;18714:938:0:o;9674:306::-;9741:4;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9766:22:0;::::1;9758:63;;;;-1:-1:-1::0;;;9758:63:0::1;;;;;;;:::i;:::-;9832:5;:16:::0;;-1:-1:-1;;;;;9832:16:0;::::1;-1:-1:-1::0;;;;;;9832:16:0;;::::1;::::0;::::1;::::0;;;9859:12:::1;:23:::0;;;;::::1;::::0;::::1;::::0;;9898:52:::1;::::0;9934:15:::1;::::0;9832:16;;;9898:52:::1;::::0;9832:5:::1;::::0;9898:52:::1;-1:-1:-1::0;9968:4:0::1;7982:1;9674:306:::0;;;:::o;10561:328::-;10654:10;;10628:4;;10654:10;;;;;10653:11;10645:48;;;;-1:-1:-1;;;10645:48:0;;11198:2:1;10645:48:0;;;11180:21:1;11237:2;11217:18;;;11210:30;11276:26;11256:18;;;11249:54;11320:18;;10645:48:0;10996:348:1;10645:48:0;-1:-1:-1;;;;;10712:22:0;;10704:63;;;;-1:-1:-1;;;10704:63:0;;;;;;;:::i;:::-;10778:25;10784:10;10796:6;10778:5;:25::i;:::-;10819:40;;671:25:1;;;-1:-1:-1;;;;;10819:40:0;;;10830:10;;10819:40;;659:2:1;644:18;10819:40:0;525:177:1;8642:212:0;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8714:20:0;::::1;8706:61;;;;-1:-1:-1::0;;;8706:61:0::1;;;;;;;:::i;:::-;8778:12;:21:::0;;-1:-1:-1;;;;;;8778:21:0::1;-1:-1:-1::0;;;;;8778:21:0;::::1;;::::0;;8841:5:::1;::::0;8823:23:::1;::::0;:15:::1;:23;:::i;:::-;8810:10;:36:::0;-1:-1:-1;8642:212:0:o;13447:193::-;13507:4;13524:70;-1:-1:-1;;;;;13531:10:0;13524:35;13560:10;13580:4;13587:6;13524:35;:70::i;:::-;13612:20;13621:6;13629:2;13612:8;:20::i;7522:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7522:24:0;;-1:-1:-1;7522:24:0;:::o;7999:78::-;8037:7;8064:5;:3;:5::i;6479:20::-;;;;;;;:::i;10129:207::-;7813:10;10200:4;7804:20;;;:8;:20;;;;;;;;7796:58;;;;-1:-1:-1;;;7796:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10225:18:0;::::1;10217:59;;;;-1:-1:-1::0;;;10217:59:0::1;;;;;;;:::i;:::-;10287:19;10293:4;10299:6;10287:5;:19::i;9567:99::-:0;9615:16;9651:7;9644:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9644:14:0;;;;;;;;;;;;;;;;;;;;;;;9567:99;:::o;20918:438::-;20990:4;-1:-1:-1;;;;;21015:16:0;;;;;:39;;-1:-1:-1;;;;;;21035:19:0;;21049:4;21035:19;;21015:39;21007:48;;;;;;21094:10;21066:15;21084:21;;;:9;:21;;;;;;21124:16;;;;21116:76;;;;-1:-1:-1;;;21116:76:0;;;;;;;:::i;:::-;21229:15;21239:5;21229:7;:15;:::i;:::-;21215:10;21205:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;21255:13:0;;;;;;;:22;;21272:5;;21205:21;21255:22;;21272:5;;21255:22;:::i;:::-;;;;-1:-1:-1;;21293:31:0;;671:25:1;;;-1:-1:-1;;;;;21293:31:0;;;21302:10;;-1:-1:-1;;;;;;;;;;;21293:31:0;659:2:1;644:18;21293:31:0;;;;;;;;-1:-1:-1;21344:4:0;;20918:438;-1:-1:-1;;;20918:438:0:o;13250:189::-;13298:4;13315:70;-1:-1:-1;;;;;13322:10:0;13315:35;13351:10;13371:4;13378:6;13315:35;:70::i;:::-;13403:28;13412:6;13420:10;13403:8;:28::i;13648:127::-;13723:4;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;8260:94::-;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;8326:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;8326:20:0;;::::1;::::0;;;::::1;::::0;;8260:94::o;16802:356::-;16983:10;16906:4;16973:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;16973:30:0;;;;;;;;;;:38;;;17027:36;16906:4;;16973:30;;-1:-1:-1;;;;;;;;;;;17027:36:0;;;17006:5;671:25:1;;659:2;644:18;;525:177;17027:36:0;;;;;;;;17083:67;;-1:-1:-1;;;17083:67:0;;-1:-1:-1;;;;;17083:42:0;;;;;:67;;17126:10;;17138:5;;17145:4;;;;17083:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17076:74;16802:356;-1:-1:-1;;;;;16802:356:0:o;9461:98::-;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9528:15:0::1;9546:5;9528:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;9528:23:0::1;::::0;;9461:98::o;12996:246::-;13065:40;;-1:-1:-1;;;13065:40:0;;13094:10;13065:40;;;4032:51:1;13033:4:0;;;;-1:-1:-1;;;;;13072:10:0;13065:28;;;;4005:18:1;;13065:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13050:55;-1:-1:-1;13116:71:0;-1:-1:-1;;;;;13123:10:0;13116:35;13152:10;13172:4;13050:55;13116:35;:71::i;:::-;13205:29;13214:7;13223:10;13205:8;:29::i;:::-;13198:36;;;12996:246;:::o;17991:715::-;18160:8;18141:15;:27;;18133:70;;;;-1:-1:-1;;;18133:70:0;;9746:2:1;18133:70:0;;;9728:21:1;9785:2;9765:18;;;9758:30;9824:32;9804:18;;;9797:60;9874:18;;18133:70:0;9544:354:1;18133:70:0;-1:-1:-1;;;;;18399:14:0;;18216:18;18399:14;;;:6;:14;;;;;:16;;6642:95;;18324:6;;18349:7;;18375:5;;18399:16;18216:18;18399:16;;;:::i;:::-;;;;-1:-1:-1;18261:182:0;;;;;;10330:25:1;;;;-1:-1:-1;;;;;10429:15:1;;;10409:18;;;10402:43;10481:15;;;;10461:18;;;10454:43;10513:18;;;10506:34;10556:19;;;10549:35;10600:19;;;10593:35;;;10302:19;;18261:182:0;;;;;;;;;;;;18237:207;;;;;;18216:228;;18465:41;18478:6;18486:10;18498:1;18501;18504;18465:12;:41::i;:::-;:92;;;;18510:47;18529:6;18537:10;18549:1;18552;18555;18510:18;:47::i;:::-;18457:101;;;;;;-1:-1:-1;;;;;18616:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;18666:32;;671:25:1;;;-1:-1:-1;;;;;;;;;;;18666:32:0;644:18:1;18666:32:0;;;;;;;18122:584;17991:715;;;;;;;:::o;8862:129::-;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;8941:10:::1;;8922:15;:29;;8914:38;;;::::0;::::1;;8971:12;::::0;8963:5:::1;:20:::0;;-1:-1:-1;;;;;;8963:20:0::1;-1:-1:-1::0;;;;;8971:12:0;;::::1;8963:20:::0;;;::::1;::::0;;8862:129::o;10344:209::-;7813:10;10434:4;7804:20;;;:8;:20;;;;;;;;7796:58;;;;-1:-1:-1;;;7796:58:0;;;;;;;:::i;:::-;10451:22:::1;10457:7;10466:6;10451:5;:22::i;:::-;10507:7;-1:-1:-1::0;;;;;10489:34:0::1;10499:6;10489:34;10516:6;10489:34;;;;671:25:1::0;;659:2;644:18;;525:177;8085:167:0;8121:7;8164:10;;8145:15;:29;8141:81;;-1:-1:-1;8198:12:0;;-1:-1:-1;;;;;8198:12:0;;8085:167::o;8141:81::-;-1:-1:-1;8239:5:0;;-1:-1:-1;;;;;8239:5:0;;8085:167::o;8999:212::-;7936:5;:3;:5::i;:::-;-1:-1:-1;;;;;7922:19:0;:10;-1:-1:-1;;;;;7922:19:0;;7914:57;;;;-1:-1:-1;;;7914:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9071:19:0;::::1;9063:60;;;;-1:-1:-1::0;;;9063:60:0::1;;;;;;;:::i;:::-;9134:13;:21:::0;;-1:-1:-1;;;;;;9134:21:0::1;-1:-1:-1::0;;;;;9134:21:0;::::1;;::::0;;9198:5:::1;::::0;9180:23:::1;::::0;:15:::1;:23;:::i;:::-;9166:11;:37:::0;-1:-1:-1;8999:212:0:o;14550:198::-;14626:4;14643:19;14649:4;14655:6;14643:5;:19::i;:::-;14673:43;-1:-1:-1;;;;;14680:10:0;14673:31;14705:2;14709:6;14673:31;:43::i;:::-;-1:-1:-1;14734:6:0;;14550:198;-1:-1:-1;;14550:198:0:o;15029:268::-;-1:-1:-1;;;;;15105:21:0;;15097:65;;;;-1:-1:-1;;;15097:65:0;;11740:2:1;15097:65:0;;;11722:21:1;11779:2;11759:18;;;11752:30;11818:33;11798:18;;;11791:61;11869:18;;15097:65:0;11538:355:1;15097:65:0;15191:6;15175:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;15208:18:0;;;;;;:9;:18;;;;;:28;;15230:6;;15208:18;:28;;15230:6;;15208:28;:::i;:::-;;;;-1:-1:-1;;15252:37:0;;671:25:1;;;-1:-1:-1;;;;;15252:37:0;;;15269:1;;-1:-1:-1;;;;;;;;;;;15252:37:0;659:2:1;644:18;15252:37:0;;;;;;;;15029:268;;:::o;19660:399::-;19828:110;;-1:-1:-1;;;19828:110:0;;;12156:27:1;19892:16:0;12199:11:1;;;12192:27;12235:12;;;12228:28;;;19772:4:0;;;;12272:12:1;;19828:110:0;;;;-1:-1:-1;;19828:110:0;;;;;;;;;19804:135;;19828:110;19804:135;;;;19950:14;19967:24;;;;;;;;;12522:25:1;;;12595:4;12583:17;;12563:18;;;12556:45;;;;12617:18;;;12610:34;;;12660:18;;;12653:34;;;19804:135:0;;-1:-1:-1;19950:14:0;19967:24;;12494:19:1;;19967:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19967:24:0;;-1:-1:-1;;19967:24:0;;;-1:-1:-1;;;;;;;20010:20:0;;;;;;:40;;;20044:6;-1:-1:-1;;;;;20034:16:0;:6;-1:-1:-1;;;;;20034:16:0;;20010:40;20002:49;19660:399;-1:-1:-1;;;;;;;;19660:399:0:o;20067:429::-;20241:134;;12968:66:1;20241:134:0;;;12956:79:1;20329:16:0;13051:12:1;;;13044:28;13088:12;;;13081:28;;;20185:4:0;;;;13125:12:1;;20241:134:0;12698:445:1;15629:270:0;-1:-1:-1;;;;;15705:21:0;;15697:67;;;;-1:-1:-1;;;15697:67:0;;13350:2:1;15697:67:0;;;13332:21:1;13389:2;13369:18;;;13362:30;13428:34;13408:18;;;13401:62;-1:-1:-1;;;13479:18:1;;;13472:31;13520:19;;15697:67:0;13148:397:1;15697:67:0;-1:-1:-1;;;;;15777:18:0;;;;;;:9;:18;;;;;:28;;15799:6;;15777:18;:28;;15799:6;;15777:28;:::i;:::-;;;;;;;;15832:6;15816:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;15854:37:0;;671:25:1;;;15880:1:0;;-1:-1:-1;;;;;15854:37:0;;;-1:-1:-1;;;;;;;;;;;15854:37:0;659:2:1;644:18;15854:37:0;525:177:1;5207:201:0;5331:68;;-1:-1:-1;;;;;13808:15:1;;;5331:68:0;;;13790:34:1;13860:15;;13840:18;;;13833:43;13892:18;;;13885:34;;;5305:95:0;;5324:5;;-1:-1:-1;;;5354:27:0;13725:18:1;;5331:68:0;;;;-1:-1:-1;;5331:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5331:68:0;-1:-1:-1;;;;;;5331:68:0;;;;;;;;;;5305:18;:95::i;:::-;5207:201;;;;:::o;13783:204::-;13844:4;13869:10;-1:-1:-1;;;;;13869:26:0;;;;;:57;;-1:-1:-1;13899:10:0;-1:-1:-1;;;;;13899:27:0;13921:4;13899:27;;13869:57;13861:66;;;;;;13938:17;13944:2;13948:6;13938:5;:17::i;:::-;-1:-1:-1;13973:6:0;;13783:204;-1:-1:-1;13783:204:0:o;5026:173::-;5132:58;;-1:-1:-1;;;;;14122:32:1;;5132:58:0;;;14104:51:1;14171:18;;;14164:34;;;5106:85:0;;5125:5;;-1:-1:-1;;;5155:23:0;14077:18:1;;5132:58:0;13930:274:1;5106:85:0;5026:173;;;:::o;5766:598::-;5854:27;5862:5;-1:-1:-1;;;;;5854:25:0;;:27::i;:::-;5846:71;;;;-1:-1:-1;;;5846:71:0;;14411:2:1;5846:71:0;;;14393:21:1;14450:2;14430:18;;;14423:30;14489:33;14469:18;;;14462:61;14540:18;;5846:71:0;14209:355:1;5846:71:0;5991:12;6005:23;6040:5;-1:-1:-1;;;;;6032:19:0;6052:4;6032:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:67;;;;6076:7;6068:52;;;;-1:-1:-1;;;6068:52:0;;15050:2:1;6068:52:0;;;15032:21:1;;;15069:18;;;15062:30;15128:34;15108:18;;;15101:62;15180:18;;6068:52:0;14848:356:1;6068:52:0;6137:17;;:21;6133:224;;6279:10;6268:30;;;;;;;;;;;;:::i;:::-;6260:85;;;;-1:-1:-1;;;6260:85:0;;15411:2:1;6260:85:0;;;15393:21:1;15450:2;15430:18;;;15423:30;15489:34;15469:18;;;15462:62;-1:-1:-1;;;15540:18:1;;;15533:40;15590:19;;6260:85:0;15209:406:1;4586:374:0;4646:4;4869:20;;4712:66;4909:15;;;;;:42;;-1:-1:-1;4928:23:0;;;4901:51;-1:-1:-1;;4586:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;192:328;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;453:2;442:9;438:18;425:32;415:42;;476:38;510:2;499:9;495:18;476:38;:::i;:::-;466:48;;192:328;;;;;:::o;889:254::-;957:6;965;1018:2;1006:9;997:7;993:23;989:32;986:52;;;1034:1;1031;1024:12;986:52;1070:9;1057:23;1047:33;;1099:38;1133:2;1122:9;1118:18;1099:38;:::i;:::-;1089:48;;889:254;;;;;:::o;1148:258::-;1220:1;1230:113;1244:6;1241:1;1238:13;1230:113;;;1320:11;;;1314:18;1301:11;;;1294:39;1266:2;1259:10;1230:113;;;1361:6;1358:1;1355:13;1352:48;;;-1:-1:-1;;1396:1:1;1378:16;;1371:27;1148:258::o;1411:383::-;1560:2;1549:9;1542:21;1523:4;1592:6;1586:13;1635:6;1630:2;1619:9;1615:18;1608:34;1651:66;1710:6;1705:2;1694:9;1690:18;1685:2;1677:6;1673:15;1651:66;:::i;:::-;1778:2;1757:15;-1:-1:-1;;1753:29:1;1738:45;;;;1785:2;1734:54;;1411:383;-1:-1:-1;;1411:383:1:o;1799:254::-;1867:6;1875;1928:2;1916:9;1907:7;1903:23;1899:32;1896:52;;;1944:1;1941;1934:12;1896:52;1967:29;1986:9;1967:29;:::i;:::-;1957:39;2043:2;2028:18;;;;2015:32;;-1:-1:-1;;;1799:254:1:o;2250:328::-;2327:6;2335;2343;2396:2;2384:9;2375:7;2371:23;2367:32;2364:52;;;2412:1;2409;2402:12;2364:52;2435:29;2454:9;2435:29;:::i;:::-;2425:39;;2483:38;2517:2;2506:9;2502:18;2483:38;:::i;:::-;2473:48;;2568:2;2557:9;2553:18;2540:32;2530:42;;2250:328;;;;;:::o;2583:180::-;2642:6;2695:2;2683:9;2674:7;2670:23;2666:32;2663:52;;;2711:1;2708;2701:12;2663:52;-1:-1:-1;2734:23:1;;2583:180;-1:-1:-1;2583:180:1:o;2768:186::-;2827:6;2880:2;2868:9;2859:7;2855:23;2851:32;2848:52;;;2896:1;2893;2886:12;2848:52;2919:29;2938:9;2919:29;:::i;3148:733::-;3236:6;3244;3252;3260;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;3352:29;3371:9;3352:29;:::i;:::-;3342:39;;3428:2;3417:9;3413:18;3400:32;3390:42;;3483:2;3472:9;3468:18;3455:32;3506:18;3547:2;3539:6;3536:14;3533:34;;;3563:1;3560;3553:12;3533:34;3601:6;3590:9;3586:22;3576:32;;3646:7;3639:4;3635:2;3631:13;3627:27;3617:55;;3668:1;3665;3658:12;3617:55;3708:2;3695:16;3734:2;3726:6;3723:14;3720:34;;;3750:1;3747;3740:12;3720:34;3795:7;3790:2;3781:6;3777:2;3773:15;3769:24;3766:37;3763:57;;;3816:1;3813;3806:12;3763:57;3148:733;;;;-1:-1:-1;;3847:2:1;3839:11;;-1:-1:-1;;;3148:733:1:o;4094:693::-;4205:6;4213;4221;4229;4237;4245;4253;4306:3;4294:9;4285:7;4281:23;4277:33;4274:53;;;4323:1;4320;4313:12;4274:53;4346:29;4365:9;4346:29;:::i;:::-;4336:39;;4394:38;4428:2;4417:9;4413:18;4394:38;:::i;:::-;4384:48;;4479:2;4468:9;4464:18;4451:32;4441:42;;4530:2;4519:9;4515:18;4502:32;4492:42;;4584:3;4573:9;4569:19;4556:33;4629:4;4622:5;4618:16;4611:5;4608:27;4598:55;;4649:1;4646;4639:12;4598:55;4094:693;;;;-1:-1:-1;4094:693:1;;;;4672:5;4724:3;4709:19;;4696:33;;-1:-1:-1;4776:3:1;4761:19;;;4748:33;;4094:693;-1:-1:-1;;4094:693:1:o;4792:658::-;4963:2;5015:21;;;5085:13;;4988:18;;;5107:22;;;4934:4;;4963:2;5186:15;;;;5160:2;5145:18;;;4934:4;5229:195;5243:6;5240:1;5237:13;5229:195;;;5308:13;;-1:-1:-1;;;;;5304:39:1;5292:52;;5399:15;;;;5364:12;;;;5340:1;5258:9;5229:195;;;-1:-1:-1;5441:3:1;;4792:658;-1:-1:-1;;;;;;4792:658:1:o;5455:118::-;5541:5;5534:13;5527:21;5520:5;5517:32;5507:60;;5563:1;5560;5553:12;5507:60;5455:118;:::o;5578:241::-;5634:6;5687:2;5675:9;5666:7;5662:23;5658:32;5655:52;;;5703:1;5700;5693:12;5655:52;5742:9;5729:23;5761:28;5783:5;5761:28;:::i;5824:260::-;5892:6;5900;5953:2;5941:9;5932:7;5928:23;5924:32;5921:52;;;5969:1;5966;5959:12;5921:52;5992:29;6011:9;5992:29;:::i;:::-;5982:39;;6040:38;6074:2;6063:9;6059:18;6040:38;:::i;6089:322::-;6166:6;6174;6182;6235:2;6223:9;6214:7;6210:23;6206:32;6203:52;;;6251:1;6248;6241:12;6203:52;6287:9;6274:23;6264:33;;6316:38;6350:2;6339:9;6335:18;6316:38;:::i;6416:349::-;6618:2;6600:21;;;6657:2;6637:18;;;6630:30;6696:27;6691:2;6676:18;;6669:55;6756:2;6741:18;;6416:349::o;6770:380::-;6849:1;6845:12;;;;6892;;;6913:61;;6967:4;6959:6;6955:17;6945:27;;6913:61;7020:2;7012:6;7009:14;6989:18;6986:38;6983:161;;;7066:10;7061:3;7057:20;7054:1;7047:31;7101:4;7098:1;7091:15;7129:4;7126:1;7119:15;6983:161;;6770:380;;;:::o;7565:127::-;7626:10;7621:3;7617:20;7614:1;7607:31;7657:4;7654:1;7647:15;7681:4;7678:1;7671:15;7697:125;7737:4;7765:1;7762;7759:8;7756:34;;;7770:18;;:::i;:::-;-1:-1:-1;7807:9:1;;7697:125::o;7827:411::-;8029:2;8011:21;;;8068:2;8048:18;;;8041:30;8107:34;8102:2;8087:18;;8080:62;-1:-1:-1;;;8173:2:1;8158:18;;8151:45;8228:3;8213:19;;7827:411::o;8243:128::-;8283:3;8314:1;8310:6;8307:1;8304:13;8301:39;;;8320:18;;:::i;:::-;-1:-1:-1;8356:9:1;;8243:128::o;8376:559::-;-1:-1:-1;;;;;8589:32:1;;8571:51;;8653:2;8638:18;;8631:34;;;8701:2;8696;8681:18;;8674:30;;;8720:18;;8713:34;;;8740:6;8790;8784:3;8769:19;;8756:49;8855:1;8825:22;;;8849:3;8821:32;;;8814:43;;;;8918:2;8897:15;;;-1:-1:-1;;8893:29:1;8878:45;8874:55;;8376:559;-1:-1:-1;;;8376:559:1:o;8940:245::-;9007:6;9060:2;9048:9;9039:7;9035:23;9031:32;9028:52;;;9076:1;9073;9066:12;9028:52;9108:9;9102:16;9127:28;9149:5;9127:28;:::i;9190:349::-;9392:2;9374:21;;;9431:2;9411:18;;;9404:30;9470:27;9465:2;9450:18;;9443:55;9530:2;9515:18;;9190:349::o;9903:135::-;9942:3;-1:-1:-1;;9963:17:1;;9960:43;;;9983:18;;:::i;:::-;-1:-1:-1;10030:1:1;10019:13;;9903:135::o;10639:352::-;10841:2;10823:21;;;10880:2;10860:18;;;10853:30;10919;10914:2;10899:18;;10892:58;10982:2;10967:18;;10639:352::o;11349:184::-;11419:6;11472:2;11460:9;11451:7;11447:23;11443:32;11440:52;;;11488:1;11485;11478:12;11440:52;-1:-1:-1;11511:16:1;;11349:184;-1:-1:-1;11349:184:1:o;14569:274::-;14698:3;14736:6;14730:13;14752:53;14798:6;14793:3;14786:4;14778:6;14774:17;14752:53;:::i;:::-;14821:16;;;;;14569:274;-1:-1:-1;;14569:274:1:o

Swarm Source

ipfs://4db622a89335a7f516edf22bc6964bb0d3dae43db253408484323d804b982d4c
Block Transaction Difficulty Gas Used Reward
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.