Contract 0x94ea87ec2f4b084b587edf60aabb28a53466ea51 1

 

Contract Overview

03 Swap: Polygon Aggregator
Balance:
1,509.788025441700972344 MATIC

MATIC Value:
$1,260.22 (@ $0.83/MATIC)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5f22548f076bcadc218194c4af0b10845b1408d7977e38caad56a7ffc45a1339Swap Exact Token...338188852022-10-02 2:00:432 days 17 hrs ago0x7c4f34f1f0352c966b610e91ade629ce8334d902 IN  03 Swap: Polygon Aggregator0 MATIC0.00487583531
0x9008924445b5d789732ec4e93ded84cf6971eb015b62c89734d07c23818e79bdSwap Exact Token...335761432022-09-26 4:32:268 days 14 hrs ago0x4c133abccea3564ec98d47fb98992037366d24d7 IN  03 Swap: Polygon Aggregator1.242156913257677 MATIC0.009034590005 30.000000017
0xa35e4b1a0da195a8fd7bf8ce2232be39bcfdffcfdfbcd5cdadeb8ed4395b63f1Swap Exact Token...335760642022-09-26 4:29:448 days 15 hrs ago0x4c133abccea3564ec98d47fb98992037366d24d7 IN  03 Swap: Polygon Aggregator0 MATIC0.007953911608 30.428706012
0x482a80c652334d4c9714f95a195038589321d1c81fc8ab3b77d03f867351ecabSwap Exact Token...323224372022-08-25 22:51:2039 days 20 hrs ago0x4c133abccea3564ec98d47fb98992037366d24d7 IN  03 Swap: Polygon Aggregator0 MATIC0.008756974017 40.487750155
0x189c0e16fd1dc9a668a61ad89e4c936a05aae23dc63add0a57e8d9a892e5e7aaSwap Exact Token...317648142022-08-11 10:18:2754 days 9 hrs ago0xa4e71851a8c8eaefeb20a994159f4a443e46059b IN  03 Swap: Polygon Aggregator0 MATIC0.008156403649 37.248274452
0x392cbd1bba098cac18653a9b13c8379bb0b005afad969efdf6a06796cb498d2dSwap Exact Token...317385102022-08-10 17:26:1155 days 2 hrs ago0xa4e71851a8c8eaefeb20a994159f4a443e46059b IN  03 Swap: Polygon Aggregator0 MATIC0.009707252866 33.940019532
0x49b59b28c5dae0731961d72c72f32f17010e9891a7d206ac70faaed79d4cf6f7Swap Exact Token...317376612022-08-10 16:50:3355 days 2 hrs ago0xa4e71851a8c8eaefeb20a994159f4a443e46059b IN  03 Swap: Polygon Aggregator0 MATIC0.00119608283 49.551861412
0x30d656653298354467694238f02e3375a98ace74e9b1a8137d6bdddfd897d504Swap Exact Token...313826022022-08-01 5:54:0964 days 13 hrs ago0x4453f8dcb031ab519d11202b331b222476b27572 IN  03 Swap: Polygon Aggregator0 MATIC0.004140109381 32.010000012
0x43d807fceb0c6b28006faad29017aaee82d5e73da323deed3e753e1ae6776fbcSwap Exact ETH F...310913272022-07-24 16:13:5272 days 3 hrs ago0x3c3352eb0ab203f0fc4dc97e735953becc5fe380 IN  03 Swap: Polygon Aggregator2.514592389356549 MATIC0.016994546168 59.009660442
0x9f33fa2404f681e8a87655af9aa9d684a8dfeaca9e01b90a6fb2b18f01ea47e7Swap Exact ETH F...310861312022-07-24 12:47:0172 days 6 hrs ago0x9a74e09e09e9989c84751533be5729f23d2fe636 IN  03 Swap: Polygon Aggregator109.019853894244849 MATIC0.008960478505 30.000061956
0x7deb5224315b931197ed1e54c31b19d4b23bb2fe39c9c85219afc9558828b3dcSwap Exact ETH F...310831022022-07-24 10:47:5972 days 8 hrs ago0x36ba12ed18d97c8897243f85693459b5d00c3246 IN  03 Swap: Polygon Aggregator5 MATIC0.006349050002 30.000000014
0xdab76e4970a3976a5b20b12ab6600665d418845892eb4c904f37fffffd4391f9Swap Exact ETH F...310293702022-07-22 23:57:1473 days 19 hrs ago0x077e7b44ad8fdbebd98ab503321ad0061c1d1004 IN  03 Swap: Polygon Aggregator10.580860951503302 MATIC0.013343871983 31.857061988
0x69634c9e68625209038f68731208321e065b2fedb7a49e74a91554dce5be13fcSwap Exact Token...310292352022-07-22 23:52:3473 days 19 hrs ago0x077e7b44ad8fdbebd98ab503321ad0061c1d1004 IN  03 Swap: Polygon Aggregator0 MATIC0.005017848798 38.799999985
0x803563fe70a1e285b468471e8abaf79e9f86f665e088b913237f9db444957867Swap Exact Token...310196342022-07-22 17:36:4874 days 1 hr ago0x4f0ed477fc6374246b726c22945edce476c9fd1f IN  03 Swap: Polygon Aggregator0 MATIC0.004693658579 30.010029087
0x0702e0166d8625f26924379057e3aaa45b5eb74383b00ab60dae91de4fa99693Swap Exact Token...310133232022-07-22 13:29:4774 days 6 hrs ago0x6983b58bef476c3fe28db26bb552946a6c1fd2ac IN  03 Swap: Polygon Aggregator1.010343771018995 MATIC0.008502862946 30.006750823
0x1871665ec644a6a4c8eb00a4b87c1b4c3f5ea98833aeaef6c5ba6aecd3700711Swap Exact ETH F...310100392022-07-22 11:25:3974 days 8 hrs ago0xa3b1cb2d6864fa1d9c101fbdaf947289b2b4c4a2 IN  03 Swap: Polygon Aggregator55.993394363497842 MATIC0.008380444308 30.188485428
0xef8eaad8a81de4996472e2ff9c2d565c9b1855390f910d81a03fdd74d536ac2dSwap Exact Token...310063352022-07-22 9:03:3774 days 10 hrs ago0x182c900f05deac7d207cb1ff3f1e035cd3c8ee41 IN  03 Swap: Polygon Aggregator0 MATIC0.005458326488 36.742304223
0x5d2b3ad30cbb2589acee1a7d4211004d23085741c87daabfe3e2b77dcf0c52afSwap Exact ETH F...310003212022-07-22 5:09:0874 days 14 hrs ago0x7e083f86d4f389a138ce709a55c4001364832c6a IN  03 Swap: Polygon Aggregator0.652752687207127 MATIC0.008203560004 30.000000018
0x4424dd5d323e8594f545d8ba7ab3e00643fdf55dfc13c6eb3d7e737fcb13e77bSwap Exact ETH F...309958062022-07-22 2:03:2874 days 17 hrs ago0x0019a92f97bc977788ef817d3b2e1d356baf91ed IN  03 Swap: Polygon Aggregator14.426346786633172 MATIC0.01170916208 32.010000301
0x023e0b537652c1afd6854b9d117c92dca47fb7d8ea300eece1c5bbedee7c4d10Swap Exact Token...309930632022-07-22 0:18:5174 days 19 hrs ago0x077e7b44ad8fdbebd98ab503321ad0061c1d1004 IN  03 Swap: Polygon Aggregator0 MATIC0.011908758528 56.272928664
0xa6126aa65ce2d5c5dc31b3e04988c8ed0159bde50eb289bbf45f4a322bdecc36Swap Exact ETH F...309928942022-07-22 0:07:1974 days 19 hrs ago0x077e7b44ad8fdbebd98ab503321ad0061c1d1004 IN  03 Swap: Polygon Aggregator4.7 MATIC0.031542536674 138.312307553
0x5c4d94d9344b67e4a556f7f0813b51c1d9a9b911c04ad782d38127dcf48c1b12Swap Exact Token...309887682022-07-21 21:24:1774 days 22 hrs ago0x4453f8dcb031ab519d11202b331b222476b27572 IN  03 Swap: Polygon Aggregator0 MATIC0.004534549007 33.808128236
0xbe41e446193b331d2b0dc5af5b0d72acbb325bf3926f502b6864256a9d2f06fdSwap Exact Token...309809212022-07-21 16:20:1675 days 3 hrs ago0x4f0ed477fc6374246b726c22945edce476c9fd1f IN  03 Swap: Polygon Aggregator0 MATIC0.009044819585 188.288602244
0xd57404700d521d02b864c52eb7ed531852878d997f09581a9e809c0e95a4291dSwap Exact Token...309809212022-07-21 16:20:1675 days 3 hrs ago0x4f0ed477fc6374246b726c22945edce476c9fd1f IN  03 Swap: Polygon Aggregator0 MATIC0.027919189203 202.64336203
0xfaa33899a7f12c12af3d2f6f84f35b66c5a84933d0b5f2134bd075b2e4c0b5d4Swap Exact Token...309807632022-07-21 16:12:4475 days 3 hrs ago0x4f0ed477fc6374246b726c22945edce476c9fd1f IN  03 Swap: Polygon Aggregator0 MATIC0.027167034862 190.561610391
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9008924445b5d789732ec4e93ded84cf6971eb015b62c89734d07c23818e79bd335761432022-09-26 4:32:268 days 14 hrs ago 03 Swap: Polygon Aggregator 0xac57280b3a657a2e8d1180493c519a476d208f611.242156913257677422 MATIC
0xa35e4b1a0da195a8fd7bf8ce2232be39bcfdffcfdfbcd5cdadeb8ed4395b63f1335760642022-09-26 4:29:448 days 15 hrs ago 03 Swap: Polygon Aggregator0x4c133abccea3564ec98d47fb98992037366d24d71.345316851798435057 MATIC
0xa35e4b1a0da195a8fd7bf8ce2232be39bcfdffcfdfbcd5cdadeb8ed4395b63f1335760642022-09-26 4:29:448 days 15 hrs ago Polygon: WMATIC Token 03 Swap: Polygon Aggregator1.349364946638350107 MATIC
0x482a80c652334d4c9714f95a195038589321d1c81fc8ab3b77d03f867351ecab323224372022-08-25 22:51:2039 days 20 hrs ago 03 Swap: Polygon Aggregator0x4c133abccea3564ec98d47fb98992037366d24d71.339764607813613329 MATIC
0x482a80c652334d4c9714f95a195038589321d1c81fc8ab3b77d03f867351ecab323224372022-08-25 22:51:2039 days 20 hrs ago Polygon: WMATIC Token 03 Swap: Polygon Aggregator1.343795995801016378 MATIC
0x189c0e16fd1dc9a668a61ad89e4c936a05aae23dc63add0a57e8d9a892e5e7aa317648142022-08-11 10:18:2754 days 9 hrs ago 03 Swap: Polygon Aggregator0xa4e71851a8c8eaefeb20a994159f4a443e46059b78.726931652687690339 MATIC
0x189c0e16fd1dc9a668a61ad89e4c936a05aae23dc63add0a57e8d9a892e5e7aa317648142022-08-11 10:18:2754 days 9 hrs ago Polygon: WMATIC Token 03 Swap: Polygon Aggregator78.963823122053851894 MATIC
0x392cbd1bba098cac18653a9b13c8379bb0b005afad969efdf6a06796cb498d2d317385102022-08-10 17:26:1155 days 2 hrs ago 03 Swap: Polygon Aggregator0xa4e71851a8c8eaefeb20a994159f4a443e46059b77.840350583377116865 MATIC
0x392cbd1bba098cac18653a9b13c8379bb0b005afad969efdf6a06796cb498d2d317385102022-08-10 17:26:1155 days 2 hrs ago Polygon: WMATIC Token 03 Swap: Polygon Aggregator78.074574306296004879 MATIC
0x30d656653298354467694238f02e3375a98ace74e9b1a8137d6bdddfd897d504313826022022-08-01 5:54:0964 days 13 hrs ago 03 Swap: Polygon Aggregator0x4453f8dcb031ab519d11202b331b222476b27572172.727470033124530183 MATIC
0x30d656653298354467694238f02e3375a98ace74e9b1a8137d6bdddfd897d504313826022022-08-01 5:54:0964 days 13 hrs ago Polygon: WMATIC Token 03 Swap: Polygon Aggregator173.247211668128916933 MATIC
0x43d807fceb0c6b28006faad29017aaee82d5e73da323deed3e753e1ae6776fbc310913272022-07-24 16:13:5272 days 3 hrs ago 03 Swap: Polygon Aggregator 0xac57280b3a657a2e8d1180493c519a476d208f611.006159676620577621 MATIC
0x43d807fceb0c6b28006faad29017aaee82d5e73da323deed3e753e1ae6776fbc310913272022-07-24 16:13:5272 days 3 hrs ago 03 Swap: Polygon Aggregator Polygon: WMATIC Token1.508432712735972185 MATIC
0x9f33fa2404f681e8a87655af9aa9d684a8dfeaca9e01b90a6fb2b18f01ea47e7310861312022-07-24 12:47:0172 days 6 hrs ago 03 Swap: Polygon Aggregator 0xac57280b3a657a2e8d1180493c519a476d208f611.019853894244849048 MATIC
0x9f33fa2404f681e8a87655af9aa9d684a8dfeaca9e01b90a6fb2b18f01ea47e7310861312022-07-24 12:47:0172 days 6 hrs ago 03 Swap: Polygon Aggregator Polygon: WMATIC Token108 MATIC
0x7deb5224315b931197ed1e54c31b19d4b23bb2fe39c9c85219afc9558828b3dc310831022022-07-24 10:47:5972 days 8 hrs ago 03 Swap: Polygon Aggregator Polygon: WMATIC Token5 MATIC
0xdab76e4970a3976a5b20b12ab6600665d418845892eb4c904f37fffffd4391f9310293702022-07-22 23:57:1473 days 19 hrs ago 03 Swap: Polygon Aggregator 0xac57280b3a657a2e8d1180493c519a476d208f617.580860951503302482 MATIC
0xdab76e4970a3976a5b20b12ab6600665d418845892eb4c904f37fffffd4391f9310293702022-07-22 23:57:1473 days 19 hrs ago 03 Swap: Polygon Aggregator Polygon: WMATIC Token3 MATIC
0x69634c9e68625209038f68731208321e065b2fedb7a49e74a91554dce5be13fc310292352022-07-22 23:52:3473 days 19 hrs ago 03 Swap: Polygon Aggregator0x077e7b44ad8fdbebd98ab503321ad0061c1d10045.867106454418944348 MATIC
0x69634c9e68625209038f68731208321e065b2fedb7a49e74a91554dce5be13fc310292352022-07-22 23:52:3473 days 19 hrs ago Polygon: WMATIC Token 03 Swap: Polygon Aggregator5.88476073662883084 MATIC
0x0702e0166d8625f26924379057e3aaa45b5eb74383b00ab60dae91de4fa99693310133232022-07-22 13:29:4774 days 6 hrs ago 03 Swap: Polygon Aggregator 0xac57280b3a657a2e8d1180493c519a476d208f611.010343771018995097 MATIC
0x1871665ec644a6a4c8eb00a4b87c1b4c3f5ea98833aeaef6c5ba6aecd3700711310100392022-07-22 11:25:3974 days 8 hrs ago 03 Swap: Polygon Aggregator 0xac57280b3a657a2e8d1180493c519a476d208f610.993394363497842392 MATIC
0x1871665ec644a6a4c8eb00a4b87c1b4c3f5ea98833aeaef6c5ba6aecd3700711310100392022-07-22 11:25:3974 days 8 hrs ago 03 Swap: Polygon Aggregator Polygon: WMATIC Token55 MATIC
0x5d2b3ad30cbb2589acee1a7d4211004d23085741c87daabfe3e2b77dcf0c52af310003212022-07-22 5:09:0874 days 14 hrs ago 03 Swap: Polygon Aggregator Polygon: WMATIC Token0.652752687207127474 MATIC
0x4424dd5d323e8594f545d8ba7ab3e00643fdf55dfc13c6eb3d7e737fcb13e77b309958062022-07-22 2:03:2874 days 17 hrs ago 03 Swap: Polygon Aggregator 0xac57280b3a657a2e8d1180493c519a476d208f610.42634678663317235 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
O3SwapPolygonQuickSwapBridge

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 11 : O3SwapPolygonQuickSwapBridge.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity =0.6.12;

