Contract 0xc4e90ae0298e0e7be0102cce64089231e1e2d67c 1

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xc90b919cb9fc9e2a34ec148d35f540ec0043fe3a286dff1ad40acca03e604c6bApprove394403442023-02-18 18:31:3933 days 14 hrs ago0x150f6f923c56415bb9c18d1e38b12ce52da2aaf4 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.012050550934460.471950098
0x9e2bbc813ad1b13fce95a99f8d63639dac10ae80e8b8c28e8a08ce6f840cb5d4Approve391321162023-02-10 10:59:0441 days 21 hrs ago0xe063c36903856be3f289bd19b9d7072deeadc3be IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.008175879323 307.896336668
0x78860de95cc079d7a976b9be91a93b7feb308b0b470d6cffdb7753658ce192a4Approve391321082023-02-10 10:58:4641 days 21 hrs ago0xe063c36903856be3f289bd19b9d7072deeadc3be IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.013239752767 285.007809186
0x0bbbebda696224944d0a08f028f333b5aca33050616711916ae28889fdb92c4fApprove385983182023-01-27 19:29:4555 days 13 hrs ago0x8c6b15b6ffd0a1f400ac34d8f0afae1c4843ad15 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.001556571843 64.40098651
0x8127a9a408540a5a7453b82118c596142b76a1ec2751fa4537d9b68ea5fc25ecApprove385983162023-01-27 19:29:4155 days 13 hrs ago0x8c6b15b6ffd0a1f400ac34d8f0afae1c4843ad15 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.001573545652 65.103254132
0xb865265b5b055c9d8bd91621c441bd3abac762837c3a8857bb3c278c093936d0Approve379550142023-01-11 19:28:4771 days 13 hrs ago0x2343211499ae854cfc0be5d1b0da4799b0ed891b IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.00209043 45
0x43ddc01038c25a2f222bd23d70cb56ca023785d37a6cd947abc8e0ed4635ec0fApprove377966252023-01-07 21:00:2175 days 11 hrs ago0x591860a562d48a7c9006105612b573f8b1ef6817 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.001160242776 48.00342478
0x2f50f04d5f8028e362e9efcacf5db6c458895577b33e2b3be10f330c9d26b810Approve357316702022-11-17 19:33:20126 days 13 hrs ago0x1f338a463fe5e90acec6ee5429c1748c34b25b7b IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.000729472478 30.180905199
0x2a9d36779668e9390add08b0a81f710c3cd70fa1118a82b41c5c6f4c2355ad31Approve357316632022-11-17 19:33:06126 days 13 hrs ago0x1f338a463fe5e90acec6ee5429c1748c34b25b7b IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.000731214006 30.252958473
0xac7fa99a2b71604617e718f67cd8e37d6077c1b98177f3bb09dece8421ac7584Approve343351352022-10-14 13:19:59160 days 19 hrs ago0xb0789899c32ee0b03d7959c07c99f848d506ee7b IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.003048016664 126.107433379
0x8b4911baf09480a48e00b18f006cc7a1d14922c9f0b4cf70ebb64e9835e5d76bApprove328811142022-09-09 8:53:57195 days 23 hrs ago0xe50c51c11c30ad77711461ba46971ba6ed3deb36 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.0023273454 50.1
0xe687841a2109099f4a126bd7dd0534528677ee113d72baf1c5c06dea61e075a6Approve321260722022-08-20 21:32:14215 days 11 hrs ago0x6d6ef20d48a012eb96fcd843996727dcf8dfe4f8 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.0036327028 78.2
0x491273180e8bc0da873c79c068b585db8b1fa1b5568e81f7e634174776afb48cSwap311328622022-07-25 20:02:08241 days 12 hrs ago0x9f8c767a407b74dd35f2916c21114186d5cc8ab2 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.04286734830262.146226348
0x3247d9c669f4c15a3fb496bd0eea9f1862b0f1fdc6d6065241da2b59d7d735e4Approve305086982022-07-09 3:39:10258 days 4 hrs ago0x44dd6f977b4768da589f856bc628573e89eaab3f IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.00139362 30.000000014
0xdaf340a905abed97015d39df4b537e7a448e82a4ad5c3131c93535542c20c786Swap301571232022-06-30 1:22:05267 days 7 hrs ago0x9f8c767a407b74dd35f2916c21114186d5cc8ab2 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.02988662331852.857760159
0x78f8e97524f0a8ffbf2002de20921e164dfb77d4d04a063e72b9c5d404d3a32fApprove300731852022-06-27 21:26:04269 days 11 hrs ago0xf5548c5f16091ad36092146a32bf6fe0c88b7c44 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.0017048618 36.7
0x4e38ab28aa322781459d82e33e2e5cc6f0d22edafbcd51e952a824d2e343aeb3Approve298673542022-06-22 12:36:54274 days 19 hrs ago0x60a37a0c137b3d2bbb086ebdab1535833799d36c IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.0023273454 50.1
0x5f0ed8baf722fbc684a14ecc883d541c55065a9790460f1a9abe5bf31a830d88Approve296128572022-06-15 21:26:51281 days 11 hrs ago0xb707353c4e99a78c3dc656283f726f02358505c0 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.0019928766 42.9
0xb153275d390770d8770d478027db2e696d199b866d7fb0702b407bdf16a87374Swap294640292022-06-12 5:05:12285 days 3 hrs ago0x9f8c767a407b74dd35f2916c21114186d5cc8ab2 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.03495053527355.389120877
0x19cf89a582fb780df416594403ab5ec8163fcd483f65a560d90c64dc9468be6fSwap294292132022-06-11 8:39:58285 days 23 hrs ago0x9f8c767a407b74dd35f2916c21114186d5cc8ab2 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.131651640434208.675730727
0x1cdb47b7d0bc7fd89bad6dc0f924698953fd5af783999bd09319216dc2785eedSwap294292092022-06-11 8:39:50285 days 23 hrs ago0x9f8c767a407b74dd35f2916c21114186d5cc8ab2 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.131654144542208.675730727
0x842262f8514525b9c7c090d3eb6159c010aa1d6351c987a05d02f9674c8637b0Swap294292022022-06-11 8:39:36285 days 23 hrs ago0x9f8c767a407b74dd35f2916c21114186d5cc8ab2 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.125855685633199.485001075
0xc9891b1047296b42ac40476809bf421dda30743ae34af4d45070863337bceb8fSwap292925832022-06-07 22:52:32289 days 9 hrs ago0x9f8c767a407b74dd35f2916c21114186d5cc8ab2 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.075485154481137.025000602
0xfe9ed3ce4fb9ac54363bfc81738a13d69316493d2618ae2c78ae003c62121bbfApprove288846492022-05-28 20:13:40299 days 12 hrs ago0x6c32b4bb473fe3e2d699973b68e3b97eb85ba0d6 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.001422713907 30.626295001
0x84d12d35db3576995e00f418f8146635df5e2d72aad4cc481f3a6bfddac37202Approve280930152022-05-09 1:13:47319 days 7 hrs ago0x74d73025f622777374e036dc28f242f7ebdeae07 IN  0xc4e90ae0298e0e7be0102cce64089231e1e2d67c0 MATIC0.001608376755 34.622998144
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x3f07347758481369a8abca898f0634e951e44d1ca16f7169bc92ff97a1aeb5c0177445002021-08-08 5:23:34593 days 3 hrs ago 0x477ce834ae6b7ab003cce4bc4d8697763ff456fa  Contract Creation0 MATIC
[ Download CSV Export 
Loading

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

Contract Name:
CatPair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: CatPair.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity =0.6.12;

import './CatERC20.sol';
import './Math.sol';
import './UQ112x112.sol';
import './IERC20.sol';
import './ICatFactory.sol';
import './ICatCallee.sol';

contract CatPair is CatERC20 {
    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, 'PolyCat: 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))), 'PolyCat: 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, 'PolyCat: 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), 'PolyCat: 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 14/24th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = ICatFactory(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)).mul(14);
                    uint denominator = rootK.mul(10).add(rootKLast.mul(14));
                    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) {
            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, 'PolyCat: 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, 'PolyCat: 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, 'PolyCat: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'PolyCat: 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, 'PolyCat: 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) ICatCallee(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, 'PolyCat: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(10000).sub(amount0In.mul(24));
        uint balance1Adjusted = balance1.mul(10000).sub(amount1In.mul(24));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'PolyCat: 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);
    }
}

