Contract 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xaf26d9e63dc25ab9d6ecedb83cbaa833b06f5e28956996e74ab429fe159fa1daSwap Exact Token...284573942022-05-18 5:47:37136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607333.001750011
0x5cf42ca560a04d38577e92ba5edd416d9480df218713cd795d6a90f6590ccc01Swap Exact ETH F...284573772022-05-18 5:47:03136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433798103333.001750009
0x07b81a0f57a96d5c3e59839234d6548ee2350ab060da2244d1cbcde39fd5601cSwap Exact Token...284573702022-05-18 5:46:49136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607333.001750009
0xb6ca9dc7ddc7927c9ddaf49184a207b8d207a97a4c769938e096b1a2f5efc4ceSwap Exact ETH F...284573532022-05-18 5:46:15136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705433.00175001
0xd05ef53e28bf7dafc5261b56aeca4d698dc1d324dac1bcc3c7de7f8d02708ad6Swap Exact Token...284573462022-05-18 5:46:01136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607333.001750011
0xe04cc4a840d5238c18b21a1aa55475a1bb753f2a726ad63be7c9b643621a62ddSwap Exact ETH F...284573312022-05-18 5:45:27136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705433.00175001
0xd750a2988c49b9dc595a55ad66eb7b3f89ac538f0910f72360f2481ad0bc9e9fSwap Exact Token...284573242022-05-18 5:45:13136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607333.001750011
0x90ca8277707df9069024915bee5a999bffff271545f91fc5409eaa06a4c34043Swap Exact ETH F...284573072022-05-18 5:44:39136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705433.001750012
0xa6272c353b2fc81ba464608de8f034c77c75643d67c52267089c907f9314696aSwap Exact Token...284573002022-05-18 5:44:25136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607333.001750013
0x9f92956522e316ac5bd4eabb1995ed9ce9deb646cb67c55e2a311434739d6899Swap Exact ETH F...284572832022-05-18 5:43:51136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705533.001750015
0x1aa3920ca64b30baaecbff1f1f470ce4ca84f9ffa29a35eae5aced87ff8a2499Swap Exact Token...284572782022-05-18 5:43:37136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607333.001750014
0x02568fe10e7ef4e1fefe1cb9cf82cad95a1b36b4c2b794d88c9b92fcffe0b6cbSwap Exact ETH F...284572612022-05-18 5:43:03136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705633.001750026
0x98327a6c6dcd7251317dd9bb47a4347a870a4ab7d5ea8a3237c49ba07570e90fSwap Exact Token...284572542022-05-18 5:42:49136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607733.001750036
0xbd15fbb249c95a834ced33dc8a47b647d79d27d6ff37650798cb50b99c43c827Swap Exact ETH F...284572372022-05-18 5:42:15136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705733.001750034
0xd257eb26f6937f285f27a502df9c3c1552d7b0118e8bbc40bb83a639b2580c6eSwap Exact Token...284572302022-05-18 5:42:01136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607933.001750051
0x1cc87a9ca3877097a08f3478930cf43cd0b1b9eb818f51acc2edfee4b9f6bb85Swap Exact ETH F...284572152022-05-18 5:41:27136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837706133.001750064
0xb95d7a1a6075cbcce03d09a8b997349a87a19d3043e183b29666fbe6ea9bcb83Swap Exact Token...284572112022-05-18 5:41:11136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607933.001750051
0x169ee7bb3795d1b90fa11eba76332a3d5e17e46e8dfb642319b0787ea9e15306Swap Exact ETH F...284572022022-05-18 5:40:35136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705933.001750051
0x92f2c2106448f0a8e4dc2d4eccdcde25d495e2ce938a2295b9e020d3514faf43Swap Exact Token...284571982022-05-18 5:40:19136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607833.001750046
0x550f9d3f623ee1483c3337f5d1ba9f37e52871765541dfb08c39d4ffafd78374Swap Exact ETH F...284571892022-05-18 5:39:43136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705833.00175004
0xe8906d1a25fa245d1562f0329e6757a5b9e681e74a5770386f52b5a4e76d72f2Swap Exact Token...284571852022-05-18 5:39:27136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607733.001750036
0x469dee63cfd62ba8054759e83067b19c93a0fe4f2cf425316a87883df2db67e2Swap Exact ETH F...284571762022-05-18 5:38:51136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705733.001750029
0xfd227cf52165c2d38b87890e0abed64dfcef7b8fb4e235e228044fcb3f409bfbSwap Exact Token...284571722022-05-18 5:38:35136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607533.001750025
0xdb598e9579ca5b940bbe491b792b5ca44703020530088576612bab98ec81e6c9Swap Exact ETH F...284571632022-05-18 5:37:59136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f415 MATIC0.00433837705633.001750023
0x610d092b09ef2d9e5e8a6a9649f498529aa9390d5b917e20b0ea2936c5265ff1Swap Exact Token...284571592022-05-18 5:37:43136 days 6 hrs ago0x5377b3337e4f91136c274f12bfd14f3067783166 IN  0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40 MATIC0.00514962607433.00175002
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb15997eae1fcc466190a5c7cd264a3031d3e17e89e6f7502066cd9d434522a01288408682022-05-27 17:33:40126 days 18 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4 Polygon: WMATIC Token23.199355031899236471 MATIC
0xb15997eae1fcc466190a5c7cd264a3031d3e17e89e6f7502066cd9d434522a01288408682022-05-27 17:33:40126 days 18 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x58d4448c42ee9dbf5b26c031396a0ce139d5c52b0.023222577609508745 MATIC
0xb15997eae1fcc466190a5c7cd264a3031d3e17e89e6f7502066cd9d434522a01288408682022-05-27 17:33:40126 days 18 hrs ago 0x06db4fd0b7fd8587642d3697bd856b6f7a4c2af6 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f423.222577609508745216 MATIC
0x228ac27bac5a6f4cd91ed235bf5e24627b76e14059df705dfe6015fd1dfe5ce3288408682022-05-27 17:33:40126 days 18 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4 Polygon: WMATIC Token23.199355031899236471 MATIC
0x228ac27bac5a6f4cd91ed235bf5e24627b76e14059df705dfe6015fd1dfe5ce3288408682022-05-27 17:33:40126 days 18 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x58d4448c42ee9dbf5b26c031396a0ce139d5c52b0.023222577609508745 MATIC
0x228ac27bac5a6f4cd91ed235bf5e24627b76e14059df705dfe6015fd1dfe5ce3288408682022-05-27 17:33:40126 days 18 hrs ago 0xec7d5b1b85b46080ae3019721cb3e539362fe1bd 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f423.222577609508745216 MATIC
0x3717352c6dabee4304ed97b6309c4f8d9073698eea1fe36585096d5e83065deb284718252022-05-18 14:43:08135 days 21 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4 Polygon: WMATIC Token77.076657301875110462 MATIC
0x3717352c6dabee4304ed97b6309c4f8d9073698eea1fe36585096d5e83065deb284718252022-05-18 14:43:08135 days 21 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x58d4448c42ee9dbf5b26c031396a0ce139d5c52b0.077153811112988098 MATIC
0x3717352c6dabee4304ed97b6309c4f8d9073698eea1fe36585096d5e83065deb284718252022-05-18 14:43:08135 days 21 hrs ago 0x30f1dbb6f1b2beaf101055430d8270c647f40e8b 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f477.15381111298809856 MATIC
0xaf26d9e63dc25ab9d6ecedb83cbaa833b06f5e28956996e74ab429fe159fa1da284573942022-05-18 5:47:37136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x5377b3337e4f91136c274f12bfd14f306778316614.850945534428023167 MATIC
0xaf26d9e63dc25ab9d6ecedb83cbaa833b06f5e28956996e74ab429fe159fa1da284573942022-05-18 5:47:37136 days 6 hrs ago Polygon: WMATIC Token 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f414.850945534428023167 MATIC
0x5cf42ca560a04d38577e92ba5edd416d9480df218713cd795d6a90f6590ccc01284573772022-05-18 5:47:03136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4 Polygon: WMATIC Token14.985 MATIC
0x5cf42ca560a04d38577e92ba5edd416d9480df218713cd795d6a90f6590ccc01284573772022-05-18 5:47:03136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x58d4448c42ee9dbf5b26c031396a0ce139d5c52b0.015 MATIC
0x07b81a0f57a96d5c3e59839234d6548ee2350ab060da2244d1cbcde39fd5601c284573702022-05-18 5:46:49136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x5377b3337e4f91136c274f12bfd14f306778316614.850832485612794318 MATIC
0x07b81a0f57a96d5c3e59839234d6548ee2350ab060da2244d1cbcde39fd5601c284573702022-05-18 5:46:49136 days 6 hrs ago Polygon: WMATIC Token 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f414.850832485612794318 MATIC
0xb6ca9dc7ddc7927c9ddaf49184a207b8d207a97a4c769938e096b1a2f5efc4ce284573532022-05-18 5:46:15136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4 Polygon: WMATIC Token14.985 MATIC
0xb6ca9dc7ddc7927c9ddaf49184a207b8d207a97a4c769938e096b1a2f5efc4ce284573532022-05-18 5:46:15136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x58d4448c42ee9dbf5b26c031396a0ce139d5c52b0.015 MATIC
0xd05ef53e28bf7dafc5261b56aeca4d698dc1d324dac1bcc3c7de7f8d02708ad6284573462022-05-18 5:46:01136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x5377b3337e4f91136c274f12bfd14f306778316614.850859356890552856 MATIC
0xd05ef53e28bf7dafc5261b56aeca4d698dc1d324dac1bcc3c7de7f8d02708ad6284573462022-05-18 5:46:01136 days 6 hrs ago Polygon: WMATIC Token 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f414.850859356890552856 MATIC
0xe04cc4a840d5238c18b21a1aa55475a1bb753f2a726ad63be7c9b643621a62dd284573312022-05-18 5:45:27136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4 Polygon: WMATIC Token14.985 MATIC
0xe04cc4a840d5238c18b21a1aa55475a1bb753f2a726ad63be7c9b643621a62dd284573312022-05-18 5:45:27136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x58d4448c42ee9dbf5b26c031396a0ce139d5c52b0.015 MATIC
0xd750a2988c49b9dc595a55ad66eb7b3f89ac538f0910f72360f2481ad0bc9e9f284573242022-05-18 5:45:13136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x5377b3337e4f91136c274f12bfd14f306778316614.850887770834780319 MATIC
0xd750a2988c49b9dc595a55ad66eb7b3f89ac538f0910f72360f2481ad0bc9e9f284573242022-05-18 5:45:13136 days 6 hrs ago Polygon: WMATIC Token 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f414.850887770834780319 MATIC
0x90ca8277707df9069024915bee5a999bffff271545f91fc5409eaa06a4c34043284573072022-05-18 5:44:39136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f4 Polygon: WMATIC Token14.985 MATIC
0x90ca8277707df9069024915bee5a999bffff271545f91fc5409eaa06a4c34043284573072022-05-18 5:44:39136 days 6 hrs ago 0xb80c1d8bf54f75a0cccffd4b277f6f37cd7241f40x58d4448c42ee9dbf5b26c031396a0ce139d5c52b0.015 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EddaRouter

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : EddaRouter.sol
pragma solidity =0.6.6;