import "./utils/Ownable.sol";
import "./polygon/interfaces/IQuickswapFactory.sol";
import "./polygon/libraries/QuickswapLibrary.sol";
import './libraries/TransferHelper.sol';
import "./polygon/interfaces/IWMATIC.sol";
import "./polygon/interfaces/IERC20.sol";
import "./libraries/SafeMath.sol";
import "./interfaces/ISwapper.sol";
import "./libraries/Convert.sol";

contract O3SwapPolygonQuickSwapBridge is Ownable {
    using SafeMath for uint256;
    using Convert for bytes;

    event LOG_AGG_SWAP (
        uint256 amountOut, // Raw swapped token amount out without aggFee
        uint256 fee
    );

    address public WMATIC;
    address public quickswapFactory;
    address public polySwapper;
    uint public polySwapperId;

    uint256 public aggregatorFee = 3 * 10 ** 7; // Default to 0.3%
    uint256 public constant FEE_DENOMINATOR = 10 ** 10;

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

    constructor (
        address _wmatic,
        address _factory,
        address _swapper,
        uint _swapperId
    ) public {
        require(_wmatic != address(0), "O3SwapPolygonQuickSwapBridge: ZERO_WETH_ADDRESS");
        require(_factory != address(0), "O3SwapPolygonQuickSwapBridge: ZERO_FACTORY_ADDRESS");
        require(_swapper != address(0), "O3SwapPolygonQuickSwapBridge: ZERO_SWAPPER_ADDRESS");

        WMATIC = _wmatic;
        quickswapFactory = _factory;
        polySwapper = _swapper;
        polySwapperId = _swapperId;
    }

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint swapAmountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual ensure(deadline) {
        uint amountOut = _swapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn, swapAmountOutMin, path);
        uint feeAmount = amountOut.mul(aggregatorFee).div(FEE_DENOMINATOR);

        emit LOG_AGG_SWAP(amountOut, feeAmount);

        uint adjustedAmountOut = amountOut.sub(feeAmount);
        TransferHelper.safeTransfer(path[path.length - 1], to, adjustedAmountOut);
    }

    function swapExactTokensForTokensSupportingFeeOnTransferTokensCrossChain(
        uint amountIn,
        uint swapAmountOutMin,
        address[] calldata path,
        bytes memory to,
        uint deadline,
        uint64 toPoolId,
        uint64 toChainId,
        bytes memory toAssetHash,
        uint polyMinOutAmount,
        uint fee
    ) external virtual payable ensure(deadline) returns (bool) {
        uint polyAmountIn;
        {
            uint amountOut = _swapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn, swapAmountOutMin, path);
            uint feeAmount = amountOut.mul(aggregatorFee).div(FEE_DENOMINATOR);
            emit LOG_AGG_SWAP(amountOut, feeAmount);
            polyAmountIn = amountOut.sub(feeAmount);
        }

        return _cross(
            path[path.length - 1],
            toPoolId,
            toChainId,
            toAssetHash,
            to,
            polyAmountIn,
            polyMinOutAmount,
            fee
        );
    }

    function _swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path
    ) internal virtual returns (uint) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, QuickswapLibrary.pairFor(quickswapFactory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(address(this));
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(path[path.length - 1]).balanceOf(address(this)).sub(balanceBefore);
        require(amountOut >= amountOutMin, 'O3SwapPolygonQuickSwapBridge: INSUFFICIENT_OUTPUT_AMOUNT');
        return amountOut;
    }

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint swapAmountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual payable ensure(deadline) {
        uint amountOut = _swapExactETHForTokensSupportingFeeOnTransferTokens(swapAmountOutMin, path, 0);
        uint feeAmount = amountOut.mul(aggregatorFee).div(FEE_DENOMINATOR);

        emit LOG_AGG_SWAP(amountOut, feeAmount);

        uint adjustedAmountOut = amountOut.sub(feeAmount);
        TransferHelper.safeTransfer(path[path.length - 1], to, adjustedAmountOut);
    }

    function swapExactETHForTokensSupportingFeeOnTransferTokensCrossChain(
        uint swapAmountOutMin,
        address[] calldata path,
        bytes memory to,
        uint deadline,
        uint64 toPoolId,
        uint64 toChainId,
        bytes memory toAssetHash,
        uint polyMinOutAmount,
        uint fee
    ) external virtual payable ensure(deadline) returns (bool) {
        uint polyAmountIn;
        {
            uint amountOut = _swapExactETHForTokensSupportingFeeOnTransferTokens(swapAmountOutMin, path, fee);
            uint feeAmount = amountOut.mul(aggregatorFee).div(FEE_DENOMINATOR);
            emit LOG_AGG_SWAP(amountOut, feeAmount);
            polyAmountIn = amountOut.sub(feeAmount);
        }

        return _cross(
            path[path.length - 1],
            toPoolId,
            toChainId,
            toAssetHash,
            to,
            polyAmountIn,
            polyMinOutAmount,
            fee
        );
    }

    function _swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint swapAmountOutMin,
        address[] calldata path,
        uint fee
    ) internal virtual returns (uint) {
        require(path[0] == WMATIC, 'O3SwapPolygonQuickSwapBridge: INVALID_PATH');
        uint amountIn = msg.value.sub(fee);
        require(amountIn > 0, 'O3SwapPolygonQuickSwapBridge: INSUFFICIENT_INPUT_AMOUNT');
        IWMATIC(WMATIC).deposit{value: amountIn}();
        assert(IWMATIC(WMATIC).transfer(QuickswapLibrary.pairFor(quickswapFactory, path[0], path[1]), amountIn));
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(address(this));
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(path[path.length - 1]).balanceOf(address(this)).sub(balanceBefore);
        require(amountOut >= swapAmountOutMin, 'O3SwapPolygonQuickSwapBridge: INSUFFICIENT_OUTPUT_AMOUNT');
        return amountOut;
    }

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint swapAmountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual ensure(deadline) {
        uint amountOut = _swapExactTokensForETHSupportingFeeOnTransferTokens(amountIn, swapAmountOutMin, path);
        uint feeAmount = amountOut.mul(aggregatorFee).div(FEE_DENOMINATOR);

        emit LOG_AGG_SWAP(amountOut, feeAmount);

        IWMATIC(WMATIC).withdraw(amountOut);
        uint adjustedAmountOut = amountOut.sub(feeAmount);
        TransferHelper.safeTransferETH(to, adjustedAmountOut);
    }

    function _swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint swapAmountOutMin,
        address[] calldata path
    ) internal virtual returns (uint) {
        require(path[path.length - 1] == WMATIC, 'O3SwapPolygonQuickSwapBridge: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, QuickswapLibrary.pairFor(quickswapFactory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(WMATIC).balanceOf(address(this));
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(WMATIC).balanceOf(address(this)).sub(balanceBefore);
        require(amountOut >= swapAmountOutMin, 'O3SwapPolygonQuickSwapBridge: INSUFFICIENT_OUTPUT_AMOUNT');
        return amountOut;
    }

    // **** SWAP (supporting fee-on-transfer tokens) ****
    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(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,) = QuickswapLibrary.sortTokens(input, output);
            require(IQuickswapFactory(quickswapFactory).getPair(input, output) != address(0), "O3SwapPolygonQuickSwapBridge: PAIR_NOT_EXIST");
            IQuickswapPair pair = IQuickswapPair(QuickswapLibrary.pairFor(quickswapFactory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = QuickswapLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? QuickswapLibrary.pairFor(quickswapFactory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }

    function _cross(
        address fromAssetHash,
        uint64 toPoolId,
        uint64 toChainId,
        bytes memory toAssetHash,
        bytes memory toAddress,
        uint amount,
        uint minOutAmount,
        uint fee
    ) internal returns (bool) {
        // Allow `swapper contract` to transfer `amount` of `fromAssetHash` on belaof of this contract.
        TransferHelper.safeApprove(fromAssetHash, polySwapper, amount);

        bool result = ISwapper(polySwapper).swap{value: fee}(
            fromAssetHash,
            toPoolId,
            toChainId,
            toAssetHash,
            toAddress,
            amount,
            minOutAmount,
            fee,
            polySwapperId
        );
        require(result, "POLY CROSSCHAIN ERROR");

        return result;
    }

    receive() external payable { }

    function setPolySwapperId(uint _id) external onlyOwner {
        polySwapperId = _id;
    }

    function collect(address token) external {
        if (token == WMATIC) {
            uint256 wmaticBalance = IERC20(token).balanceOf(address(this));
            if (wmaticBalance > 0) {
                IWMATIC(WMATIC).withdraw(wmaticBalance);
            }
            TransferHelper.safeTransferETH(owner(), address(this).balance);
        } else {
            TransferHelper.safeTransfer(token, owner(), IERC20(token).balanceOf(address(this)));
        }
    }

    function setAggregatorFee(uint _fee) external onlyOwner {
        aggregatorFee = _fee;
    }

    function setQuickswapFactory(address _factory) external onlyOwner {
        quickswapFactory = _factory;
    }

    function setPolySwapper(address _swapper) external onlyOwner {
        polySwapper = _swapper;
    }

    function setWMATIC(address _wmatic) external onlyOwner {
        WMATIC = _wmatic;
    }
}

File 2 of 11 : ISwapper.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

interface ISwapper {
    function swap(
        address fromAssetHash,
        uint64 toPoolId,
        uint64 toChainId,
        bytes calldata toAssetHash,
        bytes calldata toAddress,
        uint amount,
        uint minOutAmount,
        uint fee,
        uint id
    ) external payable returns (bool);
}

File 3 of 11 : Convert.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity =0.6.12;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library Convert {
    function bytesToAddress(bytes memory bys) internal pure returns (address addr) {
        assembly {
            addr := mload(add(bys,20))
        }
    }
}

File 4 of 11 : SafeMath.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity =0.6.12;

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

    function div(uint x, uint y) internal pure returns (uint z) {
        return x / y;
    }
}

File 5 of 11 : TransferHelper.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.6.0;

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

File 6 of 11 : IERC20.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

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

File 7 of 11 : IQuickswapFactory.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() 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;
}

