Contract 0xe4b52aed43938894d9d73656758f25ea91abdfda

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xeb25ecacbac95280445b22d92f3319dd5daf2731a6417733e2c6377faa3bc7e4Approve32523122023-03-30 23:29:2459 days 22 hrs ago0xac23faaf9cc351d50feabb694bb5394666f43dbc IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004682195
0xa2592804009b9ea3597269756194a5e7ae3b94f9beed713e47793da017038ffaApprove31165522023-03-10 15:15:3080 days 6 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.002452037
0xb2444e92854c21de4b690cc8e869c88d1f8beb7d4beefb6f65336c1cbf811477Approve31165522023-03-10 15:15:3080 days 6 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.002453255
0xc29cdd5057ef0d568d3ee24d1f21f1468b5b27932380a89205f37a658bbce1eaApprove27413962023-01-16 10:04:24133 days 12 hrs ago0xf0580f2b7e498980809b4cf89ea392bd206e00c5 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0xb16004023db560c6f59b2244177cc7db01d63a6865988079069d1626f410c07aApprove26607692023-01-05 1:35:18144 days 20 hrs ago0xeb250569e21859a3579fcff91a9a06b6b4fa1880 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.002453255
0x3cc8fc031d6e58a7cc937dbbfaa3a46105a6d9b29fb969ed22548580146aa5cfApprove26607692023-01-05 1:35:18144 days 20 hrs ago0xeb250569e21859a3579fcff91a9a06b6b4fa1880 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.002452037
0xf41a89060d3d90a4903c559bd63667bb67ebd6d005b4cb1e6e18b7a06e0c8e09Approve24863952022-12-11 10:02:42169 days 12 hrs ago0x323b69eaaa302b940f4cafa9fb8684016959600f IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x5535b0e08eace4d85cec016edf08b6d45c274cc62191696271e3f191b418b7ddApprove23121392022-11-16 20:24:30194 days 1 hr ago0x0617a09a1f1d091f51e296738d452e8a42abf475 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x7d63a0c28a1b3a670bd558858fe09dd9b2e802d19630ebe889018ccdcb28cb06Approve22876212022-11-13 9:05:42197 days 13 hrs ago0xbe2021cfe9fda37c7b1a1c4b267e912e94979516 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x2496671ab46e806b92eccdcbc14a4fe10b9059a9856881d88ccde11da4b9ec23Approve22179972022-11-03 11:51:06207 days 10 hrs ago0x140f1787d42cc32632f7f1cbee0b730e7b098147 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004715081
0x2670c1ff3381537dfb3d25989d5a55851d9b4260ae3d906a7cb7f79f7f8a85a6Approve21265142022-10-21 12:30:00220 days 9 hrs ago0xc6d518f42c6f764d1cdc2b19a2008c1c789e2132 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004715081
0x54b486802a4c0b777c810ef584bf1d0df5a5e4bca3461058c0275a6f17e28c8cApprove20427142022-10-09 15:35:36232 days 6 hrs ago0x4c5cadf9352e6535c26ceb5cfe77e68e1ddc8861 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.0046454
0x1067c0f1c1f53279b9890856f73c58790d896838055a89a47dca1001aa7cb850Approve20301232022-10-07 21:17:12234 days 54 mins ago0x96d58bfd10d30cadb893cd9cdd5e038560dc110c IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x29b75eda03013b99a29022a4fb0f746fa1f3f9d7267e8f4303f5e857a6420dedApprove19700502022-09-29 9:17:12242 days 12 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x9d92a5fd8c1a1fcc343869d4baf66acfee6c8fb33c13f740bfdce2f2ef831036Approve19479922022-09-26 6:05:12245 days 16 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004715081
0xd1e781d066ffea9ee5cba83cdb8d0a2f765440d98a4767b5e3b0f96ffdd296d4Approve18784012022-09-16 7:20:24255 days 14 hrs ago0x96d58bfd10d30cadb893cd9cdd5e038560dc110c IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004715081
0xd55193fe5e193210a7c92e239fec812f6eb056089bce53c022a6da8779dc9f52Approve18325462022-09-09 17:00:12262 days 5 hrs ago0x48914c5fa86aa9c4c7a87f50f03290c8beb74d7b IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004764641603
0x63f32567f96f90a383c086ec50903e6c55546cac0ceca298ef2efa9fb58c00a6Approve18297632022-09-09 7:19:54262 days 14 hrs ago0xeb250569e21859a3579fcff91a9a06b6b4fa1880 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x8aae9ee46e1de5a722161d140ec4ecd7e1f181776f3a5b99510904a671308cb0Approve18293202022-09-09 5:47:12262 days 16 hrs ago0x2ef9c1eb4297d983570b59c0012deefb19b8bf55 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0xbdc70bbbd12f23e237bb56640d1a6d47f540970aa2aad457d0a2a80dfc005ec9Transfer18282342022-09-09 1:56:00262 days 20 hrs ago0xa0bb34e6dcb3029c27e62830bd3fe3788d219032 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.0039551505
0x5c1e09eb173482674ede70bec8fc6b4c484bbca9c1d4a8cdee29ef787fdafb74Approve18282332022-09-09 1:55:48262 days 20 hrs ago0xa0bb34e6dcb3029c27e62830bd3fe3788d219032 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x2d45750884991406654ad4268fce31cb74ec0e5d8a8b0e9f2f9522f31626c1e1Approve18164112022-09-07 8:38:18264 days 13 hrs ago0xe45493dd5b55fa56688cded4f9b07c532ce3916b IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x7e34d3d8c3fe0ad5a9c512fd920f8882f3d1b5f3890e5271d76323b1977b42f2Approve18058232022-09-05 19:47:00266 days 2 hrs ago0x7b96bf555a10adcb336ad7c8f285079805e42414 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x329cfa67a08d5e6dc0f5066029840ad717c8a0d5414e69f6395f1ae5c6fc0848Approve18012832022-09-05 3:57:18266 days 18 hrs ago0xeaca28d73d2599c63905b9bbf8ecf3deb007c6d9 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.004713863
0x0916d66d3f357d537b6f52ec2db52834f071f40c411af3801bdf3c3d5d88fbe9Transfer18012492022-09-05 3:50:30266 days 18 hrs ago0xd4f2d28c1bab28daef3c35b962c76ee1849703f6 IN  0xe4b52aed43938894d9d73656758f25ea91abdfda0 GLMR0.0095663985
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x84236a15b7e2455a16527711125ba1b58fba7f5e0daff218c08af77619fd7e1116805992022-08-18 20:23:54284 days 1 hr ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
[ Download CSV Export 
Loading

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

Contract Name:
UniswapV2Pair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-06-28
*/

// Sources flattened with hardhat v2.6.8 https://hardhat.org

// File contracts/uniswapv2/libraries/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 SafeMathUniswap {
    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');
    }
}