File 2 of 8: CatERC20.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity =0.6.12;

import './SafeMath.sol';

contract CatERC20 {
    using SafeMathUniswap for uint;

    string public constant name = 'PolyCat LP';
    string public constant symbol = 'CAT-LP';
    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, 'PolyCat: 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, 'PolyCat: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

File 3 of 8: ICatCallee.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

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

File 4 of 8: ICatFactory.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

interface ICatFactory {
    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 5 of 8: IERC20.sol
// SPDX-License-Identifier: GPL-3.0

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 6 of 8: Math.sol
// SPDX-License-Identifier: GPL-3.0

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 7 of 8: 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 8 of 8: UQ112x112.sol
// SPDX-License-Identifier: GPL-3.0

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

Contract Security Audit

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"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252600a8152690506f6c79436174204c560b41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f5c255b9d4975d03f596af9367040177cbf930e3f7c441e822f28a79be479d9b6818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556121bb806101086000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610adc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b02565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b2c565b604080519115158252519081900360200190f35b610339610b43565b604080516001600160a01b039092168252519081900360200190f35b61035d610b52565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b58565b61035d610bec565b6103b5610c10565b6040805160ff9092168252519081900360200190f35b61035d610c15565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c1b565b61035d610c9d565b61035d610ca3565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ca9565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610f83565b61035d610f95565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610f9b565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316610fad565b6040805192835260208301919091528051918290030190f35b61024461133f565b61031d600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611361565b61035d61136e565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b0316611374565b6103396114e4565b6103396114f3565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611502565b61035d600480360360408110156105a357600080fd5b506001600160a01b0381358116916020013516611702565b61023a61171f565b600c5460011461060c576040805162461bcd60e51b815260206004820152600f60248201526e141bdb1e50d85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c558415158061061f5750600084115b61065a5760405162461bcd60e51b81526004018080602001828103825260238152602001806120f56023913960400191505060405180910390fd5b600080610665610b02565b5091509150816001600160701b03168710801561068a5750806001600160701b031686105b6106db576040805162461bcd60e51b815260206004820152601f60248201527f506f6c794361743a20494e53554646494349454e545f4c495155494449545900604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107195750806001600160a01b0316896001600160a01b031614155b610760576040805162461bcd60e51b8152602060048201526013602482015272506f6c794361743a20494e56414c49445f544f60681b604482015290519081900360640190fd5b8a1561077157610771828a8d61187f565b891561078257610782818a8c61187f565b861561083457886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081b57600080fd5b505af115801561082f573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f057600080fd5b505afa158015610904573d6000803e3d6000fd5b505050506040513d602081101561091a57600080fd5b5051925060009150506001600160701b0385168a9003831161093d57600061094c565b89856001600160701b03160383035b9050600089856001600160701b0316038311610969576000610978565b89856001600160701b03160383035b905060008211806109895750600081115b6109c45760405162461bcd60e51b81526004018080602001828103825260228152602001806121186022913960400191505060405180910390fd5b60006109e66109d4846018611a19565b6109e087612710611a19565b90611a7c565b905060006109f86109d4846018611a19565b9050610a1e6305f5e100610a186001600160701b038b8116908b16611a19565b90611a19565b610a288383611a19565b1015610a68576040805162461bcd60e51b815260206004820152600a602482015269506f6c794361743a204b60b01b604482015290519081900360640190fd5b5050610a7684848888611acc565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a8152602001690506f6c79436174204c560b41b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b39338484611c89565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bd7576001600160a01b0384166000908152600260209081526040808320338452909152902054610bb29083611a7c565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610be2848484611ceb565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c6f576040805162461bcd60e51b81526020600482015260126024820152712837b63ca1b0ba1d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cf4576040805162461bcd60e51b815260206004820152600f60248201526e141bdb1e50d85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c81905580610d04610b02565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d5857600080fd5b505afa158015610d6c573d6000803e3d6000fd5b505050506040513d6020811015610d8257600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dd557600080fd5b505afa158015610de9573d6000803e3d6000fd5b505050506040513d6020811015610dff57600080fd5b505190506000610e18836001600160701b038716611a7c565b90506000610e2f836001600160701b038716611a7c565b90506000610e3d8787611d99565b60005490915080610e7457610e606103e86109e0610e5b8787611a19565b611ee8565b9850610e6f60006103e8611f3a565b610eb7565b610eb46001600160701b038916610e8b8684611a19565b81610e9257fe5b046001600160701b038916610ea78685611a19565b81610eae57fe5b04611fc4565b98505b60008911610ef65760405162461bcd60e51b81526004018080602001828103825260268152602001806121606026913960400191505060405180910390fd5b610f008a8a611f3a565b610f0c86868a8a611acc565b8115610f3657600854610f32906001600160701b0380821691600160701b900416611a19565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114610ff9576040805162461bcd60e51b815260206004820152600f60248201526e141bdb1e50d85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c81905580611009610b02565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561106557600080fd5b505afa158015611079573d6000803e3d6000fd5b505050506040513d602081101561108f57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110dd57600080fd5b505afa1580156110f1573d6000803e3d6000fd5b505050506040513d602081101561110757600080fd5b5051306000908152600160205260408120549192506111268888611d99565b600054909150806111378487611a19565b8161113e57fe5b049a508061114c8486611a19565b8161115357fe5b04995060008b118015611166575060008a115b6111a15760405162461bcd60e51b815260040180806020018281038252602681526020018061213a6026913960400191505060405180910390fd5b6111ab3084611fdc565b6111b6878d8d61187f565b6111c1868d8c61187f565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d602081101561123157600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d60208110156112a757600080fd5b505193506112b785858b8b611acc565b81156112e1576008546112dd906001600160701b0380821691600160701b900416611a19565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020016504341542d4c560d41b81525081565b6000610b39338484611ceb565b6103e881565b600c546001146113bd576040805162461bcd60e51b815260206004820152600f60248201526e141bdb1e50d85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114669285928792611461926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561142f57600080fd5b505afa158015611443573d6000803e3d6000fd5b505050506040513d602081101561145957600080fd5b505190611a7c565b61187f565b6114da81846114616008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561142f57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b4284101561154a576040805162461bcd60e51b815260206004820152601060248201526f141bdb1e50d85d0e881156141254915160821b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611665573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061169b5750886001600160a01b0316816001600160a01b0316145b6116ec576040805162461bcd60e51b815260206004820152601a60248201527f506f6c794361743a20494e56414c49445f5349474e4154555245000000000000604482015290519081900360640190fd5b6116f7898989611c89565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611768576040805162461bcd60e51b815260206004820152600f60248201526e141bdb1e50d85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611878926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117b957600080fd5b505afa1580156117cd573d6000803e3d6000fd5b505050506040513d60208110156117e357600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561183057600080fd5b505afa158015611844573d6000803e3d6000fd5b505050506040513d602081101561185a57600080fd5b50516008546001600160701b0380821691600160701b900416611acc565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b6020831061192c5780518252601f19909201916020918201910161190d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461198e576040519150601f19603f3d011682016040523d82523d6000602084013e611993565b606091505b50915091508180156119c15750805115806119c157508080602001905160208110156119be57600080fd5b50515b611a12576040805162461bcd60e51b815260206004820152601860248201527f506f6c794361743a205452414e534645525f4641494c45440000000000000000604482015290519081900360640190fd5b5050505050565b6000811580611a3457505080820282828281611a3157fe5b04145b610b3d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b3d576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611aea57506001600160701b038311155b611b2f576040805162461bcd60e51b8152602060048201526011602482015270506f6c794361743a204f564552464c4f5760781b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b5f57506001600160701b03841615155b8015611b7357506001600160701b03831615155b15611bde578063ffffffff16611b9b85611b8c8661206e565b6001600160e01b031690612080565b600980546001600160e01b03929092169290920201905563ffffffff8116611bc684611b8c8761206e565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d0e9082611a7c565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611d3d90826120a5565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611dea57600080fd5b505afa158015611dfe573d6000803e3d6000fd5b505050506040513d6020811015611e1457600080fd5b5051600b546001600160a01b038216158015945091925090611ed4578015611ecf576000611e51610e5b6001600160701b03888116908816611a19565b90506000611e5e83611ee8565b905080821115611ecc576000611e85600e610a18611e7c8686611a7c565b60005490611a19565b90506000611ea8611e9784600e611a19565b611ea286600a611a19565b906120a5565b90506000818381611eb557fe5b0490508015611ec857611ec88782611f3a565b5050505b50505b611ee0565b8015611ee0576000600b555b505092915050565b60006003821115611f2b575080600160028204015b81811015611f2557809150600281828581611f1457fe5b040181611f1d57fe5b049050611efd565b50611f35565b8115611f35575060015b919050565b600054611f4790826120a5565b60009081556001600160a01b038316815260016020526040902054611f6c90826120a5565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310611fd35781611fd5565b825b9392505050565b6001600160a01b038216600090815260016020526040902054611fff9082611a7c565b6001600160a01b038316600090815260016020526040812091909155546120269082611a7c565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161209d57fe5b049392505050565b80820182811015610b3d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe506f6c794361743a20494e53554646494349454e545f4f55545055545f414d4f554e54506f6c794361743a20494e53554646494349454e545f494e5055545f414d4f554e54506f6c794361743a20494e53554646494349454e545f4c49515549444954595f4255524e4544506f6c794361743a20494e53554646494349454e545f4c49515549444954595f4d494e544544a264697066735822122086ff6995b9b023739147da4fb7382b2767aa93cbd97679a62faa783f4b4bf90664736f6c634300060c0033

Deployed ByteCode Sourcemap

214:9551:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7294:1864;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7294:1864:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7294:1864:1;;-1:-1:-1;7294:1864:1;-1:-1:-1;7294:1864:1;:::i;:::-;;150:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:227:1;;;:::i;:::-;;;;-1:-1:-1;;;;;1185:227:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2145:144:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2145:144:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;495:21:1;;;:::i;:::-;;;;-1:-1:-1;;;;;495:21:1;;;;;;;;;;;;;;285:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;2437:295;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2437:295:0;;;;;;;;;;;;;;;;;:::i;571:108::-;;;:::i;244:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;430:31;;;:::i;2215:204:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2215:204:1;;;;;;;;;;:::i;839:32::-;;;:::i;877:::-;;;:::i;4374:1232::-;;;;;;;;;;;;;;;;-1:-1:-1;4374:1232:1;-1:-1:-1;;;;;4374:1232:1;;:::i;315:41:0:-;;;;;;;;;;;;;;;;-1:-1:-1;315:41:0;-1:-1:-1;;;;;315:41:0;;:::i;915:17:1:-;;;:::i;685:38:0:-;;;;;;;;;;;;;;;;-1:-1:-1;685:38:0;-1:-1:-1;;;;;685:38:0;;:::i;5715:1470:1:-;;;;;;;;;;;;;;;;-1:-1:-1;5715:1470:1;-1:-1:-1;;;;;5715:1470:1;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;198:40:0;;;:::i;2295:136::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2295:136:0;;;;;;;;:::i;320:46:1:-;;;:::i;9204:343::-;;;;;;;;;;;;;;;;-1:-1:-1;9204:343:1;-1:-1:-1;;;;;9204:343:1;;:::i;467:22::-;;;:::i;522:21::-;;;:::i;2738:658:0:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2738:658:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;362:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;362:61:0;;;;;;;;;;:::i;9593:170:1:-;;;:::i;7294:1864::-;1084:8;;1096:1;1084:13;1076:41;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;;;;1138:1;1127:8;:12;7407:14;;;;:32:::1;;;7438:1;7425:10;:14;7407:32;7399:80;;;;-1:-1:-1::0;;;7399:80:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7490:17;7509::::0;7531:13:::1;:11;:13::i;:::-;7489:55;;;;;7590:9;-1:-1:-1::0;;;;;7577:22:1::1;:10;:22;:48;;;;;7616:9;-1:-1:-1::0;;;;;7603:22:1::1;:10;:22;7577:48;7569:92;;;::::0;;-1:-1:-1;;;7569:92:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7801:6;::::0;7835::::1;::::0;7672:13:::1;::::0;;;-1:-1:-1;;;;;7801:6:1;;::::1;::::0;7835;;::::1;::::0;7859:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;7882:7;-1:-1:-1::0;;;;;7876:13:1::1;:2;-1:-1:-1::0;;;;;7876:13:1::1;;;7859:30;7851:62;;;::::0;;-1:-1:-1;;;7851:62:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;7851:62:1;;;;;;;;;;;;;::::1;;7927:14:::0;;7923:58:::1;;7943:38;7957:7;7966:2;7970:10;7943:13;:38::i;:::-;8029:14:::0;;8025:58:::1;;8045:38;8059:7;8068:2;8072:10;8045:13;:38::i;:::-;8131:15:::0;;8127:91:::1;;8159:2;-1:-1:-1::0;;;;;8148:28:1::1;;8177:10;8189;8201;8213:4;;8148:70;;;;;;;;;;;;;-1:-1:-1::0;;;;;8148:70:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8127:91;8239:47;::::0;;-1:-1:-1;;;8239:47:1;;8280:4:::1;8239:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;8239:32:1;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8239:47:1;8307::::1;::::0;;-1:-1:-1;;;8307:47:1;;8348:4:::1;8307:47;::::0;::::1;::::0;;;8239;;-1:-1:-1;;;;;;8307:32:1;::::1;::::0;::::1;::::0;:47;;;;;8239::::1;::::0;8307;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8307:47:1;;-1:-1:-1;8374:14:1::1;::::0;-1:-1:-1;;;;;;;8402:22:1;::::1;::::0;;::::1;8391:33:::0;::::1;:75;;8465:1;8391:75;;;8451:10;8439:9;-1:-1:-1::0;;;;;8439:22:1::1;;8427:8;:35;8391:75;8374:92;;8476:14;8516:10;8504:9;-1:-1:-1::0;;;;;8504:22:1::1;;8493:8;:33;:75;;8567:1;8493:75;;;8553:10;8541:9;-1:-1:-1::0;;;;;8541:22:1::1;;8529:8;:35;8493:75;8476:92;;8598:1;8586:9;:13;:30;;;;8615:1;8603:9;:13;8586:30;8578:77;;;;-1:-1:-1::0;;;8578:77:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8739:21;8763:42;8787:17;:9:::0;8801:2:::1;8787:13;:17::i;:::-;8763:19;:8:::0;8776:5:::1;8763:12;:19::i;:::-;:23:::0;::::1;:42::i;:::-;8739:66:::0;-1:-1:-1;8815:21:1::1;8839:42;8863:17;:9:::0;8877:2:::1;8863:13;:17::i;8839:42::-;8815:66:::0;-1:-1:-1;8941:44:1::1;8976:8;8941:30;-1:-1:-1::0;;;;;8941:15:1;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:44::i;:::-;8899:38;:16:::0;8920;8899:20:::1;:38::i;:::-;:86;;8891:109;;;::::0;;-1:-1:-1;;;8891:109:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8891:109:1;;;;;;;;;;;;;::::1;;1149:1;;9021:49;9029:8;9039;9049:9;9060;9021:7;:49::i;:::-;9085:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9085:66:1;::::1;::::0;9090:10:::1;::::0;9085:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;1171:1:1;1160:8;:12;-1:-1:-1;;;;;;;;;7294:1864:1:o;150:42:0:-;;;;;;;;;;;;;;-1:-1:-1;;;150:42:0;;;;:::o;1185:227:1:-;1317:8;;-1:-1:-1;;;;;1317:8:1;;;;-1:-1:-1;;;1347:8:1;;;;;;-1:-1:-1;;;1387:18:1;;;;;1185:227::o;2145:144:0:-;2209:4;2225:36;2234:10;2246:7;2255:5;2225:8;:36::i;:::-;-1:-1:-1;2278:4:0;2145:144;;;;;:::o;495:21:1:-;;;-1:-1:-1;;;;;495:21:1;;:::o;285:24:0:-;;;;:::o;2437:295::-;-1:-1:-1;;;;;2535:15:0;;2515:4;2535:15;;;:9;:15;;;;;;;;2551:10;2535:27;;;;;;;;-1:-1:-1;;2535:39:0;2531:138;;-1:-1:-1;;;;;2620:15:0;;;;;;:9;:15;;;;;;;;2636:10;2620:27;;;;;;;;:38;;2652:5;2620:31;:38::i;:::-;-1:-1:-1;;;;;2590:15:0;;;;;;:9;:15;;;;;;;;2606:10;2590:27;;;;;;;:68;2531:138;2678:26;2688:4;2694:2;2698:5;2678:9;:26::i;:::-;-1:-1:-1;2721:4:0;2437:295;;;;;:::o;571:108::-;613:66;571:108;:::o;244:35::-;277:2;244:35;:::o;430:31::-;;;;:::o;2215:204:1:-;2310:7;;-1:-1:-1;;;;;2310:7:1;2296:10;:21;2288:52;;;;;-1:-1:-1;;;2288:52:1;;;;;;;;;;;;-1:-1:-1;;;2288:52:1;;;;;;;;;;;;;;;2370:6;:16;;-1:-1:-1;;;;;2370:16:1;;;-1:-1:-1;;;;;;2370:16:1;;;;;;;2396:6;:16;;;;;;;;;;;2215:204::o;839:32::-;;;;:::o;877:::-;;;;:::o;4374:1232::-;4423:14;1084:8;;1096:1;1084:13;1076:41;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;;;;1138:1;1127:8;:12;;;1138:1;4491:13:::1;:11;:13::i;:::-;-1:-1:-1::0;4559:6:1::1;::::0;4545:46:::1;::::0;;-1:-1:-1;;;4545:46:1;;4585:4:::1;4545:46;::::0;::::1;::::0;;;4449:55;;-1:-1:-1;4449:55:1;;-1:-1:-1;4529:13:1::1;::::0;-1:-1:-1;;;;;4559:6:1;;::::1;::::0;4545:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;4559:6;4545:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4545:46:1;4631:6:::1;::::0;4617:46:::1;::::0;;-1:-1:-1;;;4617:46:1;;4657:4:::1;4617:46;::::0;::::1;::::0;;;4545;;-1:-1:-1;4601:13:1::1;::::0;-1:-1:-1;;;;;4631:6:1;;::::1;::::0;4617:31:::1;::::0;:46;;;;;4545::::1;::::0;4617;;;;;;;;4631:6;4617:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4617:46:1;;-1:-1:-1;4673:12:1::1;4688:23;:8:::0;-1:-1:-1;;;;;4688:23:1;::::1;:12;:23::i;:::-;4673:38:::0;-1:-1:-1;4721:12:1::1;4736:23;:8:::0;-1:-1:-1;;;;;4736:23:1;::::1;:12;:23::i;:::-;4721:38;;4770:10;4783:30;4792:9;4803;4783:8;:30::i;:::-;4823:17;4843:11:::0;4770:43;;-1:-1:-1;4946:17:1;4942:348:::1;;4991:54;361:5;4991:31;5001:20;:7:::0;5013;5001:11:::1;:20::i;:::-;4991:9;:31::i;:54::-;4979:66;;5059:36;5073:1;361:5;5059;:36::i;:::-;4942:348;;;5193:86;-1:-1:-1::0;;;;;5202:37:1;::::1;:25;:7:::0;5214:12;5202:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;5241:37:1;::::1;:25;:7:::0;5253:12;5241:11:::1;:25::i;:::-;:37;;;;;;5193:8;:86::i;:::-;5181:98;;4942:348;5319:1;5307:9;:13;5299:64;;;;-1:-1:-1::0;;;5299:64:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5373:20;5379:2;5383:9;5373:5;:20::i;:::-;5404:49;5412:8;5422;5432:9;5443;5404:7;:49::i;:::-;5467:5;5463:47;;;5501:8;::::0;5482:28:::1;::::0;-1:-1:-1;;;;;5487:8:1;;::::1;::::0;-1:-1:-1;;;5501:8:1;::::1;;5482:18;:28::i;:::-;5474:5;:36:::0;5463:47:::1;5565:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;5570:10:::1;::::0;5565:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;1171:1:1;1160:8;:12;-1:-1:-1;4374:1232:1;;;-1:-1:-1;;;;;;4374:1232:1:o;315:41:0:-;;;;;;;;;;;;;:::o;915:17:1:-;;;;:::o;685:38:0:-;;;;;;;;;;;;;:::o;5715:1470:1:-;5764:12;5778;1084:8;;1096:1;1084:13;1076:41;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;;;;1138:1;1127:8;:12;;;1138:1;5844:13:::1;:11;:13::i;:::-;-1:-1:-1::0;5900:6:1::1;::::0;5980::::1;::::0;6058:47:::1;::::0;;-1:-1:-1;;;6058:47:1;;6099:4:::1;6058:47;::::0;::::1;::::0;;;5802:55;;-1:-1:-1;5802:55:1;;-1:-1:-1;;;;;;5900:6:1;;::::1;::::0;5980;::::1;::::0;5882:15:::1;::::0;5900:6;;6058:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;5900:6;6058:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6058:47:1;6131::::1;::::0;;-1:-1:-1;;;6131:47:1;;6172:4:::1;6131:47;::::0;::::1;::::0;;;6058;;-1:-1:-1;6115:13:1::1;::::0;-1:-1:-1;;;;;6131:32:1;::::1;::::0;::::1;::::0;:47;;;;;6058::::1;::::0;6131;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6131:47:1;6223:4:::1;6188:14;6205:24:::0;;;:9:::1;6131:47;6205:24:::0;;;;;6131:47;;-1:-1:-1;6253:30:1::1;6262:9:::0;6273;6253:8:::1;:30::i;:::-;6293:17;6313:11:::0;6240:43;;-1:-1:-1;6313:11:1;6422:23:::1;:9:::0;6436:8;6422:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;6554:12:1;6528:23:::1;:9:::0;6542:8;6528:13:::1;:23::i;:::-;:38;;;;;;6518:48;;6642:1;6632:7;:11;:26;;;;;6657:1;6647:7;:11;6632:26;6624:77;;;;-1:-1:-1::0;;;6624:77:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6711:31;6725:4;6732:9;6711:5;:31::i;:::-;6752:35;6766:7;6775:2;6779:7;6752:13;:35::i;:::-;6797;6811:7;6820:2;6824:7;6797:13;:35::i;:::-;6853:47;::::0;;-1:-1:-1;;;6853:47:1;;6894:4:::1;6853:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;6853:32:1;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6853:47:1;6921::::1;::::0;;-1:-1:-1;;;6921:47:1;;6962:4:::1;6921:47;::::0;::::1;::::0;;;6853;;-1:-1:-1;;;;;;6921:32:1;::::1;::::0;::::1;::::0;:47;;;;;6853::::1;::::0;6921;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6921:47:1;;-1:-1:-1;6979:49:1::1;6987:8:::0;6921:47;7007:9;7018;6979:7:::1;:49::i;:::-;7042:5;7038:47;;;7076:8;::::0;7057:28:::1;::::0;-1:-1:-1;;;;;7062:8:1;;::::1;::::0;-1:-1:-1;;;7076:8:1;::::1;;7057:18;:28::i;:::-;7049:5;:36:::0;7038:47:::1;7140:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;7140:38:1;::::1;::::0;7145:10:::1;::::0;7140:38:::1;::::0;;;;;;;;;::::1;1149:1;;;;;;;;;1171::::0;1160:8;:12;;;;5715:1470;;;:::o;198:40:0:-;;;;;;;;;;;;;;-1:-1:-1;;;198:40:0;;;;:::o;2295:136::-;2355:4;2371:32;2381:10;2393:2;2397:5;2371:9;:32::i;320:46:1:-;361:5;320:46;:::o;9204:343::-;1084:8;;1096:1;1084:13;1076:41;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;;;;1138:1;1127:8;:12;9272:6:::1;::::0;9321::::1;::::0;9431:8:::1;::::0;9379:47:::1;::::0;;-1:-1:-1;;;9379:47:1;;9420:4:::1;9379:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;9272:6:1;;::::1;::::0;9321;;::::1;::::0;9352:89:::1;::::0;9272:6;;9375:2;;9379:61:::1;::::0;-1:-1:-1;;;;;9431:8:1::1;::::0;9272:6;;9379:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;9272:6;9379:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9379:47:1;;:51:::1;:61::i;:::-;9352:13;:89::i;:::-;9451;9465:7;9474:2;9478:61;9530:8;;;;;;;;;-1:-1:-1::0;;;;;9530:8:1::1;-1:-1:-1::0;;;;;9478:61:1::1;9492:7;-1:-1:-1::0;;;;;9478:32:1::1;;9519:4;9478:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;9478:47:1::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;9451:89;-1:-1:-1::0;;1171:1:1;1160:8;:12;-1:-1:-1;9204:343:1:o;467:22::-;;;-1:-1:-1;;;;;467:22:1;;:::o;522:21::-;;;-1:-1:-1;;;;;522:21:1;;:::o;2738:658:0:-;2883:15;2871:8;:27;;2863:56;;;;;-1:-1:-1;;;2863:56:0;;;;;;;;;;;;-1:-1:-1;;;2863:56:0;;;;;;;;;;;;;;;3031:16;;-1:-1:-1;;;;;3126:13:0;;;2929:14;3126:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3075:77;;613:66;3075:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3065:88;;;;;;-1:-1:-1;;;2969:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2946:231;;;;;;;;;3214:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2929:14;;3126:15;3214:26;;;;;-1:-1:-1;;3214:26:0;;;;;;;;;;3126:15;3214:26;;;;;;;;;;;;;;;-1:-1:-1;;3214:26:0;;-1:-1:-1;;3214:26:0;;;-1:-1:-1;;;;;;;3258:30:0;;;;;;:59;;;3312:5;-1:-1:-1;;;;;3292:25:0;:16;-1:-1:-1;;;;;3292:25:0;;3258:59;3250:98;;;;;-1:-1:-1;;;3250:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3358:31;3367:5;3374:7;3383:5;3358:8;:31::i;:::-;2738:658;;;;;;;;;:::o;362:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9593:170:1:-;1084:8;;1096:1;1084:13;1076:41;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;-1:-1:-1;;;1076:41:1;;;;;;;;;;;;;;;1138:1;1127:8;:12;9655:6:::1;::::0;9641:46:::1;::::0;;-1:-1:-1;;;9641:46:1;;9681:4:::1;9641:46;::::0;::::1;::::0;;;9633:123:::1;::::0;-1:-1:-1;;;;;9655:6:1::1;::::0;9641:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;9655:6;9641:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9641:46:1;9703:6:::1;::::0;9689:46:::1;::::0;;-1:-1:-1;;;9689:46:1;;9729:4:::1;9689:46;::::0;::::1;::::0;;;-1:-1:-1;;;;;9703:6:1;;::::1;::::0;9689:31:::1;::::0;:46;;;;;9641::::1;::::0;9689;;;;;;;;9703:6;9689:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9689:46:1;9737:8:::1;::::0;-1:-1:-1;;;;;9737:8:1;;::::1;::::0;-1:-1:-1;;;9747:8:1;::::1;;9633:7;:123::i;:::-;1171:1:::0;1160:8;:12;9593:170::o;1418:282::-;424:34;;;;;;;;;;;;;;;;;1545:43;;-1:-1:-1;;;;;1545:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1545:43:1;-1:-1:-1;;;1545:43:1;;;1534:55;;;;1499:12;;1513:17;;1534:10;;;1545:43;1534:55;;;1545:43;1534:55;;1545:43;1534:55;;;;;;;;;;-1:-1:-1;;1534:55:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1498:91;;;;1607:7;:57;;;;-1:-1:-1;1619:11:1;;:16;;:44;;;1650:4;1639:24;;;;;;;;;;;;;;;-1:-1:-1;1639:24:1;1619:44;1599:94;;;;;-1:-1:-1;;;1599:94:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1418:282;;;;;:::o;464:140:6:-;516:6;542;;;:30;;-1:-1:-1;;557:5:6;;;571:1;566;557:5;566:1;552:15;;;;;:20;542:30;534:63;;;;;-1:-1:-1;;;534:63:6;;;;;;;;;;;;-1:-1:-1;;;534:63:6;;;;;;;;;;;;;;331:127;414:5;;;409:16;;;;401:50;;;;;-1:-1:-1;;;401:50:6;;;;;;;;;;;;-1:-1:-1;;;401:50:6;;;;;;;;;;;;;;2501:845:1;-1:-1:-1;;;;;2612:23:1;;;;;:50;;-1:-1:-1;;;;;;2639:23:1;;;2612:50;2604:80;;;;;-1:-1:-1;;;2604:80:1;;;;;;;;;;;;-1:-1:-1;;;2604:80:1;;;;;;;;;;;;;;;2797:18;;2725:23;:15;:23;;;-1:-1:-1;;;2797:18:1;;;;2780:35;;;2852:15;;;;;;:33;;-1:-1:-1;;;;;;2871:14:1;;;;2852:33;:51;;;;-1:-1:-1;;;;;;2889:14:1;;;;2852:51;2848:332;;;3056:11;3003:64;;3008:44;3042:9;3008:27;3025:9;3008:16;:27::i;:::-;-1:-1:-1;;;;;3008:33:1;;;:44::i;:::-;2979:20;:88;;-1:-1:-1;;;;;3003:50:1;;;;:64;;;;2979:88;;;3105:64;;;3110:44;3144:9;3110:27;3127:9;3110:16;:27::i;:44::-;3081:20;:88;;-1:-1:-1;;;;;3105:50:1;;;;:64;;;;3081:88;;;2848:332;3189:8;:28;;-1:-1:-1;;3189:28:1;-1:-1:-1;;;;;3189:28:1;;;;;;;-1:-1:-1;;;;3227:28:1;-1:-1:-1;;;3227:28:1;;;;;;;;;-1:-1:-1;;;;;3265:35:1;-1:-1:-1;;;3265:35:1;;;;;;;;;3315:24;;;3320:8;;;3315:24;;3330:8;;;;;;;3315:24;;;;;;;;;;;;;;;;;2501:845;;;;;;:::o;1751:166:0:-;-1:-1:-1;;;;;1831:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1879:31;;;;;;;;;;;;;;;;;1751:166;;;:::o;1923:216::-;-1:-1:-1;;;;;2016:15:0;;;;;;:9;:15;;;;;;:26;;2036:5;2016:19;:26::i;:::-;-1:-1:-1;;;;;1998:15:0;;;;;;;:9;:15;;;;;;:44;;;;2068:13;;;;;;;:24;;2086:5;2068:17;:24::i;:::-;-1:-1:-1;;;;;2052:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2107:25;;;;;;;2052:13;;2107:25;;;;;;;;;;;;;1923:216;;;:::o;3435:830:1:-;3508:10;3530:13;3558:7;;;;;;;;;-1:-1:-1;;;;;3558:7:1;-1:-1:-1;;;;;3546:26:1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3546:28:1;3635:5;;-1:-1:-1;;;;;3592:19:1;;;;;;-1:-1:-1;3546:28:1;;-1:-1:-1;3635:5:1;3665:594;;3694:11;;3690:502;;3725:10;3738:41;3748:30;-1:-1:-1;;;;;3748:15:1;;;;:30;;:19;:30::i;3738:41::-;3725:54;;3797:14;3814:17;3824:6;3814:9;:17::i;:::-;3797:34;;3861:9;3853:5;:17;3849:329;;;3894:14;3911:45;3953:2;3911:37;3927:20;:5;3937:9;3927;:20::i;:::-;3911:11;;;:15;:37::i;:45::-;3894:62;-1:-1:-1;3978:16:1;3997:36;4015:17;:9;4029:2;4015:13;:17::i;:::-;3997:13;:5;4007:2;3997:9;:13::i;:::-;:17;;:36::i;:::-;3978:55;;4055:14;4084:11;4072:9;:23;;;;;;;-1:-1:-1;4121:13:1;;4117:42;;4136:23;4142:5;4149:9;4136:5;:23::i;:::-;3849:329;;;;3690:502;;;3665:594;;;4212:11;;4208:51;;4247:1;4239:5;:9;4208:51;3435:830;;;;;;:::o;344:292:5:-;389:6;415:1;411;:5;407:223;;;-1:-1:-1;436:1:5;468;464;460:5;;:9;483:89;494:1;490;:5;483:89;;;519:1;515:5;;556:1;551;547;543;:5;;;;;;:9;542:15;;;;;;538:19;;483:89;;;407:223;;;;592:6;;588:42;;-1:-1:-1;618:1:5;588:42;344:292;;;:::o;1337:197:0:-;1409:11;;:22;;1425:5;1409:15;:22::i;:::-;1395:11;:36;;;-1:-1:-1;;;;;1457:13:0;;;;:9;:13;;;;;;:24;;1475:5;1457:17;:24::i;:::-;-1:-1:-1;;;;;1441:13:0;;;;;;:9;:13;;;;;;;;:40;;;;1496:31;;;;;;;1441:13;;;;1496:31;;;;;;;;;;1337:197;;:::o;135:94:5:-;187:6;213:1;209;:5;:13;;221:1;209:13;;;217:1;209:13;205:17;135:94;-1:-1:-1;;;135:94:5:o;1540:205:0:-;-1:-1:-1;;;;;1618:15:0;;;;;;:9;:15;;;;;;:26;;1638:5;1618:19;:26::i;:::-;-1:-1:-1;;;;;1600:15:0;;;;;;:9;:15;;;;;:44;;;;1668:11;:22;;1684:5;1668:15;:22::i;:::-;1654:11;:36;;;1705:33;;;;;;;;-1:-1:-1;;;;;1705:33:0;;;;;;;;;;;;;1540:205;;:::o;320:118:7:-;-1:-1:-1;;;;;395:10:7;-1:-1:-1;;;395:17:7;;320:118::o;506:106::-;566:9;-1:-1:-1;;;;;595:10:7;;-1:-1:-1;;;;;591:14:7;;595:10;591:14;;;;;;506:106;-1:-1:-1;;;506:106:7:o;199:126:6:-;282:5;;;277:16;;;;269:49;;;;;-1:-1:-1;;;269:49:6;;;;;;;;;;;;-1:-1:-1;;;269:49:6;;;;;;;;;;;;;

Swarm Source

ipfs://86ff6995b9b023739147da4fb7382b2767aa93cbd97679a62faa783f4b4bf906
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.