Contract 0x2fa4334cfd7c56a0e7ca02bd81455205fcbdc5e9 2

DEX  
 

Contract Overview

DODO: Router
Balance:
0.030303739529976279 MATIC

MATIC Value:
$0.03 (@ $0.91/MATIC)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf412390b4880b24c7f10960d3672fd066d36bb0b6fc14f1011607fbf7b43a0a7Mix Swap363235382022-12-02 5:49:092 mins ago0x6aa2cf46317042b32a26b819b8ed67683848274f IN  DODO: Router0 MATIC0.005180310008 30.00000005
0x3e1ff70bf5bf6efb4a5f7d35c2e8eb5acf9f8ee6d916517cb56b77293e42d14bMix Swap363234612022-12-02 5:46:315 mins ago0x6aa2cf46317042b32a26b819b8ed67683848274f IN  DODO: Router0 MATIC0.0092574653 30.311400011
0x418fc42432bcf15fe74aaf148a766e1f574ef2b4be9ec493dcd992b9220781dfDodo Mutli Swap363234272022-12-02 5:45:196 mins ago0x104e1602b7f532dec9cfcb2b9af8452815e53192 IN  DODO: Router0 MATIC0.019333183763 30.985248391
0x44fadcc112111407e65723fb4f1bc385c82bb47f64f42b5b80430d68dafcc96cMix Swap363234012022-12-02 5:44:277 mins ago0x92fa38a6c2a1acfe489233d39e99ee1f8ab931c0 IN  DODO: Router30 MATIC0.02162385 150
0xe4277604f70b3b9445ef1e09fa7984ff08db5c356492d2db728eec97652903e7Mix Swap363233722022-12-02 5:43:258 mins ago0xf7a3dde6483861503b98c501057318ef8a0f66ee IN  DODO: Router10 MATIC0.004348470003 30.000000027
0x42115623fd1bdddb61483b40bbd6b058e16d3a4a13bb9be0b168dbe5bd708b73Mix Swap363231862022-12-02 5:37:0114 mins ago0xf7a3dde6483861503b98c501057318ef8a0f66ee IN  DODO: Router10 MATIC0.004348380003 30.000000026
0x391d94fd23e2e2e3c543e1da1a6eaf2e12cb6ad0a758085f4ced37ee18511203Mix Swap363231702022-12-02 5:36:2915 mins ago0xf7a3dde6483861503b98c501057318ef8a0f66ee IN  DODO: Router10 MATIC0.005199434056 30.000081103
0x8ef5fcd4699afcabb8c1fb829617a57a44c1f50bb09c0342827d15f19e583c0fMix Swap363229232022-12-02 5:27:5923 mins ago0x37e5c3f1786ff18cd005926e0b709539d3266ace IN  DODO: Router0 MATIC0.004741470004 30.000000029
0x670005b1c7ec59fa540e77778833e69a0555dd5ff84b242769a6feb8a7bdca4cMix Swap363228002022-12-02 5:23:4527 mins ago0x2033d58e5aeba1e7fc09efcb2c51414298cb9248 IN  DODO: Router0 MATIC0.00589017000939.000000066
0x1b0e8ef15715e4459fb39467629e85f62adfe072f046a93b7debdcf59d19fe60Mix Swap363225732022-12-02 5:15:5735 mins ago0x92fa38a6c2a1acfe489233d39e99ee1f8ab931c0 IN  DODO: Router30 MATIC0.0217503 150
0xa9005ae887d4da2ae3db7f73a78b31f3ee516380a300d88904dccb2c383e653aMix Swap363223422022-12-02 5:07:5943 mins ago0xf06cddc80f7978c0280e0254e25f3d040778ebd2 IN  DODO: Router10 MATIC0.004334103767 30.000026078
0x0e97e6cd6d2d4cb63e85f48bd36ad4426a867a96769cb280ecddf51934420980Mix Swap363223202022-12-02 5:07:1544 mins ago0x22b2ccb53963da600c83191db1ce3f61f92dcf45 IN  DODO: Router42 MATIC0.004288087087 30.000049588
0x4fe2bb325b335635c7360413dca4847c4f5fda13e20a8fd07ed7d7522615a9f2Mix Swap363219272022-12-02 4:53:4257 mins ago0x786504696489e2b4755791d7585dbd620b2459f8 IN  DODO: Router0 MATIC0.004614169183 30.005782327
0x532d43c6b4539ddabad1eece1c2b4323e9b2fb715f634c6316a1c87253e61019Mix Swap363217032022-12-02 4:45:561 hr 5 mins ago0x1b6c0c67f0fa712a28238cb33a6c2d1804c5c77f IN  DODO: Router5 MATIC0.005568385518 30.164765347
0x3c94ef16df230de5ddf15d893726d3049ba69251ebe59fc25974d3d4d5d5a1e2Mix Swap363216452022-12-02 4:43:561 hr 7 mins ago0x92fa38a6c2a1acfe489233d39e99ee1f8ab931c0 IN  DODO: Router30 MATIC0.0226629 150
0x225d47118a46bcefa7935cfd78a14955201a6e27b637072e11cf31e7a8eb73c2Mix Swap363214792022-12-02 4:38:161 hr 13 mins ago0x1b6c0c67f0fa712a28238cb33a6c2d1804c5c77f IN  DODO: Router0 MATIC0.013073662014 33.919415345
0xe14ba78c6f5cc6cf6dcdf1f11970bacb41acab8871756c63a55e76ad260cd925Mix Swap363214302022-12-02 4:36:341 hr 15 mins ago0x47397392baa95cae6fa5f9386f57bd27769a5bf8 IN  DODO: Router0 MATIC0.014607159241 39.544538197
0x95ceb3030ff2488fdd483567149ae7e8cf374d2bbe1f7404dde04c6e82bc063aMix Swap363214172022-12-02 4:36:081 hr 15 mins ago0x47397392baa95cae6fa5f9386f57bd27769a5bf8 IN  DODO: Router0 MATIC0.009941676906 36.4806744
0x5958e533e0e348c1de531ad950a5ff07d4e3ac509b25aea34a562431c36d38c5Mix Swap363213982022-12-02 4:35:261 hr 16 mins ago0x9bb7ac46f5ebbb3345969df37e7fbf71a1416680 IN  DODO: Router0.1 MATIC0.004101591277 30.599299303
0x1390f603b791b89145a3c0bafba804d74a833e265bee7fa5c29d6af1a374010cMix Swap363213282022-12-02 4:33:021 hr 18 mins ago0x9bb7ac46f5ebbb3345969df37e7fbf71a1416680 IN  DODO: Router0.1 MATIC0.009601298899 31.429278631
0x1b2f2430183d1f4f0fb4d016f52ed1e280914c4ba92a3536d8a7360a84f08e23Mix Swap363213242022-12-02 4:32:541 hr 18 mins ago0xf692548c41459f7590e7ea8bddcb758e605b7897 IN  DODO: Router0 MATIC0.0174721550
0xaf2f5505e0d7433120b962d91dde2d89de3e0e6644799cced08bd8adf81af08fMix Swap363213132022-12-02 4:32:321 hr 19 mins ago0x9bb7ac46f5ebbb3345969df37e7fbf71a1416680 IN  DODO: Router0.1 MATIC0.009752809987 30.872604065
0xb8e96880499ca2f4cda3515ba4b34624ded1d09c9db922b169d5fba2a55611d0Mix Swap363213002022-12-02 4:32:061 hr 19 mins ago0x9bb7ac46f5ebbb3345969df37e7fbf71a1416680 IN  DODO: Router0.1 MATIC0.009835755915 31.677968887
0xade5b67f02f7ede1a70fce9216a5c7464abd02b60b653bcc39a8c7079bfee429Mix Swap363212892022-12-02 4:31:441 hr 19 mins ago0x9bb7ac46f5ebbb3345969df37e7fbf71a1416680 IN  DODO: Router0.1 MATIC0.00954926401 30.798116528
0x8e939839d2be45555f1b0704dd2d38b1109edb104f9a5ad8c810b166fcf2ff5cMix Swap363212872022-12-02 4:31:401 hr 19 mins ago0xf7a3dde6483861503b98c501057318ef8a0f66ee IN  DODO: Router30 MATIC0.004874389063 30.819354218
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x44fadcc112111407e65723fb4f1bc385c82bb47f64f42b5b80430d68dafcc96c363234012022-12-02 5:44:277 mins ago DODO: Router Polygon: WMATIC Token30 MATIC
0xe4277604f70b3b9445ef1e09fa7984ff08db5c356492d2db728eec97652903e7363233722022-12-02 5:43:258 mins ago DODO: Router Polygon: WMATIC Token10 MATIC
0x42115623fd1bdddb61483b40bbd6b058e16d3a4a13bb9be0b168dbe5bd708b73363231862022-12-02 5:37:0114 mins ago DODO: Router Polygon: WMATIC Token10 MATIC
0x391d94fd23e2e2e3c543e1da1a6eaf2e12cb6ad0a758085f4ced37ee18511203363231702022-12-02 5:36:2915 mins ago DODO: Router Polygon: WMATIC Token10 MATIC
0x1b0e8ef15715e4459fb39467629e85f62adfe072f046a93b7debdcf59d19fe60363225732022-12-02 5:15:5735 mins ago DODO: Router Polygon: WMATIC Token30 MATIC
0xa9005ae887d4da2ae3db7f73a78b31f3ee516380a300d88904dccb2c383e653a363223422022-12-02 5:07:5943 mins ago DODO: Router Polygon: WMATIC Token10 MATIC
0x0e97e6cd6d2d4cb63e85f48bd36ad4426a867a96769cb280ecddf51934420980363223202022-12-02 5:07:1544 mins ago DODO: Router Polygon: WMATIC Token42 MATIC
0x532d43c6b4539ddabad1eece1c2b4323e9b2fb715f634c6316a1c87253e61019363217032022-12-02 4:45:561 hr 5 mins ago DODO: Router Polygon: WMATIC Token5 MATIC
0x3c94ef16df230de5ddf15d893726d3049ba69251ebe59fc25974d3d4d5d5a1e2363216452022-12-02 4:43:561 hr 7 mins ago DODO: Router Polygon: WMATIC Token30 MATIC
0x225d47118a46bcefa7935cfd78a14955201a6e27b637072e11cf31e7a8eb73c2363214792022-12-02 4:38:161 hr 13 mins ago DODO: Router0x1b6c0c67f0fa712a28238cb33a6c2d1804c5c77f19.851788560496567449 MATIC
0x225d47118a46bcefa7935cfd78a14955201a6e27b637072e11cf31e7a8eb73c2363214792022-12-02 4:38:161 hr 13 mins ago Polygon: WMATIC Token DODO: Router19.851788560496567449 MATIC
0x5958e533e0e348c1de531ad950a5ff07d4e3ac509b25aea34a562431c36d38c5363213982022-12-02 4:35:261 hr 16 mins ago DODO: Router Polygon: WMATIC Token0.1 MATIC
0x1390f603b791b89145a3c0bafba804d74a833e265bee7fa5c29d6af1a374010c363213282022-12-02 4:33:021 hr 18 mins ago DODO: Router Polygon: WMATIC Token0.1 MATIC
0xaf2f5505e0d7433120b962d91dde2d89de3e0e6644799cced08bd8adf81af08f363213132022-12-02 4:32:321 hr 19 mins ago DODO: Router Polygon: WMATIC Token0.1 MATIC
0xb8e96880499ca2f4cda3515ba4b34624ded1d09c9db922b169d5fba2a55611d0363213002022-12-02 4:32:061 hr 19 mins ago DODO: Router Polygon: WMATIC Token0.1 MATIC
0xade5b67f02f7ede1a70fce9216a5c7464abd02b60b653bcc39a8c7079bfee429363212892022-12-02 4:31:441 hr 19 mins ago DODO: Router Polygon: WMATIC Token0.1 MATIC
0x8e939839d2be45555f1b0704dd2d38b1109edb104f9a5ad8c810b166fcf2ff5c363212872022-12-02 4:31:401 hr 19 mins ago DODO: Router Polygon: WMATIC Token30 MATIC
0x26cc464aa292d57098ed51acfe2787d56d1a9e618fb40ee430309d288bb0352b363212032022-12-02 4:28:441 hr 22 mins ago DODO: Router Polygon: WMATIC Token1.5 MATIC
0x871b76a1256588ce05daba0bf495056e0ff0e50d3864d98feed128d99beb1584363211772022-12-02 4:27:521 hr 23 mins ago DODO: Router0x1b6c0c67f0fa712a28238cb33a6c2d1804c5c77f9.648668726737478341 MATIC
0x871b76a1256588ce05daba0bf495056e0ff0e50d3864d98feed128d99beb1584363211772022-12-02 4:27:521 hr 23 mins ago Polygon: WMATIC Token DODO: Router9.648668726737478341 MATIC
0x2644fd39c9967784cf391ec8e9476518f15d1a15af1a13426bf3e3b005b785cc363210532022-12-02 4:23:361 hr 28 mins ago DODO: Router0xf7a3dde6483861503b98c501057318ef8a0f66ee0.100757398724578652 MATIC
0x2644fd39c9967784cf391ec8e9476518f15d1a15af1a13426bf3e3b005b785cc363210532022-12-02 4:23:361 hr 28 mins ago Polygon: WMATIC Token DODO: Router0.100757398724578652 MATIC
0x3b9974fc4791cb6d598a0615fd184cd8649ec5a94e2319eb1a0985b82d389e6d363210482022-12-02 4:23:261 hr 28 mins ago DODO: Router0x92fa38a6c2a1acfe489233d39e99ee1f8ab931c04.993364748179358487 MATIC
0x3b9974fc4791cb6d598a0615fd184cd8649ec5a94e2319eb1a0985b82d389e6d363210482022-12-02 4:23:261 hr 28 mins ago Polygon: WMATIC Token DODO: Router4.993364748179358487 MATIC
0x3ee321448c6ee75f2e13c4620fec493fd83a71d8b6c24acd704f879ea016e174363208052022-12-02 4:15:041 hr 36 mins ago DODO: Router0x60a11012b62e3f5753af7c2f7ca5be2d30cb848c17.943119352842079007 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DODORouteProxy

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-11
*/