// File contracts/uniswapv2/UniswapV2ERC20.sol



pragma solidity =0.6.12;

contract UniswapV2ERC20 {
    using SafeMathUniswap for uint;

    string public constant name = 'EnergyFiSwap LP Token';
    string public constant symbol = 'ELP';
    uint8 public constant decimals = 18;
    uint  public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

    bytes32 public DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public nonces;

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

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

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}


// File contracts/uniswapv2/libraries/Math.sol



pragma solidity =0.6.12;

// a library for performing various math operations

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


// File contracts/uniswapv2/libraries/UQ112x112.sol



pragma solidity =0.6.12;

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))

// range: [0, 2**112 - 1]
// resolution: 1 / 2**112

library UQ112x112 {
    uint224 constant Q112 = 2**112;

    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
        z = uint224(y) * Q112; // never overflows
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
        z = x / uint224(y);
    }
}


// File contracts/uniswapv2/interfaces/IERC20.sol



pragma solidity >=0.5.0;

interface IERC20Uniswap {
    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 contracts/uniswapv2/interfaces/IUniswapV2Factory.sol



pragma solidity >=0.5.0;

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

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


// File contracts/uniswapv2/interfaces/IUniswapV2Callee.sol



pragma solidity >=0.5.0;

interface IUniswapV2Callee {
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
}


// File contracts/uniswapv2/UniswapV2Pair.sol



pragma solidity =0.6.12;






interface IMigrator {
    // Return the desired amount of liquidity token that the migrator wants.
    function desiredLiquidity() external view returns (uint256);
}

contract UniswapV2Pair is UniswapV2ERC20 {
    using SafeMathUniswap  for uint;
    using UQ112x112 for uint224;

    uint public constant MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public factory;
    address public token0;
    address public token1;

    uint112 private reserve0;           // uses single storage slot, accessible via getReserves
    uint112 private reserve1;           // uses single storage slot, accessible via getReserves
    uint32  private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint public price0CumulativeLast;
    uint public price1CumulativeLast;
    uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'UniswapV2: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');
    }

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

    constructor() public {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IUniswapV2Factory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint denominator = rootK.mul(5).add(rootKLast);
                    uint liquidity = numerator / denominator;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20Uniswap(token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            address migrator = IUniswapV2Factory(factory).migrator();
            if (msg.sender == migrator) {
                liquidity = IMigrator(migrator).desiredLiquidity();
                require(liquidity > 0 && liquidity != uint256(-1), "Bad desired liquidity");
            } else {
                require(migrator == address(0), "Must not have migrator");
                liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
                _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
            }
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Mint(msg.sender, amount0, amount1);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external lock returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        uint liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
        require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');

        uint balance0;
        uint balance1;
        { // scope for _token{0,1}, avoids stack too deep errors
        address _token0 = token0;
        address _token1 = token1;
        require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');
        if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens
        if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
        if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20Uniswap(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20Uniswap(_token1).balanceOf(address(this)).sub(reserve1));
    }

    // force reserves to match balances
    function sync() external lock {
        _update(IERC20Uniswap(token0).balanceOf(address(this)), IERC20Uniswap(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252601581527f456e65726779466953776170204c5020546f6b656e00000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ffbc9636472fb50d9f458e9fd1e850503c3eb7640ec810d41db11922e60a42ca7818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b0319163317905561237a8061011b6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610afc565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b26565b604080519115158252519081900360200190f35b610339610b3d565b604080516001600160a01b039092168252519081900360200190f35b61035d610b4c565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b52565b61035d610be6565b6103b5610c0a565b6040805160ff9092168252519081900360200190f35b61035d610c0f565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c15565b61035d610c99565b61035d610c9f565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ca5565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316611121565b61035d611133565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316611139565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b031661114b565b6040805192835260208301919091528051918290030190f35b6102446114df565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356114fe565b61035d61150b565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b0316611511565b610339611683565b610339611692565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356116a1565b61035d600480360360408110156105a357600080fd5b506001600160a01b03813581169160200135166118a3565b61023a6118c0565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b815260040180806020018281038252602581526020018061228b6025913960400191505060405180910390fd5b600080610667610afc565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b81526004018080602001828103825260218152602001806122d46021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d611a22565b891561077057610770818a8c611a22565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806122b06024913960400191505060405180910390fd5b60006109d46109c2846003611bbc565b6109ce876103e8611bbc565b90611c1f565b905060006109e66109c2846003611bbc565b9050610a0b620f4240610a056001600160701b038b8116908b16611bbc565b90611bbc565b610a158383611bbc565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611c6f565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601581526020017422b732b933bca334a9bbb0b8102628102a37b5b2b760591b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b33338484611e2e565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bd1576001600160a01b0384166000908152600260209081526040808320338452909152902054610bac9083611c1f565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bdc848484611e90565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c6b576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cf2576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610d02610afc565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d6020811015610d8057600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dd357600080fd5b505afa158015610de7573d6000803e3d6000fd5b505050506040513d6020811015610dfd57600080fd5b505190506000610e16836001600160701b038716611c1f565b90506000610e2d836001600160701b038716611c1f565b90506000610e3b8787611f3e565b600054909150806110125760055460408051637cd07e4760e01b815290516000926001600160a01b031691637cd07e47916004808301926020929190829003018186803b158015610e8b57600080fd5b505afa158015610e9f573d6000803e3d6000fd5b505050506040513d6020811015610eb557600080fd5b50519050336001600160a01b0382161415610f9057806001600160a01b03166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d6020811015610f2d57600080fd5b505199508915801590610f4257506000198a14155b610f8b576040805162461bcd60e51b81526020600482015260156024820152744261642064657369726564206c697175696469747960581b604482015290519081900360640190fd5b61100c565b6001600160a01b03811615610fe5576040805162461bcd60e51b815260206004820152601660248201527526bab9ba103737ba103430bb329036b4b3b930ba37b960511b604482015290519081900360640190fd5b610ffd6103e86109ce610ff88888611bbc565b61207e565b995061100c60006103e86120d0565b50611055565b6110526001600160701b0389166110298684611bbc565b8161103057fe5b046001600160701b0389166110458685611bbc565b8161104c57fe5b0461215a565b98505b600089116110945760405162461bcd60e51b815260040180806020018281038252602881526020018061231d6028913960400191505060405180910390fd5b61109e8a8a6120d0565b6110aa86868a8a611c6f565b81156110d4576008546110d0906001600160701b0380821691600160701b900416611bbc565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611199576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c819055806111a9610afc565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d602081101561122f57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d60208110156112a757600080fd5b5051306000908152600160205260408120549192506112c68888611f3e565b600054909150806112d78487611bbc565b816112de57fe5b049a50806112ec8486611bbc565b816112f357fe5b04995060008b118015611306575060008a115b6113415760405162461bcd60e51b81526004018080602001828103825260288152602001806122f56028913960400191505060405180910390fd5b61134b3084612172565b611356878d8d611a22565b611361868d8c611a22565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156113a757600080fd5b505afa1580156113bb573d6000803e3d6000fd5b505050506040513d60208110156113d157600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d602081101561144757600080fd5b5051935061145785858b8b611c6f565b81156114815760085461147d906001600160701b0380821691600160701b900416611bbc565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060038152602001620454c560ec1b81525081565b6000610b33338484611e90565b6103e881565b600c5460011461155c576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926116059285928792611600926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156115ce57600080fd5b505afa1580156115e2573d6000803e3d6000fd5b505050506040513d60208110156115f857600080fd5b505190611c1f565b611a22565b61167981846116006008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115ce57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156116eb576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611806573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061183c5750886001600160a01b0316816001600160a01b0316145b61188d576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611898898989611e2e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5460011461190b576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611a1b926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561195c57600080fd5b505afa158015611970573d6000803e3d6000fd5b505050506040513d602081101561198657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d60208110156119fd57600080fd5b50516008546001600160701b0380821691600160701b900416611c6f565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611acf5780518252601f199092019160209182019101611ab0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b31576040519150601f19603f3d011682016040523d82523d6000602084013e611b36565b606091505b5091509150818015611b64575080511580611b645750808060200190516020811015611b6157600080fd5b50515b611bb5576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611bd757505080820282828281611bd457fe5b04145b610b37576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b37576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611c8d57506001600160701b038311155b611cd4576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611d0457506001600160701b03841615155b8015611d1857506001600160701b03831615155b15611d83578063ffffffff16611d4085611d3186612204565b6001600160e01b031690612216565b600980546001600160e01b03929092169290920201905563ffffffff8116611d6b84611d3187612204565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611eb39082611c1f565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611ee2908261223b565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8f57600080fd5b505afa158015611fa3573d6000803e3d6000fd5b505050506040513d6020811015611fb957600080fd5b5051600b546001600160a01b03821615801594509192509061206a578015612065576000611ff6610ff86001600160701b03888116908816611bbc565b905060006120038361207e565b90508082111561206257600061202561201c8484611c1f565b60005490611bbc565b9050600061203e83612038866005611bbc565b9061223b565b9050600081838161204b57fe5b049050801561205e5761205e87826120d0565b5050505b50505b612076565b8015612076576000600b555b505092915050565b600060038211156120c1575080600160028204015b818110156120bb578091506002818285816120aa57fe5b0401816120b357fe5b049050612093565b506120cb565b81156120cb575060015b919050565b6000546120dd908261223b565b60009081556001600160a01b038316815260016020526040902054612102908261223b565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612169578161216b565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546121959082611c1f565b6001600160a01b038316600090815260016020526040812091909155546121bc9082611c1f565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161223357fe5b049392505050565b80820182811015610b37576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a264697066735822122070cad5cecc5e714c8acf70d5438c1595f47fd57057d33f81a54a065ccd9d6b9064736f6c634300060c0033

Deployed ByteCode Sourcemap

7854:10161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15491:1903;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15491:1903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15491:1903:0;;-1:-1:-1;15491:1903:0;-1:-1:-1;15491:1903:0;:::i;:::-;;900:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8866:231;;;:::i;:::-;;;;-1:-1:-1;;;;;8866:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2957:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8155:21;;;:::i;:::-;;;;-1:-1:-1;;;;;8155:21:0;;;;;;;;;;;;;;1046:24;;;:::i;:::-;;;;;;;;;;;;;;;;3259:301;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3259:301:0;;;;;;;;;;;;;;;;;:::i;1338:108::-;;;:::i;1004:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1195:31;;;:::i;9926:210::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9926:210:0;;;;;;;;;;:::i;8506:32::-;;;:::i;8545:::-;;;:::i;12120:1653::-;;;;;;;;;;;;;;;;-1:-1:-1;12120:1653:0;-1:-1:-1;;;;;12120:1653:0;;:::i;1077:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1077:41:0;-1:-1:-1;;;;;1077:41:0;;:::i;8584:17::-;;;:::i;1453:38::-;;;;;;;;;;;;;;;;-1:-1:-1;1453:38:0;-1:-1:-1;;;;;1453:38:0;;:::i;13885:1494::-;;;;;;;;;;;;;;;;-1:-1:-1;13885:1494:0;-1:-1:-1;;;;;13885:1494:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;960:37;;;:::i;3112:139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3112:139:0;;;;;;;;:::i;7976:46::-;;;:::i;17443:348::-;;;;;;;;;;;;;;;;-1:-1:-1;17443:348:0;-1:-1:-1;;;;;17443:348:0;;:::i;8126:22::-;;;:::i;8183:21::-;;;:::i;3568:674::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3568:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1125:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1125:61:0;;;;;;;;;;:::i;17840:172::-;;;:::i;15491:1903::-;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;15605:14;;;;:32:::1;;;15636:1;15623:10;:14;15605:32;15597:82;;;;-1:-1:-1::0;;;15597:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15691:17;15710::::0;15732:13:::1;:11;:13::i;:::-;15690:55;;;;;15792:9;-1:-1:-1::0;;;;;15779:22:0::1;:10;:22;:48;;;;;15818:9;-1:-1:-1::0;;;;;15805:22:0::1;:10;:22;15779:48;15771:94;;;;-1:-1:-1::0;;;15771:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16010:6;::::0;16045::::1;::::0;15878:13:::1;::::0;;;-1:-1:-1;;;;;16010:6:0;;::::1;::::0;16045;;::::1;::::0;16070:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;16093:7;-1:-1:-1::0;;;;;16087:13:0::1;:2;-1:-1:-1::0;;;;;16087:13:0::1;;;16070:30;16062:64;;;::::0;;-1:-1:-1;;;16062:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16062:64:0;;;;;;;;;;;;;::::1;;16141:14:::0;;16137:58:::1;;16157:38;16171:7;16180:2;16184:10;16157:13;:38::i;:::-;16244:14:::0;;16240:58:::1;;16260:38;16274:7;16283:2;16287:10;16260:13;:38::i;:::-;16347:15:::0;;16343:97:::1;;16381:2;-1:-1:-1::0;;;;;16364:34:0::1;;16399:10;16411;16423;16435:4;;16364:76;;;;;;;;;;;;;-1:-1:-1::0;;;;;16364:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16343:97;16462:47;::::0;;-1:-1:-1;;;16462:47:0;;16503:4:::1;16462:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;16462:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16462:47:0;16531::::1;::::0;;-1:-1:-1;;;16531:47:0;;16572:4:::1;16531:47;::::0;::::1;::::0;;;16462;;-1:-1:-1;;;;;;16531:32:0;::::1;::::0;::::1;::::0;:47;;;;;16462::::1;::::0;16531;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16531:47:0;;-1:-1:-1;16600:14:0::1;::::0;-1:-1:-1;;;;;;;16628:22:0;::::1;::::0;;::::1;16617:33:::0;::::1;:75;;16691:1;16617:75;;;16677:10;16665:9;-1:-1:-1::0;;;;;16665:22:0::1;;16653:8;:35;16617:75;16600:92;;16703:14;16743:10;16731:9;-1:-1:-1::0;;;;;16731:22:0::1;;16720:8;:33;:75;;16794:1;16720:75;;;16780:10;16768:9;-1:-1:-1::0;;;;;16768:22:0::1;;16756:8;:35;16720:75;16703:92;;16826:1;16814:9;:13;:30;;;;16843:1;16831:9;:13;16814:30;16806:79;;;;-1:-1:-1::0;;;16806:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16971:21;16995:40;17018:16;:9:::0;17032:1:::1;17018:13;:16::i;:::-;16995:18;:8:::0;17008:4:::1;16995:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;16971:64:::0;-1:-1:-1;17046:21:0::1;17070:40;17093:16;:9:::0;17107:1:::1;17093:13;:16::i;17070:40::-;17046:64:::0;-1:-1:-1;17171:43:0::1;17206:7;17171:30;-1:-1:-1::0;;;;;17171:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;17129:38;:16:::0;17150;17129:20:::1;:38::i;:::-;:85;;17121:110;;;::::0;;-1:-1:-1;;;17121:110:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17121:110:0;;;;;;;;;;;;;::::1;;8826:1;;17255:49;17263:8;17273;17283:9;17294;17255:7;:49::i;:::-;17320:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17320:66:0;::::1;::::0;17325:10:::1;::::0;17320:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8849:1:0;8838:8;:12;-1:-1:-1;;;;;;;;;15491:1903:0:o;900:53::-;;;;;;;;;;;;;;-1:-1:-1;;;900:53:0;;;;:::o;8866:231::-;8999:8;;-1:-1:-1;;;;;8999:8:0;;;;-1:-1:-1;;;9030:8:0;;;;;;-1:-1:-1;;;9071:18:0;;;;;8866:231::o;2957:147::-;3021:4;3038:36;3047:10;3059:7;3068:5;3038:8;:36::i;:::-;-1:-1:-1;3092:4:0;2957:147;;;;;:::o;8155:21::-;;;-1:-1:-1;;;;;8155:21:0;;:::o;1046:24::-;;;;:::o;3259:301::-;-1:-1:-1;;;;;3358:15:0;;3337:4;3358:15;;;:9;:15;;;;;;;;3374:10;3358:27;;;;;;;;-1:-1:-1;;3358:39:0;3354:140;;-1:-1:-1;;;;;3444:15:0;;;;;;:9;:15;;;;;;;;3460:10;3444:27;;;;;;;;:38;;3476:5;3444:31;:38::i;:::-;-1:-1:-1;;;;;3414:15:0;;;;;;:9;:15;;;;;;;;3430:10;3414:27;;;;;;;:68;3354:140;3504:26;3514:4;3520:2;3524:5;3504:9;:26::i;:::-;-1:-1:-1;3548:4:0;3259:301;;;;;:::o;1338:108::-;1380:66;1338:108;:::o;1004:35::-;1037:2;1004:35;:::o;1195:31::-;;;;:::o;9926:210::-;10022:7;;-1:-1:-1;;;;;10022:7:0;10008:10;:21;10000:54;;;;;-1:-1:-1;;;10000:54:0;;;;;;;;;;;;-1:-1:-1;;;10000:54:0;;;;;;;;;;;;;;;10085:6;:16;;-1:-1:-1;;;;;10085:16:0;;;-1:-1:-1;;;;;;10085:16:0;;;;;;;10112:6;:16;;;;;;;;;;;9926:210::o;8506:32::-;;;;:::o;8545:::-;;;;:::o;12120:1653::-;12169:14;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;;;8814:1;12238:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12307:6:0::1;::::0;12293:46:::1;::::0;;-1:-1:-1;;;12293:46:0;;12333:4:::1;12293:46;::::0;::::1;::::0;;;12196:55;;-1:-1:-1;12196:55:0;;-1:-1:-1;12277:13:0::1;::::0;-1:-1:-1;;;;;12307:6:0;;::::1;::::0;12293:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;12307:6;12293:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12293:46:0;12380:6:::1;::::0;12366:46:::1;::::0;;-1:-1:-1;;;12366:46:0;;12406:4:::1;12366:46;::::0;::::1;::::0;;;12293;;-1:-1:-1;12350:13:0::1;::::0;-1:-1:-1;;;;;12380:6:0;;::::1;::::0;12366:31:::1;::::0;:46;;;;;12293::::1;::::0;12366;;;;;;;;12380:6;12366:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12366:46:0;;-1:-1:-1;12423:12:0::1;12438:23;:8:::0;-1:-1:-1;;;;;12438:23:0;::::1;:12;:23::i;:::-;12423:38:::0;-1:-1:-1;12472:12:0::1;12487:23;:8:::0;-1:-1:-1;;;;;12487:23:0;::::1;:12;:23::i;:::-;12472:38;;12523:10;12536:30;12545:9;12556;12536:8;:30::i;:::-;12577:17;12597:11:::0;12523:43;;-1:-1:-1;12701:17:0;12697:751:::1;;12772:7;::::0;12754:37:::1;::::0;;-1:-1:-1;;;12754:37:0;;;;12735:16:::1;::::0;-1:-1:-1;;;;;12772:7:0::1;::::0;12754:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12772:7;12754:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12754:37:0;;-1:-1:-1;12810:10:0::1;-1:-1:-1::0;;;;;12810:22:0;::::1;;12806:500;;;12875:8;-1:-1:-1::0;;;;;12865:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12865:38:0;;-1:-1:-1;12930:13:0;;;;;:41:::1;;;-1:-1:-1::0;;12947:9:0::1;:24;;12930:41;12922:75;;;::::0;;-1:-1:-1;;;12922:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12922:75:0;;;;;;;;;;;;;::::1;;12806:500;;;-1:-1:-1::0;;;;;13046:22:0;::::1;::::0;13038:57:::1;;;::::0;;-1:-1:-1;;;13038:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13038:57:0;;;;;;;;;;;;;::::1;;13126:54;8017:5;13126:31;13136:20;:7:::0;13148;13136:11:::1;:20::i;:::-;13126:9;:31::i;:54::-;13114:66;;13199:36;13213:1;8017:5;13199;:36::i;:::-;12697:751;;;;13350:86;-1:-1:-1::0;;;;;13359:37:0;::::1;:25;:7:::0;13371:12;13359:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;13398:37:0;::::1;:25;:7:::0;13410:12;13398:11:::1;:25::i;:::-;:37;;;;;;13350:8;:86::i;:::-;13338:98;;12697:751;13478:1;13466:9;:13;13458:66;;;;-1:-1:-1::0;;;13458:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13535:20;13541:2;13545:9;13535:5;:20::i;:::-;13568:49;13576:8;13586;13596:9;13607;13568:7;:49::i;:::-;13632:5;13628:47;;;13666:8;::::0;13647:28:::1;::::0;-1:-1:-1;;;;;13652:8:0;;::::1;::::0;-1:-1:-1;;;13666:8:0;::::1;;13647:18;:28::i;:::-;13639:5;:36:::0;13628:47:::1;13731:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;13736:10:::1;::::0;13731:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8849:1:0;8838:8;:12;-1:-1:-1;12120:1653:0;;;-1:-1:-1;;;;;;12120:1653:0:o;1077:41::-;;;;;;;;;;;;;:::o;8584:17::-;;;;:::o;1453:38::-;;;;;;;;;;;;;:::o;13885:1494::-;13934:12;13948;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;;;8814:1;14015:13:::1;:11;:13::i;:::-;-1:-1:-1::0;14072:6:0::1;::::0;14153::::1;::::0;14232:47:::1;::::0;;-1:-1:-1;;;14232:47:0;;14273:4:::1;14232:47;::::0;::::1;::::0;;;13973:55;;-1:-1:-1;13973:55:0;;-1:-1:-1;;;;;;14072:6:0;;::::1;::::0;14153;::::1;::::0;14054:15:::1;::::0;14072:6;;14232:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;14072:6;14232:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14232:47:0;14306::::1;::::0;;-1:-1:-1;;;14306:47:0;;14347:4:::1;14306:47;::::0;::::1;::::0;;;14232;;-1:-1:-1;14290:13:0::1;::::0;-1:-1:-1;;;;;14306:32:0;::::1;::::0;::::1;::::0;:47;;;;;14232::::1;::::0;14306;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14306:47:0;14399:4:::1;14364:14;14381:24:::0;;;:9:::1;14306:47;14381:24:::0;;;;;14306:47;;-1:-1:-1;14431:30:0::1;14440:9:::0;14451;14431:8:::1;:30::i;:::-;14472:17;14492:11:::0;14418:43;;-1:-1:-1;14492:11:0;14602:23:::1;:9:::0;14616:8;14602:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;14735:12:0;14709:23:::1;:9:::0;14723:8;14709:13:::1;:23::i;:::-;:38;;;;;;14699:48;;14824:1;14814:7;:11;:26;;;;;14839:1;14829:7;:11;14814:26;14806:79;;;;-1:-1:-1::0;;;14806:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14896:31;14910:4;14917:9;14896:5;:31::i;:::-;14938:35;14952:7;14961:2;14965:7;14938:13;:35::i;:::-;14984;14998:7;15007:2;15011:7;14984:13;:35::i;:::-;15041:47;::::0;;-1:-1:-1;;;15041:47:0;;15082:4:::1;15041:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;15041:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15041:47:0;15110::::1;::::0;;-1:-1:-1;;;15110:47:0;;15151:4:::1;15110:47;::::0;::::1;::::0;;;15041;;-1:-1:-1;;;;;;15110:32:0;::::1;::::0;::::1;::::0;:47;;;;;15041::::1;::::0;15110;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15110:47:0;;-1:-1:-1;15170:49:0::1;15178:8:::0;15110:47;15198:9;15209;15170:7:::1;:49::i;:::-;15234:5;15230:47;;;15268:8;::::0;15249:28:::1;::::0;-1:-1:-1;;;;;15254:8:0;;::::1;::::0;-1:-1:-1;;;15268:8:0;::::1;;15249:18;:28::i;:::-;15241:5;:36:::0;15230:47:::1;15333:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;15333:38:0;::::1;::::0;15338:10:::1;::::0;15333:38:::1;::::0;;;;;;;;;::::1;8826:1;;;;;;;;;8849::::0;8838:8;:12;;;;13885:1494;;;:::o;960:37::-;;;;;;;;;;;;;;-1:-1:-1;;;960:37:0;;;;:::o;3112:139::-;3172:4;3189:32;3199:10;3211:2;3215:5;3189:9;:32::i;7976:46::-;8017:5;7976:46;:::o;17443:348::-;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;17512:6:::1;::::0;17562::::1;::::0;17673:8:::1;::::0;17621:47:::1;::::0;;-1:-1:-1;;;17621:47:0;;17662:4:::1;17621:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;17512:6:0;;::::1;::::0;17562;;::::1;::::0;17594:89:::1;::::0;17512:6;;17617:2;;17621:61:::1;::::0;-1:-1:-1;;;;;17673:8:0::1;::::0;17512:6;;17621:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;17512:6;17621:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17621:47:0;;:51:::1;:61::i;:::-;17594:13;:89::i;:::-;17694;17708:7;17717:2;17721:61;17773:8;;;;;;;;;-1:-1:-1::0;;;;;17773:8:0::1;-1:-1:-1::0;;;;;17721:61:0::1;17735:7;-1:-1:-1::0;;;;;17721:32:0::1;;17762:4;17721:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;17721:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;17694:89;-1:-1:-1::0;;8849:1:0;8838:8;:12;-1:-1:-1;17443:348:0:o;8126:22::-;;;-1:-1:-1;;;;;8126:22:0;;:::o;8183:21::-;;;-1:-1:-1;;;;;8183:21:0;;:::o;3568:674::-;3714:15;3702:8;:27;;3694:58;;;;;-1:-1:-1;;;3694:58:0;;;;;;;;;;;;-1:-1:-1;;;3694:58:0;;;;;;;;;;;;;;;3868:16;;-1:-1:-1;;;;;3964:13:0;;;3763:14;3964:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3913:77;;1380:66;3913:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3903:88;;;;;;-1:-1:-1;;;3804:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:237;;;;;;;;;4055:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3763:14;;3964:15;4055:26;;;;;-1:-1:-1;;4055:26:0;;;;;;;;;;3964:15;4055:26;;;;;;;;;;;;;;;-1:-1:-1;;4055:26:0;;-1:-1:-1;;4055:26:0;;;-1:-1:-1;;;;;;;4100:30:0;;;;;;:59;;;4154:5;-1:-1:-1;;;;;4134:25:0;:16;-1:-1:-1;;;;;4134:25:0;;4100:59;4092:100;;;;;-1:-1:-1;;;4092:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4203:31;4212:5;4219:7;4228:5;4203:8;:31::i;:::-;3568:674;;;;;;;;;:::o;1125:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17840:172::-;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;17903:6:::1;::::0;17889:46:::1;::::0;;-1:-1:-1;;;17889:46:0;;17929:4:::1;17889:46;::::0;::::1;::::0;;;17881:123:::1;::::0;-1:-1:-1;;;;;17903:6:0::1;::::0;17889:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;17903:6;17889:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17889:46:0;17951:6:::1;::::0;17937:46:::1;::::0;;-1:-1:-1;;;17937:46:0;;17977:4:::1;17937:46;::::0;::::1;::::0;;;-1:-1:-1;;;;;17951:6:0;;::::1;::::0;17937:31:::1;::::0;:46;;;;;17889::::1;::::0;17937;;;;;;;;17951:6;17937:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17937:46:0;17985:8:::1;::::0;-1:-1:-1;;;;;17985:8:0;;::::1;::::0;-1:-1:-1;;;17995:8:0;::::1;;17881:7;:123::i;:::-;8849:1:::0;8838:8;:12;17840:172::o;9105:287::-;8081:34;;;;;;;;;;;;;;;;;9233:43;;-1:-1:-1;;;;;9233:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9233:43:0;-1:-1:-1;;;9233:43:0;;;9222:55;;;;9187:12;;9201:17;;9222:10;;;9233:43;9222:55;;;9233:43;9222:55;;9233:43;9222:55;;;;;;;;;;-1:-1:-1;;9222:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9186:91;;;;9296:7;:57;;;;-1:-1:-1;9308:11:0;;:16;;:44;;;9339:4;9328:24;;;;;;;;;;;;;;;-1:-1:-1;9328:24:0;9308:44;9288:96;;;;;-1:-1:-1;;;9288:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9105:287;;;;;:::o;597:142::-;649:6;676;;;:30;;-1:-1:-1;;691:5:0;;;705:1;700;691:5;700:1;686:15;;;;;:20;676:30;668:63;;;;;-1:-1:-1;;;668:63:0;;;;;;;;;;;;-1:-1:-1;;;668:63:0;;;;;;;;;;;;;;460:129;544:5;;;539:16;;;;531:50;;;;;-1:-1:-1;;;531:50:0;;;;;;;;;;;;-1:-1:-1;;;531:50:0;;;;;;;;;;;;;;10221:860;-1:-1:-1;;;;;10333:23:0;;;;;:50;;-1:-1:-1;;;;;;10360:23:0;;;10333:50;10325:82;;;;;-1:-1:-1;;;10325:82:0;;;;;;;;;;;;-1:-1:-1;;;10325:82:0;;;;;;;;;;;;;;;10522:18;;10449:23;:15;:23;;;-1:-1:-1;;;10522:18:0;;;;10505:35;;;10578:15;;;;;;:33;;-1:-1:-1;;;;;;10597:14:0;;;;10578:33;:51;;;;-1:-1:-1;;;;;;10615:14:0;;;;10578:51;10574:336;;;10784:11;10731:64;;10736:44;10770:9;10736:27;10753:9;10736:16;:27::i;:::-;-1:-1:-1;;;;;10736:33:0;;;:44::i;:::-;10707:20;:88;;-1:-1:-1;;;;;10731:50:0;;;;:64;;;;10707:88;;;10834:64;;;10839:44;10873:9;10839:27;10856:9;10839:16;:27::i;:44::-;10810:20;:88;;-1:-1:-1;;;;;10834:50:0;;;;:64;;;;10810:88;;;10574:336;10920:8;:28;;-1:-1:-1;;10920:28:0;-1:-1:-1;;;;;10920:28:0;;;;;;;-1:-1:-1;;;;10959:28:0;-1:-1:-1;;;10959:28:0;;;;;;;;;-1:-1:-1;;;;;10998:35:0;-1:-1:-1;;;10998:35:0;;;;;;;;;11049:24;;;11054:8;;;11049:24;;11064:8;;;;;;;11049:24;;;;;;;;;;;;;;;;;10221:860;;;;;;:::o;2552:169::-;-1:-1:-1;;;;;2633:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2682:31;;;;;;;;;;;;;;;;;2552:169;;;:::o;2729:220::-;-1:-1:-1;;;;;2823:15:0;;;;;;:9;:15;;;;;;:26;;2843:5;2823:19;:26::i;:::-;-1:-1:-1;;;;;2805:15:0;;;;;;;:9;:15;;;;;;:44;;;;2876:13;;;;;;;:24;;2894:5;2876:17;:24::i;:::-;-1:-1:-1;;;;;2860:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2916:25;;;;;;;2860:13;;2916:25;;;;;;;;;;;;;2729:220;;;:::o;11171:837::-;11244:10;11267:13;11301:7;;;;;;;;;-1:-1:-1;;;;;11301:7:0;-1:-1:-1;;;;;11283:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11283:34:0;11380:5;;-1:-1:-1;;;;;11336:19:0;;;;;;-1:-1:-1;11283:34:0;;-1:-1:-1;11380:5:0;11411:590;;11441:11;;11437:494;;11473:10;11486:41;11496:30;-1:-1:-1;;;;;11496:15:0;;;;:30;;:19;:30::i;11486:41::-;11473:54;;11546:14;11563:17;11573:6;11563:9;:17::i;:::-;11546:34;;11611:9;11603:5;:17;11599:317;;;11645:14;11662:37;11678:20;:5;11688:9;11678;:20::i;:::-;11662:11;;;:15;:37::i;:::-;11645:54;-1:-1:-1;11722:16:0;11741:27;11758:9;11741:12;:5;11751:1;11741:9;:12::i;:::-;:16;;:27::i;:::-;11722:46;;11791:14;11820:11;11808:9;:23;;;;;;;-1:-1:-1;11858:13:0;;11854:42;;11873:23;11879:5;11886:9;11873:5;:23::i;:::-;11599:317;;;;11437:494;;;11411:590;;;11952:11;;11948:53;;11988:1;11980:5;:9;11948:53;11171:837;;;;;;:::o;4622:303::-;4667:6;4694:1;4690;:5;4686:232;;;-1:-1:-1;4716:1:0;4749;4745;4741:5;;:9;4765:92;4776:1;4772;:5;4765:92;;;4802:1;4798:5;;4840:1;4835;4831;4827;:5;;;;;;:9;4826:15;;;;;;4822:19;;4765:92;;;4686:232;;;;4878:6;;4874:44;;-1:-1:-1;4905:1:0;4874:44;4622:303;;;:::o;2126:201::-;2199:11;;:22;;2215:5;2199:15;:22::i;:::-;2185:11;:36;;;-1:-1:-1;;;;;2248:13:0;;;;:9;:13;;;;;;:24;;2266:5;2248:17;:24::i;:::-;-1:-1:-1;;;;;2232:13:0;;;;;;:9;:13;;;;;;;;:40;;;;2288:31;;;;;;;2232:13;;;;2288:31;;;;;;;;;;2126:201;;:::o;4408:96::-;4460:6;4487:1;4483;:5;:13;;4495:1;4483:13;;;4491:1;4483:13;4479:17;4408:96;-1:-1:-1;;;4408:96:0:o;2335:209::-;-1:-1:-1;;;;;2414:15:0;;;;;;:9;:15;;;;;;:26;;2434:5;2414:19;:26::i;:::-;-1:-1:-1;;;;;2396:15:0;;;;;;:9;:15;;;;;:44;;;;2465:11;:22;;2481:5;2465:15;:22::i;:::-;2451:11;:36;;;2503:33;;;;;;;;-1:-1:-1;;;;;2503:33:0;;;;;;;;;;;;;2335:209;;:::o;5287:120::-;-1:-1:-1;;;;;5363:10:0;-1:-1:-1;;;5363:17:0;;5287:120::o;5478:108::-;5538:9;-1:-1:-1;;;;;5568:10:0;;-1:-1:-1;;;;;5564:14:0;;5568:10;5564:14;;;;;;5478:108;-1:-1:-1;;;5478:108:0:o;324:128::-;408:5;;;403:16;;;;395:49;;;;;-1:-1:-1;;;395:49:0;;;;;;;;;;;;-1:-1:-1;;;395:49:0;;;;;;;;;;;;;

Swarm Source

ipfs://70cad5cecc5e714c8acf70d5438c1595f47fd57057d33f81a54a065ccd9d6b90
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.