interface IEddaFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function eddaRouter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function setRouter(address) external;
}

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

interface IEddaRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IEddaRouter02 is IEddaRouter01 {
    function eddaTreasury() external returns(address);
    function feePercent() external returns(uint256);
}

interface IEddaPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function router() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address, address) external;
}

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}

library EddaLibrary {
    using SafeMath for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'EddaLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'EddaLibrary: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'316389f92e931d4d237f23da31ca69e70c85c65dac0f5b5b26d61ee2be0347fb' // init code hash
            ))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        pairFor(factory, tokenA, tokenB);
        (uint reserve0, uint reserve1,) = IEddaPair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'EddaLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'EddaLibrary: INSUFFICIENT_LIQUIDITY');
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'EddaLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'EddaLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(996);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'EddaLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'EddaLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(996);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'EddaLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'EddaLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

contract EddaRouter is IEddaRouter02 {
    using SafeMath for uint;

    address public immutable override factory;
    address public immutable override WETH;
    address public override eddaTreasury;
    uint256 public override feePercent;
    address private _admin;

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'Edda: EXPIRED');
        _;
    }

    constructor(address _factory, address _WETH, address _eddaTreasury) public {
        factory = _factory;
        WETH = _WETH;
        eddaTreasury = _eddaTreasury;
        feePercent = 10;
        _admin = msg.sender;
    }

    function setTreasuryAndFee(address _eddaTreasury, uint256 _newFee) external { 
        require(msg.sender == _admin, "Only-admin");
        eddaTreasury = _eddaTreasury;
        feePercent = _newFee;
    }
    receive() external payable {
        assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract
    }

    function _takeFeeExactAmountIn(address _token, uint256 _amountIn) private returns(uint256, uint256) {
        uint256 feeAmount = _amountIn.mul(feePercent) / 10000;
        if(_token == WETH && msg.value > 0) {  // swap ETH
            TransferHelper.safeTransferETH(eddaTreasury, feeAmount);
        } else { 
            TransferHelper.safeTransferFrom(_token, msg.sender, eddaTreasury, feeAmount);
        }
        return (_amountIn.sub(feeAmount), feeAmount);
    }

    // **** ADD LIQUIDITY ****
    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (IEddaFactory(factory).getPair(tokenA, tokenB) == address(0)) {
            IEddaFactory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = EddaLibrary.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = EddaLibrary.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'EddaRouter: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = EddaLibrary.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'EddaRouter: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = EddaLibrary.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IEddaPair(pair).mint(to);
    }
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
        (amountToken, amountETH) = _addLiquidity(
            token,
            WETH,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountETHMin
        );
        address pair = EddaLibrary.pairFor(factory, token, WETH);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWETH(WETH).deposit{value: amountETH}();
        assert(IWETH(WETH).transfer(pair, amountETH));
        liquidity = IEddaPair(pair).mint(to);
        // refund dust eth, if any
        if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);
    }

    // **** REMOVE LIQUIDITY ****
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = EddaLibrary.pairFor(factory, tokenA, tokenB);
        IEddaPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IEddaPair(pair).burn(to);
        (address token0,) = EddaLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'EddaRouter: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'EddaRouter: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {
        (amountToken, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountA, uint amountB) {
        address pair = EddaLibrary.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IEddaPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountETH) {
        address pair = EddaLibrary.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IEddaPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);
    }
    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = EddaLibrary.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? EddaLibrary.pairFor(factory, output, path[i + 2]) : _to;
            IEddaPair(EddaLibrary.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        (amountIn, ) = _takeFeeExactAmountIn(path[0], amountIn);
        amounts = EddaLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'EddaRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, EddaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = EddaLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'EddaRouter: EXCESSIVE_INPUT_AMOUNT');
        _takeFeeExactAmountIn(path[0], amounts[0]);
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, EddaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'EddaRouter: INVALID_PATH');
        (uint256 amountIn, ) = _takeFeeExactAmountIn(path[0], msg.value);
        amounts = EddaLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'EddaRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(EddaLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'EddaRouter: INVALID_PATH');
        amounts = EddaLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'EddaRouter: EXCESSIVE_INPUT_AMOUNT');
        _takeFeeExactAmountIn(path[0], amounts[0]);
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, EddaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'EddaRouter: INVALID_PATH');
        (amountIn, ) = _takeFeeExactAmountIn(path[0], amountIn);
        amounts = EddaLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'EddaRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, EddaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'EddaRouter: INVALID_PATH');
        amounts = EddaLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'EddaRouter: EXCESSIVE_INPUT_AMOUNT');
        (, uint256 fee) = _takeFeeExactAmountIn(path[0], amounts[0]);
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(EddaLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust eth, if any
        if (msg.value > amounts[0].add(fee)) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
        return EddaLibrary.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountOut)
    {
        return EddaLibrary.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountIn)
    {
        return EddaLibrary.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return EddaLibrary.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return EddaLibrary.getAmountsIn(factory, amountOut, path);
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"address","name":"_eddaTreasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"eddaTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_eddaTreasury","type":"address"},{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"setTreasuryAndFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b506040516200451b3803806200451b8339818101604052606081101561003557600080fd5b50805160208201516040909201516001600160601b0319606092831b81166080529290911b90911660a052600080546001600160a01b039092166001600160a01b0319928316179055600a600155600280549091163317905560805160601c60a05160601c6143a06200017b600039806101965280610bfa5280610c355280610d72528061106d52806115ad528061183a5280611a255280611aba5280611d8f5280612161528061249752806124ed528061252152806125a252806127bc52806129ab5280612a40528061304f525080610e9c5280610f9a5280611211528061124a528061140a528061169f52806119585280611af95280611ca35280611e3852806120ca52806120f3528061213f528061231c52806124cb52806128a25280612a7f528061360252806136455280613d215280613e025280613e8252506143a06000f3fe6080604052600436106101795760003560e01c80638803dbee116100cb578063d06ca61f1161007f578063e8e3370011610059578063e8e3370014610a0e578063f305d71914610a9b578063fb3bdb4114610aee576101bf565b8063d06ca61f146108c2578063de01490314610979578063ded9382a1461098e576101bf565b8063ad615dec116100b0578063ad615dec1461080d578063baa2abde14610843578063c45a0155146108ad576101bf565b80638803dbee1461072a578063ad5c4648146107cf576101bf565b80632195995c1161012d5780637fd6f15c116101075780637fd6f15c1461064c5780637ff36ab51461066157806385f8c259146106f4576101bf565b80632195995c1461047757806338ed1739146105025780634a25d94a146105a7576101bf565b806318cbafe51161015e57806318cbafe5146102855780631d6d4eaa1461037a5780631f00ca74146103c0576101bf565b806302751cec146101c4578063054d50d41461023d576101bf565b366101bf573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101bd57fe5b005b600080fd5b3480156101d057600080fd5b50610224600480360360c08110156101e757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610b81565b6040805192835260208301919091528051918290030190f35b34801561024957600080fd5b506102736004803603606081101561026057600080fd5b5080359060208101359060400135610cd4565b60408051918252519081900360200190f35b34801561029157600080fd5b5061032a600480360360a08110156102a857600080fd5b8135916020810135918101906060810160408201356401000000008111156102cf57600080fd5b8201836020820111156102e157600080fd5b8035906020019184602083028401116401000000008311171561030357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ce9565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561036657818101518382015260200161034e565b505050509050019250505060405180910390f35b34801561038657600080fd5b506101bd6004803603604081101561039d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611139565b3480156103cc57600080fd5b5061032a600480360360408110156103e357600080fd5b8135919081019060408101602082013564010000000081111561040557600080fd5b82018360208201111561041757600080fd5b8035906020019184602083028401116401000000008311171561043957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061120a945050505050565b34801561048357600080fd5b50610224600480360361016081101561049b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611240565b34801561050e57600080fd5b5061032a600480360360a081101561052557600080fd5b81359160208101359181019060608101604082013564010000000081111561054c57600080fd5b82018360208201111561055e57600080fd5b8035906020019184602083028401116401000000008311171561058057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561137e565b3480156105b357600080fd5b5061032a600480360360a08110156105ca57600080fd5b8135916020810135918101906060810160408201356401000000008111156105f157600080fd5b82018360208201111561060357600080fd5b8035906020019184602083028401116401000000008311171561062557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611524565b34801561065857600080fd5b506102736117c0565b61032a6004803603608081101561067757600080fd5b8135919081019060408101602082013564010000000081111561069957600080fd5b8201836020820111156106ab57600080fd5b803590602001918460208302840111640100000000831117156106cd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356117c6565b34801561070057600080fd5b506102736004803603606081101561071757600080fd5b5080359060208101359060400135611c1f565b34801561073657600080fd5b5061032a600480360360a081101561074d57600080fd5b81359160208101359181019060608101604082013564010000000081111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460208302840111640100000000831117156107a857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611c2c565b3480156107db57600080fd5b506107e4611d8d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561081957600080fd5b506102736004803603606081101561083057600080fd5b5080359060208101359060400135611db1565b34801561084f57600080fd5b50610224600480360360e081101561086657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611dbe565b3480156108b957600080fd5b506107e46120c8565b3480156108ce57600080fd5b5061032a600480360360408110156108e557600080fd5b8135919081019060408101602082013564010000000081111561090757600080fd5b82018360208201111561091957600080fd5b8035906020019184602083028401116401000000008311171561093b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120ec945050505050565b34801561098557600080fd5b506107e4612119565b34801561099a57600080fd5b5061022460048036036101408110156109b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135612135565b348015610a1a57600080fd5b50610a7d6004803603610100811015610a3257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561228d565b60408051938452602084019290925282820152519081900360600190f35b610a7d600480360360c0811015610ab157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561241c565b61032a60048036036080811015610b0457600080fd5b81359190810190604081016020820135640100000000811115610b2657600080fd5b820183602082011115610b3857600080fd5b80359060200191846020830284011164010000000083111715610b5a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612748565b6000808242811015610bf457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b610c23897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611dbe565b9093509150610c33898685612be8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ca657600080fd5b505af1158015610cba573d6000803e3d6000fd5b50505050610cc88583612dc5565b50965096945050505050565b6000610ce1848484612f02565b949350505050565b60608142811015610d5b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610dc057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45646461526f757465723a20494e56414c49445f504154480000000000000000604482015290519081900360640190fd5b610e9286866000818110610e6f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1689613026565b5080985050610ef57f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061311892505050565b91508682600184510381518110610f0857fe5b60200260200101511015610f67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142516026913960400191505060405180910390fd5b61102c86866000818110610f7757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16336110127f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610fc657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ff057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1661327e565b8560008151811061101f57fe5b6020026020010151613369565b61106b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613539915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106110b757fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b5050505061112e848360018551038151811061112157fe5b6020026020010151612dc5565b509695505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146111bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f6e6c792d61646d696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155600155565b60606112377f000000000000000000000000000000000000000000000000000000000000000084846137c0565b90505b92915050565b60008060006112707f00000000000000000000000000000000000000000000000000000000000000008f8f61327e565b905060008761127f578c6112a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561133d57600080fd5b505af1158015611351573d6000803e3d6000fd5b505050506113648f8f8f8f8f8f8f611dbe565b809450819550505050509b509b9950505050505050505050565b606081428110156113f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b61140086866000818110610e6f57fe5b50809850506114637f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061311892505050565b9150868260018451038151811061147657fe5b602002602001015110156114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142516026913960400191505060405180910390fd5b6114e586866000818110610f7757fe5b61112e82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613539915050565b6060814281101561159657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106115fb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45646461526f757465723a20494e56414c49445f504154480000000000000000604482015290519081900360640190fd5b6116f87f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506137c092505050565b9150868260008151811061170857fe5b60200260200101511115611767576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142776022913960400191505060405180910390fd5b6117ae8686600081811061177757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16836000815181106117a157fe5b6020026020010151613026565b505061102c86866000818110610f7757fe5b60015481565b6060814281101561183857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061187c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45646461526f757465723a20494e56414c49445f504154480000000000000000604482015290519081900360640190fd5b60006119508787600081811061192d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1634613026565b5090506119b17f00000000000000000000000000000000000000000000000000000000000000008289898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061311892505050565b925087836001855103815181106119c457fe5b60200260200101511015611a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142516026913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db084600081518110611a6c57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a9f57600080fd5b505af1158015611ab3573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611b257f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610fc657fe5b85600081518110611b3257fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ba357600080fd5b505af1158015611bb7573d6000803e3d6000fd5b505050506040513d6020811015611bcd57600080fd5b5051611bd557fe5b611c14838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250613539915050565b505095945050505050565b6000610ce184848461394e565b60608142811015611c9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b611cfc7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506137c092505050565b91508682600081518110611d0c57fe5b60200260200101511115611d6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142776022913960400191505060405180910390fd5b611d7b8686600081811061177757fe5b50506114e586866000818110610f7757fe5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ce1848484613a72565b6000808242811015611e3157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b6000611e5e7f00000000000000000000000000000000000000000000000000000000000000008c8c61327e565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b505050506040513d6020811015611f0957600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611f7c57600080fd5b505af1158015611f90573d6000803e3d6000fd5b505050506040513d6040811015611fa657600080fd5b50805160209091015190925090506000611fc08e8e613b68565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611ffd578183612000565b82825b90975095508a87101561205e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142996021913960400191505060405180910390fd5b898610156120b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061434a6021913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606112377f00000000000000000000000000000000000000000000000000000000000000008484613118565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006121857f00000000000000000000000000000000000000000000000000000000000000008e7f000000000000000000000000000000000000000000000000000000000000000061327e565b9050600087612194578c6121b6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561225257600080fd5b505af1158015612266573d6000803e3d6000fd5b505050506122788e8e8e8e8e8e610b81565b909f909e509c50505050505050505050505050565b6000806000834281101561230257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b6123108c8c8c8c8c8c613cca565b909450925060006123427f00000000000000000000000000000000000000000000000000000000000000008e8e61327e565b90506123508d338388613369565b61235c8c338387613369565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156123db57600080fd5b505af11580156123ef573d6000803e3d6000fd5b505050506040513d602081101561240557600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561249157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b6124bf8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613cca565b909450925060006125117f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061327e565b905061251f8b338388613369565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561264757600080fd5b505af115801561265b573d6000803e3d6000fd5b505050506040513d602081101561267157600080fd5b505161267957fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156126f857600080fd5b505af115801561270c573d6000803e3d6000fd5b505050506040513d602081101561272257600080fd5b505192503484101561273a5761273a33853403612dc5565b505096509650969350505050565b606081428110156127ba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456464613a204558504952454400000000000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106127fe57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461289d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45646461526f757465723a20494e56414c49445f504154480000000000000000604482015290519081900360640190fd5b6128fb7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506137c092505050565b9150348260008151811061290b57fe5b6020026020010151111561296a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142776022913960400191505060405180910390fd5b60006129a68787600081811061297c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16846000815181106117a157fe5b9150507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846000815181106129f257fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a2557600080fd5b505af1158015612a39573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612aab7f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610fc657fe5b85600081518110612ab857fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b2957600080fd5b505af1158015612b3d573d6000803e3d6000fd5b505050506040513d6020811015612b5357600080fd5b5051612b5b57fe5b612b9a838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250613539915050565b612bc18184600081518110612bab57fe5b6020026020010151613fcb90919063ffffffff16565b341115611c1457611c143384600081518110612bd957fe5b60200260200101513403612dc5565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310612cbe57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612c81565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612d20576040519150601f19603f3d011682016040523d82523d6000602084013e612d25565b606091505b5091509150818015612d53575080511580612d535750808060200190516020811015612d5057600080fd5b50515b612dbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612e3c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612dff565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612e9e576040519150601f19603f3d011682016040523d82523d6000602084013e612ea3565b606091505b5050905080612efd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143036023913960400191505060405180910390fd5b505050565b6000808411612f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142dd6026913960400191505060405180910390fd5b600083118015612f6c5750600082115b612fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806142ba6023913960400191505060405180910390fd5b6000612fd5856103e463ffffffff61403d16565b90506000612fe9828563ffffffff61403d16565b9050600061300f83613003886103e863ffffffff61403d16565b9063ffffffff613fcb16565b905080828161301a57fe5b04979650505050505050565b60008060006127106130436001548661403d90919063ffffffff16565b8161304a57fe5b0490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156130a85750600034115b156130d5576000546130d09073ffffffffffffffffffffffffffffffffffffffff1682612dc5565b6130fc565b6000546130fc908690339073ffffffffffffffffffffffffffffffffffffffff1684613369565b61310c848263ffffffff6140c316565b925090505b9250929050565b606060028251101561318b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f456464614c6962726172793a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b815167ffffffffffffffff811180156131a357600080fd5b506040519080825280602002602001820160405280156131cd578160200160208202803683370190505b50905082816000815181106131de57fe5b60200260200101818152505060005b6001835103811015613276576000806132308786858151811061320c57fe5b602002602001015187866001018151811061322357fe5b6020026020010151614135565b9150915061325284848151811061324357fe5b60200260200101518383612f02565b84846001018151811061326157fe5b602090810291909101015250506001016131ed565b509392505050565b600080600061328d8585613b68565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f316389f92e931d4d237f23da31ca69e70c85c65dac0f5b5b26d61ee2be0347fb609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061344757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161340a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146134a9576040519150601f19603f3d011682016040523d82523d6000602084013e6134ae565b606091505b50915091508180156134dc5750805115806134dc57508080602001905160208110156134d957600080fd5b50515b613531576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806143266024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156137ba5760008084838151811061355757fe5b602002602001015185846001018151811061356e57fe5b60200260200101519150915060006135868383613b68565b509050600087856001018151811061359a57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146135e2578260006135e6565b6000835b91509150600060028a510388106135fd578861363e565b61363e7f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061363157fe5b602002602001015161327e565b905061366b7f0000000000000000000000000000000000000000000000000000000000000000888861327e565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156136b5576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613740578181015183820152602001613728565b50505050905090810190601f16801561376d5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561378f57600080fd5b505af11580156137a3573d6000803e3d6000fd5b50506001909901985061353c975050505050505050565b50505050565b606060028251101561383357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f456464614c6962726172793a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561384b57600080fd5b50604051908082528060200260200182016040528015613875578160200160208202803683370190505b509050828160018351038151811061388957fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015613276576000806138e9878660018603815181106138d557fe5b602002602001015187868151811061322357fe5b9150915061390b8484815181106138fc57fe5b6020026020010151838361394e565b84600185038151811061391a57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016138b9565b60008084116139a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061422a6027913960400191505060405180910390fd5b6000831180156139b85750600082115b613a0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806142ba6023913960400191505060405180910390fd5b6000613a316103e8613a25868863ffffffff61403d16565b9063ffffffff61403d16565b90506000613a4b6103e4613a25868963ffffffff6140c316565b9050613a686001828481613a5b57fe5b049063ffffffff613fcb16565b9695505050505050565b6000808411613ae257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f456464614c6962726172793a20494e53554646494349454e545f414d4f554e54604482015290519081900360640190fd5b600083118015613af25750600082115b613b47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806142ba6023913960400191505060405180910390fd5b82613b58858463ffffffff61403d16565b81613b5f57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613c0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f456464614c6962726172793a204944454e544943414c5f414444524553534553604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610613c40578284613c43565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661311157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f456464614c6962726172793a205a45524f5f4144445245535300000000000000604482015290519081900360640190fd5b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015613d6a57600080fd5b505afa158015613d7e573d6000803e3d6000fd5b505050506040513d6020811015613d9457600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415613e7a57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015613e4d57600080fd5b505af1158015613e61573d6000803e3d6000fd5b505050506040513d6020811015613e7757600080fd5b50505b600080613ea87f00000000000000000000000000000000000000000000000000000000000000008b8b614135565b91509150816000148015613eba575080155b15613eca57879350869250613fbe565b6000613ed7898484613a72565b9050878111613f445785811015613f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061434a6021913960400191505060405180910390fd5b889450925082613fbc565b6000613f51898486613a72565b905089811115613f5d57fe5b87811015613fb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142996021913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b8082018281101561123a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008115806140585750508082028282828161405557fe5b04145b61123a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561123a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b60008060006141448585613b68565b50905061415286868661327e565b5060008061416188888861327e565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156141a657600080fd5b505afa1580156141ba573d6000803e3d6000fd5b505050506040513d60608110156141d057600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff8781169084161461421757808261421a565b81815b9099909850965050505050505056fe456464614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5445646461526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e5445646461526f757465723a204558434553534956455f494e5055545f414d4f554e5445646461526f757465723a20494e53554646494349454e545f415f414d4f554e54456464614c6962726172793a20494e53554646494349454e545f4c4951554944495459456464614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454445646461526f757465723a20494e53554646494349454e545f425f414d4f554e54a2646970667358221220ab4b64574b8b4833321292d6575492ec8f6579daa4f83a67f5a08683970ea21b64736f6c634300060600330000000000000000000000003ba4ac751327b4988e3b62267949610ff6d9885e0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000030742795f6e1d06071fa789e05a0a7432cc5220e

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

0000000000000000000000003ba4ac751327b4988e3b62267949610ff6d9885e0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000030742795f6e1d06071fa789e05a0a7432cc5220e

-----Decoded View---------------
Arg [0] : _factory (address): 0x3ba4ac751327b4988e3b62267949610ff6d9885e
Arg [1] : _WETH (address): 0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [2] : _eddaTreasury (address): 0x30742795f6e1d06071fa789e05a0a7432cc5220e

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000003ba4ac751327b4988e3b62267949610ff6d9885e
Arg [1] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [2] : 00000000000000000000000030742795f6e1d06071fa789e05a0a7432cc5220e


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.