// File: contracts/intf/IDODOApprove.sol

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

interface IDODOApprove {
    function claimTokens(address token,address who,address dest,uint256 amount) external;
    function getDODOProxy() external view returns (address);
}

// File: contracts/lib/InitializableOwnable.sol

/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract InitializableOwnable {
    address public _OWNER_;
    address public _NEW_OWNER_;
    bool internal _INITIALIZED_;

    // ============ Events ============

    event OwnershipTransferPrepared(address indexed previousOwner, address indexed newOwner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    // ============ Modifiers ============

    modifier notInitialized() {
        require(!_INITIALIZED_, "DODO_INITIALIZED");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    function initOwner(address newOwner) public notInitialized {
        _INITIALIZED_ = true;
        _OWNER_ = newOwner;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

// File: contracts/SmartRoute/DODOApproveProxy.sol

interface IDODOApproveProxy {
    function isAllowedProxy(address _proxy) external view returns (bool);
    function claimTokens(address token,address who,address dest,uint256 amount) external;
}

/**
 * @title DODOApproveProxy
 * @author DODO Breeder
 *
 * @notice Allow different version dodoproxy to claim from DODOApprove
 */
contract DODOApproveProxy is InitializableOwnable {
    
    // ============ Storage ============
    uint256 private constant _TIMELOCK_DURATION_ = 3 days;
    mapping (address => bool) public _IS_ALLOWED_PROXY_;
    uint256 public _TIMELOCK_;
    address public _PENDING_ADD_DODO_PROXY_;
    address public immutable _DODO_APPROVE_;

    // ============ Modifiers ============
    modifier notLocked() {
        require(
            _TIMELOCK_ <= block.timestamp,
            "SetProxy is timelocked"
        );
        _;
    }

    constructor(address dodoApporve) public {
        _DODO_APPROVE_ = dodoApporve;
    }

    function init(address owner, address[] memory proxies) external {
        initOwner(owner);
        for(uint i = 0; i < proxies.length; i++) 
            _IS_ALLOWED_PROXY_[proxies[i]] = true;
    }

    function unlockAddProxy(address newDodoProxy) public onlyOwner {
        _TIMELOCK_ = block.timestamp + _TIMELOCK_DURATION_;
        _PENDING_ADD_DODO_PROXY_ = newDodoProxy;
    }

    function lockAddProxy() public onlyOwner {
       _PENDING_ADD_DODO_PROXY_ = address(0);
       _TIMELOCK_ = 0;
    }


    function addDODOProxy() external onlyOwner notLocked() {
        _IS_ALLOWED_PROXY_[_PENDING_ADD_DODO_PROXY_] = true;
        lockAddProxy();
    }

    function removeDODOProxy (address oldDodoProxy) public onlyOwner {
        _IS_ALLOWED_PROXY_[oldDodoProxy] = false;
    }
    
    function claimTokens(
        address token,
        address who,
        address dest,
        uint256 amount
    ) external {
        require(_IS_ALLOWED_PROXY_[msg.sender], "DODOApproveProxy:Access restricted");
        IDODOApprove(_DODO_APPROVE_).claimTokens(
            token,
            who,
            dest,
            amount
        );
    }

    function isAllowedProxy(address _proxy) external view returns (bool) {
        return _IS_ALLOWED_PROXY_[_proxy];
    }
}

// File: contracts/intf/IERC20.sol


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

// File: contracts/intf/IWETH.sol



interface IWETH {
    function totalSupply() external view returns (uint256);

    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 src,
        address dst,
        uint256 wad
    ) external returns (bool);

    function deposit() external payable;

    function withdraw(uint256 wad) external;
}

// File: contracts/lib/SafeMath.sol


/**
 * @title SafeMath
 * @author DODO Breeder
 *
 * @notice Math operations with safety checks that revert on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "DIVIDING_ERROR");
        return a / b;
    }

    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SUB_ERROR");
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = x / 2 + 1;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

// File: contracts/lib/SafeERC20.sol

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;

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

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

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        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));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length

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

// File: contracts/SmartRoute/lib/UniversalERC20.sol



library UniversalERC20 {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    IERC20 private constant ETH_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);

    function universalTransfer(
        IERC20 token,
        address payable to,
        uint256 amount
    ) internal {
        if (amount > 0) {
            if (isETH(token)) {
                to.transfer(amount);
            } else {
                token.safeTransfer(to, amount);
            }
        }
    }

    function universalApproveMax(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        uint256 allowance = token.allowance(address(this), to);
        if (allowance < amount) {
            if (allowance > 0) {
                token.safeApprove(to, 0);
            }
            token.safeApprove(to, uint256(-1));
        }
    }

    function universalBalanceOf(IERC20 token, address who) internal view returns (uint256) {
        if (isETH(token)) {
            return who.balance;
        } else {
            return token.balanceOf(who);
        }
    }

    function tokenBalanceOf(IERC20 token, address who) internal view returns (uint256) {
        return token.balanceOf(who);
    }

    function isETH(IERC20 token) internal pure returns (bool) {
        return token == ETH_ADDRESS;
    }
}

// File: contracts/SmartRoute/intf/IDODOAdapter.sol


interface IDODOAdapter {
    
    function sellBase(address to, address pool, bytes memory data) external;

    function sellQuote(address to, address pool, bytes memory data) external;
}

// File: contracts/SmartRoute/proxies/DODORouteProxy.sol




/**
 * @title DODORouteProxy
 * @author DODO Breeder
 *
 * @notice Entrance of Split trading in DODO platform
 */
contract DODORouteProxy {
    using SafeMath for uint256;
    using UniversalERC20 for IERC20;

    // ============ Storage ============

    address constant _ETH_ADDRESS_ = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
    address public immutable _WETH_;
    address public immutable _DODO_APPROVE_PROXY_;

    struct PoolInfo {
        uint256 direction;
        uint256 poolEdition;
        uint256 weight;
        address pool;
        address adapter;
        bytes moreInfo;
    }

    // ============ Events ============

     event OrderHistory(
        address fromToken,
        address toToken,
        address sender,
        uint256 fromAmount,
        uint256 returnAmount
    );

    // ============ Modifiers ============

    modifier judgeExpired(uint256 deadLine) {
        require(deadLine >= block.timestamp, "DODORouteProxy: EXPIRED");
        _;
    }

    fallback() external payable {}

    receive() external payable {}

    constructor (
        address payable weth,
        address dodoApproveProxy
    ) public {
        _WETH_ = weth;
        _DODO_APPROVE_PROXY_ = dodoApproveProxy;
    }

    function mixSwap(
        address fromToken,
        address toToken,
        uint256 fromTokenAmount,
        uint256 minReturnAmount,
        address[] memory mixAdapters,
        address[] memory mixPairs,
        address[] memory assetTo,
        uint256 directions,
        bytes[] memory moreInfos,
        uint256 deadLine
    ) external payable judgeExpired(deadLine) returns (uint256 returnAmount) {
        require(mixPairs.length > 0, "DODORouteProxy: PAIRS_EMPTY");
        require(mixPairs.length == mixAdapters.length, "DODORouteProxy: PAIR_ADAPTER_NOT_MATCH");
        require(mixPairs.length == assetTo.length - 1, "DODORouteProxy: PAIR_ASSETTO_NOT_MATCH");
        require(minReturnAmount > 0, "DODORouteProxy: RETURN_AMOUNT_ZERO");

        address _fromToken = fromToken;
        address _toToken = toToken;
        uint256 _fromTokenAmount = fromTokenAmount;
        
        uint256 toTokenOriginBalance = IERC20(_toToken).universalBalanceOf(msg.sender);
        
        _deposit(msg.sender, assetTo[0], _fromToken, _fromTokenAmount, _fromToken == _ETH_ADDRESS_);

        for (uint256 i = 0; i < mixPairs.length; i++) {
            if (directions & 1 == 0) {
                IDODOAdapter(mixAdapters[i]).sellBase(assetTo[i + 1],mixPairs[i], moreInfos[i]);
            } else {
                IDODOAdapter(mixAdapters[i]).sellQuote(assetTo[i + 1],mixPairs[i], moreInfos[i]);
            }
            directions = directions >> 1;
        }

        if(_toToken == _ETH_ADDRESS_) {
            returnAmount = IWETH(_WETH_).balanceOf(address(this));
            IWETH(_WETH_).withdraw(returnAmount);
            msg.sender.transfer(returnAmount);
        }else {
            returnAmount = IERC20(_toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance);
        }

        require(returnAmount >= minReturnAmount, "DODORouteProxy: Return amount is not enough");

        emit OrderHistory(
            _fromToken,
            _toToken,
            msg.sender,
            _fromTokenAmount,
            returnAmount
        );
    }

    function dodoMutliSwap(
        uint256 fromTokenAmount,
        uint256 minReturnAmount,
        uint256[] memory totalWeight,
        uint256[] memory splitNumber,
        address[] memory midToken,
        address[] memory assetFrom,
        bytes[] memory sequence,
        uint256 deadLine
    ) external payable judgeExpired(deadLine) returns (uint256 returnAmount) {
        require(assetFrom.length == splitNumber.length, 'DODORouteProxy: PAIR_ASSETTO_NOT_MATCH');        
        require(minReturnAmount > 0, "DODORouteProxy: RETURN_AMOUNT_ZERO");
        
        uint256 _fromTokenAmount = fromTokenAmount;
        address fromToken = midToken[0];
        address toToken = midToken[midToken.length - 1];

        uint256 toTokenOriginBalance = IERC20(toToken).universalBalanceOf(msg.sender);
        _deposit(msg.sender, assetFrom[0], fromToken, _fromTokenAmount, fromToken == _ETH_ADDRESS_);

        _multiSwap(totalWeight, midToken, splitNumber, sequence, assetFrom);
    
        if(toToken == _ETH_ADDRESS_) {
            returnAmount = IWETH(_WETH_).balanceOf(address(this));
            IWETH(_WETH_).withdraw(returnAmount);
            msg.sender.transfer(returnAmount);
        }else {
            returnAmount = IERC20(toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance);
        }

        require(returnAmount >= minReturnAmount, "DODORouteProxy: Return amount is not enough");
    
        emit OrderHistory(
            fromToken,
            toToken,
            msg.sender,
            _fromTokenAmount,
            returnAmount
        );    
    }

    
    //====================== internal =======================

    function _multiSwap(
        uint256[] memory totalWeight,
        address[] memory midToken,
        uint256[] memory splitNumber,
        bytes[] memory swapSequence,
        address[] memory assetFrom
    ) internal { 
        for(uint256 i = 1; i < splitNumber.length; i++) { 
            // define midtoken address, ETH -> WETH address
            uint256 curTotalAmount = IERC20(midToken[i]).tokenBalanceOf(assetFrom[i-1]);
            uint256 curTotalWeight = totalWeight[i-1];
            
            for(uint256 j = splitNumber[i-1]; j < splitNumber[i]; j++) {
                PoolInfo memory curPoolInfo;
                {
                    (address pool, address adapter, uint256 mixPara, bytes memory moreInfo) = abi.decode(swapSequence[j], (address, address, uint256, bytes));
                
                    curPoolInfo.direction = mixPara >> 17;
                    curPoolInfo.weight = (0xffff & mixPara) >> 9;
                    curPoolInfo.poolEdition = (0xff & mixPara);
                    curPoolInfo.pool = pool;
                    curPoolInfo.adapter = adapter;
                    curPoolInfo.moreInfo = moreInfo;
                }

                if(assetFrom[i-1] == address(this)) {
                    uint256 curAmount = curTotalAmount.div(curTotalWeight).mul(curPoolInfo.weight);
            
                    if(curPoolInfo.poolEdition == 1) {   
                        //For using transferFrom pool (like dodoV1, Curve)
                        IERC20(midToken[i]).transfer(curPoolInfo.adapter, curAmount);
                    } else {
                        //For using transfer pool (like dodoV2)
                        IERC20(midToken[i]).transfer(curPoolInfo.pool, curAmount);
                    }
                }
                
                if(curPoolInfo.direction == 0) {
                    IDODOAdapter(curPoolInfo.adapter).sellBase(assetFrom[i], curPoolInfo.pool, curPoolInfo.moreInfo);
                } else {
                    IDODOAdapter(curPoolInfo.adapter).sellQuote(assetFrom[i], curPoolInfo.pool, curPoolInfo.moreInfo);
                }
            }
        }
    }

    function _deposit(
        address from,
        address to,
        address token,
        uint256 amount,
        bool isETH
    ) internal {
        if (isETH) {
            if (amount > 0) {
                IWETH(_WETH_).deposit{value: amount}();
                if (to != address(this)) SafeERC20.safeTransfer(IERC20(_WETH_), to, amount);
            }
        } else {
            IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(token, from, to, amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"weth","type":"address"},{"internalType":"address","name":"dodoApproveProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"fromToken","type":"address"},{"indexed":false,"internalType":"address","name":"toToken","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"}],"name":"OrderHistory","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_DODO_APPROVE_PROXY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_WETH_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256[]","name":"totalWeight","type":"uint256[]"},{"internalType":"uint256[]","name":"splitNumber","type":"uint256[]"},{"internalType":"address[]","name":"midToken","type":"address[]"},{"internalType":"address[]","name":"assetFrom","type":"address[]"},{"internalType":"bytes[]","name":"sequence","type":"bytes[]"},{"internalType":"uint256","name":"deadLine","type":"uint256"}],"name":"dodoMutliSwap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"address[]","name":"mixAdapters","type":"address[]"},{"internalType":"address[]","name":"mixPairs","type":"address[]"},{"internalType":"address[]","name":"assetTo","type":"address[]"},{"internalType":"uint256","name":"directions","type":"uint256"},{"internalType":"bytes[]","name":"moreInfos","type":"bytes[]"},{"internalType":"uint256","name":"deadLine","type":"uint256"}],"name":"mixSwap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b5060405162001a7038038062001a70833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c61197a620000f6600039806108b55280610a5552508060c152806103c3528061046252806106ea5280610789528061098b5280610a13525061197a6000f3fe6080604052600436106100435760003560e01c80630d4eec8f1461004c5780637617b389146100775780638179178814610097578063eb99be12146100aa5761004a565b3661004a57005b005b34801561005857600080fd5b506100616100bf565b60405161006e9190611540565b60405180910390f35b61008a61008536600461130f565b6100e3565b60405161006e919061188c565b61008a6100a536600461143b565b61059a565b3480156100b657600080fd5b506100616108b3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000814281101561010f5760405162461bcd60e51b815260040161010690611618565b60405180910390fd5b60008751116101305760405162461bcd60e51b81526004016101069061164f565b87518751146101515760405162461bcd60e51b815260040161010690611686565b60018651038751146101755760405162461bcd60e51b8152600401610106906117d9565b600089116101955760405162461bcd60e51b815260040161010690611774565b8b8b8b60006101b36001600160a01b0384163363ffffffff6108d716565b90506101fe338b6000815181106101c657fe5b6020026020010151868573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316896001600160a01b03161461097d565b60005b8b518110156103865760018a166102c8578c818151811061021e57fe5b60200260200101516001600160a01b03166330e6ae318c836001018151811061024357fe5b60200260200101518e848151811061025757fe5b60200260200101518c858151811061026b57fe5b60200260200101516040518463ffffffff1660e01b8152600401610291939291906115b2565b600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b5050505061037a565b8c81815181106102d457fe5b60200260200101516001600160a01b0316636f7929f28c83600101815181106102f957fe5b60200260200101518e848151811061030d57fe5b60200260200101518c858151811061032157fe5b60200260200101516040518463ffffffff1660e01b8152600401610347939291906115b2565b600060405180830381600087803b15801561036157600080fd5b505af1158015610375573d6000803e3d6000fd5b505050505b6001998a1c9901610201565b506001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156104fc576040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906103f8903090600401611540565b60206040518083038186803b15801561041057600080fd5b505afa158015610424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190611423565b604051632e1a7d4d60e01b81529096506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061049790899060040161188c565b600060405180830381600087803b1580156104b157600080fd5b505af11580156104c5573d6000803e3d6000fd5b505060405133925088156108fc02915088906000818181858888f193505050501580156104f6573d6000803e3d6000fd5b50610528565b610525816105196001600160a01b0386163363ffffffff610aca16565b9063ffffffff610af916565b95505b8c8610156105485760405162461bcd60e51b8152600401610106906116cc565b7f92ceb067a9883c85aba061e46b9edf505a0d6e81927c4b966ebed543a5221787848433858a60405161057f959493929190611554565b60405180910390a150505050509a9950505050505050505050565b600081428110156105bd5760405162461bcd60e51b815260040161010690611618565b86518551146105de5760405162461bcd60e51b8152600401610106906117d9565b600089116105fe5760405162461bcd60e51b815260040161010690611774565b60008a905060008760008151811061061257fe5b6020026020010151905060008860018a51038151811061062e57fe5b60200260200101519050600061065633836001600160a01b03166108d790919063ffffffff16565b90506106a1338a60008151811061066957fe5b6020026020010151858773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316886001600160a01b03161461097d565b6106ae8c8b8d8b8d610b21565b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610823576040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061071f903090600401611540565b60206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190611423565b604051632e1a7d4d60e01b81529096506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906107be90899060040161188c565b600060405180830381600087803b1580156107d857600080fd5b505af11580156107ec573d6000803e3d6000fd5b505060405133925088156108fc02915088906000818181858888f1935050505015801561081d573d6000803e3d6000fd5b50610843565b610840816105196001600160a01b0385163363ffffffff610aca16565b95505b8c8610156108635760405162461bcd60e51b8152600401610106906116cc565b7f92ceb067a9883c85aba061e46b9edf505a0d6e81927c4b966ebed543a5221787838333878a60405161089a959493929190611554565b60405180910390a1505050505098975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006108e283610f00565b156108f857506001600160a01b03811631610977565b6040516370a0823160e01b81526001600160a01b038416906370a0823190610924908590600401611540565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190611423565b90505b92915050565b8015610a3e578115610a39577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156109e457600080fd5b505af11580156109f8573d6000803e3d6000fd5b505050506001600160a01b03851630149050610a3957610a397f00000000000000000000000000000000000000000000000000000000000000008584610f25565b610ac3565b60405163052f523360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630a5ea46690610a90908690899089908890600401611588565b600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b505050505b5050505050565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610924908590600401611540565b600082821115610b1b5760405162461bcd60e51b8152600401610106906117b6565b50900390565b60015b8351811015610ef8576000610b74836001840381518110610b4157fe5b6020026020010151878481518110610b5557fe5b60200260200101516001600160a01b0316610aca90919063ffffffff16565b90506000876001840381518110610b8757fe5b602002602001015190506000866001850381518110610ba257fe5b602002602001015190505b868481518110610bb957fe5b6020026020010151811015610eed57610bd06110a9565b600080600060608a8681518110610be357fe5b6020026020010151806020019051810190610bfe9190611268565b601182901c8952607f600983901c1660408a015260ff90911660208901526001600160a01b0392831660608901529116608087015260a0860152505087513092508891506000198801908110610c5057fe5b60200260200101516001600160a01b03161415610dd6576040810151600090610c8f90610c83878763ffffffff610f8016565b9063ffffffff610fb216565b9050816020015160011415610d3b57898681518110610caa57fe5b60200260200101516001600160a01b031663a9059cbb8360800151836040518363ffffffff1660e01b8152600401610ce39291906115ff565b602060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190611403565b50610dd4565b898681518110610d4757fe5b60200260200101516001600160a01b031663a9059cbb8360600151836040518363ffffffff1660e01b8152600401610d809291906115ff565b602060405180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd29190611403565b505b505b8051610e625780608001516001600160a01b03166330e6ae31878781518110610dfb57fe5b602002602001015183606001518460a001516040518463ffffffff1660e01b8152600401610e2b939291906115b2565b600060405180830381600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b50505050610ee4565b80608001516001600160a01b0316636f7929f2878781518110610e8157fe5b602002602001015183606001518460a001516040518463ffffffff1660e01b8152600401610eb1939291906115b2565b600060405180830381600087803b158015610ecb57600080fd5b505af1158015610edf573d6000803e3d6000fd5b505050505b50600101610bad565b505050600101610b24565b505050505050565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14919050565b610f7b8363a9059cbb60e01b8484604051602401610f449291906115ff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610fec565b505050565b6000808211610fa15760405162461bcd60e51b81526004016101069061174c565b818381610faa57fe5b049392505050565b600082610fc157506000610977565b82820282848281610fce57fe5b04146109745760405162461bcd60e51b815260040161010690611869565b60006060836001600160a01b0316836040516110089190611524565b6000604051808303816000865af19150503d8060008114611045576040519150601f19603f3d011682016040523d82523d6000602084013e61104a565b606091505b50915091508161106c5760405162461bcd60e51b815260040161010690611717565b8051156110a357808060200190518101906110879190611403565b6110a35760405162461bcd60e51b81526004016101069061181f565b50505050565b6040518060c0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b80356109778161192c565b600082601f83011261110c578081fd5b813561111f61111a826118bc565b611895565b81815291506020808301908481018184028601820187101561114057600080fd5b60005b848110156111685781356111568161192c565b84529282019290820190600101611143565b505050505092915050565b600082601f830112611183578081fd5b813561119161111a826118bc565b818152915060208083019084810160005b84811015611168578135870188603f8201126111bd57600080fd5b838101356111cd61111a826118dc565b81815260408b818486010111156111e357600080fd5b828185018884013750600091810186019190915285525092820192908201906001016111a2565b600082601f83011261121a578081fd5b813561122861111a826118bc565b81815291506020808301908481018184028601820187101561124957600080fd5b60005b848110156111685781358452928201929082019060010161124c565b6000806000806080858703121561127d578384fd5b84516112888161192c565b60208601519094506112998161192c565b60408601516060870151919450925067ffffffffffffffff8111156112bc578182fd5b80860187601f8201126112cd578283fd5b805191506112dd61111a836118dc565b8281528860208484010111156112f1578384fd5b611302836020830160208501611900565b9598949750929550505050565b6000806000806000806000806000806101408b8d03121561132e578586fd5b6113388c8c6110f1565b99506113478c60208d016110f1565b985060408b0135975060608b0135965060808b013567ffffffffffffffff80821115611371578788fd5b61137d8e838f016110fc565b975060a08d0135915080821115611392578687fd5b61139e8e838f016110fc565b965060c08d01359150808211156113b3578586fd5b6113bf8e838f016110fc565b955060e08d013594506101008d01359150808211156113dc578384fd5b506113e98d828e01611173565b9250506101208b013590509295989b9194979a5092959850565b600060208284031215611414578081fd5b81518015158114610974578182fd5b600060208284031215611434578081fd5b5051919050565b600080600080600080600080610100898b031215611457578384fd5b8835975060208901359650604089013567ffffffffffffffff8082111561147c578586fd5b6114888c838d0161120a565b975060608b013591508082111561149d578586fd5b6114a98c838d0161120a565b965060808b01359150808211156114be578586fd5b6114ca8c838d016110fc565b955060a08b01359150808211156114df578485fd5b6114eb8c838d016110fc565b945060c08b0135915080821115611500578384fd5b5061150d8b828c01611173565b92505060e089013590509295985092959890939650565b60008251611536818460208701611900565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b600060018060a01b0380861683528085166020840152506060604083015282518060608401526115e9816080850160208701611900565b601f01601f191691909101608001949350505050565b6001600160a01b03929092168252602082015260400190565b60208082526017908201527f444f444f526f75746550726f78793a2045585049524544000000000000000000604082015260600190565b6020808252601b908201527f444f444f526f75746550726f78793a2050414952535f454d5054590000000000604082015260600190565b60208082526026908201527f444f444f526f75746550726f78793a20504149525f414441505445525f4e4f546040820152650be9a82a886960d31b606082015260800190565b6020808252602b908201527f444f444f526f75746550726f78793a2052657475726e20616d6f756e7420697360408201526a040dcdee840cadcdeeaced60ab1b606082015260800190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600e908201526d2224ab24a224a723afa2a92927a960911b604082015260600190565b60208082526022908201527f444f444f526f75746550726f78793a2052455455524e5f414d4f554e545f5a45604082015261524f60f01b606082015260800190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526026908201527f444f444f526f75746550726f78793a20504149525f4153534554544f5f4e4f546040820152650be9a82a886960d31b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff811182821017156118b457600080fd5b604052919050565b600067ffffffffffffffff8211156118d2578081fd5b5060209081020190565b600067ffffffffffffffff8211156118f2578081fd5b50601f01601f191660200190565b60005b8381101561191b578181015183820152602001611903565b838111156110a35750506000910152565b6001600160a01b038116811461194157600080fd5b5056fea2646970667358221220dbbd9888adbcc1054e6920d6da5017b9335680caa7689de59140cc96322b51dc64736f6c634300060900330000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7

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

0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7

-----Decoded View---------------
Arg [0] : weth (address): 0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : dodoApproveProxy (address): 0x01feea29da5ae41b0b5f6b10b93ee34752ef80d7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : 00000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7


Deployed ByteCode Sourcemap

13743:7692:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13973:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14917:2111;;;;;;;;;:::i;:::-;;;;;;;;17036:1626;;;;;;;;;:::i;14011:45::-;;;;;;;;;;;;;:::i;13973:31::-;;;:::o;14917:2111::-;15313:20;15294:8;14588:15;14576:8;:27;;14568:63;;;;-1:-1:-1;;;14568:63:0;;;;;;;;;;;;;;;;;15372:1:::1;15354:8;:15;:19;15346:59;;;;-1:-1:-1::0;;;15346:59:0::1;;;;;;;;;15443:11;:18;15424:8;:15;:37;15416:88;;;;-1:-1:-1::0;;;15416:88:0::1;;;;;;;;;15559:1;15542:7;:14;:18;15523:8;:15;:37;15515:88;;;;-1:-1:-1::0;;;15515:88:0::1;;;;;;;;;15640:1;15622:15;:19;15614:66;;;;-1:-1:-1::0;;;15614:66:0::1;;;;;;;;;15714:9:::0;15753:7;15798:15;15693:18:::1;15865:47;-1:-1:-1::0;;;;;15865:35:0;::::1;15901:10;15865:47;:35;:47;:::i;:::-;15834:78;;15933:91;15942:10;15954:7;15962:1;15954:10;;;;;;;;;;;;;;15966;15978:16;13924:42;-1:-1:-1::0;;;;;15996:27:0::1;:10;-1:-1:-1::0;;;;;15996:27:0::1;;15933:8;:91::i;:::-;16042:9;16037:375;16061:8;:15;16057:1;:19;16037:375;;;16115:1;16102:14:::0;::::1;16098:260;;16155:11;16167:1;16155:14;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16142:37:0::1;;16180:7;16188:1;16192;16188:5;16180:14;;;;;;;;;;;;;;16195:8;16204:1;16195:11;;;;;;;;;;;;;;16208:9;16218:1;16208:12;;;;;;;;;;;;;;16142:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16098:260;;;16275:11;16287:1;16275:14;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16262:38:0::1;;16301:7;16309:1;16313;16309:5;16301:14;;;;;;;;;;;;;;16316:8;16325:1;16316:11;;;;;;;;;;;;;;16329:9;16339:1;16329:12;;;;;;;;;;;;;;16262:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16098:260;16399:1;16385:15:::0;;::::1;::::0;16078:3:::1;16037:375;;;-1:-1:-1::0;;;;;;16427:25:0;::::1;13924:42;16427:25;16424:325;;;16484:38;::::0;-1:-1:-1;;;16484:38:0;;-1:-1:-1;;;;;16490:6:0::1;16484:23;::::0;::::1;::::0;:38:::1;::::0;16516:4:::1;::::0;16484:38:::1;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16537:36;::::0;-1:-1:-1;;;16537:36:0;;16469:53;;-1:-1:-1;;;;;;16543:6:0::1;16537:22;::::0;::::1;::::0;:36:::1;::::0;16469:53;;16537:36:::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16588:33:0::1;::::0;:10:::1;::::0;-1:-1:-1;16588:33:0;::::1;;;::::0;-1:-1:-1;16608:12:0;;16588:33:::1;::::0;;;16608:12;16588:10;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16424:325;;;16668:69;16716:20:::0;16668:43:::1;-1:-1:-1::0;;;;;16668:31:0;::::1;16700:10;16668:43;:31;:43;:::i;:::-;:47:::0;:69:::1;:47;:69;:::i;:::-;16653:84;;16424:325;16785:15;16769:12;:31;;16761:87;;;;-1:-1:-1::0;;;16761:87:0::1;;;;;;;;;16866:154;16893:10;16918:8;16941:10;16966:16;16997:12;16866:154;;;;;;;;;;;;;;;;;;;14642:1;;;;14917:2111:::0;;;;;;;;;;;;;:::o;17036:1626::-;17395:20;17376:8;14588:15;14576:8;:27;;14568:63;;;;-1:-1:-1;;;14568:63:0;;;;;;;;;17456:11:::1;:18;17436:9;:16;:38;17428:89;;;;-1:-1:-1::0;;;17428:89:0::1;;;;;;;;;17562:1;17544:15;:19;17536:66;;;;-1:-1:-1::0;;;17536:66:0::1;;;;;;;;;17623:24;17650:15;17623:42;;17676:17;17696:8;17705:1;17696:11;;;;;;;;;;;;;;17676:31;;17718:15;17736:8;17763:1;17745:8;:15;:19;17736:29;;;;;;;;;;;;;;17718:47;;17778:28;17809:46;17844:10;17816:7;-1:-1:-1::0;;;;;17809:34:0::1;;;:46;;;;:::i;:::-;17778:77;;17866:91;17875:10;17887:9;17897:1;17887:12;;;;;;;;;;;;;;17901:9;17912:16;13924:42;-1:-1:-1::0;;;;;17930:26:0::1;:9;-1:-1:-1::0;;;;;17930:26:0::1;;17866:8;:91::i;:::-;17970:67;17981:11;17994:8;18004:11;18017:8;18027:9;17970:10;:67::i;:::-;-1:-1:-1::0;;;;;18057:24:0;::::1;13924:42;18057:24;18054:323;;;18113:38;::::0;-1:-1:-1;;;18113:38:0;;-1:-1:-1;;;;;18119:6:0::1;18113:23;::::0;::::1;::::0;:38:::1;::::0;18145:4:::1;::::0;18113:38:::1;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18166:36;::::0;-1:-1:-1;;;18166:36:0;;18098:53;;-1:-1:-1;;;;;;18172:6:0::1;18166:22;::::0;::::1;::::0;:36:::1;::::0;18098:53;;18166:36:::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18217:33:0::1;::::0;:10:::1;::::0;-1:-1:-1;18217:33:0;::::1;;;::::0;-1:-1:-1;18237:12:0;;18217:33:::1;::::0;;;18237:12;18217:10;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18054:323;;;18297:68;18344:20:::0;18297:42:::1;-1:-1:-1::0;;;;;18297:30:0;::::1;18328:10;18297:42;:30;:42;:::i;:68::-;18282:83;;18054:323;18413:15;18397:12;:31;;18389:87;;;;-1:-1:-1::0;;;18389:87:0::1;;;;;;;;;18498:152;18525:9;18549:7;18571:10;18596:16;18627:12;18498:152;;;;;;;;;;;;;;;;;;;14642:1;;;;17036:1626:::0;;;;;;;;;;;:::o;14011:45::-;;;:::o;12820:228::-;12898:7;12922:12;12928:5;12922;:12::i;:::-;12918:123;;;-1:-1:-1;;;;;;12958:11:0;;;12951:18;;12918:123;13009:20;;-1:-1:-1;;;13009:20:0;;-1:-1:-1;;;;;13009:15:0;;;;;:20;;13025:3;;13009:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13002:27;;12918:123;12820:228;;;;:::o;20937:495::-;21100:5;21096:329;;;21126:10;;21122:183;;21163:6;-1:-1:-1;;;;;21157:21:0;;21186:6;21157:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;21218:19:0;;21232:4;21218:19;;-1:-1:-1;21214:75:0;;21239:50;21269:6;21278:2;21282:6;21239:22;:50::i;:::-;21096:329;;;21337:76;;-1:-1:-1;;;21337:76:0;;-1:-1:-1;;;;;21355:20:0;21337:51;;;;:76;;21389:5;;21396:4;;21402:2;;21406:6;;21337:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21096:329;20937:495;;;;;:::o;13056:129::-;13157:20;;-1:-1:-1;;;13157:20:0;;13130:7;;-1:-1:-1;;;;;13157:15:0;;;;;:20;;13173:3;;13157:20;;;;8134:137;8192:7;8225:1;8220;:6;;8212:28;;;;-1:-1:-1;;;8212:28:0;;;;;;;;;-1:-1:-1;8258:5:0;;;8134:137::o;18741:2188::-;18994:1;18978:1944;19001:11;:18;18997:1;:22;18978:1944;;;19103:22;19128:50;19163:9;19175:1;19173;:3;19163:14;;;;;;;;;;;;;;19135:8;19144:1;19135:11;;;;;;;;;;;;;;-1:-1:-1;;;;;19128:34:0;;;:50;;;;:::i;:::-;19103:75;;19193:22;19218:11;19232:1;19230;:3;19218:16;;;;;;;;;;;;;;19193:41;;19267:9;19279:11;19293:1;19291;:3;19279:16;;;;;;;;;;;;;;19267:28;;19263:1648;19301:11;19313:1;19301:14;;;;;;;;;;;;;;19297:1;:18;19263:1648;;;19341:27;;:::i;:::-;19411:12;19425:15;19442;19459:21;19495:12;19508:1;19495:15;;;;;;;;;;;;;;19484:63;;;;;;;;;;;;;;19623:2;19612:13;;;19588:37;;19669:23;19691:1;19669:23;;;;19648:18;;;:44;19742:4;:14;;;19715:23;;;:42;-1:-1:-1;;;;;19780:23:0;;;:16;;;:23;19826:29;;:19;;;:29;19878:20;;;:31;-1:-1:-1;;19952:14:0;;19978:4;;-1:-1:-1;19952:9:0;;-1:-1:-1;;;19962:3:0;;;19952:14;;;;;;;;;;;;-1:-1:-1;;;;;19952:31:0;;19949:595;;;20067:18;;;;20008:17;;20028:58;;:34;:14;20047;20028:34;:18;:34;:::i;:::-;:38;:58;:38;:58;:::i;:::-;20008:78;;20126:11;:23;;;20153:1;20126:28;20123:402;;;20269:8;20278:1;20269:11;;;;;;;;;;;;;;-1:-1:-1;;;;;20262:28:0;;20291:11;:19;;;20312:9;20262:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20123:402;;;20451:8;20460:1;20451:11;;;;;;;;;;;;;;-1:-1:-1;;;;;20444:28:0;;20473:11;:16;;;20491:9;20444:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20123:402;19949:595;;20583:21;;20580:316;;20647:11;:19;;;-1:-1:-1;;;;;20634:42:0;;20677:9;20687:1;20677:12;;;;;;;;;;;;;;20691:11;:16;;;20709:11;:20;;;20634:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20580:316;;;20792:11;:19;;;-1:-1:-1;;;;;20779:43:0;;20823:9;20833:1;20823:12;;;;;;;;;;;;;;20837:11;:16;;;20855:11;:20;;;20779:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20580:316;-1:-1:-1;19317:3:0;;19263:1648;;;-1:-1:-1;;;19021:3:0;;18978:1944;;;;18741:2188;;;;;:::o;13193:104::-;-1:-1:-1;;;;;13269:20:0;;12055:42;13269:20;13193:104;;;:::o;9226:211::-;9343:86;9363:5;9393:23;;;9418:2;9422:5;9370:58;;;;;;;;;;;;;;-1:-1:-1;;9370:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;9370:58:0;-1:-1:-1;;;;;;9370:58:0;;;;;;;;;;9343:19;:86::i;:::-;9226:211;;;:::o;7689:141::-;7747:7;7779:1;7775;:5;7767:32;;;;-1:-1:-1;;;7767:32:0;;;;;;;;;7821:1;7817;:5;;;;;;;7689:141;-1:-1:-1;;;7689:141:0:o;7455:226::-;7513:7;7537:6;7533:47;;-1:-1:-1;7567:1:0;7560:8;;7533:47;7604:5;;;7608:1;7604;:5;:1;7628:5;;;;;:10;7620:32;;;;-1:-1:-1;;;7620:32:0;;;;;;;;10799:1046;11459:12;11473:23;11508:5;-1:-1:-1;;;;;11500:19:0;11520:4;11500:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11458:67;;;;11544:7;11536:52;;;;-1:-1:-1;;;11536:52:0;;;;;;;;;11605:17;;:21;11601:237;;11760:10;11749:30;;;;;;;;;;;;;;11741:85;;;;-1:-1:-1;;;11741:85:0;;;;;;;;;10799:1046;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;;317:707;;434:3;427:4;419:6;415:17;411:27;401:2;;-1:-1;;442:12;401:2;489:6;476:20;511:80;526:64;583:6;526:64;;;511:80;;;619:21;;;502:89;-1:-1;663:4;676:14;;;;651:17;;;765;;;756:27;;;;753:36;-1:-1;750:2;;;802:1;;792:12;750:2;827:1;812:206;837:6;834:1;831:13;812:206;;;85:6;72:20;97:33;124:5;97:33;;;905:50;;969:14;;;;997;;;;859:1;852:9;812:206;;;816:14;;;;;394:630;;;;;1048:705;;1174:3;1167:4;1159:6;1155:17;1151:27;1141:2;;-1:-1;;1182:12;1141:2;1229:6;1216:20;1251:89;1266:73;1332:6;1266:73;;1251:89;1368:21;;;1242:98;-1:-1;1412:4;1425:14;;;;1400:17;;;1520:1;1505:242;1530:6;1527:1;1524:13;1505:242;;;1613:3;1600:17;1404:6;1588:30;2731:3;2712:17;1588:30;2712:17;2708:27;2698:2;;1520:1;;2739:12;2698:2;1412:4;1588:30;;2773:20;2808:64;2823:48;2864:6;2823:48;;2808:64;2892:6;2885:5;2878:21;2916:17;2996:3;2916:17;2987:6;1588:30;2978:16;;2975:25;2972:2;;;1520:1;;3003:12;2972:2;24794:6;2916:17;1588:30;2916:17;1412:4;2954:5;2950:16;24771:30;-1:-1;1520:1;24832:16;;;;;24825:27;;;;1625:59;;-1:-1;1698:14;;;;1726;;;;1552:1;1545:9;1505:242;;1779:707;;1896:3;1889:4;1881:6;1877:17;1873:27;1863:2;;-1:-1;;1904:12;1863:2;1951:6;1938:20;1973:80;1988:64;2045:6;1988:64;;1973:80;2081:21;;;1964:89;-1:-1;2125:4;2138:14;;;;2113:17;;;2227;;;2218:27;;;;2215:36;-1:-1;2212:2;;;2264:1;;2254:12;2212:2;2289:1;2274:206;2299:6;2296:1;2293:13;2274:206;;;3596:20;;2367:50;;2431:14;;;;2459;;;;2321:1;2314:9;2274:206;;3807:801;;;;;3998:3;3986:9;3977:7;3973:23;3969:33;3966:2;;;-1:-1;;4005:12;3966:2;234:6;228:13;246:41;281:5;246:41;;;4176:2;4234:22;;228:13;4057:82;;-1:-1;246:41;228:13;246:41;;;4303:2;4353:22;;3744:13;4443:2;4428:18;;4422:25;4184:82;;-1:-1;3744:13;-1:-1;4467:18;4456:30;;4453:2;;;-1:-1;;4489:12;4453:2;4575:6;4564:9;4560:22;3191:3;3184:4;3176:6;3172:17;3168:27;3158:2;;-1:-1;;3199:12;3158:2;3239:6;3233:13;3219:27;;3261:64;3276:48;3317:6;3276:48;;3261:64;3345:6;3338:5;3331:21;3449:3;4176:2;3440:6;3373;3431:16;;3428:25;3425:2;;;-1:-1;;3456:12;3425:2;3476:39;3508:6;4176:2;3407:5;3403:16;4176:2;3373:6;3369:17;3476:39;;;3960:648;;;;-1:-1;3960:648;;-1:-1;;;;3960:648;4615:1935;;;;;;;;;;;4981:3;4969:9;4960:7;4956:23;4952:33;4949:2;;;-1:-1;;4988:12;4949:2;5050:53;5095:7;5071:22;5050:53;;;5040:63;;5158:53;5203:7;5140:2;5183:9;5179:22;5158:53;;;5148:63;;5248:2;5291:9;5287:22;3596:20;5256:63;;5356:2;5399:9;5395:22;3596:20;5364:63;;5492:3;5481:9;5477:19;5464:33;5517:18;;5509:6;5506:30;5503:2;;;-1:-1;;5539:12;5503:2;5569:78;5639:7;5630:6;5619:9;5615:22;5569:78;;;5559:88;;5712:3;5701:9;5697:19;5684:33;5670:47;;5517:18;5729:6;5726:30;5723:2;;;-1:-1;;5759:12;5723:2;5789:78;5859:7;5850:6;5839:9;5835:22;5789:78;;;5779:88;;5932:3;5921:9;5917:19;5904:33;5890:47;;5517:18;5949:6;5946:30;5943:2;;;-1:-1;;5979:12;5943:2;6009:78;6079:7;6070:6;6059:9;6055:22;6009:78;;;5999:88;;6124:3;6168:9;6164:22;3596:20;6133:63;;6261:3;6250:9;6246:19;6233:33;6219:47;;5517:18;6278:6;6275:30;6272:2;;;-1:-1;;6308:12;6272:2;;6338:87;6417:7;6408:6;6397:9;6393:22;6338:87;;;6328:97;;;6462:3;6506:9;6502:22;3596:20;6471:63;;4943:1607;;;;;;;;;;;;;;6557:257;;6669:2;6657:9;6648:7;6644:23;6640:32;6637:2;;;-1:-1;;6675:12;6637:2;2575:6;2569:13;25593:5;24100:13;24093:21;25571:5;25568:32;25558:2;;-1:-1;;25604:12;6821:263;;6936:2;6924:9;6915:7;6911:23;6907:32;6904:2;;;-1:-1;;6942:12;6904:2;-1:-1;3744:13;;6898:186;-1:-1;6898:186;7091:1819;;;;;;;;;7448:3;7436:9;7427:7;7423:23;7419:33;7416:2;;;-1:-1;;7455:12;7416:2;7538:22;3596:20;7507:63;;7607:2;7650:9;7646:22;3596:20;7615:63;;7743:2;7732:9;7728:18;7715:32;7767:18;;7759:6;7756:30;7753:2;;;-1:-1;;7789:12;7753:2;7819:78;7889:7;7880:6;7869:9;7865:22;7819:78;;;7809:88;;7962:2;7951:9;7947:18;7934:32;7920:46;;7767:18;7978:6;7975:30;7972:2;;;-1:-1;;8008:12;7972:2;8038:78;8108:7;8099:6;8088:9;8084:22;8038:78;;;8028:88;;8181:3;8170:9;8166:19;8153:33;8139:47;;7767:18;8198:6;8195:30;8192:2;;;-1:-1;;8228:12;8192:2;8258:78;8328:7;8319:6;8308:9;8304:22;8258:78;;;8248:88;;8401:3;8390:9;8386:19;8373:33;8359:47;;7767:18;8418:6;8415:30;8412:2;;;-1:-1;;8448:12;8412:2;8478:78;8548:7;8539:6;8528:9;8524:22;8478:78;;;8468:88;;8621:3;8610:9;8606:19;8593:33;8579:47;;7767:18;8638:6;8635:30;8632:2;;;-1:-1;;8668:12;8632:2;;8698:87;8777:7;8768:6;8757:9;8753:22;8698:87;;;8688:97;;;8822:3;8866:9;8862:22;3596:20;8831:63;;7410:1500;;;;;;;;;;;;13910:271;;9696:5;23293:12;9807:52;9852:6;9847:3;9840:4;9833:5;9829:16;9807:52;;;9871:16;;;;;14044:137;-1:-1;;14044:137;14188:222;-1:-1;;;;;24188:54;;;;9137:37;;14315:2;14300:18;;14286:124;14662:684;-1:-1;;;;;24188:54;;;9137:37;;24188:54;;;15074:2;15059:18;;9137:37;24188:54;;;;15165:2;15150:18;;8996:58;15248:2;15233:18;;13861:37;;;;15331:3;15316:19;;13861:37;;;;14909:3;14894:19;;14880:466;15353:556;-1:-1;;;;;24188:54;;;9137:37;;24188:54;;;15729:2;15714:18;;9137:37;24188:54;;15812:2;15797:18;;9137:37;15895:2;15880:18;;13861:37;;;;15564:3;15549:19;;15535:374;15916:528;;4467:18;;24199:42;;;;24192:5;24188:54;9144:3;9137:37;24199:42;24192:5;24188:54;16281:2;16270:9;16266:18;9137:37;;16117:2;16318;16307:9;16303:18;16296:48;9328:5;23293:12;23449:6;16117:2;16106:9;16102:18;23437:19;9421:52;9466:6;23477:14;16106:9;23477:14;16281:2;9447:5;9443:16;9421:52;;;25227:7;25211:14;-1:-1;;25207:28;9485:39;;;;23477:14;9485:39;;16088:356;-1:-1;;;;16088:356;16451:333;-1:-1;;;;;24188:54;;;;9137:37;;16770:2;16755:18;;13861:37;16606:2;16591:18;;16577:207;16791:416;16991:2;17005:47;;;10124:2;16976:18;;;23437:19;10160:25;23477:14;;;10140:46;10205:12;;;16962:245;17214:416;17414:2;17428:47;;;10456:2;17399:18;;;23437:19;10492:29;23477:14;;;10472:50;10541:12;;;17385:245;17637:416;17837:2;17851:47;;;10792:2;17822:18;;;23437:19;10828:34;23477:14;;;10808:55;-1:-1;;;10883:12;;;10876:30;10925:12;;;17808:245;18060:416;18260:2;18274:47;;;11176:2;18245:18;;;23437:19;11212:34;23477:14;;;11192:55;-1:-1;;;11267:12;;;11260:35;11314:12;;;18231:245;18483:416;18683:2;18697:47;;;18668:18;;;23437:19;11601:34;23477:14;;;11581:55;11655:12;;;18654:245;18906:416;19106:2;19120:47;;;11906:2;19091:18;;;23437:19;-1:-1;;;23477:14;;;11922:37;11978:12;;;19077:245;19329:416;19529:2;19543:47;;;12229:2;19514:18;;;23437:19;12265:34;23477:14;;;12245:55;-1:-1;;;12320:12;;;12313:26;12358:12;;;19500:245;19752:416;19952:2;19966:47;;;12609:1;19937:18;;;23437:19;-1:-1;;;23477:14;;;12624:32;12675:12;;;19923:245;20175:416;20375:2;20389:47;;;12926:2;20360:18;;;23437:19;12962:34;23477:14;;;12942:55;-1:-1;;;13017:12;;;13010:30;13059:12;;;20346:245;20598:416;20798:2;20812:47;;;13310:2;20783:18;;;23437:19;13346:34;23477:14;;;13326:55;-1:-1;;;13401:12;;;13394:34;13447:12;;;20769:245;21021:416;21221:2;21235:47;;;13698:1;21206:18;;;23437:19;-1:-1;;;23477:14;;;13713:32;13764:12;;;21192:245;21444:222;13861:37;;;21571:2;21556:18;;21542:124;21673:256;21735:2;21729:9;21761:17;;;21836:18;21821:34;;21857:22;;;21818:62;21815:2;;;21893:1;;21883:12;21815:2;21735;21902:22;21713:216;;-1:-1;21713:216;21936:304;;22095:18;22087:6;22084:30;22081:2;;;-1:-1;;22117:12;22081:2;-1:-1;22162:4;22150:17;;;22215:15;;22018:222;22878:321;;23021:18;23013:6;23010:30;23007:2;;;-1:-1;;23043:12;23007:2;-1:-1;25227:7;23097:17;-1:-1;;23093:33;23184:4;23174:15;;22944:255;24867:268;24932:1;24939:101;24953:6;24950:1;24947:13;24939:101;;;25020:11;;;25014:18;25001:11;;;24994:39;24975:2;24968:10;24939:101;;;25055:6;25052:1;25049:13;25046:2;;;-1:-1;;24932:1;25102:16;;25095:27;24916:219;25248:117;-1:-1;;;;;24188:54;;25307:35;;25297:2;;25356:1;;25346:12;25297:2;25291:74;

Swarm Source

ipfs://dbbd9888adbcc1054e6920d6da5017b9335680caa7689de59140cc96322b51dc
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.