File 8 of 11 : IQuickswapPair.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

interface IQuickswapPair {
    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 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) external;
}

File 9 of 11 : IWMATIC.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

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

File 10 of 11 : QuickswapLibrary.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

import '../interfaces/IQuickswapPair.sol';

import "../../libraries/SafeMath.sol";

library QuickswapLibrary {
    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, 'QuickswapLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'QuickswapLibrary: 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'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // 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);
        (uint reserve0, uint reserve1,) = IQuickswapPair(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, 'QuickswapLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'QuickswapLibrary: 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, 'QuickswapLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'QuickswapLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        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, 'QuickswapLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'QuickswapLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        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, 'QuickswapLibrary: 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, 'QuickswapLibrary: 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);
        }
    }
}

File 11 of 11 : Ownable.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/GSN/Context.sol
/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wmatic","type":"address"},{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_swapper","type":"address"},{"internalType":"uint256","name":"_swapperId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"LOG_AGG_SWAP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aggregatorFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"collect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"polySwapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"polySwapperId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quickswapFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setAggregatorFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapper","type":"address"}],"name":"setPolySwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"setPolySwapperId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"name":"setQuickswapFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wmatic","type":"address"}],"name":"setWMATIC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapAmountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapAmountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"bytes","name":"to","type":"bytes"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint64","name":"toPoolId","type":"uint64"},{"internalType":"uint64","name":"toChainId","type":"uint64"},{"internalType":"bytes","name":"toAssetHash","type":"bytes"},{"internalType":"uint256","name":"polyMinOutAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokensCrossChain","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"swapAmountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"swapAmountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"swapAmountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"bytes","name":"to","type":"bytes"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint64","name":"toPoolId","type":"uint64"},{"internalType":"uint64","name":"toChainId","type":"uint64"},{"internalType":"bytes","name":"toAssetHash","type":"bytes"},{"internalType":"uint256","name":"polyMinOutAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokensCrossChain","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526301c9c3806005553480156200001957600080fd5b5060405162002cf438038062002cf4833981810160405260808110156200003f57600080fd5b5080516020820151604083015160609093015191929091600062000062620001c7565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038416620000f35760405162461bcd60e51b815260040180806020018281038252602f81526020018062002c93602f913960400191505060405180910390fd5b6001600160a01b0383166200013a5760405162461bcd60e51b815260040180806020018281038252603281526020018062002cc26032913960400191505060405180910390fd5b6001600160a01b038216620001815760405162461bcd60e51b815260040180806020018281038252603281526020018062002c616032913960400191505060405180910390fd5b600180546001600160a01b03199081166001600160a01b0396871617909155600280548216948616949094179093556003805490931691909316179055600455620001cb565b3390565b612a8680620001db6000396000f3fe6080604052600436106101235760003560e01c80638540c451116100a0578063b6f9de9511610064578063b6f9de9514610764578063b818a9b5146107e8578063d73792a9146107fd578063dca8449f14610812578063f2fde38b1461083c5761012a565b80638540c451146103a25780638da5cb5b1461055c57806393b69905146105715780639ed5b4dd1461071c578063a27181f2146107315761012a565b80634d95cad9116100e75780634d95cad91461021b5780635c11d7951461024c578063715018a6146102e257806372f7557b146102f7578063791ac9471461030c5761012a565b806306ec16f81461012f578063086808de1461016457806312330f5d1461018b5780631a5eefff146101be578063355466c8146101f15761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101626004803603602081101561015257600080fd5b50356001600160a01b031661086f565b005b34801561017057600080fd5b50610179610a0b565b60408051918252519081900360200190f35b34801561019757600080fd5b50610162600480360360208110156101ae57600080fd5b50356001600160a01b0316610a11565b3480156101ca57600080fd5b50610162600480360360208110156101e157600080fd5b50356001600160a01b0316610a8b565b3480156101fd57600080fd5b506101626004803603602081101561021457600080fd5b5035610b05565b34801561022757600080fd5b50610230610b62565b604080516001600160a01b039092168252519081900360200190f35b34801561025857600080fd5b50610162600480360360a081101561026f57600080fd5b813591602081013591810190606081016040820135600160201b81111561029557600080fd5b8201836020820111156102a757600080fd5b803590602001918460208302840111600160201b831117156102c857600080fd5b91935091506001600160a01b038135169060200135610b71565b3480156102ee57600080fd5b50610162610c57565b34801561030357600080fd5b50610230610cf9565b34801561031857600080fd5b50610162600480360360a081101561032f57600080fd5b813591602081013591810190606081016040820135600160201b81111561035557600080fd5b82018360208201111561036757600080fd5b803590602001918460208302840111600160201b8311171561038857600080fd5b91935091506001600160a01b038135169060200135610d08565b61054860048036036101208110156103b957600080fd5b81359190810190604081016020820135600160201b8111156103da57600080fd5b8201836020820111156103ec57600080fd5b803590602001918460208302840111600160201b8311171561040d57600080fd5b919390929091602081019035600160201b81111561042a57600080fd5b82018360208201111561043c57600080fd5b803590602001918460018302840111600160201b8311171561045d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929584359567ffffffffffffffff6020870135811696604081013590911695509193509150608081019060600135600160201b8111156104cf57600080fd5b8201836020820111156104e157600080fd5b803590602001918460018302840111600160201b8311171561050257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610e2a565b604080519115158252519081900360200190f35b34801561056857600080fd5b50610230610f19565b610548600480360361014081101561058857600080fd5b813591602081013591810190606081016040820135600160201b8111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460208302840111600160201b831117156105e157600080fd5b919390929091602081019035600160201b8111156105fe57600080fd5b82018360208201111561061057600080fd5b803590602001918460018302840111600160201b8311171561063157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929584359567ffffffffffffffff6020870135811696604081013590911695509193509150608081019060600135600160201b8111156106a357600080fd5b8201836020820111156106b557600080fd5b803590602001918460018302840111600160201b831117156106d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610f28565b34801561072857600080fd5b50610179610ffc565b34801561073d57600080fd5b506101626004803603602081101561075457600080fd5b50356001600160a01b0316611002565b6101626004803603608081101561077a57600080fd5b81359190810190604081016020820135600160201b81111561079b57600080fd5b8201836020820111156107ad57600080fd5b803590602001918460208302840111600160201b831117156107ce57600080fd5b91935091506001600160a01b03813516906020013561107c565b3480156107f457600080fd5b50610230611145565b34801561080957600080fd5b50610179611154565b34801561081e57600080fd5b506101626004803603602081101561083557600080fd5b503561115d565b34801561084857600080fd5b506101626004803603602081101561085f57600080fd5b50356001600160a01b03166111ba565b6001546001600160a01b0382811691161415610985576000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156108d457600080fd5b505afa1580156108e8573d6000803e3d6000fd5b505050506040513d60208110156108fe57600080fd5b50519050801561096e5760015460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561095557600080fd5b505af1158015610969573d6000803e3d6000fd5b505050505b61097f610979610f19565b476112b2565b50610a08565b610a0881610991610f19565b604080516370a0823160e01b815230600482015290516001600160a01b038616916370a08231916024808301926020929190829003018186803b1580156109d757600080fd5b505afa1580156109eb573d6000803e3d6000fd5b505050506040513d6020811015610a0157600080fd5b50516113aa565b50565b60045481565b610a19611514565b6000546001600160a01b03908116911614610a69576040805162461bcd60e51b815260206004820181905260248201526000805160206129a5833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610a93611514565b6000546001600160a01b03908116911614610ae3576040805162461bcd60e51b815260206004820181905260248201526000805160206129a5833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610b0d611514565b6000546001600160a01b03908116911614610b5d576040805162461bcd60e51b815260206004820181905260248201526000805160206129a5833981519152604482015290519081900360640190fd5b600555565b6001546001600160a01b031681565b8042811015610bb15760405162461bcd60e51b81526004018080602001828103825260258152602001806129c56025913960400191505060405180910390fd5b6000610bbf88888888611518565b90506000610be76402540be400610be16005548561176290919063ffffffff16565b906117cb565b60408051848152602081018390528151929350600080516020612a0d833981519152929081900390910190a16000610c1f83836117de565b9050610c4b88886000198101818110610c3457fe5b905060200201356001600160a01b031687836113aa565b50505050505050505050565b610c5f611514565b6000546001600160a01b03908116911614610caf576040805162461bcd60e51b815260206004820181905260248201526000805160206129a5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031681565b8042811015610d485760405162461bcd60e51b81526004018080602001828103825260258152602001806129c56025913960400191505060405180910390fd5b6000610d568888888861182e565b90506000610d786402540be400610be16005548561176290919063ffffffff16565b60408051848152602081018390528151929350600080516020612a0d833981519152929081900390910190a160015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610df157600080fd5b505af1158015610e05573d6000803e3d6000fd5b505050506000610e1e82846117de90919063ffffffff16565b9050610c4b86826112b2565b60008642811015610e6c5760405162461bcd60e51b81526004018080602001828103825260258152602001806129c56025913960400191505060405180910390fd5b600080610e7b8e8e8e886119bd565b90506000610e9d6402540be400610be16005548561176290919063ffffffff16565b60408051848152602081018390528151929350600080516020612a0d833981519152929081900390910190a1610ed382826117de565b9250610f0891508d90508c6000198101818110610eec57fe5b905060200201356001600160a01b03168989898e868b8b611cdb565b9d9c50505050505050505050505050565b6000546001600160a01b031690565b60008642811015610f6a5760405162461bcd60e51b81526004018080602001828103825260258152602001806129c56025913960400191505060405180910390fd5b600080610f798f8f8f8f611518565b90506000610f9b6402540be400610be16005548561176290919063ffffffff16565b60408051848152602081018390528151929350600080516020612a0d833981519152929081900390910190a1610fd182826117de565b9250610fea91508d90508c6000198101818110610eec57fe5b9e9d5050505050505050505050505050565b60055481565b61100a611514565b6000546001600160a01b0390811691161461105a576040805162461bcd60e51b815260206004820181905260248201526000805160206129a5833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b80428110156110bc5760405162461bcd60e51b81526004018080602001828103825260258152602001806129c56025913960400191505060405180910390fd5b60006110cb87878760006119bd565b905060006110ed6402540be400610be16005548561176290919063ffffffff16565b60408051848152602081018390528151929350600080516020612a0d833981519152929081900390910190a1600061112583836117de565b905061113a88886000198101818110610c3457fe5b505050505050505050565b6003546001600160a01b031681565b6402540be40081565b611165611514565b6000546001600160a01b039081169116146111b5576040805162461bcd60e51b815260206004820181905260248201526000805160206129a5833981519152604482015290519081900360640190fd5b600455565b6111c2611514565b6000546001600160a01b03908116911614611212576040805162461bcd60e51b815260206004820181905260248201526000805160206129a5833981519152604482015290519081900360640190fd5b6001600160a01b0381166112575760405162461bcd60e51b815260040180806020018281038252602681526020018061286c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112fe5780518252601f1990920191602091820191016112df565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611360576040519150601f19603f3d011682016040523d82523d6000602084013e611365565b606091505b50509050806113a55760405162461bcd60e51b81526004018080602001828103825260238152602001806129ea6023913960400191505060405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106114275780518252601f199092019160209182019101611408565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50915091508180156114bc5750805115806114bc57508080602001905160208110156114b957600080fd5b50515b61150d576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b3390565b60006115998383600081811061152a57fe5b905060200201356001600160a01b031633611593600260009054906101000a90046001600160a01b03168787600081811061156157fe5b905060200201356001600160a01b03168888600181811061157e57fe5b905060200201356001600160a01b0316611ef9565b88611fb9565b6000838360001981018181106115ab57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561160757600080fd5b505afa15801561161b573d6000803e3d6000fd5b505050506040513d602081101561163157600080fd5b50516040805160208681028281018201909352868252929350611673929091879187918291850190849080828437600092019190915250309250612116915050565b6000611717828686600019810181811061168957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116e557600080fd5b505afa1580156116f9573d6000803e3d6000fd5b505050506040513d602081101561170f57600080fd5b5051906117de565b9050858110156117585760405162461bcd60e51b81526004018080602001828103825260388152602001806128e56038913960400191505060405180910390fd5b9695505050505050565b600081158061177d5750508082028282828161177a57fe5b04145b6117c5576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b60008183816117d657fe5b049392505050565b808203828111156117c5576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001546000906001600160a01b03168383600019810181811061184d57fe5b905060200201356001600160a01b03166001600160a01b0316146118a25760405162461bcd60e51b815260040180806020018281038252602a815260200180612842602a913960400191505060405180910390fd5b6118b28383600081811061152a57fe5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156118fd57600080fd5b505afa158015611911573d6000803e3d6000fd5b505050506040513d602081101561192757600080fd5b50516040805160208681028281018201909352868252929350611969929091879187918291850190849080828437600092019190915250309250612116915050565b600154604080516370a0823160e01b815230600482015290516000926117179285926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156116e557600080fd5b6001546000906001600160a01b0316848483816119d657fe5b905060200201356001600160a01b03166001600160a01b031614611a2b5760405162461bcd60e51b815260040180806020018281038252602a815260200180612842602a913960400191505060405180910390fd5b6000611a3734846117de565b905060008111611a785760405162461bcd60e51b815260040180806020018281038252603781526020018061296e6037913960400191505060405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ac857600080fd5b505af1158015611adc573d6000803e3d6000fd5b50506001546002546001600160a01b03918216945063a9059cbb9350611b269250168888600081611b0957fe5b905060200201356001600160a01b03168989600181811061157e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611b6d57600080fd5b505af1158015611b81573d6000803e3d6000fd5b505050506040513d6020811015611b9757600080fd5b5051611b9f57fe5b600085856000198101818110611bb157fe5b905060200201356001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611c0d57600080fd5b505afa158015611c21573d6000803e3d6000fd5b505050506040513d6020811015611c3757600080fd5b50516040805160208881028281018201909352888252929350611c79929091899189918291850190849080828437600092019190915250309250612116915050565b6000611c8f828888600019810181811061168957fe5b905087811015611cd05760405162461bcd60e51b81526004018080602001828103825260388152602001806128e56038913960400191505060405180910390fd5b979650505050505050565b600354600090611cf6908a906001600160a01b0316866124d9565b6000600360009054906101000a90046001600160a01b03166001600160a01b031663559ebe57848c8c8c8c8c8c8c8c6004546040518b63ffffffff1660e01b8152600401808a6001600160a01b031681526020018967ffffffffffffffff1681526020018867ffffffffffffffff1681526020018060200180602001878152602001868152602001858152602001848152602001838103835289818151815260200191508051906020019080838360005b83811015611dbf578181015183820152602001611da7565b50505050905090810190601f168015611dec5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b83811015611e1f578181015183820152602001611e07565b50505050905090810190601f168015611e4c5780820380516001836020036101000a031916815260200191505b509b5050505050505050505050506020604051808303818588803b158015611e7357600080fd5b505af1158015611e87573d6000803e3d6000fd5b50505050506040513d6020811015611e9e57600080fd5b5051905080611eec576040805162461bcd60e51b81526020600482015260156024820152742827a62c9021a927a9a9a1a420a4a71022a92927a960591b604482015290519081900360640190fd5b9998505050505050505050565b6000806000611f08858561263c565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061203e5780518252601f19909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120a0576040519150601f19603f3d011682016040523d82523d6000602084013e6120a5565b606091505b50915091508180156120d35750805115806120d357508080602001905160208110156120d057600080fd5b50515b61210e5760405162461bcd60e51b8152600401808060200182810382526024815260200180612a2d6024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156113a55760008084838151811061213457fe5b602002602001015185846001018151811061214b57fe5b6020026020010151915091506000612163838361263c565b506002546040805163e6a4390560e01b81526001600160a01b03878116600483015286811660248301529151939450600093919092169163e6a43905916044808301926020929190829003018186803b1580156121bf57600080fd5b505afa1580156121d3573d6000803e3d6000fd5b505050506040513d60208110156121e957600080fd5b50516001600160a01b031614156122315760405162461bcd60e51b815260040180806020018281038252602c815260200180612942602c913960400191505060405180910390fd5b60025460009061224b906001600160a01b03168585611ef9565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561228c57600080fd5b505afa1580156122a0573d6000803e3d6000fd5b505050506040513d60608110156122b657600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a8116908916146122f35782846122f6565b83835b9150915061234b828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116e557600080fd5b955061235886838361271a565b945050505050600080856001600160a01b0316886001600160a01b03161461238257826000612386565b6000835b91509150600060028c51038a1061239d578a6123d3565b6123d3600260009054906101000a90046001600160a01b0316898e8d600201815181106123c657fe5b6020026020010151611ef9565b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b8381101561245d578181015183820152602001612445565b50505050905090810190601f16801561248a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156124ac57600080fd5b505af11580156124c0573d6000803e3d6000fd5b50506001909b019a506121199950505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106125565780518252601f199092019160209182019101612537565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146125b8576040519150601f19603f3d011682016040523d82523d6000602084013e6125bd565b606091505b50915091508180156125eb5750805115806125eb57508080602001905160208110156125e857600080fd5b50515b61150d576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b600080826001600160a01b0316846001600160a01b031614156126905760405162461bcd60e51b815260040180806020018281038252602581526020018061291d6025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106126b05782846126b3565b83835b90925090506001600160a01b038216612713576040805162461bcd60e51b815260206004820152601e60248201527f517569636b737761704c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b600080841161275a5760405162461bcd60e51b815260040180806020018281038252602b815260200180612892602b913960400191505060405180910390fd5b60008311801561276a5750600082115b6127a55760405162461bcd60e51b81526004018080602001828103825260288152602001806128bd6028913960400191505060405180910390fd5b60006127b3856103e5611762565b905060006127c18285611762565b905060006127db836127d5886103e8611762565b906127f2565b90508082816127e657fe5b04979650505050505050565b808201828110156117c5576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe4f3353776170506f6c79676f6e517569636b537761704272696467653a20494e56414c49445f504154484f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373517569636b737761704c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54517569636b737761704c6962726172793a20494e53554646494349454e545f4c49515549444954594f3353776170506f6c79676f6e517569636b537761704272696467653a20494e53554646494349454e545f4f55545055545f414d4f554e54517569636b737761704c6962726172793a204944454e544943414c5f4144445245535345534f3353776170506f6c79676f6e517569636b537761704272696467653a20504149525f4e4f545f45584953544f3353776170506f6c79676f6e517569636b537761704272696467653a20494e53554646494349454e545f494e5055545f414d4f554e544f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724f3353776170506f6c79676f6e517569636b537761704272696467653a20455850495245445472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544270e06e1460fe9df2e798064a58fdb072e3f3e1e39e7db96268c13849c025aed5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220f1c3faec562b9499fc8299b5cf3a8357ffa52727c9e8e71dcbabcd9d49d7493064736f6c634300060c00334f3353776170506f6c79676f6e517569636b537761704272696467653a205a45524f5f535741505045525f414444524553534f3353776170506f6c79676f6e517569636b537761704272696467653a205a45524f5f574554485f414444524553534f3353776170506f6c79676f6e517569636b537761704272696467653a205a45524f5f464143544f52595f414444524553530000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf12700000000000000000000000005757371414417b8c6caad45baef941abc7d3ab32000000000000000000000000abc248c717fa0a9a78ff4bf48a316c9e241a82c40000000000000000000000000000000000000000000000000000000000000001

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

0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf12700000000000000000000000005757371414417b8c6caad45baef941abc7d3ab32000000000000000000000000abc248c717fa0a9a78ff4bf48a316c9e241a82c40000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _wmatic (address): 0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : _factory (address): 0x5757371414417b8c6caad45baef941abc7d3ab32
Arg [2] : _swapper (address): 0xabc248c717fa0a9a78ff4bf48a316c9e241a82c4
Arg [3] : _swapperId (uint256): 1

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : 0000000000000000000000005757371414417b8c6caad45baef941abc7d3ab32
Arg [2] : 000000000000000000000000abc248c717fa0a9a78ff4bf48a316c9e241a82c4
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001


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.